├── .eslintrc.yml ├── .gitignore ├── .husky ├── .gitignore └── pre-commit ├── .vscode ├── launch.json ├── settings.json └── tasks.json ├── README.md ├── nest-cli.json ├── package.json ├── pnpm-lock.yaml ├── src ├── app.module.ts ├── common │ ├── authentication.ts │ ├── config.ts │ ├── db.ts │ ├── errors.ts │ ├── loader.ts │ ├── logger.service.ts │ └── token.service.ts ├── controller │ ├── session.ts │ └── user.ts ├── entity │ └── user.ts ├── main.ts └── service │ └── user.ts └── tsconfig.json /.eslintrc.yml: -------------------------------------------------------------------------------- 1 | env: 2 | es2021: true 3 | node: true 4 | extends: 5 | - "eslint:recommended" 6 | - "plugin:@typescript-eslint/recommended" 7 | - "plugin:@typescript-eslint/recommended-requiring-type-checking" 8 | - "prettier" 9 | - "plugin:prettier/recommended" 10 | parser: "@typescript-eslint/parser" 11 | parserOptions: 12 | ecmaVersion: 12 13 | sourceType: "module" 14 | project: ["./tsconfig.json"] 15 | plugins: 16 | - "@typescript-eslint" 17 | rules: 18 | "@typescript-eslint/no-unused-vars": 19 | [warn, { "argsIgnorePattern": "^_", "varsIgnorePattern": "^_" }] 20 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ### TypeScript ### 2 | dist 3 | 4 | # Created by https://www.gitignore.io/api/node,visualstudiocode 5 | # Edit at https://www.gitignore.io/?templates=node,visualstudiocode 6 | 7 | ### Node ### 8 | # Logs 9 | logs 10 | *.log 11 | npm-debug.log* 12 | yarn-debug.log* 13 | yarn-error.log* 14 | 15 | # Runtime data 16 | pids 17 | *.pid 18 | *.seed 19 | *.pid.lock 20 | 21 | # Directory for instrumented libs generated by jscoverage/JSCover 22 | lib-cov 23 | 24 | # Coverage directory used by tools like istanbul 25 | coverage 26 | 27 | # nyc test coverage 28 | .nyc_output 29 | 30 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 31 | .grunt 32 | 33 | # Bower dependency directory (https://bower.io/) 34 | bower_components 35 | 36 | # node-waf configuration 37 | .lock-wscript 38 | 39 | # Compiled binary addons (https://nodejs.org/api/addons.html) 40 | build/Release 41 | 42 | # Dependency directories 43 | node_modules/ 44 | jspm_packages/ 45 | 46 | # TypeScript v1 declaration files 47 | typings/ 48 | 49 | # Optional npm cache directory 50 | .npm 51 | 52 | # Optional eslint cache 53 | .eslintcache 54 | 55 | # Optional REPL history 56 | .node_repl_history 57 | 58 | # Output of 'npm pack' 59 | *.tgz 60 | 61 | # Yarn Integrity file 62 | .yarn-integrity 63 | 64 | # dotenv environment variables file 65 | .env 66 | 67 | # parcel-bundler cache (https://parceljs.org/) 68 | .cache 69 | 70 | # next.js build output 71 | .next 72 | 73 | # nuxt.js build output 74 | .nuxt 75 | 76 | # vuepress build output 77 | .vuepress/dist 78 | 79 | # Serverless directories 80 | .serverless 81 | 82 | # FuseBox cache 83 | .fusebox/ 84 | 85 | ### VisualStudioCode ### 86 | .vscode/* 87 | !.vscode/settings.json 88 | !.vscode/tasks.json 89 | !.vscode/launch.json 90 | !.vscode/extensions.json 91 | 92 | ### VisualStudioCode Patch ### 93 | # Ignore all local history of files 94 | .history 95 | 96 | # End of https://www.gitignore.io/api/node,visualstudiocode 97 | -------------------------------------------------------------------------------- /.husky/.gitignore: -------------------------------------------------------------------------------- 1 | _ 2 | -------------------------------------------------------------------------------- /.husky/pre-commit: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | . "$(dirname "$0")/_/husky.sh" 3 | 4 | pnpx --no-install lint-staged 5 | -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "type": "node", 6 | "request": "launch", 7 | "name": "nodemon", 8 | "runtimeExecutable": "npx", 9 | "runtimeArgs": [ 10 | "nodemon", 11 | "-x", 12 | "node -r ts-node/register -r tsconfig-paths/register --inspect", 13 | "src/main.ts" 14 | ], 15 | // "program": "${workspaceFolder}/src/main.ts", 16 | "restart": true, 17 | "console": "integratedTerminal", 18 | "internalConsoleOptions": "neverOpen", 19 | "port": 9229 20 | }, 21 | { 22 | "type": "node", 23 | "request": "launch", 24 | "name": "Launch", 25 | "runtimeExecutable": "yarn", 26 | "runtimeArgs": ["run", "start:debug"], 27 | "port": 9229, 28 | "restart": true 29 | } 30 | ] 31 | } 32 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "editor.tabSize": 2, 3 | "editor.insertSpaces": true, 4 | "files.exclude": { 5 | "**/.git": true, 6 | "**/.DS_Store": true, 7 | "dist": true, 8 | "client/dist": true, 9 | "client/.cache": true, 10 | "logs": true, 11 | ".nyc_output": true, 12 | "coverage": true, 13 | "html-report": true, 14 | "node_modules": true, 15 | "client/node_modules": true 16 | }, 17 | "search.exclude": { 18 | "**/node_modules": true, 19 | "**/bower_components": true, 20 | "**/*.js": { 21 | "when": "$(basename).ts" 22 | }, 23 | "**/*.jsx": { 24 | "when": "$(basename).ts" 25 | } 26 | }, 27 | "typescript.tsdk": "node_modules/typescript/lib", 28 | "tslint.exclude": "${workspaceRoot}/node_modules/*", 29 | "tslint.autoFixOnSave": true, 30 | "tslint.configFile": "tslint.json", 31 | "tslint.alwaysShowRuleFailuresAsWarnings": true, 32 | "git.ignoreLimitWarning": true 33 | } 34 | -------------------------------------------------------------------------------- /.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | { 2 | // See https://go.microsoft.com/fwlink/?LinkId=733558 3 | // for the documentation about the tasks.json format 4 | "version": "2.0.0", 5 | "tasks": [ 6 | { 7 | "type": "typescript", 8 | "tsconfig": "tsconfig.json", 9 | "problemMatcher": ["$tsc"], 10 | "group": { 11 | "kind": "build", 12 | "isDefault": true 13 | } 14 | }, 15 | { 16 | "type": "typescript", 17 | "tsconfig": "tsconfig.json", 18 | "option": "watch", 19 | "problemMatcher": ["$tsc-watch"], 20 | "group": { 21 | "kind": "build", 22 | "isDefault": true 23 | } 24 | }, 25 | { 26 | "type": "npm", 27 | "script": "start:dev", 28 | "problemMatcher": [] 29 | }, 30 | { 31 | "type": "npm", 32 | "script": "start:debug", 33 | "problemMatcher": [] 34 | } 35 | ] 36 | } 37 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # nestjs-skeleton 2 | 3 | [![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fcoderfox%2Fnestjs-skeleton.svg?type=shield)](https://app.fossa.io/projects/git%2Bgithub.com%2Fcoderfox%2Fnestjs-skeleton?ref=badge_shield) 4 | 5 | ## Usage 6 | 7 | | period | command | description | 8 | | ----------- | -------------------- | ----------------------------------------------------- | 9 | | development | `pnpm start:dev` | start server with auto reloading | 10 | | development | `pnpm start` | start server without auto reloading | 11 | | development | `pnpm start:debug` | start server with auto reloading and debugging | 12 | | development | `pnpm format` | format source codes | 13 | | development | `pnpm lint` | run eslint | 14 | | development | `pnpm test` | run tests | 15 | | development | `pnpm test:watch` | run tests with auto reloading | 16 | | deploy | `pnpm compile` | compile executable source of plain node | 17 | | deploy | `pnpm clean-compile` | cleanup, then compile executable source of plain node | 18 | | deploy | `pnpm clean` | cleanup compiled dists | 19 | | production | `pnpm start:prod` | start server | 20 | 21 | Note the following points: 22 | 23 | - The source codes are automatically formatted and linted before commit using [husky](https://github.com/typicode/husky). 24 | - By default, development requires `pnpm`. 25 | - `pnpm start:prod` will not automatically compile the sources. 26 | - Controllers in `/src/controller` and services in `/src/service` will be automatically loaded. As a consequence, those files cannot contain non-relevant function exports. 27 | 28 | ## Development pipeline 29 | 30 | ### Service 31 | 32 | - create/find relevant services in `/src/service` 33 | - add service to `/src/app.module.ts` 34 | 35 | ### Controller 36 | 37 | - create/modify relevant controller in `/src/controller` 38 | - add controller to `src/app.module.ts` 39 | 40 | ### Error 41 | 42 | - create exception in `/src/common/errors.ts` 43 | 44 | ### Entity 45 | 46 | - create entity in `/src/entity` 47 | - generate migration with `pnpm db migration:generate --name ` 48 | 49 | ### Config 50 | 51 | - change `IEnvironment` in `/src/common/config.ts` 52 | - define schema according to compile errors 53 | 54 | ## Default features 55 | 56 | - [nest.js](https://nestjs.com) 57 | - [TypeScript](https://www.typescriptlang.org) 58 | - [TypeORM](https://typeorm.io) database ORM with PostgreSQL database 59 | - [jsonwebtoken]() json web token 60 | - [pino](https://github.com/pinojs/pino) logger 61 | - [envalid](https://github.com/af/envalid) environment configuration loading 62 | - [Visual Studio Code](https://code.visualstudio.com) integration 63 | - [husky](https://github.com/typicode/husky) git hooks 64 | 65 | ## To-Dos 66 | 67 | - [ ] unit & integration tests 68 | - [ ] Docker support 69 | - [ ] controller & service generation 70 | 71 | ## License 72 | 73 | [![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fcoderfox%2Fnestjs-skeleton.svg?type=large)](https://app.fossa.io/projects/git%2Bgithub.com%2Fcoderfox%2Fnestjs-skeleton?ref=badge_large) 74 | -------------------------------------------------------------------------------- /nest-cli.json: -------------------------------------------------------------------------------- 1 | { 2 | "language": "ts", 3 | "collection": "@nestjs/schematics", 4 | "sourceRoot": "src" 5 | } 6 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "club-board", 3 | "version": "0.1.0", 4 | "description": "modern club member manager", 5 | "author": "Yuze Fu", 6 | "license": "MIT", 7 | "scripts": { 8 | "format": "prettier --write \"src/**/*.ts\"", 9 | "start": "ts-node src/main.ts", 10 | "start:dev": "tsnd src/main", 11 | "start:debug": "tsnd --inspect=5858 src/main", 12 | "start:prod": "node dist/main.js", 13 | "lint": "eslint src/* --ext .js,.ts", 14 | "test": "ava", 15 | "test:watch": "ava --watch", 16 | "predb": "tsc && tspath --preserve -f", 17 | "clean": "rm -rf dist", 18 | "compile": "tsc && tspath --preserve -f", 19 | "clean-compile": "rm -rf dist && tsc && tspath --preserve -f", 20 | "prepare": "husky install" 21 | }, 22 | "dependencies": { 23 | "@nestjs/common": "^7.6.18", 24 | "@nestjs/core": "^7.6.18", 25 | "@nestjs/platform-express": "^7.6.18", 26 | "@nestjs/typeorm": "^7.1.5", 27 | "envalid": "^7.1.0", 28 | "globby": "^11.0.4", 29 | "jsonwebtoken": "^8.5.1", 30 | "mysql": "^2.17.1", 31 | "pg": "^8.6.0", 32 | "pino": "^6.11.3", 33 | "reflect-metadata": "^0.1.13", 34 | "rxjs": "^6.0.0", 35 | "tslib": "^2.3.0", 36 | "typeorm": "^0.2.21", 37 | "typescript": "^4.3.4" 38 | }, 39 | "devDependencies": { 40 | "@nestjs/testing": "^7.6.18", 41 | "@types/express": "^4.17.2", 42 | "@types/jsonwebtoken": "^8.3.5", 43 | "@types/node": "^15.12.4", 44 | "@types/pino": "^6.3.8", 45 | "@types/supertest": "^2.0.8", 46 | "@typescript-eslint/eslint-plugin": "^4.28.0", 47 | "@typescript-eslint/parser": "^4.28.0", 48 | "ava": "3.15.0", 49 | "eslint": "^7.29.0", 50 | "eslint-config-prettier": "^8.3.0", 51 | "eslint-plugin-prettier": "^3.1.1", 52 | "husky": "^6.0.0", 53 | "lint-staged": "^11.0.0", 54 | "nyc": "^15.1.0", 55 | "pino-pretty": "^5.1.0", 56 | "prettier": "^2.3.2", 57 | "supertest": "^6.1.3", 58 | "ts-node": "10.0.0", 59 | "ts-node-dev": "^1.0.0-pre.44" 60 | }, 61 | "nodemonConfig": { 62 | "ext": "ts,hbs" 63 | }, 64 | "lint-staged": { 65 | "src/*.{js,json,css,md,ts}": [ 66 | "prettier --write", 67 | "eslint" 68 | ] 69 | }, 70 | "prettier": { 71 | "trailingComma": "all" 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: 5.3 2 | 3 | specifiers: 4 | '@nestjs/common': ^7.6.18 5 | '@nestjs/core': ^7.6.18 6 | '@nestjs/platform-express': ^7.6.18 7 | '@nestjs/testing': ^7.6.18 8 | '@nestjs/typeorm': ^7.1.5 9 | '@types/express': ^4.17.2 10 | '@types/jsonwebtoken': ^8.3.5 11 | '@types/node': ^15.12.4 12 | '@types/pino': ^6.3.8 13 | '@types/supertest': ^2.0.8 14 | '@typescript-eslint/eslint-plugin': ^4.28.0 15 | '@typescript-eslint/parser': ^4.28.0 16 | ava: 3.15.0 17 | envalid: ^7.1.0 18 | eslint: ^7.29.0 19 | eslint-config-prettier: ^8.3.0 20 | eslint-plugin-prettier: ^3.1.1 21 | globby: ^11.0.4 22 | husky: ^6.0.0 23 | jsonwebtoken: ^8.5.1 24 | lint-staged: ^11.0.0 25 | mysql: ^2.17.1 26 | nyc: ^15.1.0 27 | pg: ^8.6.0 28 | pino: ^6.11.3 29 | pino-pretty: ^5.1.0 30 | prettier: ^2.3.2 31 | reflect-metadata: ^0.1.13 32 | rxjs: ^6.0.0 33 | supertest: ^6.1.3 34 | ts-node: 10.0.0 35 | ts-node-dev: ^1.0.0-pre.44 36 | tslib: ^2.3.0 37 | typeorm: ^0.2.21 38 | typescript: ^4.3.4 39 | 40 | dependencies: 41 | '@nestjs/common': 7.6.18_8e6d4b7501d9d25f42cbf34563d4f5bc 42 | '@nestjs/core': 7.6.18_cf22c14faf7a8288645a80ae61717d6f 43 | '@nestjs/platform-express': 7.6.18_2664420588e0901c7943acb4693cbaf4 44 | '@nestjs/typeorm': 7.1.5_770ecc3e0a72b32465b4dc73ad110208 45 | envalid: 7.1.0 46 | globby: 11.0.4 47 | jsonwebtoken: 8.5.1 48 | mysql: 2.18.1 49 | pg: 8.6.0 50 | pino: 6.11.3 51 | reflect-metadata: 0.1.13 52 | rxjs: 6.6.7 53 | tslib: 2.3.0 54 | typeorm: 0.2.34 55 | typescript: 4.3.4 56 | 57 | devDependencies: 58 | '@nestjs/testing': 7.6.18_9cd0f963ae6f35bf288217e4f1c45cb4 59 | '@types/express': 4.17.12 60 | '@types/jsonwebtoken': 8.5.2 61 | '@types/node': 15.12.4 62 | '@types/pino': 6.3.8 63 | '@types/supertest': 2.0.11 64 | '@typescript-eslint/eslint-plugin': 4.28.0_4ec1e0eca7c6e4115e1e7a13008fdec2 65 | '@typescript-eslint/parser': 4.28.0_eslint@7.29.0+typescript@4.3.4 66 | ava: 3.15.0 67 | eslint: 7.29.0 68 | eslint-config-prettier: 8.3.0_eslint@7.29.0 69 | eslint-plugin-prettier: 3.4.0_4e72879372edbffcbdaf0fa17b22c203 70 | husky: 6.0.0 71 | lint-staged: 11.0.0 72 | nyc: 15.1.0 73 | pino-pretty: 5.1.0 74 | prettier: 2.3.2 75 | supertest: 6.1.3 76 | ts-node: 10.0.0_83f53b0a0c5616d3fa00ed4e30b9ce1b 77 | ts-node-dev: 1.1.6_typescript@4.3.4 78 | 79 | packages: 80 | 81 | /@babel/code-frame/7.12.11: 82 | resolution: {integrity: sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==} 83 | dependencies: 84 | '@babel/highlight': 7.14.5 85 | dev: true 86 | 87 | /@babel/code-frame/7.14.5: 88 | resolution: {integrity: sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==} 89 | engines: {node: '>=6.9.0'} 90 | dependencies: 91 | '@babel/highlight': 7.14.5 92 | dev: true 93 | 94 | /@babel/compat-data/7.14.7: 95 | resolution: {integrity: sha512-nS6dZaISCXJ3+518CWiBfEr//gHyMO02uDxBkXTKZDN5POruCnOZ1N4YBRZDCabwF8nZMWBpRxIicmXtBs+fvw==} 96 | engines: {node: '>=6.9.0'} 97 | dev: true 98 | 99 | /@babel/core/7.14.6: 100 | resolution: {integrity: sha512-gJnOEWSqTk96qG5BoIrl5bVtc23DCycmIePPYnamY9RboYdI4nFy5vAQMSl81O5K/W0sLDWfGysnOECC+KUUCA==} 101 | engines: {node: '>=6.9.0'} 102 | dependencies: 103 | '@babel/code-frame': 7.14.5 104 | '@babel/generator': 7.14.5 105 | '@babel/helper-compilation-targets': 7.14.5_@babel+core@7.14.6 106 | '@babel/helper-module-transforms': 7.14.5 107 | '@babel/helpers': 7.14.6 108 | '@babel/parser': 7.14.7 109 | '@babel/template': 7.14.5 110 | '@babel/traverse': 7.14.7 111 | '@babel/types': 7.14.5 112 | convert-source-map: 1.8.0 113 | debug: 4.3.1 114 | gensync: 1.0.0-beta.2 115 | json5: 2.2.0 116 | semver: 6.3.0 117 | source-map: 0.5.7 118 | transitivePeerDependencies: 119 | - supports-color 120 | dev: true 121 | 122 | /@babel/generator/7.14.5: 123 | resolution: {integrity: sha512-y3rlP+/G25OIX3mYKKIOlQRcqj7YgrvHxOLbVmyLJ9bPmi5ttvUmpydVjcFjZphOktWuA7ovbx91ECloWTfjIA==} 124 | engines: {node: '>=6.9.0'} 125 | dependencies: 126 | '@babel/types': 7.14.5 127 | jsesc: 2.5.2 128 | source-map: 0.5.7 129 | dev: true 130 | 131 | /@babel/helper-compilation-targets/7.14.5_@babel+core@7.14.6: 132 | resolution: {integrity: sha512-v+QtZqXEiOnpO6EYvlImB6zCD2Lel06RzOPzmkz/D/XgQiUu3C/Jb1LOqSt/AIA34TYi/Q+KlT8vTQrgdxkbLw==} 133 | engines: {node: '>=6.9.0'} 134 | peerDependencies: 135 | '@babel/core': ^7.0.0 136 | dependencies: 137 | '@babel/compat-data': 7.14.7 138 | '@babel/core': 7.14.6 139 | '@babel/helper-validator-option': 7.14.5 140 | browserslist: 4.16.6 141 | semver: 6.3.0 142 | dev: true 143 | 144 | /@babel/helper-function-name/7.14.5: 145 | resolution: {integrity: sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==} 146 | engines: {node: '>=6.9.0'} 147 | dependencies: 148 | '@babel/helper-get-function-arity': 7.14.5 149 | '@babel/template': 7.14.5 150 | '@babel/types': 7.14.5 151 | dev: true 152 | 153 | /@babel/helper-get-function-arity/7.14.5: 154 | resolution: {integrity: sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==} 155 | engines: {node: '>=6.9.0'} 156 | dependencies: 157 | '@babel/types': 7.14.5 158 | dev: true 159 | 160 | /@babel/helper-hoist-variables/7.14.5: 161 | resolution: {integrity: sha512-R1PXiz31Uc0Vxy4OEOm07x0oSjKAdPPCh3tPivn/Eo8cvz6gveAeuyUUPB21Hoiif0uoPQSSdhIPS3352nvdyQ==} 162 | engines: {node: '>=6.9.0'} 163 | dependencies: 164 | '@babel/types': 7.14.5 165 | dev: true 166 | 167 | /@babel/helper-member-expression-to-functions/7.14.7: 168 | resolution: {integrity: sha512-TMUt4xKxJn6ccjcOW7c4hlwyJArizskAhoSTOCkA0uZ+KghIaci0Qg9R043kUMWI9mtQfgny+NQ5QATnZ+paaA==} 169 | engines: {node: '>=6.9.0'} 170 | dependencies: 171 | '@babel/types': 7.14.5 172 | dev: true 173 | 174 | /@babel/helper-module-imports/7.14.5: 175 | resolution: {integrity: sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ==} 176 | engines: {node: '>=6.9.0'} 177 | dependencies: 178 | '@babel/types': 7.14.5 179 | dev: true 180 | 181 | /@babel/helper-module-transforms/7.14.5: 182 | resolution: {integrity: sha512-iXpX4KW8LVODuAieD7MzhNjmM6dzYY5tfRqT+R9HDXWl0jPn/djKmA+G9s/2C2T9zggw5tK1QNqZ70USfedOwA==} 183 | engines: {node: '>=6.9.0'} 184 | dependencies: 185 | '@babel/helper-module-imports': 7.14.5 186 | '@babel/helper-replace-supers': 7.14.5 187 | '@babel/helper-simple-access': 7.14.5 188 | '@babel/helper-split-export-declaration': 7.14.5 189 | '@babel/helper-validator-identifier': 7.14.5 190 | '@babel/template': 7.14.5 191 | '@babel/traverse': 7.14.7 192 | '@babel/types': 7.14.5 193 | transitivePeerDependencies: 194 | - supports-color 195 | dev: true 196 | 197 | /@babel/helper-optimise-call-expression/7.14.5: 198 | resolution: {integrity: sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA==} 199 | engines: {node: '>=6.9.0'} 200 | dependencies: 201 | '@babel/types': 7.14.5 202 | dev: true 203 | 204 | /@babel/helper-replace-supers/7.14.5: 205 | resolution: {integrity: sha512-3i1Qe9/8x/hCHINujn+iuHy+mMRLoc77b2nI9TB0zjH1hvn9qGlXjWlggdwUcju36PkPCy/lpM7LLUdcTyH4Ow==} 206 | engines: {node: '>=6.9.0'} 207 | dependencies: 208 | '@babel/helper-member-expression-to-functions': 7.14.7 209 | '@babel/helper-optimise-call-expression': 7.14.5 210 | '@babel/traverse': 7.14.7 211 | '@babel/types': 7.14.5 212 | transitivePeerDependencies: 213 | - supports-color 214 | dev: true 215 | 216 | /@babel/helper-simple-access/7.14.5: 217 | resolution: {integrity: sha512-nfBN9xvmCt6nrMZjfhkl7i0oTV3yxR4/FztsbOASyTvVcoYd0TRHh7eMLdlEcCqobydC0LAF3LtC92Iwxo0wyw==} 218 | engines: {node: '>=6.9.0'} 219 | dependencies: 220 | '@babel/types': 7.14.5 221 | dev: true 222 | 223 | /@babel/helper-split-export-declaration/7.14.5: 224 | resolution: {integrity: sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==} 225 | engines: {node: '>=6.9.0'} 226 | dependencies: 227 | '@babel/types': 7.14.5 228 | dev: true 229 | 230 | /@babel/helper-validator-identifier/7.14.5: 231 | resolution: {integrity: sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg==} 232 | engines: {node: '>=6.9.0'} 233 | dev: true 234 | 235 | /@babel/helper-validator-option/7.14.5: 236 | resolution: {integrity: sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==} 237 | engines: {node: '>=6.9.0'} 238 | dev: true 239 | 240 | /@babel/helpers/7.14.6: 241 | resolution: {integrity: sha512-yesp1ENQBiLI+iYHSJdoZKUtRpfTlL1grDIX9NRlAVppljLw/4tTyYupIB7uIYmC3stW/imAv8EqaKaS/ibmeA==} 242 | engines: {node: '>=6.9.0'} 243 | dependencies: 244 | '@babel/template': 7.14.5 245 | '@babel/traverse': 7.14.7 246 | '@babel/types': 7.14.5 247 | transitivePeerDependencies: 248 | - supports-color 249 | dev: true 250 | 251 | /@babel/highlight/7.14.5: 252 | resolution: {integrity: sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==} 253 | engines: {node: '>=6.9.0'} 254 | dependencies: 255 | '@babel/helper-validator-identifier': 7.14.5 256 | chalk: 2.4.2 257 | js-tokens: 4.0.0 258 | dev: true 259 | 260 | /@babel/parser/7.14.7: 261 | resolution: {integrity: sha512-X67Z5y+VBJuHB/RjwECp8kSl5uYi0BvRbNeWqkaJCVh+LiTPl19WBUfG627psSgp9rSf6ojuXghQM3ha6qHHdA==} 262 | engines: {node: '>=6.0.0'} 263 | hasBin: true 264 | dev: true 265 | 266 | /@babel/template/7.14.5: 267 | resolution: {integrity: sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==} 268 | engines: {node: '>=6.9.0'} 269 | dependencies: 270 | '@babel/code-frame': 7.14.5 271 | '@babel/parser': 7.14.7 272 | '@babel/types': 7.14.5 273 | dev: true 274 | 275 | /@babel/traverse/7.14.7: 276 | resolution: {integrity: sha512-9vDr5NzHu27wgwejuKL7kIOm4bwEtaPQ4Z6cpCmjSuaRqpH/7xc4qcGEscwMqlkwgcXl6MvqoAjZkQ24uSdIZQ==} 277 | engines: {node: '>=6.9.0'} 278 | dependencies: 279 | '@babel/code-frame': 7.14.5 280 | '@babel/generator': 7.14.5 281 | '@babel/helper-function-name': 7.14.5 282 | '@babel/helper-hoist-variables': 7.14.5 283 | '@babel/helper-split-export-declaration': 7.14.5 284 | '@babel/parser': 7.14.7 285 | '@babel/types': 7.14.5 286 | debug: 4.3.1 287 | globals: 11.12.0 288 | transitivePeerDependencies: 289 | - supports-color 290 | dev: true 291 | 292 | /@babel/types/7.14.5: 293 | resolution: {integrity: sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==} 294 | engines: {node: '>=6.9.0'} 295 | dependencies: 296 | '@babel/helper-validator-identifier': 7.14.5 297 | to-fast-properties: 2.0.0 298 | dev: true 299 | 300 | /@concordance/react/2.0.0: 301 | resolution: {integrity: sha512-huLSkUuM2/P+U0uy2WwlKuixMsTODD8p4JVQBI4VKeopkiN0C7M3N9XYVawb4M+4spN5RrO/eLhk7KoQX6nsfA==} 302 | engines: {node: '>=6.12.3 <7 || >=8.9.4 <9 || >=10.0.0'} 303 | dependencies: 304 | arrify: 1.0.1 305 | dev: true 306 | 307 | /@eslint/eslintrc/0.4.2: 308 | resolution: {integrity: sha512-8nmGq/4ycLpIwzvhI4tNDmQztZ8sp+hI7cyG8i1nQDhkAbRzHpXPidRAHlNvCZQpJTKw5ItIpMw9RSToGF00mg==} 309 | engines: {node: ^10.12.0 || >=12.0.0} 310 | dependencies: 311 | ajv: 6.12.6 312 | debug: 4.3.1 313 | espree: 7.3.1 314 | globals: 13.9.0 315 | ignore: 4.0.6 316 | import-fresh: 3.3.0 317 | js-yaml: 3.14.1 318 | minimatch: 3.0.4 319 | strip-json-comments: 3.1.1 320 | transitivePeerDependencies: 321 | - supports-color 322 | dev: true 323 | 324 | /@hapi/bourne/2.0.0: 325 | resolution: {integrity: sha512-WEezM1FWztfbzqIUbsDzFRVMxSoLy3HugVcux6KDDtTqzPsLE8NDRHfXvev66aH1i2oOKKar3/XDjbvh/OUBdg==} 326 | dev: true 327 | 328 | /@istanbuljs/load-nyc-config/1.1.0: 329 | resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} 330 | engines: {node: '>=8'} 331 | dependencies: 332 | camelcase: 5.3.1 333 | find-up: 4.1.0 334 | get-package-type: 0.1.0 335 | js-yaml: 3.14.1 336 | resolve-from: 5.0.0 337 | dev: true 338 | 339 | /@istanbuljs/schema/0.1.3: 340 | resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} 341 | engines: {node: '>=8'} 342 | dev: true 343 | 344 | /@nestjs/common/7.6.18_8e6d4b7501d9d25f42cbf34563d4f5bc: 345 | resolution: {integrity: sha512-BUJQHNhWzwWOkS4Ryndzd4HTeRObcAWV2Fh+ermyo3q3xYQQzNoEWclJVL/wZec8AONELwIJ+PSpWI53VP0leg==} 346 | peerDependencies: 347 | cache-manager: '*' 348 | class-transformer: '*' 349 | class-validator: '*' 350 | reflect-metadata: ^0.1.12 351 | rxjs: ^6.0.0 352 | peerDependenciesMeta: 353 | cache-manager: 354 | optional: true 355 | class-transformer: 356 | optional: true 357 | class-validator: 358 | optional: true 359 | dependencies: 360 | axios: 0.21.1 361 | iterare: 1.2.1 362 | reflect-metadata: 0.1.13 363 | rxjs: 6.6.7 364 | tslib: 2.2.0 365 | uuid: 8.3.2 366 | transitivePeerDependencies: 367 | - debug 368 | dev: false 369 | 370 | /@nestjs/core/7.6.18_cf22c14faf7a8288645a80ae61717d6f: 371 | resolution: {integrity: sha512-CGu20OjIxgFDY7RJT5t1TDGL8wSlTSlbZEkn8U5OlICZEB3WIpi98G7ajJpnRWmEgW8S4aDJmRKGjT+Ntj5U4A==} 372 | requiresBuild: true 373 | peerDependencies: 374 | '@nestjs/common': ^7.0.0 375 | '@nestjs/microservices': ^7.0.0 376 | '@nestjs/platform-express': ^7.0.0 377 | '@nestjs/websockets': ^7.0.0 378 | reflect-metadata: ^0.1.12 379 | rxjs: ^6.0.0 380 | peerDependenciesMeta: 381 | '@nestjs/microservices': 382 | optional: true 383 | '@nestjs/platform-express': 384 | optional: true 385 | '@nestjs/websockets': 386 | optional: true 387 | dependencies: 388 | '@nestjs/common': 7.6.18_8e6d4b7501d9d25f42cbf34563d4f5bc 389 | '@nestjs/platform-express': 7.6.18_2664420588e0901c7943acb4693cbaf4 390 | '@nuxtjs/opencollective': 0.3.2 391 | fast-safe-stringify: 2.0.7 392 | iterare: 1.2.1 393 | object-hash: 2.1.1 394 | path-to-regexp: 3.2.0 395 | reflect-metadata: 0.1.13 396 | rxjs: 6.6.7 397 | tslib: 2.2.0 398 | uuid: 8.3.2 399 | dev: false 400 | 401 | /@nestjs/platform-express/7.6.18_2664420588e0901c7943acb4693cbaf4: 402 | resolution: {integrity: sha512-Dty2bBhsW7EInMRPS1pkXKJ3GBBusEj6fnEpb0UfkaT3E7asay9c64kCmZE+8hU430qQjY+fhBb1RNWWPnUiwQ==} 403 | peerDependencies: 404 | '@nestjs/common': ^7.0.0 405 | '@nestjs/core': ^7.0.0 406 | dependencies: 407 | '@nestjs/common': 7.6.18_8e6d4b7501d9d25f42cbf34563d4f5bc 408 | '@nestjs/core': 7.6.18_cf22c14faf7a8288645a80ae61717d6f 409 | body-parser: 1.19.0 410 | cors: 2.8.5 411 | express: 4.17.1 412 | multer: 1.4.2 413 | tslib: 2.2.0 414 | dev: false 415 | 416 | /@nestjs/testing/7.6.18_9cd0f963ae6f35bf288217e4f1c45cb4: 417 | resolution: {integrity: sha512-1AVk9vWZlPpx4CmzY6z9z0DHFgGCadfr01QdisGFAN740JwKqZWEqz12cVd+nsXDlYQPFRkp2ICBIS/6k1qZGQ==} 418 | peerDependencies: 419 | '@nestjs/common': ^7.0.0 420 | '@nestjs/core': ^7.0.0 421 | '@nestjs/microservices': ^7.0.0 422 | '@nestjs/platform-express': ^7.0.0 423 | peerDependenciesMeta: 424 | '@nestjs/microservices': 425 | optional: true 426 | '@nestjs/platform-express': 427 | optional: true 428 | dependencies: 429 | optional: 0.1.4 430 | '@nestjs/common': 7.6.18_8e6d4b7501d9d25f42cbf34563d4f5bc 431 | '@nestjs/core': 7.6.18_cf22c14faf7a8288645a80ae61717d6f 432 | '@nestjs/platform-express': 7.6.18_2664420588e0901c7943acb4693cbaf4 433 | tslib: 2.2.0 434 | dev: true 435 | 436 | /@nestjs/typeorm/7.1.5_770ecc3e0a72b32465b4dc73ad110208: 437 | resolution: {integrity: sha512-utE1FkYM/gyCXUqw3zKYYS0YZ3DfkAnzsCx4T48cNnSDTCeWS+u3yt0FMDFjwSiQSaLrzpiSff/FaxJQvRlYow==} 438 | peerDependencies: 439 | '@nestjs/common': ^6.7.0 || ^7.0.0 440 | '@nestjs/core': ^6.7.0 || ^7.0.0 441 | reflect-metadata: ^0.1.12 442 | rxjs: ^6.0.0 443 | typeorm: ^0.2.7 444 | dependencies: 445 | '@nestjs/common': 7.6.18_8e6d4b7501d9d25f42cbf34563d4f5bc 446 | '@nestjs/core': 7.6.18_cf22c14faf7a8288645a80ae61717d6f 447 | reflect-metadata: 0.1.13 448 | rxjs: 6.6.7 449 | typeorm: 0.2.34 450 | uuid: 8.3.1 451 | dev: false 452 | 453 | /@nodelib/fs.scandir/2.1.5: 454 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 455 | engines: {node: '>= 8'} 456 | dependencies: 457 | '@nodelib/fs.stat': 2.0.5 458 | run-parallel: 1.2.0 459 | 460 | /@nodelib/fs.stat/2.0.5: 461 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 462 | engines: {node: '>= 8'} 463 | 464 | /@nodelib/fs.walk/1.2.7: 465 | resolution: {integrity: sha512-BTIhocbPBSrRmHxOAJFtR18oLhxTtAFDAvL8hY1S3iU8k+E60W/YFs4jrixGzQjMpF4qPXxIQHcjVD9dz1C2QA==} 466 | engines: {node: '>= 8'} 467 | dependencies: 468 | '@nodelib/fs.scandir': 2.1.5 469 | fastq: 1.11.0 470 | 471 | /@nuxtjs/opencollective/0.3.2: 472 | resolution: {integrity: sha512-um0xL3fO7Mf4fDxcqx9KryrB7zgRM5JSlvGN5AGkP6JLM5XEKyjeAiPbNxdXVXQ16isuAhYpvP88NgL2BGd6aA==} 473 | engines: {node: '>=8.0.0', npm: '>=5.0.0'} 474 | hasBin: true 475 | dependencies: 476 | chalk: 4.1.1 477 | consola: 2.15.3 478 | node-fetch: 2.6.1 479 | dev: false 480 | 481 | /@sindresorhus/is/0.14.0: 482 | resolution: {integrity: sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==} 483 | engines: {node: '>=6'} 484 | dev: true 485 | 486 | /@sqltools/formatter/1.2.3: 487 | resolution: {integrity: sha512-O3uyB/JbkAEMZaP3YqyHH7TMnex7tWyCbCI4EfJdOCoN6HIhqdJBWTM6aCCiWQ/5f5wxjgU735QAIpJbjDvmzg==} 488 | dev: false 489 | 490 | /@szmarczak/http-timer/1.1.2: 491 | resolution: {integrity: sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==} 492 | engines: {node: '>=6'} 493 | dependencies: 494 | defer-to-connect: 1.1.3 495 | dev: true 496 | 497 | /@tsconfig/node10/1.0.8: 498 | resolution: {integrity: sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==} 499 | dev: true 500 | 501 | /@tsconfig/node12/1.0.9: 502 | resolution: {integrity: sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==} 503 | dev: true 504 | 505 | /@tsconfig/node14/1.0.1: 506 | resolution: {integrity: sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==} 507 | dev: true 508 | 509 | /@tsconfig/node16/1.0.1: 510 | resolution: {integrity: sha512-FTgBI767POY/lKNDNbIzgAX6miIDBs6NTCbdlDb8TrWovHsSvaVIZDlTqym29C6UqhzwcJx4CYr+AlrMywA0cA==} 511 | dev: true 512 | 513 | /@types/body-parser/1.19.0: 514 | resolution: {integrity: sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ==} 515 | dependencies: 516 | '@types/connect': 3.4.34 517 | '@types/node': 12.20.15 518 | dev: true 519 | 520 | /@types/connect/3.4.34: 521 | resolution: {integrity: sha512-ePPA/JuI+X0vb+gSWlPKOY0NdNAie/rPUqX2GUPpbZwiKTkSPhjXWuee47E4MtE54QVzGCQMQkAL6JhV2E1+cQ==} 522 | dependencies: 523 | '@types/node': 12.20.15 524 | dev: true 525 | 526 | /@types/cookiejar/2.1.2: 527 | resolution: {integrity: sha512-t73xJJrvdTjXrn4jLS9VSGRbz0nUY3cl2DMGDU48lKl+HR9dbbjW2A9r3g40VA++mQpy6uuHg33gy7du2BKpog==} 528 | dev: true 529 | 530 | /@types/express-serve-static-core/4.17.21: 531 | resolution: {integrity: sha512-gwCiEZqW6f7EoR8TTEfalyEhb1zA5jQJnRngr97+3pzMaO1RKoI1w2bw07TK72renMUVWcWS5mLI6rk1NqN0nA==} 532 | dependencies: 533 | '@types/node': 12.20.15 534 | '@types/qs': 6.9.6 535 | '@types/range-parser': 1.2.3 536 | dev: true 537 | 538 | /@types/express/4.17.12: 539 | resolution: {integrity: sha512-pTYas6FrP15B1Oa0bkN5tQMNqOcVXa9j4FTFtO8DWI9kppKib+6NJtfTOOLcwxuuYvcX2+dVG6et1SxW/Kc17Q==} 540 | dependencies: 541 | '@types/body-parser': 1.19.0 542 | '@types/express-serve-static-core': 4.17.21 543 | '@types/qs': 6.9.6 544 | '@types/serve-static': 1.13.9 545 | dev: true 546 | 547 | /@types/json-schema/7.0.7: 548 | resolution: {integrity: sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==} 549 | dev: true 550 | 551 | /@types/jsonwebtoken/8.5.2: 552 | resolution: {integrity: sha512-X8BOCkp+WJVNYCYIBugREtVZa4Y09Or9HDx6xqRZem5F8jJV8FuJgNessXyMuv9+U8pjnvdezASwU28uw+1scw==} 553 | dependencies: 554 | '@types/node': 12.20.15 555 | dev: true 556 | 557 | /@types/mime/1.3.2: 558 | resolution: {integrity: sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==} 559 | dev: true 560 | 561 | /@types/node/12.20.15: 562 | resolution: {integrity: sha512-F6S4Chv4JicJmyrwlDkxUdGNSplsQdGwp1A0AJloEVDirWdZOAiRHhovDlsFkKUrquUXhz1imJhXHsf59auyAg==} 563 | dev: true 564 | 565 | /@types/node/15.12.4: 566 | resolution: {integrity: sha512-zrNj1+yqYF4WskCMOHwN+w9iuD12+dGm0rQ35HLl9/Ouuq52cEtd0CH9qMgrdNmi5ejC1/V7vKEXYubB+65DkA==} 567 | dev: true 568 | 569 | /@types/normalize-package-data/2.4.0: 570 | resolution: {integrity: sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==} 571 | dev: true 572 | 573 | /@types/parse-json/4.0.0: 574 | resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==} 575 | dev: true 576 | 577 | /@types/pino-pretty/4.7.0: 578 | resolution: {integrity: sha512-fIZ+VXf9gJoJR4tiiM7G+j/bZkPoZEfFGzA4d8tAWCTpTVyvVaBwnmdLs3wEXYpMjw8eXulrOzNCjmGHT3FgHw==} 579 | dependencies: 580 | '@types/pino': 6.3.8 581 | dev: true 582 | 583 | /@types/pino-std-serializers/2.4.1: 584 | resolution: {integrity: sha512-17XcksO47M24IVTVKPeAByWUd3Oez7EbIjXpSbzMPhXVzgjGtrOa49gKBwxH9hb8dKv58OelsWQ+A1G1l9S3wQ==} 585 | dependencies: 586 | '@types/node': 15.12.4 587 | dev: true 588 | 589 | /@types/pino/6.3.8: 590 | resolution: {integrity: sha512-E47CmRy1FNMaCN8r0d8ECQOjXen9O0p6GGsUjLfmawlxRKosZ82WP1oWVKj+ikTkMDHxWzN5BuKmplo44ynrIg==} 591 | dependencies: 592 | '@types/node': 15.12.4 593 | '@types/pino-pretty': 4.7.0 594 | '@types/pino-std-serializers': 2.4.1 595 | '@types/sonic-boom': 0.7.0 596 | dev: true 597 | 598 | /@types/qs/6.9.6: 599 | resolution: {integrity: sha512-0/HnwIfW4ki2D8L8c9GVcG5I72s9jP5GSLVF0VIXDW00kmIpA6O33G7a8n59Tmh7Nz0WUC3rSb7PTY/sdW2JzA==} 600 | dev: true 601 | 602 | /@types/range-parser/1.2.3: 603 | resolution: {integrity: sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==} 604 | dev: true 605 | 606 | /@types/serve-static/1.13.9: 607 | resolution: {integrity: sha512-ZFqF6qa48XsPdjXV5Gsz0Zqmux2PerNd3a/ktL45mHpa19cuMi/cL8tcxdAx497yRh+QtYPuofjT9oWw9P7nkA==} 608 | dependencies: 609 | '@types/mime': 1.3.2 610 | '@types/node': 12.20.15 611 | dev: true 612 | 613 | /@types/sonic-boom/0.7.0: 614 | resolution: {integrity: sha512-AfqR0fZMoUXUNwusgXKxcE9DPlHNDHQp6nKYUd4PSRpLobF5CCevSpyTEBcVZreqaWKCnGBr9KI1fHMTttoB7A==} 615 | dependencies: 616 | '@types/node': 15.12.4 617 | dev: true 618 | 619 | /@types/strip-bom/3.0.0: 620 | resolution: {integrity: sha1-FKjsOVbC6B7bdSB5CuzyHCkK69I=} 621 | dev: true 622 | 623 | /@types/strip-json-comments/0.0.30: 624 | resolution: {integrity: sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ==} 625 | dev: true 626 | 627 | /@types/superagent/4.1.11: 628 | resolution: {integrity: sha512-cZkWBXZI+jESnUTp8RDGBmk1Zn2MkScP4V5bjD7DyqB7L0WNWpblh4KX5K/6aTqxFZMhfo1bhi2cwoAEDVBBJw==} 629 | dependencies: 630 | '@types/cookiejar': 2.1.2 631 | '@types/node': 12.20.15 632 | dev: true 633 | 634 | /@types/supertest/2.0.11: 635 | resolution: {integrity: sha512-uci4Esokrw9qGb9bvhhSVEjd6rkny/dk5PK/Qz4yxKiyppEI+dOPlNrZBahE3i+PoKFYyDxChVXZ/ysS/nrm1Q==} 636 | dependencies: 637 | '@types/superagent': 4.1.11 638 | dev: true 639 | 640 | /@types/zen-observable/0.8.2: 641 | resolution: {integrity: sha512-HrCIVMLjE1MOozVoD86622S7aunluLb2PJdPfb3nYiEtohm8mIB/vyv0Fd37AdeMFrTUQXEunw78YloMA3Qilg==} 642 | dev: false 643 | 644 | /@typescript-eslint/eslint-plugin/4.28.0_4ec1e0eca7c6e4115e1e7a13008fdec2: 645 | resolution: {integrity: sha512-KcF6p3zWhf1f8xO84tuBailV5cN92vhS+VT7UJsPzGBm9VnQqfI9AsiMUFUCYHTYPg1uCCo+HyiDnpDuvkAMfQ==} 646 | engines: {node: ^10.12.0 || >=12.0.0} 647 | peerDependencies: 648 | '@typescript-eslint/parser': ^4.0.0 649 | eslint: ^5.0.0 || ^6.0.0 || ^7.0.0 650 | typescript: '*' 651 | peerDependenciesMeta: 652 | typescript: 653 | optional: true 654 | dependencies: 655 | '@typescript-eslint/experimental-utils': 4.28.0_eslint@7.29.0+typescript@4.3.4 656 | '@typescript-eslint/parser': 4.28.0_eslint@7.29.0+typescript@4.3.4 657 | '@typescript-eslint/scope-manager': 4.28.0 658 | debug: 4.3.1 659 | eslint: 7.29.0 660 | functional-red-black-tree: 1.0.1 661 | regexpp: 3.2.0 662 | semver: 7.3.5 663 | tsutils: 3.21.0_typescript@4.3.4 664 | typescript: 4.3.4 665 | transitivePeerDependencies: 666 | - supports-color 667 | dev: true 668 | 669 | /@typescript-eslint/experimental-utils/4.28.0_eslint@7.29.0+typescript@4.3.4: 670 | resolution: {integrity: sha512-9XD9s7mt3QWMk82GoyUpc/Ji03vz4T5AYlHF9DcoFNfJ/y3UAclRsfGiE2gLfXtyC+JRA3trR7cR296TEb1oiQ==} 671 | engines: {node: ^10.12.0 || >=12.0.0} 672 | peerDependencies: 673 | eslint: '*' 674 | dependencies: 675 | '@types/json-schema': 7.0.7 676 | '@typescript-eslint/scope-manager': 4.28.0 677 | '@typescript-eslint/types': 4.28.0 678 | '@typescript-eslint/typescript-estree': 4.28.0_typescript@4.3.4 679 | eslint: 7.29.0 680 | eslint-scope: 5.1.1 681 | eslint-utils: 3.0.0_eslint@7.29.0 682 | transitivePeerDependencies: 683 | - supports-color 684 | - typescript 685 | dev: true 686 | 687 | /@typescript-eslint/parser/4.28.0_eslint@7.29.0+typescript@4.3.4: 688 | resolution: {integrity: sha512-7x4D22oPY8fDaOCvkuXtYYTQ6mTMmkivwEzS+7iml9F9VkHGbbZ3x4fHRwxAb5KeuSkLqfnYjs46tGx2Nour4A==} 689 | engines: {node: ^10.12.0 || >=12.0.0} 690 | peerDependencies: 691 | eslint: ^5.0.0 || ^6.0.0 || ^7.0.0 692 | typescript: '*' 693 | peerDependenciesMeta: 694 | typescript: 695 | optional: true 696 | dependencies: 697 | '@typescript-eslint/scope-manager': 4.28.0 698 | '@typescript-eslint/types': 4.28.0 699 | '@typescript-eslint/typescript-estree': 4.28.0_typescript@4.3.4 700 | debug: 4.3.1 701 | eslint: 7.29.0 702 | typescript: 4.3.4 703 | transitivePeerDependencies: 704 | - supports-color 705 | dev: true 706 | 707 | /@typescript-eslint/scope-manager/4.28.0: 708 | resolution: {integrity: sha512-eCALCeScs5P/EYjwo6se9bdjtrh8ByWjtHzOkC4Tia6QQWtQr3PHovxh3TdYTuFcurkYI4rmFsRFpucADIkseg==} 709 | engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} 710 | dependencies: 711 | '@typescript-eslint/types': 4.28.0 712 | '@typescript-eslint/visitor-keys': 4.28.0 713 | dev: true 714 | 715 | /@typescript-eslint/types/4.28.0: 716 | resolution: {integrity: sha512-p16xMNKKoiJCVZY5PW/AfILw2xe1LfruTcfAKBj3a+wgNYP5I9ZEKNDOItoRt53p4EiPV6iRSICy8EPanG9ZVA==} 717 | engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} 718 | dev: true 719 | 720 | /@typescript-eslint/typescript-estree/4.28.0_typescript@4.3.4: 721 | resolution: {integrity: sha512-m19UQTRtxMzKAm8QxfKpvh6OwQSXaW1CdZPoCaQuLwAq7VZMNuhJmZR4g5281s2ECt658sldnJfdpSZZaxUGMQ==} 722 | engines: {node: ^10.12.0 || >=12.0.0} 723 | peerDependencies: 724 | typescript: '*' 725 | peerDependenciesMeta: 726 | typescript: 727 | optional: true 728 | dependencies: 729 | '@typescript-eslint/types': 4.28.0 730 | '@typescript-eslint/visitor-keys': 4.28.0 731 | debug: 4.3.1 732 | globby: 11.0.4 733 | is-glob: 4.0.1 734 | semver: 7.3.5 735 | tsutils: 3.21.0_typescript@4.3.4 736 | typescript: 4.3.4 737 | transitivePeerDependencies: 738 | - supports-color 739 | dev: true 740 | 741 | /@typescript-eslint/visitor-keys/4.28.0: 742 | resolution: {integrity: sha512-PjJyTWwrlrvM5jazxYF5ZPs/nl0kHDZMVbuIcbpawVXaDPelp3+S9zpOz5RmVUfS/fD5l5+ZXNKnWhNYjPzCvw==} 743 | engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} 744 | dependencies: 745 | '@typescript-eslint/types': 4.28.0 746 | eslint-visitor-keys: 2.1.0 747 | dev: true 748 | 749 | /accepts/1.3.7: 750 | resolution: {integrity: sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==} 751 | engines: {node: '>= 0.6'} 752 | dependencies: 753 | mime-types: 2.1.31 754 | negotiator: 0.6.2 755 | dev: false 756 | 757 | /acorn-jsx/5.3.1_acorn@7.4.1: 758 | resolution: {integrity: sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==} 759 | peerDependencies: 760 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 761 | dependencies: 762 | acorn: 7.4.1 763 | dev: true 764 | 765 | /acorn-walk/8.1.0: 766 | resolution: {integrity: sha512-mjmzmv12YIG/G8JQdQuz2MUDShEJ6teYpT5bmWA4q7iwoGen8xtt3twF3OvzIUl+Q06aWIjvnwQUKvQ6TtMRjg==} 767 | engines: {node: '>=0.4.0'} 768 | dev: true 769 | 770 | /acorn/7.4.1: 771 | resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} 772 | engines: {node: '>=0.4.0'} 773 | hasBin: true 774 | dev: true 775 | 776 | /acorn/8.4.1: 777 | resolution: {integrity: sha512-asabaBSkEKosYKMITunzX177CXxQ4Q8BSSzMTKD+FefUhipQC70gfW5SiUDhYQ3vk8G+81HqQk7Fv9OXwwn9KA==} 778 | engines: {node: '>=0.4.0'} 779 | hasBin: true 780 | dev: true 781 | 782 | /aggregate-error/3.1.0: 783 | resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} 784 | engines: {node: '>=8'} 785 | dependencies: 786 | clean-stack: 2.2.0 787 | indent-string: 4.0.0 788 | dev: true 789 | 790 | /ajv/6.12.6: 791 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 792 | dependencies: 793 | fast-deep-equal: 3.1.3 794 | fast-json-stable-stringify: 2.1.0 795 | json-schema-traverse: 0.4.1 796 | uri-js: 4.4.1 797 | dev: true 798 | 799 | /ajv/8.6.0: 800 | resolution: {integrity: sha512-cnUG4NSBiM4YFBxgZIj/In3/6KX+rQ2l2YPRVcvAMQGWEPKuXoPIhxzwqh31jA3IPbI4qEOp/5ILI4ynioXsGQ==} 801 | dependencies: 802 | fast-deep-equal: 3.1.3 803 | json-schema-traverse: 1.0.0 804 | require-from-string: 2.0.2 805 | uri-js: 4.4.1 806 | dev: true 807 | 808 | /ansi-align/3.0.0: 809 | resolution: {integrity: sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw==} 810 | dependencies: 811 | string-width: 3.1.0 812 | dev: true 813 | 814 | /ansi-colors/4.1.1: 815 | resolution: {integrity: sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==} 816 | engines: {node: '>=6'} 817 | dev: true 818 | 819 | /ansi-escapes/4.3.2: 820 | resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} 821 | engines: {node: '>=8'} 822 | dependencies: 823 | type-fest: 0.21.3 824 | dev: true 825 | 826 | /ansi-regex/2.1.1: 827 | resolution: {integrity: sha1-w7M6te42DYbg5ijwRorn7yfWVN8=} 828 | engines: {node: '>=0.10.0'} 829 | dev: false 830 | 831 | /ansi-regex/4.1.0: 832 | resolution: {integrity: sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==} 833 | engines: {node: '>=6'} 834 | dev: true 835 | 836 | /ansi-regex/5.0.0: 837 | resolution: {integrity: sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==} 838 | engines: {node: '>=8'} 839 | 840 | /ansi-styles/2.2.1: 841 | resolution: {integrity: sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=} 842 | engines: {node: '>=0.10.0'} 843 | dev: false 844 | 845 | /ansi-styles/3.2.1: 846 | resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} 847 | engines: {node: '>=4'} 848 | dependencies: 849 | color-convert: 1.9.3 850 | dev: true 851 | 852 | /ansi-styles/4.3.0: 853 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 854 | engines: {node: '>=8'} 855 | dependencies: 856 | color-convert: 2.0.1 857 | 858 | /ansi-styles/5.2.0: 859 | resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} 860 | engines: {node: '>=10'} 861 | dev: true 862 | 863 | /any-promise/1.3.0: 864 | resolution: {integrity: sha1-q8av7tzqUugJzcA3au0845Y10X8=} 865 | dev: false 866 | 867 | /anymatch/3.1.2: 868 | resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==} 869 | engines: {node: '>= 8'} 870 | dependencies: 871 | normalize-path: 3.0.0 872 | picomatch: 2.3.0 873 | dev: true 874 | 875 | /app-root-path/3.0.0: 876 | resolution: {integrity: sha512-qMcx+Gy2UZynHjOHOIXPNvpf+9cjvk3cWrBBK7zg4gH9+clobJRb9NGzcT7mQTcV/6Gm/1WelUtqxVXnNlrwcw==} 877 | engines: {node: '>= 6.0.0'} 878 | dev: false 879 | 880 | /append-field/1.0.0: 881 | resolution: {integrity: sha1-HjRA6RXwsSA9I3SOeO3XubW0PlY=} 882 | dev: false 883 | 884 | /append-transform/2.0.0: 885 | resolution: {integrity: sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==} 886 | engines: {node: '>=8'} 887 | dependencies: 888 | default-require-extensions: 3.0.0 889 | dev: true 890 | 891 | /archy/1.0.0: 892 | resolution: {integrity: sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=} 893 | dev: true 894 | 895 | /arg/4.1.3: 896 | resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} 897 | dev: true 898 | 899 | /argparse/1.0.10: 900 | resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} 901 | dependencies: 902 | sprintf-js: 1.0.3 903 | dev: true 904 | 905 | /argparse/2.0.1: 906 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 907 | dev: false 908 | 909 | /args/5.0.1: 910 | resolution: {integrity: sha512-1kqmFCFsPffavQFGt8OxJdIcETti99kySRUPMpOhaGjL6mRJn8HFU1OxKY5bMqfZKUwTQc1mZkAjmGYaVOHFtQ==} 911 | engines: {node: '>= 6.0.0'} 912 | dependencies: 913 | camelcase: 5.0.0 914 | chalk: 2.4.2 915 | leven: 2.1.0 916 | mri: 1.1.4 917 | dev: true 918 | 919 | /array-find-index/1.0.2: 920 | resolution: {integrity: sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=} 921 | engines: {node: '>=0.10.0'} 922 | dev: true 923 | 924 | /array-flatten/1.1.1: 925 | resolution: {integrity: sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=} 926 | dev: false 927 | 928 | /array-union/2.1.0: 929 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} 930 | engines: {node: '>=8'} 931 | 932 | /arrgv/1.0.2: 933 | resolution: {integrity: sha512-a4eg4yhp7mmruZDQFqVMlxNRFGi/i1r87pt8SDHy0/I8PqSXoUTlWZRdAZo0VXgvEARcujbtTk8kiZRi1uDGRw==} 934 | engines: {node: '>=8.0.0'} 935 | dev: true 936 | 937 | /arrify/1.0.1: 938 | resolution: {integrity: sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=} 939 | engines: {node: '>=0.10.0'} 940 | dev: true 941 | 942 | /arrify/2.0.1: 943 | resolution: {integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==} 944 | engines: {node: '>=8'} 945 | dev: true 946 | 947 | /astral-regex/2.0.0: 948 | resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} 949 | engines: {node: '>=8'} 950 | dev: true 951 | 952 | /asynckit/0.4.0: 953 | resolution: {integrity: sha1-x57Zf380y48robyXkLzDZkdLS3k=} 954 | dev: true 955 | 956 | /atomic-sleep/1.0.0: 957 | resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} 958 | engines: {node: '>=8.0.0'} 959 | dev: false 960 | 961 | /ava/3.15.0: 962 | resolution: {integrity: sha512-HGAnk1SHPk4Sx6plFAUkzV/XC1j9+iQhOzt4vBly18/yo0AV8Oytx7mtJd/CR8igCJ5p160N/Oo/cNJi2uSeWA==} 963 | engines: {node: '>=10.18.0 <11 || >=12.14.0 <12.17.0 || >=12.17.0 <13 || >=14.0.0 <15 || >=15'} 964 | hasBin: true 965 | dependencies: 966 | '@concordance/react': 2.0.0 967 | acorn: 8.4.1 968 | acorn-walk: 8.1.0 969 | ansi-styles: 5.2.0 970 | arrgv: 1.0.2 971 | arrify: 2.0.1 972 | callsites: 3.1.0 973 | chalk: 4.1.1 974 | chokidar: 3.5.2 975 | chunkd: 2.0.1 976 | ci-info: 2.0.0 977 | ci-parallel-vars: 1.0.1 978 | clean-yaml-object: 0.1.0 979 | cli-cursor: 3.1.0 980 | cli-truncate: 2.1.0 981 | code-excerpt: 3.0.0 982 | common-path-prefix: 3.0.0 983 | concordance: 5.0.4 984 | convert-source-map: 1.8.0 985 | currently-unhandled: 0.4.1 986 | debug: 4.3.1 987 | del: 6.0.0 988 | emittery: 0.8.1 989 | equal-length: 1.0.1 990 | figures: 3.2.0 991 | globby: 11.0.4 992 | ignore-by-default: 2.0.0 993 | import-local: 3.0.2 994 | indent-string: 4.0.0 995 | is-error: 2.2.2 996 | is-plain-object: 5.0.0 997 | is-promise: 4.0.0 998 | lodash: 4.17.21 999 | matcher: 3.0.0 1000 | md5-hex: 3.0.1 1001 | mem: 8.1.1 1002 | ms: 2.1.3 1003 | ora: 5.4.1 1004 | p-event: 4.2.0 1005 | p-map: 4.0.0 1006 | picomatch: 2.3.0 1007 | pkg-conf: 3.1.0 1008 | plur: 4.0.0 1009 | pretty-ms: 7.0.1 1010 | read-pkg: 5.2.0 1011 | resolve-cwd: 3.0.0 1012 | slash: 3.0.0 1013 | source-map-support: 0.5.19 1014 | stack-utils: 2.0.3 1015 | strip-ansi: 6.0.0 1016 | supertap: 2.0.0 1017 | temp-dir: 2.0.0 1018 | trim-off-newlines: 1.0.1 1019 | update-notifier: 5.1.0 1020 | write-file-atomic: 3.0.3 1021 | yargs: 16.2.0 1022 | transitivePeerDependencies: 1023 | - supports-color 1024 | dev: true 1025 | 1026 | /axios/0.21.1: 1027 | resolution: {integrity: sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==} 1028 | dependencies: 1029 | follow-redirects: 1.14.1 1030 | transitivePeerDependencies: 1031 | - debug 1032 | dev: false 1033 | 1034 | /balanced-match/1.0.2: 1035 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 1036 | 1037 | /base64-js/1.5.1: 1038 | resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} 1039 | 1040 | /bignumber.js/9.0.0: 1041 | resolution: {integrity: sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A==} 1042 | dev: false 1043 | 1044 | /binary-extensions/2.2.0: 1045 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} 1046 | engines: {node: '>=8'} 1047 | dev: true 1048 | 1049 | /bl/4.1.0: 1050 | resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} 1051 | dependencies: 1052 | buffer: 5.7.1 1053 | inherits: 2.0.4 1054 | readable-stream: 3.6.0 1055 | dev: true 1056 | 1057 | /blueimp-md5/2.18.0: 1058 | resolution: {integrity: sha512-vE52okJvzsVWhcgUHOv+69OG3Mdg151xyn41aVQN/5W5S+S43qZhxECtYLAEHMSFWX6Mv5IZrzj3T5+JqXfj5Q==} 1059 | dev: true 1060 | 1061 | /body-parser/1.19.0: 1062 | resolution: {integrity: sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==} 1063 | engines: {node: '>= 0.8'} 1064 | dependencies: 1065 | bytes: 3.1.0 1066 | content-type: 1.0.4 1067 | debug: 2.6.9 1068 | depd: 1.1.2 1069 | http-errors: 1.7.2 1070 | iconv-lite: 0.4.24 1071 | on-finished: 2.3.0 1072 | qs: 6.7.0 1073 | raw-body: 2.4.0 1074 | type-is: 1.6.18 1075 | dev: false 1076 | 1077 | /boxen/5.0.1: 1078 | resolution: {integrity: sha512-49VBlw+PrWEF51aCmy7QIteYPIFZxSpvqBdP/2itCPPlJ49kj9zg/XPRFrdkne2W+CfwXUls8exMvu1RysZpKA==} 1079 | engines: {node: '>=10'} 1080 | dependencies: 1081 | ansi-align: 3.0.0 1082 | camelcase: 6.2.0 1083 | chalk: 4.1.1 1084 | cli-boxes: 2.2.1 1085 | string-width: 4.2.2 1086 | type-fest: 0.20.2 1087 | widest-line: 3.1.0 1088 | wrap-ansi: 7.0.0 1089 | dev: true 1090 | 1091 | /brace-expansion/1.1.11: 1092 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 1093 | dependencies: 1094 | balanced-match: 1.0.2 1095 | concat-map: 0.0.1 1096 | 1097 | /braces/3.0.2: 1098 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 1099 | engines: {node: '>=8'} 1100 | dependencies: 1101 | fill-range: 7.0.1 1102 | 1103 | /browserslist/4.16.6: 1104 | resolution: {integrity: sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==} 1105 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 1106 | hasBin: true 1107 | dependencies: 1108 | caniuse-lite: 1.0.30001240 1109 | colorette: 1.2.2 1110 | electron-to-chromium: 1.3.759 1111 | escalade: 3.1.1 1112 | node-releases: 1.1.73 1113 | dev: true 1114 | 1115 | /buffer-equal-constant-time/1.0.1: 1116 | resolution: {integrity: sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=} 1117 | dev: false 1118 | 1119 | /buffer-from/1.1.1: 1120 | resolution: {integrity: sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==} 1121 | 1122 | /buffer-writer/2.0.0: 1123 | resolution: {integrity: sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==} 1124 | engines: {node: '>=4'} 1125 | dev: false 1126 | 1127 | /buffer/5.7.1: 1128 | resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} 1129 | dependencies: 1130 | base64-js: 1.5.1 1131 | ieee754: 1.2.1 1132 | dev: true 1133 | 1134 | /buffer/6.0.3: 1135 | resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} 1136 | dependencies: 1137 | base64-js: 1.5.1 1138 | ieee754: 1.2.1 1139 | dev: false 1140 | 1141 | /busboy/0.2.14: 1142 | resolution: {integrity: sha1-bCpiLvz0fFe7vh4qnDetNseSVFM=} 1143 | engines: {node: '>=0.8.0'} 1144 | dependencies: 1145 | dicer: 0.2.5 1146 | readable-stream: 1.1.14 1147 | dev: false 1148 | 1149 | /bytes/3.1.0: 1150 | resolution: {integrity: sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==} 1151 | engines: {node: '>= 0.8'} 1152 | dev: false 1153 | 1154 | /cacheable-request/6.1.0: 1155 | resolution: {integrity: sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==} 1156 | engines: {node: '>=8'} 1157 | dependencies: 1158 | clone-response: 1.0.2 1159 | get-stream: 5.2.0 1160 | http-cache-semantics: 4.1.0 1161 | keyv: 3.1.0 1162 | lowercase-keys: 2.0.0 1163 | normalize-url: 4.5.1 1164 | responselike: 1.0.2 1165 | dev: true 1166 | 1167 | /caching-transform/4.0.0: 1168 | resolution: {integrity: sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==} 1169 | engines: {node: '>=8'} 1170 | dependencies: 1171 | hasha: 5.2.2 1172 | make-dir: 3.1.0 1173 | package-hash: 4.0.0 1174 | write-file-atomic: 3.0.3 1175 | dev: true 1176 | 1177 | /call-bind/1.0.2: 1178 | resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} 1179 | dependencies: 1180 | function-bind: 1.1.1 1181 | get-intrinsic: 1.1.1 1182 | dev: true 1183 | 1184 | /callsites/3.1.0: 1185 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 1186 | engines: {node: '>=6'} 1187 | dev: true 1188 | 1189 | /camelcase-keys/2.1.0: 1190 | resolution: {integrity: sha1-MIvur/3ygRkFHvodkyITyRuPkuc=} 1191 | engines: {node: '>=0.10.0'} 1192 | dependencies: 1193 | camelcase: 2.1.1 1194 | map-obj: 1.0.1 1195 | dev: true 1196 | 1197 | /camelcase/2.1.1: 1198 | resolution: {integrity: sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=} 1199 | engines: {node: '>=0.10.0'} 1200 | dev: true 1201 | 1202 | /camelcase/5.0.0: 1203 | resolution: {integrity: sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==} 1204 | engines: {node: '>=6'} 1205 | dev: true 1206 | 1207 | /camelcase/5.3.1: 1208 | resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} 1209 | engines: {node: '>=6'} 1210 | dev: true 1211 | 1212 | /camelcase/6.2.0: 1213 | resolution: {integrity: sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==} 1214 | engines: {node: '>=10'} 1215 | dev: true 1216 | 1217 | /caniuse-lite/1.0.30001240: 1218 | resolution: {integrity: sha512-nb8mDzfMdxBDN7ZKx8chWafAdBp5DAAlpWvNyUGe5tcDWd838zpzDN3Rah9cjCqhfOKkrvx40G2SDtP0qiWX/w==} 1219 | dev: true 1220 | 1221 | /chalk/1.1.3: 1222 | resolution: {integrity: sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=} 1223 | engines: {node: '>=0.10.0'} 1224 | dependencies: 1225 | ansi-styles: 2.2.1 1226 | escape-string-regexp: 1.0.5 1227 | has-ansi: 2.0.0 1228 | strip-ansi: 3.0.1 1229 | supports-color: 2.0.0 1230 | dev: false 1231 | 1232 | /chalk/2.4.2: 1233 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} 1234 | engines: {node: '>=4'} 1235 | dependencies: 1236 | ansi-styles: 3.2.1 1237 | escape-string-regexp: 1.0.5 1238 | supports-color: 5.5.0 1239 | dev: true 1240 | 1241 | /chalk/4.1.1: 1242 | resolution: {integrity: sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==} 1243 | engines: {node: '>=10'} 1244 | dependencies: 1245 | ansi-styles: 4.3.0 1246 | supports-color: 7.2.0 1247 | 1248 | /chokidar/3.5.2: 1249 | resolution: {integrity: sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==} 1250 | engines: {node: '>= 8.10.0'} 1251 | dependencies: 1252 | anymatch: 3.1.2 1253 | braces: 3.0.2 1254 | glob-parent: 5.1.2 1255 | is-binary-path: 2.1.0 1256 | is-glob: 4.0.1 1257 | normalize-path: 3.0.0 1258 | readdirp: 3.6.0 1259 | optionalDependencies: 1260 | fsevents: 2.3.2 1261 | dev: true 1262 | 1263 | /chunkd/2.0.1: 1264 | resolution: {integrity: sha512-7d58XsFmOq0j6el67Ug9mHf9ELUXsQXYJBkyxhH/k+6Ke0qXRnv0kbemx+Twc6fRJ07C49lcbdgm9FL1Ei/6SQ==} 1265 | dev: true 1266 | 1267 | /ci-info/2.0.0: 1268 | resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} 1269 | dev: true 1270 | 1271 | /ci-parallel-vars/1.0.1: 1272 | resolution: {integrity: sha512-uvzpYrpmidaoxvIQHM+rKSrigjOe9feHYbw4uOI2gdfe1C3xIlxO+kVXq83WQWNniTf8bAxVpy+cQeFQsMERKg==} 1273 | dev: true 1274 | 1275 | /clean-stack/2.2.0: 1276 | resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} 1277 | engines: {node: '>=6'} 1278 | dev: true 1279 | 1280 | /clean-yaml-object/0.1.0: 1281 | resolution: {integrity: sha1-Y/sRDcLOGoTcIfbZM0h20BCui2g=} 1282 | engines: {node: '>=0.10.0'} 1283 | dev: true 1284 | 1285 | /cli-boxes/2.2.1: 1286 | resolution: {integrity: sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==} 1287 | engines: {node: '>=6'} 1288 | dev: true 1289 | 1290 | /cli-cursor/3.1.0: 1291 | resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} 1292 | engines: {node: '>=8'} 1293 | dependencies: 1294 | restore-cursor: 3.1.0 1295 | dev: true 1296 | 1297 | /cli-highlight/2.1.11: 1298 | resolution: {integrity: sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==} 1299 | engines: {node: '>=8.0.0', npm: '>=5.0.0'} 1300 | hasBin: true 1301 | dependencies: 1302 | chalk: 4.1.1 1303 | highlight.js: 10.7.3 1304 | mz: 2.7.0 1305 | parse5: 5.1.1 1306 | parse5-htmlparser2-tree-adapter: 6.0.1 1307 | yargs: 16.2.0 1308 | dev: false 1309 | 1310 | /cli-spinners/2.6.0: 1311 | resolution: {integrity: sha512-t+4/y50K/+4xcCRosKkA7W4gTr1MySvLV0q+PxmG7FJ5g+66ChKurYjxBCjHggHH3HA5Hh9cy+lcUGWDqVH+4Q==} 1312 | engines: {node: '>=6'} 1313 | dev: true 1314 | 1315 | /cli-truncate/2.1.0: 1316 | resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==} 1317 | engines: {node: '>=8'} 1318 | dependencies: 1319 | slice-ansi: 3.0.0 1320 | string-width: 4.2.2 1321 | dev: true 1322 | 1323 | /cliui/6.0.0: 1324 | resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} 1325 | dependencies: 1326 | string-width: 4.2.2 1327 | strip-ansi: 6.0.0 1328 | wrap-ansi: 6.2.0 1329 | dev: true 1330 | 1331 | /cliui/7.0.4: 1332 | resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} 1333 | dependencies: 1334 | string-width: 4.2.2 1335 | strip-ansi: 6.0.0 1336 | wrap-ansi: 7.0.0 1337 | 1338 | /clone-response/1.0.2: 1339 | resolution: {integrity: sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=} 1340 | dependencies: 1341 | mimic-response: 1.0.1 1342 | dev: true 1343 | 1344 | /clone/1.0.4: 1345 | resolution: {integrity: sha1-2jCcwmPfFZlMaIypAheco8fNfH4=} 1346 | engines: {node: '>=0.8'} 1347 | dev: true 1348 | 1349 | /code-excerpt/3.0.0: 1350 | resolution: {integrity: sha512-VHNTVhd7KsLGOqfX3SyeO8RyYPMp1GJOg194VITk04WMYCv4plV68YWe6TJZxd9MhobjtpMRnVky01gqZsalaw==} 1351 | engines: {node: '>=10'} 1352 | dependencies: 1353 | convert-to-spaces: 1.0.2 1354 | dev: true 1355 | 1356 | /color-convert/1.9.3: 1357 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} 1358 | dependencies: 1359 | color-name: 1.1.3 1360 | dev: true 1361 | 1362 | /color-convert/2.0.1: 1363 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 1364 | engines: {node: '>=7.0.0'} 1365 | dependencies: 1366 | color-name: 1.1.4 1367 | 1368 | /color-name/1.1.3: 1369 | resolution: {integrity: sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=} 1370 | dev: true 1371 | 1372 | /color-name/1.1.4: 1373 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 1374 | 1375 | /colorette/1.2.2: 1376 | resolution: {integrity: sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==} 1377 | dev: true 1378 | 1379 | /combined-stream/1.0.8: 1380 | resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} 1381 | engines: {node: '>= 0.8'} 1382 | dependencies: 1383 | delayed-stream: 1.0.0 1384 | dev: true 1385 | 1386 | /commander/7.2.0: 1387 | resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} 1388 | engines: {node: '>= 10'} 1389 | dev: true 1390 | 1391 | /common-path-prefix/3.0.0: 1392 | resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} 1393 | dev: true 1394 | 1395 | /commondir/1.0.1: 1396 | resolution: {integrity: sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=} 1397 | dev: true 1398 | 1399 | /component-emitter/1.3.0: 1400 | resolution: {integrity: sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==} 1401 | dev: true 1402 | 1403 | /concat-map/0.0.1: 1404 | resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} 1405 | 1406 | /concat-stream/1.6.2: 1407 | resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} 1408 | engines: {'0': node >= 0.8} 1409 | dependencies: 1410 | buffer-from: 1.1.1 1411 | inherits: 2.0.4 1412 | readable-stream: 2.3.7 1413 | typedarray: 0.0.6 1414 | dev: false 1415 | 1416 | /concordance/5.0.4: 1417 | resolution: {integrity: sha512-OAcsnTEYu1ARJqWVGwf4zh4JDfHZEaSNlNccFmt8YjB2l/n19/PF2viLINHc57vO4FKIAFl2FWASIGZZWZ2Kxw==} 1418 | engines: {node: '>=10.18.0 <11 || >=12.14.0 <13 || >=14'} 1419 | dependencies: 1420 | date-time: 3.1.0 1421 | esutils: 2.0.3 1422 | fast-diff: 1.2.0 1423 | js-string-escape: 1.0.1 1424 | lodash: 4.17.21 1425 | md5-hex: 3.0.1 1426 | semver: 7.3.5 1427 | well-known-symbols: 2.0.0 1428 | dev: true 1429 | 1430 | /configstore/5.0.1: 1431 | resolution: {integrity: sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==} 1432 | engines: {node: '>=8'} 1433 | dependencies: 1434 | dot-prop: 5.3.0 1435 | graceful-fs: 4.2.6 1436 | make-dir: 3.1.0 1437 | unique-string: 2.0.0 1438 | write-file-atomic: 3.0.3 1439 | xdg-basedir: 4.0.0 1440 | dev: true 1441 | 1442 | /consola/2.15.3: 1443 | resolution: {integrity: sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==} 1444 | dev: false 1445 | 1446 | /content-disposition/0.5.3: 1447 | resolution: {integrity: sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==} 1448 | engines: {node: '>= 0.6'} 1449 | dependencies: 1450 | safe-buffer: 5.1.2 1451 | dev: false 1452 | 1453 | /content-type/1.0.4: 1454 | resolution: {integrity: sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==} 1455 | engines: {node: '>= 0.6'} 1456 | dev: false 1457 | 1458 | /convert-source-map/1.8.0: 1459 | resolution: {integrity: sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==} 1460 | dependencies: 1461 | safe-buffer: 5.1.2 1462 | dev: true 1463 | 1464 | /convert-to-spaces/1.0.2: 1465 | resolution: {integrity: sha1-fj5Iu+bZl7FBfdyihoIEtNPYVxU=} 1466 | engines: {node: '>= 4'} 1467 | dev: true 1468 | 1469 | /cookie-signature/1.0.6: 1470 | resolution: {integrity: sha1-4wOogrNCzD7oylE6eZmXNNqzriw=} 1471 | dev: false 1472 | 1473 | /cookie/0.4.0: 1474 | resolution: {integrity: sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==} 1475 | engines: {node: '>= 0.6'} 1476 | dev: false 1477 | 1478 | /cookiejar/2.1.2: 1479 | resolution: {integrity: sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==} 1480 | dev: true 1481 | 1482 | /core-util-is/1.0.2: 1483 | resolution: {integrity: sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=} 1484 | dev: false 1485 | 1486 | /cors/2.8.5: 1487 | resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} 1488 | engines: {node: '>= 0.10'} 1489 | dependencies: 1490 | object-assign: 4.1.1 1491 | vary: 1.1.2 1492 | dev: false 1493 | 1494 | /cosmiconfig/7.0.0: 1495 | resolution: {integrity: sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==} 1496 | engines: {node: '>=10'} 1497 | dependencies: 1498 | '@types/parse-json': 4.0.0 1499 | import-fresh: 3.3.0 1500 | parse-json: 5.2.0 1501 | path-type: 4.0.0 1502 | yaml: 1.10.2 1503 | dev: true 1504 | 1505 | /create-require/1.1.1: 1506 | resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} 1507 | dev: true 1508 | 1509 | /cross-spawn/7.0.3: 1510 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 1511 | engines: {node: '>= 8'} 1512 | dependencies: 1513 | path-key: 3.1.1 1514 | shebang-command: 2.0.0 1515 | which: 2.0.2 1516 | dev: true 1517 | 1518 | /crypto-random-string/2.0.0: 1519 | resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} 1520 | engines: {node: '>=8'} 1521 | dev: true 1522 | 1523 | /currently-unhandled/0.4.1: 1524 | resolution: {integrity: sha1-mI3zP+qxke95mmE2nddsF635V+o=} 1525 | engines: {node: '>=0.10.0'} 1526 | dependencies: 1527 | array-find-index: 1.0.2 1528 | dev: true 1529 | 1530 | /date-time/3.1.0: 1531 | resolution: {integrity: sha512-uqCUKXE5q1PNBXjPqvwhwJf9SwMoAHBgWJ6DcrnS5o+W2JOiIILl0JEdVD8SGujrNS02GGxgwAg2PN2zONgtjg==} 1532 | engines: {node: '>=6'} 1533 | dependencies: 1534 | time-zone: 1.0.0 1535 | dev: true 1536 | 1537 | /dateformat/1.0.12: 1538 | resolution: {integrity: sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=} 1539 | hasBin: true 1540 | dependencies: 1541 | get-stdin: 4.0.1 1542 | meow: 3.7.0 1543 | dev: true 1544 | 1545 | /dateformat/4.5.1: 1546 | resolution: {integrity: sha512-OD0TZ+B7yP7ZgpJf5K2DIbj3FZvFvxgFUuaqA/V5zTjAtAAXZ1E8bktHxmAGs4x5b7PflqA9LeQ84Og7wYtF7Q==} 1547 | dev: true 1548 | 1549 | /debug/2.6.9: 1550 | resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} 1551 | dependencies: 1552 | ms: 2.0.0 1553 | dev: false 1554 | 1555 | /debug/4.3.1: 1556 | resolution: {integrity: sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==} 1557 | engines: {node: '>=6.0'} 1558 | peerDependencies: 1559 | supports-color: '*' 1560 | peerDependenciesMeta: 1561 | supports-color: 1562 | optional: true 1563 | dependencies: 1564 | ms: 2.1.2 1565 | 1566 | /decamelize/1.2.0: 1567 | resolution: {integrity: sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=} 1568 | engines: {node: '>=0.10.0'} 1569 | dev: true 1570 | 1571 | /decompress-response/3.3.0: 1572 | resolution: {integrity: sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=} 1573 | engines: {node: '>=4'} 1574 | dependencies: 1575 | mimic-response: 1.0.1 1576 | dev: true 1577 | 1578 | /dedent/0.7.0: 1579 | resolution: {integrity: sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=} 1580 | dev: true 1581 | 1582 | /deep-extend/0.6.0: 1583 | resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} 1584 | engines: {node: '>=4.0.0'} 1585 | dev: true 1586 | 1587 | /deep-is/0.1.3: 1588 | resolution: {integrity: sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=} 1589 | dev: true 1590 | 1591 | /default-require-extensions/3.0.0: 1592 | resolution: {integrity: sha512-ek6DpXq/SCpvjhpFsLFRVtIxJCRw6fUR42lYMVZuUMK7n8eMz4Uh5clckdBjEpLhn/gEBZo7hDJnJcwdKLKQjg==} 1593 | engines: {node: '>=8'} 1594 | dependencies: 1595 | strip-bom: 4.0.0 1596 | dev: true 1597 | 1598 | /defaults/1.0.3: 1599 | resolution: {integrity: sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=} 1600 | dependencies: 1601 | clone: 1.0.4 1602 | dev: true 1603 | 1604 | /defer-to-connect/1.1.3: 1605 | resolution: {integrity: sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==} 1606 | dev: true 1607 | 1608 | /del/6.0.0: 1609 | resolution: {integrity: sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ==} 1610 | engines: {node: '>=10'} 1611 | dependencies: 1612 | globby: 11.0.4 1613 | graceful-fs: 4.2.6 1614 | is-glob: 4.0.1 1615 | is-path-cwd: 2.2.0 1616 | is-path-inside: 3.0.3 1617 | p-map: 4.0.0 1618 | rimraf: 3.0.2 1619 | slash: 3.0.0 1620 | dev: true 1621 | 1622 | /delayed-stream/1.0.0: 1623 | resolution: {integrity: sha1-3zrhmayt+31ECqrgsp4icrJOxhk=} 1624 | engines: {node: '>=0.4.0'} 1625 | dev: true 1626 | 1627 | /depd/1.1.2: 1628 | resolution: {integrity: sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=} 1629 | engines: {node: '>= 0.6'} 1630 | dev: false 1631 | 1632 | /destroy/1.0.4: 1633 | resolution: {integrity: sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=} 1634 | dev: false 1635 | 1636 | /dicer/0.2.5: 1637 | resolution: {integrity: sha1-WZbAhrszIYyBLAkL3cCc0S+stw8=} 1638 | engines: {node: '>=0.8.0'} 1639 | dependencies: 1640 | readable-stream: 1.1.14 1641 | streamsearch: 0.1.2 1642 | dev: false 1643 | 1644 | /diff/4.0.2: 1645 | resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} 1646 | engines: {node: '>=0.3.1'} 1647 | dev: true 1648 | 1649 | /dir-glob/3.0.1: 1650 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} 1651 | engines: {node: '>=8'} 1652 | dependencies: 1653 | path-type: 4.0.0 1654 | 1655 | /doctrine/3.0.0: 1656 | resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} 1657 | engines: {node: '>=6.0.0'} 1658 | dependencies: 1659 | esutils: 2.0.3 1660 | dev: true 1661 | 1662 | /dot-prop/5.3.0: 1663 | resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} 1664 | engines: {node: '>=8'} 1665 | dependencies: 1666 | is-obj: 2.0.0 1667 | dev: true 1668 | 1669 | /dotenv/8.6.0: 1670 | resolution: {integrity: sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==} 1671 | engines: {node: '>=10'} 1672 | dev: false 1673 | 1674 | /duplexer3/0.1.4: 1675 | resolution: {integrity: sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=} 1676 | dev: true 1677 | 1678 | /dynamic-dedupe/0.3.0: 1679 | resolution: {integrity: sha1-BuRMIj9eTpTXjvnbI6ZRXOL5YqE=} 1680 | dependencies: 1681 | xtend: 4.0.2 1682 | dev: true 1683 | 1684 | /ecdsa-sig-formatter/1.0.11: 1685 | resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} 1686 | dependencies: 1687 | safe-buffer: 5.2.1 1688 | dev: false 1689 | 1690 | /ee-first/1.1.1: 1691 | resolution: {integrity: sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=} 1692 | dev: false 1693 | 1694 | /electron-to-chromium/1.3.759: 1695 | resolution: {integrity: sha512-nM76xH0t2FBH5iMEZDVc3S/qbdKjGH7TThezxC8k1Q7w7WHvIAyJh8lAe2UamGfdRqBTjHfPDn82LJ0ksCiB9g==} 1696 | dev: true 1697 | 1698 | /emittery/0.8.1: 1699 | resolution: {integrity: sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==} 1700 | engines: {node: '>=10'} 1701 | dev: true 1702 | 1703 | /emoji-regex/7.0.3: 1704 | resolution: {integrity: sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==} 1705 | dev: true 1706 | 1707 | /emoji-regex/8.0.0: 1708 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 1709 | 1710 | /encodeurl/1.0.2: 1711 | resolution: {integrity: sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=} 1712 | engines: {node: '>= 0.8'} 1713 | dev: false 1714 | 1715 | /end-of-stream/1.4.4: 1716 | resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} 1717 | dependencies: 1718 | once: 1.4.0 1719 | dev: true 1720 | 1721 | /enquirer/2.3.6: 1722 | resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} 1723 | engines: {node: '>=8.6'} 1724 | dependencies: 1725 | ansi-colors: 4.1.1 1726 | dev: true 1727 | 1728 | /envalid/7.1.0: 1729 | resolution: {integrity: sha512-C5rtCxfj+ozW5q79fBYKcBEf0KSNklKwZudjCzXy9ANT8Pz1MKxPBn6unZnYXXy6e+cqVgnEURQeXmdueG9/kA==} 1730 | engines: {node: '>=8.12'} 1731 | dev: false 1732 | 1733 | /equal-length/1.0.1: 1734 | resolution: {integrity: sha1-IcoRLUirJLTh5//A5TOdMf38J0w=} 1735 | engines: {node: '>=4'} 1736 | dev: true 1737 | 1738 | /error-ex/1.3.2: 1739 | resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} 1740 | dependencies: 1741 | is-arrayish: 0.2.1 1742 | dev: true 1743 | 1744 | /es6-error/4.1.1: 1745 | resolution: {integrity: sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==} 1746 | dev: true 1747 | 1748 | /escalade/3.1.1: 1749 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} 1750 | engines: {node: '>=6'} 1751 | 1752 | /escape-goat/2.1.1: 1753 | resolution: {integrity: sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==} 1754 | engines: {node: '>=8'} 1755 | dev: true 1756 | 1757 | /escape-html/1.0.3: 1758 | resolution: {integrity: sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=} 1759 | dev: false 1760 | 1761 | /escape-string-regexp/1.0.5: 1762 | resolution: {integrity: sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=} 1763 | engines: {node: '>=0.8.0'} 1764 | 1765 | /escape-string-regexp/2.0.0: 1766 | resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} 1767 | engines: {node: '>=8'} 1768 | dev: true 1769 | 1770 | /escape-string-regexp/4.0.0: 1771 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 1772 | engines: {node: '>=10'} 1773 | dev: true 1774 | 1775 | /eslint-config-prettier/8.3.0_eslint@7.29.0: 1776 | resolution: {integrity: sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew==} 1777 | hasBin: true 1778 | peerDependencies: 1779 | eslint: '>=7.0.0' 1780 | dependencies: 1781 | eslint: 7.29.0 1782 | dev: true 1783 | 1784 | /eslint-plugin-prettier/3.4.0_4e72879372edbffcbdaf0fa17b22c203: 1785 | resolution: {integrity: sha512-UDK6rJT6INSfcOo545jiaOwB701uAIt2/dR7WnFQoGCVl1/EMqdANBmwUaqqQ45aXprsTGzSa39LI1PyuRBxxw==} 1786 | engines: {node: '>=6.0.0'} 1787 | peerDependencies: 1788 | eslint: '>=5.0.0' 1789 | eslint-config-prettier: '*' 1790 | prettier: '>=1.13.0' 1791 | peerDependenciesMeta: 1792 | eslint-config-prettier: 1793 | optional: true 1794 | dependencies: 1795 | eslint: 7.29.0 1796 | eslint-config-prettier: 8.3.0_eslint@7.29.0 1797 | prettier: 2.3.2 1798 | prettier-linter-helpers: 1.0.0 1799 | dev: true 1800 | 1801 | /eslint-scope/5.1.1: 1802 | resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} 1803 | engines: {node: '>=8.0.0'} 1804 | dependencies: 1805 | esrecurse: 4.3.0 1806 | estraverse: 4.3.0 1807 | dev: true 1808 | 1809 | /eslint-utils/2.1.0: 1810 | resolution: {integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==} 1811 | engines: {node: '>=6'} 1812 | dependencies: 1813 | eslint-visitor-keys: 1.3.0 1814 | dev: true 1815 | 1816 | /eslint-utils/3.0.0_eslint@7.29.0: 1817 | resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} 1818 | engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} 1819 | peerDependencies: 1820 | eslint: '>=5' 1821 | dependencies: 1822 | eslint: 7.29.0 1823 | eslint-visitor-keys: 2.1.0 1824 | dev: true 1825 | 1826 | /eslint-visitor-keys/1.3.0: 1827 | resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==} 1828 | engines: {node: '>=4'} 1829 | dev: true 1830 | 1831 | /eslint-visitor-keys/2.1.0: 1832 | resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} 1833 | engines: {node: '>=10'} 1834 | dev: true 1835 | 1836 | /eslint/7.29.0: 1837 | resolution: {integrity: sha512-82G/JToB9qIy/ArBzIWG9xvvwL3R86AlCjtGw+A29OMZDqhTybz/MByORSukGxeI+YPCR4coYyITKk8BFH9nDA==} 1838 | engines: {node: ^10.12.0 || >=12.0.0} 1839 | hasBin: true 1840 | dependencies: 1841 | '@babel/code-frame': 7.12.11 1842 | '@eslint/eslintrc': 0.4.2 1843 | ajv: 6.12.6 1844 | chalk: 4.1.1 1845 | cross-spawn: 7.0.3 1846 | debug: 4.3.1 1847 | doctrine: 3.0.0 1848 | enquirer: 2.3.6 1849 | escape-string-regexp: 4.0.0 1850 | eslint-scope: 5.1.1 1851 | eslint-utils: 2.1.0 1852 | eslint-visitor-keys: 2.1.0 1853 | espree: 7.3.1 1854 | esquery: 1.4.0 1855 | esutils: 2.0.3 1856 | fast-deep-equal: 3.1.3 1857 | file-entry-cache: 6.0.1 1858 | functional-red-black-tree: 1.0.1 1859 | glob-parent: 5.1.2 1860 | globals: 13.9.0 1861 | ignore: 4.0.6 1862 | import-fresh: 3.3.0 1863 | imurmurhash: 0.1.4 1864 | is-glob: 4.0.1 1865 | js-yaml: 3.14.1 1866 | json-stable-stringify-without-jsonify: 1.0.1 1867 | levn: 0.4.1 1868 | lodash.merge: 4.6.2 1869 | minimatch: 3.0.4 1870 | natural-compare: 1.4.0 1871 | optionator: 0.9.1 1872 | progress: 2.0.3 1873 | regexpp: 3.2.0 1874 | semver: 7.3.5 1875 | strip-ansi: 6.0.0 1876 | strip-json-comments: 3.1.1 1877 | table: 6.7.1 1878 | text-table: 0.2.0 1879 | v8-compile-cache: 2.3.0 1880 | transitivePeerDependencies: 1881 | - supports-color 1882 | dev: true 1883 | 1884 | /espree/7.3.1: 1885 | resolution: {integrity: sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==} 1886 | engines: {node: ^10.12.0 || >=12.0.0} 1887 | dependencies: 1888 | acorn: 7.4.1 1889 | acorn-jsx: 5.3.1_acorn@7.4.1 1890 | eslint-visitor-keys: 1.3.0 1891 | dev: true 1892 | 1893 | /esprima/4.0.1: 1894 | resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} 1895 | engines: {node: '>=4'} 1896 | hasBin: true 1897 | dev: true 1898 | 1899 | /esquery/1.4.0: 1900 | resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==} 1901 | engines: {node: '>=0.10'} 1902 | dependencies: 1903 | estraverse: 5.2.0 1904 | dev: true 1905 | 1906 | /esrecurse/4.3.0: 1907 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 1908 | engines: {node: '>=4.0'} 1909 | dependencies: 1910 | estraverse: 5.2.0 1911 | dev: true 1912 | 1913 | /estraverse/4.3.0: 1914 | resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} 1915 | engines: {node: '>=4.0'} 1916 | dev: true 1917 | 1918 | /estraverse/5.2.0: 1919 | resolution: {integrity: sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==} 1920 | engines: {node: '>=4.0'} 1921 | dev: true 1922 | 1923 | /esutils/2.0.3: 1924 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 1925 | engines: {node: '>=0.10.0'} 1926 | dev: true 1927 | 1928 | /etag/1.8.1: 1929 | resolution: {integrity: sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=} 1930 | engines: {node: '>= 0.6'} 1931 | dev: false 1932 | 1933 | /execa/5.1.1: 1934 | resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} 1935 | engines: {node: '>=10'} 1936 | dependencies: 1937 | cross-spawn: 7.0.3 1938 | get-stream: 6.0.1 1939 | human-signals: 2.1.0 1940 | is-stream: 2.0.0 1941 | merge-stream: 2.0.0 1942 | npm-run-path: 4.0.1 1943 | onetime: 5.1.2 1944 | signal-exit: 3.0.3 1945 | strip-final-newline: 2.0.0 1946 | dev: true 1947 | 1948 | /express/4.17.1: 1949 | resolution: {integrity: sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==} 1950 | engines: {node: '>= 0.10.0'} 1951 | dependencies: 1952 | accepts: 1.3.7 1953 | array-flatten: 1.1.1 1954 | body-parser: 1.19.0 1955 | content-disposition: 0.5.3 1956 | content-type: 1.0.4 1957 | cookie: 0.4.0 1958 | cookie-signature: 1.0.6 1959 | debug: 2.6.9 1960 | depd: 1.1.2 1961 | encodeurl: 1.0.2 1962 | escape-html: 1.0.3 1963 | etag: 1.8.1 1964 | finalhandler: 1.1.2 1965 | fresh: 0.5.2 1966 | merge-descriptors: 1.0.1 1967 | methods: 1.1.2 1968 | on-finished: 2.3.0 1969 | parseurl: 1.3.3 1970 | path-to-regexp: 0.1.7 1971 | proxy-addr: 2.0.7 1972 | qs: 6.7.0 1973 | range-parser: 1.2.1 1974 | safe-buffer: 5.1.2 1975 | send: 0.17.1 1976 | serve-static: 1.14.1 1977 | setprototypeof: 1.1.1 1978 | statuses: 1.5.0 1979 | type-is: 1.6.18 1980 | utils-merge: 1.0.1 1981 | vary: 1.1.2 1982 | dev: false 1983 | 1984 | /fast-deep-equal/3.1.3: 1985 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 1986 | dev: true 1987 | 1988 | /fast-diff/1.2.0: 1989 | resolution: {integrity: sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==} 1990 | dev: true 1991 | 1992 | /fast-glob/3.2.5: 1993 | resolution: {integrity: sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==} 1994 | engines: {node: '>=8'} 1995 | dependencies: 1996 | '@nodelib/fs.stat': 2.0.5 1997 | '@nodelib/fs.walk': 1.2.7 1998 | glob-parent: 5.1.2 1999 | merge2: 1.4.1 2000 | micromatch: 4.0.4 2001 | picomatch: 2.3.0 2002 | 2003 | /fast-json-stable-stringify/2.1.0: 2004 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 2005 | dev: true 2006 | 2007 | /fast-levenshtein/2.0.6: 2008 | resolution: {integrity: sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=} 2009 | dev: true 2010 | 2011 | /fast-redact/3.0.1: 2012 | resolution: {integrity: sha512-kYpn4Y/valC9MdrISg47tZOpYBNoTXKgT9GYXFpHN/jYFs+lFkPoisY+LcBODdKVMY96ATzvzsWv+ES/4Kmufw==} 2013 | engines: {node: '>=6'} 2014 | dev: false 2015 | 2016 | /fast-safe-stringify/2.0.7: 2017 | resolution: {integrity: sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA==} 2018 | 2019 | /fastq/1.11.0: 2020 | resolution: {integrity: sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g==} 2021 | dependencies: 2022 | reusify: 1.0.4 2023 | 2024 | /figlet/1.5.0: 2025 | resolution: {integrity: sha512-ZQJM4aifMpz6H19AW1VqvZ7l4pOE9p7i/3LyxgO2kp+PO/VcDYNqIHEMtkccqIhTXMKci4kjueJr/iCQEaT/Ww==} 2026 | engines: {node: '>= 0.4.0'} 2027 | dev: false 2028 | 2029 | /figures/3.2.0: 2030 | resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} 2031 | engines: {node: '>=8'} 2032 | dependencies: 2033 | escape-string-regexp: 1.0.5 2034 | dev: true 2035 | 2036 | /file-entry-cache/6.0.1: 2037 | resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} 2038 | engines: {node: ^10.12.0 || >=12.0.0} 2039 | dependencies: 2040 | flat-cache: 3.0.4 2041 | dev: true 2042 | 2043 | /fill-range/7.0.1: 2044 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 2045 | engines: {node: '>=8'} 2046 | dependencies: 2047 | to-regex-range: 5.0.1 2048 | 2049 | /finalhandler/1.1.2: 2050 | resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==} 2051 | engines: {node: '>= 0.8'} 2052 | dependencies: 2053 | debug: 2.6.9 2054 | encodeurl: 1.0.2 2055 | escape-html: 1.0.3 2056 | on-finished: 2.3.0 2057 | parseurl: 1.3.3 2058 | statuses: 1.5.0 2059 | unpipe: 1.0.0 2060 | dev: false 2061 | 2062 | /find-cache-dir/3.3.1: 2063 | resolution: {integrity: sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==} 2064 | engines: {node: '>=8'} 2065 | dependencies: 2066 | commondir: 1.0.1 2067 | make-dir: 3.1.0 2068 | pkg-dir: 4.2.0 2069 | dev: true 2070 | 2071 | /find-up/1.1.2: 2072 | resolution: {integrity: sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=} 2073 | engines: {node: '>=0.10.0'} 2074 | dependencies: 2075 | path-exists: 2.1.0 2076 | pinkie-promise: 2.0.1 2077 | dev: true 2078 | 2079 | /find-up/3.0.0: 2080 | resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} 2081 | engines: {node: '>=6'} 2082 | dependencies: 2083 | locate-path: 3.0.0 2084 | dev: true 2085 | 2086 | /find-up/4.1.0: 2087 | resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} 2088 | engines: {node: '>=8'} 2089 | dependencies: 2090 | locate-path: 5.0.0 2091 | path-exists: 4.0.0 2092 | dev: true 2093 | 2094 | /flat-cache/3.0.4: 2095 | resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} 2096 | engines: {node: ^10.12.0 || >=12.0.0} 2097 | dependencies: 2098 | flatted: 3.1.1 2099 | rimraf: 3.0.2 2100 | dev: true 2101 | 2102 | /flatstr/1.0.12: 2103 | resolution: {integrity: sha512-4zPxDyhCyiN2wIAtSLI6gc82/EjqZc1onI4Mz/l0pWrAlsSfYH/2ZIcU+e3oA2wDwbzIWNKwa23F8rh6+DRWkw==} 2104 | dev: false 2105 | 2106 | /flatted/3.1.1: 2107 | resolution: {integrity: sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==} 2108 | dev: true 2109 | 2110 | /follow-redirects/1.14.1: 2111 | resolution: {integrity: sha512-HWqDgT7ZEkqRzBvc2s64vSZ/hfOceEol3ac/7tKwzuvEyWx3/4UegXh5oBOIotkGsObyk3xznnSRVADBgWSQVg==} 2112 | engines: {node: '>=4.0'} 2113 | peerDependencies: 2114 | debug: '*' 2115 | peerDependenciesMeta: 2116 | debug: 2117 | optional: true 2118 | dev: false 2119 | 2120 | /foreground-child/2.0.0: 2121 | resolution: {integrity: sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==} 2122 | engines: {node: '>=8.0.0'} 2123 | dependencies: 2124 | cross-spawn: 7.0.3 2125 | signal-exit: 3.0.3 2126 | dev: true 2127 | 2128 | /form-data/3.0.1: 2129 | resolution: {integrity: sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==} 2130 | engines: {node: '>= 6'} 2131 | dependencies: 2132 | asynckit: 0.4.0 2133 | combined-stream: 1.0.8 2134 | mime-types: 2.1.31 2135 | dev: true 2136 | 2137 | /formidable/1.2.2: 2138 | resolution: {integrity: sha512-V8gLm+41I/8kguQ4/o1D3RIHRmhYFG4pnNyonvua+40rqcEmT4+V71yaZ3B457xbbgCsCfjSPi65u/W6vK1U5Q==} 2139 | dev: true 2140 | 2141 | /forwarded/0.2.0: 2142 | resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} 2143 | engines: {node: '>= 0.6'} 2144 | dev: false 2145 | 2146 | /fresh/0.5.2: 2147 | resolution: {integrity: sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=} 2148 | engines: {node: '>= 0.6'} 2149 | dev: false 2150 | 2151 | /fromentries/1.3.2: 2152 | resolution: {integrity: sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==} 2153 | dev: true 2154 | 2155 | /fs.realpath/1.0.0: 2156 | resolution: {integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8=} 2157 | 2158 | /fsevents/2.3.2: 2159 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} 2160 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 2161 | os: [darwin] 2162 | dev: true 2163 | optional: true 2164 | 2165 | /function-bind/1.1.1: 2166 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} 2167 | dev: true 2168 | 2169 | /functional-red-black-tree/1.0.1: 2170 | resolution: {integrity: sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=} 2171 | dev: true 2172 | 2173 | /gensync/1.0.0-beta.2: 2174 | resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} 2175 | engines: {node: '>=6.9.0'} 2176 | dev: true 2177 | 2178 | /get-caller-file/2.0.5: 2179 | resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} 2180 | engines: {node: 6.* || 8.* || >= 10.*} 2181 | 2182 | /get-intrinsic/1.1.1: 2183 | resolution: {integrity: sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==} 2184 | dependencies: 2185 | function-bind: 1.1.1 2186 | has: 1.0.3 2187 | has-symbols: 1.0.2 2188 | dev: true 2189 | 2190 | /get-own-enumerable-property-symbols/3.0.2: 2191 | resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==} 2192 | dev: true 2193 | 2194 | /get-package-type/0.1.0: 2195 | resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} 2196 | engines: {node: '>=8.0.0'} 2197 | dev: true 2198 | 2199 | /get-stdin/4.0.1: 2200 | resolution: {integrity: sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=} 2201 | engines: {node: '>=0.10.0'} 2202 | dev: true 2203 | 2204 | /get-stream/4.1.0: 2205 | resolution: {integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==} 2206 | engines: {node: '>=6'} 2207 | dependencies: 2208 | pump: 3.0.0 2209 | dev: true 2210 | 2211 | /get-stream/5.2.0: 2212 | resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} 2213 | engines: {node: '>=8'} 2214 | dependencies: 2215 | pump: 3.0.0 2216 | dev: true 2217 | 2218 | /get-stream/6.0.1: 2219 | resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} 2220 | engines: {node: '>=10'} 2221 | dev: true 2222 | 2223 | /glob-parent/5.1.2: 2224 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 2225 | engines: {node: '>= 6'} 2226 | dependencies: 2227 | is-glob: 4.0.1 2228 | 2229 | /glob/7.1.7: 2230 | resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} 2231 | dependencies: 2232 | fs.realpath: 1.0.0 2233 | inflight: 1.0.6 2234 | inherits: 2.0.4 2235 | minimatch: 3.0.4 2236 | once: 1.4.0 2237 | path-is-absolute: 1.0.1 2238 | 2239 | /global-dirs/3.0.0: 2240 | resolution: {integrity: sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==} 2241 | engines: {node: '>=10'} 2242 | dependencies: 2243 | ini: 2.0.0 2244 | dev: true 2245 | 2246 | /globals/11.12.0: 2247 | resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} 2248 | engines: {node: '>=4'} 2249 | dev: true 2250 | 2251 | /globals/13.9.0: 2252 | resolution: {integrity: sha512-74/FduwI/JaIrr1H8e71UbDE+5x7pIPs1C2rrwC52SszOo043CsWOZEMW7o2Y58xwm9b+0RBKDxY5n2sUpEFxA==} 2253 | engines: {node: '>=8'} 2254 | dependencies: 2255 | type-fest: 0.20.2 2256 | dev: true 2257 | 2258 | /globby/11.0.4: 2259 | resolution: {integrity: sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==} 2260 | engines: {node: '>=10'} 2261 | dependencies: 2262 | array-union: 2.1.0 2263 | dir-glob: 3.0.1 2264 | fast-glob: 3.2.5 2265 | ignore: 5.1.8 2266 | merge2: 1.4.1 2267 | slash: 3.0.0 2268 | 2269 | /got/9.6.0: 2270 | resolution: {integrity: sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==} 2271 | engines: {node: '>=8.6'} 2272 | dependencies: 2273 | '@sindresorhus/is': 0.14.0 2274 | '@szmarczak/http-timer': 1.1.2 2275 | cacheable-request: 6.1.0 2276 | decompress-response: 3.3.0 2277 | duplexer3: 0.1.4 2278 | get-stream: 4.1.0 2279 | lowercase-keys: 1.0.1 2280 | mimic-response: 1.0.1 2281 | p-cancelable: 1.1.0 2282 | to-readable-stream: 1.0.0 2283 | url-parse-lax: 3.0.0 2284 | dev: true 2285 | 2286 | /graceful-fs/4.2.6: 2287 | resolution: {integrity: sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==} 2288 | dev: true 2289 | 2290 | /has-ansi/2.0.0: 2291 | resolution: {integrity: sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=} 2292 | engines: {node: '>=0.10.0'} 2293 | dependencies: 2294 | ansi-regex: 2.1.1 2295 | dev: false 2296 | 2297 | /has-flag/3.0.0: 2298 | resolution: {integrity: sha1-tdRU3CGZriJWmfNGfloH87lVuv0=} 2299 | engines: {node: '>=4'} 2300 | dev: true 2301 | 2302 | /has-flag/4.0.0: 2303 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 2304 | engines: {node: '>=8'} 2305 | 2306 | /has-symbols/1.0.2: 2307 | resolution: {integrity: sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==} 2308 | engines: {node: '>= 0.4'} 2309 | dev: true 2310 | 2311 | /has-yarn/2.1.0: 2312 | resolution: {integrity: sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==} 2313 | engines: {node: '>=8'} 2314 | dev: true 2315 | 2316 | /has/1.0.3: 2317 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} 2318 | engines: {node: '>= 0.4.0'} 2319 | dependencies: 2320 | function-bind: 1.1.1 2321 | dev: true 2322 | 2323 | /hasha/5.2.2: 2324 | resolution: {integrity: sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==} 2325 | engines: {node: '>=8'} 2326 | dependencies: 2327 | is-stream: 2.0.0 2328 | type-fest: 0.8.1 2329 | dev: true 2330 | 2331 | /highlight.js/10.7.3: 2332 | resolution: {integrity: sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==} 2333 | dev: false 2334 | 2335 | /hosted-git-info/2.8.9: 2336 | resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} 2337 | dev: true 2338 | 2339 | /html-escaper/2.0.2: 2340 | resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} 2341 | dev: true 2342 | 2343 | /http-cache-semantics/4.1.0: 2344 | resolution: {integrity: sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==} 2345 | dev: true 2346 | 2347 | /http-errors/1.7.2: 2348 | resolution: {integrity: sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==} 2349 | engines: {node: '>= 0.6'} 2350 | dependencies: 2351 | depd: 1.1.2 2352 | inherits: 2.0.3 2353 | setprototypeof: 1.1.1 2354 | statuses: 1.5.0 2355 | toidentifier: 1.0.0 2356 | dev: false 2357 | 2358 | /http-errors/1.7.3: 2359 | resolution: {integrity: sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==} 2360 | engines: {node: '>= 0.6'} 2361 | dependencies: 2362 | depd: 1.1.2 2363 | inherits: 2.0.4 2364 | setprototypeof: 1.1.1 2365 | statuses: 1.5.0 2366 | toidentifier: 1.0.0 2367 | dev: false 2368 | 2369 | /human-signals/2.1.0: 2370 | resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} 2371 | engines: {node: '>=10.17.0'} 2372 | dev: true 2373 | 2374 | /husky/6.0.0: 2375 | resolution: {integrity: sha512-SQS2gDTB7tBN486QSoKPKQItZw97BMOd+Kdb6ghfpBc0yXyzrddI0oDV5MkDAbuB4X2mO3/nj60TRMcYxwzZeQ==} 2376 | hasBin: true 2377 | dev: true 2378 | 2379 | /iconv-lite/0.4.24: 2380 | resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} 2381 | engines: {node: '>=0.10.0'} 2382 | dependencies: 2383 | safer-buffer: 2.1.2 2384 | dev: false 2385 | 2386 | /ieee754/1.2.1: 2387 | resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} 2388 | 2389 | /ignore-by-default/2.0.0: 2390 | resolution: {integrity: sha512-+mQSgMRiFD3L3AOxLYOCxjIq4OnAmo5CIuC+lj5ehCJcPtV++QacEV7FdpzvYxH6DaOySWzQU6RR0lPLy37ckA==} 2391 | engines: {node: '>=10 <11 || >=12 <13 || >=14'} 2392 | dev: true 2393 | 2394 | /ignore/4.0.6: 2395 | resolution: {integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==} 2396 | engines: {node: '>= 4'} 2397 | dev: true 2398 | 2399 | /ignore/5.1.8: 2400 | resolution: {integrity: sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==} 2401 | engines: {node: '>= 4'} 2402 | 2403 | /import-fresh/3.3.0: 2404 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 2405 | engines: {node: '>=6'} 2406 | dependencies: 2407 | parent-module: 1.0.1 2408 | resolve-from: 4.0.0 2409 | dev: true 2410 | 2411 | /import-lazy/2.1.0: 2412 | resolution: {integrity: sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=} 2413 | engines: {node: '>=4'} 2414 | dev: true 2415 | 2416 | /import-local/3.0.2: 2417 | resolution: {integrity: sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==} 2418 | engines: {node: '>=8'} 2419 | hasBin: true 2420 | dependencies: 2421 | pkg-dir: 4.2.0 2422 | resolve-cwd: 3.0.0 2423 | dev: true 2424 | 2425 | /imurmurhash/0.1.4: 2426 | resolution: {integrity: sha1-khi5srkoojixPcT7a21XbyMUU+o=} 2427 | engines: {node: '>=0.8.19'} 2428 | dev: true 2429 | 2430 | /indent-string/2.1.0: 2431 | resolution: {integrity: sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=} 2432 | engines: {node: '>=0.10.0'} 2433 | dependencies: 2434 | repeating: 2.0.1 2435 | dev: true 2436 | 2437 | /indent-string/4.0.0: 2438 | resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} 2439 | engines: {node: '>=8'} 2440 | dev: true 2441 | 2442 | /inflight/1.0.6: 2443 | resolution: {integrity: sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=} 2444 | dependencies: 2445 | once: 1.4.0 2446 | wrappy: 1.0.2 2447 | 2448 | /inherits/2.0.3: 2449 | resolution: {integrity: sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=} 2450 | dev: false 2451 | 2452 | /inherits/2.0.4: 2453 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 2454 | 2455 | /ini/1.3.8: 2456 | resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} 2457 | dev: true 2458 | 2459 | /ini/2.0.0: 2460 | resolution: {integrity: sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==} 2461 | engines: {node: '>=10'} 2462 | dev: true 2463 | 2464 | /ipaddr.js/1.9.1: 2465 | resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} 2466 | engines: {node: '>= 0.10'} 2467 | dev: false 2468 | 2469 | /irregular-plurals/3.3.0: 2470 | resolution: {integrity: sha512-MVBLKUTangM3EfRPFROhmWQQKRDsrgI83J8GS3jXy+OwYqiR2/aoWndYQ5416jLE3uaGgLH7ncme3X9y09gZ3g==} 2471 | engines: {node: '>=8'} 2472 | dev: true 2473 | 2474 | /is-arrayish/0.2.1: 2475 | resolution: {integrity: sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=} 2476 | dev: true 2477 | 2478 | /is-binary-path/2.1.0: 2479 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 2480 | engines: {node: '>=8'} 2481 | dependencies: 2482 | binary-extensions: 2.2.0 2483 | dev: true 2484 | 2485 | /is-ci/2.0.0: 2486 | resolution: {integrity: sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==} 2487 | hasBin: true 2488 | dependencies: 2489 | ci-info: 2.0.0 2490 | dev: true 2491 | 2492 | /is-core-module/2.4.0: 2493 | resolution: {integrity: sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A==} 2494 | dependencies: 2495 | has: 1.0.3 2496 | dev: true 2497 | 2498 | /is-error/2.2.2: 2499 | resolution: {integrity: sha512-IOQqts/aHWbiisY5DuPJQ0gcbvaLFCa7fBa9xoLfxBZvQ+ZI/Zh9xoI7Gk+G64N0FdK4AbibytHht2tWgpJWLg==} 2500 | dev: true 2501 | 2502 | /is-extglob/2.1.1: 2503 | resolution: {integrity: sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=} 2504 | engines: {node: '>=0.10.0'} 2505 | 2506 | /is-finite/1.1.0: 2507 | resolution: {integrity: sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==} 2508 | engines: {node: '>=0.10.0'} 2509 | dev: true 2510 | 2511 | /is-fullwidth-code-point/2.0.0: 2512 | resolution: {integrity: sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=} 2513 | engines: {node: '>=4'} 2514 | dev: true 2515 | 2516 | /is-fullwidth-code-point/3.0.0: 2517 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 2518 | engines: {node: '>=8'} 2519 | 2520 | /is-glob/4.0.1: 2521 | resolution: {integrity: sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==} 2522 | engines: {node: '>=0.10.0'} 2523 | dependencies: 2524 | is-extglob: 2.1.1 2525 | 2526 | /is-installed-globally/0.4.0: 2527 | resolution: {integrity: sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==} 2528 | engines: {node: '>=10'} 2529 | dependencies: 2530 | global-dirs: 3.0.0 2531 | is-path-inside: 3.0.3 2532 | dev: true 2533 | 2534 | /is-interactive/1.0.0: 2535 | resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} 2536 | engines: {node: '>=8'} 2537 | dev: true 2538 | 2539 | /is-npm/5.0.0: 2540 | resolution: {integrity: sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==} 2541 | engines: {node: '>=10'} 2542 | dev: true 2543 | 2544 | /is-number/7.0.0: 2545 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 2546 | engines: {node: '>=0.12.0'} 2547 | 2548 | /is-obj/1.0.1: 2549 | resolution: {integrity: sha1-PkcprB9f3gJc19g6iW2rn09n2w8=} 2550 | engines: {node: '>=0.10.0'} 2551 | dev: true 2552 | 2553 | /is-obj/2.0.0: 2554 | resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} 2555 | engines: {node: '>=8'} 2556 | dev: true 2557 | 2558 | /is-path-cwd/2.2.0: 2559 | resolution: {integrity: sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==} 2560 | engines: {node: '>=6'} 2561 | dev: true 2562 | 2563 | /is-path-inside/3.0.3: 2564 | resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} 2565 | engines: {node: '>=8'} 2566 | dev: true 2567 | 2568 | /is-plain-object/5.0.0: 2569 | resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} 2570 | engines: {node: '>=0.10.0'} 2571 | dev: true 2572 | 2573 | /is-promise/4.0.0: 2574 | resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==} 2575 | dev: true 2576 | 2577 | /is-regexp/1.0.0: 2578 | resolution: {integrity: sha1-/S2INUXEa6xaYz57mgnof6LLUGk=} 2579 | engines: {node: '>=0.10.0'} 2580 | dev: true 2581 | 2582 | /is-stream/2.0.0: 2583 | resolution: {integrity: sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==} 2584 | engines: {node: '>=8'} 2585 | dev: true 2586 | 2587 | /is-typedarray/1.0.0: 2588 | resolution: {integrity: sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=} 2589 | dev: true 2590 | 2591 | /is-unicode-supported/0.1.0: 2592 | resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} 2593 | engines: {node: '>=10'} 2594 | dev: true 2595 | 2596 | /is-utf8/0.2.1: 2597 | resolution: {integrity: sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=} 2598 | dev: true 2599 | 2600 | /is-windows/1.0.2: 2601 | resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} 2602 | engines: {node: '>=0.10.0'} 2603 | dev: true 2604 | 2605 | /is-yarn-global/0.3.0: 2606 | resolution: {integrity: sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==} 2607 | dev: true 2608 | 2609 | /isarray/0.0.1: 2610 | resolution: {integrity: sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=} 2611 | dev: false 2612 | 2613 | /isarray/1.0.0: 2614 | resolution: {integrity: sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=} 2615 | dev: false 2616 | 2617 | /isexe/2.0.0: 2618 | resolution: {integrity: sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=} 2619 | dev: true 2620 | 2621 | /istanbul-lib-coverage/3.0.0: 2622 | resolution: {integrity: sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==} 2623 | engines: {node: '>=8'} 2624 | dev: true 2625 | 2626 | /istanbul-lib-hook/3.0.0: 2627 | resolution: {integrity: sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==} 2628 | engines: {node: '>=8'} 2629 | dependencies: 2630 | append-transform: 2.0.0 2631 | dev: true 2632 | 2633 | /istanbul-lib-instrument/4.0.3: 2634 | resolution: {integrity: sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==} 2635 | engines: {node: '>=8'} 2636 | dependencies: 2637 | '@babel/core': 7.14.6 2638 | '@istanbuljs/schema': 0.1.3 2639 | istanbul-lib-coverage: 3.0.0 2640 | semver: 6.3.0 2641 | transitivePeerDependencies: 2642 | - supports-color 2643 | dev: true 2644 | 2645 | /istanbul-lib-processinfo/2.0.2: 2646 | resolution: {integrity: sha512-kOwpa7z9hme+IBPZMzQ5vdQj8srYgAtaRqeI48NGmAQ+/5yKiHLV0QbYqQpxsdEF0+w14SoB8YbnHKcXE2KnYw==} 2647 | engines: {node: '>=8'} 2648 | dependencies: 2649 | archy: 1.0.0 2650 | cross-spawn: 7.0.3 2651 | istanbul-lib-coverage: 3.0.0 2652 | make-dir: 3.1.0 2653 | p-map: 3.0.0 2654 | rimraf: 3.0.2 2655 | uuid: 3.4.0 2656 | dev: true 2657 | 2658 | /istanbul-lib-report/3.0.0: 2659 | resolution: {integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==} 2660 | engines: {node: '>=8'} 2661 | dependencies: 2662 | istanbul-lib-coverage: 3.0.0 2663 | make-dir: 3.1.0 2664 | supports-color: 7.2.0 2665 | dev: true 2666 | 2667 | /istanbul-lib-source-maps/4.0.0: 2668 | resolution: {integrity: sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==} 2669 | engines: {node: '>=8'} 2670 | dependencies: 2671 | debug: 4.3.1 2672 | istanbul-lib-coverage: 3.0.0 2673 | source-map: 0.6.1 2674 | transitivePeerDependencies: 2675 | - supports-color 2676 | dev: true 2677 | 2678 | /istanbul-reports/3.0.2: 2679 | resolution: {integrity: sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==} 2680 | engines: {node: '>=8'} 2681 | dependencies: 2682 | html-escaper: 2.0.2 2683 | istanbul-lib-report: 3.0.0 2684 | dev: true 2685 | 2686 | /iterare/1.2.1: 2687 | resolution: {integrity: sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==} 2688 | engines: {node: '>=6'} 2689 | dev: false 2690 | 2691 | /jmespath/0.15.0: 2692 | resolution: {integrity: sha1-o/Iiqarp+Wb10nx5ZRDigJF2Qhc=} 2693 | engines: {node: '>= 0.6.0'} 2694 | dev: true 2695 | 2696 | /joycon/3.0.1: 2697 | resolution: {integrity: sha512-SJcJNBg32dGgxhPtM0wQqxqV0ax9k/9TaUskGDSJkSFSQOEWWvQ3zzWdGQRIUry2j1zA5+ReH13t0Mf3StuVZA==} 2698 | engines: {node: '>=10'} 2699 | dev: true 2700 | 2701 | /js-string-escape/1.0.1: 2702 | resolution: {integrity: sha1-4mJbrbwNZ8dTPp7cEGjFh65BN+8=} 2703 | engines: {node: '>= 0.8'} 2704 | dev: true 2705 | 2706 | /js-tokens/4.0.0: 2707 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 2708 | dev: true 2709 | 2710 | /js-yaml/3.14.1: 2711 | resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} 2712 | hasBin: true 2713 | dependencies: 2714 | argparse: 1.0.10 2715 | esprima: 4.0.1 2716 | dev: true 2717 | 2718 | /js-yaml/4.1.0: 2719 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 2720 | hasBin: true 2721 | dependencies: 2722 | argparse: 2.0.1 2723 | dev: false 2724 | 2725 | /jsesc/2.5.2: 2726 | resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} 2727 | engines: {node: '>=4'} 2728 | hasBin: true 2729 | dev: true 2730 | 2731 | /json-buffer/3.0.0: 2732 | resolution: {integrity: sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=} 2733 | dev: true 2734 | 2735 | /json-parse-better-errors/1.0.2: 2736 | resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} 2737 | dev: true 2738 | 2739 | /json-parse-even-better-errors/2.3.1: 2740 | resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} 2741 | dev: true 2742 | 2743 | /json-schema-traverse/0.4.1: 2744 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 2745 | dev: true 2746 | 2747 | /json-schema-traverse/1.0.0: 2748 | resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} 2749 | dev: true 2750 | 2751 | /json-stable-stringify-without-jsonify/1.0.1: 2752 | resolution: {integrity: sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=} 2753 | dev: true 2754 | 2755 | /json5/2.2.0: 2756 | resolution: {integrity: sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==} 2757 | engines: {node: '>=6'} 2758 | hasBin: true 2759 | dependencies: 2760 | minimist: 1.2.5 2761 | dev: true 2762 | 2763 | /jsonwebtoken/8.5.1: 2764 | resolution: {integrity: sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==} 2765 | engines: {node: '>=4', npm: '>=1.4.28'} 2766 | dependencies: 2767 | jws: 3.2.2 2768 | lodash.includes: 4.3.0 2769 | lodash.isboolean: 3.0.3 2770 | lodash.isinteger: 4.0.4 2771 | lodash.isnumber: 3.0.3 2772 | lodash.isplainobject: 4.0.6 2773 | lodash.isstring: 4.0.1 2774 | lodash.once: 4.1.1 2775 | ms: 2.1.3 2776 | semver: 5.7.1 2777 | dev: false 2778 | 2779 | /jwa/1.4.1: 2780 | resolution: {integrity: sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==} 2781 | dependencies: 2782 | buffer-equal-constant-time: 1.0.1 2783 | ecdsa-sig-formatter: 1.0.11 2784 | safe-buffer: 5.2.1 2785 | dev: false 2786 | 2787 | /jws/3.2.2: 2788 | resolution: {integrity: sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==} 2789 | dependencies: 2790 | jwa: 1.4.1 2791 | safe-buffer: 5.2.1 2792 | dev: false 2793 | 2794 | /keyv/3.1.0: 2795 | resolution: {integrity: sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==} 2796 | dependencies: 2797 | json-buffer: 3.0.0 2798 | dev: true 2799 | 2800 | /latest-version/5.1.0: 2801 | resolution: {integrity: sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==} 2802 | engines: {node: '>=8'} 2803 | dependencies: 2804 | package-json: 6.5.0 2805 | dev: true 2806 | 2807 | /leven/2.1.0: 2808 | resolution: {integrity: sha1-wuep93IJTe6dNCAq6KzORoeHVYA=} 2809 | engines: {node: '>=0.10.0'} 2810 | dev: true 2811 | 2812 | /levn/0.4.1: 2813 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 2814 | engines: {node: '>= 0.8.0'} 2815 | dependencies: 2816 | prelude-ls: 1.2.1 2817 | type-check: 0.4.0 2818 | dev: true 2819 | 2820 | /lines-and-columns/1.1.6: 2821 | resolution: {integrity: sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=} 2822 | dev: true 2823 | 2824 | /lint-staged/11.0.0: 2825 | resolution: {integrity: sha512-3rsRIoyaE8IphSUtO1RVTFl1e0SLBtxxUOPBtHxQgBHS5/i6nqvjcUfNioMa4BU9yGnPzbO+xkfLtXtxBpCzjw==} 2826 | hasBin: true 2827 | dependencies: 2828 | chalk: 4.1.1 2829 | cli-truncate: 2.1.0 2830 | commander: 7.2.0 2831 | cosmiconfig: 7.0.0 2832 | debug: 4.3.1 2833 | dedent: 0.7.0 2834 | enquirer: 2.3.6 2835 | execa: 5.1.1 2836 | listr2: 3.10.0_enquirer@2.3.6 2837 | log-symbols: 4.1.0 2838 | micromatch: 4.0.4 2839 | normalize-path: 3.0.0 2840 | please-upgrade-node: 3.2.0 2841 | string-argv: 0.3.1 2842 | stringify-object: 3.3.0 2843 | transitivePeerDependencies: 2844 | - supports-color 2845 | dev: true 2846 | 2847 | /listr2/3.10.0_enquirer@2.3.6: 2848 | resolution: {integrity: sha512-eP40ZHihu70sSmqFNbNy2NL1YwImmlMmPh9WO5sLmPDleurMHt3n+SwEWNu2kzKScexZnkyFtc1VI0z/TGlmpw==} 2849 | engines: {node: '>=10.0.0'} 2850 | peerDependencies: 2851 | enquirer: '>= 2.3.0 < 3' 2852 | dependencies: 2853 | cli-truncate: 2.1.0 2854 | colorette: 1.2.2 2855 | enquirer: 2.3.6 2856 | log-update: 4.0.0 2857 | p-map: 4.0.0 2858 | rxjs: 6.6.7 2859 | through: 2.3.8 2860 | wrap-ansi: 7.0.0 2861 | dev: true 2862 | 2863 | /load-json-file/1.1.0: 2864 | resolution: {integrity: sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=} 2865 | engines: {node: '>=0.10.0'} 2866 | dependencies: 2867 | graceful-fs: 4.2.6 2868 | parse-json: 2.2.0 2869 | pify: 2.3.0 2870 | pinkie-promise: 2.0.1 2871 | strip-bom: 2.0.0 2872 | dev: true 2873 | 2874 | /load-json-file/5.3.0: 2875 | resolution: {integrity: sha512-cJGP40Jc/VXUsp8/OrnyKyTZ1y6v/dphm3bioS+RrKXjK2BB6wHUd6JptZEFDGgGahMT+InnZO5i1Ei9mpC8Bw==} 2876 | engines: {node: '>=6'} 2877 | dependencies: 2878 | graceful-fs: 4.2.6 2879 | parse-json: 4.0.0 2880 | pify: 4.0.1 2881 | strip-bom: 3.0.0 2882 | type-fest: 0.3.1 2883 | dev: true 2884 | 2885 | /locate-path/3.0.0: 2886 | resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} 2887 | engines: {node: '>=6'} 2888 | dependencies: 2889 | p-locate: 3.0.0 2890 | path-exists: 3.0.0 2891 | dev: true 2892 | 2893 | /locate-path/5.0.0: 2894 | resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} 2895 | engines: {node: '>=8'} 2896 | dependencies: 2897 | p-locate: 4.1.0 2898 | dev: true 2899 | 2900 | /lodash.clonedeep/4.5.0: 2901 | resolution: {integrity: sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=} 2902 | dev: true 2903 | 2904 | /lodash.flattendeep/4.4.0: 2905 | resolution: {integrity: sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=} 2906 | dev: true 2907 | 2908 | /lodash.includes/4.3.0: 2909 | resolution: {integrity: sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=} 2910 | dev: false 2911 | 2912 | /lodash.isboolean/3.0.3: 2913 | resolution: {integrity: sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=} 2914 | dev: false 2915 | 2916 | /lodash.isinteger/4.0.4: 2917 | resolution: {integrity: sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=} 2918 | dev: false 2919 | 2920 | /lodash.isnumber/3.0.3: 2921 | resolution: {integrity: sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=} 2922 | dev: false 2923 | 2924 | /lodash.isplainobject/4.0.6: 2925 | resolution: {integrity: sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=} 2926 | dev: false 2927 | 2928 | /lodash.isstring/4.0.1: 2929 | resolution: {integrity: sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=} 2930 | dev: false 2931 | 2932 | /lodash.merge/4.6.2: 2933 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 2934 | dev: true 2935 | 2936 | /lodash.once/4.1.1: 2937 | resolution: {integrity: sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=} 2938 | dev: false 2939 | 2940 | /lodash.truncate/4.4.2: 2941 | resolution: {integrity: sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=} 2942 | dev: true 2943 | 2944 | /lodash/4.17.21: 2945 | resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} 2946 | dev: true 2947 | 2948 | /log-symbols/4.1.0: 2949 | resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} 2950 | engines: {node: '>=10'} 2951 | dependencies: 2952 | chalk: 4.1.1 2953 | is-unicode-supported: 0.1.0 2954 | dev: true 2955 | 2956 | /log-update/4.0.0: 2957 | resolution: {integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==} 2958 | engines: {node: '>=10'} 2959 | dependencies: 2960 | ansi-escapes: 4.3.2 2961 | cli-cursor: 3.1.0 2962 | slice-ansi: 4.0.0 2963 | wrap-ansi: 6.2.0 2964 | dev: true 2965 | 2966 | /loud-rejection/1.6.0: 2967 | resolution: {integrity: sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=} 2968 | engines: {node: '>=0.10.0'} 2969 | dependencies: 2970 | currently-unhandled: 0.4.1 2971 | signal-exit: 3.0.3 2972 | dev: true 2973 | 2974 | /lowercase-keys/1.0.1: 2975 | resolution: {integrity: sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==} 2976 | engines: {node: '>=0.10.0'} 2977 | dev: true 2978 | 2979 | /lowercase-keys/2.0.0: 2980 | resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==} 2981 | engines: {node: '>=8'} 2982 | dev: true 2983 | 2984 | /lru-cache/6.0.0: 2985 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} 2986 | engines: {node: '>=10'} 2987 | dependencies: 2988 | yallist: 4.0.0 2989 | dev: true 2990 | 2991 | /make-dir/3.1.0: 2992 | resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} 2993 | engines: {node: '>=8'} 2994 | dependencies: 2995 | semver: 6.3.0 2996 | dev: true 2997 | 2998 | /make-error/1.3.6: 2999 | resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} 3000 | dev: true 3001 | 3002 | /map-age-cleaner/0.1.3: 3003 | resolution: {integrity: sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==} 3004 | engines: {node: '>=6'} 3005 | dependencies: 3006 | p-defer: 1.0.0 3007 | dev: true 3008 | 3009 | /map-obj/1.0.1: 3010 | resolution: {integrity: sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=} 3011 | engines: {node: '>=0.10.0'} 3012 | dev: true 3013 | 3014 | /matcher/3.0.0: 3015 | resolution: {integrity: sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==} 3016 | engines: {node: '>=10'} 3017 | dependencies: 3018 | escape-string-regexp: 4.0.0 3019 | dev: true 3020 | 3021 | /md5-hex/3.0.1: 3022 | resolution: {integrity: sha512-BUiRtTtV39LIJwinWBjqVsU9xhdnz7/i889V859IBFpuqGAj6LuOvHv5XLbgZ2R7ptJoJaEcxkv88/h25T7Ciw==} 3023 | engines: {node: '>=8'} 3024 | dependencies: 3025 | blueimp-md5: 2.18.0 3026 | dev: true 3027 | 3028 | /media-typer/0.3.0: 3029 | resolution: {integrity: sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=} 3030 | engines: {node: '>= 0.6'} 3031 | dev: false 3032 | 3033 | /mem/8.1.1: 3034 | resolution: {integrity: sha512-qFCFUDs7U3b8mBDPyz5EToEKoAkgCzqquIgi9nkkR9bixxOVOre+09lbuH7+9Kn2NFpm56M3GUWVbU2hQgdACA==} 3035 | engines: {node: '>=10'} 3036 | dependencies: 3037 | map-age-cleaner: 0.1.3 3038 | mimic-fn: 3.1.0 3039 | dev: true 3040 | 3041 | /meow/3.7.0: 3042 | resolution: {integrity: sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=} 3043 | engines: {node: '>=0.10.0'} 3044 | dependencies: 3045 | camelcase-keys: 2.1.0 3046 | decamelize: 1.2.0 3047 | loud-rejection: 1.6.0 3048 | map-obj: 1.0.1 3049 | minimist: 1.2.5 3050 | normalize-package-data: 2.5.0 3051 | object-assign: 4.1.1 3052 | read-pkg-up: 1.0.1 3053 | redent: 1.0.0 3054 | trim-newlines: 1.0.0 3055 | dev: true 3056 | 3057 | /merge-descriptors/1.0.1: 3058 | resolution: {integrity: sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=} 3059 | dev: false 3060 | 3061 | /merge-stream/2.0.0: 3062 | resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} 3063 | dev: true 3064 | 3065 | /merge2/1.4.1: 3066 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 3067 | engines: {node: '>= 8'} 3068 | 3069 | /methods/1.1.2: 3070 | resolution: {integrity: sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=} 3071 | engines: {node: '>= 0.6'} 3072 | 3073 | /micromatch/4.0.4: 3074 | resolution: {integrity: sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==} 3075 | engines: {node: '>=8.6'} 3076 | dependencies: 3077 | braces: 3.0.2 3078 | picomatch: 2.3.0 3079 | 3080 | /mime-db/1.48.0: 3081 | resolution: {integrity: sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ==} 3082 | engines: {node: '>= 0.6'} 3083 | 3084 | /mime-types/2.1.31: 3085 | resolution: {integrity: sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg==} 3086 | engines: {node: '>= 0.6'} 3087 | dependencies: 3088 | mime-db: 1.48.0 3089 | 3090 | /mime/1.6.0: 3091 | resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} 3092 | engines: {node: '>=4'} 3093 | hasBin: true 3094 | dev: false 3095 | 3096 | /mime/2.5.2: 3097 | resolution: {integrity: sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==} 3098 | engines: {node: '>=4.0.0'} 3099 | hasBin: true 3100 | dev: true 3101 | 3102 | /mimic-fn/2.1.0: 3103 | resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} 3104 | engines: {node: '>=6'} 3105 | dev: true 3106 | 3107 | /mimic-fn/3.1.0: 3108 | resolution: {integrity: sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==} 3109 | engines: {node: '>=8'} 3110 | dev: true 3111 | 3112 | /mimic-response/1.0.1: 3113 | resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} 3114 | engines: {node: '>=4'} 3115 | dev: true 3116 | 3117 | /minimatch/3.0.4: 3118 | resolution: {integrity: sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==} 3119 | dependencies: 3120 | brace-expansion: 1.1.11 3121 | 3122 | /minimist/1.2.5: 3123 | resolution: {integrity: sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==} 3124 | 3125 | /mkdirp/0.5.5: 3126 | resolution: {integrity: sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==} 3127 | hasBin: true 3128 | dependencies: 3129 | minimist: 1.2.5 3130 | dev: false 3131 | 3132 | /mkdirp/1.0.4: 3133 | resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} 3134 | engines: {node: '>=10'} 3135 | hasBin: true 3136 | 3137 | /mri/1.1.4: 3138 | resolution: {integrity: sha512-6y7IjGPm8AzlvoUrwAaw1tLnUBudaS3752vcd8JtrpGGQn+rXIe63LFVHm/YMwtqAuh+LJPCFdlLYPWM1nYn6w==} 3139 | engines: {node: '>=4'} 3140 | dev: true 3141 | 3142 | /ms/2.0.0: 3143 | resolution: {integrity: sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=} 3144 | dev: false 3145 | 3146 | /ms/2.1.1: 3147 | resolution: {integrity: sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==} 3148 | dev: false 3149 | 3150 | /ms/2.1.2: 3151 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 3152 | 3153 | /ms/2.1.3: 3154 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 3155 | 3156 | /multer/1.4.2: 3157 | resolution: {integrity: sha512-xY8pX7V+ybyUpbYMxtjM9KAiD9ixtg5/JkeKUTD6xilfDv0vzzOFcCp4Ljb1UU3tSOM3VTZtKo63OmzOrGi3Cg==} 3158 | engines: {node: '>= 0.10.0'} 3159 | dependencies: 3160 | append-field: 1.0.0 3161 | busboy: 0.2.14 3162 | concat-stream: 1.6.2 3163 | mkdirp: 0.5.5 3164 | object-assign: 4.1.1 3165 | on-finished: 2.3.0 3166 | type-is: 1.6.18 3167 | xtend: 4.0.2 3168 | dev: false 3169 | 3170 | /mysql/2.18.1: 3171 | resolution: {integrity: sha512-Bca+gk2YWmqp2Uf6k5NFEurwY/0td0cpebAucFpY/3jhrwrVGuxU2uQFCHjU19SJfje0yQvi+rVWdq78hR5lig==} 3172 | engines: {node: '>= 0.6'} 3173 | dependencies: 3174 | bignumber.js: 9.0.0 3175 | readable-stream: 2.3.7 3176 | safe-buffer: 5.1.2 3177 | sqlstring: 2.3.1 3178 | dev: false 3179 | 3180 | /mz/2.7.0: 3181 | resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} 3182 | dependencies: 3183 | any-promise: 1.3.0 3184 | object-assign: 4.1.1 3185 | thenify-all: 1.6.0 3186 | dev: false 3187 | 3188 | /natural-compare/1.4.0: 3189 | resolution: {integrity: sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=} 3190 | dev: true 3191 | 3192 | /negotiator/0.6.2: 3193 | resolution: {integrity: sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==} 3194 | engines: {node: '>= 0.6'} 3195 | dev: false 3196 | 3197 | /node-fetch/2.6.1: 3198 | resolution: {integrity: sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==} 3199 | engines: {node: 4.x || >=6.0.0} 3200 | dev: false 3201 | 3202 | /node-preload/0.2.1: 3203 | resolution: {integrity: sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==} 3204 | engines: {node: '>=8'} 3205 | dependencies: 3206 | process-on-spawn: 1.0.0 3207 | dev: true 3208 | 3209 | /node-releases/1.1.73: 3210 | resolution: {integrity: sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg==} 3211 | dev: true 3212 | 3213 | /normalize-package-data/2.5.0: 3214 | resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} 3215 | dependencies: 3216 | hosted-git-info: 2.8.9 3217 | resolve: 1.20.0 3218 | semver: 5.7.1 3219 | validate-npm-package-license: 3.0.4 3220 | dev: true 3221 | 3222 | /normalize-path/3.0.0: 3223 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 3224 | engines: {node: '>=0.10.0'} 3225 | dev: true 3226 | 3227 | /normalize-url/4.5.1: 3228 | resolution: {integrity: sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==} 3229 | engines: {node: '>=8'} 3230 | dev: true 3231 | 3232 | /npm-run-path/4.0.1: 3233 | resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} 3234 | engines: {node: '>=8'} 3235 | dependencies: 3236 | path-key: 3.1.1 3237 | dev: true 3238 | 3239 | /nyc/15.1.0: 3240 | resolution: {integrity: sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==} 3241 | engines: {node: '>=8.9'} 3242 | hasBin: true 3243 | dependencies: 3244 | '@istanbuljs/load-nyc-config': 1.1.0 3245 | '@istanbuljs/schema': 0.1.3 3246 | caching-transform: 4.0.0 3247 | convert-source-map: 1.8.0 3248 | decamelize: 1.2.0 3249 | find-cache-dir: 3.3.1 3250 | find-up: 4.1.0 3251 | foreground-child: 2.0.0 3252 | get-package-type: 0.1.0 3253 | glob: 7.1.7 3254 | istanbul-lib-coverage: 3.0.0 3255 | istanbul-lib-hook: 3.0.0 3256 | istanbul-lib-instrument: 4.0.3 3257 | istanbul-lib-processinfo: 2.0.2 3258 | istanbul-lib-report: 3.0.0 3259 | istanbul-lib-source-maps: 4.0.0 3260 | istanbul-reports: 3.0.2 3261 | make-dir: 3.1.0 3262 | node-preload: 0.2.1 3263 | p-map: 3.0.0 3264 | process-on-spawn: 1.0.0 3265 | resolve-from: 5.0.0 3266 | rimraf: 3.0.2 3267 | signal-exit: 3.0.3 3268 | spawn-wrap: 2.0.0 3269 | test-exclude: 6.0.0 3270 | yargs: 15.4.1 3271 | transitivePeerDependencies: 3272 | - supports-color 3273 | dev: true 3274 | 3275 | /object-assign/4.1.1: 3276 | resolution: {integrity: sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=} 3277 | engines: {node: '>=0.10.0'} 3278 | 3279 | /object-hash/2.1.1: 3280 | resolution: {integrity: sha512-VOJmgmS+7wvXf8CjbQmimtCnEx3IAoLxI3fp2fbWehxrWBcAQFbk+vcwb6vzR0VZv/eNCJ/27j151ZTwqW/JeQ==} 3281 | engines: {node: '>= 6'} 3282 | dev: false 3283 | 3284 | /object-inspect/1.10.3: 3285 | resolution: {integrity: sha512-e5mCJlSH7poANfC8z8S9s9S2IN5/4Zb3aZ33f5s8YqoazCFzNLloLU8r5VCG+G7WoqLvAAZoVMcy3tp/3X0Plw==} 3286 | dev: true 3287 | 3288 | /on-finished/2.3.0: 3289 | resolution: {integrity: sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=} 3290 | engines: {node: '>= 0.8'} 3291 | dependencies: 3292 | ee-first: 1.1.1 3293 | dev: false 3294 | 3295 | /once/1.4.0: 3296 | resolution: {integrity: sha1-WDsap3WWHUsROsF9nFC6753Xa9E=} 3297 | dependencies: 3298 | wrappy: 1.0.2 3299 | 3300 | /onetime/5.1.2: 3301 | resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} 3302 | engines: {node: '>=6'} 3303 | dependencies: 3304 | mimic-fn: 2.1.0 3305 | dev: true 3306 | 3307 | /optional/0.1.4: 3308 | resolution: {integrity: sha512-gtvrrCfkE08wKcgXaVwQVgwEQ8vel2dc5DDBn9RLQZ3YtmtkBss6A2HY6BnJH4N/4Ku97Ri/SF8sNWE2225WJw==} 3309 | dev: true 3310 | 3311 | /optionator/0.9.1: 3312 | resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} 3313 | engines: {node: '>= 0.8.0'} 3314 | dependencies: 3315 | deep-is: 0.1.3 3316 | fast-levenshtein: 2.0.6 3317 | levn: 0.4.1 3318 | prelude-ls: 1.2.1 3319 | type-check: 0.4.0 3320 | word-wrap: 1.2.3 3321 | dev: true 3322 | 3323 | /ora/5.4.1: 3324 | resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} 3325 | engines: {node: '>=10'} 3326 | dependencies: 3327 | bl: 4.1.0 3328 | chalk: 4.1.1 3329 | cli-cursor: 3.1.0 3330 | cli-spinners: 2.6.0 3331 | is-interactive: 1.0.0 3332 | is-unicode-supported: 0.1.0 3333 | log-symbols: 4.1.0 3334 | strip-ansi: 6.0.0 3335 | wcwidth: 1.0.1 3336 | dev: true 3337 | 3338 | /p-cancelable/1.1.0: 3339 | resolution: {integrity: sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==} 3340 | engines: {node: '>=6'} 3341 | dev: true 3342 | 3343 | /p-defer/1.0.0: 3344 | resolution: {integrity: sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=} 3345 | engines: {node: '>=4'} 3346 | dev: true 3347 | 3348 | /p-event/4.2.0: 3349 | resolution: {integrity: sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ==} 3350 | engines: {node: '>=8'} 3351 | dependencies: 3352 | p-timeout: 3.2.0 3353 | dev: true 3354 | 3355 | /p-finally/1.0.0: 3356 | resolution: {integrity: sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=} 3357 | engines: {node: '>=4'} 3358 | dev: true 3359 | 3360 | /p-limit/2.3.0: 3361 | resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} 3362 | engines: {node: '>=6'} 3363 | dependencies: 3364 | p-try: 2.2.0 3365 | dev: true 3366 | 3367 | /p-locate/3.0.0: 3368 | resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} 3369 | engines: {node: '>=6'} 3370 | dependencies: 3371 | p-limit: 2.3.0 3372 | dev: true 3373 | 3374 | /p-locate/4.1.0: 3375 | resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} 3376 | engines: {node: '>=8'} 3377 | dependencies: 3378 | p-limit: 2.3.0 3379 | dev: true 3380 | 3381 | /p-map/3.0.0: 3382 | resolution: {integrity: sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==} 3383 | engines: {node: '>=8'} 3384 | dependencies: 3385 | aggregate-error: 3.1.0 3386 | dev: true 3387 | 3388 | /p-map/4.0.0: 3389 | resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} 3390 | engines: {node: '>=10'} 3391 | dependencies: 3392 | aggregate-error: 3.1.0 3393 | dev: true 3394 | 3395 | /p-timeout/3.2.0: 3396 | resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==} 3397 | engines: {node: '>=8'} 3398 | dependencies: 3399 | p-finally: 1.0.0 3400 | dev: true 3401 | 3402 | /p-try/2.2.0: 3403 | resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} 3404 | engines: {node: '>=6'} 3405 | dev: true 3406 | 3407 | /package-hash/4.0.0: 3408 | resolution: {integrity: sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==} 3409 | engines: {node: '>=8'} 3410 | dependencies: 3411 | graceful-fs: 4.2.6 3412 | hasha: 5.2.2 3413 | lodash.flattendeep: 4.4.0 3414 | release-zalgo: 1.0.0 3415 | dev: true 3416 | 3417 | /package-json/6.5.0: 3418 | resolution: {integrity: sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==} 3419 | engines: {node: '>=8'} 3420 | dependencies: 3421 | got: 9.6.0 3422 | registry-auth-token: 4.2.1 3423 | registry-url: 5.1.0 3424 | semver: 6.3.0 3425 | dev: true 3426 | 3427 | /packet-reader/1.0.0: 3428 | resolution: {integrity: sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==} 3429 | dev: false 3430 | 3431 | /parent-module/1.0.1: 3432 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 3433 | engines: {node: '>=6'} 3434 | dependencies: 3435 | callsites: 3.1.0 3436 | dev: true 3437 | 3438 | /parent-require/1.0.0: 3439 | resolution: {integrity: sha1-dGoWdjgIOoYLDu9nMssn7UbDKXc=} 3440 | engines: {node: '>= 0.4.0'} 3441 | dev: false 3442 | 3443 | /parse-json/2.2.0: 3444 | resolution: {integrity: sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=} 3445 | engines: {node: '>=0.10.0'} 3446 | dependencies: 3447 | error-ex: 1.3.2 3448 | dev: true 3449 | 3450 | /parse-json/4.0.0: 3451 | resolution: {integrity: sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=} 3452 | engines: {node: '>=4'} 3453 | dependencies: 3454 | error-ex: 1.3.2 3455 | json-parse-better-errors: 1.0.2 3456 | dev: true 3457 | 3458 | /parse-json/5.2.0: 3459 | resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} 3460 | engines: {node: '>=8'} 3461 | dependencies: 3462 | '@babel/code-frame': 7.14.5 3463 | error-ex: 1.3.2 3464 | json-parse-even-better-errors: 2.3.1 3465 | lines-and-columns: 1.1.6 3466 | dev: true 3467 | 3468 | /parse-ms/2.1.0: 3469 | resolution: {integrity: sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==} 3470 | engines: {node: '>=6'} 3471 | dev: true 3472 | 3473 | /parse5-htmlparser2-tree-adapter/6.0.1: 3474 | resolution: {integrity: sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==} 3475 | dependencies: 3476 | parse5: 6.0.1 3477 | dev: false 3478 | 3479 | /parse5/5.1.1: 3480 | resolution: {integrity: sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==} 3481 | dev: false 3482 | 3483 | /parse5/6.0.1: 3484 | resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} 3485 | dev: false 3486 | 3487 | /parseurl/1.3.3: 3488 | resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} 3489 | engines: {node: '>= 0.8'} 3490 | dev: false 3491 | 3492 | /path-exists/2.1.0: 3493 | resolution: {integrity: sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=} 3494 | engines: {node: '>=0.10.0'} 3495 | dependencies: 3496 | pinkie-promise: 2.0.1 3497 | dev: true 3498 | 3499 | /path-exists/3.0.0: 3500 | resolution: {integrity: sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=} 3501 | engines: {node: '>=4'} 3502 | dev: true 3503 | 3504 | /path-exists/4.0.0: 3505 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 3506 | engines: {node: '>=8'} 3507 | dev: true 3508 | 3509 | /path-is-absolute/1.0.1: 3510 | resolution: {integrity: sha1-F0uSaHNVNP+8es5r9TpanhtcX18=} 3511 | engines: {node: '>=0.10.0'} 3512 | 3513 | /path-key/3.1.1: 3514 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 3515 | engines: {node: '>=8'} 3516 | dev: true 3517 | 3518 | /path-parse/1.0.7: 3519 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 3520 | dev: true 3521 | 3522 | /path-to-regexp/0.1.7: 3523 | resolution: {integrity: sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=} 3524 | dev: false 3525 | 3526 | /path-to-regexp/3.2.0: 3527 | resolution: {integrity: sha512-jczvQbCUS7XmS7o+y1aEO9OBVFeZBQ1MDSEqmO7xSoPgOPoowY/SxLpZ6Vh97/8qHZOteiCKb7gkG9gA2ZUxJA==} 3528 | dev: false 3529 | 3530 | /path-type/1.1.0: 3531 | resolution: {integrity: sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=} 3532 | engines: {node: '>=0.10.0'} 3533 | dependencies: 3534 | graceful-fs: 4.2.6 3535 | pify: 2.3.0 3536 | pinkie-promise: 2.0.1 3537 | dev: true 3538 | 3539 | /path-type/4.0.0: 3540 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} 3541 | engines: {node: '>=8'} 3542 | 3543 | /pg-connection-string/2.5.0: 3544 | resolution: {integrity: sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ==} 3545 | dev: false 3546 | 3547 | /pg-int8/1.0.1: 3548 | resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} 3549 | engines: {node: '>=4.0.0'} 3550 | dev: false 3551 | 3552 | /pg-pool/3.3.0_pg@8.6.0: 3553 | resolution: {integrity: sha512-0O5huCql8/D6PIRFAlmccjphLYWC+JIzvUhSzXSpGaf+tjTZc4nn+Lr7mLXBbFJfvwbP0ywDv73EiaBsxn7zdg==} 3554 | peerDependencies: 3555 | pg: '>=8.0' 3556 | dependencies: 3557 | pg: 8.6.0 3558 | dev: false 3559 | 3560 | /pg-protocol/1.5.0: 3561 | resolution: {integrity: sha512-muRttij7H8TqRNu/DxrAJQITO4Ac7RmX3Klyr/9mJEOBeIpgnF8f9jAfRz5d3XwQZl5qBjF9gLsUtMPJE0vezQ==} 3562 | dev: false 3563 | 3564 | /pg-types/2.2.0: 3565 | resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} 3566 | engines: {node: '>=4'} 3567 | dependencies: 3568 | pg-int8: 1.0.1 3569 | postgres-array: 2.0.0 3570 | postgres-bytea: 1.0.0 3571 | postgres-date: 1.0.7 3572 | postgres-interval: 1.2.0 3573 | dev: false 3574 | 3575 | /pg/8.6.0: 3576 | resolution: {integrity: sha512-qNS9u61lqljTDFvmk/N66EeGq3n6Ujzj0FFyNMGQr6XuEv4tgNTXvJQTfJdcvGit5p5/DWPu+wj920hAJFI+QQ==} 3577 | engines: {node: '>= 8.0.0'} 3578 | peerDependencies: 3579 | pg-native: '>=2.0.0' 3580 | peerDependenciesMeta: 3581 | pg-native: 3582 | optional: true 3583 | dependencies: 3584 | buffer-writer: 2.0.0 3585 | packet-reader: 1.0.0 3586 | pg-connection-string: 2.5.0 3587 | pg-pool: 3.3.0_pg@8.6.0 3588 | pg-protocol: 1.5.0 3589 | pg-types: 2.2.0 3590 | pgpass: 1.0.4 3591 | dev: false 3592 | 3593 | /pgpass/1.0.4: 3594 | resolution: {integrity: sha512-YmuA56alyBq7M59vxVBfPJrGSozru8QAdoNlWuW3cz8l+UX3cWge0vTvjKhsSHSJpo3Bom8/Mm6hf0TR5GY0+w==} 3595 | dependencies: 3596 | split2: 3.2.2 3597 | dev: false 3598 | 3599 | /picomatch/2.3.0: 3600 | resolution: {integrity: sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==} 3601 | engines: {node: '>=8.6'} 3602 | 3603 | /pify/2.3.0: 3604 | resolution: {integrity: sha1-7RQaasBDqEnqWISY59yosVMw6Qw=} 3605 | engines: {node: '>=0.10.0'} 3606 | dev: true 3607 | 3608 | /pify/4.0.1: 3609 | resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} 3610 | engines: {node: '>=6'} 3611 | dev: true 3612 | 3613 | /pinkie-promise/2.0.1: 3614 | resolution: {integrity: sha1-ITXW36ejWMBprJsXh3YogihFD/o=} 3615 | engines: {node: '>=0.10.0'} 3616 | dependencies: 3617 | pinkie: 2.0.4 3618 | dev: true 3619 | 3620 | /pinkie/2.0.4: 3621 | resolution: {integrity: sha1-clVrgM+g1IqXToDnckjoDtT3+HA=} 3622 | engines: {node: '>=0.10.0'} 3623 | dev: true 3624 | 3625 | /pino-pretty/5.1.0: 3626 | resolution: {integrity: sha512-fpDU80MKP59XOWxqV8crTDjRegC2fbDsA56zTr5s1guiv6QuYHILc9x1a4+o9SNPtfmF2kQdpAZS+bIExtbELQ==} 3627 | hasBin: true 3628 | dependencies: 3629 | '@hapi/bourne': 2.0.0 3630 | '@types/node': 15.12.4 3631 | args: 5.0.1 3632 | chalk: 4.1.1 3633 | dateformat: 4.5.1 3634 | fast-safe-stringify: 2.0.7 3635 | jmespath: 0.15.0 3636 | joycon: 3.0.1 3637 | pump: 3.0.0 3638 | readable-stream: 3.6.0 3639 | rfdc: 1.3.0 3640 | split2: 3.2.2 3641 | strip-json-comments: 3.1.1 3642 | dev: true 3643 | 3644 | /pino-std-serializers/3.2.0: 3645 | resolution: {integrity: sha512-EqX4pwDPrt3MuOAAUBMU0Tk5kR/YcCM5fNPEzgCO2zJ5HfX0vbiH9HbJglnyeQsN96Kznae6MWD47pZB5avTrg==} 3646 | dev: false 3647 | 3648 | /pino/6.11.3: 3649 | resolution: {integrity: sha512-drPtqkkSf0ufx2gaea3TryFiBHdNIdXKf5LN0hTM82SXI4xVIve2wLwNg92e1MT6m3jASLu6VO7eGY6+mmGeyw==} 3650 | hasBin: true 3651 | dependencies: 3652 | fast-redact: 3.0.1 3653 | fast-safe-stringify: 2.0.7 3654 | flatstr: 1.0.12 3655 | pino-std-serializers: 3.2.0 3656 | quick-format-unescaped: 4.0.3 3657 | sonic-boom: 1.4.1 3658 | dev: false 3659 | 3660 | /pkg-conf/3.1.0: 3661 | resolution: {integrity: sha512-m0OTbR/5VPNPqO1ph6Fqbj7Hv6QU7gR/tQW40ZqrL1rjgCU85W6C1bJn0BItuJqnR98PWzw7Z8hHeChD1WrgdQ==} 3662 | engines: {node: '>=6'} 3663 | dependencies: 3664 | find-up: 3.0.0 3665 | load-json-file: 5.3.0 3666 | dev: true 3667 | 3668 | /pkg-dir/4.2.0: 3669 | resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} 3670 | engines: {node: '>=8'} 3671 | dependencies: 3672 | find-up: 4.1.0 3673 | dev: true 3674 | 3675 | /please-upgrade-node/3.2.0: 3676 | resolution: {integrity: sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==} 3677 | dependencies: 3678 | semver-compare: 1.0.0 3679 | dev: true 3680 | 3681 | /plur/4.0.0: 3682 | resolution: {integrity: sha512-4UGewrYgqDFw9vV6zNV+ADmPAUAfJPKtGvb/VdpQAx25X5f3xXdGdyOEVFwkl8Hl/tl7+xbeHqSEM+D5/TirUg==} 3683 | engines: {node: '>=10'} 3684 | dependencies: 3685 | irregular-plurals: 3.3.0 3686 | dev: true 3687 | 3688 | /postgres-array/2.0.0: 3689 | resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} 3690 | engines: {node: '>=4'} 3691 | dev: false 3692 | 3693 | /postgres-bytea/1.0.0: 3694 | resolution: {integrity: sha1-AntTPAqokOJtFy1Hz5zOzFIazTU=} 3695 | engines: {node: '>=0.10.0'} 3696 | dev: false 3697 | 3698 | /postgres-date/1.0.7: 3699 | resolution: {integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==} 3700 | engines: {node: '>=0.10.0'} 3701 | dev: false 3702 | 3703 | /postgres-interval/1.2.0: 3704 | resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==} 3705 | engines: {node: '>=0.10.0'} 3706 | dependencies: 3707 | xtend: 4.0.2 3708 | dev: false 3709 | 3710 | /prelude-ls/1.2.1: 3711 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 3712 | engines: {node: '>= 0.8.0'} 3713 | dev: true 3714 | 3715 | /prepend-http/2.0.0: 3716 | resolution: {integrity: sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=} 3717 | engines: {node: '>=4'} 3718 | dev: true 3719 | 3720 | /prettier-linter-helpers/1.0.0: 3721 | resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} 3722 | engines: {node: '>=6.0.0'} 3723 | dependencies: 3724 | fast-diff: 1.2.0 3725 | dev: true 3726 | 3727 | /prettier/2.3.2: 3728 | resolution: {integrity: sha512-lnJzDfJ66zkMy58OL5/NY5zp70S7Nz6KqcKkXYzn2tMVrNxvbqaBpg7H3qHaLxCJ5lNMsGuM8+ohS7cZrthdLQ==} 3729 | engines: {node: '>=10.13.0'} 3730 | hasBin: true 3731 | dev: true 3732 | 3733 | /pretty-ms/7.0.1: 3734 | resolution: {integrity: sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==} 3735 | engines: {node: '>=10'} 3736 | dependencies: 3737 | parse-ms: 2.1.0 3738 | dev: true 3739 | 3740 | /process-nextick-args/2.0.1: 3741 | resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} 3742 | dev: false 3743 | 3744 | /process-on-spawn/1.0.0: 3745 | resolution: {integrity: sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==} 3746 | engines: {node: '>=8'} 3747 | dependencies: 3748 | fromentries: 1.3.2 3749 | dev: true 3750 | 3751 | /progress/2.0.3: 3752 | resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} 3753 | engines: {node: '>=0.4.0'} 3754 | dev: true 3755 | 3756 | /proxy-addr/2.0.7: 3757 | resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} 3758 | engines: {node: '>= 0.10'} 3759 | dependencies: 3760 | forwarded: 0.2.0 3761 | ipaddr.js: 1.9.1 3762 | dev: false 3763 | 3764 | /pump/3.0.0: 3765 | resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} 3766 | dependencies: 3767 | end-of-stream: 1.4.4 3768 | once: 1.4.0 3769 | dev: true 3770 | 3771 | /punycode/2.1.1: 3772 | resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} 3773 | engines: {node: '>=6'} 3774 | dev: true 3775 | 3776 | /pupa/2.1.1: 3777 | resolution: {integrity: sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==} 3778 | engines: {node: '>=8'} 3779 | dependencies: 3780 | escape-goat: 2.1.1 3781 | dev: true 3782 | 3783 | /qs/6.10.1: 3784 | resolution: {integrity: sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==} 3785 | engines: {node: '>=0.6'} 3786 | dependencies: 3787 | side-channel: 1.0.4 3788 | dev: true 3789 | 3790 | /qs/6.7.0: 3791 | resolution: {integrity: sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==} 3792 | engines: {node: '>=0.6'} 3793 | dev: false 3794 | 3795 | /queue-microtask/1.2.3: 3796 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 3797 | 3798 | /quick-format-unescaped/4.0.3: 3799 | resolution: {integrity: sha512-MaL/oqh02mhEo5m5J2rwsVL23Iw2PEaGVHgT2vFt8AAsr0lfvQA5dpXo9TPu0rz7tSBdUPgkbam0j/fj5ZM8yg==} 3800 | dev: false 3801 | 3802 | /range-parser/1.2.1: 3803 | resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} 3804 | engines: {node: '>= 0.6'} 3805 | dev: false 3806 | 3807 | /raw-body/2.4.0: 3808 | resolution: {integrity: sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==} 3809 | engines: {node: '>= 0.8'} 3810 | dependencies: 3811 | bytes: 3.1.0 3812 | http-errors: 1.7.2 3813 | iconv-lite: 0.4.24 3814 | unpipe: 1.0.0 3815 | dev: false 3816 | 3817 | /rc/1.2.8: 3818 | resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} 3819 | hasBin: true 3820 | dependencies: 3821 | deep-extend: 0.6.0 3822 | ini: 1.3.8 3823 | minimist: 1.2.5 3824 | strip-json-comments: 2.0.1 3825 | dev: true 3826 | 3827 | /read-pkg-up/1.0.1: 3828 | resolution: {integrity: sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=} 3829 | engines: {node: '>=0.10.0'} 3830 | dependencies: 3831 | find-up: 1.1.2 3832 | read-pkg: 1.1.0 3833 | dev: true 3834 | 3835 | /read-pkg/1.1.0: 3836 | resolution: {integrity: sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=} 3837 | engines: {node: '>=0.10.0'} 3838 | dependencies: 3839 | load-json-file: 1.1.0 3840 | normalize-package-data: 2.5.0 3841 | path-type: 1.1.0 3842 | dev: true 3843 | 3844 | /read-pkg/5.2.0: 3845 | resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} 3846 | engines: {node: '>=8'} 3847 | dependencies: 3848 | '@types/normalize-package-data': 2.4.0 3849 | normalize-package-data: 2.5.0 3850 | parse-json: 5.2.0 3851 | type-fest: 0.6.0 3852 | dev: true 3853 | 3854 | /readable-stream/1.1.14: 3855 | resolution: {integrity: sha1-fPTFTvZI44EwhMY23SB54WbAgdk=} 3856 | dependencies: 3857 | core-util-is: 1.0.2 3858 | inherits: 2.0.4 3859 | isarray: 0.0.1 3860 | string_decoder: 0.10.31 3861 | dev: false 3862 | 3863 | /readable-stream/2.3.7: 3864 | resolution: {integrity: sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==} 3865 | dependencies: 3866 | core-util-is: 1.0.2 3867 | inherits: 2.0.4 3868 | isarray: 1.0.0 3869 | process-nextick-args: 2.0.1 3870 | safe-buffer: 5.1.2 3871 | string_decoder: 1.1.1 3872 | util-deprecate: 1.0.2 3873 | dev: false 3874 | 3875 | /readable-stream/3.6.0: 3876 | resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==} 3877 | engines: {node: '>= 6'} 3878 | dependencies: 3879 | inherits: 2.0.4 3880 | string_decoder: 1.3.0 3881 | util-deprecate: 1.0.2 3882 | 3883 | /readdirp/3.6.0: 3884 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 3885 | engines: {node: '>=8.10.0'} 3886 | dependencies: 3887 | picomatch: 2.3.0 3888 | dev: true 3889 | 3890 | /redent/1.0.0: 3891 | resolution: {integrity: sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=} 3892 | engines: {node: '>=0.10.0'} 3893 | dependencies: 3894 | indent-string: 2.1.0 3895 | strip-indent: 1.0.1 3896 | dev: true 3897 | 3898 | /reflect-metadata/0.1.13: 3899 | resolution: {integrity: sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==} 3900 | dev: false 3901 | 3902 | /regexpp/3.2.0: 3903 | resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} 3904 | engines: {node: '>=8'} 3905 | dev: true 3906 | 3907 | /registry-auth-token/4.2.1: 3908 | resolution: {integrity: sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==} 3909 | engines: {node: '>=6.0.0'} 3910 | dependencies: 3911 | rc: 1.2.8 3912 | dev: true 3913 | 3914 | /registry-url/5.1.0: 3915 | resolution: {integrity: sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==} 3916 | engines: {node: '>=8'} 3917 | dependencies: 3918 | rc: 1.2.8 3919 | dev: true 3920 | 3921 | /release-zalgo/1.0.0: 3922 | resolution: {integrity: sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=} 3923 | engines: {node: '>=4'} 3924 | dependencies: 3925 | es6-error: 4.1.1 3926 | dev: true 3927 | 3928 | /repeating/2.0.1: 3929 | resolution: {integrity: sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=} 3930 | engines: {node: '>=0.10.0'} 3931 | dependencies: 3932 | is-finite: 1.1.0 3933 | dev: true 3934 | 3935 | /require-directory/2.1.1: 3936 | resolution: {integrity: sha1-jGStX9MNqxyXbiNE/+f3kqam30I=} 3937 | engines: {node: '>=0.10.0'} 3938 | 3939 | /require-from-string/2.0.2: 3940 | resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} 3941 | engines: {node: '>=0.10.0'} 3942 | dev: true 3943 | 3944 | /require-main-filename/2.0.0: 3945 | resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} 3946 | dev: true 3947 | 3948 | /resolve-cwd/3.0.0: 3949 | resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} 3950 | engines: {node: '>=8'} 3951 | dependencies: 3952 | resolve-from: 5.0.0 3953 | dev: true 3954 | 3955 | /resolve-from/4.0.0: 3956 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 3957 | engines: {node: '>=4'} 3958 | dev: true 3959 | 3960 | /resolve-from/5.0.0: 3961 | resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} 3962 | engines: {node: '>=8'} 3963 | dev: true 3964 | 3965 | /resolve/1.20.0: 3966 | resolution: {integrity: sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==} 3967 | dependencies: 3968 | is-core-module: 2.4.0 3969 | path-parse: 1.0.7 3970 | dev: true 3971 | 3972 | /responselike/1.0.2: 3973 | resolution: {integrity: sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=} 3974 | dependencies: 3975 | lowercase-keys: 1.0.1 3976 | dev: true 3977 | 3978 | /restore-cursor/3.1.0: 3979 | resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} 3980 | engines: {node: '>=8'} 3981 | dependencies: 3982 | onetime: 5.1.2 3983 | signal-exit: 3.0.3 3984 | dev: true 3985 | 3986 | /reusify/1.0.4: 3987 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 3988 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 3989 | 3990 | /rfdc/1.3.0: 3991 | resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} 3992 | dev: true 3993 | 3994 | /rimraf/2.7.1: 3995 | resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} 3996 | hasBin: true 3997 | dependencies: 3998 | glob: 7.1.7 3999 | dev: true 4000 | 4001 | /rimraf/3.0.2: 4002 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} 4003 | hasBin: true 4004 | dependencies: 4005 | glob: 7.1.7 4006 | dev: true 4007 | 4008 | /run-parallel/1.2.0: 4009 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 4010 | dependencies: 4011 | queue-microtask: 1.2.3 4012 | 4013 | /rxjs/6.6.7: 4014 | resolution: {integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==} 4015 | engines: {npm: '>=2.0.0'} 4016 | dependencies: 4017 | tslib: 1.14.1 4018 | 4019 | /safe-buffer/5.1.2: 4020 | resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} 4021 | 4022 | /safe-buffer/5.2.1: 4023 | resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} 4024 | 4025 | /safer-buffer/2.1.2: 4026 | resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} 4027 | dev: false 4028 | 4029 | /sax/1.2.4: 4030 | resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==} 4031 | dev: false 4032 | 4033 | /semver-compare/1.0.0: 4034 | resolution: {integrity: sha1-De4hahyUGrN+nvsXiPavxf9VN/w=} 4035 | dev: true 4036 | 4037 | /semver-diff/3.1.1: 4038 | resolution: {integrity: sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==} 4039 | engines: {node: '>=8'} 4040 | dependencies: 4041 | semver: 6.3.0 4042 | dev: true 4043 | 4044 | /semver/5.7.1: 4045 | resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} 4046 | hasBin: true 4047 | 4048 | /semver/6.3.0: 4049 | resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} 4050 | hasBin: true 4051 | dev: true 4052 | 4053 | /semver/7.3.5: 4054 | resolution: {integrity: sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==} 4055 | engines: {node: '>=10'} 4056 | hasBin: true 4057 | dependencies: 4058 | lru-cache: 6.0.0 4059 | dev: true 4060 | 4061 | /send/0.17.1: 4062 | resolution: {integrity: sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==} 4063 | engines: {node: '>= 0.8.0'} 4064 | dependencies: 4065 | debug: 2.6.9 4066 | depd: 1.1.2 4067 | destroy: 1.0.4 4068 | encodeurl: 1.0.2 4069 | escape-html: 1.0.3 4070 | etag: 1.8.1 4071 | fresh: 0.5.2 4072 | http-errors: 1.7.3 4073 | mime: 1.6.0 4074 | ms: 2.1.1 4075 | on-finished: 2.3.0 4076 | range-parser: 1.2.1 4077 | statuses: 1.5.0 4078 | dev: false 4079 | 4080 | /serialize-error/7.0.1: 4081 | resolution: {integrity: sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==} 4082 | engines: {node: '>=10'} 4083 | dependencies: 4084 | type-fest: 0.13.1 4085 | dev: true 4086 | 4087 | /serve-static/1.14.1: 4088 | resolution: {integrity: sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==} 4089 | engines: {node: '>= 0.8.0'} 4090 | dependencies: 4091 | encodeurl: 1.0.2 4092 | escape-html: 1.0.3 4093 | parseurl: 1.3.3 4094 | send: 0.17.1 4095 | dev: false 4096 | 4097 | /set-blocking/2.0.0: 4098 | resolution: {integrity: sha1-BF+XgtARrppoA93TgrJDkrPYkPc=} 4099 | dev: true 4100 | 4101 | /setprototypeof/1.1.1: 4102 | resolution: {integrity: sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==} 4103 | dev: false 4104 | 4105 | /sha.js/2.4.11: 4106 | resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} 4107 | hasBin: true 4108 | dependencies: 4109 | inherits: 2.0.4 4110 | safe-buffer: 5.2.1 4111 | dev: false 4112 | 4113 | /shebang-command/2.0.0: 4114 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 4115 | engines: {node: '>=8'} 4116 | dependencies: 4117 | shebang-regex: 3.0.0 4118 | dev: true 4119 | 4120 | /shebang-regex/3.0.0: 4121 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 4122 | engines: {node: '>=8'} 4123 | dev: true 4124 | 4125 | /side-channel/1.0.4: 4126 | resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} 4127 | dependencies: 4128 | call-bind: 1.0.2 4129 | get-intrinsic: 1.1.1 4130 | object-inspect: 1.10.3 4131 | dev: true 4132 | 4133 | /signal-exit/3.0.3: 4134 | resolution: {integrity: sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==} 4135 | dev: true 4136 | 4137 | /slash/3.0.0: 4138 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 4139 | engines: {node: '>=8'} 4140 | 4141 | /slice-ansi/3.0.0: 4142 | resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==} 4143 | engines: {node: '>=8'} 4144 | dependencies: 4145 | ansi-styles: 4.3.0 4146 | astral-regex: 2.0.0 4147 | is-fullwidth-code-point: 3.0.0 4148 | dev: true 4149 | 4150 | /slice-ansi/4.0.0: 4151 | resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} 4152 | engines: {node: '>=10'} 4153 | dependencies: 4154 | ansi-styles: 4.3.0 4155 | astral-regex: 2.0.0 4156 | is-fullwidth-code-point: 3.0.0 4157 | dev: true 4158 | 4159 | /sonic-boom/1.4.1: 4160 | resolution: {integrity: sha512-LRHh/A8tpW7ru89lrlkU4AszXt1dbwSjVWguGrmlxE7tawVmDBlI1PILMkXAxJTwqhgsEeTHzj36D5CmHgQmNg==} 4161 | dependencies: 4162 | atomic-sleep: 1.0.0 4163 | flatstr: 1.0.12 4164 | dev: false 4165 | 4166 | /source-map-support/0.5.19: 4167 | resolution: {integrity: sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==} 4168 | dependencies: 4169 | buffer-from: 1.1.1 4170 | source-map: 0.6.1 4171 | dev: true 4172 | 4173 | /source-map/0.5.7: 4174 | resolution: {integrity: sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=} 4175 | engines: {node: '>=0.10.0'} 4176 | dev: true 4177 | 4178 | /source-map/0.6.1: 4179 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} 4180 | engines: {node: '>=0.10.0'} 4181 | dev: true 4182 | 4183 | /spawn-wrap/2.0.0: 4184 | resolution: {integrity: sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==} 4185 | engines: {node: '>=8'} 4186 | dependencies: 4187 | foreground-child: 2.0.0 4188 | is-windows: 1.0.2 4189 | make-dir: 3.1.0 4190 | rimraf: 3.0.2 4191 | signal-exit: 3.0.3 4192 | which: 2.0.2 4193 | dev: true 4194 | 4195 | /spdx-correct/3.1.1: 4196 | resolution: {integrity: sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==} 4197 | dependencies: 4198 | spdx-expression-parse: 3.0.1 4199 | spdx-license-ids: 3.0.9 4200 | dev: true 4201 | 4202 | /spdx-exceptions/2.3.0: 4203 | resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} 4204 | dev: true 4205 | 4206 | /spdx-expression-parse/3.0.1: 4207 | resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} 4208 | dependencies: 4209 | spdx-exceptions: 2.3.0 4210 | spdx-license-ids: 3.0.9 4211 | dev: true 4212 | 4213 | /spdx-license-ids/3.0.9: 4214 | resolution: {integrity: sha512-Ki212dKK4ogX+xDo4CtOZBVIwhsKBEfsEEcwmJfLQzirgc2jIWdzg40Unxz/HzEUqM1WFzVlQSMF9kZZ2HboLQ==} 4215 | dev: true 4216 | 4217 | /split2/3.2.2: 4218 | resolution: {integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==} 4219 | dependencies: 4220 | readable-stream: 3.6.0 4221 | 4222 | /sprintf-js/1.0.3: 4223 | resolution: {integrity: sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=} 4224 | dev: true 4225 | 4226 | /sqlstring/2.3.1: 4227 | resolution: {integrity: sha1-R1OT/56RR5rqYtyvDKPRSYOn+0A=} 4228 | engines: {node: '>= 0.6'} 4229 | dev: false 4230 | 4231 | /stack-utils/2.0.3: 4232 | resolution: {integrity: sha512-gL//fkxfWUsIlFL2Tl42Cl6+HFALEaB1FU76I/Fy+oZjRreP7OPMXFlGbxM7NQsI0ZpUfw76sHnv0WNYuTb7Iw==} 4233 | engines: {node: '>=10'} 4234 | dependencies: 4235 | escape-string-regexp: 2.0.0 4236 | dev: true 4237 | 4238 | /statuses/1.5.0: 4239 | resolution: {integrity: sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=} 4240 | engines: {node: '>= 0.6'} 4241 | dev: false 4242 | 4243 | /streamsearch/0.1.2: 4244 | resolution: {integrity: sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo=} 4245 | engines: {node: '>=0.8.0'} 4246 | dev: false 4247 | 4248 | /string-argv/0.3.1: 4249 | resolution: {integrity: sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==} 4250 | engines: {node: '>=0.6.19'} 4251 | dev: true 4252 | 4253 | /string-width/3.1.0: 4254 | resolution: {integrity: sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==} 4255 | engines: {node: '>=6'} 4256 | dependencies: 4257 | emoji-regex: 7.0.3 4258 | is-fullwidth-code-point: 2.0.0 4259 | strip-ansi: 5.2.0 4260 | dev: true 4261 | 4262 | /string-width/4.2.2: 4263 | resolution: {integrity: sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==} 4264 | engines: {node: '>=8'} 4265 | dependencies: 4266 | emoji-regex: 8.0.0 4267 | is-fullwidth-code-point: 3.0.0 4268 | strip-ansi: 6.0.0 4269 | 4270 | /string_decoder/0.10.31: 4271 | resolution: {integrity: sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=} 4272 | dev: false 4273 | 4274 | /string_decoder/1.1.1: 4275 | resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} 4276 | dependencies: 4277 | safe-buffer: 5.1.2 4278 | dev: false 4279 | 4280 | /string_decoder/1.3.0: 4281 | resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} 4282 | dependencies: 4283 | safe-buffer: 5.2.1 4284 | 4285 | /stringify-object/3.3.0: 4286 | resolution: {integrity: sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==} 4287 | engines: {node: '>=4'} 4288 | dependencies: 4289 | get-own-enumerable-property-symbols: 3.0.2 4290 | is-obj: 1.0.1 4291 | is-regexp: 1.0.0 4292 | dev: true 4293 | 4294 | /strip-ansi/3.0.1: 4295 | resolution: {integrity: sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=} 4296 | engines: {node: '>=0.10.0'} 4297 | dependencies: 4298 | ansi-regex: 2.1.1 4299 | dev: false 4300 | 4301 | /strip-ansi/5.2.0: 4302 | resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==} 4303 | engines: {node: '>=6'} 4304 | dependencies: 4305 | ansi-regex: 4.1.0 4306 | dev: true 4307 | 4308 | /strip-ansi/6.0.0: 4309 | resolution: {integrity: sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==} 4310 | engines: {node: '>=8'} 4311 | dependencies: 4312 | ansi-regex: 5.0.0 4313 | 4314 | /strip-bom/2.0.0: 4315 | resolution: {integrity: sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=} 4316 | engines: {node: '>=0.10.0'} 4317 | dependencies: 4318 | is-utf8: 0.2.1 4319 | dev: true 4320 | 4321 | /strip-bom/3.0.0: 4322 | resolution: {integrity: sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=} 4323 | engines: {node: '>=4'} 4324 | dev: true 4325 | 4326 | /strip-bom/4.0.0: 4327 | resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} 4328 | engines: {node: '>=8'} 4329 | dev: true 4330 | 4331 | /strip-final-newline/2.0.0: 4332 | resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} 4333 | engines: {node: '>=6'} 4334 | dev: true 4335 | 4336 | /strip-indent/1.0.1: 4337 | resolution: {integrity: sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=} 4338 | engines: {node: '>=0.10.0'} 4339 | hasBin: true 4340 | dependencies: 4341 | get-stdin: 4.0.1 4342 | dev: true 4343 | 4344 | /strip-json-comments/2.0.1: 4345 | resolution: {integrity: sha1-PFMZQukIwml8DsNEhYwobHygpgo=} 4346 | engines: {node: '>=0.10.0'} 4347 | dev: true 4348 | 4349 | /strip-json-comments/3.1.1: 4350 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 4351 | engines: {node: '>=8'} 4352 | dev: true 4353 | 4354 | /superagent/6.1.0: 4355 | resolution: {integrity: sha512-OUDHEssirmplo3F+1HWKUrUjvnQuA+nZI6i/JJBdXb5eq9IyEQwPyPpqND+SSsxf6TygpBEkUjISVRN4/VOpeg==} 4356 | engines: {node: '>= 7.0.0'} 4357 | dependencies: 4358 | component-emitter: 1.3.0 4359 | cookiejar: 2.1.2 4360 | debug: 4.3.1 4361 | fast-safe-stringify: 2.0.7 4362 | form-data: 3.0.1 4363 | formidable: 1.2.2 4364 | methods: 1.1.2 4365 | mime: 2.5.2 4366 | qs: 6.10.1 4367 | readable-stream: 3.6.0 4368 | semver: 7.3.5 4369 | transitivePeerDependencies: 4370 | - supports-color 4371 | dev: true 4372 | 4373 | /supertap/2.0.0: 4374 | resolution: {integrity: sha512-jRzcXlCeDYvKoZGA5oRhYyR3jUIYu0enkSxtmAgHRlD7HwrovTpH4bDSi0py9FtuA8si9cW/fKommJHuaoDHJA==} 4375 | engines: {node: '>=10'} 4376 | dependencies: 4377 | arrify: 2.0.1 4378 | indent-string: 4.0.0 4379 | js-yaml: 3.14.1 4380 | serialize-error: 7.0.1 4381 | strip-ansi: 6.0.0 4382 | dev: true 4383 | 4384 | /supertest/6.1.3: 4385 | resolution: {integrity: sha512-v2NVRyP73XDewKb65adz+yug1XMtmvij63qIWHZzSX8tp6wiq6xBLUy4SUAd2NII6wIipOmHT/FD9eicpJwdgQ==} 4386 | engines: {node: '>=6.0.0'} 4387 | dependencies: 4388 | methods: 1.1.2 4389 | superagent: 6.1.0 4390 | transitivePeerDependencies: 4391 | - supports-color 4392 | dev: true 4393 | 4394 | /supports-color/2.0.0: 4395 | resolution: {integrity: sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=} 4396 | engines: {node: '>=0.8.0'} 4397 | dev: false 4398 | 4399 | /supports-color/5.5.0: 4400 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} 4401 | engines: {node: '>=4'} 4402 | dependencies: 4403 | has-flag: 3.0.0 4404 | dev: true 4405 | 4406 | /supports-color/7.2.0: 4407 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 4408 | engines: {node: '>=8'} 4409 | dependencies: 4410 | has-flag: 4.0.0 4411 | 4412 | /table/6.7.1: 4413 | resolution: {integrity: sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==} 4414 | engines: {node: '>=10.0.0'} 4415 | dependencies: 4416 | ajv: 8.6.0 4417 | lodash.clonedeep: 4.5.0 4418 | lodash.truncate: 4.4.2 4419 | slice-ansi: 4.0.0 4420 | string-width: 4.2.2 4421 | strip-ansi: 6.0.0 4422 | dev: true 4423 | 4424 | /temp-dir/2.0.0: 4425 | resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==} 4426 | engines: {node: '>=8'} 4427 | dev: true 4428 | 4429 | /test-exclude/6.0.0: 4430 | resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} 4431 | engines: {node: '>=8'} 4432 | dependencies: 4433 | '@istanbuljs/schema': 0.1.3 4434 | glob: 7.1.7 4435 | minimatch: 3.0.4 4436 | dev: true 4437 | 4438 | /text-table/0.2.0: 4439 | resolution: {integrity: sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=} 4440 | dev: true 4441 | 4442 | /thenify-all/1.6.0: 4443 | resolution: {integrity: sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=} 4444 | engines: {node: '>=0.8'} 4445 | dependencies: 4446 | thenify: 3.3.1 4447 | dev: false 4448 | 4449 | /thenify/3.3.1: 4450 | resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} 4451 | dependencies: 4452 | any-promise: 1.3.0 4453 | dev: false 4454 | 4455 | /through/2.3.8: 4456 | resolution: {integrity: sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=} 4457 | dev: true 4458 | 4459 | /time-zone/1.0.0: 4460 | resolution: {integrity: sha1-mcW/VZWJZq9tBtg73zgA3IL67F0=} 4461 | engines: {node: '>=4'} 4462 | dev: true 4463 | 4464 | /to-fast-properties/2.0.0: 4465 | resolution: {integrity: sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=} 4466 | engines: {node: '>=4'} 4467 | dev: true 4468 | 4469 | /to-readable-stream/1.0.0: 4470 | resolution: {integrity: sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==} 4471 | engines: {node: '>=6'} 4472 | dev: true 4473 | 4474 | /to-regex-range/5.0.1: 4475 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 4476 | engines: {node: '>=8.0'} 4477 | dependencies: 4478 | is-number: 7.0.0 4479 | 4480 | /toidentifier/1.0.0: 4481 | resolution: {integrity: sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==} 4482 | engines: {node: '>=0.6'} 4483 | dev: false 4484 | 4485 | /tree-kill/1.2.2: 4486 | resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} 4487 | hasBin: true 4488 | dev: true 4489 | 4490 | /trim-newlines/1.0.0: 4491 | resolution: {integrity: sha1-WIeWa7WCpFA6QetST301ARgVphM=} 4492 | engines: {node: '>=0.10.0'} 4493 | dev: true 4494 | 4495 | /trim-off-newlines/1.0.1: 4496 | resolution: {integrity: sha1-n5up2e+odkw4dpi8v+sshI8RrbM=} 4497 | engines: {node: '>=0.10.0'} 4498 | dev: true 4499 | 4500 | /ts-node-dev/1.1.6_typescript@4.3.4: 4501 | resolution: {integrity: sha512-RTUi7mHMNQospArGz07KiraQcdgUVNXKsgO2HAi7FoiyPMdTDqdniB6K1dqyaIxT7c9v/VpSbfBZPS6uVpaFLQ==} 4502 | engines: {node: '>=0.8.0'} 4503 | hasBin: true 4504 | peerDependencies: 4505 | node-notifier: '*' 4506 | typescript: '*' 4507 | peerDependenciesMeta: 4508 | node-notifier: 4509 | optional: true 4510 | dependencies: 4511 | chokidar: 3.5.2 4512 | dateformat: 1.0.12 4513 | dynamic-dedupe: 0.3.0 4514 | minimist: 1.2.5 4515 | mkdirp: 1.0.4 4516 | resolve: 1.20.0 4517 | rimraf: 2.7.1 4518 | source-map-support: 0.5.19 4519 | tree-kill: 1.2.2 4520 | ts-node: 9.1.1_typescript@4.3.4 4521 | tsconfig: 7.0.0 4522 | typescript: 4.3.4 4523 | dev: true 4524 | 4525 | /ts-node/10.0.0_83f53b0a0c5616d3fa00ed4e30b9ce1b: 4526 | resolution: {integrity: sha512-ROWeOIUvfFbPZkoDis0L/55Fk+6gFQNZwwKPLinacRl6tsxstTF1DbAcLKkovwnpKMVvOMHP1TIbnwXwtLg1gg==} 4527 | engines: {node: '>=12.0.0'} 4528 | hasBin: true 4529 | peerDependencies: 4530 | '@swc/core': '>=1.2.45' 4531 | '@swc/wasm': '>=1.2.45' 4532 | '@types/node': '*' 4533 | typescript: '>=2.7' 4534 | peerDependenciesMeta: 4535 | '@swc/core': 4536 | optional: true 4537 | '@swc/wasm': 4538 | optional: true 4539 | dependencies: 4540 | '@tsconfig/node10': 1.0.8 4541 | '@tsconfig/node12': 1.0.9 4542 | '@tsconfig/node14': 1.0.1 4543 | '@tsconfig/node16': 1.0.1 4544 | '@types/node': 15.12.4 4545 | arg: 4.1.3 4546 | create-require: 1.1.1 4547 | diff: 4.0.2 4548 | make-error: 1.3.6 4549 | source-map-support: 0.5.19 4550 | typescript: 4.3.4 4551 | yn: 3.1.1 4552 | dev: true 4553 | 4554 | /ts-node/9.1.1_typescript@4.3.4: 4555 | resolution: {integrity: sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==} 4556 | engines: {node: '>=10.0.0'} 4557 | hasBin: true 4558 | peerDependencies: 4559 | typescript: '>=2.7' 4560 | dependencies: 4561 | arg: 4.1.3 4562 | create-require: 1.1.1 4563 | diff: 4.0.2 4564 | make-error: 1.3.6 4565 | source-map-support: 0.5.19 4566 | typescript: 4.3.4 4567 | yn: 3.1.1 4568 | dev: true 4569 | 4570 | /tsconfig/7.0.0: 4571 | resolution: {integrity: sha512-vZXmzPrL+EmC4T/4rVlT2jNVMWCi/O4DIiSj3UHg1OE5kCKbk4mfrXc6dZksLgRM/TZlKnousKH9bbTazUWRRw==} 4572 | dependencies: 4573 | '@types/strip-bom': 3.0.0 4574 | '@types/strip-json-comments': 0.0.30 4575 | strip-bom: 3.0.0 4576 | strip-json-comments: 2.0.1 4577 | dev: true 4578 | 4579 | /tslib/1.14.1: 4580 | resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} 4581 | 4582 | /tslib/2.2.0: 4583 | resolution: {integrity: sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==} 4584 | 4585 | /tslib/2.3.0: 4586 | resolution: {integrity: sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==} 4587 | dev: false 4588 | 4589 | /tsutils/3.21.0_typescript@4.3.4: 4590 | resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} 4591 | engines: {node: '>= 6'} 4592 | peerDependencies: 4593 | typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' 4594 | dependencies: 4595 | tslib: 1.14.1 4596 | typescript: 4.3.4 4597 | dev: true 4598 | 4599 | /type-check/0.4.0: 4600 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 4601 | engines: {node: '>= 0.8.0'} 4602 | dependencies: 4603 | prelude-ls: 1.2.1 4604 | dev: true 4605 | 4606 | /type-fest/0.13.1: 4607 | resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} 4608 | engines: {node: '>=10'} 4609 | dev: true 4610 | 4611 | /type-fest/0.20.2: 4612 | resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} 4613 | engines: {node: '>=10'} 4614 | dev: true 4615 | 4616 | /type-fest/0.21.3: 4617 | resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} 4618 | engines: {node: '>=10'} 4619 | dev: true 4620 | 4621 | /type-fest/0.3.1: 4622 | resolution: {integrity: sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==} 4623 | engines: {node: '>=6'} 4624 | dev: true 4625 | 4626 | /type-fest/0.6.0: 4627 | resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} 4628 | engines: {node: '>=8'} 4629 | dev: true 4630 | 4631 | /type-fest/0.8.1: 4632 | resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} 4633 | engines: {node: '>=8'} 4634 | dev: true 4635 | 4636 | /type-is/1.6.18: 4637 | resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} 4638 | engines: {node: '>= 0.6'} 4639 | dependencies: 4640 | media-typer: 0.3.0 4641 | mime-types: 2.1.31 4642 | dev: false 4643 | 4644 | /typedarray-to-buffer/3.1.5: 4645 | resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} 4646 | dependencies: 4647 | is-typedarray: 1.0.0 4648 | dev: true 4649 | 4650 | /typedarray/0.0.6: 4651 | resolution: {integrity: sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=} 4652 | dev: false 4653 | 4654 | /typeorm/0.2.34: 4655 | resolution: {integrity: sha512-FZAeEGGdSGq7uTH3FWRQq67JjKu0mgANsSZ04j3kvDYNgy9KwBl/6RFgMVgiSgjf7Rqd7NrhC2KxVT7I80qf7w==} 4656 | hasBin: true 4657 | dependencies: 4658 | '@sqltools/formatter': 1.2.3 4659 | app-root-path: 3.0.0 4660 | buffer: 6.0.3 4661 | chalk: 4.1.1 4662 | cli-highlight: 2.1.11 4663 | debug: 4.3.1 4664 | dotenv: 8.6.0 4665 | glob: 7.1.7 4666 | js-yaml: 4.1.0 4667 | mkdirp: 1.0.4 4668 | reflect-metadata: 0.1.13 4669 | sha.js: 2.4.11 4670 | tslib: 2.3.0 4671 | xml2js: 0.4.23 4672 | yargonaut: 1.1.4 4673 | yargs: 16.2.0 4674 | zen-observable-ts: 1.0.0 4675 | transitivePeerDependencies: 4676 | - supports-color 4677 | dev: false 4678 | 4679 | /typescript/4.3.4: 4680 | resolution: {integrity: sha512-uauPG7XZn9F/mo+7MrsRjyvbxFpzemRjKEZXS4AK83oP2KKOJPvb+9cO/gmnv8arWZvhnjVOXz7B49m1l0e9Ew==} 4681 | engines: {node: '>=4.2.0'} 4682 | hasBin: true 4683 | dev: false 4684 | 4685 | /unique-string/2.0.0: 4686 | resolution: {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==} 4687 | engines: {node: '>=8'} 4688 | dependencies: 4689 | crypto-random-string: 2.0.0 4690 | dev: true 4691 | 4692 | /unpipe/1.0.0: 4693 | resolution: {integrity: sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=} 4694 | engines: {node: '>= 0.8'} 4695 | dev: false 4696 | 4697 | /update-notifier/5.1.0: 4698 | resolution: {integrity: sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==} 4699 | engines: {node: '>=10'} 4700 | dependencies: 4701 | boxen: 5.0.1 4702 | chalk: 4.1.1 4703 | configstore: 5.0.1 4704 | has-yarn: 2.1.0 4705 | import-lazy: 2.1.0 4706 | is-ci: 2.0.0 4707 | is-installed-globally: 0.4.0 4708 | is-npm: 5.0.0 4709 | is-yarn-global: 0.3.0 4710 | latest-version: 5.1.0 4711 | pupa: 2.1.1 4712 | semver: 7.3.5 4713 | semver-diff: 3.1.1 4714 | xdg-basedir: 4.0.0 4715 | dev: true 4716 | 4717 | /uri-js/4.4.1: 4718 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 4719 | dependencies: 4720 | punycode: 2.1.1 4721 | dev: true 4722 | 4723 | /url-parse-lax/3.0.0: 4724 | resolution: {integrity: sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=} 4725 | engines: {node: '>=4'} 4726 | dependencies: 4727 | prepend-http: 2.0.0 4728 | dev: true 4729 | 4730 | /util-deprecate/1.0.2: 4731 | resolution: {integrity: sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=} 4732 | 4733 | /utils-merge/1.0.1: 4734 | resolution: {integrity: sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=} 4735 | engines: {node: '>= 0.4.0'} 4736 | dev: false 4737 | 4738 | /uuid/3.4.0: 4739 | resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==} 4740 | deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. 4741 | hasBin: true 4742 | dev: true 4743 | 4744 | /uuid/8.3.1: 4745 | resolution: {integrity: sha512-FOmRr+FmWEIG8uhZv6C2bTgEVXsHk08kE7mPlrBbEe+c3r9pjceVPgupIfNIhc4yx55H69OXANrUaSuu9eInKg==} 4746 | hasBin: true 4747 | dev: false 4748 | 4749 | /uuid/8.3.2: 4750 | resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} 4751 | hasBin: true 4752 | dev: false 4753 | 4754 | /v8-compile-cache/2.3.0: 4755 | resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==} 4756 | dev: true 4757 | 4758 | /validate-npm-package-license/3.0.4: 4759 | resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} 4760 | dependencies: 4761 | spdx-correct: 3.1.1 4762 | spdx-expression-parse: 3.0.1 4763 | dev: true 4764 | 4765 | /vary/1.1.2: 4766 | resolution: {integrity: sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=} 4767 | engines: {node: '>= 0.8'} 4768 | dev: false 4769 | 4770 | /wcwidth/1.0.1: 4771 | resolution: {integrity: sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=} 4772 | dependencies: 4773 | defaults: 1.0.3 4774 | dev: true 4775 | 4776 | /well-known-symbols/2.0.0: 4777 | resolution: {integrity: sha512-ZMjC3ho+KXo0BfJb7JgtQ5IBuvnShdlACNkKkdsqBmYw3bPAaJfPeYUo6tLUaT5tG/Gkh7xkpBhKRQ9e7pyg9Q==} 4778 | engines: {node: '>=6'} 4779 | dev: true 4780 | 4781 | /which-module/2.0.0: 4782 | resolution: {integrity: sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=} 4783 | dev: true 4784 | 4785 | /which/2.0.2: 4786 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 4787 | engines: {node: '>= 8'} 4788 | hasBin: true 4789 | dependencies: 4790 | isexe: 2.0.0 4791 | dev: true 4792 | 4793 | /widest-line/3.1.0: 4794 | resolution: {integrity: sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==} 4795 | engines: {node: '>=8'} 4796 | dependencies: 4797 | string-width: 4.2.2 4798 | dev: true 4799 | 4800 | /word-wrap/1.2.3: 4801 | resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} 4802 | engines: {node: '>=0.10.0'} 4803 | dev: true 4804 | 4805 | /wrap-ansi/6.2.0: 4806 | resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} 4807 | engines: {node: '>=8'} 4808 | dependencies: 4809 | ansi-styles: 4.3.0 4810 | string-width: 4.2.2 4811 | strip-ansi: 6.0.0 4812 | dev: true 4813 | 4814 | /wrap-ansi/7.0.0: 4815 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} 4816 | engines: {node: '>=10'} 4817 | dependencies: 4818 | ansi-styles: 4.3.0 4819 | string-width: 4.2.2 4820 | strip-ansi: 6.0.0 4821 | 4822 | /wrappy/1.0.2: 4823 | resolution: {integrity: sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=} 4824 | 4825 | /write-file-atomic/3.0.3: 4826 | resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} 4827 | dependencies: 4828 | imurmurhash: 0.1.4 4829 | is-typedarray: 1.0.0 4830 | signal-exit: 3.0.3 4831 | typedarray-to-buffer: 3.1.5 4832 | dev: true 4833 | 4834 | /xdg-basedir/4.0.0: 4835 | resolution: {integrity: sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==} 4836 | engines: {node: '>=8'} 4837 | dev: true 4838 | 4839 | /xml2js/0.4.23: 4840 | resolution: {integrity: sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==} 4841 | engines: {node: '>=4.0.0'} 4842 | dependencies: 4843 | sax: 1.2.4 4844 | xmlbuilder: 11.0.1 4845 | dev: false 4846 | 4847 | /xmlbuilder/11.0.1: 4848 | resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} 4849 | engines: {node: '>=4.0'} 4850 | dev: false 4851 | 4852 | /xtend/4.0.2: 4853 | resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} 4854 | engines: {node: '>=0.4'} 4855 | 4856 | /y18n/4.0.3: 4857 | resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} 4858 | dev: true 4859 | 4860 | /y18n/5.0.8: 4861 | resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} 4862 | engines: {node: '>=10'} 4863 | 4864 | /yallist/4.0.0: 4865 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} 4866 | dev: true 4867 | 4868 | /yaml/1.10.2: 4869 | resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} 4870 | engines: {node: '>= 6'} 4871 | dev: true 4872 | 4873 | /yargonaut/1.1.4: 4874 | resolution: {integrity: sha512-rHgFmbgXAAzl+1nngqOcwEljqHGG9uUZoPjsdZEs1w5JW9RXYzrSvH/u70C1JE5qFi0qjsdhnUX/dJRpWqitSA==} 4875 | dependencies: 4876 | chalk: 1.1.3 4877 | figlet: 1.5.0 4878 | parent-require: 1.0.0 4879 | dev: false 4880 | 4881 | /yargs-parser/18.1.3: 4882 | resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} 4883 | engines: {node: '>=6'} 4884 | dependencies: 4885 | camelcase: 5.3.1 4886 | decamelize: 1.2.0 4887 | dev: true 4888 | 4889 | /yargs-parser/20.2.9: 4890 | resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} 4891 | engines: {node: '>=10'} 4892 | 4893 | /yargs/15.4.1: 4894 | resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} 4895 | engines: {node: '>=8'} 4896 | dependencies: 4897 | cliui: 6.0.0 4898 | decamelize: 1.2.0 4899 | find-up: 4.1.0 4900 | get-caller-file: 2.0.5 4901 | require-directory: 2.1.1 4902 | require-main-filename: 2.0.0 4903 | set-blocking: 2.0.0 4904 | string-width: 4.2.2 4905 | which-module: 2.0.0 4906 | y18n: 4.0.3 4907 | yargs-parser: 18.1.3 4908 | dev: true 4909 | 4910 | /yargs/16.2.0: 4911 | resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} 4912 | engines: {node: '>=10'} 4913 | dependencies: 4914 | cliui: 7.0.4 4915 | escalade: 3.1.1 4916 | get-caller-file: 2.0.5 4917 | require-directory: 2.1.1 4918 | string-width: 4.2.2 4919 | y18n: 5.0.8 4920 | yargs-parser: 20.2.9 4921 | 4922 | /yn/3.1.1: 4923 | resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} 4924 | engines: {node: '>=6'} 4925 | dev: true 4926 | 4927 | /zen-observable-ts/1.0.0: 4928 | resolution: {integrity: sha512-KmWcbz+9kKUeAQ8btY8m1SsEFgBcp7h/Uf3V5quhan7ZWdjGsf0JcGLULQiwOZibbFWnHkYq8Nn2AZbJabovQg==} 4929 | dependencies: 4930 | '@types/zen-observable': 0.8.2 4931 | zen-observable: 0.8.15 4932 | dev: false 4933 | 4934 | /zen-observable/0.8.15: 4935 | resolution: {integrity: sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==} 4936 | dev: false 4937 | -------------------------------------------------------------------------------- /src/app.module.ts: -------------------------------------------------------------------------------- 1 | import { MiddlewareConsumer, Module, RequestMethod } from "@nestjs/common"; 2 | import { APP_GUARD } from "@nestjs/core"; 3 | import { AuthGuard, AuthMiddleware } from "./common/authentication"; 4 | import { ConfigModule } from "./common/config"; 5 | import { DbModule, DbService } from "./common/db"; 6 | import { requireClassesSync } from "./common/loader"; 7 | import { LoggerModule } from "./common/logger.service"; 8 | import { TokenService } from "./common/token.service"; 9 | 10 | @Module({ 11 | imports: [ConfigModule, LoggerModule, DbModule], 12 | controllers: requireClassesSync(__dirname, "controller"), 13 | providers: [ 14 | { 15 | provide: APP_GUARD, 16 | useClass: AuthGuard, 17 | }, 18 | DbService, 19 | TokenService, 20 | ...requireClassesSync(__dirname, "service"), 21 | ], 22 | }) 23 | export class AppModule { 24 | public configure(consumer: MiddlewareConsumer): void { 25 | consumer 26 | .apply(AuthMiddleware) 27 | .forRoutes({ path: "*", method: RequestMethod.ALL }); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/common/authentication.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable max-classes-per-file */ 2 | 3 | import { 4 | CanActivate, 5 | createParamDecorator, 6 | ExecutionContext, 7 | Inject, 8 | Injectable, 9 | NestMiddleware, 10 | SetMetadata, 11 | UnauthorizedException, 12 | } from "@nestjs/common"; 13 | import { Reflector } from "@nestjs/core"; 14 | import { UserService } from "../service/user"; 15 | 16 | const AUTH_TYPE_ANONYMOUS = "anonymous"; 17 | const AUTH_TYPE_AUTHENTICATED = "authenticated"; 18 | 19 | export const Anonymous = (): ReturnType => 20 | SetMetadata("auth:type", AUTH_TYPE_ANONYMOUS); 21 | 22 | export const Authenticated = (): ReturnType => 23 | SetMetadata("auth:type", AUTH_TYPE_AUTHENTICATED); 24 | 25 | export const Permissions = ( 26 | ...permissions: string[] 27 | ): ReturnType => SetMetadata("auth:scope", permissions); 28 | 29 | export class AuthMiddleware implements NestMiddleware { 30 | // eslint-disable-next-line no-useless-constructor 31 | constructor(@Inject(UserService) private userService: UserService) {} 32 | 33 | // eslint-disable-next-line @typescript-eslint/no-explicit-any 34 | use(req: any, res: any, next: Function): void { 35 | if (req && req.cookies && req.cookies.token) { 36 | this.userService.getTokenInfo(req.cookies.token).then(u => { 37 | req.user = u; 38 | if (next) { 39 | next(); 40 | } 41 | }); 42 | } else if (next) { 43 | next(); 44 | } 45 | } 46 | } 47 | 48 | @Injectable() 49 | export class AuthGuard implements CanActivate { 50 | // eslint-disable-next-line no-useless-constructor 51 | constructor(private readonly reflector: Reflector) {} 52 | 53 | public canActivate(context: ExecutionContext): boolean { 54 | // decorators on methods are prior to those on class 55 | const authType = 56 | this.reflector.get("auth:type", context.getHandler()) || 57 | this.reflector.get("auth:type", context.getClass()); 58 | if (!authType) { 59 | return true; 60 | } 61 | const req = context.switchToHttp().getRequest(); 62 | 63 | const { user } = req; 64 | if (!user && authType === AUTH_TYPE_AUTHENTICATED) { 65 | throw new UnauthorizedException(); 66 | } 67 | return true; // TODO: permission check 68 | } 69 | } 70 | 71 | export const ReqUser = createParamDecorator((data, req) => { 72 | return req.user; 73 | }); 74 | -------------------------------------------------------------------------------- /src/common/config.ts: -------------------------------------------------------------------------------- 1 | import { Module } from "@nestjs/common"; 2 | import envalid, { port, str, url } from "envalid"; 3 | 4 | interface Environment extends envalid.CleanEnv { 5 | DB: string; 6 | PORT: number; 7 | JWT_TOKEN: string; 8 | } 9 | 10 | export class ConfigService { 11 | private readonly envConfig: Environment; 12 | 13 | constructor() { 14 | this.envConfig = envalid.cleanEnv< 15 | { 16 | [K in Exclude< 17 | keyof Environment, 18 | keyof envalid.CleanEnv 19 | >]: Environment[K]; 20 | } 21 | >( 22 | process.env, 23 | { 24 | DB: url({ default: "pg:///example" }), 25 | PORT: port({ default: 80, devDefault: 3000 }), 26 | JWT_TOKEN: str({ default: "94792d86" }), 27 | }, 28 | { strict: true }, 29 | ); 30 | } 31 | 32 | public get(key: K): Environment[K] { 33 | return this.envConfig[key]; 34 | } 35 | } 36 | 37 | @Module({ 38 | providers: [ConfigService], 39 | exports: [ConfigService], 40 | }) 41 | export class ConfigModule {} 42 | -------------------------------------------------------------------------------- /src/common/db.ts: -------------------------------------------------------------------------------- 1 | import { Injectable, Module } from "@nestjs/common"; 2 | import { 3 | InjectConnection, 4 | InjectRepository, 5 | TypeOrmModule, 6 | } from "@nestjs/typeorm"; 7 | import { Connection, Repository } from "typeorm"; 8 | import { ConfigModule, ConfigService } from "../common/config"; 9 | import { LoggerModule, TypeOrmLoggerService } from "../common/logger.service"; 10 | import { User } from "../entity/user"; 11 | import { requireClassesSync } from "./loader"; 12 | 13 | @Injectable() 14 | export class DbService { 15 | constructor( 16 | @InjectConnection() public readonly connection: Connection, 17 | @InjectRepository(User) public readonly users: Repository, 18 | ) {} 19 | } 20 | 21 | @Module({ 22 | imports: [ 23 | TypeOrmModule.forRootAsync({ 24 | imports: [ConfigModule, LoggerModule], 25 | inject: [ConfigService, TypeOrmLoggerService], 26 | useFactory: (config: ConfigService, logger: TypeOrmLoggerService) => ({ 27 | type: "postgres", 28 | url: config.get("DB"), 29 | migrationsRun: !config.get("isProd"), 30 | synchronize: config.get("isDev"), 31 | logging: true, 32 | logger, 33 | entities: requireClassesSync(__dirname, "../entity"), 34 | migrations: requireClassesSync(__dirname, "../migration"), 35 | subscribers: requireClassesSync(__dirname, "../subscriber"), 36 | }), 37 | }), 38 | TypeOrmModule.forFeature(requireClassesSync(__dirname, "../entity")), 39 | ], 40 | providers: [DbService], 41 | exports: [DbService, TypeOrmModule], 42 | }) 43 | export class DbModule {} 44 | -------------------------------------------------------------------------------- /src/common/errors.ts: -------------------------------------------------------------------------------- 1 | import { 2 | ArgumentsHost, 3 | Catch, 4 | ExceptionFilter, 5 | HttpException, 6 | HttpStatus, 7 | } from "@nestjs/common"; 8 | import { Response } from "express"; 9 | 10 | export class Exception extends HttpException { 11 | constructor(message: string, status = 500) { 12 | super(message, status); 13 | } 14 | } 15 | export class UserNotExistException extends Exception { 16 | constructor() { 17 | super("user not exists", HttpStatus.FORBIDDEN); 18 | } 19 | } 20 | export class PasswordMismatchException extends Exception { 21 | constructor() { 22 | super("password mismatch", HttpStatus.FORBIDDEN); 23 | } 24 | } 25 | export class InvalidTokenException extends Exception { 26 | constructor() { 27 | super("invalid token", HttpStatus.FORBIDDEN); 28 | } 29 | } 30 | export class DuplicatedUsernameException extends Exception { 31 | constructor() { 32 | super("duplicated email", HttpStatus.CONFLICT); 33 | } 34 | } 35 | export class ProfileTypeNotExistException extends Exception { 36 | constructor() { 37 | super("profile type not exists", HttpStatus.BAD_REQUEST); 38 | } 39 | } 40 | 41 | @Catch(HttpException) 42 | export class GeneralExceptionFilter implements ExceptionFilter { 43 | public catch(exception: HttpException, host: ArgumentsHost): void { 44 | (host.switchToHttp().getResponse() as Response).json({ 45 | message: exception.message, 46 | status: exception.getStatus(), 47 | }); 48 | } 49 | } 50 | @Catch(Exception) 51 | export class AppExceptionFilter implements ExceptionFilter { 52 | public catch(exception: HttpException, host: ArgumentsHost): void { 53 | (host.switchToHttp().getResponse() as Response).json({ 54 | message: exception.message, 55 | status: exception.getStatus(), 56 | }); 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /src/common/loader.ts: -------------------------------------------------------------------------------- 1 | import { sync as glob } from "globby"; 2 | import { join } from "path"; 3 | 4 | export const requireClassesSync = ( 5 | base: string, 6 | ...patterns: string[] 7 | ): any[] => // eslint-disable-line @typescript-eslint/no-explicit-any 8 | glob( 9 | patterns.map(p => join(base, p)), 10 | { 11 | expandDirectories: ["*.js", "*.ts"], 12 | }, 13 | ) 14 | .map(file => require(file)) 15 | .map((e: object) => 16 | Object.values(e).filter( 17 | o => typeof o === "function", 18 | // && Reflect.getMetadata(PATH_METADATA, o) !== undefined, 19 | ), 20 | ) 21 | .reduce((pv, cv) => pv.concat(cv), []); 22 | -------------------------------------------------------------------------------- /src/common/logger.service.ts: -------------------------------------------------------------------------------- 1 | import { Inject, Injectable, LoggerService, Module } from "@nestjs/common"; 2 | import pino from "pino"; 3 | import { Logger, QueryRunner } from "typeorm"; 4 | import { ConfigModule, ConfigService } from "../common/config"; 5 | 6 | export const createPino = (config: ConfigService): ReturnType => 7 | pino({ 8 | prettyPrint: config.get("isDev"), 9 | level: config.get("isDev") 10 | ? "trace" 11 | : config.get("isTest") 12 | ? "silent" 13 | : "info", 14 | }); 15 | 16 | @Injectable() 17 | export class PinoLoggerService implements LoggerService { 18 | public logger: pino.Logger; 19 | 20 | constructor(@Inject(ConfigService) config: ConfigService) { 21 | this.logger = createPino(config); 22 | } 23 | 24 | /* eslint-disable @typescript-eslint/no-explicit-any */ 25 | public trace(message: string, ...args: any[]): void { 26 | this.logger.trace(message, ...args); 27 | } 28 | 29 | public debug(message: string, ...args: any[]): void { 30 | this.logger.debug(message, ...args); 31 | } 32 | 33 | public info(message: string, ...args: any[]): void { 34 | this.logger.info(message, ...args); 35 | } 36 | 37 | public warn(message: string, ...args: any[]): void { 38 | this.logger.warn(message, ...args); 39 | } 40 | 41 | public error(message: string, ...args: any[]): void { 42 | this.logger.error(message, ...args); 43 | } 44 | 45 | public log(message: string, ...args: any[]): void { 46 | this.logger.info(message, ...args); 47 | } 48 | /* eslint-enable @typescript-eslint/no-explicit-any */ 49 | } 50 | 51 | @Injectable() 52 | export class TypeOrmLoggerService implements Logger { 53 | constructor( 54 | @Inject(PinoLoggerService) private readonly logger: pino.Logger, 55 | ) {} 56 | 57 | /** 58 | * Logs query and parameters used in it. 59 | */ 60 | public logQuery( 61 | query: string, 62 | // eslint-disable-next-line @typescript-eslint/no-explicit-any 63 | parameters?: any[], 64 | // eslint-disable-next-line @typescript-eslint/no-unused-vars 65 | queryRunner?: QueryRunner, 66 | // eslint-disable-next-line @typescript-eslint/no-explicit-any 67 | ): any { 68 | this.logger.trace(`typeorm:query ${query}`, parameters || []); 69 | } 70 | 71 | /** 72 | * Logs query that is failed. 73 | */ 74 | public logQueryError( 75 | error: string, 76 | query: string, 77 | // eslint-disable-next-line @typescript-eslint/no-explicit-any 78 | parameters?: any[], 79 | // eslint-disable-next-line @typescript-eslint/no-unused-vars 80 | queryRunner?: QueryRunner, 81 | // eslint-disable-next-line @typescript-eslint/no-explicit-any 82 | ): any { 83 | this.logger.error(`typeorm:query ${error}`, { 84 | query, 85 | parameters: parameters || [], 86 | }); 87 | } 88 | 89 | /** 90 | * Logs query that is slow. 91 | */ 92 | public logQuerySlow( 93 | time: number, 94 | query: string, 95 | // eslint-disable-next-line @typescript-eslint/no-explicit-any 96 | parameters?: any[], 97 | // eslint-disable-next-line @typescript-eslint/no-unused-vars 98 | queryRunner?: QueryRunner, 99 | // eslint-disable-next-line @typescript-eslint/no-explicit-any 100 | ): any { 101 | this.logger.warn(`typeorm:query slow +${time}`, { 102 | query, 103 | parameters, 104 | }); 105 | } 106 | 107 | /** 108 | * Logs events from the schema build process. 109 | */ 110 | // eslint-disable-next-line @typescript-eslint/no-unused-vars,@typescript-eslint/no-explicit-any 111 | public logSchemaBuild(message: string, queryRunner?: QueryRunner): any { 112 | this.logger.info(`typeorm:schema ${message}`); 113 | } 114 | 115 | /** 116 | * Logs events from the migrations run process. 117 | */ 118 | // eslint-disable-next-line @typescript-eslint/no-unused-vars,@typescript-eslint/no-explicit-any 119 | public logMigration(message: string, queryRunner?: QueryRunner): any { 120 | this.logger.info(`typeorm:migration ${message}`); 121 | } 122 | 123 | /** 124 | * Perform logging using given logger, or by default to the console. 125 | * Log has its own level and message. 126 | */ 127 | public log( 128 | level: "log" | "info" | "warn", 129 | // eslint-disable-next-line @typescript-eslint/no-explicit-any 130 | message: any, 131 | // eslint-disable-next-line @typescript-eslint/no-unused-vars 132 | queryRunner?: QueryRunner, 133 | // eslint-disable-next-line @typescript-eslint/no-explicit-any 134 | ): any { 135 | switch (level) { 136 | case "log": 137 | this.logger.debug(message); 138 | break; 139 | case "info": 140 | this.logger.info(message); 141 | break; 142 | case "warn": 143 | this.logger.warn(message); 144 | break; 145 | } 146 | } 147 | } 148 | 149 | @Module({ 150 | imports: [ConfigModule], 151 | providers: [PinoLoggerService, TypeOrmLoggerService], 152 | exports: [PinoLoggerService, TypeOrmLoggerService], 153 | }) 154 | export class LoggerModule {} 155 | -------------------------------------------------------------------------------- /src/common/token.service.ts: -------------------------------------------------------------------------------- 1 | import { Inject, Injectable } from "@nestjs/common"; 2 | import { sign, verify } from "jsonwebtoken"; 3 | import { ConfigService } from "../common/config"; 4 | import { InvalidTokenException } from "../common/errors"; 5 | import { User } from "../entity/user"; 6 | 7 | interface TokenData { 8 | username: string; 9 | } 10 | 11 | @Injectable() 12 | export class TokenService { 13 | private jwtToken: string; 14 | 15 | constructor(@Inject(ConfigService) config: ConfigService) { 16 | this.jwtToken = config.get("JWT_TOKEN"); 17 | } 18 | 19 | /** 20 | * issue new token with 7d expiration 21 | * 22 | * @param user 23 | */ 24 | public sign(user: User): string { 25 | const data: TokenData = { username: user.username }; 26 | return sign(data, this.jwtToken, { 27 | expiresIn: "7d", 28 | }); 29 | } 30 | 31 | /** 32 | * get user name by token 33 | * 34 | * @param token 35 | * @returns user id 36 | */ 37 | public verify(token: string): string { 38 | try { 39 | return (verify(token, this.jwtToken) as TokenData).username; 40 | } catch { 41 | throw new InvalidTokenException(); 42 | } 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /src/controller/session.ts: -------------------------------------------------------------------------------- 1 | import { Body, Controller, Put, Res } from "@nestjs/common"; 2 | import { Response } from "express"; 3 | import { Anonymous } from "../common/authentication"; 4 | import { UserService } from "../service/user"; 5 | 6 | @Controller("/session") 7 | @Anonymous() 8 | export class SessionController { 9 | constructor(private userService: UserService) {} 10 | 11 | @Put() 12 | public async loginPost( 13 | @Body("username") username: string, 14 | @Body("password") password: string, 15 | @Res() res: Response, 16 | ): Promise { 17 | const token = await this.userService.login(username, password); 18 | res.cookie("token", token, { maxAge: 7 * 24 * 60 * 60 * 1000 }); 19 | res.redirect("/dashboard"); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/controller/user.ts: -------------------------------------------------------------------------------- 1 | import { Body, Controller, Post } from "@nestjs/common"; 2 | import { Anonymous } from "../common/authentication"; 3 | import { UserService } from "../service/user"; 4 | 5 | @Controller("/users") 6 | @Anonymous() 7 | export class UserController { 8 | constructor(private userService: UserService) {} 9 | 10 | @Post() 11 | public async signupPost( 12 | @Body("username") username: string, 13 | @Body("password") password: string, 14 | ): Promise { 15 | const token = await this.userService.register(username, password); 16 | return token; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/entity/user.ts: -------------------------------------------------------------------------------- 1 | import { Column, Entity, PrimaryColumn } from "typeorm"; 2 | 3 | @Entity() 4 | export class User { 5 | @PrimaryColumn() 6 | public readonly username: string; 7 | 8 | @Column() 9 | public password_hash!: string; 10 | 11 | constructor(username: string) { 12 | this.username = username; 13 | } 14 | 15 | /** 16 | * check password 17 | * 18 | * @param password 19 | * @returns boolean 20 | */ 21 | public async checkPassword(password: string): Promise { 22 | return password === this.password_hash; 23 | } 24 | 25 | /** 26 | * set password 27 | * 28 | * @param password 29 | */ 30 | public async setPassword(password: string): Promise { 31 | // eslint-disable-next-line @typescript-eslint/camelcase 32 | this.password_hash = password; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/main.ts: -------------------------------------------------------------------------------- 1 | import { NestFactory } from "@nestjs/core"; 2 | import { AppModule } from "./app.module"; 3 | import { ConfigService } from "./common/config"; 4 | import { AppExceptionFilter, GeneralExceptionFilter } from "./common/errors"; 5 | import { PinoLoggerService } from "./common/logger.service"; 6 | 7 | async function bootstrap(): Promise { 8 | const app = await NestFactory.create(AppModule); 9 | 10 | app.useLogger(app.get(PinoLoggerService)); 11 | 12 | app.useGlobalFilters(new GeneralExceptionFilter(), new AppExceptionFilter()); 13 | 14 | await app.listen(app.get(ConfigService).get("PORT")); 15 | } 16 | 17 | bootstrap(); 18 | -------------------------------------------------------------------------------- /src/service/user.ts: -------------------------------------------------------------------------------- 1 | import { Inject, Injectable } from "@nestjs/common"; 2 | import { DbService } from "../common/db"; 3 | import { 4 | DuplicatedUsernameException, 5 | InvalidTokenException, 6 | PasswordMismatchException, 7 | UserNotExistException, 8 | } from "../common/errors"; 9 | import { PinoLoggerService } from "../common/logger.service"; 10 | import { TokenService } from "../common/token.service"; 11 | import { User } from "../entity/user"; 12 | 13 | @Injectable() 14 | export class UserService { 15 | constructor( 16 | @Inject(TokenService) private readonly tokenService: TokenService, 17 | @Inject(DbService) private readonly dbService: DbService, 18 | @Inject(PinoLoggerService) private readonly logger: PinoLoggerService, 19 | ) {} 20 | 21 | /** 22 | * register a new user 23 | * 24 | * @param username string 25 | * @param password string 26 | * @returns token 27 | */ 28 | public async register(username: string, password: string): Promise { 29 | if (await this.dbService.users.findOne(username)) { 30 | throw new DuplicatedUsernameException(); 31 | } 32 | const user = new User(username); 33 | await user.setPassword(password); 34 | await this.dbService.users.save(user); 35 | return this.tokenService.sign(user); 36 | } 37 | 38 | /** 39 | * login 40 | * if the password hash is in old format, the hash will be upgraded 41 | * 42 | * @param username string 43 | * @param password string 44 | * @returns token 45 | */ 46 | public async login(username: string, password: string): Promise { 47 | const user = await this.dbService.users.findOne(username); 48 | if (!user) { 49 | throw new UserNotExistException(); 50 | } 51 | if (!(await user.checkPassword(password))) { 52 | throw new PasswordMismatchException(); 53 | } 54 | return this.tokenService.sign(user); 55 | } 56 | 57 | /** 58 | * acquire token information 59 | * 60 | * @param token string 61 | * @return User 62 | */ 63 | public async getTokenInfo(token: string): Promise { 64 | const username = this.tokenService.verify(token); 65 | const user = await this.dbService.users.findOne(username); 66 | if (!user) { 67 | throw new InvalidTokenException(); 68 | } 69 | return user; 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | /* Basic Options */ 4 | // For Node.js v12, use ES2019 5 | // For Node.js v14 or v16, use ES2020 6 | // see https://nodejs.org/en/about/releases/ and https://node.green/ 7 | "target": "es2020", 8 | "module": "commonjs", 9 | "jsx": "react", 10 | "outDir": "./dist", 11 | "rootDir": "./src", 12 | "removeComments": true, 13 | "isolatedModules": true, 14 | "importHelpers": true, 15 | 16 | /* Strict Type-Checking Options */ 17 | "strict": true, 18 | 19 | /* Additional Checks */ 20 | // "noUnusedLocals": true, 21 | // "noUnusedParameters": true, 22 | "noImplicitReturns": true, 23 | "noFallthroughCasesInSwitch": true, 24 | 25 | /* Module Resolution Options */ 26 | "moduleResolution": "node", 27 | "baseUrl": "./src", 28 | "esModuleInterop": true, 29 | 30 | /* Source Map Options */ 31 | "inlineSourceMap": true, 32 | 33 | /* Experimental Options */ 34 | "experimentalDecorators": true, 35 | "emitDecoratorMetadata": true, 36 | 37 | "skipLibCheck": true 38 | }, 39 | "include": ["src/**/*.ts"] 40 | } 41 | --------------------------------------------------------------------------------