142303b3de
* WIP - got one API test to pass yay * adds group update endpoint * added group policies * adds groups.list API * adds groups.info * remove comment * WIP * tests for delete * adds group membership list * adds tests for groups list * add and remove user endpoints for group * ask some questions * fix up some issues around primary keys * remove export from group permissions Co-Authored-By: Tom Moor <tom.moor@gmail.com> * remove random file * only create events on actual updates, add tests to ensure * adds uniqueness validation to group name * throw validation errors on model and let it pass through the controller * fix linting * WIP * WIP * WIP * WIP * WIP basic edit and delete * basic CRUD for groups and memberships in place * got member counts working * add member count and limit the number of users sent over teh wire to 6 * factor avatar with AvatarWithPresence into its own class * wip * WIP avatars in group lists * WIP collection groups * add and remove group endpoints * wip add collection groups * wip get group adding to collections to work * wip get updating collection group memberships to work * wip get new group modal working * add tests for collection index * include collection groups in the withmemberships scope * tie permissions to group memberships * remove unused import * Update app/components/GroupListItem.js update title copy Co-Authored-By: Tom Moor <tom.moor@gmail.com> * Update server/migrations/20191211044318-create-groups.js Co-Authored-By: Tom Moor <tom.moor@gmail.com> * Update server/api/groups.js Co-Authored-By: Tom Moor <tom.moor@gmail.com> * Update server/api/groups.js Co-Authored-By: Tom Moor <tom.moor@gmail.com> * Update app/menus/CollectionMenu.js Co-Authored-By: Tom Moor <tom.moor@gmail.com> * Update server/models/Group.js Co-Authored-By: Tom Moor <tom.moor@gmail.com> * minor fixes * Update app/scenes/CollectionMembers/AddGroupsToCollection.js Co-Authored-By: Tom Moor <tom.moor@gmail.com> * Update app/menus/GroupMenu.js Co-Authored-By: Tom Moor <tom.moor@gmail.com> * Update app/menus/GroupMenu.js Co-Authored-By: Tom Moor <tom.moor@gmail.com> * Update app/menus/GroupMenu.js Co-Authored-By: Tom Moor <tom.moor@gmail.com> * Update app/scenes/Collection.js Co-Authored-By: Tom Moor <tom.moor@gmail.com> * Update app/scenes/CollectionMembers/CollectionMembers.js Co-Authored-By: Tom Moor <tom.moor@gmail.com> * Update app/scenes/GroupNew.js Co-Authored-By: Tom Moor <tom.moor@gmail.com> * Update app/scenes/GroupNew.js Co-Authored-By: Tom Moor <tom.moor@gmail.com> * Update app/scenes/Settings/Groups.js Co-Authored-By: Tom Moor <tom.moor@gmail.com> * Update server/api/documents.js Co-Authored-By: Tom Moor <tom.moor@gmail.com> * Update app/scenes/CollectionMembers/components/CollectionGroupMemberListItem.js Co-Authored-By: Tom Moor <tom.moor@gmail.com> * address comments * WIP - getting websocket stuff up and running * socket event for group deletion * wrapped up cascading deletes * lint * flow * fix: UI feedback * fix: Facepile size * fix: Lots of missing await's * Allow clicking facepile on group list item to open members * remove unused route push, grammar * fix: Remove bad analytics events feat: Add group events to audit log * collection. -> collections. * Add groups to entity websocket events (sync create/update/delete) between clients * fix: Users should not be able to see groups they are not a member of * fix: Not caching errors in UI when changing group memberships * fix: Hide unusable UI * test * fix: Tweak language * feat: Automatically open 'add member' modal after creating group Co-authored-by: Tom Moor <tom.moor@gmail.com>
190 lines
5.7 KiB
JSON
190 lines
5.7 KiB
JSON
{
|
|
"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",
|
|
"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/(.*)$": "<rootDir>/shared/$1",
|
|
"^.*[.](gif|ttf|eot|svg)$": "<rootDir>/__test__/fileMock.js"
|
|
},
|
|
"moduleFileExtensions": [
|
|
"js",
|
|
"jsx",
|
|
"json"
|
|
],
|
|
"moduleDirectories": [
|
|
"node_modules"
|
|
],
|
|
"modulePaths": [
|
|
"app"
|
|
],
|
|
"setupFiles": [
|
|
"<rootDir>/setupJest.js",
|
|
"<rootDir>/__mocks__/window.js"
|
|
]
|
|
},
|
|
"engines": {
|
|
"node": ">= 12"
|
|
},
|
|
"repository": {
|
|
"type": "git",
|
|
"url": "git+ssh://git@github.com/outline/outline.git"
|
|
},
|
|
"dependencies": {
|
|
"@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",
|
|
"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.13.0",
|
|
"oy-vey": "^0.10.0",
|
|
"pg": "^6.1.5",
|
|
"pg-hstore": "2.3.2",
|
|
"polished": "1.2.1",
|
|
"query-string": "^4.3.4",
|
|
"randomstring": "1.1.5",
|
|
"raw-loader": "^0.5.1",
|
|
"react": "^16.8.6",
|
|
"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": "^9.11.1",
|
|
"sequelize": "^5.21.1",
|
|
"sequelize-cli": "^5.5.0",
|
|
"sequelize-encrypted": "^0.1.0",
|
|
"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": "^4.3.2",
|
|
"styled-components-breakpoint": "^2.1.1",
|
|
"styled-components-grid": "^2.2.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.18.0"
|
|
}
|