Comparar commits
46 Commits
| Autor | SHA1 | Data | |
|---|---|---|---|
| 808da2a580 | |||
| 6825f5d279 | |||
| f11ef9dcc2 | |||
| 765ad89fa4 | |||
| 5064b4cb3a | |||
| 9f590b940f | |||
| aa3d45eb5a | |||
| b3c130c268 | |||
| 7b5b60ce39 | |||
| 563b9bfe3f | |||
| 2e82ac99bd | |||
| c3d7f36b17 | |||
| 86b5d97491 | |||
| dad32e7adf | |||
| ce85997843 | |||
| 587d3d3e14 | |||
| 3a26a8f2d5 | |||
| f7cce110ca | |||
| 3e38e99aa6 | |||
| 7fbfd3ddf8 | |||
| 59f85704cf | |||
| 54874c3389 | |||
| bdbf2b3e71 | |||
| 0e6abc60ff | |||
| f781262895 | |||
| 4996acb503 | |||
| b881cca1d8 | |||
| 2b3cd36f98 | |||
| 4eaa82b059 | |||
| 6daf08e9bc | |||
| f880cee1f6 | |||
| d099c1e1f1 | |||
| 6e91742a8a | |||
| 6ef2cae504 | |||
| 3f963689f9 | |||
| 996399cc2e | |||
| 7ef02127a1 | |||
| 65d21f712e | |||
| 1f30aa535f | |||
| a8557bb139 | |||
| 21b15c8c73 | |||
| ebb9a6c752 | |||
| e1af76f652 | |||
| 73443f5a65 | |||
| 05540ca8a7 | |||
| fa89f55a0a |
+1
-1
@@ -1 +1 @@
|
||||
0.10.26
|
||||
6.11.2
|
||||
|
||||
+2
-6
@@ -10,7 +10,7 @@ of ShareLaTeX, then here are some notes on how to do that.
|
||||
Reporting bugs and opening issues
|
||||
---------------------------------
|
||||
|
||||
If you'd like a report a bug or open an issue then please:
|
||||
If you'd like to report a bug or open an issue then please:
|
||||
|
||||
1. **Find the correct repository.** ShareLaTeX is split across multiple different repositories, each containing a different service (you can find a list of [all repositories here](https://github.com/sharelatex/sharelatex/blob/master/README.md#other-repositories)). If you know the bug only applies to one service, then please open an issue in that repository. For general bugs and issues that span more than one service, please open an issue in the [sharelatex/sharelatex](https://github.com/sharelatex/sharelatex) repository.
|
||||
2. **Check if there is an existing issue.** If there is then please add
|
||||
@@ -30,10 +30,6 @@ We love pull requests, so be bold with them! Don't be afraid of going ahead
|
||||
and changing something, or adding a new feature. We're very happy to work with you
|
||||
to get your changes merged into ShareLaTeX.
|
||||
|
||||
If you've got an idea for a change then please discuss it in the open first,
|
||||
either by opening an issue, or by joining us in our
|
||||
[development chat room](http://www.hipchat.com/g1nJMcj7b).
|
||||
|
||||
If you're looking for something to work on, then take a look at our [development roadmap](https://github.com/sharelatex/sharelatex/wiki/Development-Roadmap), or have a look at the open issues in any of the repositories listed [here](https://github.com/sharelatex/sharelatex/blob/master/README.md#other-repositories).
|
||||
|
||||
Developer Chat Room
|
||||
@@ -56,7 +52,7 @@ contact us at team@sharelatex.com first.
|
||||
Contributor License Agreement
|
||||
-----------------------------
|
||||
|
||||
Before we can accept and contributions of code, we need you to agree to our
|
||||
Before we can accept any contributions of code, we need you to agree to our
|
||||
[Contributor License Agreement](https://sharelatex.wufoo.com/forms/sharelatex-contributor-license-agreement/).
|
||||
This is to ensure that you own the copyright of your contribution, and that you
|
||||
agree to give us a license to use it in both the open source version, and the version
|
||||
|
||||
+18
-32
@@ -87,9 +87,11 @@ module.exports = (grunt) ->
|
||||
grunt.registerTask 'install:all', "Download and set up all ShareLaTeX services",
|
||||
[].concat(
|
||||
("install:#{service.name}" for service in SERVICES)
|
||||
)
|
||||
).concat(['postinstall'])
|
||||
|
||||
grunt.registerTask 'install', 'install:all'
|
||||
grunt.registerTask 'postinstall', 'Explain postinstall steps', () ->
|
||||
Helpers.postinstallMessage @async()
|
||||
|
||||
grunt.registerTask 'update:all', "Checkout and update all ShareLaTeX services",
|
||||
["check:make"].concat(
|
||||
@@ -120,16 +122,10 @@ module.exports = (grunt) ->
|
||||
installService: (service, callback = (error) ->) ->
|
||||
console.log "Installing #{service.name}"
|
||||
Helpers.cloneGitRepo service, (error) ->
|
||||
return callback(error) if error?
|
||||
Helpers.installNpmModules service, (error) ->
|
||||
return callback(error) if error?
|
||||
Helpers.rebuildNpmModules service, (error) ->
|
||||
return callback(error) if error?
|
||||
Helpers.runGruntInstall service, (error) ->
|
||||
return callback(error) if error?
|
||||
console.log "Finished installing #{service.name}"
|
||||
callback()
|
||||
|
||||
if error?
|
||||
callback(error)
|
||||
else
|
||||
callback()
|
||||
|
||||
cloneGitRepo: (service, callback = (error) ->) ->
|
||||
repo_src = service.repo
|
||||
@@ -153,26 +149,16 @@ module.exports = (grunt) ->
|
||||
proc.on "close", () ->
|
||||
callback()
|
||||
|
||||
|
||||
installNpmModules: (service, callback = (error) ->) ->
|
||||
dir = service.name
|
||||
proc = spawn "npm", ["install"], stdio: "inherit", cwd: dir
|
||||
proc.on "close", () ->
|
||||
callback()
|
||||
|
||||
# work around for https://github.com/npm/npm/issues/5400
|
||||
# where binary modules are not built due to bug in npm
|
||||
rebuildNpmModules: (service, callback = (error) ->) ->
|
||||
dir = service.name
|
||||
proc = spawn "npm", ["rebuild"], stdio: "inherit", cwd: dir
|
||||
proc.on "close", () ->
|
||||
callback()
|
||||
|
||||
runGruntInstall: (service, callback = (error) ->) ->
|
||||
dir = service.name
|
||||
proc = spawn "grunt", ["install"], stdio: "inherit", cwd: dir
|
||||
proc.on "close", () ->
|
||||
callback()
|
||||
postinstallMessage: (callback = (error) ->) ->
|
||||
grunt.log.write """
|
||||
Services cloned:
|
||||
#{service.name for service in SERVICES}
|
||||
To install services run:
|
||||
$ source bin/install-services
|
||||
This will install the required node versions and run `npm install` for each service.
|
||||
See https://github.com/sharelatex/sharelatex/pull/549 for more info.
|
||||
"""
|
||||
callback()
|
||||
|
||||
checkMake: (callback = (error) ->) ->
|
||||
grunt.log.write "Checking make is installed... "
|
||||
@@ -196,7 +182,7 @@ module.exports = (grunt) ->
|
||||
checkMongoConnect: (callback = (error) ->) ->
|
||||
grunt.log.write "Checking can connect to mongo"
|
||||
mongojs = require("mongojs")
|
||||
db = mongojs.connect(settings.mongo.url, ["tags"])
|
||||
db = mongojs(settings.mongo.url, ["tags"])
|
||||
db.runCommand { ping: 1 }, (err, res) ->
|
||||
if !err and res.ok
|
||||
grunt.log.write "OK."
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
(If you have a feature request, or bug with ShareLaTeX, please file an issue at https://github.com/sharelatex/web-sharelatex. This repository should **only be used for installation and maintenance problems** of ShareLaTeX Community Edition)
|
||||
|
||||
## Problem
|
||||
|
||||
Please describe the problem you are facing
|
||||
|
||||
## Install type
|
||||
|
||||
Are you using the Docker image (as described at https://github.com/sharelatex/sharelatex/wiki/Quick-Start-Guide), or some other method of installing ShareLaTeX Community Edition?
|
||||
|
||||
## Version
|
||||
|
||||
Which version of the docker image are you using?
|
||||
|
||||
## Logs and errors
|
||||
|
||||
Please include any logs and error messages.
|
||||
|
||||
## Screenshots
|
||||
|
||||
Please provide any screenshots of errors in ShareLaTeX Community Edition.
|
||||
|
||||
+1
-1
@@ -20,7 +20,7 @@ We have detailed installation instructions in our wiki:
|
||||
Upgrading
|
||||
---------
|
||||
|
||||
If you are upgrading from a previous version of ShareLaTeX, please see the [Release Notes section on the Wiki] (https://github.com/sharelatex/sharelatex/wiki/Home) for all of the versions between your current version and the version you are upgrading to.
|
||||
If you are upgrading from a previous version of ShareLaTeX, please see the [Release Notes section on the Wiki](https://github.com/sharelatex/sharelatex/wiki/Home) for all of the versions between your current version and the version you are upgrading to.
|
||||
|
||||
|
||||
Other repositories
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
#! env bash
|
||||
|
||||
[ -z "`type -t nvm`" ] && cat <<EOF
|
||||
|
||||
==========================================================
|
||||
== NVM not installed, you should consider installing it ==
|
||||
==========================================================
|
||||
|
||||
EOF
|
||||
|
||||
|
||||
grep 'name:' config/services.js | \
|
||||
sed 's/.*name: "\(.*\)",/\1/' | \
|
||||
while read service
|
||||
do
|
||||
pushd $service
|
||||
echo "Installing Service $service"
|
||||
echo ' installing Node'
|
||||
type -t nvm && nvm install
|
||||
type -t nvm && nvm use
|
||||
echo ' installing Dependencies'
|
||||
npm install
|
||||
grunt install
|
||||
popd
|
||||
done
|
||||
@@ -3,7 +3,7 @@ module.exports =
|
||||
[{
|
||||
name: "web",
|
||||
repo: "https://github.com/sharelatex/web-sharelatex.git",
|
||||
version: "ha-docker"
|
||||
version: "master"
|
||||
}, {
|
||||
name: "real-time",
|
||||
repo: "https://github.com/sharelatex/real-time-sharelatex.git",
|
||||
|
||||
+24
-17
@@ -15,12 +15,14 @@ services:
|
||||
- redis
|
||||
volumes:
|
||||
- ~/sharelatex_data:/var/lib/sharelatex
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
#- /var/clsi/compiles:/var/www/sharelatex/clsi/compiles
|
||||
environment:
|
||||
SHARELATEX_MONGO_URL: mongodb://mongo/sharelatex
|
||||
SHARELATEX_REDIS_HOST: redis
|
||||
SHARELATEX_APP_NAME: Our ShareLaTeX
|
||||
|
||||
#Set for SSL via nginx-proxy
|
||||
## Set for SSL via nginx-proxy
|
||||
#VIRTUAL_HOST: 103.112.212.22
|
||||
|
||||
# SHARELATEX_SITE_URL: http://sharelatex.mydomain.com
|
||||
@@ -49,22 +51,21 @@ services:
|
||||
## Server Pro ##
|
||||
################
|
||||
|
||||
# SANDBOXED_COMPILES:true
|
||||
# SANDBOXED_COMPILES: 'true'
|
||||
|
||||
# SANDBOXED_COMPILES_SIBLING_CONTAINERS: 'true'
|
||||
# SANDBOXED_COMPILES_HOST_DIR: '/var/clsi/compiles'
|
||||
|
||||
# SHARELATEX_LDAP_HOST: 'ldap://ldap.forumsys.com'
|
||||
# SHARELATEX_LDAP_DN: 'uid=:userKey,dc=example,dc=com'
|
||||
# SHARELATEX_LDAP_BASE_SEARCH: 'dc=example,dc=com'
|
||||
# SHARELATEX_LDAP_FILTER: '(uid=:userKey)'
|
||||
# SHARELATEX_LDAP_ADMIN_DN: 'cn=read-only-admin,dc=example,dc=com'
|
||||
# SHARELATEX_LDAP_ADMIN_PW: password'
|
||||
# SHARELATEX_LDAP_ANONYMOUS: "false"
|
||||
# SHARELATEX_LDAP_EMAIL_ATT: "mail"
|
||||
# SHARELATEX_LDAP_NAME_ATT: "name"
|
||||
# SHARELATEX_LDAP_LAST_NAME_ATT: "secondname"
|
||||
# SHARELATEX_LDAP_PLACEHOLDER: "Username"
|
||||
# SHARELATEX_LDAP_TLS: "true"
|
||||
# SHARELATEX_LDAP_TLS_OPTS_REJECT_UNAUTH:
|
||||
# SHARELATEX_LDAP_TLS_OPTS_CA_PATH: '["/var/one.pem", "/var/two.pem"]'
|
||||
## Works with test LDAP server shown at bottom of docker compose
|
||||
# SHARELATEX_LDAP_URL: 'ldap://ldap:389'
|
||||
# SHARELATEX_LDAP_SEARCH_BASE: 'ou=people,dc=planetexpress,dc=com'
|
||||
# SHARELATEX_LDAP_SEARCH_FILTER: '(uid={{username}})'
|
||||
# SHARELATEX_LDAP_BIND_DN: 'cn=admin,dc=planetexpress,dc=com'
|
||||
# SHARELATEX_LDAP_BIND_CREDENTIALS: 'GoodNewsEveryone'
|
||||
# SHARELATEX_LDAP_EMAIL_ATT: 'mail'
|
||||
# SHARELATEX_LDAP_NAME_ATT: 'cn'
|
||||
# SHARELATEX_LDAP_LAST_NAME_ATT: 'sn'
|
||||
# SHARELATEX_LDAP_UPDATE_USER_DETAILS_ON_LOGIN: 'true'
|
||||
|
||||
# SHARELATEX_TEMPLATES_USER_ID: "578773160210479700917ee5"
|
||||
|
||||
@@ -87,7 +88,13 @@ services:
|
||||
- 6379
|
||||
volumes:
|
||||
- ~/redis_data:/data
|
||||
|
||||
|
||||
# ldap:
|
||||
# restart: always
|
||||
# image: rroemhild/test-openldap
|
||||
# container_name: ldap
|
||||
# expose:
|
||||
# - 389
|
||||
# nginx-proxy:
|
||||
# image: jwilder/nginx-proxy
|
||||
# container_name: nginx-proxy
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
Settings = require "settings-sharelatex"
|
||||
bson = require('bson')
|
||||
BSON = new bson()
|
||||
fs = require("fs")
|
||||
mongojs = require("mongojs")
|
||||
ObjectId = mongojs.ObjectId
|
||||
@@ -61,7 +63,7 @@ getAllDocs = (project_id, callback = (error, docs) ->) ->
|
||||
if !project?
|
||||
console.log "no such project #{project_id}"
|
||||
return callback()
|
||||
size = require("../node_modules/mongojs/node_modules/mongodb/node_modules/bson/").BSONPure.BSON.calculateObjectSize(project)
|
||||
size = BSON.calculateObjectSize(project)
|
||||
if size > 12000000 #12mb
|
||||
return markProjectAsToLargeAndFinished project_id, callback
|
||||
findAllDocsInProject project, (error, docs) ->
|
||||
|
||||
@@ -6,7 +6,8 @@ db = mongojs(Settings.mongo.url, ['docs','docHistory', 'docHistoryStats'])
|
||||
_ = require("underscore")
|
||||
async = require("async")
|
||||
exec = require("child_process").exec
|
||||
BSON = db.bson.BSON
|
||||
bson = require('bson')
|
||||
BSON = new bson()
|
||||
|
||||
logger = {
|
||||
log: ->
|
||||
|
||||
@@ -4,7 +4,6 @@ mongojs = require("mongojs")
|
||||
ObjectId = mongojs.ObjectId
|
||||
db = mongojs(Settings.mongo.url, ['users'])
|
||||
_ = require("underscore")
|
||||
BSON = db.bson.BSON
|
||||
|
||||
|
||||
handleExit = () ->
|
||||
|
||||
@@ -0,0 +1,103 @@
|
||||
Settings = require "settings-sharelatex"
|
||||
mongojs = require("mongojs")
|
||||
ObjectId = mongojs.ObjectId
|
||||
db = mongojs(Settings.mongo.url, ['users', 'projects', 'subscriptions'])
|
||||
async = require "async"
|
||||
|
||||
module.exports = HoldingAccountMigration =
|
||||
DRY_RUN: true
|
||||
|
||||
findHoldingAccounts: (callback = (error, users) ->) ->
|
||||
db.users.find({holdingAccount: true, hashedPassword: { $exists: false }}, {holdingAccount: 1, email: 1}, callback)
|
||||
|
||||
deleteUserProjects: (user_id, callback = (error) ->) ->
|
||||
# Holding accounts can't own projects, so only remove from
|
||||
# collaberator_refs and readOnly_refs
|
||||
console.log "[Removing user from projects]", user_id
|
||||
db.projects.find {
|
||||
$or: [
|
||||
{collaberator_refs: user_id},
|
||||
{readOnly_refs: user_id}
|
||||
]
|
||||
}, { collaberator_refs: 1, readOnly_refs: 1 }, (error, projects = []) ->
|
||||
return callback(error) if error?
|
||||
jobs = projects.map (project) ->
|
||||
(cb) ->
|
||||
console.log "[Removing user from project]", user_id, JSON.stringify(project)
|
||||
if !project?._id?
|
||||
throw new Error("no project id")
|
||||
|
||||
if !HoldingAccountMigration.DRY_RUN
|
||||
db.projects.update {
|
||||
_id: project._id
|
||||
}, {
|
||||
$pull: {
|
||||
collaberator_refs: user_id,
|
||||
readOnly_refs: user_id
|
||||
}
|
||||
}, (error, result) ->
|
||||
return cb(error) if error?
|
||||
console.log "[Removed user from project]", user_id, project._id, result
|
||||
cb()
|
||||
else
|
||||
console.log "[Would have removed user from project]", user_id, project._id
|
||||
cb()
|
||||
|
||||
async.series jobs, callback
|
||||
|
||||
deleteUser: (user_id, callback = (error) ->) ->
|
||||
if !user_id?
|
||||
throw new Error("must have user_id")
|
||||
if !HoldingAccountMigration.DRY_RUN
|
||||
db.users.remove {_id: user_id, holdingAccount: true}, (error, result) ->
|
||||
return callback(error) if error?
|
||||
console.log "[Removed user]", user_id, result
|
||||
if result.n != 1
|
||||
return callback(new Error("failed to remove user as expected"))
|
||||
callback()
|
||||
else
|
||||
console.log "[Would have removed user]", user_id
|
||||
callback()
|
||||
|
||||
migrateGroupInvites: (user_id, email, callback = (error) ->) ->
|
||||
if !user_id?
|
||||
throw new Error("must have user_id")
|
||||
if !HoldingAccountMigration.DRY_RUN
|
||||
db.subscriptions.update {member_ids: user_id}, {
|
||||
$pull: { member_ids: user_id },
|
||||
$addToSet : { invited_emails: email }
|
||||
}, { multi : true }, (error, result) ->
|
||||
return callback(error) if error?
|
||||
console.log "[Migrated user in group accounts]", user_id, email, result
|
||||
callback()
|
||||
else
|
||||
console.log "[Would have migrated user in group accounts]", user_id, email
|
||||
callback()
|
||||
|
||||
run: (done = () ->) ->
|
||||
console.log "[Getting list of holding accounts]"
|
||||
HoldingAccountMigration.findHoldingAccounts (error, users) ->
|
||||
throw error if error?
|
||||
console.log "[Got #{users.length} holding accounts]"
|
||||
i = 0
|
||||
jobs = users.map (u) ->
|
||||
(cb) ->
|
||||
console.log "[Removing user #{i++}/#{users.length}]"
|
||||
HoldingAccountMigration.migrateGroupInvites u._id, u.email, (error) ->
|
||||
return cb(error) if error?
|
||||
HoldingAccountMigration.deleteUser u._id, (error) ->
|
||||
return cb(error) if error?
|
||||
HoldingAccountMigration.deleteUserProjects u._id, (error) ->
|
||||
return cb(error) if error?
|
||||
setTimeout cb, 50 # Small delay to not hammer DB
|
||||
async.series jobs, (error) ->
|
||||
throw error if error?
|
||||
console.log "[FINISHED]"
|
||||
done()
|
||||
|
||||
migrate: (client, done=()->) ->
|
||||
HoldingAccountMigration.DRY_RUN = false
|
||||
HoldingAccountMigration.run(done)
|
||||
|
||||
rollback: (client, done) ->
|
||||
done()
|
||||
@@ -0,0 +1,30 @@
|
||||
Settings = require "settings-sharelatex"
|
||||
fs = require("fs")
|
||||
mongojs = require("mongojs")
|
||||
ObjectId = mongojs.ObjectId
|
||||
db = mongojs(Settings.mongo.url, ['users'])
|
||||
_ = require("underscore")
|
||||
|
||||
|
||||
handleExit = () ->
|
||||
console.log('Got signal. Shutting down.')
|
||||
|
||||
|
||||
process.on 'SIGINT', handleExit
|
||||
process.on 'SIGHUP', handleExit
|
||||
|
||||
|
||||
exports.migrate = (client, done=()->) ->
|
||||
patch = {
|
||||
$set: {
|
||||
'features.trackChanges': true
|
||||
}
|
||||
}
|
||||
console.log ">> enabling trackChanges feature: ", patch
|
||||
db.users.update {}, patch, {multi: true}, (err) ->
|
||||
console.log "finished enabling trackChanges feature"
|
||||
return done(err)
|
||||
|
||||
|
||||
exports.rollback = (client, done) ->
|
||||
done()
|
||||
@@ -0,0 +1,51 @@
|
||||
Settings = require "settings-sharelatex"
|
||||
fs = require("fs")
|
||||
mongojs = require("mongojs")
|
||||
ObjectId = mongojs.ObjectId
|
||||
db = mongojs(Settings.mongo.url, ['docs','docHistory', 'docHistoryStats'])
|
||||
_ = require("underscore")
|
||||
async = require("async")
|
||||
exec = require("child_process").exec
|
||||
bson = require('bson')
|
||||
BSON = new bson()
|
||||
|
||||
|
||||
handleExit = () ->
|
||||
console.log('Got signal. Shutting down.')
|
||||
|
||||
|
||||
exports.migrate = (client, done=()->) ->
|
||||
console.log ">> Adding indexes for token-based project access: "
|
||||
db.projects.ensureIndex {'tokens.readAndWrite': 1}, {
|
||||
partialFilterExpression: { 'tokens.readAndWrite': { $exists: true } },
|
||||
unique: true,
|
||||
background: true
|
||||
}, (err) ->
|
||||
if err?
|
||||
return done(err)
|
||||
db.projects.ensureIndex {'tokens.readOnly': 1}, {
|
||||
partialFilterExpression: { 'tokens.readOnly': { $exists: true } },
|
||||
unique: true,
|
||||
background: true
|
||||
}, (err) ->
|
||||
if err?
|
||||
return done(err)
|
||||
db.projects.ensureIndex {tokenAccessReadAndWrite_refs: 1}, {
|
||||
background: true
|
||||
}, (err) ->
|
||||
if err?
|
||||
return done(err)
|
||||
db.projects.ensureIndex {tokenAccessOnly_refs: 1}, {
|
||||
background: true
|
||||
}, (err) ->
|
||||
console.log ">> done adding indexes for token-based project access"
|
||||
done()
|
||||
|
||||
|
||||
exports.rollback = (client, done) ->
|
||||
done()
|
||||
|
||||
|
||||
process.on 'SIGINT', handleExit
|
||||
process.on 'SIGHUP', handleExit
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
#This is needed because we forgot to add track changes into the default settings
|
||||
Settings = require "settings-sharelatex"
|
||||
fs = require("fs")
|
||||
mongojs = require("mongojs")
|
||||
ObjectId = mongojs.ObjectId
|
||||
db = mongojs(Settings.mongo.url, ['users'])
|
||||
_ = require("underscore")
|
||||
|
||||
|
||||
handleExit = () ->
|
||||
console.log('Got signal. Shutting down.')
|
||||
|
||||
|
||||
process.on 'SIGINT', handleExit
|
||||
process.on 'SIGHUP', handleExit
|
||||
|
||||
|
||||
exports.migrate = (client, done=()->) ->
|
||||
patch = {
|
||||
$set: {
|
||||
'features.trackChanges': true
|
||||
}
|
||||
}
|
||||
console.log ">> enabling trackChanges feature: ", patch
|
||||
db.users.update {}, patch, {multi: true}, (err) ->
|
||||
console.log "finished enabling trackChanges feature"
|
||||
return done(err)
|
||||
|
||||
|
||||
exports.rollback = (client, done) ->
|
||||
done()
|
||||
@@ -1,2 +1,9 @@
|
||||
* if migration is stopped mid way it will start at the beginging next time
|
||||
* to see the run migrations do db.getCollection('_migrations').find() you can't do db._migrations.find()
|
||||
If migration is stopped mid way it will start at the beginging next time
|
||||
|
||||
To see the run migrations do db.getCollection('_migrations').find() you can't do db._migrations.find()
|
||||
|
||||
When testing, to roll back a migration run:
|
||||
|
||||
```
|
||||
./node_modules/east/bin/east rollback 5 --adapter east-mongo --url mongodb://localhost:27017/sharelatex
|
||||
```
|
||||
|
||||
gerado
+610
@@ -0,0 +1,610 @@
|
||||
{
|
||||
"name": "sharelatex",
|
||||
"version": "0.0.1",
|
||||
"dependencies": {
|
||||
"async": {
|
||||
"version": "0.9.2",
|
||||
"from": "async@>=0.9.0 <0.10.0",
|
||||
"resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz"
|
||||
},
|
||||
"bson": {
|
||||
"version": "1.0.4",
|
||||
"from": "bson@>=1.0.4 <2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/bson/-/bson-1.0.4.tgz"
|
||||
},
|
||||
"coffee-script": {
|
||||
"version": "1.12.7",
|
||||
"from": "coffee-script@>=1.11.1 <2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.12.7.tgz"
|
||||
},
|
||||
"east": {
|
||||
"version": "0.5.7",
|
||||
"from": "east@0.5.7",
|
||||
"resolved": "http://registry.npmjs.org/east/-/east-0.5.7.tgz",
|
||||
"dependencies": {
|
||||
"commander": {
|
||||
"version": "2.9.0",
|
||||
"from": "commander@2.9.0",
|
||||
"resolved": "http://registry.npmjs.org/commander/-/commander-2.9.0.tgz",
|
||||
"dependencies": {
|
||||
"graceful-readlink": {
|
||||
"version": "1.0.1",
|
||||
"from": "graceful-readlink@>=1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz"
|
||||
}
|
||||
}
|
||||
},
|
||||
"expressionify": {
|
||||
"version": "0.9.3",
|
||||
"from": "expressionify@0.9.3",
|
||||
"resolved": "http://registry.npmjs.org/expressionify/-/expressionify-0.9.3.tgz"
|
||||
},
|
||||
"progress": {
|
||||
"version": "1.1.8",
|
||||
"from": "progress@1.1.8",
|
||||
"resolved": "http://registry.npmjs.org/progress/-/progress-1.1.8.tgz"
|
||||
},
|
||||
"twostep": {
|
||||
"version": "0.4.2",
|
||||
"from": "twostep@0.4.2",
|
||||
"resolved": "http://registry.npmjs.org/twostep/-/twostep-0.4.2.tgz"
|
||||
}
|
||||
}
|
||||
},
|
||||
"east-mongo": {
|
||||
"version": "0.3.3",
|
||||
"from": "east-mongo@0.3.3",
|
||||
"resolved": "http://registry.npmjs.org/east-mongo/-/east-mongo-0.3.3.tgz"
|
||||
},
|
||||
"grunt-shell": {
|
||||
"version": "1.3.1",
|
||||
"from": "grunt-shell@>=1.1.1 <2.0.0",
|
||||
"resolved": "http://registry.npmjs.org/grunt-shell/-/grunt-shell-1.3.1.tgz",
|
||||
"dependencies": {
|
||||
"chalk": {
|
||||
"version": "1.1.3",
|
||||
"from": "chalk@>=1.0.0 <2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
|
||||
"dependencies": {
|
||||
"ansi-styles": {
|
||||
"version": "2.2.1",
|
||||
"from": "ansi-styles@>=2.2.1 <3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz"
|
||||
},
|
||||
"escape-string-regexp": {
|
||||
"version": "1.0.5",
|
||||
"from": "escape-string-regexp@>=1.0.2 <2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz"
|
||||
},
|
||||
"has-ansi": {
|
||||
"version": "2.0.0",
|
||||
"from": "has-ansi@>=2.0.0 <3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
|
||||
"dependencies": {
|
||||
"ansi-regex": {
|
||||
"version": "2.1.1",
|
||||
"from": "ansi-regex@>=2.0.0 <3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz"
|
||||
}
|
||||
}
|
||||
},
|
||||
"strip-ansi": {
|
||||
"version": "3.0.1",
|
||||
"from": "strip-ansi@>=3.0.0 <4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
|
||||
"dependencies": {
|
||||
"ansi-regex": {
|
||||
"version": "2.1.1",
|
||||
"from": "ansi-regex@>=2.0.0 <3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz"
|
||||
}
|
||||
}
|
||||
},
|
||||
"supports-color": {
|
||||
"version": "2.0.0",
|
||||
"from": "supports-color@>=2.0.0 <3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz"
|
||||
}
|
||||
}
|
||||
},
|
||||
"npm-run-path": {
|
||||
"version": "1.0.0",
|
||||
"from": "npm-run-path@>=1.0.0 <2.0.0",
|
||||
"resolved": "http://registry.npmjs.org/npm-run-path/-/npm-run-path-1.0.0.tgz",
|
||||
"dependencies": {
|
||||
"path-key": {
|
||||
"version": "1.0.0",
|
||||
"from": "path-key@>=1.0.0 <2.0.0",
|
||||
"resolved": "http://registry.npmjs.org/path-key/-/path-key-1.0.0.tgz"
|
||||
}
|
||||
}
|
||||
},
|
||||
"object-assign": {
|
||||
"version": "4.1.1",
|
||||
"from": "object-assign@>=4.0.0 <5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz"
|
||||
}
|
||||
}
|
||||
},
|
||||
"load-grunt-config": {
|
||||
"version": "0.19.2",
|
||||
"from": "load-grunt-config@>=0.19.2 <0.20.0",
|
||||
"resolved": "http://registry.npmjs.org/load-grunt-config/-/load-grunt-config-0.19.2.tgz",
|
||||
"dependencies": {
|
||||
"cson": {
|
||||
"version": "3.0.2",
|
||||
"from": "cson@>=3.0.2 <3.1.0",
|
||||
"resolved": "http://registry.npmjs.org/cson/-/cson-3.0.2.tgz",
|
||||
"dependencies": {
|
||||
"cson-parser": {
|
||||
"version": "1.3.5",
|
||||
"from": "cson-parser@>=1.0.6 <2.0.0",
|
||||
"resolved": "http://registry.npmjs.org/cson-parser/-/cson-parser-1.3.5.tgz"
|
||||
},
|
||||
"extract-opts": {
|
||||
"version": "3.3.1",
|
||||
"from": "extract-opts@>=3.0.1 <4.0.0",
|
||||
"resolved": "http://registry.npmjs.org/extract-opts/-/extract-opts-3.3.1.tgz",
|
||||
"dependencies": {
|
||||
"eachr": {
|
||||
"version": "3.2.0",
|
||||
"from": "eachr@>=3.2.0 <4.0.0",
|
||||
"resolved": "http://registry.npmjs.org/eachr/-/eachr-3.2.0.tgz"
|
||||
},
|
||||
"editions": {
|
||||
"version": "1.3.4",
|
||||
"from": "editions@>=1.1.1 <2.0.0",
|
||||
"resolved": "http://registry.npmjs.org/editions/-/editions-1.3.4.tgz"
|
||||
},
|
||||
"typechecker": {
|
||||
"version": "4.4.1",
|
||||
"from": "typechecker@>=4.3.0 <5.0.0",
|
||||
"resolved": "http://registry.npmjs.org/typechecker/-/typechecker-4.4.1.tgz"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requirefresh": {
|
||||
"version": "2.1.0",
|
||||
"from": "requirefresh@>=2.0.0 <3.0.0",
|
||||
"resolved": "http://registry.npmjs.org/requirefresh/-/requirefresh-2.1.0.tgz",
|
||||
"dependencies": {
|
||||
"editions": {
|
||||
"version": "1.3.4",
|
||||
"from": "editions@>=1.1.1 <2.0.0",
|
||||
"resolved": "http://registry.npmjs.org/editions/-/editions-1.3.4.tgz"
|
||||
}
|
||||
}
|
||||
},
|
||||
"safefs": {
|
||||
"version": "4.1.0",
|
||||
"from": "safefs@>=4.0.0 <5.0.0",
|
||||
"resolved": "http://registry.npmjs.org/safefs/-/safefs-4.1.0.tgz",
|
||||
"dependencies": {
|
||||
"editions": {
|
||||
"version": "1.3.4",
|
||||
"from": "editions@>=1.1.1 <2.0.0",
|
||||
"resolved": "http://registry.npmjs.org/editions/-/editions-1.3.4.tgz"
|
||||
},
|
||||
"graceful-fs": {
|
||||
"version": "4.1.11",
|
||||
"from": "graceful-fs@>=4.1.4 <5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"glob": {
|
||||
"version": "5.0.15",
|
||||
"from": "glob@>=5.0.15 <5.1.0",
|
||||
"resolved": "http://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
|
||||
"dependencies": {
|
||||
"inflight": {
|
||||
"version": "1.0.6",
|
||||
"from": "inflight@>=1.0.4 <2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
|
||||
"dependencies": {
|
||||
"wrappy": {
|
||||
"version": "1.0.2",
|
||||
"from": "wrappy@>=1.0.0 <2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz"
|
||||
}
|
||||
}
|
||||
},
|
||||
"inherits": {
|
||||
"version": "2.0.3",
|
||||
"from": "inherits@>=2.0.0 <3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz"
|
||||
},
|
||||
"minimatch": {
|
||||
"version": "3.0.4",
|
||||
"from": "minimatch@>=2.0.0 <3.0.0||>=3.0.0 <4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
|
||||
"dependencies": {
|
||||
"brace-expansion": {
|
||||
"version": "1.1.8",
|
||||
"from": "brace-expansion@>=1.1.7 <2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz",
|
||||
"dependencies": {
|
||||
"balanced-match": {
|
||||
"version": "1.0.0",
|
||||
"from": "balanced-match@>=1.0.0 <2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz"
|
||||
},
|
||||
"concat-map": {
|
||||
"version": "0.0.1",
|
||||
"from": "concat-map@0.0.1",
|
||||
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"once": {
|
||||
"version": "1.4.0",
|
||||
"from": "once@>=1.3.0 <2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
|
||||
"dependencies": {
|
||||
"wrappy": {
|
||||
"version": "1.0.2",
|
||||
"from": "wrappy@>=1.0.0 <2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz"
|
||||
}
|
||||
}
|
||||
},
|
||||
"path-is-absolute": {
|
||||
"version": "1.0.1",
|
||||
"from": "path-is-absolute@>=1.0.0 <2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz"
|
||||
}
|
||||
}
|
||||
},
|
||||
"jit-grunt": {
|
||||
"version": "0.10.0",
|
||||
"from": "jit-grunt@>=0.10.0 <0.11.0",
|
||||
"resolved": "http://registry.npmjs.org/jit-grunt/-/jit-grunt-0.10.0.tgz"
|
||||
},
|
||||
"js-yaml": {
|
||||
"version": "3.4.6",
|
||||
"from": "js-yaml@>=3.4.3 <3.5.0",
|
||||
"resolved": "http://registry.npmjs.org/js-yaml/-/js-yaml-3.4.6.tgz",
|
||||
"dependencies": {
|
||||
"argparse": {
|
||||
"version": "1.0.9",
|
||||
"from": "argparse@>=1.0.2 <2.0.0",
|
||||
"resolved": "http://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz",
|
||||
"dependencies": {
|
||||
"sprintf-js": {
|
||||
"version": "1.0.3",
|
||||
"from": "sprintf-js@>=1.0.2 <1.1.0",
|
||||
"resolved": "http://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz"
|
||||
}
|
||||
}
|
||||
},
|
||||
"esprima": {
|
||||
"version": "2.7.3",
|
||||
"from": "esprima@>=2.6.0 <3.0.0",
|
||||
"resolved": "http://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz"
|
||||
},
|
||||
"inherit": {
|
||||
"version": "2.2.6",
|
||||
"from": "inherit@>=2.2.2 <3.0.0",
|
||||
"resolved": "http://registry.npmjs.org/inherit/-/inherit-2.2.6.tgz"
|
||||
}
|
||||
}
|
||||
},
|
||||
"load-grunt-tasks": {
|
||||
"version": "3.3.0",
|
||||
"from": "load-grunt-tasks@>=3.3.0 <3.4.0",
|
||||
"resolved": "http://registry.npmjs.org/load-grunt-tasks/-/load-grunt-tasks-3.3.0.tgz",
|
||||
"dependencies": {
|
||||
"arrify": {
|
||||
"version": "1.0.1",
|
||||
"from": "arrify@>=1.0.0 <2.0.0",
|
||||
"resolved": "http://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz"
|
||||
},
|
||||
"multimatch": {
|
||||
"version": "2.1.0",
|
||||
"from": "multimatch@>=2.0.0 <3.0.0",
|
||||
"resolved": "http://registry.npmjs.org/multimatch/-/multimatch-2.1.0.tgz",
|
||||
"dependencies": {
|
||||
"array-differ": {
|
||||
"version": "1.0.0",
|
||||
"from": "array-differ@>=1.0.0 <2.0.0",
|
||||
"resolved": "http://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz"
|
||||
},
|
||||
"array-union": {
|
||||
"version": "1.0.2",
|
||||
"from": "array-union@>=1.0.1 <2.0.0",
|
||||
"resolved": "http://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
|
||||
"dependencies": {
|
||||
"array-uniq": {
|
||||
"version": "1.0.3",
|
||||
"from": "array-uniq@>=1.0.1 <2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz"
|
||||
}
|
||||
}
|
||||
},
|
||||
"minimatch": {
|
||||
"version": "3.0.4",
|
||||
"from": "minimatch@>=3.0.0 <4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
|
||||
"dependencies": {
|
||||
"brace-expansion": {
|
||||
"version": "1.1.8",
|
||||
"from": "brace-expansion@>=1.1.7 <2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz",
|
||||
"dependencies": {
|
||||
"balanced-match": {
|
||||
"version": "1.0.0",
|
||||
"from": "balanced-match@>=1.0.0 <2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz"
|
||||
},
|
||||
"concat-map": {
|
||||
"version": "0.0.1",
|
||||
"from": "concat-map@0.0.1",
|
||||
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"pkg-up": {
|
||||
"version": "1.0.0",
|
||||
"from": "pkg-up@>=1.0.0 <2.0.0",
|
||||
"resolved": "http://registry.npmjs.org/pkg-up/-/pkg-up-1.0.0.tgz",
|
||||
"dependencies": {
|
||||
"find-up": {
|
||||
"version": "1.1.2",
|
||||
"from": "find-up@>=1.0.0 <2.0.0",
|
||||
"resolved": "http://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
|
||||
"dependencies": {
|
||||
"path-exists": {
|
||||
"version": "2.1.0",
|
||||
"from": "path-exists@>=2.0.0 <3.0.0",
|
||||
"resolved": "http://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz"
|
||||
},
|
||||
"pinkie-promise": {
|
||||
"version": "2.0.1",
|
||||
"from": "pinkie-promise@>=2.0.0 <3.0.0",
|
||||
"resolved": "http://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
|
||||
"dependencies": {
|
||||
"pinkie": {
|
||||
"version": "2.0.4",
|
||||
"from": "pinkie@>=2.0.0 <3.0.0",
|
||||
"resolved": "http://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"lodash": {
|
||||
"version": "3.10.1",
|
||||
"from": "lodash@>=3.0.0 <4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz"
|
||||
},
|
||||
"mongodb": {
|
||||
"version": "2.2.34",
|
||||
"from": "mongodb@>=2.2.34 <3.0.0",
|
||||
"resolved": "http://registry.npmjs.org/mongodb/-/mongodb-2.2.34.tgz",
|
||||
"dependencies": {
|
||||
"es6-promise": {
|
||||
"version": "3.2.1",
|
||||
"from": "es6-promise@3.2.1",
|
||||
"resolved": "http://registry.npmjs.org/es6-promise/-/es6-promise-3.2.1.tgz"
|
||||
},
|
||||
"mongodb-core": {
|
||||
"version": "2.1.18",
|
||||
"from": "mongodb-core@2.1.18",
|
||||
"resolved": "http://registry.npmjs.org/mongodb-core/-/mongodb-core-2.1.18.tgz",
|
||||
"dependencies": {
|
||||
"require_optional": {
|
||||
"version": "1.0.1",
|
||||
"from": "require_optional@>=1.0.0 <1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/require_optional/-/require_optional-1.0.1.tgz",
|
||||
"dependencies": {
|
||||
"semver": {
|
||||
"version": "5.5.0",
|
||||
"from": "semver@>=5.1.0 <6.0.0",
|
||||
"resolved": "http://registry.npmjs.org/semver/-/semver-5.5.0.tgz"
|
||||
},
|
||||
"resolve-from": {
|
||||
"version": "2.0.0",
|
||||
"from": "resolve-from@>=2.0.0 <3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"readable-stream": {
|
||||
"version": "2.2.7",
|
||||
"from": "readable-stream@2.2.7",
|
||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.7.tgz",
|
||||
"dependencies": {
|
||||
"buffer-shims": {
|
||||
"version": "1.0.0",
|
||||
"from": "buffer-shims@>=1.0.0 <1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz"
|
||||
},
|
||||
"core-util-is": {
|
||||
"version": "1.0.2",
|
||||
"from": "core-util-is@>=1.0.0 <1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz"
|
||||
},
|
||||
"isarray": {
|
||||
"version": "1.0.0",
|
||||
"from": "isarray@>=1.0.0 <1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz"
|
||||
},
|
||||
"inherits": {
|
||||
"version": "2.0.3",
|
||||
"from": "inherits@>=2.0.1 <2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz"
|
||||
},
|
||||
"process-nextick-args": {
|
||||
"version": "1.0.7",
|
||||
"from": "process-nextick-args@>=1.0.6 <1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz"
|
||||
},
|
||||
"string_decoder": {
|
||||
"version": "1.0.3",
|
||||
"from": "string_decoder@>=1.0.0 <1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
|
||||
"dependencies": {
|
||||
"safe-buffer": {
|
||||
"version": "5.1.1",
|
||||
"from": "safe-buffer@>=5.1.0 <5.2.0",
|
||||
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz"
|
||||
}
|
||||
}
|
||||
},
|
||||
"util-deprecate": {
|
||||
"version": "1.0.2",
|
||||
"from": "util-deprecate@>=1.0.1 <1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"mongojs": {
|
||||
"version": "2.4.0",
|
||||
"from": "mongojs@2.4.0",
|
||||
"resolved": "http://registry.npmjs.org/mongojs/-/mongojs-2.4.0.tgz",
|
||||
"dependencies": {
|
||||
"each-series": {
|
||||
"version": "1.0.0",
|
||||
"from": "each-series@>=1.0.0 <2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/each-series/-/each-series-1.0.0.tgz"
|
||||
},
|
||||
"once": {
|
||||
"version": "1.4.0",
|
||||
"from": "once@>=1.3.2 <2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
|
||||
"dependencies": {
|
||||
"wrappy": {
|
||||
"version": "1.0.2",
|
||||
"from": "wrappy@>=1.0.0 <2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz"
|
||||
}
|
||||
}
|
||||
},
|
||||
"parse-mongo-url": {
|
||||
"version": "1.1.1",
|
||||
"from": "parse-mongo-url@>=1.1.0 <2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/parse-mongo-url/-/parse-mongo-url-1.1.1.tgz"
|
||||
},
|
||||
"readable-stream": {
|
||||
"version": "2.3.3",
|
||||
"from": "readable-stream@>=2.0.2 <3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz",
|
||||
"dependencies": {
|
||||
"core-util-is": {
|
||||
"version": "1.0.2",
|
||||
"from": "core-util-is@>=1.0.0 <1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz"
|
||||
},
|
||||
"inherits": {
|
||||
"version": "2.0.3",
|
||||
"from": "inherits@>=2.0.3 <2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz"
|
||||
},
|
||||
"isarray": {
|
||||
"version": "1.0.0",
|
||||
"from": "isarray@>=1.0.0 <1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz"
|
||||
},
|
||||
"process-nextick-args": {
|
||||
"version": "1.0.7",
|
||||
"from": "process-nextick-args@>=1.0.6 <1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz"
|
||||
},
|
||||
"safe-buffer": {
|
||||
"version": "5.1.1",
|
||||
"from": "safe-buffer@>=5.1.1 <5.2.0",
|
||||
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz"
|
||||
},
|
||||
"string_decoder": {
|
||||
"version": "1.0.3",
|
||||
"from": "string_decoder@>=1.0.3 <1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz"
|
||||
},
|
||||
"util-deprecate": {
|
||||
"version": "1.0.2",
|
||||
"from": "util-deprecate@>=1.0.1 <1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz"
|
||||
}
|
||||
}
|
||||
},
|
||||
"thunky": {
|
||||
"version": "0.1.0",
|
||||
"from": "thunky@>=0.1.0 <0.2.0",
|
||||
"resolved": "https://registry.npmjs.org/thunky/-/thunky-0.1.0.tgz"
|
||||
},
|
||||
"to-mongodb-core": {
|
||||
"version": "2.0.0",
|
||||
"from": "to-mongodb-core@>=2.0.0 <3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/to-mongodb-core/-/to-mongodb-core-2.0.0.tgz"
|
||||
},
|
||||
"xtend": {
|
||||
"version": "4.0.1",
|
||||
"from": "xtend@>=4.0.0 <5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz"
|
||||
}
|
||||
}
|
||||
},
|
||||
"redis": {
|
||||
"version": "2.8.0",
|
||||
"from": "redis@>=2.6.2 <3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/redis/-/redis-2.8.0.tgz",
|
||||
"dependencies": {
|
||||
"double-ended-queue": {
|
||||
"version": "2.1.0-0",
|
||||
"from": "double-ended-queue@>=2.1.0-0 <3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz"
|
||||
},
|
||||
"redis-commands": {
|
||||
"version": "1.3.1",
|
||||
"from": "redis-commands@>=1.2.0 <2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.3.1.tgz"
|
||||
},
|
||||
"redis-parser": {
|
||||
"version": "2.6.0",
|
||||
"from": "redis-parser@>=2.6.0 <3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-2.6.0.tgz"
|
||||
}
|
||||
}
|
||||
},
|
||||
"rimraf": {
|
||||
"version": "2.2.8",
|
||||
"from": "rimraf@>=2.2.6 <2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz"
|
||||
},
|
||||
"settings-sharelatex": {
|
||||
"version": "1.0.0",
|
||||
"from": "git+https://github.com/sharelatex/settings-sharelatex.git",
|
||||
"resolved": "git+https://github.com/sharelatex/settings-sharelatex.git#b4fb8404c5de571d029bf4c29e96a60b21206f94",
|
||||
"dependencies": {
|
||||
"coffee-script": {
|
||||
"version": "1.6.0",
|
||||
"from": "coffee-script@1.6.0",
|
||||
"resolved": "http://registry.npmjs.org/coffee-script/-/coffee-script-1.6.0.tgz"
|
||||
}
|
||||
}
|
||||
},
|
||||
"underscore": {
|
||||
"version": "1.8.3",
|
||||
"from": "underscore@>=1.7.0 <2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz"
|
||||
}
|
||||
}
|
||||
}
|
||||
+5
-3
@@ -4,13 +4,15 @@
|
||||
"description": "An online collaborative LaTeX editor",
|
||||
"dependencies": {
|
||||
"async": "^0.9.0",
|
||||
"bson": "^1.0.4",
|
||||
"coffee-script": "^1.11.1",
|
||||
"east": "0.5.1",
|
||||
"east-mongo": "^0.1.2",
|
||||
"east": "0.5.7",
|
||||
"east-mongo": "0.3.3",
|
||||
"grunt-shell": "^1.1.1",
|
||||
"load-grunt-config": "^0.19.2",
|
||||
"lodash": "^3.0.0",
|
||||
"mongojs": "^0.18.1",
|
||||
"mongodb": "^2.2.34",
|
||||
"mongojs": "2.4.0",
|
||||
"redis": "^2.6.2",
|
||||
"rimraf": "~2.2.6",
|
||||
"settings-sharelatex": "git+https://github.com/sharelatex/settings-sharelatex.git",
|
||||
|
||||
Referência em uma Nova Issue
Bloquear um usuário