{ "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 server", "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", "test:watch": "jest --config=server/.jestconfig.json --runInBand --forceExit --watchAll", "precommit": "lint-staged" }, "lint-staged": { "*.js": [ "eslint --fix", "git add" ] }, "jest": { "verbose": false, "roots": [ "app", "shared" ], "moduleNameMapper": { "^shared/(.*)$": "/shared/$1", "^.*[.](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": "8.11" }, "repository": { "type": "git", "url": "git+ssh://git@github.com/outline/outline.git" }, "dependencies": { "@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", "bugsnag": "^1.7.0", "bull": "^3.5.2", "cancan": "3.1.0", "copy-to-clipboard": "^3.0.6", "css-loader": "^0.28.7", "date-fns": "1.29.0", "debug": "2.6.9", "dotenv": "^4.0.0", "emoji-regex": "^6.5.1", "exports-loader": "^0.6.4", "extract-text-webpack-plugin": "^3.0.2", "file-loader": "^1.1.6", "flow-typed": "^2.4.0", "fs-extra": "^4.0.2", "google-auth-library": "^1.5.0", "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.2.0", "js-search": "^1.4.2", "json-loader": "0.5.4", "jsonwebtoken": "7.0.1", "jszip": "3.1.5", "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-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.4", "mobx": "4.6.0", "mobx-react": "^5.4.2", "natural-sort": "^1.0.0", "node-dev": "3.1.0", "nodemailer": "^4.4.0", "normalize.css": "^7.0.0", "normalizr": "2.0.1", "outline-icons": "^1.6.0", "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.6.0", "react-avatar-editor": "^10.3.0", "react-dom": "^16.6.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", "rich-markdown-editor": "^8.0.2", "safestart": "1.1.0", "sequelize": "4.28.6", "sequelize-cli": "^2.7.0", "sequelize-encrypted": "0.1.0", "slug": "0.9.1", "string-hash": "^1.1.0", "string-replace-to-array": "^1.0.3", "style-loader": "^0.18.2", "styled-components": "^4.1.3", "styled-components-breakpoint": "^1.0.1", "styled-components-grid": "^2.2.0", "styled-normalize": "^2.2.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": "^8.1.2", "babel-jest": "22", "enzyme": "2.8.2", "enzyme-to-json": "^1.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", "fetch-test-server": "^1.1.0", "flow-bin": "0.86.0", "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", "mobx-react-devtools": "^6.0.3", "nodemon": "1.11.0", "prettier": "1.8.2", "raf": "^3.4.0", "react-test-renderer": "^16.1.0", "rimraf": "^2.5.4" }, "version": "0.17.0" }