├── .prettierignore ├── strapi-server.js ├── .editorconfig ├── __tests__ ├── mock │ ├── request │ │ ├── index.js │ │ ├── wrap-body-with-data-key.js │ │ └── initial.js │ └── response │ │ ├── index.js │ │ ├── all-response-transforms.js │ │ ├── remove-attributes.js │ │ ├── remove-data.js │ │ └── initial.js ├── request │ └── wrap-body-with-data-key.spec.js └── response │ ├── remove-data.spec.js │ ├── remove-attributes.spec.js │ └── all-response-transforms.spec.js ├── .gitignore ├── server ├── services │ ├── transform-service │ │ ├── util.js │ │ ├── index.js │ │ ├── request.js │ │ └── response.js │ ├── settings-service.js │ └── index.js ├── index.js ├── util │ ├── pluginId.js │ └── getPluginService.js ├── config │ ├── index.js │ └── schema.js ├── middleware │ └── transform.js └── register.js ├── .prettierrc.json ├── jest.config.js ├── .npmignore ├── .github └── workflows │ ├── pr-test.yml │ └── npm-publish.yml ├── .eslintrc.js ├── LICENSE ├── package.json ├── .gitattributes ├── README.md └── yarn.lock /.prettierignore: -------------------------------------------------------------------------------- 1 | package-lock.json -------------------------------------------------------------------------------- /strapi-server.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports = require('./server'); 4 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | end_of_line = lf 5 | insert_final_newline = false 6 | indent_style = tab 7 | indent_size = 2 8 | -------------------------------------------------------------------------------- /__tests__/mock/request/index.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | initial: require('./initial'), 3 | wrapBodyWithDataKey: require('./wrap-body-with-data-key'), 4 | }; 5 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Don't check auto-generated stuff into git 2 | coverage 3 | node_modules 4 | stats.json 5 | 6 | # Cruft 7 | .DS_Store 8 | npm-debug.log 9 | .idea 10 | -------------------------------------------------------------------------------- /server/services/transform-service/util.js: -------------------------------------------------------------------------------- 1 | function removeObjectKey(object, key) { 2 | return { 3 | id: object.id, 4 | ...object[key], 5 | }; 6 | } 7 | 8 | module.exports = { 9 | removeObjectKey, 10 | }; 11 | -------------------------------------------------------------------------------- /server/services/settings-service.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const { pluginId } = require('../util/pluginId'); 4 | 5 | module.exports = ({ strapi }) => ({ 6 | get() { 7 | return strapi.config.get(`plugin.${pluginId}`); 8 | }, 9 | }); 10 | -------------------------------------------------------------------------------- /server/services/index.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const settingsService = require('./settings-service'); 4 | const transformService = require('./transform-service'); 5 | 6 | module.exports = { 7 | settingsService, 8 | transformService, 9 | }; 10 | -------------------------------------------------------------------------------- /__tests__/mock/response/index.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | initial: require('./initial'), 3 | removeAttributesKey: require('./remove-attributes'), 4 | removeDataKey: require('./remove-data'), 5 | allResponseTransforms: require('./all-response-transforms'), 6 | }; 7 | -------------------------------------------------------------------------------- /server/index.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const register = require('./register'); 4 | const config = require('./config'); 5 | const services = require('./services'); 6 | 7 | module.exports = () => ({ 8 | config, 9 | services, 10 | register, 11 | }); 12 | -------------------------------------------------------------------------------- /server/util/pluginId.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const pluginPkg = require('../../package.json'); 4 | 5 | /** 6 | * Returns the plugin id 7 | * 8 | * @return plugin id 9 | */ 10 | const pluginId = pluginPkg.strapi.name; 11 | 12 | module.exports = { pluginId }; 13 | -------------------------------------------------------------------------------- /.prettierrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json.schemastore.org/prettierrc", 3 | "trailingComma": "es5", 4 | "tabWidth": 2, 5 | "semi": true, 6 | "singleQuote": true, 7 | "useTabs": true, 8 | "arrowParens": "always", 9 | "endOfLine": "lf", 10 | "printWidth": 100 11 | } 12 | -------------------------------------------------------------------------------- /__tests__/mock/request/wrap-body-with-data-key.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports = { 4 | wrappableRequestContext: { 5 | method: 'PUT', 6 | request: { 7 | body: { 8 | data: { 9 | data: {}, 10 | title: 'lorem', 11 | }, 12 | }, 13 | }, 14 | }, 15 | }; 16 | -------------------------------------------------------------------------------- /jest.config.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports = { 4 | // Indicates which provider should be used to instrument code for coverage 5 | coverageProvider: 'v8', 6 | 7 | // The glob patterns Jest uses to detect test files 8 | testMatch: ['**/__tests__/**/?(*.)+(spec|test).[jt]s?(x)'], 9 | }; 10 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | # npm 2 | npm-debug.log 3 | 4 | # git 5 | .git 6 | .gitattributes 7 | 8 | # vscode 9 | .vscode 10 | 11 | # RC files 12 | .eslintrc.js 13 | .prettierrc.json 14 | 15 | # ignore files 16 | .prettierignore 17 | .gitignore 18 | 19 | # config files 20 | .editorconfig 21 | 22 | # github 23 | .github 24 | 25 | # tests 26 | __tests__ 27 | -------------------------------------------------------------------------------- /server/util/getPluginService.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const { pluginId } = require('./pluginId'); 4 | 5 | /** 6 | * A helper function to obtain a plugin service 7 | * 8 | * @return service 9 | */ 10 | const getPluginService = (name) => strapi.plugin(pluginId).service(name); 11 | 12 | module.exports = { 13 | getPluginService, 14 | }; 15 | -------------------------------------------------------------------------------- /server/services/transform-service/index.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const _ = require('lodash'); 4 | const { transformRequest } = require('./request'); 5 | const { transformResponse } = require('./response'); 6 | 7 | module.exports = () => ({ 8 | response(settings, ctx) { 9 | if (_.has(settings, ['responseTransforms'])) { 10 | transformResponse(settings.responseTransforms, ctx); 11 | } 12 | }, 13 | request(settings, ctx) { 14 | if (_.has(settings, ['requestTransforms'])) { 15 | transformRequest(settings.requestTransforms, ctx); 16 | } 17 | }, 18 | }); 19 | -------------------------------------------------------------------------------- /__tests__/mock/request/initial.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports = { 4 | nonMutationGETContext: { 5 | method: 'GET', 6 | }, 7 | nonMutationDELETEContext: { 8 | method: 'DELETE', 9 | }, 10 | noBodyRequestContext: { 11 | method: 'POST', 12 | request: {}, 13 | }, 14 | wrappedRequestContext: { 15 | method: 'POST', 16 | request: { 17 | body: { 18 | data: { 19 | title: 'lorem', 20 | }, 21 | }, 22 | }, 23 | }, 24 | wrappableRequestContext: { 25 | method: 'PUT', 26 | request: { 27 | body: { 28 | data: {}, 29 | title: 'lorem', 30 | }, 31 | }, 32 | }, 33 | }; 34 | -------------------------------------------------------------------------------- /server/config/index.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const { pluginConfigSchema } = require('./schema'); 4 | 5 | module.exports = { 6 | default: () => ({ 7 | responseTransforms: { 8 | removeAttributesKey: false, 9 | removeDataKey: false, 10 | }, 11 | requestTransforms: { 12 | wrapBodyWithDataKey: false, 13 | }, 14 | hooks: { 15 | preResponseTransform: () => {}, 16 | postResponseTransform: () => {}, 17 | }, 18 | contentTypeFilter: { 19 | uids: {}, 20 | }, 21 | plugins: { 22 | ids: {}, 23 | }, 24 | }), 25 | validator: (config) => { 26 | pluginConfigSchema.validateSync(config); 27 | }, 28 | }; 29 | -------------------------------------------------------------------------------- /.github/workflows/pr-test.yml: -------------------------------------------------------------------------------- 1 | name: PR Test 2 | on: [pull_request] 3 | jobs: 4 | test-pr: 5 | runs-on: ubuntu-latest 6 | steps: 7 | - name: Checkout branch 8 | uses: actions/checkout@v2 9 | 10 | - name: Install Node v14 11 | uses: actions/setup-node@v2 12 | with: 13 | node-version: '14.x' 14 | registry-url: 'https://registry.npmjs.org' 15 | 16 | - name: Install Yarn 17 | run: npm install -g yarn 18 | 19 | - name: Clean install deps 20 | run: yarn install --frozen-lockfile 21 | 22 | - name: Run tests 23 | run: yarn run test 24 | -------------------------------------------------------------------------------- /server/services/transform-service/request.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const _ = require('lodash'); 4 | 5 | /** 6 | * 7 | * @param {object} transforms 8 | * @param {boolean} transforms.wrapBodyWithDataKey 9 | * @param {object} ctx 10 | */ 11 | function transformRequest(transforms = {}, ctx) { 12 | // wrapBodyWithDataKey 13 | if (transforms.wrapBodyWithDataKey) { 14 | wrapBodyWithDataKey(ctx); 15 | } 16 | } 17 | 18 | function wrapBodyWithDataKey(ctx) { 19 | if (ctx.method !== 'POST' && ctx.method !== 'PUT') { 20 | return; 21 | } 22 | 23 | if (!_.has(ctx, ['request', 'body'])) { 24 | return; 25 | } 26 | 27 | if (_.has(ctx, ['request', 'body', 'data']) && _.size(ctx.request.body) == 1) { 28 | return; 29 | } 30 | 31 | ctx.request.body = { data: ctx.request.body }; 32 | } 33 | 34 | module.exports = { 35 | transformRequest, 36 | wrapBodyWithDataKey, 37 | }; 38 | -------------------------------------------------------------------------------- /.github/workflows/npm-publish.yml: -------------------------------------------------------------------------------- 1 | # This workflow will publish a package to NPM when a release is created 2 | 3 | name: Publish to NPM 4 | 5 | on: 6 | release: 7 | types: [published] 8 | 9 | jobs: 10 | publish-npm: 11 | runs-on: ubuntu-latest 12 | steps: 13 | - name: Checkout branch 14 | uses: actions/checkout@v2 15 | 16 | - name: Install Node v14 17 | uses: actions/setup-node@v2 18 | with: 19 | node-version: '14.x' 20 | registry-url: 'https://registry.npmjs.org' 21 | 22 | - name: Install Yarn 23 | run: npm install -g yarn 24 | 25 | - name: Clean install deps 26 | run: yarn install --frozen-lockfile 27 | 28 | - name: Run tests 29 | run: yarn run test 30 | 31 | - name: Publish to NPM 32 | run: npm publish 33 | env: 34 | NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} 35 | -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | $schema: 'https://json.schemastore.org/eslintrc', 3 | env: { 4 | es6: true, 5 | node: true, 6 | }, 7 | parserOptions: { 8 | ecmaVersion: 2018, 9 | }, 10 | rules: { 11 | indent: ['error', 'tab'], 12 | 'linebreak-style': ['error', 'unix'], 13 | quotes: ['error', 'single'], 14 | semi: ['error', 'always'], 15 | }, 16 | globals: { 17 | strapi: 'readonly', 18 | }, 19 | extends: ['eslint:recommended', 'plugin:node/recommended', 'prettier'], 20 | overrides: [ 21 | { 22 | files: ['**/__tests__/**/?(*.)+(spec|test).[jt]s?(x)'], 23 | env: { 24 | jest: true, 25 | }, 26 | extends: ['plugin:jest/recommended'], 27 | plugins: ['jest'], 28 | rules: { 29 | 'jest/no-disabled-tests': 'warn', 30 | 'jest/no-focused-tests': 'error', 31 | 'jest/no-identical-title': 'error', 32 | 'jest/prefer-to-have-length': 'warn', 33 | 'jest/valid-expect': 'error', 34 | }, 35 | }, 36 | ], 37 | }; 38 | -------------------------------------------------------------------------------- /server/middleware/transform.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const _ = require('lodash'); 4 | const { getPluginService } = require('../util/getPluginService'); 5 | 6 | const transform = async (strapi, ctx, next) => { 7 | const settings = getPluginService('settingsService').get(); 8 | 9 | // skip any requests that have ignore header 10 | const transformIgnoreHeader = _.get(ctx, ['headers', 'strapi-transformer-ignore'], 'false'); 11 | if (transformIgnoreHeader === 'true') { 12 | return next(); 13 | } 14 | 15 | // execute request transforms 16 | getPluginService('transformService').request(settings, ctx); 17 | 18 | await next(); 19 | 20 | // ensure body exists, occurs on non existent route 21 | if (!ctx.body) { 22 | return; 23 | } 24 | 25 | // ensure no error returned. 26 | if (!ctx.body.data) { 27 | return; 28 | } 29 | 30 | // execute response transforms 31 | settings.hooks.preResponseTransform(ctx); 32 | getPluginService('transformService').response(settings, ctx); 33 | settings.hooks.postResponseTransform(ctx); 34 | }; 35 | 36 | module.exports = { transform }; 37 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 @ComfortablyCoding 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /server/config/schema.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const yup = require('yup'); 4 | 5 | const pluginConfigSchema = yup.object().shape({ 6 | responseTransforms: yup.object().shape({ 7 | removeAttributesKey: yup.bool(), 8 | removeDataKey: yup.bool(), 9 | }), 10 | requestTransforms: yup.object().shape({ 11 | wrapBodyWithDataKey: yup.bool(), 12 | }), 13 | hooks: yup.object().shape({ 14 | preResponseTransform: yup.object().test({ 15 | name: 'preResponseTransform', 16 | exclusive: true, 17 | message: '${path} must be an object or function', 18 | test: (value) => typeof value === 'function', 19 | }), 20 | postResponseTransform: yup.object().test({ 21 | name: 'postResponseTransform', 22 | exclusive: true, 23 | message: '${path} must be an object or function', 24 | test: (value) => typeof value === 'function', 25 | }), 26 | }), 27 | contentTypeFilter: yup.object().shape({ 28 | mode: yup.string().oneOf(['allow', 'deny']), 29 | uids: yup.object(), 30 | }), 31 | plugins: yup.object().shape({ 32 | mode: yup.string().oneOf(['allow', 'deny']), 33 | ids: yup.object(), 34 | }), 35 | }); 36 | 37 | module.exports = { 38 | pluginConfigSchema, 39 | }; 40 | -------------------------------------------------------------------------------- /__tests__/request/wrap-body-with-data-key.spec.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const { wrapBodyWithDataKey } = require('../../server/services/transform-service/request'); 4 | const mock = require('../mock/request'); 5 | 6 | describe('wrapBodyWithDataKey', () => { 7 | test('non PUT or POST requests', () => { 8 | const getContextResult = mock.initial.nonMutationGETContext; 9 | wrapBodyWithDataKey(getContextResult); 10 | expect(getContextResult).toBeDefined(); 11 | expect(getContextResult).toEqual(mock.initial.nonMutationGETContext); 12 | 13 | const deleteContextResult = mock.initial.nonMutationDELETEContext; 14 | wrapBodyWithDataKey(deleteContextResult); 15 | expect(deleteContextResult).toBeDefined(); 16 | expect(deleteContextResult).toEqual(mock.initial.nonMutationDELETEContext); 17 | }); 18 | 19 | test('requests with no body', () => { 20 | const noBodyRequestContext = mock.initial.noBodyRequestContext; 21 | wrapBodyWithDataKey(noBodyRequestContext); 22 | expect(noBodyRequestContext).toBeDefined(); 23 | expect(noBodyRequestContext).toEqual(mock.initial.noBodyRequestContext); 24 | }); 25 | 26 | test('requests with only one top level data property', () => { 27 | const wrappedRequestContext = mock.initial.wrappedRequestContext; 28 | wrapBodyWithDataKey(wrappedRequestContext); 29 | expect(wrappedRequestContext).toBeDefined(); 30 | expect(wrappedRequestContext).toEqual(mock.initial.wrappedRequestContext); 31 | }); 32 | 33 | test('wrappable request', () => { 34 | const wrappableRequestContext = mock.initial.wrappableRequestContext; 35 | wrapBodyWithDataKey(wrappableRequestContext); 36 | expect(wrappableRequestContext).toBeDefined(); 37 | expect(wrappableRequestContext).toEqual(mock.wrapBodyWithDataKey.wrappableRequestContext); 38 | }); 39 | }); 40 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json.schemastore.org/package", 3 | "name": "strapi-plugin-transformer", 4 | "version": "3.1.2", 5 | "description": "A plugin for Strapi Headless CMS that provides the ability to transform the API request and/or response.", 6 | "scripts": { 7 | "lint": "eslint . --fix", 8 | "format": "prettier --write **/*.{ts,js,json,yml}", 9 | "test": "jest" 10 | }, 11 | "author": { 12 | "name": "@ComfortablyCoding", 13 | "url": "https://github.com/ComfortablyCoding" 14 | }, 15 | "maintainers": [ 16 | { 17 | "name": "@ComfortablyCoding", 18 | "url": "https://github.com/ComfortablyCoding" 19 | } 20 | ], 21 | "homepage": "https://github.com/ComfortablyCoding/strapi-plugin-transformer#readme", 22 | "repository": { 23 | "type": "git", 24 | "url": "https://github.com/ComfortablyCoding/strapi-plugin-transformer.git" 25 | }, 26 | "bugs": { 27 | "url": "https://github.com/ComfortablyCoding/strapi-plugin-transformer/issues" 28 | }, 29 | "dependencies": {}, 30 | "devDependencies": { 31 | "eslint": "^8.8.0", 32 | "eslint-config-prettier": "^8.3.0", 33 | "eslint-plugin-jest": "^26.1.1", 34 | "eslint-plugin-node": "^11.1.0", 35 | "jest": "^27.5.1", 36 | "prettier": "^2.5.1" 37 | }, 38 | "peerDependencies": { 39 | "@strapi/strapi": "^4.0.7", 40 | "lodash": "^4.17.21", 41 | "yup": "^0.32.9" 42 | }, 43 | "strapi": { 44 | "displayName": "Transformer", 45 | "description": "A plugin for Strapi Headless CMS that provides the ability to transform the API response.", 46 | "name": "transformer", 47 | "kind": "plugin" 48 | }, 49 | "engines": { 50 | "node": ">=14.19.1 <=20.x.x", 51 | "npm": ">=6.0.0" 52 | }, 53 | "keywords": [ 54 | "strapi", 55 | "strapi-plugin", 56 | "plugin", 57 | "strapi plugin", 58 | "transform", 59 | "response" 60 | ], 61 | "license": "MIT" 62 | } 63 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # From https://github.com/Danimoth/gitattributes/blob/master/Web.gitattributes 2 | 3 | # Handle line endings automatically for files detected as text 4 | # and leave all files detected as binary untouched. 5 | * text=auto 6 | 7 | # 8 | # The above will handle all files NOT found below 9 | # 10 | 11 | # 12 | ## These files are text and should be normalized (Convert crlf => lf) 13 | # 14 | 15 | # source code 16 | *.php text 17 | *.css text 18 | *.sass text 19 | *.scss text 20 | *.less text 21 | *.styl text 22 | *.js text eol=lf 23 | *.coffee text 24 | *.json text 25 | *.htm text 26 | *.html text 27 | *.xml text 28 | *.svg text 29 | *.txt text 30 | *.ini text 31 | *.inc text 32 | *.pl text 33 | *.rb text 34 | *.py text 35 | *.scm text 36 | *.sql text 37 | *.sh text 38 | *.bat text 39 | 40 | # templates 41 | *.ejs text 42 | *.hbt text 43 | *.jade text 44 | *.haml text 45 | *.hbs text 46 | *.dot text 47 | *.tmpl text 48 | *.phtml text 49 | 50 | # git config 51 | .gitattributes text 52 | .gitignore text 53 | .gitconfig text 54 | 55 | # code analysis config 56 | .jshintrc text 57 | .jscsrc text 58 | .jshintignore text 59 | .csslintrc text 60 | 61 | # misc config 62 | *.yaml text 63 | *.yml text 64 | .editorconfig text 65 | 66 | # build config 67 | *.npmignore text 68 | *.bowerrc text 69 | 70 | # Documentation 71 | *.md text 72 | LICENSE text 73 | AUTHORS text 74 | 75 | 76 | # 77 | ## These files are binary and should be left untouched 78 | # 79 | 80 | # (binary is a macro for -text -diff) 81 | *.png binary 82 | *.jpg binary 83 | *.jpeg binary 84 | *.gif binary 85 | *.ico binary 86 | *.mov binary 87 | *.mp4 binary 88 | *.mp3 binary 89 | *.flv binary 90 | *.fla binary 91 | *.swf binary 92 | *.gz binary 93 | *.zip binary 94 | *.7z binary 95 | *.ttf binary 96 | *.eot binary 97 | *.woff binary 98 | *.pyc binary 99 | *.pdf binary 100 | -------------------------------------------------------------------------------- /__tests__/response/remove-data.spec.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const { modifyResponseBodyData } = require('../../server/services/transform-service/response'); 4 | const { initial, removeDataKey } = require('../mock/response'); 5 | 6 | const transformOptions = { removeDataKey: true }; 7 | 8 | describe('removeDataKey', () => { 9 | // single relation 10 | test('object with data property of type object', () => { 11 | const result = modifyResponseBodyData(transformOptions, initial.dataObject); 12 | expect(result).toBeDefined(); 13 | expect(result).toEqual(removeDataKey.dataObject); 14 | }); 15 | 16 | test('object with data property of type null', () => { 17 | const result = modifyResponseBodyData(transformOptions, initial.dataWithNull); 18 | expect(result).toBeDefined(); 19 | expect(result).toEqual(removeDataKey.dataWithNull); 20 | }); 21 | 22 | // multiple relation 23 | test('object with data property of type array', () => { 24 | const result = modifyResponseBodyData(transformOptions, initial.dataArray); 25 | expect(result).toBeDefined(); 26 | expect(result).toEqual(removeDataKey.dataArray); 27 | }); 28 | 29 | test('object with data property of type array with no length', () => { 30 | const result = modifyResponseBodyData(transformOptions, initial.dataWithEmptyArray); 31 | expect(result).toBeDefined(); 32 | expect(result).toEqual(removeDataKey.dataWithEmptyArray); 33 | }); 34 | 35 | // single component 36 | test('object with id property', () => { 37 | const result = modifyResponseBodyData(transformOptions, initial.id); 38 | expect(result).toBeDefined(); 39 | expect(result).toEqual(removeDataKey.id); 40 | }); 41 | 42 | // multiple components 43 | // dynamic zone 44 | test('array of objects containing an id property', () => { 45 | const result = modifyResponseBodyData(transformOptions, initial.arrayWithIds); 46 | expect(result).toBeDefined(); 47 | expect(result).toEqual(removeDataKey.arrayWithIds); 48 | }); 49 | 50 | // skip single media 51 | test('object with provider property', () => { 52 | const result = modifyResponseBodyData(transformOptions, initial.provider); 53 | expect(result).toBeDefined(); 54 | expect(result).toEqual(removeDataKey.provider); 55 | }); 56 | 57 | // skip multi media 58 | test('array of objects containing a provider property', () => { 59 | const result = modifyResponseBodyData(transformOptions, initial.arrayWithProviders); 60 | expect(result).toBeDefined(); 61 | expect(result).toEqual(removeDataKey.arrayWithProviders); 62 | }); 63 | }); 64 | -------------------------------------------------------------------------------- /__tests__/response/remove-attributes.spec.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const { modifyResponseBodyData } = require('../../server/services/transform-service/response'); 4 | const { initial, removeAttributesKey } = require('../mock/response'); 5 | 6 | const transformOptions = { removeAttributesKey: true }; 7 | 8 | describe('removeAttributesKey', () => { 9 | // single relation 10 | test('object with data property of type object', () => { 11 | const result = modifyResponseBodyData(transformOptions, initial.dataObject); 12 | expect(result).toBeDefined(); 13 | expect(result).toEqual(removeAttributesKey.dataObject); 14 | }); 15 | 16 | test('object with data property of type null', () => { 17 | const result = modifyResponseBodyData(transformOptions, initial.dataWithNull); 18 | expect(result).toBeDefined(); 19 | expect(result).toEqual(removeAttributesKey.dataWithNull); 20 | }); 21 | 22 | // multiple relation 23 | test('object with data property of type array', () => { 24 | const result = modifyResponseBodyData(transformOptions, initial.dataArray); 25 | expect(result).toBeDefined(); 26 | expect(result).toEqual(removeAttributesKey.dataArray); 27 | }); 28 | 29 | test('object with data property of type array with no length', () => { 30 | const result = modifyResponseBodyData(transformOptions, initial.dataWithEmptyArray); 31 | expect(result).toBeDefined(); 32 | expect(result).toEqual(removeAttributesKey.dataWithEmptyArray); 33 | }); 34 | 35 | // single component 36 | test('object with id property', () => { 37 | const result = modifyResponseBodyData(transformOptions, initial.id); 38 | expect(result).toBeDefined(); 39 | expect(result).toEqual(removeAttributesKey.id); 40 | }); 41 | 42 | // multiple components 43 | // dynamic zone 44 | test('array of objects containing an id property', () => { 45 | const result = modifyResponseBodyData(transformOptions, initial.arrayWithIds); 46 | expect(result).toBeDefined(); 47 | expect(result).toEqual(removeAttributesKey.arrayWithIds); 48 | }); 49 | 50 | // skip single media 51 | test('object with provider property', () => { 52 | const result = modifyResponseBodyData(transformOptions, initial.provider); 53 | expect(result).toBeDefined(); 54 | expect(result).toEqual(removeAttributesKey.provider); 55 | }); 56 | 57 | // skip multi media 58 | test('array of objects containing a provider property', () => { 59 | const result = modifyResponseBodyData(transformOptions, initial.arrayWithProviders); 60 | expect(result).toBeDefined(); 61 | expect(result).toEqual(removeAttributesKey.arrayWithProviders); 62 | }); 63 | }); 64 | -------------------------------------------------------------------------------- /__tests__/response/all-response-transforms.spec.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const { modifyResponseBodyData } = require('../../server/services/transform-service/response'); 4 | const { initial, allResponseTransforms } = require('../mock/response'); 5 | 6 | const transformOptions = { removeAttributesKey: true, removeDataKey: true }; 7 | 8 | describe('All response transforms', () => { 9 | // single relation 10 | test('object with data property of type object', () => { 11 | const result = modifyResponseBodyData(transformOptions, initial.dataObject); 12 | expect(result).toBeDefined(); 13 | expect(result).toEqual(allResponseTransforms.dataObject); 14 | }); 15 | 16 | test('object with data property of type null', () => { 17 | const result = modifyResponseBodyData(transformOptions, initial.dataWithNull); 18 | expect(result).toBeDefined(); 19 | expect(result).toEqual(allResponseTransforms.dataWithNull); 20 | }); 21 | 22 | // multiple relation 23 | test('object with data property of type array', () => { 24 | const result = modifyResponseBodyData(transformOptions, initial.dataArray); 25 | expect(result).toBeDefined(); 26 | expect(result).toEqual(allResponseTransforms.dataArray); 27 | }); 28 | 29 | test('object with data property of type array with no length', () => { 30 | const result = modifyResponseBodyData(transformOptions, initial.dataWithEmptyArray); 31 | expect(result).toBeDefined(); 32 | expect(result).toEqual(allResponseTransforms.dataWithEmptyArray); 33 | }); 34 | 35 | // single component 36 | test('object with id property', () => { 37 | const result = modifyResponseBodyData(transformOptions, initial.id); 38 | expect(result).toBeDefined(); 39 | expect(result).toEqual(allResponseTransforms.id); 40 | }); 41 | 42 | // multiple components 43 | // dynamic zone 44 | test('array of objects containing an id property', () => { 45 | const result = modifyResponseBodyData(transformOptions, initial.arrayWithIds); 46 | expect(result).toBeDefined(); 47 | expect(result).toEqual(allResponseTransforms.arrayWithIds); 48 | }); 49 | 50 | // skip single media 51 | test('object with provider property', () => { 52 | const result = modifyResponseBodyData(transformOptions, initial.provider); 53 | expect(result).toBeDefined(); 54 | expect(result).toEqual(allResponseTransforms.provider); 55 | }); 56 | 57 | // skip multi media 58 | test('array of objects containing a provider property', () => { 59 | const result = modifyResponseBodyData(transformOptions, initial.arrayWithProviders); 60 | expect(result).toBeDefined(); 61 | expect(result).toEqual(allResponseTransforms.arrayWithProviders); 62 | }); 63 | }); 64 | -------------------------------------------------------------------------------- /server/services/transform-service/response.js: -------------------------------------------------------------------------------- 1 | const _ = require('lodash'); 2 | const { removeObjectKey } = require('./util'); 3 | 4 | /** 5 | * 6 | * @param {object} transforms 7 | * @param {boolean} transforms.removeAttributesKey 8 | * @param {boolean} transforms.removeDataKey 9 | * @param {object} ctx 10 | */ 11 | function transformResponse(transforms = {}, ctx) { 12 | // transform data 13 | if (transforms.removeAttributesKey || transforms.removeDataKey) { 14 | ctx.body.data = modifyResponseBodyData(transforms, ctx.body.data); 15 | } 16 | } 17 | 18 | /** 19 | * Modify the response body according to reponse transform settings 20 | * 21 | * @param {object} transforms 22 | * @param {boolean} transforms.removeAttributesKey 23 | * @param {boolean} transforms.removeDataKey 24 | * @param {object} data 25 | * @returns {object} transformed body data 26 | */ 27 | function modifyResponseBodyData(transforms = {}, data) { 28 | // removeAttributeKey specific transformations 29 | if (transforms.removeAttributesKey) { 30 | // single 31 | if (_.has(data, 'attributes')) { 32 | return modifyResponseBodyData(transforms, removeObjectKey(data, 'attributes')); 33 | } 34 | 35 | // collection 36 | if (_.isArray(data) && data.length && _.has(_.head(data), 'attributes')) { 37 | return data.map((e) => modifyResponseBodyData(transforms, e)); 38 | } 39 | } 40 | 41 | // fields 42 | _.forEach(data, (value, key) => { 43 | if (!value) { 44 | return; 45 | } 46 | 47 | // removeDataKey specific transformations 48 | if (transforms.removeDataKey) { 49 | // single 50 | if (_.isObject(value)) { 51 | data[key] = modifyResponseBodyData(transforms, value); 52 | } 53 | 54 | // many 55 | if (_.isArray(value)) { 56 | data[key] = value.map((field) => modifyResponseBodyData(transforms, field)); 57 | } 58 | } 59 | 60 | // relation(s) 61 | if (_.has(value, 'data')) { 62 | let relation = null; 63 | // single 64 | if (_.isObject(value.data)) { 65 | relation = modifyResponseBodyData(transforms, value.data); 66 | } 67 | 68 | // many 69 | if (_.isArray(value.data)) { 70 | relation = value.data.map((e) => modifyResponseBodyData(transforms, e)); 71 | } 72 | 73 | if (transforms.removeDataKey) { 74 | data[key] = relation; 75 | } else { 76 | data[key]['data'] = relation; 77 | } 78 | } 79 | 80 | // single component 81 | if (_.has(value, 'id')) { 82 | data[key] = modifyResponseBodyData(transforms, value); 83 | } 84 | 85 | // repeatable component & dynamic zone 86 | if (_.isArray(value) && _.has(_.head(value), 'id')) { 87 | data[key] = value.map((p) => modifyResponseBodyData(transforms, p)); 88 | } 89 | 90 | // single media 91 | if (_.has(value, 'provider')) { 92 | return; 93 | } 94 | 95 | // multi media 96 | if (_.isArray(value) && _.has(_.head(value), 'provider')) { 97 | return; 98 | } 99 | }); 100 | 101 | return data; 102 | } 103 | 104 | module.exports = { 105 | transformResponse, 106 | modifyResponseBodyData, 107 | }; 108 | -------------------------------------------------------------------------------- /server/register.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const _ = require('lodash'); 4 | 5 | const { transform } = require('./middleware/transform'); 6 | const { getPluginService } = require('./util/getPluginService'); 7 | 8 | function addTransformMiddleware(route) { 9 | // ensure path exists 10 | if (!_.has(route, ['config', 'middlewares'])) { 11 | _.set(route, ['config', 'middlewares'], []); 12 | } 13 | 14 | // register route middleware 15 | route.config.middlewares.push((ctx, next) => transform(strapi, ctx, next)); 16 | } 17 | 18 | function isAllowableAPI({ mode, uid, filterValues }) { 19 | // respect ct uid filter 20 | const filterUID = _.get(filterValues, [uid], false); 21 | if (mode === 'allow' && !filterUID && _.isBoolean(filterUID)) { 22 | return false; 23 | } else if (mode === 'deny' && filterUID && _.isBoolean(filterUID)) { 24 | return false; 25 | } 26 | 27 | return true; 28 | } 29 | 30 | function isAllowableMethod({ mode, uid, method, filterValues }) { 31 | // respect ct uid method filter 32 | const filterMethod = _.get(filterValues, [uid, method], null); 33 | if (mode === 'allow' && !filterMethod && _.isBoolean(filterMethod)) { 34 | return false; 35 | } else if (mode === 'deny' && filterMethod && _.isBoolean(filterMethod)) { 36 | return false; 37 | } 38 | 39 | return true; 40 | } 41 | 42 | function register({ strapi }) { 43 | const settings = getPluginService('settingsService').get(); 44 | let ctFilterMode = _.get(settings, ['contentTypeFilter', 'mode'], 'none'); 45 | let pluginFilterMode = _.get(settings, ['plugins', 'mode'], 'allow'); 46 | const ctFilterUIDs = _.get(settings, ['contentTypeFilter', 'uids'], {}); 47 | const pluginFilterIDs = _.get(settings, ['plugins', 'ids'], {}); 48 | const apiTypes = ['api']; 49 | 50 | // default uid list to all apis 51 | if (_.size(ctFilterUIDs) === 0) { 52 | ctFilterMode = 'none'; 53 | } 54 | 55 | // default plugins list to none 56 | if (_.size(pluginFilterIDs) !== 0) { 57 | apiTypes.push('plugins'); 58 | } 59 | 60 | _.forEach(apiTypes, (apiType) => { 61 | const mode = apiType === 'api' ? ctFilterMode : pluginFilterMode; 62 | const filterValues = apiType === 'api' ? ctFilterUIDs : pluginFilterIDs; 63 | _.forEach(strapi[apiType], (api, apiName) => { 64 | const uid = _.get(api, ['contentTypes', apiName, 'uid'], apiName); 65 | if (!isAllowableAPI({ uid, mode, filterValues })) { 66 | return; 67 | } 68 | 69 | _.forEach(api.routes, (router) => { 70 | // skip admin routes 71 | if (router.type && router.type === 'admin') { 72 | return; 73 | } 74 | 75 | if (router.routes) { 76 | // process routes 77 | _.forEach(router.routes, (route) => { 78 | if (!isAllowableMethod({ uid, mode, filterValues, method: route.method })) { 79 | return; 80 | } 81 | 82 | addTransformMiddleware(route); 83 | }); 84 | return; 85 | } 86 | 87 | if (!isAllowableMethod({ uid, mode, filterValues, method: router.method })) { 88 | return; 89 | } 90 | 91 | // process route 92 | addTransformMiddleware(router); 93 | }); 94 | }); 95 | }); 96 | } 97 | 98 | module.exports = register; 99 | -------------------------------------------------------------------------------- /__tests__/mock/response/all-response-transforms.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports = { 4 | attribute: { 5 | id: 1, 6 | title: 'Lorem', 7 | createdAt: '2022-02-14T02:58:35.291Z', 8 | updatedAt: '2022-02-16T01:25:00.014Z', 9 | publishedAt: '2022-02-16T01:25:00.012Z', 10 | }, 11 | arrayWithAttributes: [ 12 | { 13 | id: 1, 14 | title: 'Lorem', 15 | createdAt: '2022-02-17T00:07:40.318Z', 16 | updatedAt: '2022-02-17T04:59:39.055Z', 17 | publishedAt: '2022-02-17T00:07:42.124Z', 18 | }, 19 | { 20 | id: 2, 21 | title: 'Ispum', 22 | createdAt: '2022-02-17T01:50:14.909Z', 23 | updatedAt: '2022-02-18T01:12:39.781Z', 24 | publishedAt: '2022-02-18T01:12:39.779Z', 25 | }, 26 | ], 27 | dataObject: { 28 | id: 1, 29 | title: 'Lorem', 30 | createdAt: '2022-02-17T00:29:00.833Z', 31 | updatedAt: '2022-02-17T00:29:03.988Z', 32 | publishedAt: '2022-02-17T00:29:03.986Z', 33 | singleRelation: { 34 | id: 1, 35 | title: 'Ipsum', 36 | createdAt: '2022-02-15T03:45:32.669Z', 37 | updatedAt: '2022-02-17T00:30:02.573Z', 38 | publishedAt: '2022-02-17T00:07:49.491Z', 39 | }, 40 | }, 41 | dataArray: { 42 | id: 1, 43 | title: 'Lorem', 44 | createdAt: '2022-02-15T03:45:32.669Z', 45 | updatedAt: '2022-02-17T00:30:02.573Z', 46 | publishedAt: '2022-02-17T00:07:49.491Z', 47 | manyRelation: [ 48 | { 49 | id: 2, 50 | title: 'Ipsum', 51 | createdAt: '2022-02-14T02:57:55.918Z', 52 | updatedAt: '2022-02-17T00:09:17.360Z', 53 | publishedAt: '2022-02-17T00:09:13.399Z', 54 | }, 55 | { 56 | id: 3, 57 | title: 'Dolor', 58 | createdAt: '2022-02-17T00:29:16.890Z', 59 | updatedAt: '2022-02-18T00:56:28.909Z', 60 | publishedAt: '2022-02-17T00:29:17.874Z', 61 | }, 62 | ], 63 | }, 64 | dataWithNull: { 65 | id: 1, 66 | title: 'Lorem', 67 | createdAt: '2022-02-17T00:29:00.833Z', 68 | updatedAt: '2022-02-17T00:29:03.988Z', 69 | publishedAt: '2022-02-17T00:29:03.986Z', 70 | singleRelation: null, 71 | }, 72 | dataWithEmptyArray: { 73 | id: 1, 74 | title: 'Lorem', 75 | createdAt: '2022-02-15T03:45:32.669Z', 76 | updatedAt: '2022-02-17T00:30:02.573Z', 77 | publishedAt: '2022-02-17T00:07:49.491Z', 78 | manyRelation: [], 79 | }, 80 | id: { 81 | id: 1, 82 | title: 'Lorem', 83 | createdAt: '2022-02-17T00:29:16.890Z', 84 | updatedAt: '2022-02-18T00:56:28.909Z', 85 | publishedAt: '2022-02-17T00:29:17.874Z', 86 | singleComponent: { 87 | id: 2, 88 | title: 'Ipsum', 89 | singleRelation: { 90 | id: 3, 91 | title: 'Dolor', 92 | }, 93 | }, 94 | }, 95 | arrayWithIds: { 96 | id: 1, 97 | title: 'Lorem', 98 | createdAt: '2022-02-17T00:29:16.890Z', 99 | updatedAt: '2022-02-18T00:56:28.909Z', 100 | publishedAt: '2022-02-17T00:29:17.874Z', 101 | repeatableComponent: [ 102 | { 103 | id: 2, 104 | title: 'Ipsum', 105 | singleRelation: { 106 | id: 3, 107 | title: 'Dolor', 108 | }, 109 | }, 110 | { 111 | id: 4, 112 | title: 'Sat', 113 | manyRelation: [ 114 | { 115 | id: 5, 116 | title: 'Amet', 117 | }, 118 | { 119 | id: 6, 120 | title: 'consectetur', 121 | }, 122 | ], 123 | }, 124 | ], 125 | }, 126 | provider: { 127 | id: 1, 128 | title: 'Lorem', 129 | createdAt: '2022-02-17T01:50:38.599Z', 130 | updatedAt: '2022-02-18T02:05:56.635Z', 131 | publishedAt: '2022-02-18T02:05:56.628Z', 132 | singleMedia: { 133 | id: 2, 134 | provider: 'local', 135 | }, 136 | }, 137 | arrayWithProviders: { 138 | id: 1, 139 | title: 'Lorem', 140 | createdAt: '2022-02-17T01:50:38.599Z', 141 | updatedAt: '2022-02-18T02:05:56.635Z', 142 | publishedAt: '2022-02-18T02:05:56.628Z', 143 | multiMedia: [ 144 | { 145 | id: 2, 146 | provider: 'local', 147 | }, 148 | { 149 | id: 3, 150 | provider: 'local', 151 | }, 152 | ], 153 | }, 154 | }; 155 | -------------------------------------------------------------------------------- /__tests__/mock/response/remove-attributes.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports = { 4 | attribute: { 5 | id: 1, 6 | title: 'Lorem', 7 | createdAt: '2022-02-14T02:58:35.291Z', 8 | updatedAt: '2022-02-16T01:25:00.014Z', 9 | publishedAt: '2022-02-16T01:25:00.012Z', 10 | }, 11 | arrayWithAttributes: [ 12 | { 13 | id: 1, 14 | title: 'Lorem', 15 | createdAt: '2022-02-17T00:07:40.318Z', 16 | updatedAt: '2022-02-17T04:59:39.055Z', 17 | publishedAt: '2022-02-17T00:07:42.124Z', 18 | }, 19 | { 20 | id: 2, 21 | title: 'Ispum', 22 | createdAt: '2022-02-17T01:50:14.909Z', 23 | updatedAt: '2022-02-18T01:12:39.781Z', 24 | publishedAt: '2022-02-18T01:12:39.779Z', 25 | }, 26 | ], 27 | dataObject: { 28 | id: 1, 29 | title: 'Lorem', 30 | createdAt: '2022-02-17T00:29:00.833Z', 31 | updatedAt: '2022-02-17T00:29:03.988Z', 32 | publishedAt: '2022-02-17T00:29:03.986Z', 33 | singleRelation: { 34 | data: { 35 | id: 1, 36 | title: 'Ipsum', 37 | createdAt: '2022-02-15T03:45:32.669Z', 38 | updatedAt: '2022-02-17T00:30:02.573Z', 39 | publishedAt: '2022-02-17T00:07:49.491Z', 40 | }, 41 | }, 42 | }, 43 | dataArray: { 44 | id: 1, 45 | title: 'Lorem', 46 | createdAt: '2022-02-15T03:45:32.669Z', 47 | updatedAt: '2022-02-17T00:30:02.573Z', 48 | publishedAt: '2022-02-17T00:07:49.491Z', 49 | manyRelation: { 50 | data: [ 51 | { 52 | id: 2, 53 | title: 'Ipsum', 54 | createdAt: '2022-02-14T02:57:55.918Z', 55 | updatedAt: '2022-02-17T00:09:17.360Z', 56 | publishedAt: '2022-02-17T00:09:13.399Z', 57 | }, 58 | { 59 | id: 3, 60 | title: 'Dolor', 61 | createdAt: '2022-02-17T00:29:16.890Z', 62 | updatedAt: '2022-02-18T00:56:28.909Z', 63 | publishedAt: '2022-02-17T00:29:17.874Z', 64 | }, 65 | ], 66 | }, 67 | }, 68 | dataWithNull: { 69 | id: 1, 70 | title: 'Lorem', 71 | createdAt: '2022-02-17T00:29:00.833Z', 72 | updatedAt: '2022-02-17T00:29:03.988Z', 73 | publishedAt: '2022-02-17T00:29:03.986Z', 74 | singleRelation: { 75 | data: null, 76 | }, 77 | }, 78 | dataWithEmptyArray: { 79 | id: 1, 80 | title: 'Lorem', 81 | createdAt: '2022-02-15T03:45:32.669Z', 82 | updatedAt: '2022-02-17T00:30:02.573Z', 83 | publishedAt: '2022-02-17T00:07:49.491Z', 84 | manyRelation: { 85 | data: [], 86 | }, 87 | }, 88 | id: { 89 | id: 1, 90 | title: 'Lorem', 91 | createdAt: '2022-02-17T00:29:16.890Z', 92 | updatedAt: '2022-02-18T00:56:28.909Z', 93 | publishedAt: '2022-02-17T00:29:17.874Z', 94 | singleComponent: { 95 | id: 2, 96 | title: 'Ipsum', 97 | singleRelation: { 98 | data: { 99 | id: 3, 100 | title: 'Dolor', 101 | }, 102 | }, 103 | }, 104 | }, 105 | arrayWithIds: { 106 | id: 1, 107 | title: 'Lorem', 108 | createdAt: '2022-02-17T00:29:16.890Z', 109 | updatedAt: '2022-02-18T00:56:28.909Z', 110 | publishedAt: '2022-02-17T00:29:17.874Z', 111 | repeatableComponent: [ 112 | { 113 | id: 2, 114 | title: 'Ipsum', 115 | singleRelation: { 116 | data: { 117 | id: 3, 118 | title: 'Dolor', 119 | }, 120 | }, 121 | }, 122 | { 123 | id: 4, 124 | title: 'Sat', 125 | manyRelation: { 126 | data: [ 127 | { 128 | id: 5, 129 | title: 'Amet', 130 | }, 131 | { 132 | id: 6, 133 | title: 'consectetur', 134 | }, 135 | ], 136 | }, 137 | }, 138 | ], 139 | }, 140 | provider: { 141 | id: 1, 142 | title: 'Lorem', 143 | createdAt: '2022-02-17T01:50:38.599Z', 144 | updatedAt: '2022-02-18T02:05:56.635Z', 145 | publishedAt: '2022-02-18T02:05:56.628Z', 146 | singleMedia: { 147 | data: { 148 | id: 2, 149 | provider: 'local', 150 | }, 151 | }, 152 | }, 153 | arrayWithProviders: { 154 | id: 1, 155 | title: 'Lorem', 156 | createdAt: '2022-02-17T01:50:38.599Z', 157 | updatedAt: '2022-02-18T02:05:56.635Z', 158 | publishedAt: '2022-02-18T02:05:56.628Z', 159 | multiMedia: { 160 | data: [ 161 | { 162 | id: 2, 163 | provider: 'local', 164 | }, 165 | { 166 | id: 3, 167 | provider: 'local', 168 | }, 169 | ], 170 | }, 171 | }, 172 | }; 173 | -------------------------------------------------------------------------------- /__tests__/mock/response/remove-data.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports = { 4 | attribute: { 5 | id: 1, 6 | attributes: { 7 | title: 'Lorem', 8 | createdAt: '2022-02-14T02:58:35.291Z', 9 | updatedAt: '2022-02-16T01:25:00.014Z', 10 | publishedAt: '2022-02-16T01:25:00.012Z', 11 | }, 12 | }, 13 | arrayWithAttributes: [ 14 | { 15 | id: 1, 16 | attributes: { 17 | title: 'Lorem', 18 | createdAt: '2022-02-17T00:07:40.318Z', 19 | updatedAt: '2022-02-17T04:59:39.055Z', 20 | publishedAt: '2022-02-17T00:07:42.124Z', 21 | }, 22 | }, 23 | { 24 | id: 2, 25 | attributes: { 26 | title: 'Ispum', 27 | createdAt: '2022-02-17T01:50:14.909Z', 28 | updatedAt: '2022-02-18T01:12:39.781Z', 29 | publishedAt: '2022-02-18T01:12:39.779Z', 30 | }, 31 | }, 32 | ], 33 | dataObject: { 34 | id: 1, 35 | attributes: { 36 | title: 'Lorem', 37 | createdAt: '2022-02-17T00:29:00.833Z', 38 | updatedAt: '2022-02-17T00:29:03.988Z', 39 | publishedAt: '2022-02-17T00:29:03.986Z', 40 | singleRelation: { 41 | id: 1, 42 | attributes: { 43 | title: 'Ipsum', 44 | createdAt: '2022-02-15T03:45:32.669Z', 45 | updatedAt: '2022-02-17T00:30:02.573Z', 46 | publishedAt: '2022-02-17T00:07:49.491Z', 47 | }, 48 | }, 49 | }, 50 | }, 51 | dataArray: { 52 | id: 1, 53 | attributes: { 54 | title: 'Lorem', 55 | createdAt: '2022-02-15T03:45:32.669Z', 56 | updatedAt: '2022-02-17T00:30:02.573Z', 57 | publishedAt: '2022-02-17T00:07:49.491Z', 58 | manyRelation: [ 59 | { 60 | id: 2, 61 | attributes: { 62 | title: 'Ipsum', 63 | createdAt: '2022-02-14T02:57:55.918Z', 64 | updatedAt: '2022-02-17T00:09:17.360Z', 65 | publishedAt: '2022-02-17T00:09:13.399Z', 66 | }, 67 | }, 68 | { 69 | id: 3, 70 | attributes: { 71 | title: 'Dolor', 72 | createdAt: '2022-02-17T00:29:16.890Z', 73 | updatedAt: '2022-02-18T00:56:28.909Z', 74 | publishedAt: '2022-02-17T00:29:17.874Z', 75 | }, 76 | }, 77 | ], 78 | }, 79 | }, 80 | dataWithNull: { 81 | id: 1, 82 | attributes: { 83 | title: 'Lorem', 84 | createdAt: '2022-02-17T00:29:00.833Z', 85 | updatedAt: '2022-02-17T00:29:03.988Z', 86 | publishedAt: '2022-02-17T00:29:03.986Z', 87 | singleRelation: null, 88 | }, 89 | }, 90 | dataWithEmptyArray: { 91 | id: 1, 92 | attributes: { 93 | title: 'Lorem', 94 | createdAt: '2022-02-15T03:45:32.669Z', 95 | updatedAt: '2022-02-17T00:30:02.573Z', 96 | publishedAt: '2022-02-17T00:07:49.491Z', 97 | manyRelation: [], 98 | }, 99 | }, 100 | id: { 101 | id: 1, 102 | attributes: { 103 | title: 'Lorem', 104 | createdAt: '2022-02-17T00:29:16.890Z', 105 | updatedAt: '2022-02-18T00:56:28.909Z', 106 | publishedAt: '2022-02-17T00:29:17.874Z', 107 | singleComponent: { 108 | id: 2, 109 | title: 'Ipsum', 110 | singleRelation: { 111 | id: 3, 112 | attributes: { 113 | title: 'Dolor', 114 | }, 115 | }, 116 | }, 117 | }, 118 | }, 119 | arrayWithIds: { 120 | id: 1, 121 | attributes: { 122 | title: 'Lorem', 123 | createdAt: '2022-02-17T00:29:16.890Z', 124 | updatedAt: '2022-02-18T00:56:28.909Z', 125 | publishedAt: '2022-02-17T00:29:17.874Z', 126 | repeatableComponent: [ 127 | { 128 | id: 2, 129 | title: 'Ipsum', 130 | singleRelation: { 131 | id: 3, 132 | attributes: { 133 | title: 'Dolor', 134 | }, 135 | }, 136 | }, 137 | { 138 | id: 4, 139 | title: 'Sat', 140 | manyRelation: [ 141 | { 142 | id: 5, 143 | attributes: { 144 | title: 'Amet', 145 | }, 146 | }, 147 | { 148 | id: 6, 149 | attributes: { 150 | title: 'consectetur', 151 | }, 152 | }, 153 | ], 154 | }, 155 | ], 156 | }, 157 | }, 158 | provider: { 159 | id: 1, 160 | attributes: { 161 | title: 'Lorem', 162 | createdAt: '2022-02-17T01:50:38.599Z', 163 | updatedAt: '2022-02-18T02:05:56.635Z', 164 | publishedAt: '2022-02-18T02:05:56.628Z', 165 | singleMedia: { 166 | id: 2, 167 | attributes: { 168 | provider: 'local', 169 | }, 170 | }, 171 | }, 172 | }, 173 | arrayWithProviders: { 174 | id: 1, 175 | attributes: { 176 | title: 'Lorem', 177 | createdAt: '2022-02-17T01:50:38.599Z', 178 | updatedAt: '2022-02-18T02:05:56.635Z', 179 | publishedAt: '2022-02-18T02:05:56.628Z', 180 | multiMedia: [ 181 | { 182 | id: 2, 183 | attributes: { 184 | provider: 'local', 185 | }, 186 | }, 187 | { 188 | id: 3, 189 | attributes: { 190 | provider: 'local', 191 | }, 192 | }, 193 | ], 194 | }, 195 | }, 196 | }; 197 | -------------------------------------------------------------------------------- /__tests__/mock/response/initial.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports = { 4 | attribute: { 5 | id: 1, 6 | attributes: { 7 | title: 'Lorem', 8 | createdAt: '2022-02-14T02:58:35.291Z', 9 | updatedAt: '2022-02-16T01:25:00.014Z', 10 | publishedAt: '2022-02-16T01:25:00.012Z', 11 | }, 12 | }, 13 | arrayWithAttributes: [ 14 | { 15 | id: 1, 16 | attributes: { 17 | title: 'Lorem', 18 | createdAt: '2022-02-17T00:07:40.318Z', 19 | updatedAt: '2022-02-17T04:59:39.055Z', 20 | publishedAt: '2022-02-17T00:07:42.124Z', 21 | }, 22 | }, 23 | { 24 | id: 2, 25 | attributes: { 26 | title: 'Ispum', 27 | createdAt: '2022-02-17T01:50:14.909Z', 28 | updatedAt: '2022-02-18T01:12:39.781Z', 29 | publishedAt: '2022-02-18T01:12:39.779Z', 30 | }, 31 | }, 32 | ], 33 | dataObject: { 34 | id: 1, 35 | attributes: { 36 | title: 'Lorem', 37 | createdAt: '2022-02-17T00:29:00.833Z', 38 | updatedAt: '2022-02-17T00:29:03.988Z', 39 | publishedAt: '2022-02-17T00:29:03.986Z', 40 | singleRelation: { 41 | data: { 42 | id: 1, 43 | attributes: { 44 | title: 'Ipsum', 45 | createdAt: '2022-02-15T03:45:32.669Z', 46 | updatedAt: '2022-02-17T00:30:02.573Z', 47 | publishedAt: '2022-02-17T00:07:49.491Z', 48 | }, 49 | }, 50 | }, 51 | }, 52 | }, 53 | dataArray: { 54 | id: 1, 55 | attributes: { 56 | title: 'Lorem', 57 | createdAt: '2022-02-15T03:45:32.669Z', 58 | updatedAt: '2022-02-17T00:30:02.573Z', 59 | publishedAt: '2022-02-17T00:07:49.491Z', 60 | manyRelation: { 61 | data: [ 62 | { 63 | id: 2, 64 | attributes: { 65 | title: 'Ipsum', 66 | createdAt: '2022-02-14T02:57:55.918Z', 67 | updatedAt: '2022-02-17T00:09:17.360Z', 68 | publishedAt: '2022-02-17T00:09:13.399Z', 69 | }, 70 | }, 71 | { 72 | id: 3, 73 | attributes: { 74 | title: 'Dolor', 75 | createdAt: '2022-02-17T00:29:16.890Z', 76 | updatedAt: '2022-02-18T00:56:28.909Z', 77 | publishedAt: '2022-02-17T00:29:17.874Z', 78 | }, 79 | }, 80 | ], 81 | }, 82 | }, 83 | }, 84 | dataWithNull: { 85 | id: 1, 86 | attributes: { 87 | title: 'Lorem', 88 | createdAt: '2022-02-17T00:29:00.833Z', 89 | updatedAt: '2022-02-17T00:29:03.988Z', 90 | publishedAt: '2022-02-17T00:29:03.986Z', 91 | singleRelation: { 92 | data: null, 93 | }, 94 | }, 95 | }, 96 | dataWithEmptyArray: { 97 | id: 1, 98 | attributes: { 99 | title: 'Lorem', 100 | createdAt: '2022-02-15T03:45:32.669Z', 101 | updatedAt: '2022-02-17T00:30:02.573Z', 102 | publishedAt: '2022-02-17T00:07:49.491Z', 103 | manyRelation: { 104 | data: [], 105 | }, 106 | }, 107 | }, 108 | id: { 109 | id: 1, 110 | attributes: { 111 | title: 'Lorem', 112 | createdAt: '2022-02-17T00:29:16.890Z', 113 | updatedAt: '2022-02-18T00:56:28.909Z', 114 | publishedAt: '2022-02-17T00:29:17.874Z', 115 | singleComponent: { 116 | id: 2, 117 | title: 'Ipsum', 118 | singleRelation: { 119 | data: { 120 | id: 3, 121 | attributes: { 122 | title: 'Dolor', 123 | }, 124 | }, 125 | }, 126 | }, 127 | }, 128 | }, 129 | arrayWithIds: { 130 | id: 1, 131 | attributes: { 132 | title: 'Lorem', 133 | createdAt: '2022-02-17T00:29:16.890Z', 134 | updatedAt: '2022-02-18T00:56:28.909Z', 135 | publishedAt: '2022-02-17T00:29:17.874Z', 136 | repeatableComponent: [ 137 | { 138 | id: 2, 139 | title: 'Ipsum', 140 | singleRelation: { 141 | data: { 142 | id: 3, 143 | attributes: { 144 | title: 'Dolor', 145 | }, 146 | }, 147 | }, 148 | }, 149 | { 150 | id: 4, 151 | title: 'Sat', 152 | manyRelation: { 153 | data: [ 154 | { 155 | id: 5, 156 | attributes: { 157 | title: 'Amet', 158 | }, 159 | }, 160 | { 161 | id: 6, 162 | attributes: { 163 | title: 'consectetur', 164 | }, 165 | }, 166 | ], 167 | }, 168 | }, 169 | ], 170 | }, 171 | }, 172 | provider: { 173 | id: 1, 174 | attributes: { 175 | title: 'Lorem', 176 | createdAt: '2022-02-17T01:50:38.599Z', 177 | updatedAt: '2022-02-18T02:05:56.635Z', 178 | publishedAt: '2022-02-18T02:05:56.628Z', 179 | singleMedia: { 180 | data: { 181 | id: 2, 182 | attributes: { 183 | provider: 'local', 184 | }, 185 | }, 186 | }, 187 | }, 188 | }, 189 | arrayWithProviders: { 190 | id: 1, 191 | attributes: { 192 | title: 'Lorem', 193 | createdAt: '2022-02-17T01:50:38.599Z', 194 | updatedAt: '2022-02-18T02:05:56.635Z', 195 | publishedAt: '2022-02-18T02:05:56.628Z', 196 | multiMedia: { 197 | data: [ 198 | { 199 | id: 2, 200 | attributes: { 201 | provider: 'local', 202 | }, 203 | }, 204 | { 205 | id: 3, 206 | attributes: { 207 | provider: 'local', 208 | }, 209 | }, 210 | ], 211 | }, 212 | }, 213 | }, 214 | }; 215 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # strapi-plugin-transformer 2 | 3 | > [!CAUTION] 4 | > **This plugin has been deprecated.** 5 | > 6 | > Starting from Strapi v5 [the response structure has been flattened by default](https://docs.strapi.io/cms/migration/v4-to-v5/breaking-changes/new-response-format). 7 | > 8 | > For other request or response transformations please use [Document Service Middlewares](https://docs.strapi.io/cms/api/document-service/middlewares), or [extend your controllers](https://docs.strapi.io/cms/backend-customization/controllers#extending-core-controllers). 9 | 10 | A plugin for [Strapi](https://github.com/strapi/strapi) that provides the ability to transform the API request and/or response. 11 | 12 | [![Downloads](https://img.shields.io/npm/dm/strapi-plugin-transformer?style=for-the-badge)](https://img.shields.io/npm/dm/strapi-plugin-transformer?style=for-the-badge) 13 | [![Install size](https://img.shields.io/npm/l/strapi-plugin-transformer?style=for-the-badge)](https://img.shields.io/npm/l/strapi-plugin-transformer?style=for-the-badge) 14 | [![Package version](https://img.shields.io/github/v/release/ComfortablyCoding/strapi-plugin-transformer?style=for-the-badge)](https://img.shields.io/github/v/release/ComfortablyCoding/strapi-plugin-transformer?style=for-the-badge) 15 | 16 | ## Requirements 17 | 18 | The installation requirements are the same as Strapi itself and can be found in the documentation on the [Quick Start](https://strapi.io/documentation/developer-docs/latest/getting-started/quick-start.html) page in the Prerequisites info card. 19 | 20 | ### Support 21 | 22 | **IMPORTANT**: GraphQL is not supported, see [#23](https://github.com/ComfortablyCoding/strapi-plugin-transformer/issues/23) and [#13](https://github.com/ComfortablyCoding/strapi-plugin-transformer/discussions/13) for additional context. 23 | 24 | #### Strapi versions 25 | 26 | - v4.x.x 27 | 28 | **NOTE**: While this plugin may work with the older Strapi versions, they are not supported, it is always recommended to use the latest version of Strapi. 29 | 30 | ## Installation 31 | 32 | ```sh 33 | npm install strapi-plugin-transformer 34 | 35 | # OR 36 | 37 | yarn add strapi-plugin-transformer 38 | ``` 39 | 40 | ## Configuration 41 | 42 | The plugin configuration is stored in a config file located at `./config/plugins.js`. If this file doesn't exist, you will need to create it. 43 | 44 | ### Minimal Configuration 45 | 46 | 47 | ```javascript 48 | module.exports = ({ env }) => ({ 49 | // .. 50 | 'transformer': { 51 | enabled: true, 52 | config: {} 53 | }, 54 | // .. 55 | }); 56 | ``` 57 | 58 | ### Sample configuration 59 | 60 | ```javascript 61 | module.exports = ({ env }) => ({ 62 | // .. 63 | 'transformer': { 64 | enabled: true, 65 | config: { 66 | responseTransforms: { 67 | removeAttributesKey: true, 68 | removeDataKey: true, 69 | }, 70 | requestTransforms : { 71 | wrapBodyWithDataKey: true 72 | }, 73 | hooks: { 74 | preResponseTransform : (ctx) => console.log('hello from the preResponseTransform hook!'), 75 | postResponseTransform : (ctx) => console.log('hello from the postResponseTransform hook!') 76 | }, 77 | contentTypeFilter: { 78 | mode: 'allow', 79 | uids: { 80 | 'api::article.article': true, 81 | 'api::category.category': { 82 | 'GET':true, 83 | } 84 | } 85 | }, 86 | plugins: { 87 | ids: { 88 | 'slugify': true, 89 | } 90 | } 91 | } 92 | }, 93 | // .. 94 | }); 95 | ``` 96 | 97 | **IMPORTANT NOTE**: Make sure any sensitive data is stored in env files. 98 | 99 | ### The Complete Plugin Configuration Object 100 | 101 | | Property | Description | Type | Default | Required | 102 | | -------- | ----------- | ---- | ------- | -------- | 103 | | responseTransforms | The transformations to enable for the API response | Object | N/A | No | 104 | | responseTransforms.removeAttributesKey | Removes the attributes key from the response | Boolean | false | No | 105 | | responseTransforms.removeDataKey | Removes the data key from the response | Boolean | false | No | 106 | | requestTransforms | The transformations to enable for an API request | Object | N/A | No | 107 | | requestTransforms.wrapBodyWithDataKey | Auto wraps the body of PUT and POST requests with a data key | Boolean | false | No | 108 | | hooks | The hooks to enable for the plugin | Object | N/A | No | 109 | | hooks.preResponseTransform | A hook that executes before the Response Transforms are applied | Function | () => {} | No | 110 | | hooks.postResponseTransform | A hook that executes after the Response Transforms are applied | Function | () => {} | No | 111 | | contentTypeFilter | The content types to deny or allow the middleware to be registered on. Defaults to allow all content types | Object | N/A | No | 112 | | contentTypeFilter.mode | The filter mode. The current supported modes are `none`, `allow` or `deny` | String | 'none' | No | 113 | | contentTypeFilter.uids | The uids to filter | Object | {} | No | 114 | | plugins | The plugins to deny or allow the middleware to be registered on. Defaults to deny all plugins | Object | N/A | No | 115 | | plugins.mode | The filter mode. The current supported modes are `none`, `allow` or `deny` | String | 'none' | No | 116 | | plugins.ids | The plugin ids to filter. The plugin id is the name you set in the `plugins.js` file | Object | {} | No | 117 | ## Usage 118 | 119 | Once the plugin has been installed, configured and enabled any request to the Strapi API will be auto transformed. 120 | 121 | ## Current Supported Transformations 122 | 123 | ### Remove the attributes key 124 | 125 | This response transform will remove the attributes key from the response and shift all of its properties up one level. 126 | 127 | #### Before 128 | 129 | ```json 130 | { 131 | "data": { 132 | "id": 1, 133 | "attributes": { 134 | "title": "Lorem Ipsum", 135 | "createdAt": "2022-02-11T01:51:49.902Z", 136 | "updatedAt": "2022-02-11T01:51:52.797Z", 137 | "publishedAt": "2022-02-11T01:51:52.794Z", 138 | "ipsum": { 139 | "data": { 140 | "id": 2, 141 | "attributes": { 142 | "title": "Dolor sat", 143 | "createdAt": "2022-02-15T03:45:32.669Z", 144 | "updatedAt": "2022-02-17T00:30:02.573Z", 145 | "publishedAt": "2022-02-17T00:07:49.491Z", 146 | }, 147 | }, 148 | }, 149 | }, 150 | }, 151 | "meta": {}, 152 | } 153 | ``` 154 | 155 | #### After 156 | 157 | ```json 158 | { 159 | "data": { 160 | "id": 1, 161 | "title": "Lorem Ipsum", 162 | "createdAt": "2022-02-11T01:51:49.902Z", 163 | "updatedAt": "2022-02-11T01:51:52.797Z", 164 | "publishedAt": "2022-02-11T01:51:52.794Z", 165 | "ipsum": { 166 | "data": { 167 | "id": 2, 168 | "title": "Dolor sat", 169 | "createdAt": "2022-02-15T03:45:32.669Z", 170 | "updatedAt": "2022-02-17T00:30:02.573Z", 171 | "publishedAt": "2022-02-17T00:07:49.491Z", 172 | }, 173 | }, 174 | }, 175 | "meta": {}, 176 | } 177 | ``` 178 | 179 | ### Remove the data key 180 | 181 | This response transform will remove the data key from the response and shift the attribute data to be top level. 182 | 183 | #### Before 184 | 185 | ```json 186 | { 187 | "data": { 188 | "id": 1, 189 | "attributes": { 190 | "title": "Lorem Ipsum", 191 | "createdAt": "2022-02-11T01:51:49.902Z", 192 | "updatedAt": "2022-02-11T01:51:52.797Z", 193 | "publishedAt": "2022-02-11T01:51:52.794Z", 194 | "ipsum": { 195 | "data": { 196 | "id":2, 197 | "attributes": { 198 | "title": "Dolor sat", 199 | "createdAt": "2022-02-15T03:45:32.669Z", 200 | "updatedAt": "2022-02-17T00:30:02.573Z", 201 | "publishedAt": "2022-02-17T00:07:49.491Z", 202 | }, 203 | }, 204 | }, 205 | }, 206 | }, 207 | "meta": {}, 208 | } 209 | ``` 210 | 211 | #### After 212 | 213 | ```json 214 | { 215 | "data": { 216 | "id": 1, 217 | "attributes": { 218 | "title": "Lorem Ipsum", 219 | "createdAt": "2022-02-11T01:51:49.902Z", 220 | "updatedAt": "2022-02-11T01:51:52.797Z", 221 | "publishedAt": "2022-02-11T01:51:52.794Z", 222 | "ipsum": { 223 | "id":2, 224 | "attributes": { 225 | "title": "Dolor sat", 226 | "createdAt": "2022-02-15T03:45:32.669Z", 227 | "updatedAt": "2022-02-17T00:30:02.573Z", 228 | "publishedAt": "2022-02-17T00:07:49.491Z", 229 | }, 230 | }, 231 | }, 232 | }, 233 | "meta": {}, 234 | } 235 | ``` 236 | 237 | ### Auto wrap the body content with a data key 238 | 239 | This request transform will auto wrap the body content with a surrounding data key on all enabled routes. 240 | 241 | #### Before 242 | 243 | ```json 244 | { 245 | "title": "Lorem Ipsum", 246 | } 247 | ``` 248 | 249 | #### After 250 | 251 | ```json 252 | { 253 | "data": { 254 | "title": "Lorem Ipsum", 255 | } 256 | } 257 | ``` 258 | 259 | ## Supported Headers 260 | 261 | | Name | Description | Type | Default | Required | 262 | | -------- | ----------- | ---- | ------- | -------- | 263 | | Strapi-Transformer-Ignore | Indicates if transform should be ignored for this request | String | 'false' | No | 264 | 265 | ### CORS 266 | By default, CORS will block any custom headers. To enable custom headers to be accepted the [cors middlware](https://docs.strapi.io/developer-docs/latest/setup-deployment-guides/configurations/required/middlewares.html#cors) headers property must include the custom header(s) that should be accepted. 267 | 268 | Example CORS configuration 269 | ```js 270 | module.exports = [ 271 | // .. 272 | { 273 | name: 'strapi::cors', 274 | config: { 275 | headers: ['Strapi-Transformer-Ignore'], 276 | }, 277 | }, 278 | // .. 279 | ] 280 | ``` 281 | 282 | ## Bugs 283 | 284 | If any bugs are found please report them as a [Github Issue](https://github.com/ComfortablyCoding/strapi-plugin-transformer/issues) 285 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@ampproject/remapping@^2.1.0": 6 | version "2.1.2" 7 | resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.1.2.tgz#4edca94973ded9630d20101cd8559cedb8d8bd34" 8 | integrity sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg== 9 | dependencies: 10 | "@jridgewell/trace-mapping" "^0.3.0" 11 | 12 | "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.7": 13 | version "7.16.7" 14 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789" 15 | integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg== 16 | dependencies: 17 | "@babel/highlight" "^7.16.7" 18 | 19 | "@babel/compat-data@^7.16.4": 20 | version "7.17.0" 21 | resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.0.tgz#86850b8597ea6962089770952075dcaabb8dba34" 22 | integrity sha512-392byTlpGWXMv4FbyWw3sAZ/FrW/DrwqLGXpy0mbyNe9Taqv1mg9yON5/o0cnr8XYCkFTZbC1eV+c+LAROgrng== 23 | 24 | "@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.7.2", "@babel/core@^7.8.0": 25 | version "7.17.4" 26 | resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.4.tgz#a22f1ae8999122873b3d18865e98c7a3936b8c8b" 27 | integrity sha512-R9x5r4t4+hBqZTmioSnkrW+I6NmbojwjGT8p4G2Gw1thWbXIHGDnmGdLdFw0/7ljucdIrNRp7Npgb4CyBYzzJg== 28 | dependencies: 29 | "@ampproject/remapping" "^2.1.0" 30 | "@babel/code-frame" "^7.16.7" 31 | "@babel/generator" "^7.17.3" 32 | "@babel/helper-compilation-targets" "^7.16.7" 33 | "@babel/helper-module-transforms" "^7.16.7" 34 | "@babel/helpers" "^7.17.2" 35 | "@babel/parser" "^7.17.3" 36 | "@babel/template" "^7.16.7" 37 | "@babel/traverse" "^7.17.3" 38 | "@babel/types" "^7.17.0" 39 | convert-source-map "^1.7.0" 40 | debug "^4.1.0" 41 | gensync "^1.0.0-beta.2" 42 | json5 "^2.1.2" 43 | semver "^6.3.0" 44 | 45 | "@babel/generator@^7.17.3", "@babel/generator@^7.7.2": 46 | version "7.17.3" 47 | resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.3.tgz#a2c30b0c4f89858cb87050c3ffdfd36bdf443200" 48 | integrity sha512-+R6Dctil/MgUsZsZAkYgK+ADNSZzJRRy0TvY65T71z/CR854xHQ1EweBYXdfT+HNeN7w0cSJJEzgxZMv40pxsg== 49 | dependencies: 50 | "@babel/types" "^7.17.0" 51 | jsesc "^2.5.1" 52 | source-map "^0.5.0" 53 | 54 | "@babel/helper-compilation-targets@^7.16.7": 55 | version "7.16.7" 56 | resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz#06e66c5f299601e6c7da350049315e83209d551b" 57 | integrity sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA== 58 | dependencies: 59 | "@babel/compat-data" "^7.16.4" 60 | "@babel/helper-validator-option" "^7.16.7" 61 | browserslist "^4.17.5" 62 | semver "^6.3.0" 63 | 64 | "@babel/helper-environment-visitor@^7.16.7": 65 | version "7.16.7" 66 | resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz#ff484094a839bde9d89cd63cba017d7aae80ecd7" 67 | integrity sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag== 68 | dependencies: 69 | "@babel/types" "^7.16.7" 70 | 71 | "@babel/helper-function-name@^7.16.7": 72 | version "7.16.7" 73 | resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz#f1ec51551fb1c8956bc8dd95f38523b6cf375f8f" 74 | integrity sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA== 75 | dependencies: 76 | "@babel/helper-get-function-arity" "^7.16.7" 77 | "@babel/template" "^7.16.7" 78 | "@babel/types" "^7.16.7" 79 | 80 | "@babel/helper-get-function-arity@^7.16.7": 81 | version "7.16.7" 82 | resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz#ea08ac753117a669f1508ba06ebcc49156387419" 83 | integrity sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw== 84 | dependencies: 85 | "@babel/types" "^7.16.7" 86 | 87 | "@babel/helper-hoist-variables@^7.16.7": 88 | version "7.16.7" 89 | resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz#86bcb19a77a509c7b77d0e22323ef588fa58c246" 90 | integrity sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg== 91 | dependencies: 92 | "@babel/types" "^7.16.7" 93 | 94 | "@babel/helper-module-imports@^7.16.7": 95 | version "7.16.7" 96 | resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437" 97 | integrity sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg== 98 | dependencies: 99 | "@babel/types" "^7.16.7" 100 | 101 | "@babel/helper-module-transforms@^7.16.7": 102 | version "7.16.7" 103 | resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.16.7.tgz#7665faeb721a01ca5327ddc6bba15a5cb34b6a41" 104 | integrity sha512-gaqtLDxJEFCeQbYp9aLAefjhkKdjKcdh6DB7jniIGU3Pz52WAmP268zK0VgPz9hUNkMSYeH976K2/Y6yPadpng== 105 | dependencies: 106 | "@babel/helper-environment-visitor" "^7.16.7" 107 | "@babel/helper-module-imports" "^7.16.7" 108 | "@babel/helper-simple-access" "^7.16.7" 109 | "@babel/helper-split-export-declaration" "^7.16.7" 110 | "@babel/helper-validator-identifier" "^7.16.7" 111 | "@babel/template" "^7.16.7" 112 | "@babel/traverse" "^7.16.7" 113 | "@babel/types" "^7.16.7" 114 | 115 | "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.8.0": 116 | version "7.16.7" 117 | resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz#aa3a8ab4c3cceff8e65eb9e73d87dc4ff320b2f5" 118 | integrity sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA== 119 | 120 | "@babel/helper-simple-access@^7.16.7": 121 | version "7.16.7" 122 | resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz#d656654b9ea08dbb9659b69d61063ccd343ff0f7" 123 | integrity sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g== 124 | dependencies: 125 | "@babel/types" "^7.16.7" 126 | 127 | "@babel/helper-split-export-declaration@^7.16.7": 128 | version "7.16.7" 129 | resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz#0b648c0c42da9d3920d85ad585f2778620b8726b" 130 | integrity sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw== 131 | dependencies: 132 | "@babel/types" "^7.16.7" 133 | 134 | "@babel/helper-validator-identifier@^7.16.7": 135 | version "7.16.7" 136 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" 137 | integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== 138 | 139 | "@babel/helper-validator-option@^7.16.7": 140 | version "7.16.7" 141 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz#b203ce62ce5fe153899b617c08957de860de4d23" 142 | integrity sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ== 143 | 144 | "@babel/helpers@^7.17.2": 145 | version "7.17.2" 146 | resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.17.2.tgz#23f0a0746c8e287773ccd27c14be428891f63417" 147 | integrity sha512-0Qu7RLR1dILozr/6M0xgj+DFPmi6Bnulgm9M8BVa9ZCWxDqlSnqt3cf8IDPB5m45sVXUZ0kuQAgUrdSFFH79fQ== 148 | dependencies: 149 | "@babel/template" "^7.16.7" 150 | "@babel/traverse" "^7.17.0" 151 | "@babel/types" "^7.17.0" 152 | 153 | "@babel/highlight@^7.16.7": 154 | version "7.16.10" 155 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.10.tgz#744f2eb81579d6eea753c227b0f570ad785aba88" 156 | integrity sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw== 157 | dependencies: 158 | "@babel/helper-validator-identifier" "^7.16.7" 159 | chalk "^2.0.0" 160 | js-tokens "^4.0.0" 161 | 162 | "@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.17.3": 163 | version "7.17.3" 164 | resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.3.tgz#b07702b982990bf6fdc1da5049a23fece4c5c3d0" 165 | integrity sha512-7yJPvPV+ESz2IUTPbOL+YkIGyCqOyNIzdguKQuJGnH7bg1WTIifuM21YqokFt/THWh1AkCRn9IgoykTRCBVpzA== 166 | 167 | "@babel/plugin-syntax-async-generators@^7.8.4": 168 | version "7.8.4" 169 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" 170 | integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== 171 | dependencies: 172 | "@babel/helper-plugin-utils" "^7.8.0" 173 | 174 | "@babel/plugin-syntax-bigint@^7.8.3": 175 | version "7.8.3" 176 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" 177 | integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== 178 | dependencies: 179 | "@babel/helper-plugin-utils" "^7.8.0" 180 | 181 | "@babel/plugin-syntax-class-properties@^7.8.3": 182 | version "7.12.13" 183 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" 184 | integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== 185 | dependencies: 186 | "@babel/helper-plugin-utils" "^7.12.13" 187 | 188 | "@babel/plugin-syntax-import-meta@^7.8.3": 189 | version "7.10.4" 190 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" 191 | integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== 192 | dependencies: 193 | "@babel/helper-plugin-utils" "^7.10.4" 194 | 195 | "@babel/plugin-syntax-json-strings@^7.8.3": 196 | version "7.8.3" 197 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" 198 | integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== 199 | dependencies: 200 | "@babel/helper-plugin-utils" "^7.8.0" 201 | 202 | "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": 203 | version "7.10.4" 204 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" 205 | integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== 206 | dependencies: 207 | "@babel/helper-plugin-utils" "^7.10.4" 208 | 209 | "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": 210 | version "7.8.3" 211 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" 212 | integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== 213 | dependencies: 214 | "@babel/helper-plugin-utils" "^7.8.0" 215 | 216 | "@babel/plugin-syntax-numeric-separator@^7.8.3": 217 | version "7.10.4" 218 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" 219 | integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== 220 | dependencies: 221 | "@babel/helper-plugin-utils" "^7.10.4" 222 | 223 | "@babel/plugin-syntax-object-rest-spread@^7.8.3": 224 | version "7.8.3" 225 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" 226 | integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== 227 | dependencies: 228 | "@babel/helper-plugin-utils" "^7.8.0" 229 | 230 | "@babel/plugin-syntax-optional-catch-binding@^7.8.3": 231 | version "7.8.3" 232 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" 233 | integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== 234 | dependencies: 235 | "@babel/helper-plugin-utils" "^7.8.0" 236 | 237 | "@babel/plugin-syntax-optional-chaining@^7.8.3": 238 | version "7.8.3" 239 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" 240 | integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== 241 | dependencies: 242 | "@babel/helper-plugin-utils" "^7.8.0" 243 | 244 | "@babel/plugin-syntax-top-level-await@^7.8.3": 245 | version "7.14.5" 246 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" 247 | integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== 248 | dependencies: 249 | "@babel/helper-plugin-utils" "^7.14.5" 250 | 251 | "@babel/plugin-syntax-typescript@^7.7.2": 252 | version "7.16.7" 253 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.7.tgz#39c9b55ee153151990fb038651d58d3fd03f98f8" 254 | integrity sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A== 255 | dependencies: 256 | "@babel/helper-plugin-utils" "^7.16.7" 257 | 258 | "@babel/template@^7.16.7", "@babel/template@^7.3.3": 259 | version "7.16.7" 260 | resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155" 261 | integrity sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w== 262 | dependencies: 263 | "@babel/code-frame" "^7.16.7" 264 | "@babel/parser" "^7.16.7" 265 | "@babel/types" "^7.16.7" 266 | 267 | "@babel/traverse@^7.16.7", "@babel/traverse@^7.17.0", "@babel/traverse@^7.17.3", "@babel/traverse@^7.7.2": 268 | version "7.17.3" 269 | resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.3.tgz#0ae0f15b27d9a92ba1f2263358ea7c4e7db47b57" 270 | integrity sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw== 271 | dependencies: 272 | "@babel/code-frame" "^7.16.7" 273 | "@babel/generator" "^7.17.3" 274 | "@babel/helper-environment-visitor" "^7.16.7" 275 | "@babel/helper-function-name" "^7.16.7" 276 | "@babel/helper-hoist-variables" "^7.16.7" 277 | "@babel/helper-split-export-declaration" "^7.16.7" 278 | "@babel/parser" "^7.17.3" 279 | "@babel/types" "^7.17.0" 280 | debug "^4.1.0" 281 | globals "^11.1.0" 282 | 283 | "@babel/types@^7.0.0", "@babel/types@^7.16.7", "@babel/types@^7.17.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3": 284 | version "7.17.0" 285 | resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.17.0.tgz#a826e368bccb6b3d84acd76acad5c0d87342390b" 286 | integrity sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw== 287 | dependencies: 288 | "@babel/helper-validator-identifier" "^7.16.7" 289 | to-fast-properties "^2.0.0" 290 | 291 | "@bcoe/v8-coverage@^0.2.3": 292 | version "0.2.3" 293 | resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" 294 | integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== 295 | 296 | "@eslint/eslintrc@^1.0.5": 297 | version "1.0.5" 298 | resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.0.5.tgz#33f1b838dbf1f923bfa517e008362b78ddbbf318" 299 | integrity sha512-BLxsnmK3KyPunz5wmCCpqy0YelEoxxGmH73Is+Z74oOTMtExcjkr3dDR6quwrjh1YspA8DH9gnX1o069KiS9AQ== 300 | dependencies: 301 | ajv "^6.12.4" 302 | debug "^4.3.2" 303 | espree "^9.2.0" 304 | globals "^13.9.0" 305 | ignore "^4.0.6" 306 | import-fresh "^3.2.1" 307 | js-yaml "^4.1.0" 308 | minimatch "^3.0.4" 309 | strip-json-comments "^3.1.1" 310 | 311 | "@humanwhocodes/config-array@^0.9.2": 312 | version "0.9.3" 313 | resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.9.3.tgz#f2564c744b387775b436418491f15fce6601f63e" 314 | integrity sha512-3xSMlXHh03hCcCmFc0rbKp3Ivt2PFEJnQUJDDMTJQ2wkECZWdq4GePs2ctc5H8zV+cHPaq8k2vU8mrQjA6iHdQ== 315 | dependencies: 316 | "@humanwhocodes/object-schema" "^1.2.1" 317 | debug "^4.1.1" 318 | minimatch "^3.0.4" 319 | 320 | "@humanwhocodes/object-schema@^1.2.1": 321 | version "1.2.1" 322 | resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" 323 | integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== 324 | 325 | "@istanbuljs/load-nyc-config@^1.0.0": 326 | version "1.1.0" 327 | resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" 328 | integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== 329 | dependencies: 330 | camelcase "^5.3.1" 331 | find-up "^4.1.0" 332 | get-package-type "^0.1.0" 333 | js-yaml "^3.13.1" 334 | resolve-from "^5.0.0" 335 | 336 | "@istanbuljs/schema@^0.1.2": 337 | version "0.1.3" 338 | resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" 339 | integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== 340 | 341 | "@jest/console@^27.5.1": 342 | version "27.5.1" 343 | resolved "https://registry.yarnpkg.com/@jest/console/-/console-27.5.1.tgz#260fe7239602fe5130a94f1aa386eff54b014bba" 344 | integrity sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg== 345 | dependencies: 346 | "@jest/types" "^27.5.1" 347 | "@types/node" "*" 348 | chalk "^4.0.0" 349 | jest-message-util "^27.5.1" 350 | jest-util "^27.5.1" 351 | slash "^3.0.0" 352 | 353 | "@jest/core@^27.5.1": 354 | version "27.5.1" 355 | resolved "https://registry.yarnpkg.com/@jest/core/-/core-27.5.1.tgz#267ac5f704e09dc52de2922cbf3af9edcd64b626" 356 | integrity sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ== 357 | dependencies: 358 | "@jest/console" "^27.5.1" 359 | "@jest/reporters" "^27.5.1" 360 | "@jest/test-result" "^27.5.1" 361 | "@jest/transform" "^27.5.1" 362 | "@jest/types" "^27.5.1" 363 | "@types/node" "*" 364 | ansi-escapes "^4.2.1" 365 | chalk "^4.0.0" 366 | emittery "^0.8.1" 367 | exit "^0.1.2" 368 | graceful-fs "^4.2.9" 369 | jest-changed-files "^27.5.1" 370 | jest-config "^27.5.1" 371 | jest-haste-map "^27.5.1" 372 | jest-message-util "^27.5.1" 373 | jest-regex-util "^27.5.1" 374 | jest-resolve "^27.5.1" 375 | jest-resolve-dependencies "^27.5.1" 376 | jest-runner "^27.5.1" 377 | jest-runtime "^27.5.1" 378 | jest-snapshot "^27.5.1" 379 | jest-util "^27.5.1" 380 | jest-validate "^27.5.1" 381 | jest-watcher "^27.5.1" 382 | micromatch "^4.0.4" 383 | rimraf "^3.0.0" 384 | slash "^3.0.0" 385 | strip-ansi "^6.0.0" 386 | 387 | "@jest/environment@^27.5.1": 388 | version "27.5.1" 389 | resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-27.5.1.tgz#d7425820511fe7158abbecc010140c3fd3be9c74" 390 | integrity sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA== 391 | dependencies: 392 | "@jest/fake-timers" "^27.5.1" 393 | "@jest/types" "^27.5.1" 394 | "@types/node" "*" 395 | jest-mock "^27.5.1" 396 | 397 | "@jest/fake-timers@^27.5.1": 398 | version "27.5.1" 399 | resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-27.5.1.tgz#76979745ce0579c8a94a4678af7a748eda8ada74" 400 | integrity sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ== 401 | dependencies: 402 | "@jest/types" "^27.5.1" 403 | "@sinonjs/fake-timers" "^8.0.1" 404 | "@types/node" "*" 405 | jest-message-util "^27.5.1" 406 | jest-mock "^27.5.1" 407 | jest-util "^27.5.1" 408 | 409 | "@jest/globals@^27.5.1": 410 | version "27.5.1" 411 | resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-27.5.1.tgz#7ac06ce57ab966566c7963431cef458434601b2b" 412 | integrity sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q== 413 | dependencies: 414 | "@jest/environment" "^27.5.1" 415 | "@jest/types" "^27.5.1" 416 | expect "^27.5.1" 417 | 418 | "@jest/reporters@^27.5.1": 419 | version "27.5.1" 420 | resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-27.5.1.tgz#ceda7be96170b03c923c37987b64015812ffec04" 421 | integrity sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw== 422 | dependencies: 423 | "@bcoe/v8-coverage" "^0.2.3" 424 | "@jest/console" "^27.5.1" 425 | "@jest/test-result" "^27.5.1" 426 | "@jest/transform" "^27.5.1" 427 | "@jest/types" "^27.5.1" 428 | "@types/node" "*" 429 | chalk "^4.0.0" 430 | collect-v8-coverage "^1.0.0" 431 | exit "^0.1.2" 432 | glob "^7.1.2" 433 | graceful-fs "^4.2.9" 434 | istanbul-lib-coverage "^3.0.0" 435 | istanbul-lib-instrument "^5.1.0" 436 | istanbul-lib-report "^3.0.0" 437 | istanbul-lib-source-maps "^4.0.0" 438 | istanbul-reports "^3.1.3" 439 | jest-haste-map "^27.5.1" 440 | jest-resolve "^27.5.1" 441 | jest-util "^27.5.1" 442 | jest-worker "^27.5.1" 443 | slash "^3.0.0" 444 | source-map "^0.6.0" 445 | string-length "^4.0.1" 446 | terminal-link "^2.0.0" 447 | v8-to-istanbul "^8.1.0" 448 | 449 | "@jest/source-map@^27.5.1": 450 | version "27.5.1" 451 | resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-27.5.1.tgz#6608391e465add4205eae073b55e7f279e04e8cf" 452 | integrity sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg== 453 | dependencies: 454 | callsites "^3.0.0" 455 | graceful-fs "^4.2.9" 456 | source-map "^0.6.0" 457 | 458 | "@jest/test-result@^27.5.1": 459 | version "27.5.1" 460 | resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-27.5.1.tgz#56a6585fa80f7cdab72b8c5fc2e871d03832f5bb" 461 | integrity sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag== 462 | dependencies: 463 | "@jest/console" "^27.5.1" 464 | "@jest/types" "^27.5.1" 465 | "@types/istanbul-lib-coverage" "^2.0.0" 466 | collect-v8-coverage "^1.0.0" 467 | 468 | "@jest/test-sequencer@^27.5.1": 469 | version "27.5.1" 470 | resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz#4057e0e9cea4439e544c6353c6affe58d095745b" 471 | integrity sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ== 472 | dependencies: 473 | "@jest/test-result" "^27.5.1" 474 | graceful-fs "^4.2.9" 475 | jest-haste-map "^27.5.1" 476 | jest-runtime "^27.5.1" 477 | 478 | "@jest/transform@^27.5.1": 479 | version "27.5.1" 480 | resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-27.5.1.tgz#6c3501dcc00c4c08915f292a600ece5ecfe1f409" 481 | integrity sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw== 482 | dependencies: 483 | "@babel/core" "^7.1.0" 484 | "@jest/types" "^27.5.1" 485 | babel-plugin-istanbul "^6.1.1" 486 | chalk "^4.0.0" 487 | convert-source-map "^1.4.0" 488 | fast-json-stable-stringify "^2.0.0" 489 | graceful-fs "^4.2.9" 490 | jest-haste-map "^27.5.1" 491 | jest-regex-util "^27.5.1" 492 | jest-util "^27.5.1" 493 | micromatch "^4.0.4" 494 | pirates "^4.0.4" 495 | slash "^3.0.0" 496 | source-map "^0.6.1" 497 | write-file-atomic "^3.0.0" 498 | 499 | "@jest/types@^27.5.1": 500 | version "27.5.1" 501 | resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.5.1.tgz#3c79ec4a8ba61c170bf937bcf9e98a9df175ec80" 502 | integrity sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw== 503 | dependencies: 504 | "@types/istanbul-lib-coverage" "^2.0.0" 505 | "@types/istanbul-reports" "^3.0.0" 506 | "@types/node" "*" 507 | "@types/yargs" "^16.0.0" 508 | chalk "^4.0.0" 509 | 510 | "@jridgewell/resolve-uri@^3.0.3": 511 | version "3.0.5" 512 | resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz#68eb521368db76d040a6315cdb24bf2483037b9c" 513 | integrity sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew== 514 | 515 | "@jridgewell/sourcemap-codec@^1.4.10": 516 | version "1.4.11" 517 | resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz#771a1d8d744eeb71b6adb35808e1a6c7b9b8c8ec" 518 | integrity sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg== 519 | 520 | "@jridgewell/trace-mapping@^0.3.0": 521 | version "0.3.4" 522 | resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz#f6a0832dffd5b8a6aaa633b7d9f8e8e94c83a0c3" 523 | integrity sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ== 524 | dependencies: 525 | "@jridgewell/resolve-uri" "^3.0.3" 526 | "@jridgewell/sourcemap-codec" "^1.4.10" 527 | 528 | "@nodelib/fs.scandir@2.1.5": 529 | version "2.1.5" 530 | resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" 531 | integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== 532 | dependencies: 533 | "@nodelib/fs.stat" "2.0.5" 534 | run-parallel "^1.1.9" 535 | 536 | "@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": 537 | version "2.0.5" 538 | resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" 539 | integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== 540 | 541 | "@nodelib/fs.walk@^1.2.3": 542 | version "1.2.8" 543 | resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" 544 | integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== 545 | dependencies: 546 | "@nodelib/fs.scandir" "2.1.5" 547 | fastq "^1.6.0" 548 | 549 | "@sinonjs/commons@^1.7.0": 550 | version "1.8.3" 551 | resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.3.tgz#3802ddd21a50a949b6721ddd72da36e67e7f1b2d" 552 | integrity sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ== 553 | dependencies: 554 | type-detect "4.0.8" 555 | 556 | "@sinonjs/fake-timers@^8.0.1": 557 | version "8.1.0" 558 | resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz#3fdc2b6cb58935b21bfb8d1625eb1300484316e7" 559 | integrity sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg== 560 | dependencies: 561 | "@sinonjs/commons" "^1.7.0" 562 | 563 | "@tootallnate/once@1": 564 | version "1.1.2" 565 | resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" 566 | integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== 567 | 568 | "@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14": 569 | version "7.1.18" 570 | resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.18.tgz#1a29abcc411a9c05e2094c98f9a1b7da6cdf49f8" 571 | integrity sha512-S7unDjm/C7z2A2R9NzfKCK1I+BAALDtxEmsJBwlB3EzNfb929ykjL++1CK9LO++EIp2fQrC8O+BwjKvz6UeDyQ== 572 | dependencies: 573 | "@babel/parser" "^7.1.0" 574 | "@babel/types" "^7.0.0" 575 | "@types/babel__generator" "*" 576 | "@types/babel__template" "*" 577 | "@types/babel__traverse" "*" 578 | 579 | "@types/babel__generator@*": 580 | version "7.6.4" 581 | resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.4.tgz#1f20ce4c5b1990b37900b63f050182d28c2439b7" 582 | integrity sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg== 583 | dependencies: 584 | "@babel/types" "^7.0.0" 585 | 586 | "@types/babel__template@*": 587 | version "7.4.1" 588 | resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.1.tgz#3d1a48fd9d6c0edfd56f2ff578daed48f36c8969" 589 | integrity sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g== 590 | dependencies: 591 | "@babel/parser" "^7.1.0" 592 | "@babel/types" "^7.0.0" 593 | 594 | "@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": 595 | version "7.14.2" 596 | resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.14.2.tgz#ffcd470bbb3f8bf30481678fb5502278ca833a43" 597 | integrity sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA== 598 | dependencies: 599 | "@babel/types" "^7.3.0" 600 | 601 | "@types/graceful-fs@^4.1.2": 602 | version "4.1.5" 603 | resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.5.tgz#21ffba0d98da4350db64891f92a9e5db3cdb4e15" 604 | integrity sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw== 605 | dependencies: 606 | "@types/node" "*" 607 | 608 | "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": 609 | version "2.0.4" 610 | resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" 611 | integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== 612 | 613 | "@types/istanbul-lib-report@*": 614 | version "3.0.0" 615 | resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" 616 | integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== 617 | dependencies: 618 | "@types/istanbul-lib-coverage" "*" 619 | 620 | "@types/istanbul-reports@^3.0.0": 621 | version "3.0.1" 622 | resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff" 623 | integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw== 624 | dependencies: 625 | "@types/istanbul-lib-report" "*" 626 | 627 | "@types/json-schema@^7.0.9": 628 | version "7.0.9" 629 | resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d" 630 | integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ== 631 | 632 | "@types/node@*": 633 | version "17.0.18" 634 | resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.18.tgz#3b4fed5cfb58010e3a2be4b6e74615e4847f1074" 635 | integrity sha512-eKj4f/BsN/qcculZiRSujogjvp5O/k4lOW5m35NopjZM/QwLOR075a8pJW5hD+Rtdm2DaCVPENS6KtSQnUD6BA== 636 | 637 | "@types/prettier@^2.1.5": 638 | version "2.4.4" 639 | resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.4.4.tgz#5d9b63132df54d8909fce1c3f8ca260fdd693e17" 640 | integrity sha512-ReVR2rLTV1kvtlWFyuot+d1pkpG2Fw/XKE3PDAdj57rbM97ttSp9JZ2UsP+2EHTylra9cUf6JA7tGwW1INzUrA== 641 | 642 | "@types/stack-utils@^2.0.0": 643 | version "2.0.1" 644 | resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" 645 | integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== 646 | 647 | "@types/yargs-parser@*": 648 | version "20.2.1" 649 | resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-20.2.1.tgz#3b9ce2489919d9e4fea439b76916abc34b2df129" 650 | integrity sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw== 651 | 652 | "@types/yargs@^16.0.0": 653 | version "16.0.4" 654 | resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.4.tgz#26aad98dd2c2a38e421086ea9ad42b9e51642977" 655 | integrity sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw== 656 | dependencies: 657 | "@types/yargs-parser" "*" 658 | 659 | "@typescript-eslint/scope-manager@5.12.0": 660 | version "5.12.0" 661 | resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.12.0.tgz#59619e6e5e2b1ce6cb3948b56014d3a24da83f5e" 662 | integrity sha512-GAMobtIJI8FGf1sLlUWNUm2IOkIjvn7laFWyRx7CLrv6nLBI7su+B7lbStqVlK5NdLvHRFiJo2HhiDF7Ki01WQ== 663 | dependencies: 664 | "@typescript-eslint/types" "5.12.0" 665 | "@typescript-eslint/visitor-keys" "5.12.0" 666 | 667 | "@typescript-eslint/types@5.12.0": 668 | version "5.12.0" 669 | resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.12.0.tgz#5b4030a28222ee01e851836562c07769eecda0b8" 670 | integrity sha512-JowqbwPf93nvf8fZn5XrPGFBdIK8+yx5UEGs2QFAYFI8IWYfrzz+6zqlurGr2ctShMaJxqwsqmra3WXWjH1nRQ== 671 | 672 | "@typescript-eslint/typescript-estree@5.12.0": 673 | version "5.12.0" 674 | resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.12.0.tgz#cabf545fd592722f0e2b4104711e63bf89525cd2" 675 | integrity sha512-Dd9gVeOqt38QHR0BEA8oRaT65WYqPYbIc5tRFQPkfLquVEFPD1HAtbZT98TLBkEcCkvwDYOAvuSvAD9DnQhMfQ== 676 | dependencies: 677 | "@typescript-eslint/types" "5.12.0" 678 | "@typescript-eslint/visitor-keys" "5.12.0" 679 | debug "^4.3.2" 680 | globby "^11.0.4" 681 | is-glob "^4.0.3" 682 | semver "^7.3.5" 683 | tsutils "^3.21.0" 684 | 685 | "@typescript-eslint/utils@^5.10.0": 686 | version "5.12.0" 687 | resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.12.0.tgz#92fd3193191621ab863add2f553a7b38b65646af" 688 | integrity sha512-k4J2WovnMPGI4PzKgDtQdNrCnmBHpMUFy21qjX2CoPdoBcSBIMvVBr9P2YDP8jOqZOeK3ThOL6VO/sy6jtnvzw== 689 | dependencies: 690 | "@types/json-schema" "^7.0.9" 691 | "@typescript-eslint/scope-manager" "5.12.0" 692 | "@typescript-eslint/types" "5.12.0" 693 | "@typescript-eslint/typescript-estree" "5.12.0" 694 | eslint-scope "^5.1.1" 695 | eslint-utils "^3.0.0" 696 | 697 | "@typescript-eslint/visitor-keys@5.12.0": 698 | version "5.12.0" 699 | resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.12.0.tgz#1ac9352ed140b07ba144ebf371b743fdf537ec16" 700 | integrity sha512-cFwTlgnMV6TgezQynx2c/4/tx9Tufbuo9LPzmWqyRC3QC4qTGkAG1C6pBr0/4I10PAI/FlYunI3vJjIcu+ZHMg== 701 | dependencies: 702 | "@typescript-eslint/types" "5.12.0" 703 | eslint-visitor-keys "^3.0.0" 704 | 705 | abab@^2.0.3, abab@^2.0.5: 706 | version "2.0.5" 707 | resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" 708 | integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== 709 | 710 | acorn-globals@^6.0.0: 711 | version "6.0.0" 712 | resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" 713 | integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== 714 | dependencies: 715 | acorn "^7.1.1" 716 | acorn-walk "^7.1.1" 717 | 718 | acorn-jsx@^5.3.1: 719 | version "5.3.2" 720 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" 721 | integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== 722 | 723 | acorn-walk@^7.1.1: 724 | version "7.2.0" 725 | resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" 726 | integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== 727 | 728 | acorn@^7.1.1: 729 | version "7.4.1" 730 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" 731 | integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== 732 | 733 | acorn@^8.2.4, acorn@^8.7.0: 734 | version "8.7.0" 735 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.0.tgz#90951fde0f8f09df93549481e5fc141445b791cf" 736 | integrity sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ== 737 | 738 | agent-base@6: 739 | version "6.0.2" 740 | resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" 741 | integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== 742 | dependencies: 743 | debug "4" 744 | 745 | ajv@^6.10.0, ajv@^6.12.4: 746 | version "6.12.6" 747 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" 748 | integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== 749 | dependencies: 750 | fast-deep-equal "^3.1.1" 751 | fast-json-stable-stringify "^2.0.0" 752 | json-schema-traverse "^0.4.1" 753 | uri-js "^4.2.2" 754 | 755 | ansi-escapes@^4.2.1: 756 | version "4.3.2" 757 | resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" 758 | integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== 759 | dependencies: 760 | type-fest "^0.21.3" 761 | 762 | ansi-regex@^5.0.1: 763 | version "5.0.1" 764 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" 765 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== 766 | 767 | ansi-styles@^3.2.1: 768 | version "3.2.1" 769 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 770 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 771 | dependencies: 772 | color-convert "^1.9.0" 773 | 774 | ansi-styles@^4.0.0, ansi-styles@^4.1.0: 775 | version "4.3.0" 776 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 777 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 778 | dependencies: 779 | color-convert "^2.0.1" 780 | 781 | ansi-styles@^5.0.0: 782 | version "5.2.0" 783 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" 784 | integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== 785 | 786 | anymatch@^3.0.3: 787 | version "3.1.2" 788 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" 789 | integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== 790 | dependencies: 791 | normalize-path "^3.0.0" 792 | picomatch "^2.0.4" 793 | 794 | argparse@^1.0.7: 795 | version "1.0.10" 796 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 797 | integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== 798 | dependencies: 799 | sprintf-js "~1.0.2" 800 | 801 | argparse@^2.0.1: 802 | version "2.0.1" 803 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" 804 | integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== 805 | 806 | array-union@^2.1.0: 807 | version "2.1.0" 808 | resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" 809 | integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== 810 | 811 | asynckit@^0.4.0: 812 | version "0.4.0" 813 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 814 | integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= 815 | 816 | babel-jest@^27.5.1: 817 | version "27.5.1" 818 | resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-27.5.1.tgz#a1bf8d61928edfefd21da27eb86a695bfd691444" 819 | integrity sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg== 820 | dependencies: 821 | "@jest/transform" "^27.5.1" 822 | "@jest/types" "^27.5.1" 823 | "@types/babel__core" "^7.1.14" 824 | babel-plugin-istanbul "^6.1.1" 825 | babel-preset-jest "^27.5.1" 826 | chalk "^4.0.0" 827 | graceful-fs "^4.2.9" 828 | slash "^3.0.0" 829 | 830 | babel-plugin-istanbul@^6.1.1: 831 | version "6.1.1" 832 | resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" 833 | integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== 834 | dependencies: 835 | "@babel/helper-plugin-utils" "^7.0.0" 836 | "@istanbuljs/load-nyc-config" "^1.0.0" 837 | "@istanbuljs/schema" "^0.1.2" 838 | istanbul-lib-instrument "^5.0.4" 839 | test-exclude "^6.0.0" 840 | 841 | babel-plugin-jest-hoist@^27.5.1: 842 | version "27.5.1" 843 | resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz#9be98ecf28c331eb9f5df9c72d6f89deb8181c2e" 844 | integrity sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ== 845 | dependencies: 846 | "@babel/template" "^7.3.3" 847 | "@babel/types" "^7.3.3" 848 | "@types/babel__core" "^7.0.0" 849 | "@types/babel__traverse" "^7.0.6" 850 | 851 | babel-preset-current-node-syntax@^1.0.0: 852 | version "1.0.1" 853 | resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" 854 | integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== 855 | dependencies: 856 | "@babel/plugin-syntax-async-generators" "^7.8.4" 857 | "@babel/plugin-syntax-bigint" "^7.8.3" 858 | "@babel/plugin-syntax-class-properties" "^7.8.3" 859 | "@babel/plugin-syntax-import-meta" "^7.8.3" 860 | "@babel/plugin-syntax-json-strings" "^7.8.3" 861 | "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" 862 | "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" 863 | "@babel/plugin-syntax-numeric-separator" "^7.8.3" 864 | "@babel/plugin-syntax-object-rest-spread" "^7.8.3" 865 | "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" 866 | "@babel/plugin-syntax-optional-chaining" "^7.8.3" 867 | "@babel/plugin-syntax-top-level-await" "^7.8.3" 868 | 869 | babel-preset-jest@^27.5.1: 870 | version "27.5.1" 871 | resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz#91f10f58034cb7989cb4f962b69fa6eef6a6bc81" 872 | integrity sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag== 873 | dependencies: 874 | babel-plugin-jest-hoist "^27.5.1" 875 | babel-preset-current-node-syntax "^1.0.0" 876 | 877 | balanced-match@^1.0.0: 878 | version "1.0.2" 879 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 880 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 881 | 882 | brace-expansion@^1.1.7: 883 | version "1.1.11" 884 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 885 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 886 | dependencies: 887 | balanced-match "^1.0.0" 888 | concat-map "0.0.1" 889 | 890 | braces@^3.0.1: 891 | version "3.0.2" 892 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 893 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 894 | dependencies: 895 | fill-range "^7.0.1" 896 | 897 | browser-process-hrtime@^1.0.0: 898 | version "1.0.0" 899 | resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" 900 | integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== 901 | 902 | browserslist@^4.17.5: 903 | version "4.19.1" 904 | resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.19.1.tgz#4ac0435b35ab655896c31d53018b6dd5e9e4c9a3" 905 | integrity sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A== 906 | dependencies: 907 | caniuse-lite "^1.0.30001286" 908 | electron-to-chromium "^1.4.17" 909 | escalade "^3.1.1" 910 | node-releases "^2.0.1" 911 | picocolors "^1.0.0" 912 | 913 | bser@2.1.1: 914 | version "2.1.1" 915 | resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" 916 | integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== 917 | dependencies: 918 | node-int64 "^0.4.0" 919 | 920 | buffer-from@^1.0.0: 921 | version "1.1.2" 922 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" 923 | integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== 924 | 925 | callsites@^3.0.0: 926 | version "3.1.0" 927 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" 928 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== 929 | 930 | camelcase@^5.3.1: 931 | version "5.3.1" 932 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" 933 | integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== 934 | 935 | camelcase@^6.2.0: 936 | version "6.3.0" 937 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" 938 | integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== 939 | 940 | caniuse-lite@^1.0.30001286: 941 | version "1.0.30001312" 942 | resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001312.tgz#e11eba4b87e24d22697dae05455d5aea28550d5f" 943 | integrity sha512-Wiz1Psk2MEK0pX3rUzWaunLTZzqS2JYZFzNKqAiJGiuxIjRPLgV6+VDPOg6lQOUxmDwhTlh198JsTTi8Hzw6aQ== 944 | 945 | chalk@^2.0.0: 946 | version "2.4.2" 947 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 948 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 949 | dependencies: 950 | ansi-styles "^3.2.1" 951 | escape-string-regexp "^1.0.5" 952 | supports-color "^5.3.0" 953 | 954 | chalk@^4.0.0: 955 | version "4.1.2" 956 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" 957 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== 958 | dependencies: 959 | ansi-styles "^4.1.0" 960 | supports-color "^7.1.0" 961 | 962 | char-regex@^1.0.2: 963 | version "1.0.2" 964 | resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" 965 | integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== 966 | 967 | ci-info@^3.2.0: 968 | version "3.3.0" 969 | resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.3.0.tgz#b4ed1fb6818dea4803a55c623041f9165d2066b2" 970 | integrity sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw== 971 | 972 | cjs-module-lexer@^1.0.0: 973 | version "1.2.2" 974 | resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz#9f84ba3244a512f3a54e5277e8eef4c489864e40" 975 | integrity sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA== 976 | 977 | cliui@^7.0.2: 978 | version "7.0.4" 979 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" 980 | integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== 981 | dependencies: 982 | string-width "^4.2.0" 983 | strip-ansi "^6.0.0" 984 | wrap-ansi "^7.0.0" 985 | 986 | co@^4.6.0: 987 | version "4.6.0" 988 | resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" 989 | integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= 990 | 991 | collect-v8-coverage@^1.0.0: 992 | version "1.0.1" 993 | resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" 994 | integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== 995 | 996 | color-convert@^1.9.0: 997 | version "1.9.3" 998 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 999 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 1000 | dependencies: 1001 | color-name "1.1.3" 1002 | 1003 | color-convert@^2.0.1: 1004 | version "2.0.1" 1005 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 1006 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 1007 | dependencies: 1008 | color-name "~1.1.4" 1009 | 1010 | color-name@1.1.3: 1011 | version "1.1.3" 1012 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 1013 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= 1014 | 1015 | color-name@~1.1.4: 1016 | version "1.1.4" 1017 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 1018 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 1019 | 1020 | combined-stream@^1.0.8: 1021 | version "1.0.8" 1022 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" 1023 | integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== 1024 | dependencies: 1025 | delayed-stream "~1.0.0" 1026 | 1027 | concat-map@0.0.1: 1028 | version "0.0.1" 1029 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 1030 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 1031 | 1032 | convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: 1033 | version "1.8.0" 1034 | resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" 1035 | integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== 1036 | dependencies: 1037 | safe-buffer "~5.1.1" 1038 | 1039 | cross-spawn@^7.0.2, cross-spawn@^7.0.3: 1040 | version "7.0.3" 1041 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" 1042 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== 1043 | dependencies: 1044 | path-key "^3.1.0" 1045 | shebang-command "^2.0.0" 1046 | which "^2.0.1" 1047 | 1048 | cssom@^0.4.4: 1049 | version "0.4.4" 1050 | resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" 1051 | integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== 1052 | 1053 | cssom@~0.3.6: 1054 | version "0.3.8" 1055 | resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" 1056 | integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== 1057 | 1058 | cssstyle@^2.3.0: 1059 | version "2.3.0" 1060 | resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" 1061 | integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== 1062 | dependencies: 1063 | cssom "~0.3.6" 1064 | 1065 | data-urls@^2.0.0: 1066 | version "2.0.0" 1067 | resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" 1068 | integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== 1069 | dependencies: 1070 | abab "^2.0.3" 1071 | whatwg-mimetype "^2.3.0" 1072 | whatwg-url "^8.0.0" 1073 | 1074 | debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2: 1075 | version "4.3.3" 1076 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" 1077 | integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== 1078 | dependencies: 1079 | ms "2.1.2" 1080 | 1081 | decimal.js@^10.2.1: 1082 | version "10.3.1" 1083 | resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.3.1.tgz#d8c3a444a9c6774ba60ca6ad7261c3a94fd5e783" 1084 | integrity sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ== 1085 | 1086 | dedent@^0.7.0: 1087 | version "0.7.0" 1088 | resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" 1089 | integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= 1090 | 1091 | deep-is@^0.1.3, deep-is@~0.1.3: 1092 | version "0.1.4" 1093 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" 1094 | integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== 1095 | 1096 | deepmerge@^4.2.2: 1097 | version "4.2.2" 1098 | resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" 1099 | integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== 1100 | 1101 | delayed-stream@~1.0.0: 1102 | version "1.0.0" 1103 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 1104 | integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= 1105 | 1106 | detect-newline@^3.0.0: 1107 | version "3.1.0" 1108 | resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" 1109 | integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== 1110 | 1111 | diff-sequences@^27.5.1: 1112 | version "27.5.1" 1113 | resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.5.1.tgz#eaecc0d327fd68c8d9672a1e64ab8dccb2ef5327" 1114 | integrity sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ== 1115 | 1116 | dir-glob@^3.0.1: 1117 | version "3.0.1" 1118 | resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" 1119 | integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== 1120 | dependencies: 1121 | path-type "^4.0.0" 1122 | 1123 | doctrine@^3.0.0: 1124 | version "3.0.0" 1125 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" 1126 | integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== 1127 | dependencies: 1128 | esutils "^2.0.2" 1129 | 1130 | domexception@^2.0.1: 1131 | version "2.0.1" 1132 | resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" 1133 | integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== 1134 | dependencies: 1135 | webidl-conversions "^5.0.0" 1136 | 1137 | electron-to-chromium@^1.4.17: 1138 | version "1.4.71" 1139 | resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.71.tgz#17056914465da0890ce00351a3b946fd4cd51ff6" 1140 | integrity sha512-Hk61vXXKRb2cd3znPE9F+2pLWdIOmP7GjiTj45y6L3W/lO+hSnUSUhq+6lEaERWBdZOHbk2s3YV5c9xVl3boVw== 1141 | 1142 | emittery@^0.8.1: 1143 | version "0.8.1" 1144 | resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.8.1.tgz#bb23cc86d03b30aa75a7f734819dee2e1ba70860" 1145 | integrity sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg== 1146 | 1147 | emoji-regex@^8.0.0: 1148 | version "8.0.0" 1149 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 1150 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 1151 | 1152 | error-ex@^1.3.1: 1153 | version "1.3.2" 1154 | resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" 1155 | integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== 1156 | dependencies: 1157 | is-arrayish "^0.2.1" 1158 | 1159 | escalade@^3.1.1: 1160 | version "3.1.1" 1161 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" 1162 | integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== 1163 | 1164 | escape-string-regexp@^1.0.5: 1165 | version "1.0.5" 1166 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 1167 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 1168 | 1169 | escape-string-regexp@^2.0.0: 1170 | version "2.0.0" 1171 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" 1172 | integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== 1173 | 1174 | escape-string-regexp@^4.0.0: 1175 | version "4.0.0" 1176 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" 1177 | integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== 1178 | 1179 | escodegen@^2.0.0: 1180 | version "2.0.0" 1181 | resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd" 1182 | integrity sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw== 1183 | dependencies: 1184 | esprima "^4.0.1" 1185 | estraverse "^5.2.0" 1186 | esutils "^2.0.2" 1187 | optionator "^0.8.1" 1188 | optionalDependencies: 1189 | source-map "~0.6.1" 1190 | 1191 | eslint-config-prettier@^8.3.0: 1192 | version "8.3.0" 1193 | resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.3.0.tgz#f7471b20b6fe8a9a9254cc684454202886a2dd7a" 1194 | integrity sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew== 1195 | 1196 | eslint-plugin-es@^3.0.0: 1197 | version "3.0.1" 1198 | resolved "https://registry.yarnpkg.com/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz#75a7cdfdccddc0589934aeeb384175f221c57893" 1199 | integrity sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ== 1200 | dependencies: 1201 | eslint-utils "^2.0.0" 1202 | regexpp "^3.0.0" 1203 | 1204 | eslint-plugin-jest@^26.1.1: 1205 | version "26.1.1" 1206 | resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-26.1.1.tgz#7176dd745ef8bca3070263f62cdf112f2dfc9aa1" 1207 | integrity sha512-HRKOuPi5ADhza4ZBK5ufyNXy28bXXkib87w+pQqdvBhSTsamndh6sIAKPAUl8y0/n9jSWBdTPslrwtKWqkp8dA== 1208 | dependencies: 1209 | "@typescript-eslint/utils" "^5.10.0" 1210 | 1211 | eslint-plugin-node@^11.1.0: 1212 | version "11.1.0" 1213 | resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz#c95544416ee4ada26740a30474eefc5402dc671d" 1214 | integrity sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g== 1215 | dependencies: 1216 | eslint-plugin-es "^3.0.0" 1217 | eslint-utils "^2.0.0" 1218 | ignore "^5.1.1" 1219 | minimatch "^3.0.4" 1220 | resolve "^1.10.1" 1221 | semver "^6.1.0" 1222 | 1223 | eslint-scope@^5.1.1: 1224 | version "5.1.1" 1225 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" 1226 | integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== 1227 | dependencies: 1228 | esrecurse "^4.3.0" 1229 | estraverse "^4.1.1" 1230 | 1231 | eslint-scope@^7.1.0: 1232 | version "7.1.0" 1233 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.0.tgz#c1f6ea30ac583031f203d65c73e723b01298f153" 1234 | integrity sha512-aWwkhnS0qAXqNOgKOK0dJ2nvzEbhEvpy8OlJ9kZ0FeZnA6zpjv1/Vei+puGFFX7zkPCkHHXb7IDX3A+7yPrRWg== 1235 | dependencies: 1236 | esrecurse "^4.3.0" 1237 | estraverse "^5.2.0" 1238 | 1239 | eslint-utils@^2.0.0: 1240 | version "2.1.0" 1241 | resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" 1242 | integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== 1243 | dependencies: 1244 | eslint-visitor-keys "^1.1.0" 1245 | 1246 | eslint-utils@^3.0.0: 1247 | version "3.0.0" 1248 | resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" 1249 | integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== 1250 | dependencies: 1251 | eslint-visitor-keys "^2.0.0" 1252 | 1253 | eslint-visitor-keys@^1.1.0: 1254 | version "1.3.0" 1255 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" 1256 | integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== 1257 | 1258 | eslint-visitor-keys@^2.0.0: 1259 | version "2.1.0" 1260 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" 1261 | integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== 1262 | 1263 | eslint-visitor-keys@^3.0.0: 1264 | version "3.3.0" 1265 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" 1266 | integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== 1267 | 1268 | eslint-visitor-keys@^3.1.0, eslint-visitor-keys@^3.2.0: 1269 | version "3.2.0" 1270 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.2.0.tgz#6fbb166a6798ee5991358bc2daa1ba76cc1254a1" 1271 | integrity sha512-IOzT0X126zn7ALX0dwFiUQEdsfzrm4+ISsQS8nukaJXwEyYKRSnEIIDULYg1mCtGp7UUXgfGl7BIolXREQK+XQ== 1272 | 1273 | eslint@^8.8.0: 1274 | version "8.8.0" 1275 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.8.0.tgz#9762b49abad0cb4952539ffdb0a046392e571a2d" 1276 | integrity sha512-H3KXAzQGBH1plhYS3okDix2ZthuYJlQQEGE5k0IKuEqUSiyu4AmxxlJ2MtTYeJ3xB4jDhcYCwGOg2TXYdnDXlQ== 1277 | dependencies: 1278 | "@eslint/eslintrc" "^1.0.5" 1279 | "@humanwhocodes/config-array" "^0.9.2" 1280 | ajv "^6.10.0" 1281 | chalk "^4.0.0" 1282 | cross-spawn "^7.0.2" 1283 | debug "^4.3.2" 1284 | doctrine "^3.0.0" 1285 | escape-string-regexp "^4.0.0" 1286 | eslint-scope "^7.1.0" 1287 | eslint-utils "^3.0.0" 1288 | eslint-visitor-keys "^3.2.0" 1289 | espree "^9.3.0" 1290 | esquery "^1.4.0" 1291 | esutils "^2.0.2" 1292 | fast-deep-equal "^3.1.3" 1293 | file-entry-cache "^6.0.1" 1294 | functional-red-black-tree "^1.0.1" 1295 | glob-parent "^6.0.1" 1296 | globals "^13.6.0" 1297 | ignore "^5.2.0" 1298 | import-fresh "^3.0.0" 1299 | imurmurhash "^0.1.4" 1300 | is-glob "^4.0.0" 1301 | js-yaml "^4.1.0" 1302 | json-stable-stringify-without-jsonify "^1.0.1" 1303 | levn "^0.4.1" 1304 | lodash.merge "^4.6.2" 1305 | minimatch "^3.0.4" 1306 | natural-compare "^1.4.0" 1307 | optionator "^0.9.1" 1308 | regexpp "^3.2.0" 1309 | strip-ansi "^6.0.1" 1310 | strip-json-comments "^3.1.0" 1311 | text-table "^0.2.0" 1312 | v8-compile-cache "^2.0.3" 1313 | 1314 | espree@^9.2.0, espree@^9.3.0: 1315 | version "9.3.0" 1316 | resolved "https://registry.yarnpkg.com/espree/-/espree-9.3.0.tgz#c1240d79183b72aaee6ccfa5a90bc9111df085a8" 1317 | integrity sha512-d/5nCsb0JcqsSEeQzFZ8DH1RmxPcglRWh24EFTlUEmCKoehXGdpsx0RkHDubqUI8LSAIKMQp4r9SzQ3n+sm4HQ== 1318 | dependencies: 1319 | acorn "^8.7.0" 1320 | acorn-jsx "^5.3.1" 1321 | eslint-visitor-keys "^3.1.0" 1322 | 1323 | esprima@^4.0.0, esprima@^4.0.1: 1324 | version "4.0.1" 1325 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" 1326 | integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== 1327 | 1328 | esquery@^1.4.0: 1329 | version "1.4.0" 1330 | resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" 1331 | integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== 1332 | dependencies: 1333 | estraverse "^5.1.0" 1334 | 1335 | esrecurse@^4.3.0: 1336 | version "4.3.0" 1337 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" 1338 | integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== 1339 | dependencies: 1340 | estraverse "^5.2.0" 1341 | 1342 | estraverse@^4.1.1: 1343 | version "4.3.0" 1344 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" 1345 | integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== 1346 | 1347 | estraverse@^5.1.0, estraverse@^5.2.0: 1348 | version "5.3.0" 1349 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" 1350 | integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== 1351 | 1352 | esutils@^2.0.2: 1353 | version "2.0.3" 1354 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" 1355 | integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== 1356 | 1357 | execa@^5.0.0: 1358 | version "5.1.1" 1359 | resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" 1360 | integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== 1361 | dependencies: 1362 | cross-spawn "^7.0.3" 1363 | get-stream "^6.0.0" 1364 | human-signals "^2.1.0" 1365 | is-stream "^2.0.0" 1366 | merge-stream "^2.0.0" 1367 | npm-run-path "^4.0.1" 1368 | onetime "^5.1.2" 1369 | signal-exit "^3.0.3" 1370 | strip-final-newline "^2.0.0" 1371 | 1372 | exit@^0.1.2: 1373 | version "0.1.2" 1374 | resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" 1375 | integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= 1376 | 1377 | expect@^27.5.1: 1378 | version "27.5.1" 1379 | resolved "https://registry.yarnpkg.com/expect/-/expect-27.5.1.tgz#83ce59f1e5bdf5f9d2b94b61d2050db48f3fef74" 1380 | integrity sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw== 1381 | dependencies: 1382 | "@jest/types" "^27.5.1" 1383 | jest-get-type "^27.5.1" 1384 | jest-matcher-utils "^27.5.1" 1385 | jest-message-util "^27.5.1" 1386 | 1387 | fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: 1388 | version "3.1.3" 1389 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" 1390 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== 1391 | 1392 | fast-glob@^3.2.9: 1393 | version "3.2.11" 1394 | resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" 1395 | integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== 1396 | dependencies: 1397 | "@nodelib/fs.stat" "^2.0.2" 1398 | "@nodelib/fs.walk" "^1.2.3" 1399 | glob-parent "^5.1.2" 1400 | merge2 "^1.3.0" 1401 | micromatch "^4.0.4" 1402 | 1403 | fast-json-stable-stringify@^2.0.0: 1404 | version "2.1.0" 1405 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" 1406 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== 1407 | 1408 | fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: 1409 | version "2.0.6" 1410 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 1411 | integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= 1412 | 1413 | fastq@^1.6.0: 1414 | version "1.13.0" 1415 | resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" 1416 | integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== 1417 | dependencies: 1418 | reusify "^1.0.4" 1419 | 1420 | fb-watchman@^2.0.0: 1421 | version "2.0.1" 1422 | resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" 1423 | integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== 1424 | dependencies: 1425 | bser "2.1.1" 1426 | 1427 | file-entry-cache@^6.0.1: 1428 | version "6.0.1" 1429 | resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" 1430 | integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== 1431 | dependencies: 1432 | flat-cache "^3.0.4" 1433 | 1434 | fill-range@^7.0.1: 1435 | version "7.0.1" 1436 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 1437 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 1438 | dependencies: 1439 | to-regex-range "^5.0.1" 1440 | 1441 | find-up@^4.0.0, find-up@^4.1.0: 1442 | version "4.1.0" 1443 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" 1444 | integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== 1445 | dependencies: 1446 | locate-path "^5.0.0" 1447 | path-exists "^4.0.0" 1448 | 1449 | flat-cache@^3.0.4: 1450 | version "3.0.4" 1451 | resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" 1452 | integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== 1453 | dependencies: 1454 | flatted "^3.1.0" 1455 | rimraf "^3.0.2" 1456 | 1457 | flatted@^3.1.0: 1458 | version "3.2.5" 1459 | resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.5.tgz#76c8584f4fc843db64702a6bd04ab7a8bd666da3" 1460 | integrity sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg== 1461 | 1462 | form-data@^3.0.0: 1463 | version "3.0.1" 1464 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" 1465 | integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== 1466 | dependencies: 1467 | asynckit "^0.4.0" 1468 | combined-stream "^1.0.8" 1469 | mime-types "^2.1.12" 1470 | 1471 | fs.realpath@^1.0.0: 1472 | version "1.0.0" 1473 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 1474 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 1475 | 1476 | fsevents@^2.3.2: 1477 | version "2.3.2" 1478 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" 1479 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== 1480 | 1481 | function-bind@^1.1.1: 1482 | version "1.1.1" 1483 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 1484 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 1485 | 1486 | functional-red-black-tree@^1.0.1: 1487 | version "1.0.1" 1488 | resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" 1489 | integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= 1490 | 1491 | gensync@^1.0.0-beta.2: 1492 | version "1.0.0-beta.2" 1493 | resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" 1494 | integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== 1495 | 1496 | get-caller-file@^2.0.5: 1497 | version "2.0.5" 1498 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" 1499 | integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== 1500 | 1501 | get-package-type@^0.1.0: 1502 | version "0.1.0" 1503 | resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" 1504 | integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== 1505 | 1506 | get-stream@^6.0.0: 1507 | version "6.0.1" 1508 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" 1509 | integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== 1510 | 1511 | glob-parent@^5.1.2: 1512 | version "5.1.2" 1513 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 1514 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 1515 | dependencies: 1516 | is-glob "^4.0.1" 1517 | 1518 | glob-parent@^6.0.1: 1519 | version "6.0.2" 1520 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" 1521 | integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== 1522 | dependencies: 1523 | is-glob "^4.0.3" 1524 | 1525 | glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: 1526 | version "7.2.0" 1527 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" 1528 | integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== 1529 | dependencies: 1530 | fs.realpath "^1.0.0" 1531 | inflight "^1.0.4" 1532 | inherits "2" 1533 | minimatch "^3.0.4" 1534 | once "^1.3.0" 1535 | path-is-absolute "^1.0.0" 1536 | 1537 | globals@^11.1.0: 1538 | version "11.12.0" 1539 | resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" 1540 | integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== 1541 | 1542 | globals@^13.6.0, globals@^13.9.0: 1543 | version "13.12.1" 1544 | resolved "https://registry.yarnpkg.com/globals/-/globals-13.12.1.tgz#ec206be932e6c77236677127577aa8e50bf1c5cb" 1545 | integrity sha512-317dFlgY2pdJZ9rspXDks7073GpDmXdfbM3vYYp0HAMKGDh1FfWPleI2ljVNLQX5M5lXcAslTcPTrOrMEFOjyw== 1546 | dependencies: 1547 | type-fest "^0.20.2" 1548 | 1549 | globby@^11.0.4: 1550 | version "11.1.0" 1551 | resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" 1552 | integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== 1553 | dependencies: 1554 | array-union "^2.1.0" 1555 | dir-glob "^3.0.1" 1556 | fast-glob "^3.2.9" 1557 | ignore "^5.2.0" 1558 | merge2 "^1.4.1" 1559 | slash "^3.0.0" 1560 | 1561 | graceful-fs@^4.2.9: 1562 | version "4.2.9" 1563 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96" 1564 | integrity sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ== 1565 | 1566 | has-flag@^3.0.0: 1567 | version "3.0.0" 1568 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 1569 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 1570 | 1571 | has-flag@^4.0.0: 1572 | version "4.0.0" 1573 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 1574 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 1575 | 1576 | has@^1.0.3: 1577 | version "1.0.3" 1578 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 1579 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 1580 | dependencies: 1581 | function-bind "^1.1.1" 1582 | 1583 | html-encoding-sniffer@^2.0.1: 1584 | version "2.0.1" 1585 | resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" 1586 | integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== 1587 | dependencies: 1588 | whatwg-encoding "^1.0.5" 1589 | 1590 | html-escaper@^2.0.0: 1591 | version "2.0.2" 1592 | resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" 1593 | integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== 1594 | 1595 | http-proxy-agent@^4.0.1: 1596 | version "4.0.1" 1597 | resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" 1598 | integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== 1599 | dependencies: 1600 | "@tootallnate/once" "1" 1601 | agent-base "6" 1602 | debug "4" 1603 | 1604 | https-proxy-agent@^5.0.0: 1605 | version "5.0.0" 1606 | resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" 1607 | integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA== 1608 | dependencies: 1609 | agent-base "6" 1610 | debug "4" 1611 | 1612 | human-signals@^2.1.0: 1613 | version "2.1.0" 1614 | resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" 1615 | integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== 1616 | 1617 | iconv-lite@0.4.24: 1618 | version "0.4.24" 1619 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" 1620 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== 1621 | dependencies: 1622 | safer-buffer ">= 2.1.2 < 3" 1623 | 1624 | ignore@^4.0.6: 1625 | version "4.0.6" 1626 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" 1627 | integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== 1628 | 1629 | ignore@^5.1.1, ignore@^5.2.0: 1630 | version "5.2.0" 1631 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" 1632 | integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== 1633 | 1634 | import-fresh@^3.0.0, import-fresh@^3.2.1: 1635 | version "3.3.0" 1636 | resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" 1637 | integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== 1638 | dependencies: 1639 | parent-module "^1.0.0" 1640 | resolve-from "^4.0.0" 1641 | 1642 | import-local@^3.0.2: 1643 | version "3.1.0" 1644 | resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" 1645 | integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== 1646 | dependencies: 1647 | pkg-dir "^4.2.0" 1648 | resolve-cwd "^3.0.0" 1649 | 1650 | imurmurhash@^0.1.4: 1651 | version "0.1.4" 1652 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 1653 | integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= 1654 | 1655 | inflight@^1.0.4: 1656 | version "1.0.6" 1657 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 1658 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 1659 | dependencies: 1660 | once "^1.3.0" 1661 | wrappy "1" 1662 | 1663 | inherits@2: 1664 | version "2.0.4" 1665 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 1666 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 1667 | 1668 | is-arrayish@^0.2.1: 1669 | version "0.2.1" 1670 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" 1671 | integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= 1672 | 1673 | is-core-module@^2.8.1: 1674 | version "2.8.1" 1675 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.1.tgz#f59fdfca701d5879d0a6b100a40aa1560ce27211" 1676 | integrity sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA== 1677 | dependencies: 1678 | has "^1.0.3" 1679 | 1680 | is-extglob@^2.1.1: 1681 | version "2.1.1" 1682 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 1683 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= 1684 | 1685 | is-fullwidth-code-point@^3.0.0: 1686 | version "3.0.0" 1687 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 1688 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 1689 | 1690 | is-generator-fn@^2.0.0: 1691 | version "2.1.0" 1692 | resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" 1693 | integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== 1694 | 1695 | is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: 1696 | version "4.0.3" 1697 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" 1698 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== 1699 | dependencies: 1700 | is-extglob "^2.1.1" 1701 | 1702 | is-number@^7.0.0: 1703 | version "7.0.0" 1704 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 1705 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 1706 | 1707 | is-potential-custom-element-name@^1.0.1: 1708 | version "1.0.1" 1709 | resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" 1710 | integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== 1711 | 1712 | is-stream@^2.0.0: 1713 | version "2.0.1" 1714 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" 1715 | integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== 1716 | 1717 | is-typedarray@^1.0.0: 1718 | version "1.0.0" 1719 | resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" 1720 | integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= 1721 | 1722 | isexe@^2.0.0: 1723 | version "2.0.0" 1724 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 1725 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= 1726 | 1727 | istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: 1728 | version "3.2.0" 1729 | resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" 1730 | integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== 1731 | 1732 | istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: 1733 | version "5.1.0" 1734 | resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz#7b49198b657b27a730b8e9cb601f1e1bff24c59a" 1735 | integrity sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q== 1736 | dependencies: 1737 | "@babel/core" "^7.12.3" 1738 | "@babel/parser" "^7.14.7" 1739 | "@istanbuljs/schema" "^0.1.2" 1740 | istanbul-lib-coverage "^3.2.0" 1741 | semver "^6.3.0" 1742 | 1743 | istanbul-lib-report@^3.0.0: 1744 | version "3.0.0" 1745 | resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" 1746 | integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== 1747 | dependencies: 1748 | istanbul-lib-coverage "^3.0.0" 1749 | make-dir "^3.0.0" 1750 | supports-color "^7.1.0" 1751 | 1752 | istanbul-lib-source-maps@^4.0.0: 1753 | version "4.0.1" 1754 | resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" 1755 | integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== 1756 | dependencies: 1757 | debug "^4.1.1" 1758 | istanbul-lib-coverage "^3.0.0" 1759 | source-map "^0.6.1" 1760 | 1761 | istanbul-reports@^3.1.3: 1762 | version "3.1.4" 1763 | resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.4.tgz#1b6f068ecbc6c331040aab5741991273e609e40c" 1764 | integrity sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw== 1765 | dependencies: 1766 | html-escaper "^2.0.0" 1767 | istanbul-lib-report "^3.0.0" 1768 | 1769 | jest-changed-files@^27.5.1: 1770 | version "27.5.1" 1771 | resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-27.5.1.tgz#a348aed00ec9bf671cc58a66fcbe7c3dfd6a68f5" 1772 | integrity sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw== 1773 | dependencies: 1774 | "@jest/types" "^27.5.1" 1775 | execa "^5.0.0" 1776 | throat "^6.0.1" 1777 | 1778 | jest-circus@^27.5.1: 1779 | version "27.5.1" 1780 | resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-27.5.1.tgz#37a5a4459b7bf4406e53d637b49d22c65d125ecc" 1781 | integrity sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw== 1782 | dependencies: 1783 | "@jest/environment" "^27.5.1" 1784 | "@jest/test-result" "^27.5.1" 1785 | "@jest/types" "^27.5.1" 1786 | "@types/node" "*" 1787 | chalk "^4.0.0" 1788 | co "^4.6.0" 1789 | dedent "^0.7.0" 1790 | expect "^27.5.1" 1791 | is-generator-fn "^2.0.0" 1792 | jest-each "^27.5.1" 1793 | jest-matcher-utils "^27.5.1" 1794 | jest-message-util "^27.5.1" 1795 | jest-runtime "^27.5.1" 1796 | jest-snapshot "^27.5.1" 1797 | jest-util "^27.5.1" 1798 | pretty-format "^27.5.1" 1799 | slash "^3.0.0" 1800 | stack-utils "^2.0.3" 1801 | throat "^6.0.1" 1802 | 1803 | jest-cli@^27.5.1: 1804 | version "27.5.1" 1805 | resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-27.5.1.tgz#278794a6e6458ea8029547e6c6cbf673bd30b145" 1806 | integrity sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw== 1807 | dependencies: 1808 | "@jest/core" "^27.5.1" 1809 | "@jest/test-result" "^27.5.1" 1810 | "@jest/types" "^27.5.1" 1811 | chalk "^4.0.0" 1812 | exit "^0.1.2" 1813 | graceful-fs "^4.2.9" 1814 | import-local "^3.0.2" 1815 | jest-config "^27.5.1" 1816 | jest-util "^27.5.1" 1817 | jest-validate "^27.5.1" 1818 | prompts "^2.0.1" 1819 | yargs "^16.2.0" 1820 | 1821 | jest-config@^27.5.1: 1822 | version "27.5.1" 1823 | resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-27.5.1.tgz#5c387de33dca3f99ad6357ddeccd91bf3a0e4a41" 1824 | integrity sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA== 1825 | dependencies: 1826 | "@babel/core" "^7.8.0" 1827 | "@jest/test-sequencer" "^27.5.1" 1828 | "@jest/types" "^27.5.1" 1829 | babel-jest "^27.5.1" 1830 | chalk "^4.0.0" 1831 | ci-info "^3.2.0" 1832 | deepmerge "^4.2.2" 1833 | glob "^7.1.1" 1834 | graceful-fs "^4.2.9" 1835 | jest-circus "^27.5.1" 1836 | jest-environment-jsdom "^27.5.1" 1837 | jest-environment-node "^27.5.1" 1838 | jest-get-type "^27.5.1" 1839 | jest-jasmine2 "^27.5.1" 1840 | jest-regex-util "^27.5.1" 1841 | jest-resolve "^27.5.1" 1842 | jest-runner "^27.5.1" 1843 | jest-util "^27.5.1" 1844 | jest-validate "^27.5.1" 1845 | micromatch "^4.0.4" 1846 | parse-json "^5.2.0" 1847 | pretty-format "^27.5.1" 1848 | slash "^3.0.0" 1849 | strip-json-comments "^3.1.1" 1850 | 1851 | jest-diff@^27.5.1: 1852 | version "27.5.1" 1853 | resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.5.1.tgz#a07f5011ac9e6643cf8a95a462b7b1ecf6680def" 1854 | integrity sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw== 1855 | dependencies: 1856 | chalk "^4.0.0" 1857 | diff-sequences "^27.5.1" 1858 | jest-get-type "^27.5.1" 1859 | pretty-format "^27.5.1" 1860 | 1861 | jest-docblock@^27.5.1: 1862 | version "27.5.1" 1863 | resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-27.5.1.tgz#14092f364a42c6108d42c33c8cf30e058e25f6c0" 1864 | integrity sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ== 1865 | dependencies: 1866 | detect-newline "^3.0.0" 1867 | 1868 | jest-each@^27.5.1: 1869 | version "27.5.1" 1870 | resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-27.5.1.tgz#5bc87016f45ed9507fed6e4702a5b468a5b2c44e" 1871 | integrity sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ== 1872 | dependencies: 1873 | "@jest/types" "^27.5.1" 1874 | chalk "^4.0.0" 1875 | jest-get-type "^27.5.1" 1876 | jest-util "^27.5.1" 1877 | pretty-format "^27.5.1" 1878 | 1879 | jest-environment-jsdom@^27.5.1: 1880 | version "27.5.1" 1881 | resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz#ea9ccd1fc610209655a77898f86b2b559516a546" 1882 | integrity sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw== 1883 | dependencies: 1884 | "@jest/environment" "^27.5.1" 1885 | "@jest/fake-timers" "^27.5.1" 1886 | "@jest/types" "^27.5.1" 1887 | "@types/node" "*" 1888 | jest-mock "^27.5.1" 1889 | jest-util "^27.5.1" 1890 | jsdom "^16.6.0" 1891 | 1892 | jest-environment-node@^27.5.1: 1893 | version "27.5.1" 1894 | resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-27.5.1.tgz#dedc2cfe52fab6b8f5714b4808aefa85357a365e" 1895 | integrity sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw== 1896 | dependencies: 1897 | "@jest/environment" "^27.5.1" 1898 | "@jest/fake-timers" "^27.5.1" 1899 | "@jest/types" "^27.5.1" 1900 | "@types/node" "*" 1901 | jest-mock "^27.5.1" 1902 | jest-util "^27.5.1" 1903 | 1904 | jest-get-type@^27.5.1: 1905 | version "27.5.1" 1906 | resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.5.1.tgz#3cd613c507b0f7ace013df407a1c1cd578bcb4f1" 1907 | integrity sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw== 1908 | 1909 | jest-haste-map@^27.5.1: 1910 | version "27.5.1" 1911 | resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-27.5.1.tgz#9fd8bd7e7b4fa502d9c6164c5640512b4e811e7f" 1912 | integrity sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng== 1913 | dependencies: 1914 | "@jest/types" "^27.5.1" 1915 | "@types/graceful-fs" "^4.1.2" 1916 | "@types/node" "*" 1917 | anymatch "^3.0.3" 1918 | fb-watchman "^2.0.0" 1919 | graceful-fs "^4.2.9" 1920 | jest-regex-util "^27.5.1" 1921 | jest-serializer "^27.5.1" 1922 | jest-util "^27.5.1" 1923 | jest-worker "^27.5.1" 1924 | micromatch "^4.0.4" 1925 | walker "^1.0.7" 1926 | optionalDependencies: 1927 | fsevents "^2.3.2" 1928 | 1929 | jest-jasmine2@^27.5.1: 1930 | version "27.5.1" 1931 | resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz#a037b0034ef49a9f3d71c4375a796f3b230d1ac4" 1932 | integrity sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ== 1933 | dependencies: 1934 | "@jest/environment" "^27.5.1" 1935 | "@jest/source-map" "^27.5.1" 1936 | "@jest/test-result" "^27.5.1" 1937 | "@jest/types" "^27.5.1" 1938 | "@types/node" "*" 1939 | chalk "^4.0.0" 1940 | co "^4.6.0" 1941 | expect "^27.5.1" 1942 | is-generator-fn "^2.0.0" 1943 | jest-each "^27.5.1" 1944 | jest-matcher-utils "^27.5.1" 1945 | jest-message-util "^27.5.1" 1946 | jest-runtime "^27.5.1" 1947 | jest-snapshot "^27.5.1" 1948 | jest-util "^27.5.1" 1949 | pretty-format "^27.5.1" 1950 | throat "^6.0.1" 1951 | 1952 | jest-leak-detector@^27.5.1: 1953 | version "27.5.1" 1954 | resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz#6ec9d54c3579dd6e3e66d70e3498adf80fde3fb8" 1955 | integrity sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ== 1956 | dependencies: 1957 | jest-get-type "^27.5.1" 1958 | pretty-format "^27.5.1" 1959 | 1960 | jest-matcher-utils@^27.5.1: 1961 | version "27.5.1" 1962 | resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz#9c0cdbda8245bc22d2331729d1091308b40cf8ab" 1963 | integrity sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw== 1964 | dependencies: 1965 | chalk "^4.0.0" 1966 | jest-diff "^27.5.1" 1967 | jest-get-type "^27.5.1" 1968 | pretty-format "^27.5.1" 1969 | 1970 | jest-message-util@^27.5.1: 1971 | version "27.5.1" 1972 | resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-27.5.1.tgz#bdda72806da10d9ed6425e12afff38cd1458b6cf" 1973 | integrity sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g== 1974 | dependencies: 1975 | "@babel/code-frame" "^7.12.13" 1976 | "@jest/types" "^27.5.1" 1977 | "@types/stack-utils" "^2.0.0" 1978 | chalk "^4.0.0" 1979 | graceful-fs "^4.2.9" 1980 | micromatch "^4.0.4" 1981 | pretty-format "^27.5.1" 1982 | slash "^3.0.0" 1983 | stack-utils "^2.0.3" 1984 | 1985 | jest-mock@^27.5.1: 1986 | version "27.5.1" 1987 | resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-27.5.1.tgz#19948336d49ef4d9c52021d34ac7b5f36ff967d6" 1988 | integrity sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og== 1989 | dependencies: 1990 | "@jest/types" "^27.5.1" 1991 | "@types/node" "*" 1992 | 1993 | jest-pnp-resolver@^1.2.2: 1994 | version "1.2.2" 1995 | resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" 1996 | integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== 1997 | 1998 | jest-regex-util@^27.5.1: 1999 | version "27.5.1" 2000 | resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-27.5.1.tgz#4da143f7e9fd1e542d4aa69617b38e4a78365b95" 2001 | integrity sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg== 2002 | 2003 | jest-resolve-dependencies@^27.5.1: 2004 | version "27.5.1" 2005 | resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz#d811ecc8305e731cc86dd79741ee98fed06f1da8" 2006 | integrity sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg== 2007 | dependencies: 2008 | "@jest/types" "^27.5.1" 2009 | jest-regex-util "^27.5.1" 2010 | jest-snapshot "^27.5.1" 2011 | 2012 | jest-resolve@^27.5.1: 2013 | version "27.5.1" 2014 | resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-27.5.1.tgz#a2f1c5a0796ec18fe9eb1536ac3814c23617b384" 2015 | integrity sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw== 2016 | dependencies: 2017 | "@jest/types" "^27.5.1" 2018 | chalk "^4.0.0" 2019 | graceful-fs "^4.2.9" 2020 | jest-haste-map "^27.5.1" 2021 | jest-pnp-resolver "^1.2.2" 2022 | jest-util "^27.5.1" 2023 | jest-validate "^27.5.1" 2024 | resolve "^1.20.0" 2025 | resolve.exports "^1.1.0" 2026 | slash "^3.0.0" 2027 | 2028 | jest-runner@^27.5.1: 2029 | version "27.5.1" 2030 | resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-27.5.1.tgz#071b27c1fa30d90540805c5645a0ec167c7b62e5" 2031 | integrity sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ== 2032 | dependencies: 2033 | "@jest/console" "^27.5.1" 2034 | "@jest/environment" "^27.5.1" 2035 | "@jest/test-result" "^27.5.1" 2036 | "@jest/transform" "^27.5.1" 2037 | "@jest/types" "^27.5.1" 2038 | "@types/node" "*" 2039 | chalk "^4.0.0" 2040 | emittery "^0.8.1" 2041 | graceful-fs "^4.2.9" 2042 | jest-docblock "^27.5.1" 2043 | jest-environment-jsdom "^27.5.1" 2044 | jest-environment-node "^27.5.1" 2045 | jest-haste-map "^27.5.1" 2046 | jest-leak-detector "^27.5.1" 2047 | jest-message-util "^27.5.1" 2048 | jest-resolve "^27.5.1" 2049 | jest-runtime "^27.5.1" 2050 | jest-util "^27.5.1" 2051 | jest-worker "^27.5.1" 2052 | source-map-support "^0.5.6" 2053 | throat "^6.0.1" 2054 | 2055 | jest-runtime@^27.5.1: 2056 | version "27.5.1" 2057 | resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-27.5.1.tgz#4896003d7a334f7e8e4a53ba93fb9bcd3db0a1af" 2058 | integrity sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A== 2059 | dependencies: 2060 | "@jest/environment" "^27.5.1" 2061 | "@jest/fake-timers" "^27.5.1" 2062 | "@jest/globals" "^27.5.1" 2063 | "@jest/source-map" "^27.5.1" 2064 | "@jest/test-result" "^27.5.1" 2065 | "@jest/transform" "^27.5.1" 2066 | "@jest/types" "^27.5.1" 2067 | chalk "^4.0.0" 2068 | cjs-module-lexer "^1.0.0" 2069 | collect-v8-coverage "^1.0.0" 2070 | execa "^5.0.0" 2071 | glob "^7.1.3" 2072 | graceful-fs "^4.2.9" 2073 | jest-haste-map "^27.5.1" 2074 | jest-message-util "^27.5.1" 2075 | jest-mock "^27.5.1" 2076 | jest-regex-util "^27.5.1" 2077 | jest-resolve "^27.5.1" 2078 | jest-snapshot "^27.5.1" 2079 | jest-util "^27.5.1" 2080 | slash "^3.0.0" 2081 | strip-bom "^4.0.0" 2082 | 2083 | jest-serializer@^27.5.1: 2084 | version "27.5.1" 2085 | resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-27.5.1.tgz#81438410a30ea66fd57ff730835123dea1fb1f64" 2086 | integrity sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w== 2087 | dependencies: 2088 | "@types/node" "*" 2089 | graceful-fs "^4.2.9" 2090 | 2091 | jest-snapshot@^27.5.1: 2092 | version "27.5.1" 2093 | resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-27.5.1.tgz#b668d50d23d38054a51b42c4039cab59ae6eb6a1" 2094 | integrity sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA== 2095 | dependencies: 2096 | "@babel/core" "^7.7.2" 2097 | "@babel/generator" "^7.7.2" 2098 | "@babel/plugin-syntax-typescript" "^7.7.2" 2099 | "@babel/traverse" "^7.7.2" 2100 | "@babel/types" "^7.0.0" 2101 | "@jest/transform" "^27.5.1" 2102 | "@jest/types" "^27.5.1" 2103 | "@types/babel__traverse" "^7.0.4" 2104 | "@types/prettier" "^2.1.5" 2105 | babel-preset-current-node-syntax "^1.0.0" 2106 | chalk "^4.0.0" 2107 | expect "^27.5.1" 2108 | graceful-fs "^4.2.9" 2109 | jest-diff "^27.5.1" 2110 | jest-get-type "^27.5.1" 2111 | jest-haste-map "^27.5.1" 2112 | jest-matcher-utils "^27.5.1" 2113 | jest-message-util "^27.5.1" 2114 | jest-util "^27.5.1" 2115 | natural-compare "^1.4.0" 2116 | pretty-format "^27.5.1" 2117 | semver "^7.3.2" 2118 | 2119 | jest-util@^27.5.1: 2120 | version "27.5.1" 2121 | resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-27.5.1.tgz#3ba9771e8e31a0b85da48fe0b0891fb86c01c2f9" 2122 | integrity sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw== 2123 | dependencies: 2124 | "@jest/types" "^27.5.1" 2125 | "@types/node" "*" 2126 | chalk "^4.0.0" 2127 | ci-info "^3.2.0" 2128 | graceful-fs "^4.2.9" 2129 | picomatch "^2.2.3" 2130 | 2131 | jest-validate@^27.5.1: 2132 | version "27.5.1" 2133 | resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-27.5.1.tgz#9197d54dc0bdb52260b8db40b46ae668e04df067" 2134 | integrity sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ== 2135 | dependencies: 2136 | "@jest/types" "^27.5.1" 2137 | camelcase "^6.2.0" 2138 | chalk "^4.0.0" 2139 | jest-get-type "^27.5.1" 2140 | leven "^3.1.0" 2141 | pretty-format "^27.5.1" 2142 | 2143 | jest-watcher@^27.5.1: 2144 | version "27.5.1" 2145 | resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-27.5.1.tgz#71bd85fb9bde3a2c2ec4dc353437971c43c642a2" 2146 | integrity sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw== 2147 | dependencies: 2148 | "@jest/test-result" "^27.5.1" 2149 | "@jest/types" "^27.5.1" 2150 | "@types/node" "*" 2151 | ansi-escapes "^4.2.1" 2152 | chalk "^4.0.0" 2153 | jest-util "^27.5.1" 2154 | string-length "^4.0.1" 2155 | 2156 | jest-worker@^27.5.1: 2157 | version "27.5.1" 2158 | resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" 2159 | integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== 2160 | dependencies: 2161 | "@types/node" "*" 2162 | merge-stream "^2.0.0" 2163 | supports-color "^8.0.0" 2164 | 2165 | jest@^27.5.1: 2166 | version "27.5.1" 2167 | resolved "https://registry.yarnpkg.com/jest/-/jest-27.5.1.tgz#dadf33ba70a779be7a6fc33015843b51494f63fc" 2168 | integrity sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ== 2169 | dependencies: 2170 | "@jest/core" "^27.5.1" 2171 | import-local "^3.0.2" 2172 | jest-cli "^27.5.1" 2173 | 2174 | js-tokens@^4.0.0: 2175 | version "4.0.0" 2176 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 2177 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 2178 | 2179 | js-yaml@^3.13.1: 2180 | version "3.14.1" 2181 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" 2182 | integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== 2183 | dependencies: 2184 | argparse "^1.0.7" 2185 | esprima "^4.0.0" 2186 | 2187 | js-yaml@^4.1.0: 2188 | version "4.1.0" 2189 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" 2190 | integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== 2191 | dependencies: 2192 | argparse "^2.0.1" 2193 | 2194 | jsdom@^16.6.0: 2195 | version "16.7.0" 2196 | resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.7.0.tgz#918ae71965424b197c819f8183a754e18977b710" 2197 | integrity sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw== 2198 | dependencies: 2199 | abab "^2.0.5" 2200 | acorn "^8.2.4" 2201 | acorn-globals "^6.0.0" 2202 | cssom "^0.4.4" 2203 | cssstyle "^2.3.0" 2204 | data-urls "^2.0.0" 2205 | decimal.js "^10.2.1" 2206 | domexception "^2.0.1" 2207 | escodegen "^2.0.0" 2208 | form-data "^3.0.0" 2209 | html-encoding-sniffer "^2.0.1" 2210 | http-proxy-agent "^4.0.1" 2211 | https-proxy-agent "^5.0.0" 2212 | is-potential-custom-element-name "^1.0.1" 2213 | nwsapi "^2.2.0" 2214 | parse5 "6.0.1" 2215 | saxes "^5.0.1" 2216 | symbol-tree "^3.2.4" 2217 | tough-cookie "^4.0.0" 2218 | w3c-hr-time "^1.0.2" 2219 | w3c-xmlserializer "^2.0.0" 2220 | webidl-conversions "^6.1.0" 2221 | whatwg-encoding "^1.0.5" 2222 | whatwg-mimetype "^2.3.0" 2223 | whatwg-url "^8.5.0" 2224 | ws "^7.4.6" 2225 | xml-name-validator "^3.0.0" 2226 | 2227 | jsesc@^2.5.1: 2228 | version "2.5.2" 2229 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" 2230 | integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== 2231 | 2232 | json-parse-even-better-errors@^2.3.0: 2233 | version "2.3.1" 2234 | resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" 2235 | integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== 2236 | 2237 | json-schema-traverse@^0.4.1: 2238 | version "0.4.1" 2239 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 2240 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 2241 | 2242 | json-stable-stringify-without-jsonify@^1.0.1: 2243 | version "1.0.1" 2244 | resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" 2245 | integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= 2246 | 2247 | json5@^2.1.2: 2248 | version "2.2.0" 2249 | resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" 2250 | integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== 2251 | dependencies: 2252 | minimist "^1.2.5" 2253 | 2254 | kleur@^3.0.3: 2255 | version "3.0.3" 2256 | resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" 2257 | integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== 2258 | 2259 | leven@^3.1.0: 2260 | version "3.1.0" 2261 | resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" 2262 | integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== 2263 | 2264 | levn@^0.4.1: 2265 | version "0.4.1" 2266 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" 2267 | integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== 2268 | dependencies: 2269 | prelude-ls "^1.2.1" 2270 | type-check "~0.4.0" 2271 | 2272 | levn@~0.3.0: 2273 | version "0.3.0" 2274 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" 2275 | integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= 2276 | dependencies: 2277 | prelude-ls "~1.1.2" 2278 | type-check "~0.3.2" 2279 | 2280 | lines-and-columns@^1.1.6: 2281 | version "1.2.4" 2282 | resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" 2283 | integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== 2284 | 2285 | locate-path@^5.0.0: 2286 | version "5.0.0" 2287 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" 2288 | integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== 2289 | dependencies: 2290 | p-locate "^4.1.0" 2291 | 2292 | lodash.merge@^4.6.2: 2293 | version "4.6.2" 2294 | resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" 2295 | integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== 2296 | 2297 | lodash@^4.7.0: 2298 | version "4.17.21" 2299 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" 2300 | integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== 2301 | 2302 | lru-cache@^6.0.0: 2303 | version "6.0.0" 2304 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" 2305 | integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== 2306 | dependencies: 2307 | yallist "^4.0.0" 2308 | 2309 | make-dir@^3.0.0: 2310 | version "3.1.0" 2311 | resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" 2312 | integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== 2313 | dependencies: 2314 | semver "^6.0.0" 2315 | 2316 | makeerror@1.0.12: 2317 | version "1.0.12" 2318 | resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" 2319 | integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== 2320 | dependencies: 2321 | tmpl "1.0.5" 2322 | 2323 | merge-stream@^2.0.0: 2324 | version "2.0.0" 2325 | resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" 2326 | integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== 2327 | 2328 | merge2@^1.3.0, merge2@^1.4.1: 2329 | version "1.4.1" 2330 | resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" 2331 | integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== 2332 | 2333 | micromatch@^4.0.4: 2334 | version "4.0.4" 2335 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" 2336 | integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== 2337 | dependencies: 2338 | braces "^3.0.1" 2339 | picomatch "^2.2.3" 2340 | 2341 | mime-db@1.51.0: 2342 | version "1.51.0" 2343 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.51.0.tgz#d9ff62451859b18342d960850dc3cfb77e63fb0c" 2344 | integrity sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g== 2345 | 2346 | mime-types@^2.1.12: 2347 | version "2.1.34" 2348 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.34.tgz#5a712f9ec1503511a945803640fafe09d3793c24" 2349 | integrity sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A== 2350 | dependencies: 2351 | mime-db "1.51.0" 2352 | 2353 | mimic-fn@^2.1.0: 2354 | version "2.1.0" 2355 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" 2356 | integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== 2357 | 2358 | minimatch@^3.0.4: 2359 | version "3.0.5" 2360 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.5.tgz#4da8f1290ee0f0f8e83d60ca69f8f134068604a3" 2361 | integrity sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw== 2362 | dependencies: 2363 | brace-expansion "^1.1.7" 2364 | 2365 | minimist@^1.2.5: 2366 | version "1.2.5" 2367 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" 2368 | integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== 2369 | 2370 | ms@2.1.2: 2371 | version "2.1.2" 2372 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 2373 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 2374 | 2375 | natural-compare@^1.4.0: 2376 | version "1.4.0" 2377 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" 2378 | integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= 2379 | 2380 | node-int64@^0.4.0: 2381 | version "0.4.0" 2382 | resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" 2383 | integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= 2384 | 2385 | node-releases@^2.0.1: 2386 | version "2.0.2" 2387 | resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.2.tgz#7139fe71e2f4f11b47d4d2986aaf8c48699e0c01" 2388 | integrity sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg== 2389 | 2390 | normalize-path@^3.0.0: 2391 | version "3.0.0" 2392 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 2393 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 2394 | 2395 | npm-run-path@^4.0.1: 2396 | version "4.0.1" 2397 | resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" 2398 | integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== 2399 | dependencies: 2400 | path-key "^3.0.0" 2401 | 2402 | nwsapi@^2.2.0: 2403 | version "2.2.0" 2404 | resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" 2405 | integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== 2406 | 2407 | once@^1.3.0: 2408 | version "1.4.0" 2409 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 2410 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 2411 | dependencies: 2412 | wrappy "1" 2413 | 2414 | onetime@^5.1.2: 2415 | version "5.1.2" 2416 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" 2417 | integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== 2418 | dependencies: 2419 | mimic-fn "^2.1.0" 2420 | 2421 | optionator@^0.8.1: 2422 | version "0.8.3" 2423 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" 2424 | integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== 2425 | dependencies: 2426 | deep-is "~0.1.3" 2427 | fast-levenshtein "~2.0.6" 2428 | levn "~0.3.0" 2429 | prelude-ls "~1.1.2" 2430 | type-check "~0.3.2" 2431 | word-wrap "~1.2.3" 2432 | 2433 | optionator@^0.9.1: 2434 | version "0.9.1" 2435 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" 2436 | integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== 2437 | dependencies: 2438 | deep-is "^0.1.3" 2439 | fast-levenshtein "^2.0.6" 2440 | levn "^0.4.1" 2441 | prelude-ls "^1.2.1" 2442 | type-check "^0.4.0" 2443 | word-wrap "^1.2.3" 2444 | 2445 | p-limit@^2.2.0: 2446 | version "2.3.0" 2447 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" 2448 | integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== 2449 | dependencies: 2450 | p-try "^2.0.0" 2451 | 2452 | p-locate@^4.1.0: 2453 | version "4.1.0" 2454 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" 2455 | integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== 2456 | dependencies: 2457 | p-limit "^2.2.0" 2458 | 2459 | p-try@^2.0.0: 2460 | version "2.2.0" 2461 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" 2462 | integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== 2463 | 2464 | parent-module@^1.0.0: 2465 | version "1.0.1" 2466 | resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" 2467 | integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== 2468 | dependencies: 2469 | callsites "^3.0.0" 2470 | 2471 | parse-json@^5.2.0: 2472 | version "5.2.0" 2473 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" 2474 | integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== 2475 | dependencies: 2476 | "@babel/code-frame" "^7.0.0" 2477 | error-ex "^1.3.1" 2478 | json-parse-even-better-errors "^2.3.0" 2479 | lines-and-columns "^1.1.6" 2480 | 2481 | parse5@6.0.1: 2482 | version "6.0.1" 2483 | resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" 2484 | integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== 2485 | 2486 | path-exists@^4.0.0: 2487 | version "4.0.0" 2488 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" 2489 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== 2490 | 2491 | path-is-absolute@^1.0.0: 2492 | version "1.0.1" 2493 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 2494 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 2495 | 2496 | path-key@^3.0.0, path-key@^3.1.0: 2497 | version "3.1.1" 2498 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" 2499 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 2500 | 2501 | path-parse@^1.0.7: 2502 | version "1.0.7" 2503 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" 2504 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== 2505 | 2506 | path-type@^4.0.0: 2507 | version "4.0.0" 2508 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" 2509 | integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== 2510 | 2511 | picocolors@^1.0.0: 2512 | version "1.0.0" 2513 | resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" 2514 | integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== 2515 | 2516 | picomatch@^2.0.4, picomatch@^2.2.3: 2517 | version "2.3.1" 2518 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" 2519 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== 2520 | 2521 | pirates@^4.0.4: 2522 | version "4.0.5" 2523 | resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" 2524 | integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== 2525 | 2526 | pkg-dir@^4.2.0: 2527 | version "4.2.0" 2528 | resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" 2529 | integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== 2530 | dependencies: 2531 | find-up "^4.0.0" 2532 | 2533 | prelude-ls@^1.2.1: 2534 | version "1.2.1" 2535 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" 2536 | integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== 2537 | 2538 | prelude-ls@~1.1.2: 2539 | version "1.1.2" 2540 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" 2541 | integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= 2542 | 2543 | prettier@^2.5.1: 2544 | version "2.5.1" 2545 | resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.5.1.tgz#fff75fa9d519c54cf0fce328c1017d94546bc56a" 2546 | integrity sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg== 2547 | 2548 | pretty-format@^27.5.1: 2549 | version "27.5.1" 2550 | resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" 2551 | integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== 2552 | dependencies: 2553 | ansi-regex "^5.0.1" 2554 | ansi-styles "^5.0.0" 2555 | react-is "^17.0.1" 2556 | 2557 | prompts@^2.0.1: 2558 | version "2.4.2" 2559 | resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" 2560 | integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== 2561 | dependencies: 2562 | kleur "^3.0.3" 2563 | sisteransi "^1.0.5" 2564 | 2565 | psl@^1.1.33: 2566 | version "1.8.0" 2567 | resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" 2568 | integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== 2569 | 2570 | punycode@^2.1.0, punycode@^2.1.1: 2571 | version "2.1.1" 2572 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" 2573 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== 2574 | 2575 | queue-microtask@^1.2.2: 2576 | version "1.2.3" 2577 | resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" 2578 | integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== 2579 | 2580 | react-is@^17.0.1: 2581 | version "17.0.2" 2582 | resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" 2583 | integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== 2584 | 2585 | regexpp@^3.0.0, regexpp@^3.2.0: 2586 | version "3.2.0" 2587 | resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" 2588 | integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== 2589 | 2590 | require-directory@^2.1.1: 2591 | version "2.1.1" 2592 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 2593 | integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= 2594 | 2595 | resolve-cwd@^3.0.0: 2596 | version "3.0.0" 2597 | resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" 2598 | integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== 2599 | dependencies: 2600 | resolve-from "^5.0.0" 2601 | 2602 | resolve-from@^4.0.0: 2603 | version "4.0.0" 2604 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" 2605 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== 2606 | 2607 | resolve-from@^5.0.0: 2608 | version "5.0.0" 2609 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" 2610 | integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== 2611 | 2612 | resolve.exports@^1.1.0: 2613 | version "1.1.0" 2614 | resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.0.tgz#5ce842b94b05146c0e03076985d1d0e7e48c90c9" 2615 | integrity sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ== 2616 | 2617 | resolve@^1.10.1, resolve@^1.20.0: 2618 | version "1.22.0" 2619 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198" 2620 | integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw== 2621 | dependencies: 2622 | is-core-module "^2.8.1" 2623 | path-parse "^1.0.7" 2624 | supports-preserve-symlinks-flag "^1.0.0" 2625 | 2626 | reusify@^1.0.4: 2627 | version "1.0.4" 2628 | resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" 2629 | integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== 2630 | 2631 | rimraf@^3.0.0, rimraf@^3.0.2: 2632 | version "3.0.2" 2633 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" 2634 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== 2635 | dependencies: 2636 | glob "^7.1.3" 2637 | 2638 | run-parallel@^1.1.9: 2639 | version "1.2.0" 2640 | resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" 2641 | integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== 2642 | dependencies: 2643 | queue-microtask "^1.2.2" 2644 | 2645 | safe-buffer@~5.1.1: 2646 | version "5.1.2" 2647 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 2648 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 2649 | 2650 | "safer-buffer@>= 2.1.2 < 3": 2651 | version "2.1.2" 2652 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 2653 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 2654 | 2655 | saxes@^5.0.1: 2656 | version "5.0.1" 2657 | resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" 2658 | integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== 2659 | dependencies: 2660 | xmlchars "^2.2.0" 2661 | 2662 | semver@^6.0.0, semver@^6.1.0, semver@^6.3.0: 2663 | version "6.3.0" 2664 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" 2665 | integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== 2666 | 2667 | semver@^7.3.2, semver@^7.3.5: 2668 | version "7.3.5" 2669 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" 2670 | integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== 2671 | dependencies: 2672 | lru-cache "^6.0.0" 2673 | 2674 | shebang-command@^2.0.0: 2675 | version "2.0.0" 2676 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" 2677 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 2678 | dependencies: 2679 | shebang-regex "^3.0.0" 2680 | 2681 | shebang-regex@^3.0.0: 2682 | version "3.0.0" 2683 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" 2684 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 2685 | 2686 | signal-exit@^3.0.2, signal-exit@^3.0.3: 2687 | version "3.0.7" 2688 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" 2689 | integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== 2690 | 2691 | sisteransi@^1.0.5: 2692 | version "1.0.5" 2693 | resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" 2694 | integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== 2695 | 2696 | slash@^3.0.0: 2697 | version "3.0.0" 2698 | resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" 2699 | integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== 2700 | 2701 | source-map-support@^0.5.6: 2702 | version "0.5.21" 2703 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" 2704 | integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== 2705 | dependencies: 2706 | buffer-from "^1.0.0" 2707 | source-map "^0.6.0" 2708 | 2709 | source-map@^0.5.0: 2710 | version "0.5.7" 2711 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" 2712 | integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= 2713 | 2714 | source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: 2715 | version "0.6.1" 2716 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 2717 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== 2718 | 2719 | source-map@^0.7.3: 2720 | version "0.7.3" 2721 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" 2722 | integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== 2723 | 2724 | sprintf-js@~1.0.2: 2725 | version "1.0.3" 2726 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 2727 | integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= 2728 | 2729 | stack-utils@^2.0.3: 2730 | version "2.0.5" 2731 | resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.5.tgz#d25265fca995154659dbbfba3b49254778d2fdd5" 2732 | integrity sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA== 2733 | dependencies: 2734 | escape-string-regexp "^2.0.0" 2735 | 2736 | string-length@^4.0.1: 2737 | version "4.0.2" 2738 | resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" 2739 | integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== 2740 | dependencies: 2741 | char-regex "^1.0.2" 2742 | strip-ansi "^6.0.0" 2743 | 2744 | string-width@^4.1.0, string-width@^4.2.0: 2745 | version "4.2.3" 2746 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" 2747 | integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== 2748 | dependencies: 2749 | emoji-regex "^8.0.0" 2750 | is-fullwidth-code-point "^3.0.0" 2751 | strip-ansi "^6.0.1" 2752 | 2753 | strip-ansi@^6.0.0, strip-ansi@^6.0.1: 2754 | version "6.0.1" 2755 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" 2756 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== 2757 | dependencies: 2758 | ansi-regex "^5.0.1" 2759 | 2760 | strip-bom@^4.0.0: 2761 | version "4.0.0" 2762 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" 2763 | integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== 2764 | 2765 | strip-final-newline@^2.0.0: 2766 | version "2.0.0" 2767 | resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" 2768 | integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== 2769 | 2770 | strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: 2771 | version "3.1.1" 2772 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" 2773 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== 2774 | 2775 | supports-color@^5.3.0: 2776 | version "5.5.0" 2777 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 2778 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 2779 | dependencies: 2780 | has-flag "^3.0.0" 2781 | 2782 | supports-color@^7.0.0, supports-color@^7.1.0: 2783 | version "7.2.0" 2784 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 2785 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 2786 | dependencies: 2787 | has-flag "^4.0.0" 2788 | 2789 | supports-color@^8.0.0: 2790 | version "8.1.1" 2791 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" 2792 | integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== 2793 | dependencies: 2794 | has-flag "^4.0.0" 2795 | 2796 | supports-hyperlinks@^2.0.0: 2797 | version "2.2.0" 2798 | resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz#4f77b42488765891774b70c79babd87f9bd594bb" 2799 | integrity sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ== 2800 | dependencies: 2801 | has-flag "^4.0.0" 2802 | supports-color "^7.0.0" 2803 | 2804 | supports-preserve-symlinks-flag@^1.0.0: 2805 | version "1.0.0" 2806 | resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" 2807 | integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== 2808 | 2809 | symbol-tree@^3.2.4: 2810 | version "3.2.4" 2811 | resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" 2812 | integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== 2813 | 2814 | terminal-link@^2.0.0: 2815 | version "2.1.1" 2816 | resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" 2817 | integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== 2818 | dependencies: 2819 | ansi-escapes "^4.2.1" 2820 | supports-hyperlinks "^2.0.0" 2821 | 2822 | test-exclude@^6.0.0: 2823 | version "6.0.0" 2824 | resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" 2825 | integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== 2826 | dependencies: 2827 | "@istanbuljs/schema" "^0.1.2" 2828 | glob "^7.1.4" 2829 | minimatch "^3.0.4" 2830 | 2831 | text-table@^0.2.0: 2832 | version "0.2.0" 2833 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" 2834 | integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= 2835 | 2836 | throat@^6.0.1: 2837 | version "6.0.1" 2838 | resolved "https://registry.yarnpkg.com/throat/-/throat-6.0.1.tgz#d514fedad95740c12c2d7fc70ea863eb51ade375" 2839 | integrity sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w== 2840 | 2841 | tmpl@1.0.5: 2842 | version "1.0.5" 2843 | resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" 2844 | integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== 2845 | 2846 | to-fast-properties@^2.0.0: 2847 | version "2.0.0" 2848 | resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" 2849 | integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= 2850 | 2851 | to-regex-range@^5.0.1: 2852 | version "5.0.1" 2853 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 2854 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 2855 | dependencies: 2856 | is-number "^7.0.0" 2857 | 2858 | tough-cookie@^4.0.0: 2859 | version "4.0.0" 2860 | resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4" 2861 | integrity sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg== 2862 | dependencies: 2863 | psl "^1.1.33" 2864 | punycode "^2.1.1" 2865 | universalify "^0.1.2" 2866 | 2867 | tr46@^2.1.0: 2868 | version "2.1.0" 2869 | resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240" 2870 | integrity sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw== 2871 | dependencies: 2872 | punycode "^2.1.1" 2873 | 2874 | tslib@^1.8.1: 2875 | version "1.14.1" 2876 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" 2877 | integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== 2878 | 2879 | tsutils@^3.21.0: 2880 | version "3.21.0" 2881 | resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" 2882 | integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== 2883 | dependencies: 2884 | tslib "^1.8.1" 2885 | 2886 | type-check@^0.4.0, type-check@~0.4.0: 2887 | version "0.4.0" 2888 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" 2889 | integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== 2890 | dependencies: 2891 | prelude-ls "^1.2.1" 2892 | 2893 | type-check@~0.3.2: 2894 | version "0.3.2" 2895 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" 2896 | integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= 2897 | dependencies: 2898 | prelude-ls "~1.1.2" 2899 | 2900 | type-detect@4.0.8: 2901 | version "4.0.8" 2902 | resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" 2903 | integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== 2904 | 2905 | type-fest@^0.20.2: 2906 | version "0.20.2" 2907 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" 2908 | integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== 2909 | 2910 | type-fest@^0.21.3: 2911 | version "0.21.3" 2912 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" 2913 | integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== 2914 | 2915 | typedarray-to-buffer@^3.1.5: 2916 | version "3.1.5" 2917 | resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" 2918 | integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== 2919 | dependencies: 2920 | is-typedarray "^1.0.0" 2921 | 2922 | universalify@^0.1.2: 2923 | version "0.1.2" 2924 | resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" 2925 | integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== 2926 | 2927 | uri-js@^4.2.2: 2928 | version "4.4.1" 2929 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" 2930 | integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== 2931 | dependencies: 2932 | punycode "^2.1.0" 2933 | 2934 | v8-compile-cache@^2.0.3: 2935 | version "2.3.0" 2936 | resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" 2937 | integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== 2938 | 2939 | v8-to-istanbul@^8.1.0: 2940 | version "8.1.1" 2941 | resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz#77b752fd3975e31bbcef938f85e9bd1c7a8d60ed" 2942 | integrity sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w== 2943 | dependencies: 2944 | "@types/istanbul-lib-coverage" "^2.0.1" 2945 | convert-source-map "^1.6.0" 2946 | source-map "^0.7.3" 2947 | 2948 | w3c-hr-time@^1.0.2: 2949 | version "1.0.2" 2950 | resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" 2951 | integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== 2952 | dependencies: 2953 | browser-process-hrtime "^1.0.0" 2954 | 2955 | w3c-xmlserializer@^2.0.0: 2956 | version "2.0.0" 2957 | resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" 2958 | integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== 2959 | dependencies: 2960 | xml-name-validator "^3.0.0" 2961 | 2962 | walker@^1.0.7: 2963 | version "1.0.8" 2964 | resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" 2965 | integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== 2966 | dependencies: 2967 | makeerror "1.0.12" 2968 | 2969 | webidl-conversions@^5.0.0: 2970 | version "5.0.0" 2971 | resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" 2972 | integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== 2973 | 2974 | webidl-conversions@^6.1.0: 2975 | version "6.1.0" 2976 | resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" 2977 | integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== 2978 | 2979 | whatwg-encoding@^1.0.5: 2980 | version "1.0.5" 2981 | resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" 2982 | integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== 2983 | dependencies: 2984 | iconv-lite "0.4.24" 2985 | 2986 | whatwg-mimetype@^2.3.0: 2987 | version "2.3.0" 2988 | resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" 2989 | integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== 2990 | 2991 | whatwg-url@^8.0.0, whatwg-url@^8.5.0: 2992 | version "8.7.0" 2993 | resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.7.0.tgz#656a78e510ff8f3937bc0bcbe9f5c0ac35941b77" 2994 | integrity sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg== 2995 | dependencies: 2996 | lodash "^4.7.0" 2997 | tr46 "^2.1.0" 2998 | webidl-conversions "^6.1.0" 2999 | 3000 | which@^2.0.1: 3001 | version "2.0.2" 3002 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 3003 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 3004 | dependencies: 3005 | isexe "^2.0.0" 3006 | 3007 | word-wrap@^1.2.3, word-wrap@~1.2.3: 3008 | version "1.2.3" 3009 | resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" 3010 | integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== 3011 | 3012 | wrap-ansi@^7.0.0: 3013 | version "7.0.0" 3014 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" 3015 | integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== 3016 | dependencies: 3017 | ansi-styles "^4.0.0" 3018 | string-width "^4.1.0" 3019 | strip-ansi "^6.0.0" 3020 | 3021 | wrappy@1: 3022 | version "1.0.2" 3023 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 3024 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 3025 | 3026 | write-file-atomic@^3.0.0: 3027 | version "3.0.3" 3028 | resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" 3029 | integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== 3030 | dependencies: 3031 | imurmurhash "^0.1.4" 3032 | is-typedarray "^1.0.0" 3033 | signal-exit "^3.0.2" 3034 | typedarray-to-buffer "^3.1.5" 3035 | 3036 | ws@^7.4.6: 3037 | version "7.5.7" 3038 | resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.7.tgz#9e0ac77ee50af70d58326ecff7e85eb3fa375e67" 3039 | integrity sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A== 3040 | 3041 | xml-name-validator@^3.0.0: 3042 | version "3.0.0" 3043 | resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" 3044 | integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== 3045 | 3046 | xmlchars@^2.2.0: 3047 | version "2.2.0" 3048 | resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" 3049 | integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== 3050 | 3051 | y18n@^5.0.5: 3052 | version "5.0.8" 3053 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" 3054 | integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== 3055 | 3056 | yallist@^4.0.0: 3057 | version "4.0.0" 3058 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" 3059 | integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== 3060 | 3061 | yargs-parser@^20.2.2: 3062 | version "20.2.9" 3063 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" 3064 | integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== 3065 | 3066 | yargs@^16.2.0: 3067 | version "16.2.0" 3068 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" 3069 | integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== 3070 | dependencies: 3071 | cliui "^7.0.2" 3072 | escalade "^3.1.1" 3073 | get-caller-file "^2.0.5" 3074 | require-directory "^2.1.1" 3075 | string-width "^4.2.0" 3076 | y18n "^5.0.5" 3077 | yargs-parser "^20.2.2" 3078 | --------------------------------------------------------------------------------