46 Commits

Autor SHA1 Mensagem Data
Shane Kilkelly 808da2a580 Merge pull request #570 from sharelatex/sk-unlisted-projects
add migration for token-based access indexes
2018-08-02 10:11:13 +01:00
Shane Kilkelly 6825f5d279 Fix whitespace 2018-08-02 10:10:19 +01:00
Henry Oswald f11ef9dcc2 added example sandbox compiles mount 2018-05-02 16:07:23 +01:00
James Allen 765ad89fa4 Update CONTRIBUTING.md 2018-04-26 09:43:07 +01:00
Henry Oswald 5064b4cb3a updated the docker compose file with working ldap example 2018-02-27 10:15:42 +00:00
Henry Oswald 9f590b940f lockk down to latest versions of mongodb 2018-01-31 11:28:50 +00:00
Henry Oswald aa3d45eb5a added npm shrinkwrap to fix mongodb native version change 2018-01-31 11:19:05 +00:00
Henry Oswald b3c130c268 fix mongo connect issue, .connect no longer exists on mongojs 2018-01-31 11:04:58 +00:00
Henry Oswald 7b5b60ce39 added track changes migration in again, we didn't add the setting
as a default before so needs 2nd migration
2018-01-26 09:46:35 +00:00
Henry Oswald 563b9bfe3f Update docker-compose.yml 2018-01-25 11:34:29 +00:00
Shane Kilkelly 2e82ac99bd Add token-access-refs indexes 2017-11-08 11:55:08 +00:00
Shane Kilkelly c3d7f36b17 add migration for token-based access indexes 2017-11-08 09:59:08 +00:00
Shane Kilkelly 86b5d97491 Remove un-used package import 2017-09-08 09:06:48 +01:00
Shane Kilkelly dad32e7adf update bson api in migration 3 2017-09-07 15:27:28 +01:00
Shane Kilkelly ce85997843 depend on bson explicitely 2017-09-07 13:23:18 +01:00
Shane Kilkelly 587d3d3e14 Add grunt install command to install-services 2017-09-06 13:37:34 +01:00
Shane Kilkelly 3a26a8f2d5 Merge pull request #559 from sharelatex/sk-node-6
Update to node6
2017-09-06 10:51:38 +01:00
Shane Kilkelly f7cce110ca Merge pull request #558 from sharelatex/sk-allow-no-nvm
check for nvm presence before using, survive abscence
2017-09-06 10:51:27 +01:00
Shane Kilkelly 3e38e99aa6 Fix the doc lines migration.
- The bson module changed at some point, update to new api
2017-09-06 09:56:44 +01:00
Shane Kilkelly 7fbfd3ddf8 Update to node6.
- update nvmrc file
- update mongojs dependency (for migrations)
2017-09-05 15:33:32 +01:00
Shane Kilkelly 59f85704cf Add warning when NVM is not present 2017-09-05 15:26:40 +01:00
Shane Kilkelly 54874c3389 Suppress verbose output from type command. 2017-09-04 15:57:13 +01:00
Shane Kilkelly bdbf2b3e71 check for nvm presence before using, survive abscence 2017-09-04 15:40:27 +01:00
James Allen 0e6abc60ff Merge pull request #554 from tomcoombs87/master
couple of tiny changes in documentation.
2017-08-06 18:56:38 +02:00
Tom f781262895 Merge pull request #2 from tomcoombs87/patch-3
tiny typo
2017-08-05 22:43:00 +01:00
Tom 4996acb503 Merge pull request #1 from tomcoombs87/patch-2
Patch 2
2017-08-05 22:42:19 +01:00
Tom b881cca1d8 tiny typo 2017-08-05 22:33:16 +01:00
Tom 2b3cd36f98 removed a space to fix broken wiki link 2017-08-05 22:00:33 +01:00
James Allen 4eaa82b059 Merge pull request #553 from tomcoombs87/patch-1
fixed a typo
2017-08-05 21:14:24 +02:00
tomcoombs87 6daf08e9bc fixed a typo 2017-08-05 20:09:55 +01:00
Henry Oswald f880cee1f6 Merge pull request #549 from sharelatex/hof-replace-grunt-init
Replace grunt service initialisation with bash script
2017-08-02 14:00:30 +01:00
Hayden Faulds d099c1e1f1 add logging to install-services script 2017-07-31 13:36:37 +01:00
Hayden Faulds 6e91742a8a add postinstall message explaining how to use bin/install-services 2017-07-31 13:36:18 +01:00
Hayden Faulds 6ef2cae504 replace grunt service initialisation with bash script 2017-07-27 15:39:22 +01:00
James Allen 3f963689f9 Create ISSUE_TEMPLATE.md 2017-07-25 14:25:56 +01:00
James Allen 996399cc2e Merge pull request #541 from sharelatex/ja-update-holding-accounts-migration-for-groups
Update migration script for holding accounts to migrate group invites
2017-07-25 12:45:49 +01:00
James Allen 7ef02127a1 Update migration script for holding accounts to migrate group invites 2017-06-14 17:03:05 +01:00
Shane Kilkelly 65d21f712e Add migration to enable trackChanges for all users 2017-05-17 14:23:55 +01:00
Shane Kilkelly 1f30aa535f Merge pull request #509 from sharelatex/ja-remove-holding-accounts
Add migration to remove holding accounts
2017-04-05 14:55:49 +01:00
James Allen a8557bb139 Don't find holding accounts with a hashed password 2017-03-24 13:46:31 +00:00
James Allen 21b15c8c73 More loggin 2017-03-23 11:56:46 +00:00
James Allen ebb9a6c752 Improve logging 2017-03-23 11:50:46 +00:00
James Allen e1af76f652 Address Henry's comments about robustness 2017-03-23 11:34:45 +00:00
James Allen 73443f5a65 Add in dry run option for holding account migration and log out removed users 2017-01-30 15:40:31 +01:00
James Allen 05540ca8a7 Add migration to remove holding accounts 2017-01-30 14:36:06 +01:00
Shane Kilkelly fa89f55a0a Move web-sharelatex back to master branch. 2017-01-24 10:35:05 +00:00
18 arquivos alterados com 938 adições e 66 exclusões
+1 -1
Ver Arquivo
@@ -1 +1 @@
0.10.26
6.11.2
+2 -6
Ver Arquivo
@@ -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
Ver Arquivo
@@ -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."
+22
Ver Arquivo
@@ -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
Ver Arquivo
@@ -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
+25
Ver Arquivo
@@ -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
+1 -1
Ver Arquivo
@@ -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
Ver Arquivo
@@ -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) ->
+2 -1
Ver Arquivo
@@ -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: ->
-1
Ver Arquivo
@@ -4,7 +4,6 @@ mongojs = require("mongojs")
ObjectId = mongojs.ObjectId
db = mongojs(Settings.mongo.url, ['users'])
_ = require("underscore")
BSON = db.bson.BSON
handleExit = () ->
+103
Ver Arquivo
@@ -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()
+51
Ver Arquivo
@@ -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()
+9 -2
Ver Arquivo
@@ -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
```
+610
Ver Arquivo
@@ -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
Ver Arquivo
@@ -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",