├── .eslintrc.js ├── .github ├── PULL_REQUEST_TEMPLATE.md └── workflows │ ├── deploy-snapshot.yml │ ├── deploy-stable.yml │ └── test.yml ├── .gitignore ├── .husky ├── pre-commit └── pre-push ├── .prettierignore ├── .prettierrc.js ├── README.md ├── jest.config.js ├── package-lock.json ├── package.json ├── src ├── createHandler.ts ├── index.ts └── migrationsHandler.ts ├── test ├── createHandler.test.ts ├── migrationsHandler.test.ts └── tsconfig.json └── tsconfig.json /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: [ 3 | 'eslint:recommended', 4 | 'plugin:@typescript-eslint/eslint-recommended', 5 | 'plugin:@typescript-eslint/recommended', 6 | 'prettier', 7 | ], 8 | parser: '@typescript-eslint/parser', 9 | plugins: ['@typescript-eslint'], 10 | ignorePatterns: ['dist/*'], 11 | env: { 12 | node: true, 13 | }, 14 | settings: { 15 | 'import/parsers': { 16 | '@typescript-eslint/parser': ['.js', '.ts', '.tsx'], 17 | }, 18 | 'import/resolver': { 19 | typescript: {}, 20 | }, 21 | }, 22 | parserOptions: { 23 | sourceType: 'module', 24 | }, 25 | rules: { 26 | '@typescript-eslint/no-explicit-any': 'off', 27 | '@typescript-eslint/explicit-module-boundary-types': 'off', 28 | 'no-unused-vars': 'off', 29 | '@typescript-eslint/no-unused-vars': ['error', { ignoreRestSiblings: true }], 30 | eqeqeq: ['error', 'always'], 31 | indent: ['error', 2], 32 | 'object-curly-spacing': ['error', 'always'], 33 | }, 34 | }; 35 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | ## What I did 2 | 3 | ## How I did it 4 | 5 | ## How to test it 6 | -------------------------------------------------------------------------------- /.github/workflows/deploy-snapshot.yml: -------------------------------------------------------------------------------- 1 | name: Deploy snapshot 2 | 3 | on: 4 | push: 5 | branches: 6 | - 'release/v[0-9]+.[0-9]+.[0-9]+' 7 | 8 | jobs: 9 | run-tests: 10 | uses: ./.github/workflows/test.yml 11 | 12 | deploy-snapshot: 13 | name: Snapshot deploy 14 | runs-on: ubuntu-latest 15 | needs: 16 | - run-tests 17 | steps: 18 | - name: Checkout 19 | uses: actions/checkout@v3 20 | 21 | - name: Setup node environment 22 | uses: actions/setup-node@v3 23 | with: 24 | node-version: 14.19.3 25 | registry-url: 'https://registry.npmjs.org' 26 | - name: Install dependencies 27 | run: npm ci 28 | 29 | - name: Build 30 | run: npm run build 31 | 32 | - name: Create snapshot 33 | run: | 34 | npx npm-snapshot ${GITHUB_RUN_NUMBER} 35 | npm publish --access public --tag next --force 36 | env: 37 | NODE_AUTH_TOKEN: ${{secrets.NPM_AUTH_TOKEN}} 38 | -------------------------------------------------------------------------------- /.github/workflows/deploy-stable.yml: -------------------------------------------------------------------------------- 1 | name: Deploy stable 2 | 3 | on: 4 | push: 5 | branches: 6 | - 'main' 7 | 8 | jobs: 9 | run-tests: 10 | uses: ./.github/workflows/test.yml 11 | 12 | deploy-stable: 13 | name: Stable deploy 14 | runs-on: ubuntu-latest 15 | needs: 16 | - run-tests 17 | steps: 18 | - name: Checkout 19 | uses: actions/checkout@v3 20 | 21 | - name: Setup node environment 22 | uses: actions/setup-node@v3 23 | with: 24 | node-version: 14.19.3 25 | registry-url: 'https://registry.npmjs.org' 26 | 27 | - name: Install dependencies 28 | run: npm ci 29 | 30 | - name: Build 31 | run: npm run build 32 | 33 | - name: Create stable release 34 | run: npm publish --access public --tag latest 35 | env: 36 | NODE_AUTH_TOKEN: ${{secrets.NPM_AUTH_TOKEN}} 37 | -------------------------------------------------------------------------------- /.github/workflows/test.yml: -------------------------------------------------------------------------------- 1 | name: Test 2 | 3 | on: 4 | workflow_call: 5 | push: 6 | branches-ignore: 7 | - 'main' 8 | - 'release/v[0-9]+.[0-9]+.[0-9]+' 9 | 10 | jobs: 11 | test: 12 | name: Test 13 | runs-on: ubuntu-latest 14 | steps: 15 | - name: Checkout 16 | uses: actions/checkout@v3 17 | 18 | - name: Setup node environment 19 | uses: actions/setup-node@v3 20 | with: 21 | node-version: 14.19.3 22 | cache: npm 23 | 24 | - name: Install dependencies 25 | run: npm ci 26 | 27 | - name: Run linter 28 | run: npx eslint . 29 | 30 | - name: Run tests 31 | run: npm test 32 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | lerna-debug.log* 8 | 9 | # Diagnostic reports (https://nodejs.org/api/report.html) 10 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 11 | 12 | # Runtime data 13 | pids 14 | *.pid 15 | *.seed 16 | *.pid.lock 17 | 18 | # Directory for instrumented libs generated by jscoverage/JSCover 19 | lib-cov 20 | 21 | # Coverage directory used by tools like istanbul 22 | coverage 23 | 24 | # nyc test coverage 25 | .nyc_output 26 | 27 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 28 | .grunt 29 | 30 | # Bower dependency directory (https://bower.io/) 31 | bower_components 32 | 33 | # node-waf configuration 34 | .lock-wscript 35 | 36 | # Compiled binary addons (https://nodejs.org/api/addons.html) 37 | build/Release 38 | 39 | # Dependency directories 40 | node_modules/ 41 | jspm_packages/ 42 | 43 | # TypeScript v1 declaration files 44 | typings/ 45 | 46 | # Optional npm cache directory 47 | .npm 48 | 49 | # Optional eslint cache 50 | .eslintcache 51 | 52 | # environment variables 53 | .env 54 | */**/.env 55 | 56 | dist/ 57 | 58 | .idea/ 59 | 60 | .serverless/ 61 | .webpack/ 62 | lib/ 63 | *.DS_Store 64 | .dynamodb 65 | -------------------------------------------------------------------------------- /.husky/pre-commit: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | . "$(dirname -- "$0")/_/husky.sh" 3 | 4 | npx prettier --check . 5 | npx eslint . 6 | -------------------------------------------------------------------------------- /.husky/pre-push: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | . "$(dirname -- "$0")/_/husky.sh" 3 | 4 | npm test 5 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | build 3 | dist 4 | coverage 5 | -------------------------------------------------------------------------------- /.prettierrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | printWidth: 100, 3 | singleQuote: true, 4 | trailingComma: 'all', 5 | }; 6 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Sequelize Lambda Migrations 2 | 3 | ## Usage 4 | 5 | In order to use the package first set up the following environment variables: 6 | 7 | - `DB_NAME`: database name 8 | - `DB_USERNAME`: database username 9 | - `DB_PASSWORD`: database password 10 | - `DB_PORT`: database port 11 | - `DB_DIALECT`: database dialect (postgress/mysql) 12 | - `DB_HOST`: database host 13 | - `MIGRATIONS_GLOB`: glob to the migration files (e.g. `src/db/migrations/*.js`) 14 | 15 | Then import the lambda functions from the package and use it directly on your serverless file. 16 | 17 | `serverless.yml` 18 | 19 | ```yml 20 | functions: 21 | migrate: 22 | handler: handler.migrate 23 | timeout: 60 24 | rollback: 25 | handler: handler.rollback 26 | timeout: 60 27 | reset: 28 | handler: handler.reset 29 | timeout: 60 30 | ``` 31 | 32 | `handler.ts` 33 | 34 | ```typescript 35 | import { migrate, rollback, reset } from '@eagerworks/sequelize-lambda-migrations'; 36 | 37 | export { migrate, rollback, reset }; 38 | ``` 39 | 40 | One can later invoke the functions to migrate or rollback the database. 41 | 42 | ``` 43 | serverless invoke --function --stage --aws-profile --region 44 | ``` 45 | -------------------------------------------------------------------------------- /jest.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('@ts-jest/dist/types').InitialOptionsTsJest} */ 2 | module.exports = { 3 | preset: 'ts-jest', 4 | testEnvironment: 'node', 5 | collectCoverage: true, 6 | testTimeout: 10000, 7 | }; 8 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@eagerworks/sequelize-lambda-migrations", 3 | "version": "1.0.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@ampproject/remapping": { 8 | "version": "2.2.0", 9 | "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", 10 | "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", 11 | "dev": true, 12 | "requires": { 13 | "@jridgewell/gen-mapping": "^0.1.0", 14 | "@jridgewell/trace-mapping": "^0.3.9" 15 | } 16 | }, 17 | "@babel/code-frame": { 18 | "version": "7.16.7", 19 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", 20 | "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", 21 | "dev": true, 22 | "requires": { 23 | "@babel/highlight": "^7.16.7" 24 | } 25 | }, 26 | "@babel/compat-data": { 27 | "version": "7.17.10", 28 | "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.10.tgz", 29 | "integrity": "sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw==", 30 | "dev": true 31 | }, 32 | "@babel/core": { 33 | "version": "7.18.2", 34 | "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.2.tgz", 35 | "integrity": "sha512-A8pri1YJiC5UnkdrWcmfZTJTV85b4UXTAfImGmCfYmax4TR9Cw8sDS0MOk++Gp2mE/BefVJ5nwy5yzqNJbP/DQ==", 36 | "dev": true, 37 | "requires": { 38 | "@ampproject/remapping": "^2.1.0", 39 | "@babel/code-frame": "^7.16.7", 40 | "@babel/generator": "^7.18.2", 41 | "@babel/helper-compilation-targets": "^7.18.2", 42 | "@babel/helper-module-transforms": "^7.18.0", 43 | "@babel/helpers": "^7.18.2", 44 | "@babel/parser": "^7.18.0", 45 | "@babel/template": "^7.16.7", 46 | "@babel/traverse": "^7.18.2", 47 | "@babel/types": "^7.18.2", 48 | "convert-source-map": "^1.7.0", 49 | "debug": "^4.1.0", 50 | "gensync": "^1.0.0-beta.2", 51 | "json5": "^2.2.1", 52 | "semver": "^6.3.0" 53 | } 54 | }, 55 | "@babel/generator": { 56 | "version": "7.18.2", 57 | "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.2.tgz", 58 | "integrity": "sha512-W1lG5vUwFvfMd8HVXqdfbuG7RuaSrTCCD8cl8fP8wOivdbtbIg2Db3IWUcgvfxKbbn6ZBGYRW/Zk1MIwK49mgw==", 59 | "dev": true, 60 | "requires": { 61 | "@babel/types": "^7.18.2", 62 | "@jridgewell/gen-mapping": "^0.3.0", 63 | "jsesc": "^2.5.1" 64 | }, 65 | "dependencies": { 66 | "@jridgewell/gen-mapping": { 67 | "version": "0.3.1", 68 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.1.tgz", 69 | "integrity": "sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg==", 70 | "dev": true, 71 | "requires": { 72 | "@jridgewell/set-array": "^1.0.0", 73 | "@jridgewell/sourcemap-codec": "^1.4.10", 74 | "@jridgewell/trace-mapping": "^0.3.9" 75 | } 76 | } 77 | } 78 | }, 79 | "@babel/helper-compilation-targets": { 80 | "version": "7.18.2", 81 | "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.2.tgz", 82 | "integrity": "sha512-s1jnPotJS9uQnzFtiZVBUxe67CuBa679oWFHpxYYnTpRL/1ffhyX44R9uYiXoa/pLXcY9H2moJta0iaanlk/rQ==", 83 | "dev": true, 84 | "requires": { 85 | "@babel/compat-data": "^7.17.10", 86 | "@babel/helper-validator-option": "^7.16.7", 87 | "browserslist": "^4.20.2", 88 | "semver": "^6.3.0" 89 | } 90 | }, 91 | "@babel/helper-environment-visitor": { 92 | "version": "7.18.2", 93 | "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.2.tgz", 94 | "integrity": "sha512-14GQKWkX9oJzPiQQ7/J36FTXcD4kSp8egKjO9nINlSKiHITRA9q/R74qu8S9xlc/b/yjsJItQUeeh3xnGN0voQ==", 95 | "dev": true 96 | }, 97 | "@babel/helper-function-name": { 98 | "version": "7.17.9", 99 | "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", 100 | "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", 101 | "dev": true, 102 | "requires": { 103 | "@babel/template": "^7.16.7", 104 | "@babel/types": "^7.17.0" 105 | } 106 | }, 107 | "@babel/helper-hoist-variables": { 108 | "version": "7.16.7", 109 | "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", 110 | "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", 111 | "dev": true, 112 | "requires": { 113 | "@babel/types": "^7.16.7" 114 | } 115 | }, 116 | "@babel/helper-module-imports": { 117 | "version": "7.16.7", 118 | "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", 119 | "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", 120 | "dev": true, 121 | "requires": { 122 | "@babel/types": "^7.16.7" 123 | } 124 | }, 125 | "@babel/helper-module-transforms": { 126 | "version": "7.18.0", 127 | "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.0.tgz", 128 | "integrity": "sha512-kclUYSUBIjlvnzN2++K9f2qzYKFgjmnmjwL4zlmU5f8ZtzgWe8s0rUPSTGy2HmK4P8T52MQsS+HTQAgZd3dMEA==", 129 | "dev": true, 130 | "requires": { 131 | "@babel/helper-environment-visitor": "^7.16.7", 132 | "@babel/helper-module-imports": "^7.16.7", 133 | "@babel/helper-simple-access": "^7.17.7", 134 | "@babel/helper-split-export-declaration": "^7.16.7", 135 | "@babel/helper-validator-identifier": "^7.16.7", 136 | "@babel/template": "^7.16.7", 137 | "@babel/traverse": "^7.18.0", 138 | "@babel/types": "^7.18.0" 139 | } 140 | }, 141 | "@babel/helper-plugin-utils": { 142 | "version": "7.17.12", 143 | "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.17.12.tgz", 144 | "integrity": "sha512-JDkf04mqtN3y4iAbO1hv9U2ARpPyPL1zqyWs/2WG1pgSq9llHFjStX5jdxb84himgJm+8Ng+x0oiWF/nw/XQKA==", 145 | "dev": true 146 | }, 147 | "@babel/helper-simple-access": { 148 | "version": "7.18.2", 149 | "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.2.tgz", 150 | "integrity": "sha512-7LIrjYzndorDY88MycupkpQLKS1AFfsVRm2k/9PtKScSy5tZq0McZTj+DiMRynboZfIqOKvo03pmhTaUgiD6fQ==", 151 | "dev": true, 152 | "requires": { 153 | "@babel/types": "^7.18.2" 154 | } 155 | }, 156 | "@babel/helper-split-export-declaration": { 157 | "version": "7.16.7", 158 | "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", 159 | "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", 160 | "dev": true, 161 | "requires": { 162 | "@babel/types": "^7.16.7" 163 | } 164 | }, 165 | "@babel/helper-validator-identifier": { 166 | "version": "7.16.7", 167 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", 168 | "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", 169 | "dev": true 170 | }, 171 | "@babel/helper-validator-option": { 172 | "version": "7.16.7", 173 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", 174 | "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", 175 | "dev": true 176 | }, 177 | "@babel/helpers": { 178 | "version": "7.18.2", 179 | "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.2.tgz", 180 | "integrity": "sha512-j+d+u5xT5utcQSzrh9p+PaJX94h++KN+ng9b9WEJq7pkUPAd61FGqhjuUEdfknb3E/uDBb7ruwEeKkIxNJPIrg==", 181 | "dev": true, 182 | "requires": { 183 | "@babel/template": "^7.16.7", 184 | "@babel/traverse": "^7.18.2", 185 | "@babel/types": "^7.18.2" 186 | } 187 | }, 188 | "@babel/highlight": { 189 | "version": "7.17.12", 190 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.12.tgz", 191 | "integrity": "sha512-7yykMVF3hfZY2jsHZEEgLc+3x4o1O+fYyULu11GynEUQNwB6lua+IIQn1FiJxNucd5UlyJryrwsOh8PL9Sn8Qg==", 192 | "dev": true, 193 | "requires": { 194 | "@babel/helper-validator-identifier": "^7.16.7", 195 | "chalk": "^2.0.0", 196 | "js-tokens": "^4.0.0" 197 | }, 198 | "dependencies": { 199 | "ansi-styles": { 200 | "version": "3.2.1", 201 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 202 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 203 | "dev": true, 204 | "requires": { 205 | "color-convert": "^1.9.0" 206 | } 207 | }, 208 | "chalk": { 209 | "version": "2.4.2", 210 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 211 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 212 | "dev": true, 213 | "requires": { 214 | "ansi-styles": "^3.2.1", 215 | "escape-string-regexp": "^1.0.5", 216 | "supports-color": "^5.3.0" 217 | } 218 | }, 219 | "color-convert": { 220 | "version": "1.9.3", 221 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 222 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 223 | "dev": true, 224 | "requires": { 225 | "color-name": "1.1.3" 226 | } 227 | }, 228 | "color-name": { 229 | "version": "1.1.3", 230 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 231 | "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", 232 | "dev": true 233 | }, 234 | "has-flag": { 235 | "version": "3.0.0", 236 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 237 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", 238 | "dev": true 239 | }, 240 | "supports-color": { 241 | "version": "5.5.0", 242 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 243 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 244 | "dev": true, 245 | "requires": { 246 | "has-flag": "^3.0.0" 247 | } 248 | } 249 | } 250 | }, 251 | "@babel/parser": { 252 | "version": "7.18.3", 253 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.3.tgz", 254 | "integrity": "sha512-rL50YcEuHbbauAFAysNsJA4/f89fGTOBRNs9P81sniKnKAr4xULe5AecolcsKbi88xu0ByWYDj/S1AJ3FSFuSQ==", 255 | "dev": true 256 | }, 257 | "@babel/plugin-syntax-async-generators": { 258 | "version": "7.8.4", 259 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", 260 | "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", 261 | "dev": true, 262 | "requires": { 263 | "@babel/helper-plugin-utils": "^7.8.0" 264 | } 265 | }, 266 | "@babel/plugin-syntax-bigint": { 267 | "version": "7.8.3", 268 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", 269 | "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", 270 | "dev": true, 271 | "requires": { 272 | "@babel/helper-plugin-utils": "^7.8.0" 273 | } 274 | }, 275 | "@babel/plugin-syntax-class-properties": { 276 | "version": "7.12.13", 277 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", 278 | "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", 279 | "dev": true, 280 | "requires": { 281 | "@babel/helper-plugin-utils": "^7.12.13" 282 | } 283 | }, 284 | "@babel/plugin-syntax-import-meta": { 285 | "version": "7.10.4", 286 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", 287 | "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", 288 | "dev": true, 289 | "requires": { 290 | "@babel/helper-plugin-utils": "^7.10.4" 291 | } 292 | }, 293 | "@babel/plugin-syntax-json-strings": { 294 | "version": "7.8.3", 295 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", 296 | "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", 297 | "dev": true, 298 | "requires": { 299 | "@babel/helper-plugin-utils": "^7.8.0" 300 | } 301 | }, 302 | "@babel/plugin-syntax-logical-assignment-operators": { 303 | "version": "7.10.4", 304 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", 305 | "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", 306 | "dev": true, 307 | "requires": { 308 | "@babel/helper-plugin-utils": "^7.10.4" 309 | } 310 | }, 311 | "@babel/plugin-syntax-nullish-coalescing-operator": { 312 | "version": "7.8.3", 313 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", 314 | "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", 315 | "dev": true, 316 | "requires": { 317 | "@babel/helper-plugin-utils": "^7.8.0" 318 | } 319 | }, 320 | "@babel/plugin-syntax-numeric-separator": { 321 | "version": "7.10.4", 322 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", 323 | "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", 324 | "dev": true, 325 | "requires": { 326 | "@babel/helper-plugin-utils": "^7.10.4" 327 | } 328 | }, 329 | "@babel/plugin-syntax-object-rest-spread": { 330 | "version": "7.8.3", 331 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", 332 | "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", 333 | "dev": true, 334 | "requires": { 335 | "@babel/helper-plugin-utils": "^7.8.0" 336 | } 337 | }, 338 | "@babel/plugin-syntax-optional-catch-binding": { 339 | "version": "7.8.3", 340 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", 341 | "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", 342 | "dev": true, 343 | "requires": { 344 | "@babel/helper-plugin-utils": "^7.8.0" 345 | } 346 | }, 347 | "@babel/plugin-syntax-optional-chaining": { 348 | "version": "7.8.3", 349 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", 350 | "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", 351 | "dev": true, 352 | "requires": { 353 | "@babel/helper-plugin-utils": "^7.8.0" 354 | } 355 | }, 356 | "@babel/plugin-syntax-top-level-await": { 357 | "version": "7.14.5", 358 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", 359 | "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", 360 | "dev": true, 361 | "requires": { 362 | "@babel/helper-plugin-utils": "^7.14.5" 363 | } 364 | }, 365 | "@babel/plugin-syntax-typescript": { 366 | "version": "7.17.12", 367 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.17.12.tgz", 368 | "integrity": "sha512-TYY0SXFiO31YXtNg3HtFwNJHjLsAyIIhAhNWkQ5whPPS7HWUFlg9z0Ta4qAQNjQbP1wsSt/oKkmZ/4/WWdMUpw==", 369 | "dev": true, 370 | "requires": { 371 | "@babel/helper-plugin-utils": "^7.17.12" 372 | } 373 | }, 374 | "@babel/template": { 375 | "version": "7.16.7", 376 | "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", 377 | "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", 378 | "dev": true, 379 | "requires": { 380 | "@babel/code-frame": "^7.16.7", 381 | "@babel/parser": "^7.16.7", 382 | "@babel/types": "^7.16.7" 383 | } 384 | }, 385 | "@babel/traverse": { 386 | "version": "7.18.2", 387 | "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.2.tgz", 388 | "integrity": "sha512-9eNwoeovJ6KH9zcCNnENY7DMFwTU9JdGCFtqNLfUAqtUHRCOsTOqWoffosP8vKmNYeSBUv3yVJXjfd8ucwOjUA==", 389 | "dev": true, 390 | "requires": { 391 | "@babel/code-frame": "^7.16.7", 392 | "@babel/generator": "^7.18.2", 393 | "@babel/helper-environment-visitor": "^7.18.2", 394 | "@babel/helper-function-name": "^7.17.9", 395 | "@babel/helper-hoist-variables": "^7.16.7", 396 | "@babel/helper-split-export-declaration": "^7.16.7", 397 | "@babel/parser": "^7.18.0", 398 | "@babel/types": "^7.18.2", 399 | "debug": "^4.1.0", 400 | "globals": "^11.1.0" 401 | } 402 | }, 403 | "@babel/types": { 404 | "version": "7.18.2", 405 | "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.2.tgz", 406 | "integrity": "sha512-0On6B8A4/+mFUto5WERt3EEuG1NznDirvwca1O8UwXQHVY8g3R7OzYgxXdOfMwLO08UrpUD/2+3Bclyq+/C94Q==", 407 | "dev": true, 408 | "requires": { 409 | "@babel/helper-validator-identifier": "^7.16.7", 410 | "to-fast-properties": "^2.0.0" 411 | } 412 | }, 413 | "@bcoe/v8-coverage": { 414 | "version": "0.2.3", 415 | "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", 416 | "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", 417 | "dev": true 418 | }, 419 | "@eslint/eslintrc": { 420 | "version": "1.3.0", 421 | "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", 422 | "integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==", 423 | "dev": true, 424 | "requires": { 425 | "ajv": "^6.12.4", 426 | "debug": "^4.3.2", 427 | "espree": "^9.3.2", 428 | "globals": "^13.15.0", 429 | "ignore": "^5.2.0", 430 | "import-fresh": "^3.2.1", 431 | "js-yaml": "^4.1.0", 432 | "minimatch": "^3.1.2", 433 | "strip-json-comments": "^3.1.1" 434 | }, 435 | "dependencies": { 436 | "argparse": { 437 | "version": "2.0.1", 438 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", 439 | "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", 440 | "dev": true 441 | }, 442 | "globals": { 443 | "version": "13.15.0", 444 | "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz", 445 | "integrity": "sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==", 446 | "dev": true, 447 | "requires": { 448 | "type-fest": "^0.20.2" 449 | } 450 | }, 451 | "js-yaml": { 452 | "version": "4.1.0", 453 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", 454 | "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", 455 | "dev": true, 456 | "requires": { 457 | "argparse": "^2.0.1" 458 | } 459 | }, 460 | "type-fest": { 461 | "version": "0.20.2", 462 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", 463 | "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", 464 | "dev": true 465 | } 466 | } 467 | }, 468 | "@humanwhocodes/config-array": { 469 | "version": "0.9.5", 470 | "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", 471 | "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", 472 | "dev": true, 473 | "requires": { 474 | "@humanwhocodes/object-schema": "^1.2.1", 475 | "debug": "^4.1.1", 476 | "minimatch": "^3.0.4" 477 | } 478 | }, 479 | "@humanwhocodes/object-schema": { 480 | "version": "1.2.1", 481 | "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", 482 | "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", 483 | "dev": true 484 | }, 485 | "@istanbuljs/load-nyc-config": { 486 | "version": "1.1.0", 487 | "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", 488 | "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", 489 | "dev": true, 490 | "requires": { 491 | "camelcase": "^5.3.1", 492 | "find-up": "^4.1.0", 493 | "get-package-type": "^0.1.0", 494 | "js-yaml": "^3.13.1", 495 | "resolve-from": "^5.0.0" 496 | } 497 | }, 498 | "@istanbuljs/schema": { 499 | "version": "0.1.3", 500 | "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", 501 | "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", 502 | "dev": true 503 | }, 504 | "@jest/console": { 505 | "version": "28.1.0", 506 | "resolved": "https://registry.npmjs.org/@jest/console/-/console-28.1.0.tgz", 507 | "integrity": "sha512-tscn3dlJFGay47kb4qVruQg/XWlmvU0xp3EJOjzzY+sBaI+YgwKcvAmTcyYU7xEiLLIY5HCdWRooAL8dqkFlDA==", 508 | "dev": true, 509 | "requires": { 510 | "@jest/types": "^28.1.0", 511 | "@types/node": "*", 512 | "chalk": "^4.0.0", 513 | "jest-message-util": "^28.1.0", 514 | "jest-util": "^28.1.0", 515 | "slash": "^3.0.0" 516 | } 517 | }, 518 | "@jest/core": { 519 | "version": "28.1.0", 520 | "resolved": "https://registry.npmjs.org/@jest/core/-/core-28.1.0.tgz", 521 | "integrity": "sha512-/2PTt0ywhjZ4NwNO4bUqD9IVJfmFVhVKGlhvSpmEfUCuxYf/3NHcKmRFI+I71lYzbTT3wMuYpETDCTHo81gC/g==", 522 | "dev": true, 523 | "requires": { 524 | "@jest/console": "^28.1.0", 525 | "@jest/reporters": "^28.1.0", 526 | "@jest/test-result": "^28.1.0", 527 | "@jest/transform": "^28.1.0", 528 | "@jest/types": "^28.1.0", 529 | "@types/node": "*", 530 | "ansi-escapes": "^4.2.1", 531 | "chalk": "^4.0.0", 532 | "ci-info": "^3.2.0", 533 | "exit": "^0.1.2", 534 | "graceful-fs": "^4.2.9", 535 | "jest-changed-files": "^28.0.2", 536 | "jest-config": "^28.1.0", 537 | "jest-haste-map": "^28.1.0", 538 | "jest-message-util": "^28.1.0", 539 | "jest-regex-util": "^28.0.2", 540 | "jest-resolve": "^28.1.0", 541 | "jest-resolve-dependencies": "^28.1.0", 542 | "jest-runner": "^28.1.0", 543 | "jest-runtime": "^28.1.0", 544 | "jest-snapshot": "^28.1.0", 545 | "jest-util": "^28.1.0", 546 | "jest-validate": "^28.1.0", 547 | "jest-watcher": "^28.1.0", 548 | "micromatch": "^4.0.4", 549 | "pretty-format": "^28.1.0", 550 | "rimraf": "^3.0.0", 551 | "slash": "^3.0.0", 552 | "strip-ansi": "^6.0.0" 553 | } 554 | }, 555 | "@jest/environment": { 556 | "version": "28.1.0", 557 | "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-28.1.0.tgz", 558 | "integrity": "sha512-S44WGSxkRngzHslhV6RoAExekfF7Qhwa6R5+IYFa81mpcj0YgdBnRSmvHe3SNwOt64yXaE5GG8Y2xM28ii5ssA==", 559 | "dev": true, 560 | "requires": { 561 | "@jest/fake-timers": "^28.1.0", 562 | "@jest/types": "^28.1.0", 563 | "@types/node": "*", 564 | "jest-mock": "^28.1.0" 565 | } 566 | }, 567 | "@jest/expect": { 568 | "version": "28.1.0", 569 | "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-28.1.0.tgz", 570 | "integrity": "sha512-be9ETznPLaHOmeJqzYNIXv1ADEzENuQonIoobzThOYPuK/6GhrWNIJDVTgBLCrz3Am73PyEU2urQClZp0hLTtA==", 571 | "dev": true, 572 | "requires": { 573 | "expect": "^28.1.0", 574 | "jest-snapshot": "^28.1.0" 575 | } 576 | }, 577 | "@jest/expect-utils": { 578 | "version": "28.1.0", 579 | "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-28.1.0.tgz", 580 | "integrity": "sha512-5BrG48dpC0sB80wpeIX5FU6kolDJI4K0n5BM9a5V38MGx0pyRvUBSS0u2aNTdDzmOrCjhOg8pGs6a20ivYkdmw==", 581 | "dev": true, 582 | "requires": { 583 | "jest-get-type": "^28.0.2" 584 | } 585 | }, 586 | "@jest/fake-timers": { 587 | "version": "28.1.0", 588 | "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-28.1.0.tgz", 589 | "integrity": "sha512-Xqsf/6VLeAAq78+GNPzI7FZQRf5cCHj1qgQxCjws9n8rKw8r1UYoeaALwBvyuzOkpU3c1I6emeMySPa96rxtIg==", 590 | "dev": true, 591 | "requires": { 592 | "@jest/types": "^28.1.0", 593 | "@sinonjs/fake-timers": "^9.1.1", 594 | "@types/node": "*", 595 | "jest-message-util": "^28.1.0", 596 | "jest-mock": "^28.1.0", 597 | "jest-util": "^28.1.0" 598 | } 599 | }, 600 | "@jest/globals": { 601 | "version": "28.1.0", 602 | "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-28.1.0.tgz", 603 | "integrity": "sha512-3m7sTg52OTQR6dPhsEQSxAvU+LOBbMivZBwOvKEZ+Rb+GyxVnXi9HKgOTYkx/S99T8yvh17U4tNNJPIEQmtwYw==", 604 | "dev": true, 605 | "requires": { 606 | "@jest/environment": "^28.1.0", 607 | "@jest/expect": "^28.1.0", 608 | "@jest/types": "^28.1.0" 609 | } 610 | }, 611 | "@jest/reporters": { 612 | "version": "28.1.0", 613 | "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-28.1.0.tgz", 614 | "integrity": "sha512-qxbFfqap/5QlSpIizH9c/bFCDKsQlM4uAKSOvZrP+nIdrjqre3FmKzpTtYyhsaVcOSNK7TTt2kjm+4BJIjysFA==", 615 | "dev": true, 616 | "requires": { 617 | "@bcoe/v8-coverage": "^0.2.3", 618 | "@jest/console": "^28.1.0", 619 | "@jest/test-result": "^28.1.0", 620 | "@jest/transform": "^28.1.0", 621 | "@jest/types": "^28.1.0", 622 | "@jridgewell/trace-mapping": "^0.3.7", 623 | "@types/node": "*", 624 | "chalk": "^4.0.0", 625 | "collect-v8-coverage": "^1.0.0", 626 | "exit": "^0.1.2", 627 | "glob": "^7.1.3", 628 | "graceful-fs": "^4.2.9", 629 | "istanbul-lib-coverage": "^3.0.0", 630 | "istanbul-lib-instrument": "^5.1.0", 631 | "istanbul-lib-report": "^3.0.0", 632 | "istanbul-lib-source-maps": "^4.0.0", 633 | "istanbul-reports": "^3.1.3", 634 | "jest-util": "^28.1.0", 635 | "jest-worker": "^28.1.0", 636 | "slash": "^3.0.0", 637 | "string-length": "^4.0.1", 638 | "strip-ansi": "^6.0.0", 639 | "terminal-link": "^2.0.0", 640 | "v8-to-istanbul": "^9.0.0" 641 | } 642 | }, 643 | "@jest/schemas": { 644 | "version": "28.0.2", 645 | "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-28.0.2.tgz", 646 | "integrity": "sha512-YVDJZjd4izeTDkij00vHHAymNXQ6WWsdChFRK86qck6Jpr3DCL5W3Is3vslviRlP+bLuMYRLbdp98amMvqudhA==", 647 | "dev": true, 648 | "requires": { 649 | "@sinclair/typebox": "^0.23.3" 650 | } 651 | }, 652 | "@jest/source-map": { 653 | "version": "28.0.2", 654 | "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-28.0.2.tgz", 655 | "integrity": "sha512-Y9dxC8ZpN3kImkk0LkK5XCEneYMAXlZ8m5bflmSL5vrwyeUpJfentacCUg6fOb8NOpOO7hz2+l37MV77T6BFPw==", 656 | "dev": true, 657 | "requires": { 658 | "@jridgewell/trace-mapping": "^0.3.7", 659 | "callsites": "^3.0.0", 660 | "graceful-fs": "^4.2.9" 661 | } 662 | }, 663 | "@jest/test-result": { 664 | "version": "28.1.0", 665 | "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-28.1.0.tgz", 666 | "integrity": "sha512-sBBFIyoPzrZho3N+80P35A5oAkSKlGfsEFfXFWuPGBsW40UAjCkGakZhn4UQK4iQlW2vgCDMRDOob9FGKV8YoQ==", 667 | "dev": true, 668 | "requires": { 669 | "@jest/console": "^28.1.0", 670 | "@jest/types": "^28.1.0", 671 | "@types/istanbul-lib-coverage": "^2.0.0", 672 | "collect-v8-coverage": "^1.0.0" 673 | } 674 | }, 675 | "@jest/test-sequencer": { 676 | "version": "28.1.0", 677 | "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-28.1.0.tgz", 678 | "integrity": "sha512-tZCEiVWlWNTs/2iK9yi6o3AlMfbbYgV4uuZInSVdzZ7ftpHZhCMuhvk2HLYhCZzLgPFQ9MnM1YaxMnh3TILFiQ==", 679 | "dev": true, 680 | "requires": { 681 | "@jest/test-result": "^28.1.0", 682 | "graceful-fs": "^4.2.9", 683 | "jest-haste-map": "^28.1.0", 684 | "slash": "^3.0.0" 685 | } 686 | }, 687 | "@jest/transform": { 688 | "version": "28.1.0", 689 | "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-28.1.0.tgz", 690 | "integrity": "sha512-omy2xe5WxlAfqmsTjTPxw+iXRTRnf+NtX0ToG+4S0tABeb4KsKmPUHq5UBuwunHg3tJRwgEQhEp0M/8oiatLEA==", 691 | "dev": true, 692 | "requires": { 693 | "@babel/core": "^7.11.6", 694 | "@jest/types": "^28.1.0", 695 | "@jridgewell/trace-mapping": "^0.3.7", 696 | "babel-plugin-istanbul": "^6.1.1", 697 | "chalk": "^4.0.0", 698 | "convert-source-map": "^1.4.0", 699 | "fast-json-stable-stringify": "^2.0.0", 700 | "graceful-fs": "^4.2.9", 701 | "jest-haste-map": "^28.1.0", 702 | "jest-regex-util": "^28.0.2", 703 | "jest-util": "^28.1.0", 704 | "micromatch": "^4.0.4", 705 | "pirates": "^4.0.4", 706 | "slash": "^3.0.0", 707 | "write-file-atomic": "^4.0.1" 708 | } 709 | }, 710 | "@jest/types": { 711 | "version": "28.1.0", 712 | "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.0.tgz", 713 | "integrity": "sha512-xmEggMPr317MIOjjDoZ4ejCSr9Lpbt/u34+dvc99t7DS8YirW5rwZEhzKPC2BMUFkUhI48qs6qLUSGw5FuL0GA==", 714 | "dev": true, 715 | "requires": { 716 | "@jest/schemas": "^28.0.2", 717 | "@types/istanbul-lib-coverage": "^2.0.0", 718 | "@types/istanbul-reports": "^3.0.0", 719 | "@types/node": "*", 720 | "@types/yargs": "^17.0.8", 721 | "chalk": "^4.0.0" 722 | } 723 | }, 724 | "@jridgewell/gen-mapping": { 725 | "version": "0.1.1", 726 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", 727 | "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", 728 | "dev": true, 729 | "requires": { 730 | "@jridgewell/set-array": "^1.0.0", 731 | "@jridgewell/sourcemap-codec": "^1.4.10" 732 | } 733 | }, 734 | "@jridgewell/resolve-uri": { 735 | "version": "3.0.7", 736 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz", 737 | "integrity": "sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==", 738 | "dev": true 739 | }, 740 | "@jridgewell/set-array": { 741 | "version": "1.1.1", 742 | "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.1.tgz", 743 | "integrity": "sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ==", 744 | "dev": true 745 | }, 746 | "@jridgewell/sourcemap-codec": { 747 | "version": "1.4.13", 748 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz", 749 | "integrity": "sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==", 750 | "dev": true 751 | }, 752 | "@jridgewell/trace-mapping": { 753 | "version": "0.3.13", 754 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz", 755 | "integrity": "sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w==", 756 | "dev": true, 757 | "requires": { 758 | "@jridgewell/resolve-uri": "^3.0.3", 759 | "@jridgewell/sourcemap-codec": "^1.4.10" 760 | } 761 | }, 762 | "@nodelib/fs.scandir": { 763 | "version": "2.1.5", 764 | "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", 765 | "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", 766 | "dev": true, 767 | "requires": { 768 | "@nodelib/fs.stat": "2.0.5", 769 | "run-parallel": "^1.1.9" 770 | } 771 | }, 772 | "@nodelib/fs.stat": { 773 | "version": "2.0.5", 774 | "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", 775 | "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", 776 | "dev": true 777 | }, 778 | "@nodelib/fs.walk": { 779 | "version": "1.2.8", 780 | "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", 781 | "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", 782 | "dev": true, 783 | "requires": { 784 | "@nodelib/fs.scandir": "2.1.5", 785 | "fastq": "^1.6.0" 786 | } 787 | }, 788 | "@rushstack/ts-command-line": { 789 | "version": "4.11.0", 790 | "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-4.11.0.tgz", 791 | "integrity": "sha512-ptG9L0mjvJ5QtK11GsAFY+jGfsnqHDS6CY6Yw1xT7a9bhjfNYnf6UPwjV+pF6UgiucfNcMDNW9lkDLxvZKKxMg==", 792 | "requires": { 793 | "@types/argparse": "1.0.38", 794 | "argparse": "~1.0.9", 795 | "colors": "~1.2.1", 796 | "string-argv": "~0.3.1" 797 | } 798 | }, 799 | "@sinclair/typebox": { 800 | "version": "0.23.5", 801 | "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.23.5.tgz", 802 | "integrity": "sha512-AFBVi/iT4g20DHoujvMH1aEDn8fGJh4xsRGCP6d8RpLPMqsNPvW01Jcn0QysXTsg++/xj25NmJsGyH9xug/wKg==", 803 | "dev": true 804 | }, 805 | "@sinonjs/commons": { 806 | "version": "1.8.3", 807 | "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", 808 | "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", 809 | "dev": true, 810 | "requires": { 811 | "type-detect": "4.0.8" 812 | } 813 | }, 814 | "@sinonjs/fake-timers": { 815 | "version": "9.1.2", 816 | "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz", 817 | "integrity": "sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==", 818 | "dev": true, 819 | "requires": { 820 | "@sinonjs/commons": "^1.7.0" 821 | } 822 | }, 823 | "@types/argparse": { 824 | "version": "1.0.38", 825 | "resolved": "https://registry.npmjs.org/@types/argparse/-/argparse-1.0.38.tgz", 826 | "integrity": "sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==" 827 | }, 828 | "@types/aws-lambda": { 829 | "version": "8.10.97", 830 | "resolved": "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.97.tgz", 831 | "integrity": "sha512-BZk3qO4R2KN8Ts3eR6CW1n8LI46UOgv1KoDZjo8J9vOQvDeX/rsrv1H0BpEAMcSqZ1mLwTEyAMtlua5tlSn0kw==", 832 | "dev": true 833 | }, 834 | "@types/babel__core": { 835 | "version": "7.1.19", 836 | "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.19.tgz", 837 | "integrity": "sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==", 838 | "dev": true, 839 | "requires": { 840 | "@babel/parser": "^7.1.0", 841 | "@babel/types": "^7.0.0", 842 | "@types/babel__generator": "*", 843 | "@types/babel__template": "*", 844 | "@types/babel__traverse": "*" 845 | } 846 | }, 847 | "@types/babel__generator": { 848 | "version": "7.6.4", 849 | "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", 850 | "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", 851 | "dev": true, 852 | "requires": { 853 | "@babel/types": "^7.0.0" 854 | } 855 | }, 856 | "@types/babel__template": { 857 | "version": "7.4.1", 858 | "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", 859 | "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", 860 | "dev": true, 861 | "requires": { 862 | "@babel/parser": "^7.1.0", 863 | "@babel/types": "^7.0.0" 864 | } 865 | }, 866 | "@types/babel__traverse": { 867 | "version": "7.17.1", 868 | "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.17.1.tgz", 869 | "integrity": "sha512-kVzjari1s2YVi77D3w1yuvohV2idweYXMCDzqBiVNN63TcDWrIlTVOYpqVrvbbyOE/IyzBoTKF0fdnLPEORFxA==", 870 | "dev": true, 871 | "requires": { 872 | "@babel/types": "^7.3.0" 873 | } 874 | }, 875 | "@types/debug": { 876 | "version": "4.1.7", 877 | "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", 878 | "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==", 879 | "requires": { 880 | "@types/ms": "*" 881 | } 882 | }, 883 | "@types/graceful-fs": { 884 | "version": "4.1.5", 885 | "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", 886 | "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", 887 | "dev": true, 888 | "requires": { 889 | "@types/node": "*" 890 | } 891 | }, 892 | "@types/istanbul-lib-coverage": { 893 | "version": "2.0.4", 894 | "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", 895 | "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", 896 | "dev": true 897 | }, 898 | "@types/istanbul-lib-report": { 899 | "version": "3.0.0", 900 | "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", 901 | "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", 902 | "dev": true, 903 | "requires": { 904 | "@types/istanbul-lib-coverage": "*" 905 | } 906 | }, 907 | "@types/istanbul-reports": { 908 | "version": "3.0.1", 909 | "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", 910 | "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", 911 | "dev": true, 912 | "requires": { 913 | "@types/istanbul-lib-report": "*" 914 | } 915 | }, 916 | "@types/jest": { 917 | "version": "27.5.1", 918 | "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.5.1.tgz", 919 | "integrity": "sha512-fUy7YRpT+rHXto1YlL+J9rs0uLGyiqVt3ZOTQR+4ROc47yNl8WLdVLgUloBRhOxP1PZvguHl44T3H0wAWxahYQ==", 920 | "dev": true, 921 | "requires": { 922 | "jest-matcher-utils": "^27.0.0", 923 | "pretty-format": "^27.0.0" 924 | }, 925 | "dependencies": { 926 | "ansi-styles": { 927 | "version": "5.2.0", 928 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", 929 | "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", 930 | "dev": true 931 | }, 932 | "diff-sequences": { 933 | "version": "27.5.1", 934 | "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", 935 | "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", 936 | "dev": true 937 | }, 938 | "jest-diff": { 939 | "version": "27.5.1", 940 | "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", 941 | "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", 942 | "dev": true, 943 | "requires": { 944 | "chalk": "^4.0.0", 945 | "diff-sequences": "^27.5.1", 946 | "jest-get-type": "^27.5.1", 947 | "pretty-format": "^27.5.1" 948 | } 949 | }, 950 | "jest-get-type": { 951 | "version": "27.5.1", 952 | "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", 953 | "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", 954 | "dev": true 955 | }, 956 | "jest-matcher-utils": { 957 | "version": "27.5.1", 958 | "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", 959 | "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", 960 | "dev": true, 961 | "requires": { 962 | "chalk": "^4.0.0", 963 | "jest-diff": "^27.5.1", 964 | "jest-get-type": "^27.5.1", 965 | "pretty-format": "^27.5.1" 966 | } 967 | }, 968 | "pretty-format": { 969 | "version": "27.5.1", 970 | "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", 971 | "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", 972 | "dev": true, 973 | "requires": { 974 | "ansi-regex": "^5.0.1", 975 | "ansi-styles": "^5.0.0", 976 | "react-is": "^17.0.1" 977 | } 978 | }, 979 | "react-is": { 980 | "version": "17.0.2", 981 | "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", 982 | "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", 983 | "dev": true 984 | } 985 | } 986 | }, 987 | "@types/json-schema": { 988 | "version": "7.0.11", 989 | "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", 990 | "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", 991 | "dev": true 992 | }, 993 | "@types/ms": { 994 | "version": "0.7.31", 995 | "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", 996 | "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" 997 | }, 998 | "@types/node": { 999 | "version": "17.0.35", 1000 | "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.35.tgz", 1001 | "integrity": "sha512-vu1SrqBjbbZ3J6vwY17jBs8Sr/BKA+/a/WtjRG+whKg1iuLFOosq872EXS0eXWILdO36DHQQeku/ZcL6hz2fpg==" 1002 | }, 1003 | "@types/prettier": { 1004 | "version": "2.6.1", 1005 | "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.6.1.tgz", 1006 | "integrity": "sha512-XFjFHmaLVifrAKaZ+EKghFHtHSUonyw8P2Qmy2/+osBnrKbH9UYtlK10zg8/kCt47MFilll/DEDKy3DHfJ0URw==", 1007 | "dev": true 1008 | }, 1009 | "@types/stack-utils": { 1010 | "version": "2.0.1", 1011 | "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", 1012 | "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", 1013 | "dev": true 1014 | }, 1015 | "@types/validator": { 1016 | "version": "13.7.2", 1017 | "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.7.2.tgz", 1018 | "integrity": "sha512-KFcchQ3h0OPQgFirBRPZr5F/sVjxZsOrQHedj3zi8AH3Zv/hOLx2OLR4hxR5HcfoU+33n69ZuOfzthKVdMoTiw==" 1019 | }, 1020 | "@types/yargs": { 1021 | "version": "17.0.10", 1022 | "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.10.tgz", 1023 | "integrity": "sha512-gmEaFwpj/7f/ROdtIlci1R1VYU1J4j95m8T+Tj3iBgiBFKg1foE/PSl93bBd5T9LDXNPo8UlNN6W0qwD8O5OaA==", 1024 | "dev": true, 1025 | "requires": { 1026 | "@types/yargs-parser": "*" 1027 | } 1028 | }, 1029 | "@types/yargs-parser": { 1030 | "version": "21.0.0", 1031 | "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", 1032 | "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", 1033 | "dev": true 1034 | }, 1035 | "@typescript-eslint/eslint-plugin": { 1036 | "version": "5.26.0", 1037 | "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.26.0.tgz", 1038 | "integrity": "sha512-oGCmo0PqnRZZndr+KwvvAUvD3kNE4AfyoGCwOZpoCncSh4MVD06JTE8XQa2u9u+NX5CsyZMBTEc2C72zx38eYA==", 1039 | "dev": true, 1040 | "requires": { 1041 | "@typescript-eslint/scope-manager": "5.26.0", 1042 | "@typescript-eslint/type-utils": "5.26.0", 1043 | "@typescript-eslint/utils": "5.26.0", 1044 | "debug": "^4.3.4", 1045 | "functional-red-black-tree": "^1.0.1", 1046 | "ignore": "^5.2.0", 1047 | "regexpp": "^3.2.0", 1048 | "semver": "^7.3.7", 1049 | "tsutils": "^3.21.0" 1050 | }, 1051 | "dependencies": { 1052 | "semver": { 1053 | "version": "7.3.7", 1054 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", 1055 | "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", 1056 | "dev": true, 1057 | "requires": { 1058 | "lru-cache": "^6.0.0" 1059 | } 1060 | } 1061 | } 1062 | }, 1063 | "@typescript-eslint/parser": { 1064 | "version": "5.26.0", 1065 | "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.26.0.tgz", 1066 | "integrity": "sha512-n/IzU87ttzIdnAH5vQ4BBDnLPly7rC5VnjN3m0xBG82HK6rhRxnCb3w/GyWbNDghPd+NktJqB/wl6+YkzZ5T5Q==", 1067 | "dev": true, 1068 | "requires": { 1069 | "@typescript-eslint/scope-manager": "5.26.0", 1070 | "@typescript-eslint/types": "5.26.0", 1071 | "@typescript-eslint/typescript-estree": "5.26.0", 1072 | "debug": "^4.3.4" 1073 | } 1074 | }, 1075 | "@typescript-eslint/scope-manager": { 1076 | "version": "5.26.0", 1077 | "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.26.0.tgz", 1078 | "integrity": "sha512-gVzTJUESuTwiju/7NiTb4c5oqod8xt5GhMbExKsCTp6adU3mya6AGJ4Pl9xC7x2DX9UYFsjImC0mA62BCY22Iw==", 1079 | "dev": true, 1080 | "requires": { 1081 | "@typescript-eslint/types": "5.26.0", 1082 | "@typescript-eslint/visitor-keys": "5.26.0" 1083 | } 1084 | }, 1085 | "@typescript-eslint/type-utils": { 1086 | "version": "5.26.0", 1087 | "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.26.0.tgz", 1088 | "integrity": "sha512-7ccbUVWGLmcRDSA1+ADkDBl5fP87EJt0fnijsMFTVHXKGduYMgienC/i3QwoVhDADUAPoytgjbZbCOMj4TY55A==", 1089 | "dev": true, 1090 | "requires": { 1091 | "@typescript-eslint/utils": "5.26.0", 1092 | "debug": "^4.3.4", 1093 | "tsutils": "^3.21.0" 1094 | } 1095 | }, 1096 | "@typescript-eslint/types": { 1097 | "version": "5.26.0", 1098 | "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.26.0.tgz", 1099 | "integrity": "sha512-8794JZFE1RN4XaExLWLI2oSXsVImNkl79PzTOOWt9h0UHROwJedNOD2IJyfL0NbddFllcktGIO2aOu10avQQyA==", 1100 | "dev": true 1101 | }, 1102 | "@typescript-eslint/typescript-estree": { 1103 | "version": "5.26.0", 1104 | "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.26.0.tgz", 1105 | "integrity": "sha512-EyGpw6eQDsfD6jIqmXP3rU5oHScZ51tL/cZgFbFBvWuCwrIptl+oueUZzSmLtxFuSOQ9vDcJIs+279gnJkfd1w==", 1106 | "dev": true, 1107 | "requires": { 1108 | "@typescript-eslint/types": "5.26.0", 1109 | "@typescript-eslint/visitor-keys": "5.26.0", 1110 | "debug": "^4.3.4", 1111 | "globby": "^11.1.0", 1112 | "is-glob": "^4.0.3", 1113 | "semver": "^7.3.7", 1114 | "tsutils": "^3.21.0" 1115 | }, 1116 | "dependencies": { 1117 | "semver": { 1118 | "version": "7.3.7", 1119 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", 1120 | "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", 1121 | "dev": true, 1122 | "requires": { 1123 | "lru-cache": "^6.0.0" 1124 | } 1125 | } 1126 | } 1127 | }, 1128 | "@typescript-eslint/utils": { 1129 | "version": "5.26.0", 1130 | "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.26.0.tgz", 1131 | "integrity": "sha512-PJFwcTq2Pt4AMOKfe3zQOdez6InIDOjUJJD3v3LyEtxHGVVRK3Vo7Dd923t/4M9hSH2q2CLvcTdxlLPjcIk3eg==", 1132 | "dev": true, 1133 | "requires": { 1134 | "@types/json-schema": "^7.0.9", 1135 | "@typescript-eslint/scope-manager": "5.26.0", 1136 | "@typescript-eslint/types": "5.26.0", 1137 | "@typescript-eslint/typescript-estree": "5.26.0", 1138 | "eslint-scope": "^5.1.1", 1139 | "eslint-utils": "^3.0.0" 1140 | } 1141 | }, 1142 | "@typescript-eslint/visitor-keys": { 1143 | "version": "5.26.0", 1144 | "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.26.0.tgz", 1145 | "integrity": "sha512-wei+ffqHanYDOQgg/fS6Hcar6wAWv0CUPQ3TZzOWd2BLfgP539rb49bwua8WRAs7R6kOSLn82rfEu2ro6Llt8Q==", 1146 | "dev": true, 1147 | "requires": { 1148 | "@typescript-eslint/types": "5.26.0", 1149 | "eslint-visitor-keys": "^3.3.0" 1150 | } 1151 | }, 1152 | "acorn": { 1153 | "version": "8.7.1", 1154 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", 1155 | "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", 1156 | "dev": true 1157 | }, 1158 | "acorn-jsx": { 1159 | "version": "5.3.2", 1160 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", 1161 | "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", 1162 | "dev": true 1163 | }, 1164 | "ajv": { 1165 | "version": "6.12.6", 1166 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 1167 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 1168 | "dev": true, 1169 | "requires": { 1170 | "fast-deep-equal": "^3.1.1", 1171 | "fast-json-stable-stringify": "^2.0.0", 1172 | "json-schema-traverse": "^0.4.1", 1173 | "uri-js": "^4.2.2" 1174 | } 1175 | }, 1176 | "ansi-escapes": { 1177 | "version": "4.3.2", 1178 | "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", 1179 | "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", 1180 | "dev": true, 1181 | "requires": { 1182 | "type-fest": "^0.21.3" 1183 | } 1184 | }, 1185 | "ansi-regex": { 1186 | "version": "5.0.1", 1187 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 1188 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 1189 | "dev": true 1190 | }, 1191 | "ansi-styles": { 1192 | "version": "4.3.0", 1193 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 1194 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 1195 | "dev": true, 1196 | "requires": { 1197 | "color-convert": "^2.0.1" 1198 | } 1199 | }, 1200 | "anymatch": { 1201 | "version": "3.1.2", 1202 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", 1203 | "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", 1204 | "dev": true, 1205 | "requires": { 1206 | "normalize-path": "^3.0.0", 1207 | "picomatch": "^2.0.4" 1208 | } 1209 | }, 1210 | "argparse": { 1211 | "version": "1.0.10", 1212 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", 1213 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", 1214 | "requires": { 1215 | "sprintf-js": "~1.0.2" 1216 | } 1217 | }, 1218 | "array-union": { 1219 | "version": "2.1.0", 1220 | "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", 1221 | "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", 1222 | "dev": true 1223 | }, 1224 | "aws-lambda": { 1225 | "version": "1.0.7", 1226 | "resolved": "https://registry.npmjs.org/aws-lambda/-/aws-lambda-1.0.7.tgz", 1227 | "integrity": "sha512-9GNFMRrEMG5y3Jvv+V4azWvc+qNWdWLTjDdhf/zgMlz8haaaLWv0xeAIWxz9PuWUBawsVxy0zZotjCdR3Xq+2w==", 1228 | "requires": { 1229 | "aws-sdk": "^2.814.0", 1230 | "commander": "^3.0.2", 1231 | "js-yaml": "^3.14.1", 1232 | "watchpack": "^2.0.0-beta.10" 1233 | } 1234 | }, 1235 | "aws-sdk": { 1236 | "version": "2.1148.0", 1237 | "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1148.0.tgz", 1238 | "integrity": "sha512-FUYAyveKmS5eqIiGQgrGVsLZwwtI+K6S6Gz8oJf56pgypZCo9dV+cXO4aaS+vN0+LSmGh6dSKc6G8h8FYASIJg==", 1239 | "requires": { 1240 | "buffer": "4.9.2", 1241 | "events": "1.1.1", 1242 | "ieee754": "1.1.13", 1243 | "jmespath": "0.16.0", 1244 | "querystring": "0.2.0", 1245 | "sax": "1.2.1", 1246 | "url": "0.10.3", 1247 | "uuid": "8.0.0", 1248 | "xml2js": "0.4.19" 1249 | }, 1250 | "dependencies": { 1251 | "uuid": { 1252 | "version": "8.0.0", 1253 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.0.0.tgz", 1254 | "integrity": "sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw==" 1255 | } 1256 | } 1257 | }, 1258 | "babel-jest": { 1259 | "version": "28.1.0", 1260 | "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-28.1.0.tgz", 1261 | "integrity": "sha512-zNKk0yhDZ6QUwfxh9k07GII6siNGMJWVUU49gmFj5gfdqDKLqa2RArXOF2CODp4Dr7dLxN2cvAV+667dGJ4b4w==", 1262 | "dev": true, 1263 | "requires": { 1264 | "@jest/transform": "^28.1.0", 1265 | "@types/babel__core": "^7.1.14", 1266 | "babel-plugin-istanbul": "^6.1.1", 1267 | "babel-preset-jest": "^28.0.2", 1268 | "chalk": "^4.0.0", 1269 | "graceful-fs": "^4.2.9", 1270 | "slash": "^3.0.0" 1271 | } 1272 | }, 1273 | "babel-plugin-istanbul": { 1274 | "version": "6.1.1", 1275 | "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", 1276 | "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", 1277 | "dev": true, 1278 | "requires": { 1279 | "@babel/helper-plugin-utils": "^7.0.0", 1280 | "@istanbuljs/load-nyc-config": "^1.0.0", 1281 | "@istanbuljs/schema": "^0.1.2", 1282 | "istanbul-lib-instrument": "^5.0.4", 1283 | "test-exclude": "^6.0.0" 1284 | } 1285 | }, 1286 | "babel-plugin-jest-hoist": { 1287 | "version": "28.0.2", 1288 | "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-28.0.2.tgz", 1289 | "integrity": "sha512-Kizhn/ZL+68ZQHxSnHyuvJv8IchXD62KQxV77TBDV/xoBFBOfgRAk97GNs6hXdTTCiVES9nB2I6+7MXXrk5llQ==", 1290 | "dev": true, 1291 | "requires": { 1292 | "@babel/template": "^7.3.3", 1293 | "@babel/types": "^7.3.3", 1294 | "@types/babel__core": "^7.1.14", 1295 | "@types/babel__traverse": "^7.0.6" 1296 | } 1297 | }, 1298 | "babel-preset-current-node-syntax": { 1299 | "version": "1.0.1", 1300 | "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", 1301 | "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", 1302 | "dev": true, 1303 | "requires": { 1304 | "@babel/plugin-syntax-async-generators": "^7.8.4", 1305 | "@babel/plugin-syntax-bigint": "^7.8.3", 1306 | "@babel/plugin-syntax-class-properties": "^7.8.3", 1307 | "@babel/plugin-syntax-import-meta": "^7.8.3", 1308 | "@babel/plugin-syntax-json-strings": "^7.8.3", 1309 | "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", 1310 | "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", 1311 | "@babel/plugin-syntax-numeric-separator": "^7.8.3", 1312 | "@babel/plugin-syntax-object-rest-spread": "^7.8.3", 1313 | "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", 1314 | "@babel/plugin-syntax-optional-chaining": "^7.8.3", 1315 | "@babel/plugin-syntax-top-level-await": "^7.8.3" 1316 | } 1317 | }, 1318 | "babel-preset-jest": { 1319 | "version": "28.0.2", 1320 | "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-28.0.2.tgz", 1321 | "integrity": "sha512-sYzXIdgIXXroJTFeB3S6sNDWtlJ2dllCdTEsnZ65ACrMojj3hVNFRmnJ1HZtomGi+Be7aqpY/HJ92fr8OhKVkQ==", 1322 | "dev": true, 1323 | "requires": { 1324 | "babel-plugin-jest-hoist": "^28.0.2", 1325 | "babel-preset-current-node-syntax": "^1.0.0" 1326 | } 1327 | }, 1328 | "balanced-match": { 1329 | "version": "1.0.2", 1330 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 1331 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" 1332 | }, 1333 | "base64-js": { 1334 | "version": "1.5.1", 1335 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", 1336 | "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" 1337 | }, 1338 | "brace-expansion": { 1339 | "version": "1.1.11", 1340 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 1341 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 1342 | "requires": { 1343 | "balanced-match": "^1.0.0", 1344 | "concat-map": "0.0.1" 1345 | } 1346 | }, 1347 | "braces": { 1348 | "version": "3.0.2", 1349 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 1350 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 1351 | "dev": true, 1352 | "requires": { 1353 | "fill-range": "^7.0.1" 1354 | } 1355 | }, 1356 | "browserslist": { 1357 | "version": "4.20.3", 1358 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.3.tgz", 1359 | "integrity": "sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg==", 1360 | "dev": true, 1361 | "requires": { 1362 | "caniuse-lite": "^1.0.30001332", 1363 | "electron-to-chromium": "^1.4.118", 1364 | "escalade": "^3.1.1", 1365 | "node-releases": "^2.0.3", 1366 | "picocolors": "^1.0.0" 1367 | } 1368 | }, 1369 | "bs-logger": { 1370 | "version": "0.2.6", 1371 | "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", 1372 | "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", 1373 | "dev": true, 1374 | "requires": { 1375 | "fast-json-stable-stringify": "2.x" 1376 | } 1377 | }, 1378 | "bser": { 1379 | "version": "2.1.1", 1380 | "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", 1381 | "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", 1382 | "dev": true, 1383 | "requires": { 1384 | "node-int64": "^0.4.0" 1385 | } 1386 | }, 1387 | "buffer": { 1388 | "version": "4.9.2", 1389 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", 1390 | "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", 1391 | "requires": { 1392 | "base64-js": "^1.0.2", 1393 | "ieee754": "^1.1.4", 1394 | "isarray": "^1.0.0" 1395 | } 1396 | }, 1397 | "buffer-from": { 1398 | "version": "1.1.2", 1399 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", 1400 | "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", 1401 | "dev": true 1402 | }, 1403 | "callsites": { 1404 | "version": "3.1.0", 1405 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 1406 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", 1407 | "dev": true 1408 | }, 1409 | "camelcase": { 1410 | "version": "5.3.1", 1411 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", 1412 | "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", 1413 | "dev": true 1414 | }, 1415 | "caniuse-lite": { 1416 | "version": "1.0.30001343", 1417 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001343.tgz", 1418 | "integrity": "sha512-8KeCrAtPMabo/XW14B+R9sZYoClx1n0b+WYgwDKZPtWR3TcdvWzdSy7mPyFEmR5WU1St9v1PW6sdO5dkFOEzfA==", 1419 | "dev": true 1420 | }, 1421 | "chalk": { 1422 | "version": "4.1.2", 1423 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 1424 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 1425 | "dev": true, 1426 | "requires": { 1427 | "ansi-styles": "^4.1.0", 1428 | "supports-color": "^7.1.0" 1429 | } 1430 | }, 1431 | "char-regex": { 1432 | "version": "1.0.2", 1433 | "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", 1434 | "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", 1435 | "dev": true 1436 | }, 1437 | "ci-info": { 1438 | "version": "3.3.1", 1439 | "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.1.tgz", 1440 | "integrity": "sha512-SXgeMX9VwDe7iFFaEWkA5AstuER9YKqy4EhHqr4DVqkwmD9rpVimkMKWHdjn30Ja45txyjhSn63lVX69eVCckg==", 1441 | "dev": true 1442 | }, 1443 | "cjs-module-lexer": { 1444 | "version": "1.2.2", 1445 | "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", 1446 | "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", 1447 | "dev": true 1448 | }, 1449 | "cliui": { 1450 | "version": "7.0.4", 1451 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", 1452 | "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", 1453 | "dev": true, 1454 | "requires": { 1455 | "string-width": "^4.2.0", 1456 | "strip-ansi": "^6.0.0", 1457 | "wrap-ansi": "^7.0.0" 1458 | } 1459 | }, 1460 | "co": { 1461 | "version": "4.6.0", 1462 | "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", 1463 | "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", 1464 | "dev": true 1465 | }, 1466 | "collect-v8-coverage": { 1467 | "version": "1.0.1", 1468 | "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", 1469 | "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", 1470 | "dev": true 1471 | }, 1472 | "color-convert": { 1473 | "version": "2.0.1", 1474 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 1475 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 1476 | "dev": true, 1477 | "requires": { 1478 | "color-name": "~1.1.4" 1479 | } 1480 | }, 1481 | "color-name": { 1482 | "version": "1.1.4", 1483 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 1484 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 1485 | "dev": true 1486 | }, 1487 | "colors": { 1488 | "version": "1.2.5", 1489 | "resolved": "https://registry.npmjs.org/colors/-/colors-1.2.5.tgz", 1490 | "integrity": "sha512-erNRLao/Y3Fv54qUa0LBB+//Uf3YwMUmdJinN20yMXm9zdKKqH9wt7R9IIVZ+K7ShzfpLV/Zg8+VyrBJYB4lpg==" 1491 | }, 1492 | "commander": { 1493 | "version": "3.0.2", 1494 | "resolved": "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz", 1495 | "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==" 1496 | }, 1497 | "concat-map": { 1498 | "version": "0.0.1", 1499 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 1500 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" 1501 | }, 1502 | "convert-source-map": { 1503 | "version": "1.8.0", 1504 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", 1505 | "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", 1506 | "dev": true, 1507 | "requires": { 1508 | "safe-buffer": "~5.1.1" 1509 | } 1510 | }, 1511 | "cross-spawn": { 1512 | "version": "7.0.3", 1513 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", 1514 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", 1515 | "dev": true, 1516 | "requires": { 1517 | "path-key": "^3.1.0", 1518 | "shebang-command": "^2.0.0", 1519 | "which": "^2.0.1" 1520 | } 1521 | }, 1522 | "debug": { 1523 | "version": "4.3.4", 1524 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 1525 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 1526 | "requires": { 1527 | "ms": "2.1.2" 1528 | } 1529 | }, 1530 | "dedent": { 1531 | "version": "0.7.0", 1532 | "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", 1533 | "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", 1534 | "dev": true 1535 | }, 1536 | "deep-is": { 1537 | "version": "0.1.4", 1538 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", 1539 | "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", 1540 | "dev": true 1541 | }, 1542 | "deepmerge": { 1543 | "version": "4.2.2", 1544 | "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", 1545 | "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", 1546 | "dev": true 1547 | }, 1548 | "denque": { 1549 | "version": "2.0.1", 1550 | "resolved": "https://registry.npmjs.org/denque/-/denque-2.0.1.tgz", 1551 | "integrity": "sha512-tfiWc6BQLXNLpNiR5iGd0Ocu3P3VpxfzFiqubLgMfhfOw9WyvgJBd46CClNn9k3qfbjvT//0cf7AlYRX/OslMQ==" 1552 | }, 1553 | "detect-newline": { 1554 | "version": "3.1.0", 1555 | "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", 1556 | "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", 1557 | "dev": true 1558 | }, 1559 | "diff-sequences": { 1560 | "version": "28.0.2", 1561 | "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-28.0.2.tgz", 1562 | "integrity": "sha512-YtEoNynLDFCRznv/XDalsKGSZDoj0U5kLnXvY0JSq3nBboRrZXjD81+eSiwi+nzcZDwedMmcowcxNwwgFW23mQ==", 1563 | "dev": true 1564 | }, 1565 | "dir-glob": { 1566 | "version": "3.0.1", 1567 | "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", 1568 | "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", 1569 | "dev": true, 1570 | "requires": { 1571 | "path-type": "^4.0.0" 1572 | } 1573 | }, 1574 | "doctrine": { 1575 | "version": "3.0.0", 1576 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", 1577 | "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", 1578 | "dev": true, 1579 | "requires": { 1580 | "esutils": "^2.0.2" 1581 | } 1582 | }, 1583 | "dottie": { 1584 | "version": "2.0.2", 1585 | "resolved": "https://registry.npmjs.org/dottie/-/dottie-2.0.2.tgz", 1586 | "integrity": "sha512-fmrwR04lsniq/uSr8yikThDTrM7epXHBAAjH9TbeH3rEA8tdCO7mRzB9hdmdGyJCxF8KERo9CITcm3kGuoyMhg==" 1587 | }, 1588 | "electron-to-chromium": { 1589 | "version": "1.4.139", 1590 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.139.tgz", 1591 | "integrity": "sha512-lYxzcUCjWxxVug+A7UxBCUiVr13TCjfZFYJS9Lq1VpU/ErwV4a6zUQo9dfojuGpw/L/x9REGuBl6ICQPGgbs3g==", 1592 | "dev": true 1593 | }, 1594 | "emittery": { 1595 | "version": "0.10.2", 1596 | "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.10.2.tgz", 1597 | "integrity": "sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==" 1598 | }, 1599 | "emoji-regex": { 1600 | "version": "8.0.0", 1601 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 1602 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 1603 | "dev": true 1604 | }, 1605 | "error-ex": { 1606 | "version": "1.3.2", 1607 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", 1608 | "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", 1609 | "dev": true, 1610 | "requires": { 1611 | "is-arrayish": "^0.2.1" 1612 | } 1613 | }, 1614 | "escalade": { 1615 | "version": "3.1.1", 1616 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", 1617 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", 1618 | "dev": true 1619 | }, 1620 | "escape-string-regexp": { 1621 | "version": "1.0.5", 1622 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 1623 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 1624 | "dev": true 1625 | }, 1626 | "eslint": { 1627 | "version": "8.16.0", 1628 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.16.0.tgz", 1629 | "integrity": "sha512-MBndsoXY/PeVTDJeWsYj7kLZ5hQpJOfMYLsF6LicLHQWbRDG19lK5jOix4DPl8yY4SUFcE3txy86OzFLWT+yoA==", 1630 | "dev": true, 1631 | "requires": { 1632 | "@eslint/eslintrc": "^1.3.0", 1633 | "@humanwhocodes/config-array": "^0.9.2", 1634 | "ajv": "^6.10.0", 1635 | "chalk": "^4.0.0", 1636 | "cross-spawn": "^7.0.2", 1637 | "debug": "^4.3.2", 1638 | "doctrine": "^3.0.0", 1639 | "escape-string-regexp": "^4.0.0", 1640 | "eslint-scope": "^7.1.1", 1641 | "eslint-utils": "^3.0.0", 1642 | "eslint-visitor-keys": "^3.3.0", 1643 | "espree": "^9.3.2", 1644 | "esquery": "^1.4.0", 1645 | "esutils": "^2.0.2", 1646 | "fast-deep-equal": "^3.1.3", 1647 | "file-entry-cache": "^6.0.1", 1648 | "functional-red-black-tree": "^1.0.1", 1649 | "glob-parent": "^6.0.1", 1650 | "globals": "^13.15.0", 1651 | "ignore": "^5.2.0", 1652 | "import-fresh": "^3.0.0", 1653 | "imurmurhash": "^0.1.4", 1654 | "is-glob": "^4.0.0", 1655 | "js-yaml": "^4.1.0", 1656 | "json-stable-stringify-without-jsonify": "^1.0.1", 1657 | "levn": "^0.4.1", 1658 | "lodash.merge": "^4.6.2", 1659 | "minimatch": "^3.1.2", 1660 | "natural-compare": "^1.4.0", 1661 | "optionator": "^0.9.1", 1662 | "regexpp": "^3.2.0", 1663 | "strip-ansi": "^6.0.1", 1664 | "strip-json-comments": "^3.1.0", 1665 | "text-table": "^0.2.0", 1666 | "v8-compile-cache": "^2.0.3" 1667 | }, 1668 | "dependencies": { 1669 | "argparse": { 1670 | "version": "2.0.1", 1671 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", 1672 | "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", 1673 | "dev": true 1674 | }, 1675 | "escape-string-regexp": { 1676 | "version": "4.0.0", 1677 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", 1678 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", 1679 | "dev": true 1680 | }, 1681 | "eslint-scope": { 1682 | "version": "7.1.1", 1683 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", 1684 | "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", 1685 | "dev": true, 1686 | "requires": { 1687 | "esrecurse": "^4.3.0", 1688 | "estraverse": "^5.2.0" 1689 | } 1690 | }, 1691 | "estraverse": { 1692 | "version": "5.3.0", 1693 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", 1694 | "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", 1695 | "dev": true 1696 | }, 1697 | "glob-parent": { 1698 | "version": "6.0.2", 1699 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", 1700 | "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", 1701 | "dev": true, 1702 | "requires": { 1703 | "is-glob": "^4.0.3" 1704 | } 1705 | }, 1706 | "globals": { 1707 | "version": "13.15.0", 1708 | "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz", 1709 | "integrity": "sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==", 1710 | "dev": true, 1711 | "requires": { 1712 | "type-fest": "^0.20.2" 1713 | } 1714 | }, 1715 | "js-yaml": { 1716 | "version": "4.1.0", 1717 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", 1718 | "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", 1719 | "dev": true, 1720 | "requires": { 1721 | "argparse": "^2.0.1" 1722 | } 1723 | }, 1724 | "type-fest": { 1725 | "version": "0.20.2", 1726 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", 1727 | "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", 1728 | "dev": true 1729 | } 1730 | } 1731 | }, 1732 | "eslint-config-prettier": { 1733 | "version": "8.5.0", 1734 | "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", 1735 | "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", 1736 | "dev": true 1737 | }, 1738 | "eslint-plugin-prettier": { 1739 | "version": "4.0.0", 1740 | "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.0.0.tgz", 1741 | "integrity": "sha512-98MqmCJ7vJodoQK359bqQWaxOE0CS8paAz/GgjaZLyex4TTk3g9HugoO89EqWCrFiOqn9EVvcoo7gZzONCWVwQ==", 1742 | "dev": true, 1743 | "requires": { 1744 | "prettier-linter-helpers": "^1.0.0" 1745 | } 1746 | }, 1747 | "eslint-scope": { 1748 | "version": "5.1.1", 1749 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", 1750 | "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", 1751 | "dev": true, 1752 | "requires": { 1753 | "esrecurse": "^4.3.0", 1754 | "estraverse": "^4.1.1" 1755 | } 1756 | }, 1757 | "eslint-utils": { 1758 | "version": "3.0.0", 1759 | "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", 1760 | "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", 1761 | "dev": true, 1762 | "requires": { 1763 | "eslint-visitor-keys": "^2.0.0" 1764 | }, 1765 | "dependencies": { 1766 | "eslint-visitor-keys": { 1767 | "version": "2.1.0", 1768 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", 1769 | "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", 1770 | "dev": true 1771 | } 1772 | } 1773 | }, 1774 | "eslint-visitor-keys": { 1775 | "version": "3.3.0", 1776 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", 1777 | "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", 1778 | "dev": true 1779 | }, 1780 | "espree": { 1781 | "version": "9.3.2", 1782 | "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz", 1783 | "integrity": "sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==", 1784 | "dev": true, 1785 | "requires": { 1786 | "acorn": "^8.7.1", 1787 | "acorn-jsx": "^5.3.2", 1788 | "eslint-visitor-keys": "^3.3.0" 1789 | } 1790 | }, 1791 | "esprima": { 1792 | "version": "4.0.1", 1793 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", 1794 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" 1795 | }, 1796 | "esquery": { 1797 | "version": "1.4.0", 1798 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", 1799 | "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", 1800 | "dev": true, 1801 | "requires": { 1802 | "estraverse": "^5.1.0" 1803 | }, 1804 | "dependencies": { 1805 | "estraverse": { 1806 | "version": "5.3.0", 1807 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", 1808 | "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", 1809 | "dev": true 1810 | } 1811 | } 1812 | }, 1813 | "esrecurse": { 1814 | "version": "4.3.0", 1815 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", 1816 | "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", 1817 | "dev": true, 1818 | "requires": { 1819 | "estraverse": "^5.2.0" 1820 | }, 1821 | "dependencies": { 1822 | "estraverse": { 1823 | "version": "5.3.0", 1824 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", 1825 | "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", 1826 | "dev": true 1827 | } 1828 | } 1829 | }, 1830 | "estraverse": { 1831 | "version": "4.3.0", 1832 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", 1833 | "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", 1834 | "dev": true 1835 | }, 1836 | "esutils": { 1837 | "version": "2.0.3", 1838 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 1839 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", 1840 | "dev": true 1841 | }, 1842 | "events": { 1843 | "version": "1.1.1", 1844 | "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", 1845 | "integrity": "sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw==" 1846 | }, 1847 | "execa": { 1848 | "version": "5.1.1", 1849 | "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", 1850 | "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", 1851 | "dev": true, 1852 | "requires": { 1853 | "cross-spawn": "^7.0.3", 1854 | "get-stream": "^6.0.0", 1855 | "human-signals": "^2.1.0", 1856 | "is-stream": "^2.0.0", 1857 | "merge-stream": "^2.0.0", 1858 | "npm-run-path": "^4.0.1", 1859 | "onetime": "^5.1.2", 1860 | "signal-exit": "^3.0.3", 1861 | "strip-final-newline": "^2.0.0" 1862 | } 1863 | }, 1864 | "exit": { 1865 | "version": "0.1.2", 1866 | "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", 1867 | "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", 1868 | "dev": true 1869 | }, 1870 | "expect": { 1871 | "version": "28.1.0", 1872 | "resolved": "https://registry.npmjs.org/expect/-/expect-28.1.0.tgz", 1873 | "integrity": "sha512-qFXKl8Pmxk8TBGfaFKRtcQjfXEnKAs+dmlxdwvukJZorwrAabT7M3h8oLOG01I2utEhkmUTi17CHaPBovZsKdw==", 1874 | "dev": true, 1875 | "requires": { 1876 | "@jest/expect-utils": "^28.1.0", 1877 | "jest-get-type": "^28.0.2", 1878 | "jest-matcher-utils": "^28.1.0", 1879 | "jest-message-util": "^28.1.0", 1880 | "jest-util": "^28.1.0" 1881 | } 1882 | }, 1883 | "fast-deep-equal": { 1884 | "version": "3.1.3", 1885 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 1886 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", 1887 | "dev": true 1888 | }, 1889 | "fast-diff": { 1890 | "version": "1.2.0", 1891 | "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", 1892 | "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", 1893 | "dev": true 1894 | }, 1895 | "fast-glob": { 1896 | "version": "3.2.11", 1897 | "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", 1898 | "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", 1899 | "dev": true, 1900 | "requires": { 1901 | "@nodelib/fs.stat": "^2.0.2", 1902 | "@nodelib/fs.walk": "^1.2.3", 1903 | "glob-parent": "^5.1.2", 1904 | "merge2": "^1.3.0", 1905 | "micromatch": "^4.0.4" 1906 | } 1907 | }, 1908 | "fast-json-stable-stringify": { 1909 | "version": "2.1.0", 1910 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 1911 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 1912 | "dev": true 1913 | }, 1914 | "fast-levenshtein": { 1915 | "version": "2.0.6", 1916 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 1917 | "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", 1918 | "dev": true 1919 | }, 1920 | "fastq": { 1921 | "version": "1.13.0", 1922 | "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", 1923 | "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", 1924 | "dev": true, 1925 | "requires": { 1926 | "reusify": "^1.0.4" 1927 | } 1928 | }, 1929 | "fb-watchman": { 1930 | "version": "2.0.1", 1931 | "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", 1932 | "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", 1933 | "dev": true, 1934 | "requires": { 1935 | "bser": "2.1.1" 1936 | } 1937 | }, 1938 | "file-entry-cache": { 1939 | "version": "6.0.1", 1940 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", 1941 | "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", 1942 | "dev": true, 1943 | "requires": { 1944 | "flat-cache": "^3.0.4" 1945 | } 1946 | }, 1947 | "fill-range": { 1948 | "version": "7.0.1", 1949 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 1950 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 1951 | "dev": true, 1952 | "requires": { 1953 | "to-regex-range": "^5.0.1" 1954 | } 1955 | }, 1956 | "find-up": { 1957 | "version": "4.1.0", 1958 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", 1959 | "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", 1960 | "dev": true, 1961 | "requires": { 1962 | "locate-path": "^5.0.0", 1963 | "path-exists": "^4.0.0" 1964 | } 1965 | }, 1966 | "flat-cache": { 1967 | "version": "3.0.4", 1968 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", 1969 | "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", 1970 | "dev": true, 1971 | "requires": { 1972 | "flatted": "^3.1.0", 1973 | "rimraf": "^3.0.2" 1974 | } 1975 | }, 1976 | "flatted": { 1977 | "version": "3.2.5", 1978 | "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", 1979 | "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", 1980 | "dev": true 1981 | }, 1982 | "fs-jetpack": { 1983 | "version": "4.3.1", 1984 | "resolved": "https://registry.npmjs.org/fs-jetpack/-/fs-jetpack-4.3.1.tgz", 1985 | "integrity": "sha512-dbeOK84F6BiQzk2yqqCVwCPWTxAvVGJ3fMQc6E2wuEohS28mR6yHngbrKuVCK1KHRx/ccByDylqu4H5PCP2urQ==", 1986 | "requires": { 1987 | "minimatch": "^3.0.2", 1988 | "rimraf": "^2.6.3" 1989 | }, 1990 | "dependencies": { 1991 | "rimraf": { 1992 | "version": "2.7.1", 1993 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", 1994 | "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", 1995 | "requires": { 1996 | "glob": "^7.1.3" 1997 | } 1998 | } 1999 | } 2000 | }, 2001 | "fs.realpath": { 2002 | "version": "1.0.0", 2003 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 2004 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" 2005 | }, 2006 | "fsevents": { 2007 | "version": "2.3.2", 2008 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 2009 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 2010 | "dev": true, 2011 | "optional": true 2012 | }, 2013 | "function-bind": { 2014 | "version": "1.1.1", 2015 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 2016 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 2017 | "dev": true 2018 | }, 2019 | "functional-red-black-tree": { 2020 | "version": "1.0.1", 2021 | "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", 2022 | "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", 2023 | "dev": true 2024 | }, 2025 | "generate-function": { 2026 | "version": "2.3.1", 2027 | "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", 2028 | "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==", 2029 | "requires": { 2030 | "is-property": "^1.0.2" 2031 | } 2032 | }, 2033 | "gensync": { 2034 | "version": "1.0.0-beta.2", 2035 | "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", 2036 | "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", 2037 | "dev": true 2038 | }, 2039 | "get-caller-file": { 2040 | "version": "2.0.5", 2041 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", 2042 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", 2043 | "dev": true 2044 | }, 2045 | "get-package-type": { 2046 | "version": "0.1.0", 2047 | "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", 2048 | "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", 2049 | "dev": true 2050 | }, 2051 | "get-stream": { 2052 | "version": "6.0.1", 2053 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", 2054 | "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", 2055 | "dev": true 2056 | }, 2057 | "glob": { 2058 | "version": "7.2.3", 2059 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", 2060 | "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", 2061 | "requires": { 2062 | "fs.realpath": "^1.0.0", 2063 | "inflight": "^1.0.4", 2064 | "inherits": "2", 2065 | "minimatch": "^3.1.1", 2066 | "once": "^1.3.0", 2067 | "path-is-absolute": "^1.0.0" 2068 | } 2069 | }, 2070 | "glob-parent": { 2071 | "version": "5.1.2", 2072 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 2073 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 2074 | "dev": true, 2075 | "requires": { 2076 | "is-glob": "^4.0.1" 2077 | } 2078 | }, 2079 | "glob-to-regexp": { 2080 | "version": "0.4.1", 2081 | "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", 2082 | "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" 2083 | }, 2084 | "globals": { 2085 | "version": "11.12.0", 2086 | "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", 2087 | "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", 2088 | "dev": true 2089 | }, 2090 | "globby": { 2091 | "version": "11.1.0", 2092 | "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", 2093 | "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", 2094 | "dev": true, 2095 | "requires": { 2096 | "array-union": "^2.1.0", 2097 | "dir-glob": "^3.0.1", 2098 | "fast-glob": "^3.2.9", 2099 | "ignore": "^5.2.0", 2100 | "merge2": "^1.4.1", 2101 | "slash": "^3.0.0" 2102 | } 2103 | }, 2104 | "graceful-fs": { 2105 | "version": "4.2.10", 2106 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", 2107 | "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" 2108 | }, 2109 | "has": { 2110 | "version": "1.0.3", 2111 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 2112 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 2113 | "dev": true, 2114 | "requires": { 2115 | "function-bind": "^1.1.1" 2116 | } 2117 | }, 2118 | "has-flag": { 2119 | "version": "4.0.0", 2120 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 2121 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 2122 | "dev": true 2123 | }, 2124 | "html-escaper": { 2125 | "version": "2.0.2", 2126 | "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", 2127 | "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", 2128 | "dev": true 2129 | }, 2130 | "human-signals": { 2131 | "version": "2.1.0", 2132 | "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", 2133 | "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", 2134 | "dev": true 2135 | }, 2136 | "husky": { 2137 | "version": "8.0.0", 2138 | "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.0.tgz", 2139 | "integrity": "sha512-4qbE/5dzNDNxFEkX9MNRPKl5+omTXQzdILCUWiqG/lWIAioiM5vln265/l6I2Zx8gpW8l1ukZwGQeCFbBZ6+6w==", 2140 | "dev": true 2141 | }, 2142 | "iconv-lite": { 2143 | "version": "0.6.3", 2144 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", 2145 | "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", 2146 | "requires": { 2147 | "safer-buffer": ">= 2.1.2 < 3.0.0" 2148 | } 2149 | }, 2150 | "ieee754": { 2151 | "version": "1.1.13", 2152 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", 2153 | "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" 2154 | }, 2155 | "ignore": { 2156 | "version": "5.2.0", 2157 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", 2158 | "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", 2159 | "dev": true 2160 | }, 2161 | "import-fresh": { 2162 | "version": "3.3.0", 2163 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", 2164 | "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", 2165 | "dev": true, 2166 | "requires": { 2167 | "parent-module": "^1.0.0", 2168 | "resolve-from": "^4.0.0" 2169 | }, 2170 | "dependencies": { 2171 | "resolve-from": { 2172 | "version": "4.0.0", 2173 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 2174 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", 2175 | "dev": true 2176 | } 2177 | } 2178 | }, 2179 | "import-local": { 2180 | "version": "3.1.0", 2181 | "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", 2182 | "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", 2183 | "dev": true, 2184 | "requires": { 2185 | "pkg-dir": "^4.2.0", 2186 | "resolve-cwd": "^3.0.0" 2187 | } 2188 | }, 2189 | "imurmurhash": { 2190 | "version": "0.1.4", 2191 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 2192 | "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", 2193 | "dev": true 2194 | }, 2195 | "inflection": { 2196 | "version": "1.13.2", 2197 | "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.13.2.tgz", 2198 | "integrity": "sha512-cmZlljCRTBFouT8UzMzrGcVEvkv6D/wBdcdKG7J1QH5cXjtU75Dm+P27v9EKu/Y43UYyCJd1WC4zLebRrC8NBw==" 2199 | }, 2200 | "inflight": { 2201 | "version": "1.0.6", 2202 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 2203 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 2204 | "requires": { 2205 | "once": "^1.3.0", 2206 | "wrappy": "1" 2207 | } 2208 | }, 2209 | "inherits": { 2210 | "version": "2.0.4", 2211 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 2212 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 2213 | }, 2214 | "is-arrayish": { 2215 | "version": "0.2.1", 2216 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", 2217 | "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", 2218 | "dev": true 2219 | }, 2220 | "is-core-module": { 2221 | "version": "2.9.0", 2222 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", 2223 | "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", 2224 | "dev": true, 2225 | "requires": { 2226 | "has": "^1.0.3" 2227 | } 2228 | }, 2229 | "is-extglob": { 2230 | "version": "2.1.1", 2231 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 2232 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", 2233 | "dev": true 2234 | }, 2235 | "is-fullwidth-code-point": { 2236 | "version": "3.0.0", 2237 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 2238 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 2239 | "dev": true 2240 | }, 2241 | "is-generator-fn": { 2242 | "version": "2.1.0", 2243 | "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", 2244 | "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", 2245 | "dev": true 2246 | }, 2247 | "is-glob": { 2248 | "version": "4.0.3", 2249 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 2250 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 2251 | "dev": true, 2252 | "requires": { 2253 | "is-extglob": "^2.1.1" 2254 | } 2255 | }, 2256 | "is-number": { 2257 | "version": "7.0.0", 2258 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 2259 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 2260 | "dev": true 2261 | }, 2262 | "is-property": { 2263 | "version": "1.0.2", 2264 | "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", 2265 | "integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==" 2266 | }, 2267 | "is-stream": { 2268 | "version": "2.0.1", 2269 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", 2270 | "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", 2271 | "dev": true 2272 | }, 2273 | "isarray": { 2274 | "version": "1.0.0", 2275 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 2276 | "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" 2277 | }, 2278 | "isexe": { 2279 | "version": "2.0.0", 2280 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 2281 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", 2282 | "dev": true 2283 | }, 2284 | "istanbul-lib-coverage": { 2285 | "version": "3.2.0", 2286 | "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", 2287 | "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", 2288 | "dev": true 2289 | }, 2290 | "istanbul-lib-instrument": { 2291 | "version": "5.2.0", 2292 | "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz", 2293 | "integrity": "sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A==", 2294 | "dev": true, 2295 | "requires": { 2296 | "@babel/core": "^7.12.3", 2297 | "@babel/parser": "^7.14.7", 2298 | "@istanbuljs/schema": "^0.1.2", 2299 | "istanbul-lib-coverage": "^3.2.0", 2300 | "semver": "^6.3.0" 2301 | } 2302 | }, 2303 | "istanbul-lib-report": { 2304 | "version": "3.0.0", 2305 | "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", 2306 | "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", 2307 | "dev": true, 2308 | "requires": { 2309 | "istanbul-lib-coverage": "^3.0.0", 2310 | "make-dir": "^3.0.0", 2311 | "supports-color": "^7.1.0" 2312 | } 2313 | }, 2314 | "istanbul-lib-source-maps": { 2315 | "version": "4.0.1", 2316 | "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", 2317 | "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", 2318 | "dev": true, 2319 | "requires": { 2320 | "debug": "^4.1.1", 2321 | "istanbul-lib-coverage": "^3.0.0", 2322 | "source-map": "^0.6.1" 2323 | } 2324 | }, 2325 | "istanbul-reports": { 2326 | "version": "3.1.4", 2327 | "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.4.tgz", 2328 | "integrity": "sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==", 2329 | "dev": true, 2330 | "requires": { 2331 | "html-escaper": "^2.0.0", 2332 | "istanbul-lib-report": "^3.0.0" 2333 | } 2334 | }, 2335 | "jest": { 2336 | "version": "28.1.0", 2337 | "resolved": "https://registry.npmjs.org/jest/-/jest-28.1.0.tgz", 2338 | "integrity": "sha512-TZR+tHxopPhzw3c3560IJXZWLNHgpcz1Zh0w5A65vynLGNcg/5pZ+VildAd7+XGOu6jd58XMY/HNn0IkZIXVXg==", 2339 | "dev": true, 2340 | "requires": { 2341 | "@jest/core": "^28.1.0", 2342 | "import-local": "^3.0.2", 2343 | "jest-cli": "^28.1.0" 2344 | }, 2345 | "dependencies": { 2346 | "jest-cli": { 2347 | "version": "28.1.0", 2348 | "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-28.1.0.tgz", 2349 | "integrity": "sha512-fDJRt6WPRriHrBsvvgb93OxgajHHsJbk4jZxiPqmZbMDRcHskfJBBfTyjFko0jjfprP544hOktdSi9HVgl4VUQ==", 2350 | "dev": true, 2351 | "requires": { 2352 | "@jest/core": "^28.1.0", 2353 | "@jest/test-result": "^28.1.0", 2354 | "@jest/types": "^28.1.0", 2355 | "chalk": "^4.0.0", 2356 | "exit": "^0.1.2", 2357 | "graceful-fs": "^4.2.9", 2358 | "import-local": "^3.0.2", 2359 | "jest-config": "^28.1.0", 2360 | "jest-util": "^28.1.0", 2361 | "jest-validate": "^28.1.0", 2362 | "prompts": "^2.0.1", 2363 | "yargs": "^17.3.1" 2364 | } 2365 | } 2366 | } 2367 | }, 2368 | "jest-changed-files": { 2369 | "version": "28.0.2", 2370 | "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-28.0.2.tgz", 2371 | "integrity": "sha512-QX9u+5I2s54ZnGoMEjiM2WeBvJR2J7w/8ZUmH2um/WLAuGAYFQcsVXY9+1YL6k0H/AGUdH8pXUAv6erDqEsvIA==", 2372 | "dev": true, 2373 | "requires": { 2374 | "execa": "^5.0.0", 2375 | "throat": "^6.0.1" 2376 | } 2377 | }, 2378 | "jest-circus": { 2379 | "version": "28.1.0", 2380 | "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-28.1.0.tgz", 2381 | "integrity": "sha512-rNYfqfLC0L0zQKRKsg4n4J+W1A2fbyGH7Ss/kDIocp9KXD9iaL111glsLu7+Z7FHuZxwzInMDXq+N1ZIBkI/TQ==", 2382 | "dev": true, 2383 | "requires": { 2384 | "@jest/environment": "^28.1.0", 2385 | "@jest/expect": "^28.1.0", 2386 | "@jest/test-result": "^28.1.0", 2387 | "@jest/types": "^28.1.0", 2388 | "@types/node": "*", 2389 | "chalk": "^4.0.0", 2390 | "co": "^4.6.0", 2391 | "dedent": "^0.7.0", 2392 | "is-generator-fn": "^2.0.0", 2393 | "jest-each": "^28.1.0", 2394 | "jest-matcher-utils": "^28.1.0", 2395 | "jest-message-util": "^28.1.0", 2396 | "jest-runtime": "^28.1.0", 2397 | "jest-snapshot": "^28.1.0", 2398 | "jest-util": "^28.1.0", 2399 | "pretty-format": "^28.1.0", 2400 | "slash": "^3.0.0", 2401 | "stack-utils": "^2.0.3", 2402 | "throat": "^6.0.1" 2403 | } 2404 | }, 2405 | "jest-config": { 2406 | "version": "28.1.0", 2407 | "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-28.1.0.tgz", 2408 | "integrity": "sha512-aOV80E9LeWrmflp7hfZNn/zGA4QKv/xsn2w8QCBP0t0+YqObuCWTSgNbHJ0j9YsTuCO08ZR/wsvlxqqHX20iUA==", 2409 | "dev": true, 2410 | "requires": { 2411 | "@babel/core": "^7.11.6", 2412 | "@jest/test-sequencer": "^28.1.0", 2413 | "@jest/types": "^28.1.0", 2414 | "babel-jest": "^28.1.0", 2415 | "chalk": "^4.0.0", 2416 | "ci-info": "^3.2.0", 2417 | "deepmerge": "^4.2.2", 2418 | "glob": "^7.1.3", 2419 | "graceful-fs": "^4.2.9", 2420 | "jest-circus": "^28.1.0", 2421 | "jest-environment-node": "^28.1.0", 2422 | "jest-get-type": "^28.0.2", 2423 | "jest-regex-util": "^28.0.2", 2424 | "jest-resolve": "^28.1.0", 2425 | "jest-runner": "^28.1.0", 2426 | "jest-util": "^28.1.0", 2427 | "jest-validate": "^28.1.0", 2428 | "micromatch": "^4.0.4", 2429 | "parse-json": "^5.2.0", 2430 | "pretty-format": "^28.1.0", 2431 | "slash": "^3.0.0", 2432 | "strip-json-comments": "^3.1.1" 2433 | } 2434 | }, 2435 | "jest-diff": { 2436 | "version": "28.1.0", 2437 | "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-28.1.0.tgz", 2438 | "integrity": "sha512-8eFd3U3OkIKRtlasXfiAQfbovgFgRDb0Ngcs2E+FMeBZ4rUezqIaGjuyggJBp+llosQXNEWofk/Sz4Hr5gMUhA==", 2439 | "dev": true, 2440 | "requires": { 2441 | "chalk": "^4.0.0", 2442 | "diff-sequences": "^28.0.2", 2443 | "jest-get-type": "^28.0.2", 2444 | "pretty-format": "^28.1.0" 2445 | } 2446 | }, 2447 | "jest-docblock": { 2448 | "version": "28.0.2", 2449 | "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-28.0.2.tgz", 2450 | "integrity": "sha512-FH10WWw5NxLoeSdQlJwu+MTiv60aXV/t8KEwIRGEv74WARE1cXIqh1vGdy2CraHuWOOrnzTWj/azQKqW4fO7xg==", 2451 | "dev": true, 2452 | "requires": { 2453 | "detect-newline": "^3.0.0" 2454 | } 2455 | }, 2456 | "jest-each": { 2457 | "version": "28.1.0", 2458 | "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-28.1.0.tgz", 2459 | "integrity": "sha512-a/XX02xF5NTspceMpHujmOexvJ4GftpYXqr6HhhmKmExtMXsyIN/fvanQlt/BcgFoRKN4OCXxLQKth9/n6OPFg==", 2460 | "dev": true, 2461 | "requires": { 2462 | "@jest/types": "^28.1.0", 2463 | "chalk": "^4.0.0", 2464 | "jest-get-type": "^28.0.2", 2465 | "jest-util": "^28.1.0", 2466 | "pretty-format": "^28.1.0" 2467 | } 2468 | }, 2469 | "jest-environment-node": { 2470 | "version": "28.1.0", 2471 | "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-28.1.0.tgz", 2472 | "integrity": "sha512-gBLZNiyrPw9CSMlTXF1yJhaBgWDPVvH0Pq6bOEwGMXaYNzhzhw2kA/OijNF8egbCgDS0/veRv97249x2CX+udQ==", 2473 | "dev": true, 2474 | "requires": { 2475 | "@jest/environment": "^28.1.0", 2476 | "@jest/fake-timers": "^28.1.0", 2477 | "@jest/types": "^28.1.0", 2478 | "@types/node": "*", 2479 | "jest-mock": "^28.1.0", 2480 | "jest-util": "^28.1.0" 2481 | } 2482 | }, 2483 | "jest-get-type": { 2484 | "version": "28.0.2", 2485 | "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-28.0.2.tgz", 2486 | "integrity": "sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA==", 2487 | "dev": true 2488 | }, 2489 | "jest-haste-map": { 2490 | "version": "28.1.0", 2491 | "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-28.1.0.tgz", 2492 | "integrity": "sha512-xyZ9sXV8PtKi6NCrJlmq53PyNVHzxmcfXNVvIRHpHmh1j/HChC4pwKgyjj7Z9us19JMw8PpQTJsFWOsIfT93Dw==", 2493 | "dev": true, 2494 | "requires": { 2495 | "@jest/types": "^28.1.0", 2496 | "@types/graceful-fs": "^4.1.3", 2497 | "@types/node": "*", 2498 | "anymatch": "^3.0.3", 2499 | "fb-watchman": "^2.0.0", 2500 | "fsevents": "^2.3.2", 2501 | "graceful-fs": "^4.2.9", 2502 | "jest-regex-util": "^28.0.2", 2503 | "jest-util": "^28.1.0", 2504 | "jest-worker": "^28.1.0", 2505 | "micromatch": "^4.0.4", 2506 | "walker": "^1.0.7" 2507 | } 2508 | }, 2509 | "jest-leak-detector": { 2510 | "version": "28.1.0", 2511 | "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-28.1.0.tgz", 2512 | "integrity": "sha512-uIJDQbxwEL2AMMs2xjhZl2hw8s77c3wrPaQ9v6tXJLGaaQ+4QrNJH5vuw7hA7w/uGT/iJ42a83opAqxGHeyRIA==", 2513 | "dev": true, 2514 | "requires": { 2515 | "jest-get-type": "^28.0.2", 2516 | "pretty-format": "^28.1.0" 2517 | } 2518 | }, 2519 | "jest-matcher-utils": { 2520 | "version": "28.1.0", 2521 | "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-28.1.0.tgz", 2522 | "integrity": "sha512-onnax0n2uTLRQFKAjC7TuaxibrPSvZgKTcSCnNUz/tOjJ9UhxNm7ZmPpoQavmTDUjXvUQ8KesWk2/VdrxIFzTQ==", 2523 | "dev": true, 2524 | "requires": { 2525 | "chalk": "^4.0.0", 2526 | "jest-diff": "^28.1.0", 2527 | "jest-get-type": "^28.0.2", 2528 | "pretty-format": "^28.1.0" 2529 | } 2530 | }, 2531 | "jest-message-util": { 2532 | "version": "28.1.0", 2533 | "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.0.tgz", 2534 | "integrity": "sha512-RpA8mpaJ/B2HphDMiDlrAZdDytkmwFqgjDZovM21F35lHGeUeCvYmm6W+sbQ0ydaLpg5bFAUuWG1cjqOl8vqrw==", 2535 | "dev": true, 2536 | "requires": { 2537 | "@babel/code-frame": "^7.12.13", 2538 | "@jest/types": "^28.1.0", 2539 | "@types/stack-utils": "^2.0.0", 2540 | "chalk": "^4.0.0", 2541 | "graceful-fs": "^4.2.9", 2542 | "micromatch": "^4.0.4", 2543 | "pretty-format": "^28.1.0", 2544 | "slash": "^3.0.0", 2545 | "stack-utils": "^2.0.3" 2546 | } 2547 | }, 2548 | "jest-mock": { 2549 | "version": "28.1.0", 2550 | "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-28.1.0.tgz", 2551 | "integrity": "sha512-H7BrhggNn77WhdL7O1apG0Q/iwl0Bdd5E1ydhCJzL3oBLh/UYxAwR3EJLsBZ9XA3ZU4PA3UNw4tQjduBTCTmLw==", 2552 | "dev": true, 2553 | "requires": { 2554 | "@jest/types": "^28.1.0", 2555 | "@types/node": "*" 2556 | } 2557 | }, 2558 | "jest-pnp-resolver": { 2559 | "version": "1.2.2", 2560 | "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", 2561 | "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", 2562 | "dev": true 2563 | }, 2564 | "jest-regex-util": { 2565 | "version": "28.0.2", 2566 | "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-28.0.2.tgz", 2567 | "integrity": "sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==", 2568 | "dev": true 2569 | }, 2570 | "jest-resolve": { 2571 | "version": "28.1.0", 2572 | "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-28.1.0.tgz", 2573 | "integrity": "sha512-vvfN7+tPNnnhDvISuzD1P+CRVP8cK0FHXRwPAcdDaQv4zgvwvag2n55/h5VjYcM5UJG7L4TwE5tZlzcI0X2Lhw==", 2574 | "dev": true, 2575 | "requires": { 2576 | "chalk": "^4.0.0", 2577 | "graceful-fs": "^4.2.9", 2578 | "jest-haste-map": "^28.1.0", 2579 | "jest-pnp-resolver": "^1.2.2", 2580 | "jest-util": "^28.1.0", 2581 | "jest-validate": "^28.1.0", 2582 | "resolve": "^1.20.0", 2583 | "resolve.exports": "^1.1.0", 2584 | "slash": "^3.0.0" 2585 | } 2586 | }, 2587 | "jest-resolve-dependencies": { 2588 | "version": "28.1.0", 2589 | "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-28.1.0.tgz", 2590 | "integrity": "sha512-Ue1VYoSZquPwEvng7Uefw8RmZR+me/1kr30H2jMINjGeHgeO/JgrR6wxj2ofkJ7KSAA11W3cOrhNCbj5Dqqd9g==", 2591 | "dev": true, 2592 | "requires": { 2593 | "jest-regex-util": "^28.0.2", 2594 | "jest-snapshot": "^28.1.0" 2595 | } 2596 | }, 2597 | "jest-runner": { 2598 | "version": "28.1.0", 2599 | "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-28.1.0.tgz", 2600 | "integrity": "sha512-FBpmuh1HB2dsLklAlRdOxNTTHKFR6G1Qmd80pVDvwbZXTriqjWqjei5DKFC1UlM732KjYcE6yuCdiF0WUCOS2w==", 2601 | "dev": true, 2602 | "requires": { 2603 | "@jest/console": "^28.1.0", 2604 | "@jest/environment": "^28.1.0", 2605 | "@jest/test-result": "^28.1.0", 2606 | "@jest/transform": "^28.1.0", 2607 | "@jest/types": "^28.1.0", 2608 | "@types/node": "*", 2609 | "chalk": "^4.0.0", 2610 | "emittery": "^0.10.2", 2611 | "graceful-fs": "^4.2.9", 2612 | "jest-docblock": "^28.0.2", 2613 | "jest-environment-node": "^28.1.0", 2614 | "jest-haste-map": "^28.1.0", 2615 | "jest-leak-detector": "^28.1.0", 2616 | "jest-message-util": "^28.1.0", 2617 | "jest-resolve": "^28.1.0", 2618 | "jest-runtime": "^28.1.0", 2619 | "jest-util": "^28.1.0", 2620 | "jest-watcher": "^28.1.0", 2621 | "jest-worker": "^28.1.0", 2622 | "source-map-support": "0.5.13", 2623 | "throat": "^6.0.1" 2624 | } 2625 | }, 2626 | "jest-runtime": { 2627 | "version": "28.1.0", 2628 | "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-28.1.0.tgz", 2629 | "integrity": "sha512-wNYDiwhdH/TV3agaIyVF0lsJ33MhyujOe+lNTUiolqKt8pchy1Hq4+tDMGbtD5P/oNLA3zYrpx73T9dMTOCAcg==", 2630 | "dev": true, 2631 | "requires": { 2632 | "@jest/environment": "^28.1.0", 2633 | "@jest/fake-timers": "^28.1.0", 2634 | "@jest/globals": "^28.1.0", 2635 | "@jest/source-map": "^28.0.2", 2636 | "@jest/test-result": "^28.1.0", 2637 | "@jest/transform": "^28.1.0", 2638 | "@jest/types": "^28.1.0", 2639 | "chalk": "^4.0.0", 2640 | "cjs-module-lexer": "^1.0.0", 2641 | "collect-v8-coverage": "^1.0.0", 2642 | "execa": "^5.0.0", 2643 | "glob": "^7.1.3", 2644 | "graceful-fs": "^4.2.9", 2645 | "jest-haste-map": "^28.1.0", 2646 | "jest-message-util": "^28.1.0", 2647 | "jest-mock": "^28.1.0", 2648 | "jest-regex-util": "^28.0.2", 2649 | "jest-resolve": "^28.1.0", 2650 | "jest-snapshot": "^28.1.0", 2651 | "jest-util": "^28.1.0", 2652 | "slash": "^3.0.0", 2653 | "strip-bom": "^4.0.0" 2654 | } 2655 | }, 2656 | "jest-snapshot": { 2657 | "version": "28.1.0", 2658 | "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-28.1.0.tgz", 2659 | "integrity": "sha512-ex49M2ZrZsUyQLpLGxQtDbahvgBjlLPgklkqGM0hq/F7W/f8DyqZxVHjdy19QKBm4O93eDp+H5S23EiTbbUmHw==", 2660 | "dev": true, 2661 | "requires": { 2662 | "@babel/core": "^7.11.6", 2663 | "@babel/generator": "^7.7.2", 2664 | "@babel/plugin-syntax-typescript": "^7.7.2", 2665 | "@babel/traverse": "^7.7.2", 2666 | "@babel/types": "^7.3.3", 2667 | "@jest/expect-utils": "^28.1.0", 2668 | "@jest/transform": "^28.1.0", 2669 | "@jest/types": "^28.1.0", 2670 | "@types/babel__traverse": "^7.0.6", 2671 | "@types/prettier": "^2.1.5", 2672 | "babel-preset-current-node-syntax": "^1.0.0", 2673 | "chalk": "^4.0.0", 2674 | "expect": "^28.1.0", 2675 | "graceful-fs": "^4.2.9", 2676 | "jest-diff": "^28.1.0", 2677 | "jest-get-type": "^28.0.2", 2678 | "jest-haste-map": "^28.1.0", 2679 | "jest-matcher-utils": "^28.1.0", 2680 | "jest-message-util": "^28.1.0", 2681 | "jest-util": "^28.1.0", 2682 | "natural-compare": "^1.4.0", 2683 | "pretty-format": "^28.1.0", 2684 | "semver": "^7.3.5" 2685 | }, 2686 | "dependencies": { 2687 | "semver": { 2688 | "version": "7.3.7", 2689 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", 2690 | "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", 2691 | "dev": true, 2692 | "requires": { 2693 | "lru-cache": "^6.0.0" 2694 | } 2695 | } 2696 | } 2697 | }, 2698 | "jest-util": { 2699 | "version": "28.1.0", 2700 | "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.0.tgz", 2701 | "integrity": "sha512-qYdCKD77k4Hwkose2YBEqQk7PzUf/NSE+rutzceduFveQREeH6b+89Dc9+wjX9dAwHcgdx4yedGA3FQlU/qCTA==", 2702 | "dev": true, 2703 | "requires": { 2704 | "@jest/types": "^28.1.0", 2705 | "@types/node": "*", 2706 | "chalk": "^4.0.0", 2707 | "ci-info": "^3.2.0", 2708 | "graceful-fs": "^4.2.9", 2709 | "picomatch": "^2.2.3" 2710 | } 2711 | }, 2712 | "jest-validate": { 2713 | "version": "28.1.0", 2714 | "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-28.1.0.tgz", 2715 | "integrity": "sha512-Lly7CJYih3vQBfjLeANGgBSBJ7pEa18cxpQfQEq2go2xyEzehnHfQTjoUia8xUv4x4J80XKFIDwJJThXtRFQXQ==", 2716 | "dev": true, 2717 | "requires": { 2718 | "@jest/types": "^28.1.0", 2719 | "camelcase": "^6.2.0", 2720 | "chalk": "^4.0.0", 2721 | "jest-get-type": "^28.0.2", 2722 | "leven": "^3.1.0", 2723 | "pretty-format": "^28.1.0" 2724 | }, 2725 | "dependencies": { 2726 | "camelcase": { 2727 | "version": "6.3.0", 2728 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", 2729 | "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", 2730 | "dev": true 2731 | } 2732 | } 2733 | }, 2734 | "jest-watcher": { 2735 | "version": "28.1.0", 2736 | "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-28.1.0.tgz", 2737 | "integrity": "sha512-tNHMtfLE8Njcr2IRS+5rXYA4BhU90gAOwI9frTGOqd+jX0P/Au/JfRSNqsf5nUTcWdbVYuLxS1KjnzILSoR5hA==", 2738 | "dev": true, 2739 | "requires": { 2740 | "@jest/test-result": "^28.1.0", 2741 | "@jest/types": "^28.1.0", 2742 | "@types/node": "*", 2743 | "ansi-escapes": "^4.2.1", 2744 | "chalk": "^4.0.0", 2745 | "emittery": "^0.10.2", 2746 | "jest-util": "^28.1.0", 2747 | "string-length": "^4.0.1" 2748 | } 2749 | }, 2750 | "jest-worker": { 2751 | "version": "28.1.0", 2752 | "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-28.1.0.tgz", 2753 | "integrity": "sha512-ZHwM6mNwaWBR52Snff8ZvsCTqQsvhCxP/bT1I6T6DAnb6ygkshsyLQIMxFwHpYxht0HOoqt23JlC01viI7T03A==", 2754 | "dev": true, 2755 | "requires": { 2756 | "@types/node": "*", 2757 | "merge-stream": "^2.0.0", 2758 | "supports-color": "^8.0.0" 2759 | }, 2760 | "dependencies": { 2761 | "supports-color": { 2762 | "version": "8.1.1", 2763 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", 2764 | "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", 2765 | "dev": true, 2766 | "requires": { 2767 | "has-flag": "^4.0.0" 2768 | } 2769 | } 2770 | } 2771 | }, 2772 | "jmespath": { 2773 | "version": "0.16.0", 2774 | "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.16.0.tgz", 2775 | "integrity": "sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw==" 2776 | }, 2777 | "js-tokens": { 2778 | "version": "4.0.0", 2779 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 2780 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", 2781 | "dev": true 2782 | }, 2783 | "js-yaml": { 2784 | "version": "3.14.1", 2785 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", 2786 | "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", 2787 | "requires": { 2788 | "argparse": "^1.0.7", 2789 | "esprima": "^4.0.0" 2790 | } 2791 | }, 2792 | "jsesc": { 2793 | "version": "2.5.2", 2794 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", 2795 | "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", 2796 | "dev": true 2797 | }, 2798 | "json-parse-even-better-errors": { 2799 | "version": "2.3.1", 2800 | "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", 2801 | "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", 2802 | "dev": true 2803 | }, 2804 | "json-schema-traverse": { 2805 | "version": "0.4.1", 2806 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 2807 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 2808 | "dev": true 2809 | }, 2810 | "json-stable-stringify-without-jsonify": { 2811 | "version": "1.0.1", 2812 | "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 2813 | "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", 2814 | "dev": true 2815 | }, 2816 | "json5": { 2817 | "version": "2.2.1", 2818 | "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", 2819 | "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", 2820 | "dev": true 2821 | }, 2822 | "kleur": { 2823 | "version": "3.0.3", 2824 | "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", 2825 | "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", 2826 | "dev": true 2827 | }, 2828 | "leven": { 2829 | "version": "3.1.0", 2830 | "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", 2831 | "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", 2832 | "dev": true 2833 | }, 2834 | "levn": { 2835 | "version": "0.4.1", 2836 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", 2837 | "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", 2838 | "dev": true, 2839 | "requires": { 2840 | "prelude-ls": "^1.2.1", 2841 | "type-check": "~0.4.0" 2842 | } 2843 | }, 2844 | "lines-and-columns": { 2845 | "version": "1.2.4", 2846 | "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", 2847 | "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", 2848 | "dev": true 2849 | }, 2850 | "locate-path": { 2851 | "version": "5.0.0", 2852 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", 2853 | "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", 2854 | "dev": true, 2855 | "requires": { 2856 | "p-locate": "^4.1.0" 2857 | } 2858 | }, 2859 | "lodash": { 2860 | "version": "4.17.21", 2861 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", 2862 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" 2863 | }, 2864 | "lodash.memoize": { 2865 | "version": "4.1.2", 2866 | "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", 2867 | "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", 2868 | "dev": true 2869 | }, 2870 | "lodash.merge": { 2871 | "version": "4.6.2", 2872 | "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", 2873 | "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", 2874 | "dev": true 2875 | }, 2876 | "long": { 2877 | "version": "4.0.0", 2878 | "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", 2879 | "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" 2880 | }, 2881 | "lru-cache": { 2882 | "version": "6.0.0", 2883 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 2884 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 2885 | "requires": { 2886 | "yallist": "^4.0.0" 2887 | } 2888 | }, 2889 | "make-dir": { 2890 | "version": "3.1.0", 2891 | "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", 2892 | "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", 2893 | "dev": true, 2894 | "requires": { 2895 | "semver": "^6.0.0" 2896 | } 2897 | }, 2898 | "make-error": { 2899 | "version": "1.3.6", 2900 | "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", 2901 | "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", 2902 | "dev": true 2903 | }, 2904 | "makeerror": { 2905 | "version": "1.0.12", 2906 | "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", 2907 | "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", 2908 | "dev": true, 2909 | "requires": { 2910 | "tmpl": "1.0.5" 2911 | } 2912 | }, 2913 | "merge-stream": { 2914 | "version": "2.0.0", 2915 | "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", 2916 | "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", 2917 | "dev": true 2918 | }, 2919 | "merge2": { 2920 | "version": "1.4.1", 2921 | "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", 2922 | "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", 2923 | "dev": true 2924 | }, 2925 | "micromatch": { 2926 | "version": "4.0.5", 2927 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", 2928 | "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", 2929 | "dev": true, 2930 | "requires": { 2931 | "braces": "^3.0.2", 2932 | "picomatch": "^2.3.1" 2933 | } 2934 | }, 2935 | "mimic-fn": { 2936 | "version": "2.1.0", 2937 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", 2938 | "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", 2939 | "dev": true 2940 | }, 2941 | "minimatch": { 2942 | "version": "3.1.2", 2943 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 2944 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 2945 | "requires": { 2946 | "brace-expansion": "^1.1.7" 2947 | } 2948 | }, 2949 | "moment": { 2950 | "version": "2.29.3", 2951 | "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.3.tgz", 2952 | "integrity": "sha512-c6YRvhEo//6T2Jz/vVtYzqBzwvPT95JBQ+smCytzf7c50oMZRsR/a4w88aD34I+/QVSfnoAnSBFPJHItlOMJVw==" 2953 | }, 2954 | "moment-timezone": { 2955 | "version": "0.5.34", 2956 | "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.34.tgz", 2957 | "integrity": "sha512-3zAEHh2hKUs3EXLESx/wsgw6IQdusOT8Bxm3D9UrHPQR7zlMmzwybC8zHEM1tQ4LJwP7fcxrWr8tuBg05fFCbg==", 2958 | "requires": { 2959 | "moment": ">= 2.9.0" 2960 | } 2961 | }, 2962 | "ms": { 2963 | "version": "2.1.2", 2964 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 2965 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 2966 | }, 2967 | "mysql2": { 2968 | "version": "2.3.3", 2969 | "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-2.3.3.tgz", 2970 | "integrity": "sha512-wxJUev6LgMSgACDkb/InIFxDprRa6T95+VEoR+xPvtngtccNH2dGjEB/fVZ8yg1gWv1510c9CvXuJHi5zUm0ZA==", 2971 | "requires": { 2972 | "denque": "^2.0.1", 2973 | "generate-function": "^2.3.1", 2974 | "iconv-lite": "^0.6.3", 2975 | "long": "^4.0.0", 2976 | "lru-cache": "^6.0.0", 2977 | "named-placeholders": "^1.1.2", 2978 | "seq-queue": "^0.0.5", 2979 | "sqlstring": "^2.3.2" 2980 | } 2981 | }, 2982 | "named-placeholders": { 2983 | "version": "1.1.2", 2984 | "resolved": "https://registry.npmjs.org/named-placeholders/-/named-placeholders-1.1.2.tgz", 2985 | "integrity": "sha512-wiFWqxoLL3PGVReSZpjLVxyJ1bRqe+KKJVbr4hGs1KWfTZTQyezHFBbuKj9hsizHyGV2ne7EMjHdxEGAybD5SA==", 2986 | "requires": { 2987 | "lru-cache": "^4.1.3" 2988 | }, 2989 | "dependencies": { 2990 | "lru-cache": { 2991 | "version": "4.1.5", 2992 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", 2993 | "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", 2994 | "requires": { 2995 | "pseudomap": "^1.0.2", 2996 | "yallist": "^2.1.2" 2997 | } 2998 | }, 2999 | "yallist": { 3000 | "version": "2.1.2", 3001 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", 3002 | "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" 3003 | } 3004 | } 3005 | }, 3006 | "natural-compare": { 3007 | "version": "1.4.0", 3008 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 3009 | "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", 3010 | "dev": true 3011 | }, 3012 | "node-int64": { 3013 | "version": "0.4.0", 3014 | "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", 3015 | "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", 3016 | "dev": true 3017 | }, 3018 | "node-releases": { 3019 | "version": "2.0.5", 3020 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.5.tgz", 3021 | "integrity": "sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==", 3022 | "dev": true 3023 | }, 3024 | "normalize-path": { 3025 | "version": "3.0.0", 3026 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 3027 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 3028 | "dev": true 3029 | }, 3030 | "npm-run-path": { 3031 | "version": "4.0.1", 3032 | "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", 3033 | "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", 3034 | "dev": true, 3035 | "requires": { 3036 | "path-key": "^3.0.0" 3037 | } 3038 | }, 3039 | "npm-snapshot": { 3040 | "version": "1.1.1", 3041 | "resolved": "https://registry.npmjs.org/npm-snapshot/-/npm-snapshot-1.1.1.tgz", 3042 | "integrity": "sha512-J2ZNWTCix1OTEdgEIfh8c75yc5GxmUrZV5UyfVdCKSCAosThuhSoJM03vwUgbvd4Bo/O2NP3QmTbas7jW0KdZg==", 3043 | "dev": true 3044 | }, 3045 | "once": { 3046 | "version": "1.4.0", 3047 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 3048 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 3049 | "requires": { 3050 | "wrappy": "1" 3051 | } 3052 | }, 3053 | "onetime": { 3054 | "version": "5.1.2", 3055 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", 3056 | "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", 3057 | "dev": true, 3058 | "requires": { 3059 | "mimic-fn": "^2.1.0" 3060 | } 3061 | }, 3062 | "optionator": { 3063 | "version": "0.9.1", 3064 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", 3065 | "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", 3066 | "dev": true, 3067 | "requires": { 3068 | "deep-is": "^0.1.3", 3069 | "fast-levenshtein": "^2.0.6", 3070 | "levn": "^0.4.1", 3071 | "prelude-ls": "^1.2.1", 3072 | "type-check": "^0.4.0", 3073 | "word-wrap": "^1.2.3" 3074 | } 3075 | }, 3076 | "p-limit": { 3077 | "version": "2.3.0", 3078 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", 3079 | "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", 3080 | "dev": true, 3081 | "requires": { 3082 | "p-try": "^2.0.0" 3083 | } 3084 | }, 3085 | "p-locate": { 3086 | "version": "4.1.0", 3087 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", 3088 | "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", 3089 | "dev": true, 3090 | "requires": { 3091 | "p-limit": "^2.2.0" 3092 | } 3093 | }, 3094 | "p-try": { 3095 | "version": "2.2.0", 3096 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", 3097 | "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", 3098 | "dev": true 3099 | }, 3100 | "parent-module": { 3101 | "version": "1.0.1", 3102 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 3103 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 3104 | "dev": true, 3105 | "requires": { 3106 | "callsites": "^3.0.0" 3107 | } 3108 | }, 3109 | "parse-json": { 3110 | "version": "5.2.0", 3111 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", 3112 | "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", 3113 | "dev": true, 3114 | "requires": { 3115 | "@babel/code-frame": "^7.0.0", 3116 | "error-ex": "^1.3.1", 3117 | "json-parse-even-better-errors": "^2.3.0", 3118 | "lines-and-columns": "^1.1.6" 3119 | } 3120 | }, 3121 | "path-exists": { 3122 | "version": "4.0.0", 3123 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 3124 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 3125 | "dev": true 3126 | }, 3127 | "path-is-absolute": { 3128 | "version": "1.0.1", 3129 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 3130 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" 3131 | }, 3132 | "path-key": { 3133 | "version": "3.1.1", 3134 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 3135 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 3136 | "dev": true 3137 | }, 3138 | "path-parse": { 3139 | "version": "1.0.7", 3140 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 3141 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 3142 | "dev": true 3143 | }, 3144 | "path-type": { 3145 | "version": "4.0.0", 3146 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", 3147 | "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", 3148 | "dev": true 3149 | }, 3150 | "pg-connection-string": { 3151 | "version": "2.5.0", 3152 | "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.5.0.tgz", 3153 | "integrity": "sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ==" 3154 | }, 3155 | "picocolors": { 3156 | "version": "1.0.0", 3157 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", 3158 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", 3159 | "dev": true 3160 | }, 3161 | "picomatch": { 3162 | "version": "2.3.1", 3163 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 3164 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 3165 | "dev": true 3166 | }, 3167 | "pirates": { 3168 | "version": "4.0.5", 3169 | "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", 3170 | "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", 3171 | "dev": true 3172 | }, 3173 | "pkg-dir": { 3174 | "version": "4.2.0", 3175 | "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", 3176 | "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", 3177 | "dev": true, 3178 | "requires": { 3179 | "find-up": "^4.0.0" 3180 | } 3181 | }, 3182 | "pony-cause": { 3183 | "version": "1.1.1", 3184 | "resolved": "https://registry.npmjs.org/pony-cause/-/pony-cause-1.1.1.tgz", 3185 | "integrity": "sha512-PxkIc/2ZpLiEzQXu5YRDOUgBlfGYBY8156HY5ZcRAwwonMk5W/MrJP2LLkG/hF7GEQzaHo2aS7ho6ZLCOvf+6g==" 3186 | }, 3187 | "prelude-ls": { 3188 | "version": "1.2.1", 3189 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", 3190 | "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", 3191 | "dev": true 3192 | }, 3193 | "prettier": { 3194 | "version": "2.6.2", 3195 | "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.6.2.tgz", 3196 | "integrity": "sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew==", 3197 | "dev": true 3198 | }, 3199 | "prettier-linter-helpers": { 3200 | "version": "1.0.0", 3201 | "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", 3202 | "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", 3203 | "dev": true, 3204 | "requires": { 3205 | "fast-diff": "^1.1.2" 3206 | } 3207 | }, 3208 | "pretty-format": { 3209 | "version": "28.1.0", 3210 | "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.0.tgz", 3211 | "integrity": "sha512-79Z4wWOYCdvQkEoEuSlBhHJqWeZ8D8YRPiPctJFCtvuaClGpiwiQYSCUOE6IEKUbbFukKOTFIUAXE8N4EQTo1Q==", 3212 | "dev": true, 3213 | "requires": { 3214 | "@jest/schemas": "^28.0.2", 3215 | "ansi-regex": "^5.0.1", 3216 | "ansi-styles": "^5.0.0", 3217 | "react-is": "^18.0.0" 3218 | }, 3219 | "dependencies": { 3220 | "ansi-styles": { 3221 | "version": "5.2.0", 3222 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", 3223 | "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", 3224 | "dev": true 3225 | } 3226 | } 3227 | }, 3228 | "prompts": { 3229 | "version": "2.4.2", 3230 | "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", 3231 | "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", 3232 | "dev": true, 3233 | "requires": { 3234 | "kleur": "^3.0.3", 3235 | "sisteransi": "^1.0.5" 3236 | } 3237 | }, 3238 | "pseudomap": { 3239 | "version": "1.0.2", 3240 | "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", 3241 | "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==" 3242 | }, 3243 | "punycode": { 3244 | "version": "2.1.1", 3245 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 3246 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", 3247 | "dev": true 3248 | }, 3249 | "querystring": { 3250 | "version": "0.2.0", 3251 | "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", 3252 | "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==" 3253 | }, 3254 | "queue-microtask": { 3255 | "version": "1.2.3", 3256 | "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", 3257 | "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", 3258 | "dev": true 3259 | }, 3260 | "react-is": { 3261 | "version": "18.1.0", 3262 | "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.1.0.tgz", 3263 | "integrity": "sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg==", 3264 | "dev": true 3265 | }, 3266 | "regexpp": { 3267 | "version": "3.2.0", 3268 | "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", 3269 | "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", 3270 | "dev": true 3271 | }, 3272 | "require-directory": { 3273 | "version": "2.1.1", 3274 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 3275 | "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", 3276 | "dev": true 3277 | }, 3278 | "resolve": { 3279 | "version": "1.22.0", 3280 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", 3281 | "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", 3282 | "dev": true, 3283 | "requires": { 3284 | "is-core-module": "^2.8.1", 3285 | "path-parse": "^1.0.7", 3286 | "supports-preserve-symlinks-flag": "^1.0.0" 3287 | } 3288 | }, 3289 | "resolve-cwd": { 3290 | "version": "3.0.0", 3291 | "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", 3292 | "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", 3293 | "dev": true, 3294 | "requires": { 3295 | "resolve-from": "^5.0.0" 3296 | } 3297 | }, 3298 | "resolve-from": { 3299 | "version": "5.0.0", 3300 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", 3301 | "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", 3302 | "dev": true 3303 | }, 3304 | "resolve.exports": { 3305 | "version": "1.1.0", 3306 | "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz", 3307 | "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==", 3308 | "dev": true 3309 | }, 3310 | "retry-as-promised": { 3311 | "version": "5.0.0", 3312 | "resolved": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-5.0.0.tgz", 3313 | "integrity": "sha512-6S+5LvtTl2ggBumk04hBo/4Uf6fRJUwIgunGZ7CYEBCeufGFW1Pu6ucUf/UskHeWOIsUcLOGLFXPig5tR5V1nA==" 3314 | }, 3315 | "reusify": { 3316 | "version": "1.0.4", 3317 | "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", 3318 | "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", 3319 | "dev": true 3320 | }, 3321 | "rimraf": { 3322 | "version": "3.0.2", 3323 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 3324 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 3325 | "dev": true, 3326 | "requires": { 3327 | "glob": "^7.1.3" 3328 | } 3329 | }, 3330 | "run-parallel": { 3331 | "version": "1.2.0", 3332 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", 3333 | "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", 3334 | "dev": true, 3335 | "requires": { 3336 | "queue-microtask": "^1.2.2" 3337 | } 3338 | }, 3339 | "safe-buffer": { 3340 | "version": "5.1.2", 3341 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 3342 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 3343 | "dev": true 3344 | }, 3345 | "safer-buffer": { 3346 | "version": "2.1.2", 3347 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 3348 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 3349 | }, 3350 | "sax": { 3351 | "version": "1.2.1", 3352 | "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz", 3353 | "integrity": "sha1-e45lYZCyKOgaZq6nSEgNgozS03o=" 3354 | }, 3355 | "semver": { 3356 | "version": "6.3.0", 3357 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 3358 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", 3359 | "dev": true 3360 | }, 3361 | "seq-queue": { 3362 | "version": "0.0.5", 3363 | "resolved": "https://registry.npmjs.org/seq-queue/-/seq-queue-0.0.5.tgz", 3364 | "integrity": "sha1-1WgS4cAXpuTnw+Ojeh2m143TyT4=" 3365 | }, 3366 | "sequelize": { 3367 | "version": "6.20.1", 3368 | "resolved": "https://registry.npmjs.org/sequelize/-/sequelize-6.20.1.tgz", 3369 | "integrity": "sha512-1YBMv++Yy1JBFFiac1Xoa+Km5qV6YI1ckdkW0xyD7IpLMtE5JmjgZdZXGfwgRUNjhaKMxdzT+nkvJgeXO0rv/g==", 3370 | "requires": { 3371 | "@types/debug": "^4.1.7", 3372 | "@types/validator": "^13.7.1", 3373 | "debug": "^4.3.3", 3374 | "dottie": "^2.0.2", 3375 | "inflection": "^1.13.2", 3376 | "lodash": "^4.17.21", 3377 | "moment": "^2.29.1", 3378 | "moment-timezone": "^0.5.34", 3379 | "pg-connection-string": "^2.5.0", 3380 | "retry-as-promised": "^5.0.0", 3381 | "semver": "^7.3.5", 3382 | "sequelize-pool": "^7.1.0", 3383 | "toposort-class": "^1.0.1", 3384 | "uuid": "^8.3.2", 3385 | "validator": "^13.7.0", 3386 | "wkx": "^0.5.0" 3387 | }, 3388 | "dependencies": { 3389 | "semver": { 3390 | "version": "7.3.7", 3391 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", 3392 | "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", 3393 | "requires": { 3394 | "lru-cache": "^6.0.0" 3395 | } 3396 | } 3397 | } 3398 | }, 3399 | "sequelize-pool": { 3400 | "version": "7.1.0", 3401 | "resolved": "https://registry.npmjs.org/sequelize-pool/-/sequelize-pool-7.1.0.tgz", 3402 | "integrity": "sha512-G9c0qlIWQSK29pR/5U2JF5dDQeqqHRragoyahj/Nx4KOOQ3CPPfzxnfqFPCSB7x5UgjOgnZ61nSxz+fjDpRlJg==" 3403 | }, 3404 | "shebang-command": { 3405 | "version": "2.0.0", 3406 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 3407 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 3408 | "dev": true, 3409 | "requires": { 3410 | "shebang-regex": "^3.0.0" 3411 | } 3412 | }, 3413 | "shebang-regex": { 3414 | "version": "3.0.0", 3415 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 3416 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 3417 | "dev": true 3418 | }, 3419 | "signal-exit": { 3420 | "version": "3.0.7", 3421 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", 3422 | "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", 3423 | "dev": true 3424 | }, 3425 | "sisteransi": { 3426 | "version": "1.0.5", 3427 | "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", 3428 | "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", 3429 | "dev": true 3430 | }, 3431 | "slash": { 3432 | "version": "3.0.0", 3433 | "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", 3434 | "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", 3435 | "dev": true 3436 | }, 3437 | "source-map": { 3438 | "version": "0.6.1", 3439 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 3440 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 3441 | "dev": true 3442 | }, 3443 | "source-map-support": { 3444 | "version": "0.5.13", 3445 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", 3446 | "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", 3447 | "dev": true, 3448 | "requires": { 3449 | "buffer-from": "^1.0.0", 3450 | "source-map": "^0.6.0" 3451 | } 3452 | }, 3453 | "sprintf-js": { 3454 | "version": "1.0.3", 3455 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", 3456 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" 3457 | }, 3458 | "sqlstring": { 3459 | "version": "2.3.3", 3460 | "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.3.tgz", 3461 | "integrity": "sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg==" 3462 | }, 3463 | "stack-utils": { 3464 | "version": "2.0.5", 3465 | "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz", 3466 | "integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==", 3467 | "dev": true, 3468 | "requires": { 3469 | "escape-string-regexp": "^2.0.0" 3470 | }, 3471 | "dependencies": { 3472 | "escape-string-regexp": { 3473 | "version": "2.0.0", 3474 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", 3475 | "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", 3476 | "dev": true 3477 | } 3478 | } 3479 | }, 3480 | "string-argv": { 3481 | "version": "0.3.1", 3482 | "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", 3483 | "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==" 3484 | }, 3485 | "string-length": { 3486 | "version": "4.0.2", 3487 | "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", 3488 | "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", 3489 | "dev": true, 3490 | "requires": { 3491 | "char-regex": "^1.0.2", 3492 | "strip-ansi": "^6.0.0" 3493 | } 3494 | }, 3495 | "string-width": { 3496 | "version": "4.2.3", 3497 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 3498 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 3499 | "dev": true, 3500 | "requires": { 3501 | "emoji-regex": "^8.0.0", 3502 | "is-fullwidth-code-point": "^3.0.0", 3503 | "strip-ansi": "^6.0.1" 3504 | } 3505 | }, 3506 | "strip-ansi": { 3507 | "version": "6.0.1", 3508 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 3509 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 3510 | "dev": true, 3511 | "requires": { 3512 | "ansi-regex": "^5.0.1" 3513 | } 3514 | }, 3515 | "strip-bom": { 3516 | "version": "4.0.0", 3517 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", 3518 | "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", 3519 | "dev": true 3520 | }, 3521 | "strip-final-newline": { 3522 | "version": "2.0.0", 3523 | "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", 3524 | "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", 3525 | "dev": true 3526 | }, 3527 | "strip-json-comments": { 3528 | "version": "3.1.1", 3529 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", 3530 | "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", 3531 | "dev": true 3532 | }, 3533 | "supports-color": { 3534 | "version": "7.2.0", 3535 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 3536 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 3537 | "dev": true, 3538 | "requires": { 3539 | "has-flag": "^4.0.0" 3540 | } 3541 | }, 3542 | "supports-hyperlinks": { 3543 | "version": "2.2.0", 3544 | "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", 3545 | "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", 3546 | "dev": true, 3547 | "requires": { 3548 | "has-flag": "^4.0.0", 3549 | "supports-color": "^7.0.0" 3550 | } 3551 | }, 3552 | "supports-preserve-symlinks-flag": { 3553 | "version": "1.0.0", 3554 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", 3555 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", 3556 | "dev": true 3557 | }, 3558 | "terminal-link": { 3559 | "version": "2.1.1", 3560 | "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", 3561 | "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", 3562 | "dev": true, 3563 | "requires": { 3564 | "ansi-escapes": "^4.2.1", 3565 | "supports-hyperlinks": "^2.0.0" 3566 | } 3567 | }, 3568 | "test-exclude": { 3569 | "version": "6.0.0", 3570 | "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", 3571 | "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", 3572 | "dev": true, 3573 | "requires": { 3574 | "@istanbuljs/schema": "^0.1.2", 3575 | "glob": "^7.1.4", 3576 | "minimatch": "^3.0.4" 3577 | } 3578 | }, 3579 | "text-table": { 3580 | "version": "0.2.0", 3581 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", 3582 | "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", 3583 | "dev": true 3584 | }, 3585 | "throat": { 3586 | "version": "6.0.1", 3587 | "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz", 3588 | "integrity": "sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==", 3589 | "dev": true 3590 | }, 3591 | "tmpl": { 3592 | "version": "1.0.5", 3593 | "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", 3594 | "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", 3595 | "dev": true 3596 | }, 3597 | "to-fast-properties": { 3598 | "version": "2.0.0", 3599 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", 3600 | "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", 3601 | "dev": true 3602 | }, 3603 | "to-regex-range": { 3604 | "version": "5.0.1", 3605 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 3606 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 3607 | "dev": true, 3608 | "requires": { 3609 | "is-number": "^7.0.0" 3610 | } 3611 | }, 3612 | "toposort-class": { 3613 | "version": "1.0.1", 3614 | "resolved": "https://registry.npmjs.org/toposort-class/-/toposort-class-1.0.1.tgz", 3615 | "integrity": "sha1-f/0feMi+KMO6Rc1OGj9e4ZO9mYg=" 3616 | }, 3617 | "ts-jest": { 3618 | "version": "28.0.3", 3619 | "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-28.0.3.tgz", 3620 | "integrity": "sha512-HzgbEDQ2KgVtDmpXToqAcKTyGHdHsG23i/iUjfxji92G5eT09S1m9UHZd7csF0Bfgh9txM4JzwHnv7r1waFPlw==", 3621 | "dev": true, 3622 | "requires": { 3623 | "bs-logger": "0.x", 3624 | "fast-json-stable-stringify": "2.x", 3625 | "jest-util": "^28.0.0", 3626 | "json5": "^2.2.1", 3627 | "lodash.memoize": "4.x", 3628 | "make-error": "1.x", 3629 | "semver": "7.x", 3630 | "yargs-parser": "^20.x" 3631 | }, 3632 | "dependencies": { 3633 | "semver": { 3634 | "version": "7.3.7", 3635 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", 3636 | "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", 3637 | "dev": true, 3638 | "requires": { 3639 | "lru-cache": "^6.0.0" 3640 | } 3641 | }, 3642 | "yargs-parser": { 3643 | "version": "20.2.9", 3644 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", 3645 | "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", 3646 | "dev": true 3647 | } 3648 | } 3649 | }, 3650 | "tslib": { 3651 | "version": "1.14.1", 3652 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", 3653 | "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", 3654 | "dev": true 3655 | }, 3656 | "tsutils": { 3657 | "version": "3.21.0", 3658 | "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", 3659 | "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", 3660 | "dev": true, 3661 | "requires": { 3662 | "tslib": "^1.8.1" 3663 | } 3664 | }, 3665 | "type-check": { 3666 | "version": "0.4.0", 3667 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", 3668 | "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", 3669 | "dev": true, 3670 | "requires": { 3671 | "prelude-ls": "^1.2.1" 3672 | } 3673 | }, 3674 | "type-detect": { 3675 | "version": "4.0.8", 3676 | "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", 3677 | "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", 3678 | "dev": true 3679 | }, 3680 | "type-fest": { 3681 | "version": "0.21.3", 3682 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", 3683 | "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", 3684 | "dev": true 3685 | }, 3686 | "typescript": { 3687 | "version": "4.7.2", 3688 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.2.tgz", 3689 | "integrity": "sha512-Mamb1iX2FDUpcTRzltPxgWMKy3fhg0TN378ylbktPGPK/99KbDtMQ4W1hwgsbPAsG3a0xKa1vmw4VKZQbkvz5A==", 3690 | "dev": true 3691 | }, 3692 | "umzug": { 3693 | "version": "3.1.1", 3694 | "resolved": "https://registry.npmjs.org/umzug/-/umzug-3.1.1.tgz", 3695 | "integrity": "sha512-sgMDzUK6ZKS3pjzRJpAHqSkvAQ+64Dourq6JfQv11i0nMu0/QqE3V3AUpj2pWYxFBaSvnUxKrzZQmPr6NZhvdQ==", 3696 | "requires": { 3697 | "@rushstack/ts-command-line": "^4.7.7", 3698 | "emittery": "^0.10.2", 3699 | "fs-jetpack": "^4.1.0", 3700 | "glob": "^7.1.6", 3701 | "pony-cause": "^1.1.1", 3702 | "type-fest": "^2.0.0" 3703 | }, 3704 | "dependencies": { 3705 | "type-fest": { 3706 | "version": "2.13.0", 3707 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.13.0.tgz", 3708 | "integrity": "sha512-lPfAm42MxE4/456+QyIaaVBAwgpJb6xZ8PRu09utnhPdWwcyj9vgy6Sq0Z5yNbJ21EdxB5dRU/Qg8bsyAMtlcw==" 3709 | } 3710 | } 3711 | }, 3712 | "uri-js": { 3713 | "version": "4.4.1", 3714 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", 3715 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", 3716 | "dev": true, 3717 | "requires": { 3718 | "punycode": "^2.1.0" 3719 | } 3720 | }, 3721 | "url": { 3722 | "version": "0.10.3", 3723 | "resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz", 3724 | "integrity": "sha1-Ah5NnHcF8hu/N9A861h2dAJ3TGQ=", 3725 | "requires": { 3726 | "punycode": "1.3.2", 3727 | "querystring": "0.2.0" 3728 | }, 3729 | "dependencies": { 3730 | "punycode": { 3731 | "version": "1.3.2", 3732 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", 3733 | "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==" 3734 | } 3735 | } 3736 | }, 3737 | "uuid": { 3738 | "version": "8.3.2", 3739 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", 3740 | "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" 3741 | }, 3742 | "v8-compile-cache": { 3743 | "version": "2.3.0", 3744 | "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", 3745 | "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", 3746 | "dev": true 3747 | }, 3748 | "v8-to-istanbul": { 3749 | "version": "9.0.0", 3750 | "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.0.0.tgz", 3751 | "integrity": "sha512-HcvgY/xaRm7isYmyx+lFKA4uQmfUbN0J4M0nNItvzTvH/iQ9kW5j/t4YSR+Ge323/lrgDAWJoF46tzGQHwBHFw==", 3752 | "dev": true, 3753 | "requires": { 3754 | "@jridgewell/trace-mapping": "^0.3.7", 3755 | "@types/istanbul-lib-coverage": "^2.0.1", 3756 | "convert-source-map": "^1.6.0" 3757 | } 3758 | }, 3759 | "validator": { 3760 | "version": "13.7.0", 3761 | "resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz", 3762 | "integrity": "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==" 3763 | }, 3764 | "walker": { 3765 | "version": "1.0.8", 3766 | "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", 3767 | "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", 3768 | "dev": true, 3769 | "requires": { 3770 | "makeerror": "1.0.12" 3771 | } 3772 | }, 3773 | "watchpack": { 3774 | "version": "2.4.0", 3775 | "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", 3776 | "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", 3777 | "requires": { 3778 | "glob-to-regexp": "^0.4.1", 3779 | "graceful-fs": "^4.1.2" 3780 | } 3781 | }, 3782 | "which": { 3783 | "version": "2.0.2", 3784 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 3785 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 3786 | "dev": true, 3787 | "requires": { 3788 | "isexe": "^2.0.0" 3789 | } 3790 | }, 3791 | "wkx": { 3792 | "version": "0.5.0", 3793 | "resolved": "https://registry.npmjs.org/wkx/-/wkx-0.5.0.tgz", 3794 | "integrity": "sha512-Xng/d4Ichh8uN4l0FToV/258EjMGU9MGcA0HV2d9B/ZpZB3lqQm7nkOdZdm5GhKtLLhAE7PiVQwN4eN+2YJJUg==", 3795 | "requires": { 3796 | "@types/node": "*" 3797 | } 3798 | }, 3799 | "word-wrap": { 3800 | "version": "1.2.3", 3801 | "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", 3802 | "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", 3803 | "dev": true 3804 | }, 3805 | "wrap-ansi": { 3806 | "version": "7.0.0", 3807 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 3808 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 3809 | "dev": true, 3810 | "requires": { 3811 | "ansi-styles": "^4.0.0", 3812 | "string-width": "^4.1.0", 3813 | "strip-ansi": "^6.0.0" 3814 | } 3815 | }, 3816 | "wrappy": { 3817 | "version": "1.0.2", 3818 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 3819 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" 3820 | }, 3821 | "write-file-atomic": { 3822 | "version": "4.0.1", 3823 | "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.1.tgz", 3824 | "integrity": "sha512-nSKUxgAbyioruk6hU87QzVbY279oYT6uiwgDoujth2ju4mJ+TZau7SQBhtbTmUyuNYTuXnSyRn66FV0+eCgcrQ==", 3825 | "dev": true, 3826 | "requires": { 3827 | "imurmurhash": "^0.1.4", 3828 | "signal-exit": "^3.0.7" 3829 | } 3830 | }, 3831 | "xml2js": { 3832 | "version": "0.4.19", 3833 | "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", 3834 | "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", 3835 | "requires": { 3836 | "sax": ">=0.6.0", 3837 | "xmlbuilder": "~9.0.1" 3838 | } 3839 | }, 3840 | "xmlbuilder": { 3841 | "version": "9.0.7", 3842 | "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", 3843 | "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=" 3844 | }, 3845 | "y18n": { 3846 | "version": "5.0.8", 3847 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", 3848 | "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", 3849 | "dev": true 3850 | }, 3851 | "yallist": { 3852 | "version": "4.0.0", 3853 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 3854 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" 3855 | }, 3856 | "yargs": { 3857 | "version": "17.5.1", 3858 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz", 3859 | "integrity": "sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==", 3860 | "dev": true, 3861 | "requires": { 3862 | "cliui": "^7.0.2", 3863 | "escalade": "^3.1.1", 3864 | "get-caller-file": "^2.0.5", 3865 | "require-directory": "^2.1.1", 3866 | "string-width": "^4.2.3", 3867 | "y18n": "^5.0.5", 3868 | "yargs-parser": "^21.0.0" 3869 | } 3870 | }, 3871 | "yargs-parser": { 3872 | "version": "21.0.1", 3873 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz", 3874 | "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==", 3875 | "dev": true 3876 | } 3877 | } 3878 | } 3879 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@eagerworks/sequelize-lambda-migrations", 3 | "version": "1.0.1", 4 | "description": "Package to manage sequelize migrations on serverless", 5 | "main": "dist/index.js", 6 | "types": "dist/index.d.ts", 7 | "scripts": { 8 | "build": "tsc", 9 | "test": "NODE_ENV=test jest --coverage --silent --runInBand", 10 | "prepare": "husky install" 11 | }, 12 | "repository": { 13 | "type": "git", 14 | "url": "git+https://github.com/eagerworks/sequelize-lambda-migrations.git" 15 | }, 16 | "publishConfig": { 17 | "registry": "https://registry.npmjs.org/" 18 | }, 19 | "author": "eagerWorks", 20 | "license": "MIT", 21 | "bugs": { 22 | "url": "https://github.com/eagerworks/serverless-sequelize-migrations/issues" 23 | }, 24 | "homepage": "https://github.com/eagerworks/serverless-sequelize-migrations#readme", 25 | "dependencies": { 26 | "aws-lambda": "1.0.7", 27 | "mysql2": "2.3.3", 28 | "sequelize": "6.20.1", 29 | "umzug": "3.1.1" 30 | }, 31 | "devDependencies": { 32 | "@types/aws-lambda": "8.10.97", 33 | "@types/jest": "27.5.1", 34 | "@typescript-eslint/eslint-plugin": "5.26.0", 35 | "@typescript-eslint/parser": "5.26.0", 36 | "eslint": "8.16.0", 37 | "eslint-config-prettier": "8.5.0", 38 | "eslint-plugin-prettier": "4.0.0", 39 | "husky": "8.0.0", 40 | "jest": "28.1.0", 41 | "npm-snapshot": "1.1.1", 42 | "prettier": "2.6.2", 43 | "ts-jest": "28.0.3", 44 | "typescript": "4.7.2" 45 | }, 46 | "engines": { 47 | "node": "14.19.3" 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /src/createHandler.ts: -------------------------------------------------------------------------------- 1 | import { MigrationsHandler } from './migrationsHandler'; 2 | import { Context, Callback } from 'aws-lambda'; 3 | 4 | export const createHandler = 5 | (handlerName: string) => async (_: any, context: Context, callback: Callback) => { 6 | try { 7 | context.callbackWaitsForEmptyEventLoop = false; 8 | 9 | const handler = new MigrationsHandler(process.env.MIGRATIONS_GLOB); 10 | const response = await handler[handlerName](); 11 | 12 | callback(null, response); 13 | } catch (error: any) { 14 | console.log(error); 15 | callback(error); 16 | } 17 | }; 18 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | import { createHandler } from './createHandler'; 2 | 3 | export const migrate = createHandler('migrate'); 4 | export const rollback = createHandler('rollback'); 5 | export const reset = createHandler('reset'); 6 | -------------------------------------------------------------------------------- /src/migrationsHandler.ts: -------------------------------------------------------------------------------- 1 | import { Dialect, QueryInterface, Sequelize } from 'sequelize'; 2 | import { Umzug, SequelizeStorage } from 'umzug'; 3 | 4 | export class MigrationsHandler { 5 | private migrationsPath: string; 6 | private sequelize: Sequelize; 7 | private umzug: Umzug; 8 | 9 | private initSequelize() { 10 | this.sequelize = new Sequelize( 11 | process.env.DB_NAME, 12 | process.env.DB_USERNAME, 13 | process.env.DB_PASSWORD, 14 | { 15 | port: parseInt(process.env.DB_PORT), 16 | dialect: process.env.DB_DIALECT as Dialect, 17 | host: process.env.DB_HOST, 18 | }, 19 | ); 20 | } 21 | 22 | private initUmzug(migrationsGlob: string) { 23 | this.umzug = new Umzug({ 24 | migrations: { 25 | glob: migrationsGlob, 26 | resolve: ({ name, path, context }) => { 27 | // There is not a way to use import syncronously, so we need to use require. 28 | // eslint-disable-next-line @typescript-eslint/no-var-requires 29 | const { up, down } = require(path); 30 | return { 31 | name, 32 | up: async () => up(context, Sequelize), 33 | down: async () => down(context, Sequelize), 34 | }; 35 | }, 36 | }, 37 | context: this.sequelize.getQueryInterface(), 38 | storage: new SequelizeStorage({ sequelize: this.sequelize }), 39 | logger: console, 40 | }); 41 | } 42 | 43 | constructor(migrationsPath: string) { 44 | console.log('Setting up connections'); 45 | this.migrationsPath = migrationsPath; 46 | this.initSequelize(); 47 | this.initUmzug(this.migrationsPath); 48 | } 49 | 50 | public async migrate() { 51 | const pending = await this.umzug.pending(); 52 | 53 | if (pending.length === 0) { 54 | this.sequelize.close(); 55 | return { message: 'No pending migrations to apply' }; 56 | } 57 | 58 | const migrations = await this.umzug.up(); 59 | const migrationNames = migrations.map((migration) => migration.name); 60 | this.sequelize.close(); 61 | 62 | return { 63 | message: `Succesfully applied ${migrations.length} migrations`, 64 | migrations: migrationNames, 65 | }; 66 | } 67 | 68 | public async rollback() { 69 | const executed = await this.umzug.executed(); 70 | 71 | if (executed.length === 0) { 72 | this.sequelize.close(); 73 | return { message: 'No executed migrations to rollback' }; 74 | } 75 | 76 | const migration = await this.umzug.down(); 77 | this.sequelize.close(); 78 | return { message: `Succesfully rollbacked ${migration?.[0]?.name}` }; 79 | } 80 | 81 | public async reset() { 82 | const executed = await this.umzug.executed(); 83 | 84 | if (executed.length === 0) { 85 | this.sequelize.close(); 86 | return { message: 'No executed migrations to rollback' }; 87 | } 88 | 89 | const migrations = await this.umzug.down({ to: 0 as const }); 90 | const migrationNames = migrations.map((migration) => migration.name); 91 | this.sequelize.close(); 92 | 93 | return { 94 | message: `Succesfully rollbacked ${migrations.length} migrations`, 95 | migrations: migrationNames, 96 | }; 97 | } 98 | } 99 | -------------------------------------------------------------------------------- /test/createHandler.test.ts: -------------------------------------------------------------------------------- 1 | import { MigrationsHandler } from '../src/migrationsHandler'; 2 | import { createHandler } from '../src/createHandler'; 3 | 4 | jest.mock('../src/migrationsHandler'); 5 | 6 | describe('Tests for createHandler', () => { 7 | const dummyContext = { 8 | awsRequestId: '123456', 9 | callbackWaitsForEmptyEventLoop: false, 10 | functionName: 'test', 11 | functionVersion: '1.0.0', 12 | invokedFunctionArn: 'arn:aws:lambda:us-east-1:123456789012:function:test', 13 | memoryLimitInMB: '128', 14 | logGroupName: 'testGroup', 15 | logStreamName: 'testStream', 16 | getRemainingTimeInMillis: jest.fn(), 17 | done: jest.fn(), 18 | succeed: jest.fn(), 19 | fail: jest.fn(), 20 | }; 21 | 22 | it('should correctly return and execute the handler', async () => { 23 | const handler = createHandler('migrate'); 24 | expect(handler).toBeDefined(); 25 | 26 | jest.spyOn(MigrationsHandler.prototype, 'migrate').mockReturnValue( 27 | Promise.resolve({ 28 | message: 'Succesfully applied 2 migrations', 29 | migrations: ['test1', 'test2'], 30 | }), 31 | ); 32 | 33 | const callback = jest.fn(); 34 | 35 | await handler({}, dummyContext, callback); 36 | expect(callback).toHaveBeenCalledWith(null, { 37 | message: 'Succesfully applied 2 migrations', 38 | migrations: ['test1', 'test2'], 39 | }); 40 | }); 41 | 42 | it('should return the handler and throw an error', async () => { 43 | const handler = createHandler('migrate'); 44 | expect(handler).toBeDefined(); 45 | 46 | jest 47 | .spyOn(MigrationsHandler.prototype, 'migrate') 48 | .mockReturnValue(Promise.reject('Error while running migrate')); 49 | 50 | const callback = jest.fn(); 51 | await handler({}, dummyContext, callback); 52 | 53 | expect(callback).toHaveBeenCalledWith('Error while running migrate'); 54 | }); 55 | }); 56 | -------------------------------------------------------------------------------- /test/migrationsHandler.test.ts: -------------------------------------------------------------------------------- 1 | import { MigrationsHandler } from '../src/migrationsHandler'; 2 | import { Umzug } from 'umzug'; 3 | 4 | jest.mock('sequelize', () => { 5 | const mockedSequelize = { 6 | close: jest.fn(), 7 | getQueryInterface: jest.fn(), 8 | }; 9 | return { Sequelize: jest.fn(() => mockedSequelize) }; 10 | }); 11 | 12 | jest.mock('umzug'); 13 | 14 | describe('Migrations Handler tests', () => { 15 | afterEach(() => { 16 | jest.clearAllMocks(); 17 | }); 18 | 19 | const migrationsHandler = new MigrationsHandler('test/*.js'); 20 | const migrations = [ 21 | { name: 'test1', file: 'test/test1.js' }, 22 | { name: 'test2', file: 'test/test2.js' }, 23 | ]; 24 | 25 | it('Should return that there are no pending migrations to apply', () => { 26 | jest.spyOn(Umzug.prototype, 'pending').mockReturnValue(Promise.resolve([])); 27 | expect(migrationsHandler.migrate()).resolves.toStrictEqual({ 28 | message: 'No pending migrations to apply', 29 | }); 30 | }); 31 | 32 | it('Should migrate correctly', () => { 33 | jest.spyOn(Umzug.prototype, 'up').mockReturnValue(Promise.resolve(migrations)); 34 | jest.spyOn(Umzug.prototype, 'pending').mockReturnValue(Promise.resolve(migrations)); 35 | 36 | expect(migrationsHandler.migrate()).resolves.toStrictEqual({ 37 | message: 'Succesfully applied 2 migrations', 38 | migrations: ['test1', 'test2'], 39 | }); 40 | }); 41 | 42 | it('Should return that there are no executed migrations to rollback', () => { 43 | jest.spyOn(Umzug.prototype, 'executed').mockReturnValue(Promise.resolve([])); 44 | expect(migrationsHandler.rollback()).resolves.toStrictEqual({ 45 | message: 'No executed migrations to rollback', 46 | }); 47 | }); 48 | 49 | it('Should rollback correctly', () => { 50 | const migration = { name: 'test1', file: 'test/test1.js' }; 51 | 52 | jest.spyOn(Umzug.prototype, 'down').mockReturnValue(Promise.resolve([migration])); 53 | jest.spyOn(Umzug.prototype, 'executed').mockReturnValue(Promise.resolve([migration])); 54 | 55 | expect(migrationsHandler.rollback()).resolves.toStrictEqual({ 56 | message: 'Succesfully rollbacked test1', 57 | }); 58 | }); 59 | 60 | it('Should return that there are no executed migrations to reset', () => { 61 | jest.spyOn(Umzug.prototype, 'executed').mockReturnValue(Promise.resolve([])); 62 | expect(migrationsHandler.reset()).resolves.toStrictEqual({ 63 | message: 'No executed migrations to rollback', 64 | }); 65 | }); 66 | 67 | it('Should reset correctly', () => { 68 | jest.spyOn(Umzug.prototype, 'down').mockReturnValue(Promise.resolve(migrations)); 69 | jest.spyOn(Umzug.prototype, 'executed').mockReturnValue(Promise.resolve(migrations)); 70 | 71 | expect(migrationsHandler.reset()).resolves.toStrictEqual({ 72 | message: 'Succesfully rollbacked 2 migrations', 73 | migrations: ['test1', 'test2'], 74 | }); 75 | }); 76 | }); 77 | -------------------------------------------------------------------------------- /test/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "include": ["."] 4 | } 5 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es6", 4 | "module": "commonjs", 5 | "pretty": true, 6 | "sourceMap": true, 7 | "declaration": true, 8 | "outDir": "dist", 9 | "importHelpers": true, 10 | "strict": true, 11 | "noImplicitAny": false, 12 | "strictNullChecks": false, 13 | "noImplicitThis": true, 14 | "alwaysStrict": true, 15 | "noUnusedLocals": true, 16 | "noUnusedParameters": false, 17 | "noImplicitReturns": true, 18 | "noFallthroughCasesInSwitch": true, 19 | "moduleResolution": "node", 20 | "baseUrl": ".", 21 | "allowSyntheticDefaultImports": true, 22 | "experimentalDecorators": true, 23 | "emitDecoratorMetadata": true, 24 | "resolveJsonModule": true, 25 | "esModuleInterop": true, 26 | "types": ["jest", "node"], 27 | "lib": [ 28 | "es5", 29 | "es6", 30 | "dom", 31 | "es2015.core", 32 | "es2015.collection", 33 | "es2015.generator", 34 | "es2015.iterable", 35 | "es2015.promise", 36 | "es2015.proxy", 37 | "es2015.reflect", 38 | "es2015.symbol", 39 | "es2015.symbol.wellknown", 40 | "esnext.asynciterable" 41 | ] 42 | }, 43 | "include": ["src/**/*"] 44 | } 45 | --------------------------------------------------------------------------------