{ "name": "web-overleaf", "version": "0.1.4", "description": "The HTTP front end for ShareLaTeX", "license": "AGPL-3.0-only", "private": true, "repository": { "type": "git", "url": "https://github.com/sharelatex/web-sharelatex.git" }, "directories": { "public": "./public" }, "scripts": { "test:acceptance:run_dir": "mocha --recursive --timeout 25000 --exit --grep=$MOCHA_GREP --require test/acceptance/bootstrap.js", "test:acceptance:app": "npm run test:acceptance:run_dir -- test/acceptance/src", "test:unit:run_dir": "mocha --recursive --timeout 25000 --exit --grep=$MOCHA_GREP --file test/unit/bootstrap.js", "test:unit:all": "npm run test:unit:run_dir -- test/unit/src modules/*/test/unit/src", "test:unit:all:silent": "npm run test:unit:all -- --reporter dot", "test:unit:app": "npm run test:unit:run_dir -- test/unit/src", "test:unit:app:parallel": "parallel --plain --keep-order --halt now,fail=1 npm run test:unit:run_dir -- {} ::: test/unit/src/*", "test:frontend": "NODE_ENV=test TZ=GMT mocha --recursive --timeout 5000 --exit --grep=$MOCHA_GREP --require test/frontend/bootstrap.js test/frontend modules/*/test/frontend", "test:frontend:coverage": "c8 --all --include 'frontend/js' --include 'modules/*/frontend/js' --exclude 'frontend/js/vendor' --reporter=lcov --reporter=text-summary npm run test:frontend", "test:karma": "karma start", "test:karma:single": "karma start --single-run", "start": "node $NODE_APP_OPTIONS app.js", "nodemon": "nodemon --config nodemon.json", "webpack": "webpack-dev-server --config webpack.config.dev.js", "webpack:production": "webpack --config webpack.config.prod.js", "lint": "eslint --max-warnings 0 -f unix .", "format": "prettier-eslint '**/*.{js,less}' --list-different", "format:fix": "prettier-eslint '**/*.{js,less}' --write", "migrations": "east", "storybook": "start-storybook -p 6006" }, "browserslist": [ "last 1 year", "ie 11", "firefox esr" ], "dependencies": { "@babel/cli": "^7.8.4", "@babel/core": "^7.9.0", "@babel/preset-env": "^7.9.5", "@babel/preset-react": "^7.9.4", "@overleaf/metrics": "^3.4.1", "@overleaf/o-error": "^3.1.0", "@overleaf/redis-wrapper": "^2.0.0", "@pollyjs/adapter-node-http": "^4.2.1", "@pollyjs/core": "^4.2.1", "@pollyjs/persister-fs": "^4.2.1", "@sentry/browser": "^5.12.0", "ace-builds": "https://github.com/overleaf/ace-builds/archive/v1.4.12-69aace50e6796d42116f8f96e19d2468d8a88af9.tar.gz", "algoliasearch": "^3.35.1", "angular": "~1.8.0", "angular-sanitize": "~1.8.0", "archiver": "4.0.1", "async": "0.6.2", "axios": "^0.18.1", "backbone": "^1.3.3", "basic-auth-connect": "^1.0.0", "bcrypt": "^5.0.0", "body-parser": "^1.19.0", "bufferedstream": "1.6.0", "bull": "^3.18.0", "celebrate": "^10.0.1", "classnames": "^2.2.6", "codemirror": "^5.33.0", "connect-redis": "^3.1.0", "contentful": "^6.1.1", "cookie": "^0.2.3", "cookie-parser": "1.3.5", "core-js": "^3.6.2", "crypto-js": "^3.1.9-1", "csurf": "^1.11.0", "d3": "^3.5.16", "dateformat": "1.0.4-1.2.3", "daterangepicker": "git+https://github.com/40thieves/daterangepicker.git#master", "east": "^1.1.0", "express": "4.17.1", "express-bearer-token": "^2.4.0", "express-http-proxy": "^1.6.0", "express-session": "^1.17.1", "fs-extra": "^4.0.2", "fuse.js": "^3.0.0", "handlebars": "^4.7.6", "helmet": "^3.22.0", "http-proxy": "^1.18.1", "i18next": "^19.6.3", "i18next-fs-backend": "^1.0.7", "i18next-http-middleware": "^3.0.2", "isomorphic-unfetch": "^3.0.0", "jquery": "^2.2.4", "json2csv": "^4.3.3", "jsonwebtoken": "^8.5.1", "lodash": "^4.17.19", "logger-sharelatex": "^2.2.0", "mailchimp-api-v3": "^1.12.0", "marked": "^0.3.5", "method-override": "^2.3.3", "minimist": "1.2.5", "mmmagic": "^0.5.2", "mocha": "^6.2.2", "moment": "^2.24.0", "mongodb": "^3.6.0", "mongoose": "^5.10.7", "multer": "git+https://github.com/overleaf/multer.git", "nocache": "^2.1.0", "nodemailer": "2.1.0", "nodemailer-mandrill-transport": "^1.2.0", "nodemailer-ses-transport": "^1.5.1", "nvd3": "^1.8.6", "oauth2-server": "^3.0.1", "otplib": "^12.0.1", "p-limit": "^2.3.0", "parse-data-url": "^2.0.0", "passport": "^0.4.1", "passport-google-oauth20": "^2.0.0", "passport-local": "^1.0.0", "passport-oauth2": "^1.5.0", "passport-orcid": "0.0.4", "passport-saml": "^1.3.3", "passport-twitter": "^1.0.4", "pdfjs-dist": "^2.2.228", "prop-types": "^15.7.2", "pug": "^2.0.4", "qrcode": "^1.4.4", "react": "^16.13.1", "react-bootstrap": "^0.33.1", "react-dnd": "^11.1.3", "react-dnd-html5-backend": "^11.1.3", "react-dom": "^16.13.1", "react-error-boundary": "^2.3.1", "react-i18next": "^11.7.1", "react-linkify": "^1.0.0-alpha", "react2angular": "^4.0.6", "request": "^2.88.2", "request-promise-native": "^1.0.8", "requestretry": "^1.13.0", "rimraf": "2.2.6", "rolling-rate-limiter": "git+https://github.com/ShaneKilkelly/rolling-rate-limiter.git#master", "sanitize-html": "^1.27.1", "sanitizer": "0.1.1", "scroll-into-view-if-needed": "^2.2.25", "settings-sharelatex": "^1.1.0", "underscore": "1.6.0", "url-parse": "^1.4.7", "utf-8-validate": "^5.0.2", "uuid": "^3.0.1", "valid-data-url": "^2.0.0", "valid-url": "^1.0.9", "xml2js": "^0.4.22", "xregexp": "^4.3.0", "yauzl": "^2.10.0" }, "devDependencies": { "@babel/register": "^7.10.1", "@storybook/addon-a11y": "^6.0.21", "@storybook/addon-essentials": "^6.0.21", "@storybook/react": "^6.0.21", "@testing-library/dom": "^7.7.3", "@testing-library/react": "^10.0.4", "acorn": "^7.1.1", "acorn-walk": "^7.1.1", "angular-mocks": "~1.8.0", "autoprefixer": "^9.7.6", "babel-eslint": "^10.1.0", "babel-loader": "^8.1.0", "babel-plugin-angularjs-annotate": "^0.10.0", "c8": "^7.2.0", "chai": "^4.2.0", "chai-as-promised": "^7.1.1", "chaid": "^1.0.2", "cheerio": "^1.0.0-rc.3", "copy-webpack-plugin": "^5.1.1", "css-loader": "^3.5.2", "es6-promise": "^4.2.8", "eslint": "^4.18.1", "eslint-config-prettier": "^3.1.0", "eslint-config-standard": "^11.0.0", "eslint-config-standard-jsx": "^5.0.0", "eslint-config-standard-react": "^6.0.0", "eslint-plugin-chai-expect": "^1.1.1", "eslint-plugin-chai-friendly": "^0.4.1", "eslint-plugin-import": "^2.20.2", "eslint-plugin-jsx-a11y": "^6.2.3", "eslint-plugin-mocha": "^5.2.0", "eslint-plugin-node": "^6.0.0", "eslint-plugin-promise": "^3.6.0", "eslint-plugin-react": "^7.19.0", "eslint-plugin-react-hooks": "^4.0.8", "eslint-plugin-standard": "^3.0.1", "expose-loader": "^0.7.5", "fetch-mock": "^9.10.2", "file-loader": "^5.0.2", "glob": "^7.1.6", "handlebars-loader": "^1.7.1", "jsdom": "^16.2.2", "jsdom-global": "^3.0.2", "karma": "^5.0.2", "karma-chai-sinon": "^0.1.5", "karma-chrome-launcher": "^3.1.0", "karma-mocha": "^2.0.0", "karma-mocha-reporter": "^2.2.5", "karma-requirejs": "^1.1.0", "karma-webpack": "^4.0.2", "less": "^3.11.1", "less-loader": "^6.0.0", "less-plugin-autoprefix": "^2.0.0", "mini-css-extract-plugin": "^0.8.0", "mkdirp": "0.5.1", "mock-fs": "^4.11.0", "node-fetch": "^2.6.1", "nodemon": "^1.14.3", "optimize-css-assets-webpack-plugin": "^5.0.3", "postcss-loader": "^3.0.0", "prettier-eslint-cli": "^4.7.1", "requirejs": "^2.3.6", "samlp": "^3.4.1", "sandboxed-module": "0.3.0", "sinon": "^7.5.0", "sinon-chai": "^3.5.0", "sinon-mongoose": "^2.3.0", "socket.io-mock": "^1.3.1", "terser-webpack-plugin": "^2.3.6", "timekeeper": "^2.2.0", "val-loader": "^1.1.1", "webpack": "^4.43.0", "webpack-cli": "^3.3.11", "webpack-dev-server": "^3.11.0", "webpack-manifest-plugin": "^2.2.0", "webpack-merge": "^4.2.2" } }