{ "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": "npm run lint:flow && npm run lint:js", "lint:js": "eslint app", "lint: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", "precommit": "lint-staged" }, "lint-staged": { "*.js": [ "eslint --fix", "git add" ] }, "jest": { "verbose": false, "roots": [ "app" ], "moduleNameMapper": { "^.*[.](s?css|css)$": "/__mocks__/styleMock.js", "^.*[.](gif|ttf|eot|svg)$": "/__test__/fileMock.js" }, "moduleFileExtensions": [ "js", "jsx", "json" ], "moduleDirectories": [ "node_modules" ], "modulePaths": [ "app" ], "setupFiles": [ "raf/polyfill", "/setupJest.js", "/__mocks__/window.js" ] }, "engines": { "node": ">= 7.6" }, "repository": { "type": "git", "url": "git+ssh://git@github.com/outline/outline.git" }, "dependencies": { "@tommoor/slate-drop-or-paste-images": "^0.8.1", "@tommoor/slate-edit-code": "^0.13.3", "aws-sdk": "^2.135.0", "autotrack": "^2.4.1", "babel-core": "^6.24.1", "babel-eslint": "^8.1.2", "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", "bcrypt": "1.0.3", "boundless-arrow-key-navigation": "^1.0.4", "boundless-popover": "^1.0.4", "bugsnag": "^1.7.0", "bull": "^3.3.7", "copy-to-clipboard": "^3.0.6", "css-loader": "^0.28.7", "debug": "2.2.0", "dotenv": "^4.0.0", "emoji-regex": "^6.5.1", "eslint": "^4.14.0", "eslint-config-react-app": "^2.0.1", "eslint-plugin-flowtype": "^2.40.1", "eslint-plugin-import": "^2.8.0", "eslint-plugin-jsx-a11y": "5.1.1", "eslint-plugin-prettier": "^2.4.0", "eslint-plugin-react": "^7.5.1", "exports-loader": "^0.6.4", "extract-text-webpack-plugin": "^3.0.2", "fbemitter": "^2.1.1", "file-loader": "^1.1.6", "flow-typed": "^2.1.2", "fs-extra": "^4.0.2", "history": "3.0.0", "html-webpack-plugin": "2.17.0", "http-errors": "1.4.0", "immutable": "^3.8.2", "imports-loader": "0.6.5", "invariant": "^2.2.2", "isomorphic-fetch": "2.2.1", "js-cookie": "^2.1.4", "js-search": "^1.4.2", "json-loader": "0.5.4", "jsonwebtoken": "7.0.1", "koa": "^2.2.0", "koa-bodyparser": "4.2.0", "koa-compress": "2.0.0", "koa-connect": "1.0.0", "koa-convert": "1.2.0", "koa-helmet": "3.2.0", "koa-jwt": "^3.2.1", "koa-logger": "^2.0.1", "koa-mount": "^3.0.0", "koa-router": "7.0.1", "koa-sendfile": "2.0.0", "koa-static": "^4.0.1", "localforage": "^1.5.0", "lodash": "^4.17.4", "mobx": "^3.1.9", "mobx-react": "^4.1.8", "mobx-react-devtools": "^4.2.11", "moment": "2.13.0", "node-dev": "3.1.0", "nodemailer": "^4.4.0", "normalize.css": "^7.0.0", "normalizr": "2.0.1", "oy-vey": "^0.10.0", "pg": "^6.1.5", "pg-hstore": "2.3.2", "polished": "1.2.1", "pui-react-tooltip": "^8.3.3", "query-string": "^4.3.4", "randomstring": "1.1.5", "raw-loader": "^0.5.1", "react": "^16.2.0", "react-avatar-editor": "^10.3.0", "react-dom": "^16.1.0", "react-dropzone": "4.2.1", "react-helmet": "^5.2.0", "react-keydown": "^1.7.3", "react-markdown": "^3.0.2", "react-medium-image-zoom": "^3.0.10", "react-modal": "^3.1.2", "react-portal": "^4.0.0", "react-router-dom": "^4.2.0", "react-waypoint": "^7.3.1", "redis": "^2.6.2", "redis-lock": "^0.1.0", "rimraf": "^2.5.4", "safestart": "1.1.0", "sequelize": "4.28.6", "sequelize-cli": "^2.7.0", "sequelize-encrypted": "0.1.0", "slate": "^0.31.8", "slate-collapse-on-escape": "^0.6.0", "slate-edit-list": "^0.10.2", "slate-md-serializer": "^1.0.7", "slate-paste-linkify": "^0.5.0", "slate-plain-serializer": "0.4.13", "slate-prism": "^0.4.0", "slate-react": "^0.10.19", "slate-trailing-block": "^0.4.0", "slug": "0.9.1", "string-hash": "^1.1.0", "string-replace-to-array": "^1.0.3", "style-loader": "^0.18.2", "styled-components": "^2.2.3", "styled-components-breakpoint": "^1.0.1", "styled-components-grid": "^1.0.0-preview.15", "styled-normalize": "^2.2.1", "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-jest": "22", "enzyme": "2.8.2", "enzyme-to-json": "^1.5.1", "fetch-test-server": "^1.1.0", "flow-bin": "^0.49.1", "identity-obj-proxy": "^3.0.0", "jest-cli": "22", "koa-webpack-dev-middleware": "1.4.5", "koa-webpack-hot-middleware": "1.0.3", "lint-staged": "^3.4.0", "nodemon": "1.11.0", "prettier": "1.8.2", "raf": "^3.4.0", "react-test-renderer": "^16.1.0" } }