{ "name": "outline", "private": true, "main": "index.js", "scripts": { "clean": "rimraf dist", "build:webpack": "NODE_ENV=production webpack --config webpack.config.prod.js", "build:analyze": "NODE_ENV=production webpack --config webpack.config.prod.js --json > stats.json", "build": "npm run clean && npm run build:webpack", "start": "NODE_ENV=production node index.js", "dev": "NODE_ENV=development nodemon --watch server index.js", "lint": "eslint app server shared", "flow": "flow", "deploy": "git push heroku master", "heroku-postbuild": "npm run build && npm run sequelize:migrate", "sequelize:create-migration": "sequelize migration:create", "sequelize:migrate": "sequelize db:migrate", "test": "npm run test:app && npm run test:server", "test:app": "jest", "test:server": "jest --config=server/.jestconfig.json --runInBand --forceExit", "test:watch": "jest --config=server/.jestconfig.json --runInBand --forceExit --watchAll" }, "jest": { "testURL": "http://localhost", "verbose": false, "roots": [ "app", "shared" ], "moduleNameMapper": { "^shared/(.*)$": "/shared/$1", "^.*[.](gif|ttf|eot|svg)$": "/__test__/fileMock.js" }, "moduleFileExtensions": [ "js", "jsx", "json" ], "moduleDirectories": [ "node_modules" ], "modulePaths": [ "app" ], "setupFiles": [ "/setupJest.js", "/__mocks__/window.js" ] }, "engines": { "node": ">= 12 <14" }, "repository": { "type": "git", "url": "git+ssh://git@github.com/outline/outline.git" }, "dependencies": { "@rehooks/window-scroll-position": "^1.0.1", "@sentry/node": "^5.12.2", "@tippy.js/react": "^2.2.2", "@tommoor/remove-markdown": "0.3.1", "autotrack": "^2.4.1", "aws-sdk": "^2.135.0", "babel-core": "^6.24.1", "babel-loader": "^7.1.2", "babel-plugin-lodash": "^3.2.11", "babel-plugin-styled-components": "^1.1.7", "babel-plugin-syntax-dynamic-import": "^6.18.0", "babel-plugin-transform-class-properties": "^6.24.1", "babel-plugin-transform-decorators-legacy": "1.3.4", "babel-plugin-transform-es2015-destructuring": "^6.23.0", "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", "babel-plugin-transform-object-rest-spread": "^6.23.0", "babel-plugin-transform-regenerator": "^6.24.1", "babel-polyfill": "^6.13.0", "babel-preset-env": "^1.4.0", "babel-preset-react": "6.11.1", "babel-preset-react-hmre": "1.1.1", "babel-regenerator-runtime": "6.5.0", "boundless-arrow-key-navigation": "^1.0.4", "boundless-popover": "^1.0.4", "bull": "^3.5.2", "cancan": "3.1.0", "copy-to-clipboard": "^3.0.6", "date-fns": "1.29.0", "debug": "^4.1.1", "dotenv": "^4.0.0", "emoji-regex": "^6.5.1", "es6-error": "^4.1.1", "exports-loader": "^0.6.4", "file-loader": "^1.1.6", "flow-typed": "^2.6.2", "fs-extra": "^4.0.2", "google-auth-library": "^5.5.1", "html-webpack-plugin": "3.2.0", "http-errors": "1.4.0", "immutable": "^3.8.2", "imports-loader": "0.6.5", "invariant": "^2.2.2", "ioredis": "^4.14.1", "isomorphic-fetch": "2.2.1", "js-search": "^1.4.2", "json-loader": "0.5.4", "jsonwebtoken": "^8.5.0", "jszip": "3.1.5", "koa": "^2.10.0", "koa-bodyparser": "4.2.0", "koa-compress": "2.0.0", "koa-convert": "1.2.0", "koa-helmet": "5.2.0", "koa-jwt": "^3.6.0", "koa-logger": "^2.0.1", "koa-mount": "^3.0.0", "koa-onerror": "^4.0.0", "koa-router": "7.0.1", "koa-sendfile": "2.0.0", "koa-sslify": "2.1.2", "koa-static": "^4.0.1", "lodash": "^4.17.13", "mobx": "4.6.0", "mobx-react": "^5.4.2", "natural-sort": "^1.0.0", "nodemailer": "^4.4.0", "outline-icons": "^1.18.0", "oy-vey": "^0.10.0", "pg": "^6.1.5", "pg-hstore": "2.3.2", "polished": "3.6.4", "query-string": "^4.3.4", "randomstring": "1.1.5", "raw-loader": "^0.5.1", "react": "^16.8.6", "react-autosize-textarea": "^6.0.0", "react-avatar-editor": "^10.3.0", "react-color": "^2.17.3", "react-dom": "^16.8.6", "react-dropzone": "4.2.1", "react-helmet": "^5.2.0", "react-keydown": "^1.7.3", "react-modal": "^3.1.2", "react-portal": "^4.0.0", "react-router-dom": "^5.1.2", "react-waypoint": "^9.0.2", "rich-markdown-editor": "^10.2.1", "semver": "^7.3.2", "sequelize": "^5.21.1", "sequelize-cli": "^5.5.0", "sequelize-encrypted": "^0.1.0", "slate": "0.45.0", "slate-md-serializer": "5.5.4", "slug": "^1.0.0", "socket.io": "^2.2.0", "socket.io-redis": "^5.2.0", "socketio-auth": "^0.1.1", "string-replace-to-array": "^1.0.3", "styled-components": "^5.0.0", "styled-components-breakpoint": "^2.1.1", "styled-normalize": "^8.0.4", "tiny-cookie": "^2.3.1", "tmp": "0.0.33", "uglifyjs-webpack-plugin": "1.2.5", "url-loader": "^0.6.2", "uuid": "2.0.2", "validator": "5.2.0", "webpack": "3.10.0", "webpack-manifest-plugin": "^1.3.2" }, "devDependencies": { "babel-eslint": "^9.0.0", "babel-jest": "^22.0.0", "eslint": "^5.12.1", "eslint-config-react-app": "^3.0.6", "eslint-plugin-flowtype": "^2.40.1", "eslint-plugin-import": "^2.14.0", "eslint-plugin-jsx-a11y": "^6.1.2", "eslint-plugin-prettier": "^2.4.0", "eslint-plugin-react": "^7.12.4", "fetch-test-server": "^1.1.0", "flow-bin": "^0.86.0", "identity-obj-proxy": "^3.0.0", "jest-cli": "^22.0.0", "koa-webpack-dev-middleware": "^1.4.5", "koa-webpack-hot-middleware": "^1.0.3", "mobx-react-devtools": "^6.0.3", "nodemon": "^1.19.4", "prettier": "1.8.2", "rimraf": "^2.5.4" }, "resolutions": { "micromatch": "^3.1.10", "js-yaml": "^3.13.1" }, "version": "0.44.0" }