diff --git a/packages/casl-knex/LICENSE b/packages/casl-knex/LICENSE new file mode 100644 index 000000000..fafc6be4a --- /dev/null +++ b/packages/casl-knex/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2017-present Sergii Stotskyi + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/packages/casl-knex/README.md b/packages/casl-knex/README.md new file mode 100644 index 000000000..09f19a7d4 --- /dev/null +++ b/packages/casl-knex/README.md @@ -0,0 +1,33 @@ +# [CASL Knex](https://stalniy.github.io/casl/) [![@casl/knex NPM version](https://badge.fury.io/js/%40casl%2Fknex.svg)](https://badge.fury.io/js/%40casl%2Fknex) [![](https://img.shields.io/npm/dm/%40casl%2Fknex.svg)](https://www.npmjs.com/package/%40casl%2Fknex) [![CASL Join the chat](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/stalniy-casl/casl) + +This package integrates [CASL] and [RDBMS] using [knex]. In other words, it allows to fetch records based on CASL rules from SQL databases and answer questions like: "Which records can be read?" or "Which records can be updated?". + +## Installation + +```sh +npm install @casl/knex @casl/ability +# or +yarn add @casl/knex @casl/ability +# or +pnpm add @casl/knex @casl/ability +``` + +## TODO + + +## Want to help? + +Want to file a bug, contribute some code, or improve documentation? Excellent! Read up on guidelines for [contributing]. + +If you'd like to help us sustain our community and project, consider [to become a financial contributor on Open Collective](https://opencollective.com/casljs/contribute) + +> See [Support CASL](../../support) for details + +## License + +[MIT License](http://www.opensource.org/licenses/MIT) + +[contributing]: https://github.com/stalniy/casl/blob/master/CONTRIBUTING.md +[knex]: http://knexjs.org/ +[CASL]: https://github.com/stalniy/casl +[RDBMS]: https://en.wikipedia.org/wiki/Relational_database diff --git a/packages/casl-knex/package.json b/packages/casl-knex/package.json new file mode 100644 index 000000000..a58232e73 --- /dev/null +++ b/packages/casl-knex/package.json @@ -0,0 +1,76 @@ +{ + "name": "@casl/knex", + "version": "0.0.1", + "description": "Allows to query accessible records from SQL databases based on CASL rules", + "main": "index.js", + "es2015": "dist/es6/index.js", + "typings": "./index.d.ts", + "repository": { + "type": "git", + "url": "https://github.com/stalniy/casl.git" + }, + "publishConfig": { + "access": "public" + }, + "homepage": "https://stalniy.github.io/casl/", + "scripts": { + "prebuild": "npm run build.types", + "build": "BUILD_TYPES=es6,umd:cjs rollup -c ../../rollup.config.js -e @casl/ability/extra,@casl/ability,knex", + "build.types": "rm -rf dist/types/* && tsc", + "lint": "eslint --ext .ts,.js src/ spec/", + "test": "NODE_ENV=test jest --config ../../tools/jest.config.js --env node", + "prerelease": "npm run lint && npm test && NODE_ENV=production npm run build", + "release": "semantic-release -e ../../tools/semantic-release" + }, + "keywords": [ + "access control", + "authorization", + "acl", + "security", + "permissions", + "rdbms", + "sql", + "postgres", + "mysql" + ], + "author": "Sergii Stotskyi ", + "license": "MIT", + "engines": { + "npm": "^6.0.0" + }, + "peerDependencies": { + "@casl/ability": "^2.0.0 || ^3.0.0 || ^4.0.0", + "knex": "~0.21.1" + }, + "devDependencies": { + "@babel/core": "^7.8.4", + "@babel/plugin-proposal-class-properties": "^7.8.3", + "@babel/plugin-proposal-object-rest-spread": "^7.10.0", + "@babel/plugin-transform-typescript": "^7.10.0", + "@babel/preset-env": "^7.8.4", + "@casl/ability": "^4.0.0", + "@rollup/plugin-babel": "^5.0.2", + "@rollup/plugin-node-resolve": "^8.0.0", + "@semantic-release/changelog": "^3.0.0", + "@semantic-release/git": "^7.0.0", + "@typescript-eslint/eslint-plugin": "2.24.0", + "babel-jest": "^26.0.0", + "chai": "^4.1.0", + "chai-spies": "^1.0.0", + "eslint": "^7.1.0", + "eslint-config-airbnb-base": "^14.1.0", + "eslint-config-airbnb-typescript": "^7.2.1", + "eslint-plugin-import": "^2.20.2", + "jest": "^26.0.0", + "knex": "~0.21.1", + "rollup": "^2.10.9", + "rollup-plugin-terser": "^6.1.0", + "semantic-release": "15.9.17", + "typescript": "~3.8.0" + }, + "files": [ + "dist", + "*.d.ts", + "index.js" + ] +} diff --git a/packages/casl-knex/spec/rulesToKnexQuery.spec.js b/packages/casl-knex/spec/rulesToKnexQuery.spec.js new file mode 100644 index 000000000..3774e5224 --- /dev/null +++ b/packages/casl-knex/spec/rulesToKnexQuery.spec.js @@ -0,0 +1,5 @@ +describe('rulesToKnexQuery', () => { + it('returns knex query builder', () => { + expect(true).to.be.true + }) +}) diff --git a/packages/casl-knex/src/index.ts b/packages/casl-knex/src/index.ts new file mode 100644 index 000000000..04b2ce5f5 --- /dev/null +++ b/packages/casl-knex/src/index.ts @@ -0,0 +1 @@ +export * from './rulesToKnexQuery'; diff --git a/packages/casl-knex/src/rulesToKnexQuery.ts b/packages/casl-knex/src/rulesToKnexQuery.ts new file mode 100644 index 000000000..c2a21456b --- /dev/null +++ b/packages/casl-knex/src/rulesToKnexQuery.ts @@ -0,0 +1,9 @@ +import { AnyAbility, Subject } from '@casl/ability'; + +interface RulesToKnexOptions { + isRelation(field: string, subject: Subject, ability: AnyAbility): boolean +} + +export function rulesToKnexQuery(ability: AnyAbility, action: string, subject: Subject, options: RulesToKnexOptions) { + // TODO +} diff --git a/packages/casl-knex/tsconfig.json b/packages/casl-knex/tsconfig.json new file mode 100644 index 000000000..0f9336593 --- /dev/null +++ b/packages/casl-knex/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig", + "include": [ + "src/*", + "spec/*" + ], + "compilerOptions": { + "outDir": "dist/types" + } +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fc7ff3731..9a5f21b58 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -222,6 +222,57 @@ importers: rollup-plugin-terser: ^6.1.0 semantic-release: 15.9.17 typescript: ~3.8.0 + packages/casl-knex: + devDependencies: + '@babel/core': 7.10.0 + '@babel/plugin-proposal-class-properties': 7.8.3_@babel+core@7.10.0 + '@babel/plugin-proposal-object-rest-spread': 7.10.0_@babel+core@7.10.0 + '@babel/plugin-transform-typescript': 7.10.0_@babel+core@7.10.0 + '@babel/preset-env': 7.10.0_@babel+core@7.10.0 + '@casl/ability': 'link:../casl-ability' + '@rollup/plugin-babel': 5.0.2_@babel+core@7.10.0+rollup@2.10.9 + '@rollup/plugin-node-resolve': 8.0.0_rollup@2.10.9 + '@semantic-release/changelog': 3.0.6_semantic-release@15.9.17 + '@semantic-release/git': 7.0.18_semantic-release@15.9.17 + '@typescript-eslint/eslint-plugin': 2.24.0_eslint@7.1.0+typescript@3.8.3 + babel-jest: 26.0.1_@babel+core@7.10.0 + chai: 4.2.0 + chai-spies: 1.0.0_chai@4.2.0 + eslint: 7.1.0 + eslint-config-airbnb-base: 14.1.0_08af6a5679f9829f08655eff60eb76b6 + eslint-config-airbnb-typescript: 7.2.1_c220a311e52ad6c45f9d5a74c61c40b6 + eslint-plugin-import: 2.20.2_eslint@7.1.0 + jest: 26.0.1 + knex: 0.21.1 + rollup: 2.10.9 + rollup-plugin-terser: 6.1.0_rollup@2.10.9 + semantic-release: 15.9.17_semantic-release@15.9.17 + typescript: 3.8.3 + specifiers: + '@babel/core': ^7.8.4 + '@babel/plugin-proposal-class-properties': ^7.8.3 + '@babel/plugin-proposal-object-rest-spread': ^7.10.0 + '@babel/plugin-transform-typescript': ^7.10.0 + '@babel/preset-env': ^7.8.4 + '@casl/ability': ^4.0.0 + '@rollup/plugin-babel': ^5.0.2 + '@rollup/plugin-node-resolve': ^8.0.0 + '@semantic-release/changelog': ^3.0.0 + '@semantic-release/git': ^7.0.0 + '@typescript-eslint/eslint-plugin': 2.24.0 + babel-jest: ^26.0.0 + chai: ^4.1.0 + chai-spies: ^1.0.0 + eslint: ^7.1.0 + eslint-config-airbnb-base: ^14.1.0 + eslint-config-airbnb-typescript: ^7.2.1 + eslint-plugin-import: ^2.20.2 + jest: ^26.0.0 + knex: ~0.21.1 + rollup: ^2.10.9 + rollup-plugin-terser: ^6.1.0 + semantic-release: 15.9.17 + typescript: ~3.8.0 packages/casl-mongoose: devDependencies: '@babel/core': 7.10.0 @@ -2442,6 +2493,12 @@ packages: node: '>=0.10.0' resolution: integrity: sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= + /array-each/1.0.1: + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-p5SvDAWrF1KEbudTofIRoFugxE8= /array-ify/1.0.0: dev: true resolution: @@ -2456,6 +2513,12 @@ packages: node: '>= 0.4' resolution: integrity: sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ== + /array-slice/1.1.0: + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w== /array-union/2.1.0: dev: true engines: @@ -2875,7 +2938,7 @@ packages: /bl/2.2.0: dependencies: readable-stream: 2.3.7 - safe-buffer: 5.1.2 + safe-buffer: 5.2.1 dev: true resolution: integrity: sha512-wbgvOpqopSr7uq6fJrLH8EsvYMJf9gzfo2jCsL2eTy75qXPukA4pCgHamOQkZtY5vmfVtjB+P3LNlMHW5CEZXA== @@ -3273,6 +3336,10 @@ packages: dev: true resolution: integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + /colorette/1.1.0: + dev: true + resolution: + integrity: sha512-6S062WDQUXi6hOfkO/sBPVwE5ASXY4G2+b4atvhJfSsuUUhIaUKlkjLe9692Ipyt5/a+IPF5aVTu3V5gvXq5cg== /colors/1.0.3: dev: true engines: @@ -3650,6 +3717,12 @@ packages: dev: true resolution: integrity: sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ== + /detect-file/1.0.0: + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc= /detect-newline/3.1.0: dev: true engines: @@ -3991,6 +4064,12 @@ packages: hasBin: true resolution: integrity: sha512-DfS3b8iHMK5z/YLSme8K5cge168I8j8o1uiVmFCgnnjxZQbCGyraF8bMl7Ju4yfBmCuxD7shOF7eqGkcuIHfsA== + /esm/3.2.25: + dev: true + engines: + node: '>=6' + resolution: + integrity: sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA== /espree/7.0.0: dependencies: acorn: 7.2.0 @@ -4117,6 +4196,14 @@ packages: node: '>=0.10.0' resolution: integrity: sha1-t3c14xXOMPa27/D4OwQVGiJEliI= + /expand-tilde/2.0.2: + dependencies: + homedir-polyfill: 1.0.3 + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-l+gBqgUt8CRU3kawK/YhZCzchQI= /expect/26.0.1: dependencies: '@jest/types': 26.0.1 @@ -4304,6 +4391,35 @@ packages: node: '>=6' resolution: integrity: sha512-P8WRou2S+oe222TOCHitLy8zj+SIsVJh52VP4lvXkaFVnOFFdoWv1H1Jjvel1aI6NCFOAaeAVm8qrI0odiLcww== + /findup-sync/3.0.0: + dependencies: + detect-file: 1.0.0 + is-glob: 4.0.1 + micromatch: 3.1.10 + resolve-dir: 1.0.1 + dev: true + engines: + node: '>= 0.10' + resolution: + integrity: sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg== + /fined/1.2.0: + dependencies: + expand-tilde: 2.0.2 + is-plain-object: 2.0.4 + object.defaults: 1.1.0 + object.pick: 1.3.0 + parse-filepath: 1.0.2 + dev: true + engines: + node: '>= 0.10' + resolution: + integrity: sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng== + /flagged-respawn/1.0.1: + dev: true + engines: + node: '>= 0.10' + resolution: + integrity: sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q== /flat-cache/2.0.1: dependencies: flatted: 2.0.2 @@ -4324,6 +4440,14 @@ packages: node: '>=0.10.0' resolution: integrity: sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= + /for-own/1.0.0: + dependencies: + for-in: 1.0.2 + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs= /forever-agent/0.6.1: dev: true resolution: @@ -4444,6 +4568,10 @@ packages: node: '>=0.10.0' resolution: integrity: sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= + /getopts/2.2.5: + dev: true + resolution: + integrity: sha512-9jb7AW5p3in+IiJWhQiZmmwkpLaR/ccTWdWQCtZM66HJcHHLegowh4q4tSD7gouUyeNvFWRavfK9GXosQHDpFA== /getpass/0.1.7: dependencies: assert-plus: 1.0.0 @@ -4493,6 +4621,28 @@ packages: dev: true resolution: integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + /global-modules/1.0.0: + dependencies: + global-prefix: 1.0.2 + is-windows: 1.0.2 + resolve-dir: 1.0.1 + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg== + /global-prefix/1.0.2: + dependencies: + expand-tilde: 2.0.2 + homedir-polyfill: 1.0.3 + ini: 1.3.5 + is-windows: 1.0.2 + which: 1.3.1 + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-2/dDxsFJklk8ZVVoy2btMsASLr4= /globals/11.12.0: dev: true engines: @@ -4638,6 +4788,14 @@ packages: hasBin: true resolution: integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + /homedir-polyfill/1.0.3: + dependencies: + parse-passwd: 1.0.0 + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== /hook-std/1.2.0: dev: true engines: @@ -4839,6 +4997,12 @@ packages: node: '>=6.0.0' resolution: integrity: sha512-5fJMWEmikSYu0nv/flMc475MhGbB7TSPd/2IpFV4I4rMklboCH2rQjYY5kKiYGHqUF9gvaambupcJFFG9dvReg== + /interpret/2.2.0: + dev: true + engines: + node: '>= 0.10' + resolution: + integrity: sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== /into-stream/5.1.1: dependencies: from2: 2.3.0 @@ -4866,6 +5030,15 @@ packages: node: '>=4' resolution: integrity: sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= + /is-absolute/1.0.0: + dependencies: + is-relative: 1.0.0 + is-windows: 1.0.2 + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA== /is-accessor-descriptor/0.1.6: dependencies: kind-of: 3.2.2 @@ -5084,6 +5257,14 @@ packages: node: '>=0.10.0' resolution: integrity: sha1-/S2INUXEa6xaYz57mgnof6LLUGk= + /is-relative/1.0.0: + dependencies: + is-unc-path: 1.0.0 + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA== /is-ssh/1.3.1: dependencies: protocols: 1.4.7 @@ -5128,6 +5309,14 @@ packages: dev: true resolution: integrity: sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= + /is-unc-path/1.0.0: + dependencies: + unc-path-regex: 0.1.2 + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ== /is-whitespace/0.3.0: dev: true engines: @@ -5828,6 +6017,46 @@ packages: node: '>=6' resolution: integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + /knex/0.21.1: + dependencies: + colorette: 1.1.0 + commander: 5.1.0 + debug: 4.1.1 + esm: 3.2.25 + getopts: 2.2.5 + inherits: 2.0.4 + interpret: 2.2.0 + liftoff: 3.1.0 + lodash: 4.17.15 + mkdirp: 1.0.4 + pg-connection-string: 2.2.0 + tarn: 3.0.0 + tildify: 2.0.0 + uuid: 7.0.3 + v8flags: 3.2.0 + dev: true + engines: + node: '>=10' + hasBin: true + peerDependencies: + mssql: ^6.2.0 + mysql: ^2.18.1 + mysql2: ^2.1.0 + pg: ^8.0.3 + sqlite3: ^4.1.1 + peerDependenciesMeta: + mssql: + optional: true + mysql: + optional: true + mysql2: + optional: true + pg: + optional: true + sqlite3: + optional: true + resolution: + integrity: sha512-uWszXC2DPaLn/YznGT9wFTWUG9+kqbL4DMz+hCH789GLcLuYzq8werHPDKBJxtKvxrW/S1XIXgrTWdMypiVvsw== /lcid/2.0.0: dependencies: invert-kv: 2.0.0 @@ -5868,6 +6097,21 @@ packages: node: '>= 0.8.0' resolution: integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + /liftoff/3.1.0: + dependencies: + extend: 3.0.2 + findup-sync: 3.0.0 + fined: 1.2.0 + flagged-respawn: 1.0.1 + is-plain-object: 2.0.4 + object.map: 1.0.1 + rechoir: 0.6.2 + resolve: 1.17.0 + dev: true + engines: + node: '>= 0.8' + resolution: + integrity: sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog== /lines-and-columns/1.1.6: dev: true resolution: @@ -6062,6 +6306,14 @@ packages: node: '>=8' resolution: integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + /make-iterator/1.0.1: + dependencies: + kind-of: 6.0.3 + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw== /makeerror/1.0.11: dependencies: tmpl: 1.0.4 @@ -6285,7 +6537,7 @@ packages: bson: 1.1.4 denque: 1.4.1 require_optional: 1.0.1 - safe-buffer: 5.1.2 + safe-buffer: 5.2.1 dev: true engines: node: '>=4' @@ -6677,6 +6929,17 @@ packages: node: '>= 0.4' resolution: integrity: sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== + /object.defaults/1.1.0: + dependencies: + array-each: 1.0.1 + array-slice: 1.1.0 + for-own: 1.0.0 + isobject: 3.0.1 + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8= /object.entries/1.1.2: dependencies: define-properties: 1.1.3 @@ -6687,6 +6950,15 @@ packages: node: '>= 0.4' resolution: integrity: sha512-BQdB9qKmb/HyNdMNWVr7O3+z5MUIx3aiegEIJqjMBbBf0YT9RRxTJSim4mzFqtyr7PDAHigq0N9dO0m0tRakQA== + /object.map/1.0.1: + dependencies: + for-own: 1.0.0 + make-iterator: 1.0.1 + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-z4Plncj8wK1fQlDh94s7gb2AHTc= /object.pick/1.3.0: dependencies: isobject: 3.0.1 @@ -6940,6 +7212,16 @@ packages: node: '>=6' resolution: integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + /parse-filepath/1.0.2: + dependencies: + is-absolute: 1.0.0 + map-cache: 0.2.2 + path-root: 0.1.1 + dev: true + engines: + node: '>=0.8' + resolution: + integrity: sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE= /parse-json/2.2.0: dependencies: error-ex: 1.3.2 @@ -6968,6 +7250,12 @@ packages: node: '>=8' resolution: integrity: sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw== + /parse-passwd/1.0.0: + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= /parse-path/3.0.4: dependencies: is-ssh: 1.3.1 @@ -7028,6 +7316,20 @@ packages: dev: true resolution: integrity: sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== + /path-root-regex/0.1.2: + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0= + /path-root/0.1.1: + dependencies: + path-root-regex: 0.1.2 + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc= /path-type/2.0.0: dependencies: pify: 2.3.0 @@ -7058,6 +7360,10 @@ packages: dev: true resolution: integrity: sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= + /pg-connection-string/2.2.0: + dev: true + resolution: + integrity: sha512-xB/+wxcpFipUZOQcSzcgkjcNOosGhEoPSjz06jC89lv1dj7mc9bZv6wLVy8M2fVjP0a/xN0N988YDq1L0FhK3A== /picomatch/2.2.2: dev: true engines: @@ -7383,6 +7689,14 @@ packages: node: '>=8.10.0' resolution: integrity: sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ== + /rechoir/0.6.2: + dependencies: + resolve: 1.17.0 + dev: true + engines: + node: '>= 0.10' + resolution: + integrity: sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q= /redent/3.0.0: dependencies: indent-string: 4.0.0 @@ -7573,6 +7887,15 @@ packages: node: '>=8' resolution: integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== + /resolve-dir/1.0.1: + dependencies: + expand-tilde: 2.0.2 + global-modules: 1.0.0 + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-eaQGRMNivoLybv/nOcm7U4IEb0M= /resolve-from/2.0.0: dev: true engines: @@ -8396,6 +8719,12 @@ packages: node: '>=6.0.0' resolution: integrity: sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== + /tarn/3.0.0: + dev: true + engines: + node: '>=8.0.0' + resolution: + integrity: sha512-PKUnlDFODZueoA8owLehl8vLcgtA8u4dRuVbZc92tspDYZixjJL6TqYOmryf/PfP/EBX+2rgNcrj96NO+RPkdQ== /teeny-request/6.0.1: dependencies: http-proxy-agent: 4.0.1 @@ -8483,6 +8812,12 @@ packages: dev: true resolution: integrity: sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww== + /tildify/2.0.0: + dev: true + engines: + node: '>=8' + resolution: + integrity: sha512-Cc+OraorugtXNfs50hU9KS369rFXCfgGLpfCfvlc+Ud5u6VWmUQsOAa9HbTvheQdYnrdJqqv1e5oIqXppMYnSw== /tmp/0.0.33: dependencies: os-tmpdir: 1.0.2 @@ -8684,6 +9019,12 @@ packages: optional: true resolution: integrity: sha512-r5ImcL6QyzQGVimQoov3aL2ZScywrOgBXGndbWrdehKoSvGe/RmiE5Jpw/v+GvxODt6l2tpBXwA7n+qZVlHBMA== + /unc-path-regex/0.1.2: + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-5z3T17DXxe2G+6xrCufYxqadUPo= /unicode-canonical-property-names-ecmascript/1.0.4: dev: true engines: @@ -8810,6 +9151,14 @@ packages: node: 8.x.x || >=10.10.0 resolution: integrity: sha512-Rw6vJHj1mbdK8edjR7+zuJrpDtKIgNdAvTSAcpYfgMIw+u2dPDntD3dgN4XQFLU2/fvFQdzj+EeSGfd/jnY5fQ== + /v8flags/3.2.0: + dependencies: + homedir-polyfill: 1.0.3 + dev: true + engines: + node: '>= 0.10' + resolution: + integrity: sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg== /validate-npm-package-license/3.0.4: dependencies: spdx-correct: 3.1.1