├── .eslintignore ├── .eslintrc.json ├── .gitattributes ├── .github └── workflows │ ├── nodejs.yml │ └── publish.yml ├── .gitignore ├── .travis.yml ├── CODEOWNERS ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── SECURITY.md ├── examples └── index.html ├── karma.config.cjs ├── package-lock.json ├── package.json ├── src └── index.ts ├── test ├── .eslintrc.json └── test.js └── tsconfig.json /.eslintignore: -------------------------------------------------------------------------------- 1 | dist 2 | -------------------------------------------------------------------------------- /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "root": true, 3 | "extends": [ 4 | "plugin:github/recommended", 5 | "plugin:github/browser", 6 | "plugin:github/typescript" 7 | ], 8 | "globals": { 9 | "CustomElementElement": "readonly" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto eol=lf 2 | -------------------------------------------------------------------------------- /.github/workflows/nodejs.yml: -------------------------------------------------------------------------------- 1 | name: Node CI 2 | 3 | on: [push, pull_request] 4 | jobs: 5 | build: 6 | runs-on: macos-latest 7 | steps: 8 | - uses: actions/checkout@v2 9 | - name: Use Node.js 12.x 10 | uses: actions/setup-node@v1 11 | with: 12 | node-version: 12.x 13 | - name: npm install, build, and test 14 | run: | 15 | npm install 16 | npm run build --if-present 17 | npm test 18 | env: 19 | CI: true 20 | -------------------------------------------------------------------------------- /.github/workflows/publish.yml: -------------------------------------------------------------------------------- 1 | name: Publish 2 | 3 | on: 4 | release: 5 | types: [created] 6 | 7 | jobs: 8 | publish-npm: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - uses: actions/checkout@v3 12 | - uses: actions/setup-node@v3 13 | with: 14 | node-version: 14 15 | registry-url: https://registry.npmjs.org/ 16 | cache: npm 17 | - run: npm ci 18 | - run: npm test 19 | - run: npm version ${TAG_NAME} --git-tag-version=false 20 | env: 21 | TAG_NAME: ${{ github.event.release.tag_name }} 22 | - run: npm whoami; npm --ignore-scripts publish 23 | env: 24 | NODE_AUTH_TOKEN: ${{secrets.npm_token}} 25 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | dist 2 | node_modules 3 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | sudo: required 3 | node_js: 4 | - "node" 5 | addons: 6 | chrome: stable 7 | cache: 8 | directories: 9 | - node_modules 10 | -------------------------------------------------------------------------------- /CODEOWNERS: -------------------------------------------------------------------------------- 1 | * @github/primer-reviewers 2 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | In the interest of fostering an open and welcoming environment, we as 6 | contributors and maintainers pledge to make participation in our project and 7 | our community a harassment-free experience for everyone, regardless of age, body 8 | size, disability, ethnicity, sex characteristics, gender identity and expression, 9 | level of experience, education, socio-economic status, nationality, personal 10 | appearance, race, religion, or sexual identity and orientation. 11 | 12 | ## Our Standards 13 | 14 | Examples of behavior that contributes to creating a positive environment 15 | include: 16 | 17 | * Using welcoming and inclusive language 18 | * Being respectful of differing viewpoints and experiences 19 | * Gracefully accepting constructive criticism 20 | * Focusing on what is best for the community 21 | * Showing empathy towards other community members 22 | 23 | Examples of unacceptable behavior by participants include: 24 | 25 | * The use of sexualized language or imagery and unwelcome sexual attention or 26 | advances 27 | * Trolling, insulting/derogatory comments, and personal or political attacks 28 | * Public or private harassment 29 | * Publishing others' private information, such as a physical or electronic 30 | address, without explicit permission 31 | * Other conduct which could reasonably be considered inappropriate in a 32 | professional setting 33 | 34 | ## Our Responsibilities 35 | 36 | Project maintainers are responsible for clarifying the standards of acceptable 37 | behavior and are expected to take appropriate and fair corrective action in 38 | response to any instances of unacceptable behavior. 39 | 40 | Project maintainers have the right and responsibility to remove, edit, or 41 | reject comments, commits, code, wiki edits, issues, and other contributions 42 | that are not aligned to this Code of Conduct, or to ban temporarily or 43 | permanently any contributor for other behaviors that they deem inappropriate, 44 | threatening, offensive, or harmful. 45 | 46 | ## Scope 47 | 48 | This Code of Conduct applies within all project spaces, and it also applies when 49 | an individual is representing the project or its community in public spaces. 50 | Examples of representing a project or community include using an official 51 | project e-mail address, posting via an official social media account, or acting 52 | as an appointed representative at an online or offline event. Representation of 53 | a project may be further defined and clarified by project maintainers. 54 | 55 | ## Enforcement 56 | 57 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 58 | reported by contacting the project team at opensource@github.com. All 59 | complaints will be reviewed and investigated and will result in a response that 60 | is deemed necessary and appropriate to the circumstances. The project team is 61 | obligated to maintain confidentiality with regard to the reporter of an incident. 62 | Further details of specific enforcement policies may be posted separately. 63 | 64 | Project maintainers who do not follow or enforce the Code of Conduct in good 65 | faith may face temporary or permanent repercussions as determined by other 66 | members of the project's leadership. 67 | 68 | ## Attribution 69 | 70 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, 71 | available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html 72 | 73 | [homepage]: https://www.contributor-covenant.org 74 | 75 | For answers to common questions about this code of conduct, see 76 | https://www.contributor-covenant.org/faq 77 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | ## Contributing 2 | 3 | [code-of-conduct]: CODE_OF_CONDUCT.md 4 | 5 | Hi there! We're thrilled that you'd like to contribute to this project. Your help is essential for keeping it great. 6 | 7 | Contributions to this project are [released](https://help.github.com/articles/github-terms-of-service/#6-contributions-under-repository-license) to the public under the [project's open source license](LICENSE). 8 | 9 | Please note that this project is released with a [Contributor Code of Conduct][code-of-conduct]. By participating in this project you agree to abide by its terms. 10 | 11 | ## Submitting a pull request 12 | 13 | 0. Fork and clone the repository 14 | 0. Configure and install the dependencies: `script/bootstrap` 15 | 0. Make sure the tests pass on your machine: `rake` 16 | 0. Create a new branch: `git checkout -b my-branch-name` 17 | 0. Make your change, add tests, and make sure the tests still pass 18 | 0. Push to your fork and submit a pull request 19 | 0. Pat your self on the back and wait for your pull request to be reviewed and merged. 20 | 21 | Here are a few things you can do that will increase the likelihood of your pull request being accepted: 22 | 23 | - Write tests. 24 | - Keep your change as focused as possible. If there are multiple changes you would like to make that are not dependent upon each other, consider submitting them as separate pull requests. 25 | - Write a [good commit message](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html). 26 | 27 | ## Resources 28 | 29 | - [How to Contribute to Open Source](https://opensource.guide/how-to-contribute/) 30 | - [Using Pull Requests](https://help.github.com/articles/about-pull-requests/) 31 | - [GitHub Help](https://help.github.com) 32 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2019 GitHub, Inc. 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining 4 | a copy of this software and associated documentation files (the 5 | "Software"), to deal in the Software without restriction, including 6 | without limitation the rights to use, copy, modify, merge, publish, 7 | distribute, sublicense, and/or sell copies of the Software, and to 8 | permit persons to whom the Software is furnished to do so, subject to 9 | the following conditions: 10 | 11 | The above copyright notice and this permission notice shall be 12 | included in all copies or substantial portions of the Software. 13 | 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 15 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 16 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 17 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 18 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 19 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # <typing-effect> element 2 | 3 | A custom element that shows text as if it were being typed 4 | 5 | ## Installation 6 | 7 | ``` 8 | $ npm install @github/typing-effect-element 9 | ``` 10 | 11 | ## Usage 12 | 13 | ```js 14 | import '@github/typing-effect-element' 15 | ``` 16 | 17 | ```html 18 | 19 | 20 | | 21 | 22 | ``` 23 | 24 | ## Accessibility 25 | 26 | This component detects whether `prefers-reduced-motion` is set on the window: 27 | 28 | ```js 29 | window.matchMedia('(prefers-reduced-motion)').matches === true 30 | ``` 31 | 32 | If this evaluates to true, any content lines provided will be appended immediately rather than being typed out with a delay. 33 | 34 | ## Browser support 35 | 36 | Browsers without native [custom element support][support] require a [polyfill][]. 37 | 38 | - Chrome 39 | - Firefox 40 | - Safari 41 | - Microsoft Edge 42 | 43 | [support]: https://caniuse.com/#feat=custom-elementsv1 44 | [polyfill]: https://github.com/webcomponents/custom-elements 45 | 46 | ## Development 47 | 48 | ``` 49 | npm install 50 | npm test 51 | ``` 52 | 53 | ## License 54 | 55 | Distributed under the MIT license. See LICENSE for details. 56 | -------------------------------------------------------------------------------- /SECURITY.md: -------------------------------------------------------------------------------- 1 | If you discover a security issue in this repository, please submit it through the [GitHub Security Bug Bounty](https://hackerone.com/github). 2 | -------------------------------------------------------------------------------- /examples/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | typing-effect demo 6 | 7 | 8 | 9 | 10 | | 11 | 12 | 13 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /karma.config.cjs: -------------------------------------------------------------------------------- 1 | process.env.CHROME_BIN = require('chromium').path 2 | 3 | module.exports = function (config) { 4 | config.set({ 5 | frameworks: ['mocha', 'chai'], 6 | files: [ 7 | { pattern: 'dist/index.js', type: 'module' }, 8 | { pattern: 'test/test.js', type: 'module' } 9 | ], 10 | reporters: ['mocha'], 11 | port: 9876, 12 | colors: true, 13 | logLevel: config.LOG_INFO, 14 | browsers: ['ChromeHeadless'], 15 | autoWatch: false, 16 | singleRun: true, 17 | concurrency: Infinity 18 | }) 19 | } 20 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@github/typing-effect-element", 3 | "version": "0.1.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@babel/code-frame": { 8 | "version": "7.12.11", 9 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", 10 | "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", 11 | "dev": true, 12 | "requires": { 13 | "@babel/highlight": "^7.10.4" 14 | } 15 | }, 16 | "@babel/helper-validator-identifier": { 17 | "version": "7.12.11", 18 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", 19 | "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", 20 | "dev": true 21 | }, 22 | "@babel/highlight": { 23 | "version": "7.13.10", 24 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", 25 | "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", 26 | "dev": true, 27 | "requires": { 28 | "@babel/helper-validator-identifier": "^7.12.11", 29 | "chalk": "^2.0.0", 30 | "js-tokens": "^4.0.0" 31 | } 32 | }, 33 | "@eslint/eslintrc": { 34 | "version": "0.4.0", 35 | "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.0.tgz", 36 | "integrity": "sha512-2ZPCc+uNbjV5ERJr+aKSPRwZgKd2z11x0EgLvb1PURmUrn9QNRXFqje0Ldq454PfAVyaJYyrDvvIKSFP4NnBog==", 37 | "dev": true, 38 | "requires": { 39 | "ajv": "^6.12.4", 40 | "debug": "^4.1.1", 41 | "espree": "^7.3.0", 42 | "globals": "^12.1.0", 43 | "ignore": "^4.0.6", 44 | "import-fresh": "^3.2.1", 45 | "js-yaml": "^3.13.1", 46 | "minimatch": "^3.0.4", 47 | "strip-json-comments": "^3.1.1" 48 | }, 49 | "dependencies": { 50 | "globals": { 51 | "version": "12.4.0", 52 | "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", 53 | "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", 54 | "dev": true, 55 | "requires": { 56 | "type-fest": "^0.8.1" 57 | } 58 | }, 59 | "type-fest": { 60 | "version": "0.8.1", 61 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", 62 | "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", 63 | "dev": true 64 | } 65 | } 66 | }, 67 | "@github/prettier-config": { 68 | "version": "0.0.4", 69 | "resolved": "https://registry.npmjs.org/@github/prettier-config/-/prettier-config-0.0.4.tgz", 70 | "integrity": "sha512-ZOJ+U771Mw68qp2GPbcqPt2Xg0LEl0YwiIFHXwVLAFm2TgDnsgcCHhXO8PIxOWPqSFO4S7xIMD9CBobfaWGASA==", 71 | "dev": true 72 | }, 73 | "@nodelib/fs.scandir": { 74 | "version": "2.1.4", 75 | "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz", 76 | "integrity": "sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA==", 77 | "dev": true, 78 | "requires": { 79 | "@nodelib/fs.stat": "2.0.4", 80 | "run-parallel": "^1.1.9" 81 | } 82 | }, 83 | "@nodelib/fs.stat": { 84 | "version": "2.0.4", 85 | "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz", 86 | "integrity": "sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==", 87 | "dev": true 88 | }, 89 | "@nodelib/fs.walk": { 90 | "version": "1.2.6", 91 | "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz", 92 | "integrity": "sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow==", 93 | "dev": true, 94 | "requires": { 95 | "@nodelib/fs.scandir": "2.1.4", 96 | "fastq": "^1.6.0" 97 | } 98 | }, 99 | "@sindresorhus/is": { 100 | "version": "4.4.0", 101 | "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.4.0.tgz", 102 | "integrity": "sha512-QppPM/8l3Mawvh4rn9CNEYIU9bxpXUCRMaX9yUpvBk1nMKusLKpfXGDEKExKaPhLzcn3lzil7pR6rnJ11HgeRQ==", 103 | "dev": true 104 | }, 105 | "@szmarczak/http-timer": { 106 | "version": "4.0.6", 107 | "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", 108 | "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", 109 | "dev": true, 110 | "requires": { 111 | "defer-to-connect": "^2.0.0" 112 | } 113 | }, 114 | "@types/cacheable-request": { 115 | "version": "6.0.2", 116 | "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.2.tgz", 117 | "integrity": "sha512-B3xVo+dlKM6nnKTcmm5ZtY/OL8bOAOd2Olee9M1zft65ox50OzjEHW91sDiU9j6cvW8Ejg1/Qkf4xd2kugApUA==", 118 | "dev": true, 119 | "requires": { 120 | "@types/http-cache-semantics": "*", 121 | "@types/keyv": "*", 122 | "@types/node": "*", 123 | "@types/responselike": "*" 124 | } 125 | }, 126 | "@types/component-emitter": { 127 | "version": "1.2.10", 128 | "resolved": "https://registry.npmjs.org/@types/component-emitter/-/component-emitter-1.2.10.tgz", 129 | "integrity": "sha512-bsjleuRKWmGqajMerkzox19aGbscQX5rmmvvXl3wlIp5gMG1HgkiwPxsN5p070fBDKTNSPgojVbuY1+HWMbFhg==", 130 | "dev": true 131 | }, 132 | "@types/cookie": { 133 | "version": "0.4.0", 134 | "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.0.tgz", 135 | "integrity": "sha512-y7mImlc/rNkvCRmg8gC3/lj87S7pTUIJ6QGjwHR9WQJcFs+ZMTOaoPrkdFA/YdbuqVEmEbb5RdhVxMkAcgOnpg==", 136 | "dev": true 137 | }, 138 | "@types/cors": { 139 | "version": "2.8.10", 140 | "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.10.tgz", 141 | "integrity": "sha512-C7srjHiVG3Ey1nR6d511dtDkCEjxuN9W1HWAEjGq8kpcwmNM6JJkpC0xvabM7BXTG2wDq8Eu33iH9aQKa7IvLQ==", 142 | "dev": true 143 | }, 144 | "@types/http-cache-semantics": { 145 | "version": "4.0.1", 146 | "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", 147 | "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==", 148 | "dev": true 149 | }, 150 | "@types/json-schema": { 151 | "version": "7.0.7", 152 | "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.7.tgz", 153 | "integrity": "sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==", 154 | "dev": true 155 | }, 156 | "@types/json5": { 157 | "version": "0.0.29", 158 | "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", 159 | "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", 160 | "dev": true 161 | }, 162 | "@types/keyv": { 163 | "version": "3.1.3", 164 | "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.3.tgz", 165 | "integrity": "sha512-FXCJgyyN3ivVgRoml4h94G/p3kY+u/B86La+QptcqJaWtBWtmc6TtkNfS40n9bIvyLteHh7zXOtgbobORKPbDg==", 166 | "dev": true, 167 | "requires": { 168 | "@types/node": "*" 169 | } 170 | }, 171 | "@types/node": { 172 | "version": "14.14.37", 173 | "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.37.tgz", 174 | "integrity": "sha512-XYmBiy+ohOR4Lh5jE379fV2IU+6Jn4g5qASinhitfyO71b/sCo6MKsMLF5tc7Zf2CE8hViVQyYSobJNke8OvUw==", 175 | "dev": true 176 | }, 177 | "@types/responselike": { 178 | "version": "1.0.0", 179 | "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", 180 | "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", 181 | "dev": true, 182 | "requires": { 183 | "@types/node": "*" 184 | } 185 | }, 186 | "@typescript-eslint/eslint-plugin": { 187 | "version": "4.21.0", 188 | "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.21.0.tgz", 189 | "integrity": "sha512-FPUyCPKZbVGexmbCFI3EQHzCZdy2/5f+jv6k2EDljGdXSRc0cKvbndd2nHZkSLqCNOPk0jB6lGzwIkglXcYVsQ==", 190 | "dev": true, 191 | "requires": { 192 | "@typescript-eslint/experimental-utils": "4.21.0", 193 | "@typescript-eslint/scope-manager": "4.21.0", 194 | "debug": "^4.1.1", 195 | "functional-red-black-tree": "^1.0.1", 196 | "lodash": "^4.17.15", 197 | "regexpp": "^3.0.0", 198 | "semver": "^7.3.2", 199 | "tsutils": "^3.17.1" 200 | } 201 | }, 202 | "@typescript-eslint/experimental-utils": { 203 | "version": "4.21.0", 204 | "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.21.0.tgz", 205 | "integrity": "sha512-cEbgosW/tUFvKmkg3cU7LBoZhvUs+ZPVM9alb25XvR0dal4qHL3SiUqHNrzoWSxaXA9gsifrYrS1xdDV6w/gIA==", 206 | "dev": true, 207 | "requires": { 208 | "@types/json-schema": "^7.0.3", 209 | "@typescript-eslint/scope-manager": "4.21.0", 210 | "@typescript-eslint/types": "4.21.0", 211 | "@typescript-eslint/typescript-estree": "4.21.0", 212 | "eslint-scope": "^5.0.0", 213 | "eslint-utils": "^2.0.0" 214 | } 215 | }, 216 | "@typescript-eslint/parser": { 217 | "version": "4.21.0", 218 | "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.21.0.tgz", 219 | "integrity": "sha512-eyNf7QmE5O/l1smaQgN0Lj2M/1jOuNg2NrBm1dqqQN0sVngTLyw8tdCbih96ixlhbF1oINoN8fDCyEH9SjLeIA==", 220 | "dev": true, 221 | "requires": { 222 | "@typescript-eslint/scope-manager": "4.21.0", 223 | "@typescript-eslint/types": "4.21.0", 224 | "@typescript-eslint/typescript-estree": "4.21.0", 225 | "debug": "^4.1.1" 226 | } 227 | }, 228 | "@typescript-eslint/scope-manager": { 229 | "version": "4.21.0", 230 | "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.21.0.tgz", 231 | "integrity": "sha512-kfOjF0w1Ix7+a5T1knOw00f7uAP9Gx44+OEsNQi0PvvTPLYeXJlsCJ4tYnDj5PQEYfpcgOH5yBlw7K+UEI9Agw==", 232 | "dev": true, 233 | "requires": { 234 | "@typescript-eslint/types": "4.21.0", 235 | "@typescript-eslint/visitor-keys": "4.21.0" 236 | } 237 | }, 238 | "@typescript-eslint/types": { 239 | "version": "4.21.0", 240 | "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.21.0.tgz", 241 | "integrity": "sha512-+OQaupjGVVc8iXbt6M1oZMwyKQNehAfLYJJ3SdvnofK2qcjfor9pEM62rVjBknhowTkh+2HF+/KdRAc/wGBN2w==", 242 | "dev": true 243 | }, 244 | "@typescript-eslint/typescript-estree": { 245 | "version": "4.21.0", 246 | "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.21.0.tgz", 247 | "integrity": "sha512-ZD3M7yLaVGVYLw4nkkoGKumb7Rog7QID9YOWobFDMQKNl+vPxqVIW/uDk+MDeGc+OHcoG2nJ2HphwiPNajKw3w==", 248 | "dev": true, 249 | "requires": { 250 | "@typescript-eslint/types": "4.21.0", 251 | "@typescript-eslint/visitor-keys": "4.21.0", 252 | "debug": "^4.1.1", 253 | "globby": "^11.0.1", 254 | "is-glob": "^4.0.1", 255 | "semver": "^7.3.2", 256 | "tsutils": "^3.17.1" 257 | } 258 | }, 259 | "@typescript-eslint/visitor-keys": { 260 | "version": "4.21.0", 261 | "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.21.0.tgz", 262 | "integrity": "sha512-dH22dROWGi5Z6p+Igc8bLVLmwy7vEe8r+8c+raPQU0LxgogPUrRAtRGtvBWmlr9waTu3n+QLt/qrS/hWzk1x5w==", 263 | "dev": true, 264 | "requires": { 265 | "@typescript-eslint/types": "4.21.0", 266 | "eslint-visitor-keys": "^2.0.0" 267 | } 268 | }, 269 | "@ungap/promise-all-settled": { 270 | "version": "1.1.2", 271 | "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", 272 | "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", 273 | "dev": true 274 | }, 275 | "accepts": { 276 | "version": "1.3.7", 277 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", 278 | "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", 279 | "dev": true, 280 | "requires": { 281 | "mime-types": "~2.1.24", 282 | "negotiator": "0.6.2" 283 | } 284 | }, 285 | "acorn": { 286 | "version": "7.4.1", 287 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", 288 | "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", 289 | "dev": true 290 | }, 291 | "acorn-jsx": { 292 | "version": "5.3.1", 293 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", 294 | "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", 295 | "dev": true 296 | }, 297 | "ajv": { 298 | "version": "6.12.6", 299 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 300 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 301 | "dev": true, 302 | "requires": { 303 | "fast-deep-equal": "^3.1.1", 304 | "fast-json-stable-stringify": "^2.0.0", 305 | "json-schema-traverse": "^0.4.1", 306 | "uri-js": "^4.2.2" 307 | } 308 | }, 309 | "ansi-colors": { 310 | "version": "4.1.1", 311 | "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", 312 | "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", 313 | "dev": true 314 | }, 315 | "ansi-regex": { 316 | "version": "5.0.0", 317 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", 318 | "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", 319 | "dev": true 320 | }, 321 | "ansi-styles": { 322 | "version": "3.2.1", 323 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 324 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 325 | "dev": true, 326 | "requires": { 327 | "color-convert": "^1.9.0" 328 | } 329 | }, 330 | "anymatch": { 331 | "version": "3.1.1", 332 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", 333 | "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", 334 | "dev": true, 335 | "requires": { 336 | "normalize-path": "^3.0.0", 337 | "picomatch": "^2.0.4" 338 | } 339 | }, 340 | "argparse": { 341 | "version": "1.0.10", 342 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", 343 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", 344 | "dev": true, 345 | "requires": { 346 | "sprintf-js": "~1.0.2" 347 | } 348 | }, 349 | "array-includes": { 350 | "version": "3.1.3", 351 | "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.3.tgz", 352 | "integrity": "sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A==", 353 | "dev": true, 354 | "requires": { 355 | "call-bind": "^1.0.2", 356 | "define-properties": "^1.1.3", 357 | "es-abstract": "^1.18.0-next.2", 358 | "get-intrinsic": "^1.1.1", 359 | "is-string": "^1.0.5" 360 | } 361 | }, 362 | "array-union": { 363 | "version": "2.1.0", 364 | "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", 365 | "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", 366 | "dev": true 367 | }, 368 | "array.prototype.flat": { 369 | "version": "1.2.4", 370 | "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz", 371 | "integrity": "sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg==", 372 | "dev": true, 373 | "requires": { 374 | "call-bind": "^1.0.0", 375 | "define-properties": "^1.1.3", 376 | "es-abstract": "^1.18.0-next.1" 377 | } 378 | }, 379 | "assertion-error": { 380 | "version": "1.1.0", 381 | "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", 382 | "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", 383 | "dev": true 384 | }, 385 | "astral-regex": { 386 | "version": "2.0.0", 387 | "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", 388 | "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", 389 | "dev": true 390 | }, 391 | "balanced-match": { 392 | "version": "1.0.0", 393 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 394 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", 395 | "dev": true 396 | }, 397 | "base64-arraybuffer": { 398 | "version": "0.1.4", 399 | "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz", 400 | "integrity": "sha1-mBjHngWbE1X5fgQooBfIOOkLqBI=", 401 | "dev": true 402 | }, 403 | "base64id": { 404 | "version": "2.0.0", 405 | "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", 406 | "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", 407 | "dev": true 408 | }, 409 | "binary-extensions": { 410 | "version": "2.0.0", 411 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", 412 | "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==", 413 | "dev": true 414 | }, 415 | "body-parser": { 416 | "version": "1.19.0", 417 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", 418 | "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", 419 | "dev": true, 420 | "requires": { 421 | "bytes": "3.1.0", 422 | "content-type": "~1.0.4", 423 | "debug": "2.6.9", 424 | "depd": "~1.1.2", 425 | "http-errors": "1.7.2", 426 | "iconv-lite": "0.4.24", 427 | "on-finished": "~2.3.0", 428 | "qs": "6.7.0", 429 | "raw-body": "2.4.0", 430 | "type-is": "~1.6.17" 431 | }, 432 | "dependencies": { 433 | "debug": { 434 | "version": "2.6.9", 435 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 436 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 437 | "dev": true, 438 | "requires": { 439 | "ms": "2.0.0" 440 | } 441 | }, 442 | "ms": { 443 | "version": "2.0.0", 444 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 445 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 446 | "dev": true 447 | } 448 | } 449 | }, 450 | "brace-expansion": { 451 | "version": "1.1.11", 452 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 453 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 454 | "dev": true, 455 | "requires": { 456 | "balanced-match": "^1.0.0", 457 | "concat-map": "0.0.1" 458 | } 459 | }, 460 | "braces": { 461 | "version": "3.0.2", 462 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 463 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 464 | "dev": true, 465 | "requires": { 466 | "fill-range": "^7.0.1" 467 | } 468 | }, 469 | "browser-stdout": { 470 | "version": "1.3.1", 471 | "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", 472 | "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", 473 | "dev": true 474 | }, 475 | "buffer-crc32": { 476 | "version": "0.2.13", 477 | "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", 478 | "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", 479 | "dev": true 480 | }, 481 | "buffer-from": { 482 | "version": "1.1.2", 483 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", 484 | "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", 485 | "dev": true 486 | }, 487 | "bytes": { 488 | "version": "3.1.0", 489 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", 490 | "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", 491 | "dev": true 492 | }, 493 | "cacheable-lookup": { 494 | "version": "5.0.4", 495 | "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", 496 | "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", 497 | "dev": true 498 | }, 499 | "cacheable-request": { 500 | "version": "7.0.2", 501 | "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz", 502 | "integrity": "sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==", 503 | "dev": true, 504 | "requires": { 505 | "clone-response": "^1.0.2", 506 | "get-stream": "^5.1.0", 507 | "http-cache-semantics": "^4.0.0", 508 | "keyv": "^4.0.0", 509 | "lowercase-keys": "^2.0.0", 510 | "normalize-url": "^6.0.1", 511 | "responselike": "^2.0.0" 512 | } 513 | }, 514 | "cachedir": { 515 | "version": "2.3.0", 516 | "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.3.0.tgz", 517 | "integrity": "sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==", 518 | "dev": true 519 | }, 520 | "call-bind": { 521 | "version": "1.0.2", 522 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", 523 | "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", 524 | "dev": true, 525 | "requires": { 526 | "function-bind": "^1.1.1", 527 | "get-intrinsic": "^1.0.2" 528 | } 529 | }, 530 | "callsites": { 531 | "version": "3.1.0", 532 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 533 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", 534 | "dev": true 535 | }, 536 | "chai": { 537 | "version": "4.3.4", 538 | "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.4.tgz", 539 | "integrity": "sha512-yS5H68VYOCtN1cjfwumDSuzn/9c+yza4f3reKXlE5rUg7SFcCEy90gJvydNgOYtblyf4Zi6jIWRnXOgErta0KA==", 540 | "dev": true, 541 | "requires": { 542 | "assertion-error": "^1.1.0", 543 | "check-error": "^1.0.2", 544 | "deep-eql": "^3.0.1", 545 | "get-func-name": "^2.0.0", 546 | "pathval": "^1.1.1", 547 | "type-detect": "^4.0.5" 548 | } 549 | }, 550 | "chalk": { 551 | "version": "2.4.2", 552 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 553 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 554 | "dev": true, 555 | "requires": { 556 | "ansi-styles": "^3.2.1", 557 | "escape-string-regexp": "^1.0.5", 558 | "supports-color": "^5.3.0" 559 | } 560 | }, 561 | "check-error": { 562 | "version": "1.0.2", 563 | "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", 564 | "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", 565 | "dev": true 566 | }, 567 | "chokidar": { 568 | "version": "3.5.1", 569 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", 570 | "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", 571 | "dev": true, 572 | "requires": { 573 | "anymatch": "~3.1.1", 574 | "braces": "~3.0.2", 575 | "fsevents": "~2.3.1", 576 | "glob-parent": "~5.1.0", 577 | "is-binary-path": "~2.1.0", 578 | "is-glob": "~4.0.1", 579 | "normalize-path": "~3.0.0", 580 | "readdirp": "~3.5.0" 581 | } 582 | }, 583 | "chromium": { 584 | "version": "3.0.3", 585 | "resolved": "https://registry.npmjs.org/chromium/-/chromium-3.0.3.tgz", 586 | "integrity": "sha512-TfbzP/3t38Us5xrbb9x87M/y5I/j3jx0zeJhhQ72gjp6dwJuhVP6hBZnBH4wEg7512VVXk9zCfTuPFOdw7bQqg==", 587 | "dev": true, 588 | "requires": { 589 | "cachedir": "^2.3.0", 590 | "debug": "^4.1.0", 591 | "extract-zip": "^1.7.0", 592 | "got": "^11.5.1", 593 | "progress": "^2.0.3", 594 | "rimraf": "^2.7.1", 595 | "tmp": "0.0.33", 596 | "tunnel": "^0.0.6" 597 | }, 598 | "dependencies": { 599 | "rimraf": { 600 | "version": "2.7.1", 601 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", 602 | "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", 603 | "dev": true, 604 | "requires": { 605 | "glob": "^7.1.3" 606 | } 607 | } 608 | } 609 | }, 610 | "cliui": { 611 | "version": "7.0.4", 612 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", 613 | "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", 614 | "dev": true, 615 | "requires": { 616 | "string-width": "^4.2.0", 617 | "strip-ansi": "^6.0.0", 618 | "wrap-ansi": "^7.0.0" 619 | } 620 | }, 621 | "clone-response": { 622 | "version": "1.0.2", 623 | "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", 624 | "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", 625 | "dev": true, 626 | "requires": { 627 | "mimic-response": "^1.0.0" 628 | } 629 | }, 630 | "color-convert": { 631 | "version": "1.9.2", 632 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.2.tgz", 633 | "integrity": "sha512-3NUJZdhMhcdPn8vJ9v2UQJoH0qqoGUkYTgFEPZaPjEtwmmKUfNV46zZmgB2M5M4DCEQHMaCfWHCxiBflLm04Tg==", 634 | "dev": true, 635 | "requires": { 636 | "color-name": "1.1.1" 637 | } 638 | }, 639 | "color-name": { 640 | "version": "1.1.1", 641 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.1.tgz", 642 | "integrity": "sha1-SxQVMEz1ACjqgWQ2Q72C6gWANok=", 643 | "dev": true 644 | }, 645 | "colors": { 646 | "version": "1.4.0", 647 | "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", 648 | "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", 649 | "dev": true 650 | }, 651 | "component-emitter": { 652 | "version": "1.3.0", 653 | "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", 654 | "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", 655 | "dev": true 656 | }, 657 | "concat-map": { 658 | "version": "0.0.1", 659 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 660 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 661 | "dev": true 662 | }, 663 | "concat-stream": { 664 | "version": "1.6.2", 665 | "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", 666 | "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", 667 | "dev": true, 668 | "requires": { 669 | "buffer-from": "^1.0.0", 670 | "inherits": "^2.0.3", 671 | "readable-stream": "^2.2.2", 672 | "typedarray": "^0.0.6" 673 | } 674 | }, 675 | "connect": { 676 | "version": "3.7.0", 677 | "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", 678 | "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", 679 | "dev": true, 680 | "requires": { 681 | "debug": "2.6.9", 682 | "finalhandler": "1.1.2", 683 | "parseurl": "~1.3.3", 684 | "utils-merge": "1.0.1" 685 | }, 686 | "dependencies": { 687 | "debug": { 688 | "version": "2.6.9", 689 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 690 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 691 | "dev": true, 692 | "requires": { 693 | "ms": "2.0.0" 694 | } 695 | }, 696 | "ms": { 697 | "version": "2.0.0", 698 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 699 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 700 | "dev": true 701 | } 702 | } 703 | }, 704 | "contains-path": { 705 | "version": "0.1.0", 706 | "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", 707 | "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", 708 | "dev": true 709 | }, 710 | "content-type": { 711 | "version": "1.0.4", 712 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", 713 | "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", 714 | "dev": true 715 | }, 716 | "cookie": { 717 | "version": "0.4.1", 718 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", 719 | "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", 720 | "dev": true 721 | }, 722 | "core-util-is": { 723 | "version": "1.0.3", 724 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", 725 | "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", 726 | "dev": true 727 | }, 728 | "cors": { 729 | "version": "2.8.5", 730 | "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", 731 | "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", 732 | "dev": true, 733 | "requires": { 734 | "object-assign": "^4", 735 | "vary": "^1" 736 | } 737 | }, 738 | "cross-spawn": { 739 | "version": "7.0.3", 740 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", 741 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", 742 | "dev": true, 743 | "requires": { 744 | "path-key": "^3.1.0", 745 | "shebang-command": "^2.0.0", 746 | "which": "^2.0.1" 747 | }, 748 | "dependencies": { 749 | "which": { 750 | "version": "2.0.2", 751 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 752 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 753 | "dev": true, 754 | "requires": { 755 | "isexe": "^2.0.0" 756 | } 757 | } 758 | } 759 | }, 760 | "custom-event": { 761 | "version": "1.0.1", 762 | "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", 763 | "integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=", 764 | "dev": true 765 | }, 766 | "date-format": { 767 | "version": "3.0.0", 768 | "resolved": "https://registry.npmjs.org/date-format/-/date-format-3.0.0.tgz", 769 | "integrity": "sha512-eyTcpKOcamdhWJXj56DpQMo1ylSQpcGtGKXcU0Tb97+K56/CF5amAqqqNj0+KvA0iw2ynxtHWFsPDSClCxe48w==", 770 | "dev": true 771 | }, 772 | "debug": { 773 | "version": "4.3.1", 774 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", 775 | "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", 776 | "dev": true, 777 | "requires": { 778 | "ms": "2.1.2" 779 | } 780 | }, 781 | "decompress-response": { 782 | "version": "6.0.0", 783 | "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", 784 | "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", 785 | "dev": true, 786 | "requires": { 787 | "mimic-response": "^3.1.0" 788 | }, 789 | "dependencies": { 790 | "mimic-response": { 791 | "version": "3.1.0", 792 | "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", 793 | "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", 794 | "dev": true 795 | } 796 | } 797 | }, 798 | "deep-eql": { 799 | "version": "3.0.1", 800 | "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", 801 | "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", 802 | "dev": true, 803 | "requires": { 804 | "type-detect": "^4.0.0" 805 | } 806 | }, 807 | "deep-is": { 808 | "version": "0.1.3", 809 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", 810 | "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", 811 | "dev": true 812 | }, 813 | "defer-to-connect": { 814 | "version": "2.0.1", 815 | "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", 816 | "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", 817 | "dev": true 818 | }, 819 | "define-properties": { 820 | "version": "1.1.3", 821 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", 822 | "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", 823 | "dev": true, 824 | "requires": { 825 | "object-keys": "^1.0.12" 826 | } 827 | }, 828 | "depd": { 829 | "version": "1.1.2", 830 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", 831 | "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", 832 | "dev": true 833 | }, 834 | "di": { 835 | "version": "0.0.1", 836 | "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", 837 | "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=", 838 | "dev": true 839 | }, 840 | "diff": { 841 | "version": "5.0.0", 842 | "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", 843 | "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", 844 | "dev": true 845 | }, 846 | "dir-glob": { 847 | "version": "3.0.1", 848 | "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", 849 | "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", 850 | "dev": true, 851 | "requires": { 852 | "path-type": "^4.0.0" 853 | } 854 | }, 855 | "doctrine": { 856 | "version": "3.0.0", 857 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", 858 | "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", 859 | "dev": true, 860 | "requires": { 861 | "esutils": "^2.0.2" 862 | } 863 | }, 864 | "dom-serialize": { 865 | "version": "2.2.1", 866 | "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", 867 | "integrity": "sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=", 868 | "dev": true, 869 | "requires": { 870 | "custom-event": "~1.0.0", 871 | "ent": "~2.2.0", 872 | "extend": "^3.0.0", 873 | "void-elements": "^2.0.0" 874 | } 875 | }, 876 | "ee-first": { 877 | "version": "1.1.1", 878 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 879 | "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", 880 | "dev": true 881 | }, 882 | "emoji-regex": { 883 | "version": "8.0.0", 884 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 885 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 886 | "dev": true 887 | }, 888 | "encodeurl": { 889 | "version": "1.0.2", 890 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", 891 | "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", 892 | "dev": true 893 | }, 894 | "end-of-stream": { 895 | "version": "1.4.4", 896 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", 897 | "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", 898 | "dev": true, 899 | "requires": { 900 | "once": "^1.4.0" 901 | } 902 | }, 903 | "engine.io": { 904 | "version": "4.1.1", 905 | "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-4.1.1.tgz", 906 | "integrity": "sha512-t2E9wLlssQjGw0nluF6aYyfX8LwYU8Jj0xct+pAhfWfv/YrBn6TSNtEYsgxHIfaMqfrLx07czcMg9bMN6di+3w==", 907 | "dev": true, 908 | "requires": { 909 | "accepts": "~1.3.4", 910 | "base64id": "2.0.0", 911 | "cookie": "~0.4.1", 912 | "cors": "~2.8.5", 913 | "debug": "~4.3.1", 914 | "engine.io-parser": "~4.0.0", 915 | "ws": "~7.4.2" 916 | } 917 | }, 918 | "engine.io-parser": { 919 | "version": "4.0.2", 920 | "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-4.0.2.tgz", 921 | "integrity": "sha512-sHfEQv6nmtJrq6TKuIz5kyEKH/qSdK56H/A+7DnAuUPWosnIZAS2NHNcPLmyjtY3cGS/MqJdZbUjW97JU72iYg==", 922 | "dev": true, 923 | "requires": { 924 | "base64-arraybuffer": "0.1.4" 925 | } 926 | }, 927 | "enquirer": { 928 | "version": "2.3.6", 929 | "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", 930 | "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", 931 | "dev": true, 932 | "requires": { 933 | "ansi-colors": "^4.1.1" 934 | } 935 | }, 936 | "ent": { 937 | "version": "2.2.0", 938 | "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", 939 | "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=", 940 | "dev": true 941 | }, 942 | "error-ex": { 943 | "version": "1.3.2", 944 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", 945 | "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", 946 | "dev": true, 947 | "requires": { 948 | "is-arrayish": "^0.2.1" 949 | } 950 | }, 951 | "es-abstract": { 952 | "version": "1.18.0", 953 | "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", 954 | "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", 955 | "dev": true, 956 | "requires": { 957 | "call-bind": "^1.0.2", 958 | "es-to-primitive": "^1.2.1", 959 | "function-bind": "^1.1.1", 960 | "get-intrinsic": "^1.1.1", 961 | "has": "^1.0.3", 962 | "has-symbols": "^1.0.2", 963 | "is-callable": "^1.2.3", 964 | "is-negative-zero": "^2.0.1", 965 | "is-regex": "^1.1.2", 966 | "is-string": "^1.0.5", 967 | "object-inspect": "^1.9.0", 968 | "object-keys": "^1.1.1", 969 | "object.assign": "^4.1.2", 970 | "string.prototype.trimend": "^1.0.4", 971 | "string.prototype.trimstart": "^1.0.4", 972 | "unbox-primitive": "^1.0.0" 973 | }, 974 | "dependencies": { 975 | "object.assign": { 976 | "version": "4.1.2", 977 | "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", 978 | "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", 979 | "dev": true, 980 | "requires": { 981 | "call-bind": "^1.0.0", 982 | "define-properties": "^1.1.3", 983 | "has-symbols": "^1.0.1", 984 | "object-keys": "^1.1.1" 985 | } 986 | } 987 | } 988 | }, 989 | "es-to-primitive": { 990 | "version": "1.2.1", 991 | "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", 992 | "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", 993 | "dev": true, 994 | "requires": { 995 | "is-callable": "^1.1.4", 996 | "is-date-object": "^1.0.1", 997 | "is-symbol": "^1.0.2" 998 | } 999 | }, 1000 | "escalade": { 1001 | "version": "3.1.1", 1002 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", 1003 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", 1004 | "dev": true 1005 | }, 1006 | "escape-html": { 1007 | "version": "1.0.3", 1008 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 1009 | "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", 1010 | "dev": true 1011 | }, 1012 | "escape-string-regexp": { 1013 | "version": "1.0.5", 1014 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 1015 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 1016 | "dev": true 1017 | }, 1018 | "eslint": { 1019 | "version": "7.24.0", 1020 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.24.0.tgz", 1021 | "integrity": "sha512-k9gaHeHiFmGCDQ2rEfvULlSLruz6tgfA8DEn+rY9/oYPFFTlz55mM/Q/Rij1b2Y42jwZiK3lXvNTw6w6TXzcKQ==", 1022 | "dev": true, 1023 | "requires": { 1024 | "@babel/code-frame": "7.12.11", 1025 | "@eslint/eslintrc": "^0.4.0", 1026 | "ajv": "^6.10.0", 1027 | "chalk": "^4.0.0", 1028 | "cross-spawn": "^7.0.2", 1029 | "debug": "^4.0.1", 1030 | "doctrine": "^3.0.0", 1031 | "enquirer": "^2.3.5", 1032 | "eslint-scope": "^5.1.1", 1033 | "eslint-utils": "^2.1.0", 1034 | "eslint-visitor-keys": "^2.0.0", 1035 | "espree": "^7.3.1", 1036 | "esquery": "^1.4.0", 1037 | "esutils": "^2.0.2", 1038 | "file-entry-cache": "^6.0.1", 1039 | "functional-red-black-tree": "^1.0.1", 1040 | "glob-parent": "^5.0.0", 1041 | "globals": "^13.6.0", 1042 | "ignore": "^4.0.6", 1043 | "import-fresh": "^3.0.0", 1044 | "imurmurhash": "^0.1.4", 1045 | "is-glob": "^4.0.0", 1046 | "js-yaml": "^3.13.1", 1047 | "json-stable-stringify-without-jsonify": "^1.0.1", 1048 | "levn": "^0.4.1", 1049 | "lodash": "^4.17.21", 1050 | "minimatch": "^3.0.4", 1051 | "natural-compare": "^1.4.0", 1052 | "optionator": "^0.9.1", 1053 | "progress": "^2.0.0", 1054 | "regexpp": "^3.1.0", 1055 | "semver": "^7.2.1", 1056 | "strip-ansi": "^6.0.0", 1057 | "strip-json-comments": "^3.1.0", 1058 | "table": "^6.0.4", 1059 | "text-table": "^0.2.0", 1060 | "v8-compile-cache": "^2.0.3" 1061 | }, 1062 | "dependencies": { 1063 | "ansi-styles": { 1064 | "version": "4.3.0", 1065 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 1066 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 1067 | "dev": true, 1068 | "requires": { 1069 | "color-convert": "^2.0.1" 1070 | } 1071 | }, 1072 | "chalk": { 1073 | "version": "4.1.0", 1074 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", 1075 | "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", 1076 | "dev": true, 1077 | "requires": { 1078 | "ansi-styles": "^4.1.0", 1079 | "supports-color": "^7.1.0" 1080 | } 1081 | }, 1082 | "color-convert": { 1083 | "version": "2.0.1", 1084 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 1085 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 1086 | "dev": true, 1087 | "requires": { 1088 | "color-name": "~1.1.4" 1089 | } 1090 | }, 1091 | "color-name": { 1092 | "version": "1.1.4", 1093 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 1094 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 1095 | "dev": true 1096 | }, 1097 | "has-flag": { 1098 | "version": "4.0.0", 1099 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 1100 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 1101 | "dev": true 1102 | }, 1103 | "supports-color": { 1104 | "version": "7.2.0", 1105 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 1106 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 1107 | "dev": true, 1108 | "requires": { 1109 | "has-flag": "^4.0.0" 1110 | } 1111 | } 1112 | } 1113 | }, 1114 | "eslint-config-prettier": { 1115 | "version": "8.1.0", 1116 | "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.1.0.tgz", 1117 | "integrity": "sha512-oKMhGv3ihGbCIimCAjqkdzx2Q+jthoqnXSP+d86M9tptwugycmTFdVR4IpLgq2c4SHifbwO90z2fQ8/Aio73yw==", 1118 | "dev": true 1119 | }, 1120 | "eslint-import-resolver-node": { 1121 | "version": "0.3.4", 1122 | "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz", 1123 | "integrity": "sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA==", 1124 | "dev": true, 1125 | "requires": { 1126 | "debug": "^2.6.9", 1127 | "resolve": "^1.13.1" 1128 | }, 1129 | "dependencies": { 1130 | "debug": { 1131 | "version": "2.6.9", 1132 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 1133 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 1134 | "dev": true, 1135 | "requires": { 1136 | "ms": "2.0.0" 1137 | } 1138 | }, 1139 | "ms": { 1140 | "version": "2.0.0", 1141 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1142 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 1143 | "dev": true 1144 | } 1145 | } 1146 | }, 1147 | "eslint-module-utils": { 1148 | "version": "2.6.0", 1149 | "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz", 1150 | "integrity": "sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==", 1151 | "dev": true, 1152 | "requires": { 1153 | "debug": "^2.6.9", 1154 | "pkg-dir": "^2.0.0" 1155 | }, 1156 | "dependencies": { 1157 | "debug": { 1158 | "version": "2.6.9", 1159 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 1160 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 1161 | "dev": true, 1162 | "requires": { 1163 | "ms": "2.0.0" 1164 | } 1165 | }, 1166 | "ms": { 1167 | "version": "2.0.0", 1168 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1169 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 1170 | "dev": true 1171 | } 1172 | } 1173 | }, 1174 | "eslint-plugin-eslint-comments": { 1175 | "version": "3.2.0", 1176 | "resolved": "https://registry.npmjs.org/eslint-plugin-eslint-comments/-/eslint-plugin-eslint-comments-3.2.0.tgz", 1177 | "integrity": "sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==", 1178 | "dev": true, 1179 | "requires": { 1180 | "escape-string-regexp": "^1.0.5", 1181 | "ignore": "^5.0.5" 1182 | }, 1183 | "dependencies": { 1184 | "ignore": { 1185 | "version": "5.1.8", 1186 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", 1187 | "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", 1188 | "dev": true 1189 | } 1190 | } 1191 | }, 1192 | "eslint-plugin-github": { 1193 | "version": "4.1.3", 1194 | "resolved": "https://registry.npmjs.org/eslint-plugin-github/-/eslint-plugin-github-4.1.3.tgz", 1195 | "integrity": "sha512-90MZbFt61jO+hCprPAPH1VSLylQPsynmMId79z/fCGQEhm3qzbAkUG3NqhNK8ltWZfFbXFYuXB4S5BnNttYGhQ==", 1196 | "dev": true, 1197 | "requires": { 1198 | "@typescript-eslint/eslint-plugin": "^4.20.0", 1199 | "@typescript-eslint/parser": "^4.20.0", 1200 | "eslint-config-prettier": ">=8.0.0", 1201 | "eslint-plugin-eslint-comments": "^3.2.0", 1202 | "eslint-plugin-import": "^2.22.1", 1203 | "eslint-plugin-prettier": "^3.3.1", 1204 | "eslint-rule-documentation": ">=1.0.0", 1205 | "prettier": "^2.2.1", 1206 | "svg-element-attributes": "^1.3.1" 1207 | } 1208 | }, 1209 | "eslint-plugin-import": { 1210 | "version": "2.22.1", 1211 | "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz", 1212 | "integrity": "sha512-8K7JjINHOpH64ozkAhpT3sd+FswIZTfMZTjdx052pnWrgRCVfp8op9tbjpAk3DdUeI/Ba4C8OjdC0r90erHEOw==", 1213 | "dev": true, 1214 | "requires": { 1215 | "array-includes": "^3.1.1", 1216 | "array.prototype.flat": "^1.2.3", 1217 | "contains-path": "^0.1.0", 1218 | "debug": "^2.6.9", 1219 | "doctrine": "1.5.0", 1220 | "eslint-import-resolver-node": "^0.3.4", 1221 | "eslint-module-utils": "^2.6.0", 1222 | "has": "^1.0.3", 1223 | "minimatch": "^3.0.4", 1224 | "object.values": "^1.1.1", 1225 | "read-pkg-up": "^2.0.0", 1226 | "resolve": "^1.17.0", 1227 | "tsconfig-paths": "^3.9.0" 1228 | }, 1229 | "dependencies": { 1230 | "debug": { 1231 | "version": "2.6.9", 1232 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 1233 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 1234 | "dev": true, 1235 | "requires": { 1236 | "ms": "2.0.0" 1237 | } 1238 | }, 1239 | "doctrine": { 1240 | "version": "1.5.0", 1241 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", 1242 | "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", 1243 | "dev": true, 1244 | "requires": { 1245 | "esutils": "^2.0.2", 1246 | "isarray": "^1.0.0" 1247 | } 1248 | }, 1249 | "ms": { 1250 | "version": "2.0.0", 1251 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1252 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 1253 | "dev": true 1254 | } 1255 | } 1256 | }, 1257 | "eslint-plugin-prettier": { 1258 | "version": "3.3.1", 1259 | "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.3.1.tgz", 1260 | "integrity": "sha512-Rq3jkcFY8RYeQLgk2cCwuc0P7SEFwDravPhsJZOQ5N4YI4DSg50NyqJ/9gdZHzQlHf8MvafSesbNJCcP/FF6pQ==", 1261 | "dev": true, 1262 | "requires": { 1263 | "prettier-linter-helpers": "^1.0.0" 1264 | } 1265 | }, 1266 | "eslint-rule-documentation": { 1267 | "version": "1.0.23", 1268 | "resolved": "https://registry.npmjs.org/eslint-rule-documentation/-/eslint-rule-documentation-1.0.23.tgz", 1269 | "integrity": "sha512-pWReu3fkohwyvztx/oQWWgld2iad25TfUdi6wvhhaDPIQjHU/pyvlKgXFw1kX31SQK2Nq9MH+vRDWB0ZLy8fYw==", 1270 | "dev": true 1271 | }, 1272 | "eslint-scope": { 1273 | "version": "5.1.1", 1274 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", 1275 | "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", 1276 | "dev": true, 1277 | "requires": { 1278 | "esrecurse": "^4.3.0", 1279 | "estraverse": "^4.1.1" 1280 | } 1281 | }, 1282 | "eslint-utils": { 1283 | "version": "2.1.0", 1284 | "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", 1285 | "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", 1286 | "dev": true, 1287 | "requires": { 1288 | "eslint-visitor-keys": "^1.1.0" 1289 | }, 1290 | "dependencies": { 1291 | "eslint-visitor-keys": { 1292 | "version": "1.3.0", 1293 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", 1294 | "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", 1295 | "dev": true 1296 | } 1297 | } 1298 | }, 1299 | "eslint-visitor-keys": { 1300 | "version": "2.0.0", 1301 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz", 1302 | "integrity": "sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==", 1303 | "dev": true 1304 | }, 1305 | "espree": { 1306 | "version": "7.3.1", 1307 | "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", 1308 | "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", 1309 | "dev": true, 1310 | "requires": { 1311 | "acorn": "^7.4.0", 1312 | "acorn-jsx": "^5.3.1", 1313 | "eslint-visitor-keys": "^1.3.0" 1314 | }, 1315 | "dependencies": { 1316 | "eslint-visitor-keys": { 1317 | "version": "1.3.0", 1318 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", 1319 | "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", 1320 | "dev": true 1321 | } 1322 | } 1323 | }, 1324 | "esprima": { 1325 | "version": "4.0.1", 1326 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", 1327 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", 1328 | "dev": true 1329 | }, 1330 | "esquery": { 1331 | "version": "1.4.0", 1332 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", 1333 | "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", 1334 | "dev": true, 1335 | "requires": { 1336 | "estraverse": "^5.1.0" 1337 | }, 1338 | "dependencies": { 1339 | "estraverse": { 1340 | "version": "5.2.0", 1341 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", 1342 | "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", 1343 | "dev": true 1344 | } 1345 | } 1346 | }, 1347 | "esrecurse": { 1348 | "version": "4.3.0", 1349 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", 1350 | "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", 1351 | "dev": true, 1352 | "requires": { 1353 | "estraverse": "^5.2.0" 1354 | }, 1355 | "dependencies": { 1356 | "estraverse": { 1357 | "version": "5.2.0", 1358 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", 1359 | "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", 1360 | "dev": true 1361 | } 1362 | } 1363 | }, 1364 | "estraverse": { 1365 | "version": "4.3.0", 1366 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", 1367 | "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", 1368 | "dev": true 1369 | }, 1370 | "esutils": { 1371 | "version": "2.0.3", 1372 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 1373 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", 1374 | "dev": true 1375 | }, 1376 | "eventemitter3": { 1377 | "version": "4.0.4", 1378 | "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.4.tgz", 1379 | "integrity": "sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==", 1380 | "dev": true 1381 | }, 1382 | "extend": { 1383 | "version": "3.0.2", 1384 | "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", 1385 | "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", 1386 | "dev": true 1387 | }, 1388 | "extract-zip": { 1389 | "version": "1.7.0", 1390 | "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz", 1391 | "integrity": "sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==", 1392 | "dev": true, 1393 | "requires": { 1394 | "concat-stream": "^1.6.2", 1395 | "debug": "^2.6.9", 1396 | "mkdirp": "^0.5.4", 1397 | "yauzl": "^2.10.0" 1398 | }, 1399 | "dependencies": { 1400 | "debug": { 1401 | "version": "2.6.9", 1402 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 1403 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 1404 | "dev": true, 1405 | "requires": { 1406 | "ms": "2.0.0" 1407 | } 1408 | }, 1409 | "ms": { 1410 | "version": "2.0.0", 1411 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1412 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 1413 | "dev": true 1414 | } 1415 | } 1416 | }, 1417 | "fast-deep-equal": { 1418 | "version": "3.1.3", 1419 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 1420 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", 1421 | "dev": true 1422 | }, 1423 | "fast-diff": { 1424 | "version": "1.2.0", 1425 | "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", 1426 | "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", 1427 | "dev": true 1428 | }, 1429 | "fast-glob": { 1430 | "version": "3.2.5", 1431 | "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz", 1432 | "integrity": "sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==", 1433 | "dev": true, 1434 | "requires": { 1435 | "@nodelib/fs.stat": "^2.0.2", 1436 | "@nodelib/fs.walk": "^1.2.3", 1437 | "glob-parent": "^5.1.0", 1438 | "merge2": "^1.3.0", 1439 | "micromatch": "^4.0.2", 1440 | "picomatch": "^2.2.1" 1441 | } 1442 | }, 1443 | "fast-json-stable-stringify": { 1444 | "version": "2.1.0", 1445 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 1446 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 1447 | "dev": true 1448 | }, 1449 | "fast-levenshtein": { 1450 | "version": "2.0.6", 1451 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 1452 | "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", 1453 | "dev": true 1454 | }, 1455 | "fastq": { 1456 | "version": "1.11.0", 1457 | "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.11.0.tgz", 1458 | "integrity": "sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g==", 1459 | "dev": true, 1460 | "requires": { 1461 | "reusify": "^1.0.4" 1462 | } 1463 | }, 1464 | "fd-slicer": { 1465 | "version": "1.1.0", 1466 | "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", 1467 | "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", 1468 | "dev": true, 1469 | "requires": { 1470 | "pend": "~1.2.0" 1471 | } 1472 | }, 1473 | "file-entry-cache": { 1474 | "version": "6.0.1", 1475 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", 1476 | "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", 1477 | "dev": true, 1478 | "requires": { 1479 | "flat-cache": "^3.0.4" 1480 | } 1481 | }, 1482 | "fill-range": { 1483 | "version": "7.0.1", 1484 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 1485 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 1486 | "dev": true, 1487 | "requires": { 1488 | "to-regex-range": "^5.0.1" 1489 | } 1490 | }, 1491 | "finalhandler": { 1492 | "version": "1.1.2", 1493 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", 1494 | "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", 1495 | "dev": true, 1496 | "requires": { 1497 | "debug": "2.6.9", 1498 | "encodeurl": "~1.0.2", 1499 | "escape-html": "~1.0.3", 1500 | "on-finished": "~2.3.0", 1501 | "parseurl": "~1.3.3", 1502 | "statuses": "~1.5.0", 1503 | "unpipe": "~1.0.0" 1504 | }, 1505 | "dependencies": { 1506 | "debug": { 1507 | "version": "2.6.9", 1508 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 1509 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 1510 | "dev": true, 1511 | "requires": { 1512 | "ms": "2.0.0" 1513 | } 1514 | }, 1515 | "ms": { 1516 | "version": "2.0.0", 1517 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1518 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 1519 | "dev": true 1520 | } 1521 | } 1522 | }, 1523 | "find-up": { 1524 | "version": "2.1.0", 1525 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", 1526 | "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", 1527 | "dev": true, 1528 | "requires": { 1529 | "locate-path": "^2.0.0" 1530 | } 1531 | }, 1532 | "flat": { 1533 | "version": "5.0.2", 1534 | "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", 1535 | "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", 1536 | "dev": true 1537 | }, 1538 | "flat-cache": { 1539 | "version": "3.0.4", 1540 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", 1541 | "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", 1542 | "dev": true, 1543 | "requires": { 1544 | "flatted": "^3.1.0", 1545 | "rimraf": "^3.0.2" 1546 | }, 1547 | "dependencies": { 1548 | "flatted": { 1549 | "version": "3.1.1", 1550 | "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz", 1551 | "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==", 1552 | "dev": true 1553 | } 1554 | } 1555 | }, 1556 | "flatted": { 1557 | "version": "2.0.1", 1558 | "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz", 1559 | "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==", 1560 | "dev": true 1561 | }, 1562 | "follow-redirects": { 1563 | "version": "1.12.1", 1564 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.12.1.tgz", 1565 | "integrity": "sha512-tmRv0AVuR7ZyouUHLeNSiO6pqulF7dYa3s19c6t+wz9LD69/uSzdMxJ2S91nTI9U3rt/IldxpzMOFejp6f0hjg==", 1566 | "dev": true 1567 | }, 1568 | "fs-extra": { 1569 | "version": "8.1.0", 1570 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", 1571 | "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", 1572 | "dev": true, 1573 | "requires": { 1574 | "graceful-fs": "^4.2.0", 1575 | "jsonfile": "^4.0.0", 1576 | "universalify": "^0.1.0" 1577 | } 1578 | }, 1579 | "fs.realpath": { 1580 | "version": "1.0.0", 1581 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 1582 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 1583 | "dev": true 1584 | }, 1585 | "fsevents": { 1586 | "version": "2.3.2", 1587 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 1588 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 1589 | "dev": true, 1590 | "optional": true 1591 | }, 1592 | "function-bind": { 1593 | "version": "1.1.1", 1594 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 1595 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 1596 | "dev": true 1597 | }, 1598 | "functional-red-black-tree": { 1599 | "version": "1.0.1", 1600 | "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", 1601 | "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", 1602 | "dev": true 1603 | }, 1604 | "get-caller-file": { 1605 | "version": "2.0.5", 1606 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", 1607 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", 1608 | "dev": true 1609 | }, 1610 | "get-func-name": { 1611 | "version": "2.0.0", 1612 | "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", 1613 | "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", 1614 | "dev": true 1615 | }, 1616 | "get-intrinsic": { 1617 | "version": "1.1.1", 1618 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", 1619 | "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", 1620 | "dev": true, 1621 | "requires": { 1622 | "function-bind": "^1.1.1", 1623 | "has": "^1.0.3", 1624 | "has-symbols": "^1.0.1" 1625 | } 1626 | }, 1627 | "get-stream": { 1628 | "version": "5.2.0", 1629 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", 1630 | "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", 1631 | "dev": true, 1632 | "requires": { 1633 | "pump": "^3.0.0" 1634 | } 1635 | }, 1636 | "glob": { 1637 | "version": "7.1.6", 1638 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", 1639 | "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", 1640 | "dev": true, 1641 | "requires": { 1642 | "fs.realpath": "^1.0.0", 1643 | "inflight": "^1.0.4", 1644 | "inherits": "2", 1645 | "minimatch": "^3.0.4", 1646 | "once": "^1.3.0", 1647 | "path-is-absolute": "^1.0.0" 1648 | } 1649 | }, 1650 | "glob-parent": { 1651 | "version": "5.1.0", 1652 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz", 1653 | "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==", 1654 | "dev": true, 1655 | "requires": { 1656 | "is-glob": "^4.0.1" 1657 | } 1658 | }, 1659 | "globals": { 1660 | "version": "13.8.0", 1661 | "resolved": "https://registry.npmjs.org/globals/-/globals-13.8.0.tgz", 1662 | "integrity": "sha512-rHtdA6+PDBIjeEvA91rpqzEvk/k3/i7EeNQiryiWuJH0Hw9cpyJMAt2jtbAwUaRdhD+573X4vWw6IcjKPasi9Q==", 1663 | "dev": true, 1664 | "requires": { 1665 | "type-fest": "^0.20.2" 1666 | } 1667 | }, 1668 | "globby": { 1669 | "version": "11.0.3", 1670 | "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.3.tgz", 1671 | "integrity": "sha512-ffdmosjA807y7+lA1NM0jELARVmYul/715xiILEjo3hBLPTcirgQNnXECn5g3mtR8TOLCVbkfua1Hpen25/Xcg==", 1672 | "dev": true, 1673 | "requires": { 1674 | "array-union": "^2.1.0", 1675 | "dir-glob": "^3.0.1", 1676 | "fast-glob": "^3.1.1", 1677 | "ignore": "^5.1.4", 1678 | "merge2": "^1.3.0", 1679 | "slash": "^3.0.0" 1680 | }, 1681 | "dependencies": { 1682 | "ignore": { 1683 | "version": "5.1.8", 1684 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", 1685 | "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", 1686 | "dev": true 1687 | } 1688 | } 1689 | }, 1690 | "got": { 1691 | "version": "11.8.3", 1692 | "resolved": "https://registry.npmjs.org/got/-/got-11.8.3.tgz", 1693 | "integrity": "sha512-7gtQ5KiPh1RtGS9/Jbv1ofDpBFuq42gyfEib+ejaRBJuj/3tQFeR5+gw57e4ipaU8c/rCjvX6fkQz2lyDlGAOg==", 1694 | "dev": true, 1695 | "requires": { 1696 | "@sindresorhus/is": "^4.0.0", 1697 | "@szmarczak/http-timer": "^4.0.5", 1698 | "@types/cacheable-request": "^6.0.1", 1699 | "@types/responselike": "^1.0.0", 1700 | "cacheable-lookup": "^5.0.3", 1701 | "cacheable-request": "^7.0.2", 1702 | "decompress-response": "^6.0.0", 1703 | "http2-wrapper": "^1.0.0-beta.5.2", 1704 | "lowercase-keys": "^2.0.0", 1705 | "p-cancelable": "^2.0.0", 1706 | "responselike": "^2.0.0" 1707 | } 1708 | }, 1709 | "graceful-fs": { 1710 | "version": "4.2.3", 1711 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", 1712 | "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", 1713 | "dev": true 1714 | }, 1715 | "growl": { 1716 | "version": "1.10.5", 1717 | "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", 1718 | "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", 1719 | "dev": true 1720 | }, 1721 | "has": { 1722 | "version": "1.0.3", 1723 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 1724 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 1725 | "dev": true, 1726 | "requires": { 1727 | "function-bind": "^1.1.1" 1728 | } 1729 | }, 1730 | "has-bigints": { 1731 | "version": "1.0.1", 1732 | "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", 1733 | "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", 1734 | "dev": true 1735 | }, 1736 | "has-flag": { 1737 | "version": "3.0.0", 1738 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 1739 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", 1740 | "dev": true 1741 | }, 1742 | "has-symbols": { 1743 | "version": "1.0.2", 1744 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", 1745 | "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", 1746 | "dev": true 1747 | }, 1748 | "he": { 1749 | "version": "1.2.0", 1750 | "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", 1751 | "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", 1752 | "dev": true 1753 | }, 1754 | "hosted-git-info": { 1755 | "version": "2.8.9", 1756 | "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", 1757 | "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", 1758 | "dev": true 1759 | }, 1760 | "http-cache-semantics": { 1761 | "version": "4.1.0", 1762 | "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", 1763 | "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", 1764 | "dev": true 1765 | }, 1766 | "http-errors": { 1767 | "version": "1.7.2", 1768 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", 1769 | "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", 1770 | "dev": true, 1771 | "requires": { 1772 | "depd": "~1.1.2", 1773 | "inherits": "2.0.3", 1774 | "setprototypeof": "1.1.1", 1775 | "statuses": ">= 1.5.0 < 2", 1776 | "toidentifier": "1.0.0" 1777 | }, 1778 | "dependencies": { 1779 | "inherits": { 1780 | "version": "2.0.3", 1781 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 1782 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", 1783 | "dev": true 1784 | } 1785 | } 1786 | }, 1787 | "http-proxy": { 1788 | "version": "1.18.1", 1789 | "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", 1790 | "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", 1791 | "dev": true, 1792 | "requires": { 1793 | "eventemitter3": "^4.0.0", 1794 | "follow-redirects": "^1.0.0", 1795 | "requires-port": "^1.0.0" 1796 | } 1797 | }, 1798 | "http2-wrapper": { 1799 | "version": "1.0.3", 1800 | "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", 1801 | "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", 1802 | "dev": true, 1803 | "requires": { 1804 | "quick-lru": "^5.1.1", 1805 | "resolve-alpn": "^1.0.0" 1806 | } 1807 | }, 1808 | "iconv-lite": { 1809 | "version": "0.4.24", 1810 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 1811 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 1812 | "dev": true, 1813 | "requires": { 1814 | "safer-buffer": ">= 2.1.2 < 3" 1815 | } 1816 | }, 1817 | "ignore": { 1818 | "version": "4.0.6", 1819 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", 1820 | "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", 1821 | "dev": true 1822 | }, 1823 | "import-fresh": { 1824 | "version": "3.2.1", 1825 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", 1826 | "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", 1827 | "dev": true, 1828 | "requires": { 1829 | "parent-module": "^1.0.0", 1830 | "resolve-from": "^4.0.0" 1831 | } 1832 | }, 1833 | "imurmurhash": { 1834 | "version": "0.1.4", 1835 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 1836 | "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", 1837 | "dev": true 1838 | }, 1839 | "inflight": { 1840 | "version": "1.0.6", 1841 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1842 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 1843 | "dev": true, 1844 | "requires": { 1845 | "once": "^1.3.0", 1846 | "wrappy": "1" 1847 | } 1848 | }, 1849 | "inherits": { 1850 | "version": "2.0.4", 1851 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1852 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 1853 | "dev": true 1854 | }, 1855 | "is-arrayish": { 1856 | "version": "0.2.1", 1857 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", 1858 | "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", 1859 | "dev": true 1860 | }, 1861 | "is-bigint": { 1862 | "version": "1.0.1", 1863 | "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.1.tgz", 1864 | "integrity": "sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg==", 1865 | "dev": true 1866 | }, 1867 | "is-binary-path": { 1868 | "version": "2.1.0", 1869 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 1870 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 1871 | "dev": true, 1872 | "requires": { 1873 | "binary-extensions": "^2.0.0" 1874 | } 1875 | }, 1876 | "is-boolean-object": { 1877 | "version": "1.1.0", 1878 | "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.0.tgz", 1879 | "integrity": "sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA==", 1880 | "dev": true, 1881 | "requires": { 1882 | "call-bind": "^1.0.0" 1883 | } 1884 | }, 1885 | "is-callable": { 1886 | "version": "1.2.3", 1887 | "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", 1888 | "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", 1889 | "dev": true 1890 | }, 1891 | "is-core-module": { 1892 | "version": "2.2.0", 1893 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", 1894 | "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", 1895 | "dev": true, 1896 | "requires": { 1897 | "has": "^1.0.3" 1898 | } 1899 | }, 1900 | "is-date-object": { 1901 | "version": "1.0.1", 1902 | "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", 1903 | "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", 1904 | "dev": true 1905 | }, 1906 | "is-extglob": { 1907 | "version": "2.1.1", 1908 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 1909 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", 1910 | "dev": true 1911 | }, 1912 | "is-fullwidth-code-point": { 1913 | "version": "3.0.0", 1914 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 1915 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 1916 | "dev": true 1917 | }, 1918 | "is-glob": { 1919 | "version": "4.0.1", 1920 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", 1921 | "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", 1922 | "dev": true, 1923 | "requires": { 1924 | "is-extglob": "^2.1.1" 1925 | } 1926 | }, 1927 | "is-negative-zero": { 1928 | "version": "2.0.1", 1929 | "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", 1930 | "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", 1931 | "dev": true 1932 | }, 1933 | "is-number": { 1934 | "version": "7.0.0", 1935 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 1936 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 1937 | "dev": true 1938 | }, 1939 | "is-number-object": { 1940 | "version": "1.0.4", 1941 | "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.4.tgz", 1942 | "integrity": "sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw==", 1943 | "dev": true 1944 | }, 1945 | "is-plain-obj": { 1946 | "version": "2.1.0", 1947 | "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", 1948 | "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", 1949 | "dev": true 1950 | }, 1951 | "is-regex": { 1952 | "version": "1.1.2", 1953 | "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", 1954 | "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", 1955 | "dev": true, 1956 | "requires": { 1957 | "call-bind": "^1.0.2", 1958 | "has-symbols": "^1.0.1" 1959 | } 1960 | }, 1961 | "is-string": { 1962 | "version": "1.0.5", 1963 | "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", 1964 | "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", 1965 | "dev": true 1966 | }, 1967 | "is-symbol": { 1968 | "version": "1.0.3", 1969 | "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", 1970 | "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", 1971 | "dev": true, 1972 | "requires": { 1973 | "has-symbols": "^1.0.1" 1974 | } 1975 | }, 1976 | "isarray": { 1977 | "version": "1.0.0", 1978 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 1979 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 1980 | "dev": true 1981 | }, 1982 | "isbinaryfile": { 1983 | "version": "4.0.6", 1984 | "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.6.tgz", 1985 | "integrity": "sha512-ORrEy+SNVqUhrCaal4hA4fBzhggQQ+BaLntyPOdoEiwlKZW9BZiJXjg3RMiruE4tPEI3pyVPpySHQF/dKWperg==", 1986 | "dev": true 1987 | }, 1988 | "isexe": { 1989 | "version": "2.0.0", 1990 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1991 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", 1992 | "dev": true 1993 | }, 1994 | "js-tokens": { 1995 | "version": "4.0.0", 1996 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 1997 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", 1998 | "dev": true 1999 | }, 2000 | "js-yaml": { 2001 | "version": "3.13.1", 2002 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", 2003 | "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", 2004 | "dev": true, 2005 | "requires": { 2006 | "argparse": "^1.0.7", 2007 | "esprima": "^4.0.0" 2008 | } 2009 | }, 2010 | "json-buffer": { 2011 | "version": "3.0.1", 2012 | "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", 2013 | "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", 2014 | "dev": true 2015 | }, 2016 | "json-schema-traverse": { 2017 | "version": "0.4.1", 2018 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 2019 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 2020 | "dev": true 2021 | }, 2022 | "json-stable-stringify-without-jsonify": { 2023 | "version": "1.0.1", 2024 | "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 2025 | "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", 2026 | "dev": true 2027 | }, 2028 | "json5": { 2029 | "version": "1.0.1", 2030 | "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", 2031 | "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", 2032 | "dev": true, 2033 | "requires": { 2034 | "minimist": "^1.2.0" 2035 | } 2036 | }, 2037 | "jsonfile": { 2038 | "version": "4.0.0", 2039 | "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", 2040 | "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", 2041 | "dev": true, 2042 | "requires": { 2043 | "graceful-fs": "^4.1.6" 2044 | } 2045 | }, 2046 | "karma": { 2047 | "version": "6.3.2", 2048 | "resolved": "https://registry.npmjs.org/karma/-/karma-6.3.2.tgz", 2049 | "integrity": "sha512-fo4Wt0S99/8vylZMxNj4cBFyOBBnC1bewZ0QOlePij/2SZVWxqbyLeIddY13q6URa2EpLRW8ixvFRUMjkmo1bw==", 2050 | "dev": true, 2051 | "requires": { 2052 | "body-parser": "^1.19.0", 2053 | "braces": "^3.0.2", 2054 | "chokidar": "^3.4.2", 2055 | "colors": "^1.4.0", 2056 | "connect": "^3.7.0", 2057 | "di": "^0.0.1", 2058 | "dom-serialize": "^2.2.1", 2059 | "glob": "^7.1.6", 2060 | "graceful-fs": "^4.2.4", 2061 | "http-proxy": "^1.18.1", 2062 | "isbinaryfile": "^4.0.6", 2063 | "lodash": "^4.17.19", 2064 | "log4js": "^6.2.1", 2065 | "mime": "^2.4.5", 2066 | "minimatch": "^3.0.4", 2067 | "qjobs": "^1.2.0", 2068 | "range-parser": "^1.2.1", 2069 | "rimraf": "^3.0.2", 2070 | "socket.io": "^3.1.0", 2071 | "source-map": "^0.6.1", 2072 | "tmp": "0.2.1", 2073 | "ua-parser-js": "^0.7.23", 2074 | "yargs": "^16.1.1" 2075 | }, 2076 | "dependencies": { 2077 | "graceful-fs": { 2078 | "version": "4.2.4", 2079 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", 2080 | "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", 2081 | "dev": true 2082 | }, 2083 | "source-map": { 2084 | "version": "0.6.1", 2085 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 2086 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 2087 | "dev": true 2088 | }, 2089 | "tmp": { 2090 | "version": "0.2.1", 2091 | "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", 2092 | "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", 2093 | "dev": true, 2094 | "requires": { 2095 | "rimraf": "^3.0.0" 2096 | } 2097 | } 2098 | } 2099 | }, 2100 | "karma-chai": { 2101 | "version": "0.1.0", 2102 | "resolved": "https://registry.npmjs.org/karma-chai/-/karma-chai-0.1.0.tgz", 2103 | "integrity": "sha1-vuWtQEAFF4Ea40u5RfdikJEIt5o=", 2104 | "dev": true 2105 | }, 2106 | "karma-chrome-launcher": { 2107 | "version": "3.1.0", 2108 | "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.1.0.tgz", 2109 | "integrity": "sha512-3dPs/n7vgz1rxxtynpzZTvb9y/GIaW8xjAwcIGttLbycqoFtI7yo1NGnQi6oFTherRE+GIhCAHZC4vEqWGhNvg==", 2110 | "dev": true, 2111 | "requires": { 2112 | "which": "^1.2.1" 2113 | } 2114 | }, 2115 | "karma-mocha": { 2116 | "version": "2.0.1", 2117 | "resolved": "https://registry.npmjs.org/karma-mocha/-/karma-mocha-2.0.1.tgz", 2118 | "integrity": "sha512-Tzd5HBjm8his2OA4bouAsATYEpZrp9vC7z5E5j4C5Of5Rrs1jY67RAwXNcVmd/Bnk1wgvQRou0zGVLey44G4tQ==", 2119 | "dev": true, 2120 | "requires": { 2121 | "minimist": "^1.2.3" 2122 | } 2123 | }, 2124 | "karma-mocha-reporter": { 2125 | "version": "2.2.5", 2126 | "resolved": "https://registry.npmjs.org/karma-mocha-reporter/-/karma-mocha-reporter-2.2.5.tgz", 2127 | "integrity": "sha1-FRIAlejtgZGG5HoLAS8810GJVWA=", 2128 | "dev": true, 2129 | "requires": { 2130 | "chalk": "^2.1.0", 2131 | "log-symbols": "^2.1.0", 2132 | "strip-ansi": "^4.0.0" 2133 | }, 2134 | "dependencies": { 2135 | "ansi-regex": { 2136 | "version": "3.0.0", 2137 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", 2138 | "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", 2139 | "dev": true 2140 | }, 2141 | "ansi-styles": { 2142 | "version": "3.2.1", 2143 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 2144 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 2145 | "dev": true, 2146 | "requires": { 2147 | "color-convert": "^1.9.0" 2148 | } 2149 | }, 2150 | "chalk": { 2151 | "version": "2.4.1", 2152 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", 2153 | "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", 2154 | "dev": true, 2155 | "requires": { 2156 | "ansi-styles": "^3.2.1", 2157 | "escape-string-regexp": "^1.0.5", 2158 | "supports-color": "^5.3.0" 2159 | } 2160 | }, 2161 | "strip-ansi": { 2162 | "version": "4.0.0", 2163 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", 2164 | "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", 2165 | "dev": true, 2166 | "requires": { 2167 | "ansi-regex": "^3.0.0" 2168 | } 2169 | }, 2170 | "supports-color": { 2171 | "version": "5.4.0", 2172 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", 2173 | "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", 2174 | "dev": true, 2175 | "requires": { 2176 | "has-flag": "^3.0.0" 2177 | } 2178 | } 2179 | } 2180 | }, 2181 | "keyv": { 2182 | "version": "4.1.1", 2183 | "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.1.1.tgz", 2184 | "integrity": "sha512-tGv1yP6snQVDSM4X6yxrv2zzq/EvpW+oYiUz6aueW1u9CtS8RzUQYxxmFwgZlO2jSgCxQbchhxaqXXp2hnKGpQ==", 2185 | "dev": true, 2186 | "requires": { 2187 | "json-buffer": "3.0.1" 2188 | } 2189 | }, 2190 | "levn": { 2191 | "version": "0.4.1", 2192 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", 2193 | "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", 2194 | "dev": true, 2195 | "requires": { 2196 | "prelude-ls": "^1.2.1", 2197 | "type-check": "~0.4.0" 2198 | } 2199 | }, 2200 | "load-json-file": { 2201 | "version": "2.0.0", 2202 | "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", 2203 | "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", 2204 | "dev": true, 2205 | "requires": { 2206 | "graceful-fs": "^4.1.2", 2207 | "parse-json": "^2.2.0", 2208 | "pify": "^2.0.0", 2209 | "strip-bom": "^3.0.0" 2210 | } 2211 | }, 2212 | "locate-path": { 2213 | "version": "2.0.0", 2214 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", 2215 | "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", 2216 | "dev": true, 2217 | "requires": { 2218 | "p-locate": "^2.0.0", 2219 | "path-exists": "^3.0.0" 2220 | } 2221 | }, 2222 | "lodash": { 2223 | "version": "4.17.21", 2224 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", 2225 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", 2226 | "dev": true 2227 | }, 2228 | "lodash.clonedeep": { 2229 | "version": "4.5.0", 2230 | "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", 2231 | "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", 2232 | "dev": true 2233 | }, 2234 | "lodash.flatten": { 2235 | "version": "4.4.0", 2236 | "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", 2237 | "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=", 2238 | "dev": true 2239 | }, 2240 | "lodash.truncate": { 2241 | "version": "4.4.2", 2242 | "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", 2243 | "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", 2244 | "dev": true 2245 | }, 2246 | "log-symbols": { 2247 | "version": "2.2.0", 2248 | "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", 2249 | "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", 2250 | "dev": true, 2251 | "requires": { 2252 | "chalk": "^2.0.1" 2253 | }, 2254 | "dependencies": { 2255 | "ansi-styles": { 2256 | "version": "3.2.1", 2257 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 2258 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 2259 | "dev": true, 2260 | "requires": { 2261 | "color-convert": "^1.9.0" 2262 | } 2263 | }, 2264 | "chalk": { 2265 | "version": "2.4.1", 2266 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", 2267 | "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", 2268 | "dev": true, 2269 | "requires": { 2270 | "ansi-styles": "^3.2.1", 2271 | "escape-string-regexp": "^1.0.5", 2272 | "supports-color": "^5.3.0" 2273 | } 2274 | }, 2275 | "supports-color": { 2276 | "version": "5.4.0", 2277 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", 2278 | "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", 2279 | "dev": true, 2280 | "requires": { 2281 | "has-flag": "^3.0.0" 2282 | } 2283 | } 2284 | } 2285 | }, 2286 | "log4js": { 2287 | "version": "6.3.0", 2288 | "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.3.0.tgz", 2289 | "integrity": "sha512-Mc8jNuSFImQUIateBFwdOQcmC6Q5maU0VVvdC2R6XMb66/VnT+7WS4D/0EeNMZu1YODmJe5NIn2XftCzEocUgw==", 2290 | "dev": true, 2291 | "requires": { 2292 | "date-format": "^3.0.0", 2293 | "debug": "^4.1.1", 2294 | "flatted": "^2.0.1", 2295 | "rfdc": "^1.1.4", 2296 | "streamroller": "^2.2.4" 2297 | } 2298 | }, 2299 | "lowercase-keys": { 2300 | "version": "2.0.0", 2301 | "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", 2302 | "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", 2303 | "dev": true 2304 | }, 2305 | "lru-cache": { 2306 | "version": "6.0.0", 2307 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 2308 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 2309 | "dev": true, 2310 | "requires": { 2311 | "yallist": "^4.0.0" 2312 | } 2313 | }, 2314 | "media-typer": { 2315 | "version": "0.3.0", 2316 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", 2317 | "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", 2318 | "dev": true 2319 | }, 2320 | "merge2": { 2321 | "version": "1.4.1", 2322 | "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", 2323 | "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", 2324 | "dev": true 2325 | }, 2326 | "micromatch": { 2327 | "version": "4.0.4", 2328 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", 2329 | "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", 2330 | "dev": true, 2331 | "requires": { 2332 | "braces": "^3.0.1", 2333 | "picomatch": "^2.2.3" 2334 | } 2335 | }, 2336 | "mime": { 2337 | "version": "2.4.6", 2338 | "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz", 2339 | "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==", 2340 | "dev": true 2341 | }, 2342 | "mime-db": { 2343 | "version": "1.44.0", 2344 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", 2345 | "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==", 2346 | "dev": true 2347 | }, 2348 | "mime-types": { 2349 | "version": "2.1.27", 2350 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", 2351 | "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", 2352 | "dev": true, 2353 | "requires": { 2354 | "mime-db": "1.44.0" 2355 | } 2356 | }, 2357 | "mimic-response": { 2358 | "version": "1.0.1", 2359 | "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", 2360 | "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", 2361 | "dev": true 2362 | }, 2363 | "minimatch": { 2364 | "version": "3.0.4", 2365 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 2366 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 2367 | "dev": true, 2368 | "requires": { 2369 | "brace-expansion": "^1.1.7" 2370 | } 2371 | }, 2372 | "minimist": { 2373 | "version": "1.2.5", 2374 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", 2375 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", 2376 | "dev": true 2377 | }, 2378 | "mkdirp": { 2379 | "version": "0.5.5", 2380 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", 2381 | "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", 2382 | "dev": true, 2383 | "requires": { 2384 | "minimist": "^1.2.5" 2385 | } 2386 | }, 2387 | "mocha": { 2388 | "version": "8.3.2", 2389 | "resolved": "https://registry.npmjs.org/mocha/-/mocha-8.3.2.tgz", 2390 | "integrity": "sha512-UdmISwr/5w+uXLPKspgoV7/RXZwKRTiTjJ2/AC5ZiEztIoOYdfKb19+9jNmEInzx5pBsCyJQzarAxqIGBNYJhg==", 2391 | "dev": true, 2392 | "requires": { 2393 | "@ungap/promise-all-settled": "1.1.2", 2394 | "ansi-colors": "4.1.1", 2395 | "browser-stdout": "1.3.1", 2396 | "chokidar": "3.5.1", 2397 | "debug": "4.3.1", 2398 | "diff": "5.0.0", 2399 | "escape-string-regexp": "4.0.0", 2400 | "find-up": "5.0.0", 2401 | "glob": "7.1.6", 2402 | "growl": "1.10.5", 2403 | "he": "1.2.0", 2404 | "js-yaml": "4.0.0", 2405 | "log-symbols": "4.0.0", 2406 | "minimatch": "3.0.4", 2407 | "ms": "2.1.3", 2408 | "nanoid": "3.1.20", 2409 | "serialize-javascript": "5.0.1", 2410 | "strip-json-comments": "3.1.1", 2411 | "supports-color": "8.1.1", 2412 | "which": "2.0.2", 2413 | "wide-align": "1.1.3", 2414 | "workerpool": "6.1.0", 2415 | "yargs": "16.2.0", 2416 | "yargs-parser": "20.2.4", 2417 | "yargs-unparser": "2.0.0" 2418 | }, 2419 | "dependencies": { 2420 | "ansi-styles": { 2421 | "version": "4.3.0", 2422 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 2423 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 2424 | "dev": true, 2425 | "requires": { 2426 | "color-convert": "^2.0.1" 2427 | } 2428 | }, 2429 | "argparse": { 2430 | "version": "2.0.1", 2431 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", 2432 | "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", 2433 | "dev": true 2434 | }, 2435 | "chalk": { 2436 | "version": "4.1.0", 2437 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", 2438 | "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", 2439 | "dev": true, 2440 | "requires": { 2441 | "ansi-styles": "^4.1.0", 2442 | "supports-color": "^7.1.0" 2443 | }, 2444 | "dependencies": { 2445 | "supports-color": { 2446 | "version": "7.2.0", 2447 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 2448 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 2449 | "dev": true, 2450 | "requires": { 2451 | "has-flag": "^4.0.0" 2452 | } 2453 | } 2454 | } 2455 | }, 2456 | "color-convert": { 2457 | "version": "2.0.1", 2458 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 2459 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 2460 | "dev": true, 2461 | "requires": { 2462 | "color-name": "~1.1.4" 2463 | } 2464 | }, 2465 | "color-name": { 2466 | "version": "1.1.4", 2467 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 2468 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 2469 | "dev": true 2470 | }, 2471 | "escape-string-regexp": { 2472 | "version": "4.0.0", 2473 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", 2474 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", 2475 | "dev": true 2476 | }, 2477 | "find-up": { 2478 | "version": "5.0.0", 2479 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", 2480 | "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", 2481 | "dev": true, 2482 | "requires": { 2483 | "locate-path": "^6.0.0", 2484 | "path-exists": "^4.0.0" 2485 | } 2486 | }, 2487 | "has-flag": { 2488 | "version": "4.0.0", 2489 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 2490 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 2491 | "dev": true 2492 | }, 2493 | "js-yaml": { 2494 | "version": "4.0.0", 2495 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.0.0.tgz", 2496 | "integrity": "sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q==", 2497 | "dev": true, 2498 | "requires": { 2499 | "argparse": "^2.0.1" 2500 | } 2501 | }, 2502 | "locate-path": { 2503 | "version": "6.0.0", 2504 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", 2505 | "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", 2506 | "dev": true, 2507 | "requires": { 2508 | "p-locate": "^5.0.0" 2509 | } 2510 | }, 2511 | "log-symbols": { 2512 | "version": "4.0.0", 2513 | "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz", 2514 | "integrity": "sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==", 2515 | "dev": true, 2516 | "requires": { 2517 | "chalk": "^4.0.0" 2518 | } 2519 | }, 2520 | "ms": { 2521 | "version": "2.1.3", 2522 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 2523 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", 2524 | "dev": true 2525 | }, 2526 | "p-limit": { 2527 | "version": "3.1.0", 2528 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", 2529 | "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", 2530 | "dev": true, 2531 | "requires": { 2532 | "yocto-queue": "^0.1.0" 2533 | } 2534 | }, 2535 | "p-locate": { 2536 | "version": "5.0.0", 2537 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", 2538 | "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", 2539 | "dev": true, 2540 | "requires": { 2541 | "p-limit": "^3.0.2" 2542 | } 2543 | }, 2544 | "path-exists": { 2545 | "version": "4.0.0", 2546 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 2547 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 2548 | "dev": true 2549 | }, 2550 | "supports-color": { 2551 | "version": "8.1.1", 2552 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", 2553 | "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", 2554 | "dev": true, 2555 | "requires": { 2556 | "has-flag": "^4.0.0" 2557 | } 2558 | }, 2559 | "which": { 2560 | "version": "2.0.2", 2561 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 2562 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 2563 | "dev": true, 2564 | "requires": { 2565 | "isexe": "^2.0.0" 2566 | } 2567 | }, 2568 | "yargs-parser": { 2569 | "version": "20.2.4", 2570 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", 2571 | "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", 2572 | "dev": true 2573 | } 2574 | } 2575 | }, 2576 | "ms": { 2577 | "version": "2.1.2", 2578 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 2579 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 2580 | "dev": true 2581 | }, 2582 | "nanoid": { 2583 | "version": "3.1.20", 2584 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.20.tgz", 2585 | "integrity": "sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw==", 2586 | "dev": true 2587 | }, 2588 | "natural-compare": { 2589 | "version": "1.4.0", 2590 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 2591 | "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", 2592 | "dev": true 2593 | }, 2594 | "negotiator": { 2595 | "version": "0.6.2", 2596 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", 2597 | "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", 2598 | "dev": true 2599 | }, 2600 | "normalize-package-data": { 2601 | "version": "2.5.0", 2602 | "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", 2603 | "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", 2604 | "dev": true, 2605 | "requires": { 2606 | "hosted-git-info": "^2.1.4", 2607 | "resolve": "^1.10.0", 2608 | "semver": "2 || 3 || 4 || 5", 2609 | "validate-npm-package-license": "^3.0.1" 2610 | }, 2611 | "dependencies": { 2612 | "semver": { 2613 | "version": "5.7.1", 2614 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 2615 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", 2616 | "dev": true 2617 | } 2618 | } 2619 | }, 2620 | "normalize-path": { 2621 | "version": "3.0.0", 2622 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 2623 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 2624 | "dev": true 2625 | }, 2626 | "normalize-url": { 2627 | "version": "6.1.0", 2628 | "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", 2629 | "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", 2630 | "dev": true 2631 | }, 2632 | "object-assign": { 2633 | "version": "4.1.1", 2634 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 2635 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", 2636 | "dev": true 2637 | }, 2638 | "object-inspect": { 2639 | "version": "1.9.0", 2640 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", 2641 | "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", 2642 | "dev": true 2643 | }, 2644 | "object-keys": { 2645 | "version": "1.1.1", 2646 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", 2647 | "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", 2648 | "dev": true 2649 | }, 2650 | "object.values": { 2651 | "version": "1.1.3", 2652 | "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.3.tgz", 2653 | "integrity": "sha512-nkF6PfDB9alkOUxpf1HNm/QlkeW3SReqL5WXeBLpEJJnlPSvRaDQpW3gQTksTN3fgJX4hL42RzKyOin6ff3tyw==", 2654 | "dev": true, 2655 | "requires": { 2656 | "call-bind": "^1.0.2", 2657 | "define-properties": "^1.1.3", 2658 | "es-abstract": "^1.18.0-next.2", 2659 | "has": "^1.0.3" 2660 | } 2661 | }, 2662 | "on-finished": { 2663 | "version": "2.3.0", 2664 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", 2665 | "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", 2666 | "dev": true, 2667 | "requires": { 2668 | "ee-first": "1.1.1" 2669 | } 2670 | }, 2671 | "once": { 2672 | "version": "1.4.0", 2673 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 2674 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 2675 | "dev": true, 2676 | "requires": { 2677 | "wrappy": "1" 2678 | } 2679 | }, 2680 | "optionator": { 2681 | "version": "0.9.1", 2682 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", 2683 | "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", 2684 | "dev": true, 2685 | "requires": { 2686 | "deep-is": "^0.1.3", 2687 | "fast-levenshtein": "^2.0.6", 2688 | "levn": "^0.4.1", 2689 | "prelude-ls": "^1.2.1", 2690 | "type-check": "^0.4.0", 2691 | "word-wrap": "^1.2.3" 2692 | } 2693 | }, 2694 | "os-tmpdir": { 2695 | "version": "1.0.2", 2696 | "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", 2697 | "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", 2698 | "dev": true 2699 | }, 2700 | "p-cancelable": { 2701 | "version": "2.1.1", 2702 | "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", 2703 | "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", 2704 | "dev": true 2705 | }, 2706 | "p-limit": { 2707 | "version": "1.3.0", 2708 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", 2709 | "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", 2710 | "dev": true, 2711 | "requires": { 2712 | "p-try": "^1.0.0" 2713 | } 2714 | }, 2715 | "p-locate": { 2716 | "version": "2.0.0", 2717 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", 2718 | "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", 2719 | "dev": true, 2720 | "requires": { 2721 | "p-limit": "^1.1.0" 2722 | } 2723 | }, 2724 | "p-try": { 2725 | "version": "1.0.0", 2726 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", 2727 | "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", 2728 | "dev": true 2729 | }, 2730 | "parent-module": { 2731 | "version": "1.0.1", 2732 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 2733 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 2734 | "dev": true, 2735 | "requires": { 2736 | "callsites": "^3.0.0" 2737 | } 2738 | }, 2739 | "parse-json": { 2740 | "version": "2.2.0", 2741 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", 2742 | "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", 2743 | "dev": true, 2744 | "requires": { 2745 | "error-ex": "^1.2.0" 2746 | } 2747 | }, 2748 | "parseurl": { 2749 | "version": "1.3.3", 2750 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", 2751 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", 2752 | "dev": true 2753 | }, 2754 | "path-exists": { 2755 | "version": "3.0.0", 2756 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", 2757 | "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", 2758 | "dev": true 2759 | }, 2760 | "path-is-absolute": { 2761 | "version": "1.0.1", 2762 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 2763 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 2764 | "dev": true 2765 | }, 2766 | "path-key": { 2767 | "version": "3.1.1", 2768 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 2769 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 2770 | "dev": true 2771 | }, 2772 | "path-parse": { 2773 | "version": "1.0.6", 2774 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", 2775 | "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", 2776 | "dev": true 2777 | }, 2778 | "path-type": { 2779 | "version": "4.0.0", 2780 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", 2781 | "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", 2782 | "dev": true 2783 | }, 2784 | "pathval": { 2785 | "version": "1.1.1", 2786 | "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", 2787 | "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", 2788 | "dev": true 2789 | }, 2790 | "pend": { 2791 | "version": "1.2.0", 2792 | "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", 2793 | "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", 2794 | "dev": true 2795 | }, 2796 | "picomatch": { 2797 | "version": "2.2.3", 2798 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.3.tgz", 2799 | "integrity": "sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg==", 2800 | "dev": true 2801 | }, 2802 | "pify": { 2803 | "version": "2.3.0", 2804 | "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", 2805 | "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", 2806 | "dev": true 2807 | }, 2808 | "pkg-dir": { 2809 | "version": "2.0.0", 2810 | "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", 2811 | "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", 2812 | "dev": true, 2813 | "requires": { 2814 | "find-up": "^2.1.0" 2815 | } 2816 | }, 2817 | "prelude-ls": { 2818 | "version": "1.2.1", 2819 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", 2820 | "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", 2821 | "dev": true 2822 | }, 2823 | "prettier": { 2824 | "version": "2.2.1", 2825 | "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.2.1.tgz", 2826 | "integrity": "sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q==", 2827 | "dev": true 2828 | }, 2829 | "prettier-linter-helpers": { 2830 | "version": "1.0.0", 2831 | "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", 2832 | "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", 2833 | "dev": true, 2834 | "requires": { 2835 | "fast-diff": "^1.1.2" 2836 | } 2837 | }, 2838 | "process-nextick-args": { 2839 | "version": "2.0.1", 2840 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", 2841 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", 2842 | "dev": true 2843 | }, 2844 | "progress": { 2845 | "version": "2.0.3", 2846 | "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", 2847 | "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", 2848 | "dev": true 2849 | }, 2850 | "pump": { 2851 | "version": "3.0.0", 2852 | "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", 2853 | "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", 2854 | "dev": true, 2855 | "requires": { 2856 | "end-of-stream": "^1.1.0", 2857 | "once": "^1.3.1" 2858 | } 2859 | }, 2860 | "punycode": { 2861 | "version": "2.1.1", 2862 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 2863 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", 2864 | "dev": true 2865 | }, 2866 | "qjobs": { 2867 | "version": "1.2.0", 2868 | "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", 2869 | "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", 2870 | "dev": true 2871 | }, 2872 | "qs": { 2873 | "version": "6.7.0", 2874 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", 2875 | "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", 2876 | "dev": true 2877 | }, 2878 | "queue-microtask": { 2879 | "version": "1.2.3", 2880 | "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", 2881 | "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", 2882 | "dev": true 2883 | }, 2884 | "quick-lru": { 2885 | "version": "5.1.1", 2886 | "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", 2887 | "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", 2888 | "dev": true 2889 | }, 2890 | "randombytes": { 2891 | "version": "2.1.0", 2892 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", 2893 | "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", 2894 | "dev": true, 2895 | "requires": { 2896 | "safe-buffer": "^5.1.0" 2897 | } 2898 | }, 2899 | "range-parser": { 2900 | "version": "1.2.1", 2901 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", 2902 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", 2903 | "dev": true 2904 | }, 2905 | "raw-body": { 2906 | "version": "2.4.0", 2907 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", 2908 | "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", 2909 | "dev": true, 2910 | "requires": { 2911 | "bytes": "3.1.0", 2912 | "http-errors": "1.7.2", 2913 | "iconv-lite": "0.4.24", 2914 | "unpipe": "1.0.0" 2915 | } 2916 | }, 2917 | "read-pkg": { 2918 | "version": "2.0.0", 2919 | "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", 2920 | "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", 2921 | "dev": true, 2922 | "requires": { 2923 | "load-json-file": "^2.0.0", 2924 | "normalize-package-data": "^2.3.2", 2925 | "path-type": "^2.0.0" 2926 | }, 2927 | "dependencies": { 2928 | "path-type": { 2929 | "version": "2.0.0", 2930 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", 2931 | "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", 2932 | "dev": true, 2933 | "requires": { 2934 | "pify": "^2.0.0" 2935 | } 2936 | } 2937 | } 2938 | }, 2939 | "read-pkg-up": { 2940 | "version": "2.0.0", 2941 | "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", 2942 | "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", 2943 | "dev": true, 2944 | "requires": { 2945 | "find-up": "^2.0.0", 2946 | "read-pkg": "^2.0.0" 2947 | } 2948 | }, 2949 | "readable-stream": { 2950 | "version": "2.3.7", 2951 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 2952 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 2953 | "dev": true, 2954 | "requires": { 2955 | "core-util-is": "~1.0.0", 2956 | "inherits": "~2.0.3", 2957 | "isarray": "~1.0.0", 2958 | "process-nextick-args": "~2.0.0", 2959 | "safe-buffer": "~5.1.1", 2960 | "string_decoder": "~1.1.1", 2961 | "util-deprecate": "~1.0.1" 2962 | }, 2963 | "dependencies": { 2964 | "safe-buffer": { 2965 | "version": "5.1.2", 2966 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 2967 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 2968 | "dev": true 2969 | } 2970 | } 2971 | }, 2972 | "readdirp": { 2973 | "version": "3.5.0", 2974 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", 2975 | "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", 2976 | "dev": true, 2977 | "requires": { 2978 | "picomatch": "^2.2.1" 2979 | } 2980 | }, 2981 | "regexpp": { 2982 | "version": "3.1.0", 2983 | "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", 2984 | "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", 2985 | "dev": true 2986 | }, 2987 | "require-directory": { 2988 | "version": "2.1.1", 2989 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 2990 | "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", 2991 | "dev": true 2992 | }, 2993 | "require-from-string": { 2994 | "version": "2.0.2", 2995 | "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", 2996 | "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", 2997 | "dev": true 2998 | }, 2999 | "requires-port": { 3000 | "version": "1.0.0", 3001 | "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", 3002 | "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", 3003 | "dev": true 3004 | }, 3005 | "resolve": { 3006 | "version": "1.20.0", 3007 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", 3008 | "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", 3009 | "dev": true, 3010 | "requires": { 3011 | "is-core-module": "^2.2.0", 3012 | "path-parse": "^1.0.6" 3013 | } 3014 | }, 3015 | "resolve-alpn": { 3016 | "version": "1.2.1", 3017 | "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", 3018 | "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", 3019 | "dev": true 3020 | }, 3021 | "resolve-from": { 3022 | "version": "4.0.0", 3023 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 3024 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", 3025 | "dev": true 3026 | }, 3027 | "responselike": { 3028 | "version": "2.0.0", 3029 | "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.0.tgz", 3030 | "integrity": "sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw==", 3031 | "dev": true, 3032 | "requires": { 3033 | "lowercase-keys": "^2.0.0" 3034 | } 3035 | }, 3036 | "reusify": { 3037 | "version": "1.0.4", 3038 | "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", 3039 | "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", 3040 | "dev": true 3041 | }, 3042 | "rfdc": { 3043 | "version": "1.1.4", 3044 | "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.1.4.tgz", 3045 | "integrity": "sha512-5C9HXdzK8EAqN7JDif30jqsBzavB7wLpaubisuQIGHWf2gUXSpzy6ArX/+Da8RjFpagWsCn+pIgxTMAmKw9Zug==", 3046 | "dev": true 3047 | }, 3048 | "rimraf": { 3049 | "version": "3.0.2", 3050 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 3051 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 3052 | "dev": true, 3053 | "requires": { 3054 | "glob": "^7.1.3" 3055 | } 3056 | }, 3057 | "run-parallel": { 3058 | "version": "1.2.0", 3059 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", 3060 | "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", 3061 | "dev": true, 3062 | "requires": { 3063 | "queue-microtask": "^1.2.2" 3064 | } 3065 | }, 3066 | "safe-buffer": { 3067 | "version": "5.2.1", 3068 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 3069 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 3070 | "dev": true 3071 | }, 3072 | "safer-buffer": { 3073 | "version": "2.1.2", 3074 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 3075 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", 3076 | "dev": true 3077 | }, 3078 | "semver": { 3079 | "version": "7.3.5", 3080 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", 3081 | "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", 3082 | "dev": true, 3083 | "requires": { 3084 | "lru-cache": "^6.0.0" 3085 | } 3086 | }, 3087 | "serialize-javascript": { 3088 | "version": "5.0.1", 3089 | "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", 3090 | "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", 3091 | "dev": true, 3092 | "requires": { 3093 | "randombytes": "^2.1.0" 3094 | } 3095 | }, 3096 | "setprototypeof": { 3097 | "version": "1.1.1", 3098 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", 3099 | "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", 3100 | "dev": true 3101 | }, 3102 | "shebang-command": { 3103 | "version": "2.0.0", 3104 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 3105 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 3106 | "dev": true, 3107 | "requires": { 3108 | "shebang-regex": "^3.0.0" 3109 | } 3110 | }, 3111 | "shebang-regex": { 3112 | "version": "3.0.0", 3113 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 3114 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 3115 | "dev": true 3116 | }, 3117 | "slash": { 3118 | "version": "3.0.0", 3119 | "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", 3120 | "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", 3121 | "dev": true 3122 | }, 3123 | "slice-ansi": { 3124 | "version": "4.0.0", 3125 | "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", 3126 | "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", 3127 | "dev": true, 3128 | "requires": { 3129 | "ansi-styles": "^4.0.0", 3130 | "astral-regex": "^2.0.0", 3131 | "is-fullwidth-code-point": "^3.0.0" 3132 | }, 3133 | "dependencies": { 3134 | "ansi-styles": { 3135 | "version": "4.3.0", 3136 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 3137 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 3138 | "dev": true, 3139 | "requires": { 3140 | "color-convert": "^2.0.1" 3141 | } 3142 | }, 3143 | "color-convert": { 3144 | "version": "2.0.1", 3145 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 3146 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 3147 | "dev": true, 3148 | "requires": { 3149 | "color-name": "~1.1.4" 3150 | } 3151 | }, 3152 | "color-name": { 3153 | "version": "1.1.4", 3154 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 3155 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 3156 | "dev": true 3157 | } 3158 | } 3159 | }, 3160 | "socket.io": { 3161 | "version": "3.1.2", 3162 | "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-3.1.2.tgz", 3163 | "integrity": "sha512-JubKZnTQ4Z8G4IZWtaAZSiRP3I/inpy8c/Bsx2jrwGrTbKeVU5xd6qkKMHpChYeM3dWZSO0QACiGK+obhBNwYw==", 3164 | "dev": true, 3165 | "requires": { 3166 | "@types/cookie": "^0.4.0", 3167 | "@types/cors": "^2.8.8", 3168 | "@types/node": ">=10.0.0", 3169 | "accepts": "~1.3.4", 3170 | "base64id": "~2.0.0", 3171 | "debug": "~4.3.1", 3172 | "engine.io": "~4.1.0", 3173 | "socket.io-adapter": "~2.1.0", 3174 | "socket.io-parser": "~4.0.3" 3175 | } 3176 | }, 3177 | "socket.io-adapter": { 3178 | "version": "2.1.0", 3179 | "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.1.0.tgz", 3180 | "integrity": "sha512-+vDov/aTsLjViYTwS9fPy5pEtTkrbEKsw2M+oVSoFGw6OD1IpvlV1VPhUzNbofCQ8oyMbdYJqDtGdmHQK6TdPg==", 3181 | "dev": true 3182 | }, 3183 | "socket.io-parser": { 3184 | "version": "4.0.4", 3185 | "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.4.tgz", 3186 | "integrity": "sha512-t+b0SS+IxG7Rxzda2EVvyBZbvFPBCjJoyHuE0P//7OAsN23GItzDRdWa6ALxZI/8R5ygK7jAR6t028/z+7295g==", 3187 | "dev": true, 3188 | "requires": { 3189 | "@types/component-emitter": "^1.2.10", 3190 | "component-emitter": "~1.3.0", 3191 | "debug": "~4.3.1" 3192 | } 3193 | }, 3194 | "spdx-correct": { 3195 | "version": "3.1.1", 3196 | "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", 3197 | "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", 3198 | "dev": true, 3199 | "requires": { 3200 | "spdx-expression-parse": "^3.0.0", 3201 | "spdx-license-ids": "^3.0.0" 3202 | } 3203 | }, 3204 | "spdx-exceptions": { 3205 | "version": "2.3.0", 3206 | "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", 3207 | "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", 3208 | "dev": true 3209 | }, 3210 | "spdx-expression-parse": { 3211 | "version": "3.0.1", 3212 | "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", 3213 | "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", 3214 | "dev": true, 3215 | "requires": { 3216 | "spdx-exceptions": "^2.1.0", 3217 | "spdx-license-ids": "^3.0.0" 3218 | } 3219 | }, 3220 | "spdx-license-ids": { 3221 | "version": "3.0.7", 3222 | "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz", 3223 | "integrity": "sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==", 3224 | "dev": true 3225 | }, 3226 | "sprintf-js": { 3227 | "version": "1.0.3", 3228 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", 3229 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", 3230 | "dev": true 3231 | }, 3232 | "statuses": { 3233 | "version": "1.5.0", 3234 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", 3235 | "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", 3236 | "dev": true 3237 | }, 3238 | "streamroller": { 3239 | "version": "2.2.4", 3240 | "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-2.2.4.tgz", 3241 | "integrity": "sha512-OG79qm3AujAM9ImoqgWEY1xG4HX+Lw+yY6qZj9R1K2mhF5bEmQ849wvrb+4vt4jLMLzwXttJlQbOdPOQVRv7DQ==", 3242 | "dev": true, 3243 | "requires": { 3244 | "date-format": "^2.1.0", 3245 | "debug": "^4.1.1", 3246 | "fs-extra": "^8.1.0" 3247 | }, 3248 | "dependencies": { 3249 | "date-format": { 3250 | "version": "2.1.0", 3251 | "resolved": "https://registry.npmjs.org/date-format/-/date-format-2.1.0.tgz", 3252 | "integrity": "sha512-bYQuGLeFxhkxNOF3rcMtiZxvCBAquGzZm6oWA1oZ0g2THUzivaRhv8uOhdr19LmoobSOLoIAxeUK2RdbM8IFTA==", 3253 | "dev": true 3254 | } 3255 | } 3256 | }, 3257 | "string-width": { 3258 | "version": "4.2.0", 3259 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", 3260 | "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", 3261 | "dev": true, 3262 | "requires": { 3263 | "emoji-regex": "^8.0.0", 3264 | "is-fullwidth-code-point": "^3.0.0", 3265 | "strip-ansi": "^6.0.0" 3266 | } 3267 | }, 3268 | "string.prototype.trimend": { 3269 | "version": "1.0.4", 3270 | "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", 3271 | "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", 3272 | "dev": true, 3273 | "requires": { 3274 | "call-bind": "^1.0.2", 3275 | "define-properties": "^1.1.3" 3276 | } 3277 | }, 3278 | "string.prototype.trimstart": { 3279 | "version": "1.0.4", 3280 | "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", 3281 | "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", 3282 | "dev": true, 3283 | "requires": { 3284 | "call-bind": "^1.0.2", 3285 | "define-properties": "^1.1.3" 3286 | } 3287 | }, 3288 | "string_decoder": { 3289 | "version": "1.1.1", 3290 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 3291 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 3292 | "dev": true, 3293 | "requires": { 3294 | "safe-buffer": "~5.1.0" 3295 | }, 3296 | "dependencies": { 3297 | "safe-buffer": { 3298 | "version": "5.1.2", 3299 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 3300 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 3301 | "dev": true 3302 | } 3303 | } 3304 | }, 3305 | "strip-ansi": { 3306 | "version": "6.0.0", 3307 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", 3308 | "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", 3309 | "dev": true, 3310 | "requires": { 3311 | "ansi-regex": "^5.0.0" 3312 | } 3313 | }, 3314 | "strip-bom": { 3315 | "version": "3.0.0", 3316 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", 3317 | "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", 3318 | "dev": true 3319 | }, 3320 | "strip-json-comments": { 3321 | "version": "3.1.1", 3322 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", 3323 | "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", 3324 | "dev": true 3325 | }, 3326 | "supports-color": { 3327 | "version": "5.5.0", 3328 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 3329 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 3330 | "dev": true, 3331 | "requires": { 3332 | "has-flag": "^3.0.0" 3333 | } 3334 | }, 3335 | "svg-element-attributes": { 3336 | "version": "1.3.1", 3337 | "resolved": "https://registry.npmjs.org/svg-element-attributes/-/svg-element-attributes-1.3.1.tgz", 3338 | "integrity": "sha512-Bh05dSOnJBf3miNMqpsormfNtfidA/GxQVakhtn0T4DECWKeXQRQUceYjJ+OxYiiLdGe4Jo9iFV8wICFapFeIA==", 3339 | "dev": true 3340 | }, 3341 | "table": { 3342 | "version": "6.0.9", 3343 | "resolved": "https://registry.npmjs.org/table/-/table-6.0.9.tgz", 3344 | "integrity": "sha512-F3cLs9a3hL1Z7N4+EkSscsel3z55XT950AvB05bwayrNg5T1/gykXtigioTAjbltvbMSJvvhFCbnf6mX+ntnJQ==", 3345 | "dev": true, 3346 | "requires": { 3347 | "ajv": "^8.0.1", 3348 | "is-boolean-object": "^1.1.0", 3349 | "is-number-object": "^1.0.4", 3350 | "is-string": "^1.0.5", 3351 | "lodash.clonedeep": "^4.5.0", 3352 | "lodash.flatten": "^4.4.0", 3353 | "lodash.truncate": "^4.4.2", 3354 | "slice-ansi": "^4.0.0", 3355 | "string-width": "^4.2.0" 3356 | }, 3357 | "dependencies": { 3358 | "ajv": { 3359 | "version": "8.1.0", 3360 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.1.0.tgz", 3361 | "integrity": "sha512-B/Sk2Ix7A36fs/ZkuGLIR86EdjbgR6fsAcbx9lOP/QBSXujDNbVmIS/U4Itz5k8fPFDeVZl/zQ/gJW4Jrq6XjQ==", 3362 | "dev": true, 3363 | "requires": { 3364 | "fast-deep-equal": "^3.1.1", 3365 | "json-schema-traverse": "^1.0.0", 3366 | "require-from-string": "^2.0.2", 3367 | "uri-js": "^4.2.2" 3368 | } 3369 | }, 3370 | "json-schema-traverse": { 3371 | "version": "1.0.0", 3372 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", 3373 | "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", 3374 | "dev": true 3375 | } 3376 | } 3377 | }, 3378 | "text-table": { 3379 | "version": "0.2.0", 3380 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", 3381 | "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", 3382 | "dev": true 3383 | }, 3384 | "tmp": { 3385 | "version": "0.0.33", 3386 | "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", 3387 | "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", 3388 | "dev": true, 3389 | "requires": { 3390 | "os-tmpdir": "~1.0.2" 3391 | } 3392 | }, 3393 | "to-regex-range": { 3394 | "version": "5.0.1", 3395 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 3396 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 3397 | "dev": true, 3398 | "requires": { 3399 | "is-number": "^7.0.0" 3400 | } 3401 | }, 3402 | "toidentifier": { 3403 | "version": "1.0.0", 3404 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", 3405 | "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", 3406 | "dev": true 3407 | }, 3408 | "tsconfig-paths": { 3409 | "version": "3.9.0", 3410 | "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz", 3411 | "integrity": "sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw==", 3412 | "dev": true, 3413 | "requires": { 3414 | "@types/json5": "^0.0.29", 3415 | "json5": "^1.0.1", 3416 | "minimist": "^1.2.0", 3417 | "strip-bom": "^3.0.0" 3418 | } 3419 | }, 3420 | "tslib": { 3421 | "version": "1.14.1", 3422 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", 3423 | "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", 3424 | "dev": true 3425 | }, 3426 | "tsutils": { 3427 | "version": "3.21.0", 3428 | "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", 3429 | "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", 3430 | "dev": true, 3431 | "requires": { 3432 | "tslib": "^1.8.1" 3433 | } 3434 | }, 3435 | "tunnel": { 3436 | "version": "0.0.6", 3437 | "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", 3438 | "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", 3439 | "dev": true 3440 | }, 3441 | "type-check": { 3442 | "version": "0.4.0", 3443 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", 3444 | "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", 3445 | "dev": true, 3446 | "requires": { 3447 | "prelude-ls": "^1.2.1" 3448 | } 3449 | }, 3450 | "type-detect": { 3451 | "version": "4.0.8", 3452 | "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", 3453 | "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", 3454 | "dev": true 3455 | }, 3456 | "type-fest": { 3457 | "version": "0.20.2", 3458 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", 3459 | "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", 3460 | "dev": true 3461 | }, 3462 | "type-is": { 3463 | "version": "1.6.18", 3464 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", 3465 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", 3466 | "dev": true, 3467 | "requires": { 3468 | "media-typer": "0.3.0", 3469 | "mime-types": "~2.1.24" 3470 | } 3471 | }, 3472 | "typedarray": { 3473 | "version": "0.0.6", 3474 | "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", 3475 | "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", 3476 | "dev": true 3477 | }, 3478 | "typescript": { 3479 | "version": "4.2.4", 3480 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.2.4.tgz", 3481 | "integrity": "sha512-V+evlYHZnQkaz8TRBuxTA92yZBPotr5H+WhQ7bD3hZUndx5tGOa1fuCgeSjxAzM1RiN5IzvadIXTVefuuwZCRg==", 3482 | "dev": true 3483 | }, 3484 | "ua-parser-js": { 3485 | "version": "0.7.28", 3486 | "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.28.tgz", 3487 | "integrity": "sha512-6Gurc1n//gjp9eQNXjD9O3M/sMwVtN5S8Lv9bvOYBfKfDNiIIhqiyi01vMBO45u4zkDE420w/e0se7Vs+sIg+g==", 3488 | "dev": true 3489 | }, 3490 | "unbox-primitive": { 3491 | "version": "1.0.1", 3492 | "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", 3493 | "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", 3494 | "dev": true, 3495 | "requires": { 3496 | "function-bind": "^1.1.1", 3497 | "has-bigints": "^1.0.1", 3498 | "has-symbols": "^1.0.2", 3499 | "which-boxed-primitive": "^1.0.2" 3500 | } 3501 | }, 3502 | "universalify": { 3503 | "version": "0.1.2", 3504 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", 3505 | "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", 3506 | "dev": true 3507 | }, 3508 | "unpipe": { 3509 | "version": "1.0.0", 3510 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", 3511 | "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", 3512 | "dev": true 3513 | }, 3514 | "uri-js": { 3515 | "version": "4.4.1", 3516 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", 3517 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", 3518 | "dev": true, 3519 | "requires": { 3520 | "punycode": "^2.1.0" 3521 | } 3522 | }, 3523 | "util-deprecate": { 3524 | "version": "1.0.2", 3525 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 3526 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", 3527 | "dev": true 3528 | }, 3529 | "utils-merge": { 3530 | "version": "1.0.1", 3531 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", 3532 | "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", 3533 | "dev": true 3534 | }, 3535 | "v8-compile-cache": { 3536 | "version": "2.1.0", 3537 | "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz", 3538 | "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==", 3539 | "dev": true 3540 | }, 3541 | "validate-npm-package-license": { 3542 | "version": "3.0.4", 3543 | "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", 3544 | "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", 3545 | "dev": true, 3546 | "requires": { 3547 | "spdx-correct": "^3.0.0", 3548 | "spdx-expression-parse": "^3.0.0" 3549 | } 3550 | }, 3551 | "vary": { 3552 | "version": "1.1.2", 3553 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 3554 | "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", 3555 | "dev": true 3556 | }, 3557 | "void-elements": { 3558 | "version": "2.0.1", 3559 | "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", 3560 | "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", 3561 | "dev": true 3562 | }, 3563 | "which": { 3564 | "version": "1.3.1", 3565 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", 3566 | "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", 3567 | "dev": true, 3568 | "requires": { 3569 | "isexe": "^2.0.0" 3570 | } 3571 | }, 3572 | "which-boxed-primitive": { 3573 | "version": "1.0.2", 3574 | "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", 3575 | "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", 3576 | "dev": true, 3577 | "requires": { 3578 | "is-bigint": "^1.0.1", 3579 | "is-boolean-object": "^1.1.0", 3580 | "is-number-object": "^1.0.4", 3581 | "is-string": "^1.0.5", 3582 | "is-symbol": "^1.0.3" 3583 | } 3584 | }, 3585 | "wide-align": { 3586 | "version": "1.1.3", 3587 | "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", 3588 | "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", 3589 | "dev": true, 3590 | "requires": { 3591 | "string-width": "^1.0.2 || 2" 3592 | }, 3593 | "dependencies": { 3594 | "ansi-regex": { 3595 | "version": "3.0.0", 3596 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", 3597 | "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", 3598 | "dev": true 3599 | }, 3600 | "is-fullwidth-code-point": { 3601 | "version": "2.0.0", 3602 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", 3603 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", 3604 | "dev": true 3605 | }, 3606 | "string-width": { 3607 | "version": "2.1.1", 3608 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", 3609 | "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", 3610 | "dev": true, 3611 | "requires": { 3612 | "is-fullwidth-code-point": "^2.0.0", 3613 | "strip-ansi": "^4.0.0" 3614 | } 3615 | }, 3616 | "strip-ansi": { 3617 | "version": "4.0.0", 3618 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", 3619 | "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", 3620 | "dev": true, 3621 | "requires": { 3622 | "ansi-regex": "^3.0.0" 3623 | } 3624 | } 3625 | } 3626 | }, 3627 | "word-wrap": { 3628 | "version": "1.2.3", 3629 | "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", 3630 | "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", 3631 | "dev": true 3632 | }, 3633 | "workerpool": { 3634 | "version": "6.1.0", 3635 | "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.1.0.tgz", 3636 | "integrity": "sha512-toV7q9rWNYha963Pl/qyeZ6wG+3nnsyvolaNUS8+R5Wtw6qJPTxIlOP1ZSvcGhEJw+l3HMMmtiNo9Gl61G4GVg==", 3637 | "dev": true 3638 | }, 3639 | "wrap-ansi": { 3640 | "version": "7.0.0", 3641 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 3642 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 3643 | "dev": true, 3644 | "requires": { 3645 | "ansi-styles": "^4.0.0", 3646 | "string-width": "^4.1.0", 3647 | "strip-ansi": "^6.0.0" 3648 | }, 3649 | "dependencies": { 3650 | "ansi-styles": { 3651 | "version": "4.3.0", 3652 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 3653 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 3654 | "dev": true, 3655 | "requires": { 3656 | "color-convert": "^2.0.1" 3657 | } 3658 | }, 3659 | "color-convert": { 3660 | "version": "2.0.1", 3661 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 3662 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 3663 | "dev": true, 3664 | "requires": { 3665 | "color-name": "~1.1.4" 3666 | } 3667 | }, 3668 | "color-name": { 3669 | "version": "1.1.4", 3670 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 3671 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 3672 | "dev": true 3673 | } 3674 | } 3675 | }, 3676 | "wrappy": { 3677 | "version": "1.0.2", 3678 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 3679 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 3680 | "dev": true 3681 | }, 3682 | "ws": { 3683 | "version": "7.4.4", 3684 | "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.4.tgz", 3685 | "integrity": "sha512-Qm8k8ojNQIMx7S+Zp8u/uHOx7Qazv3Yv4q68MiWWWOJhiwG5W3x7iqmRtJo8xxrciZUY4vRxUTJCKuRnF28ZZw==", 3686 | "dev": true 3687 | }, 3688 | "y18n": { 3689 | "version": "5.0.8", 3690 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", 3691 | "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", 3692 | "dev": true 3693 | }, 3694 | "yallist": { 3695 | "version": "4.0.0", 3696 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 3697 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", 3698 | "dev": true 3699 | }, 3700 | "yargs": { 3701 | "version": "16.2.0", 3702 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", 3703 | "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", 3704 | "dev": true, 3705 | "requires": { 3706 | "cliui": "^7.0.2", 3707 | "escalade": "^3.1.1", 3708 | "get-caller-file": "^2.0.5", 3709 | "require-directory": "^2.1.1", 3710 | "string-width": "^4.2.0", 3711 | "y18n": "^5.0.5", 3712 | "yargs-parser": "^20.2.2" 3713 | } 3714 | }, 3715 | "yargs-parser": { 3716 | "version": "20.2.7", 3717 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.7.tgz", 3718 | "integrity": "sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw==", 3719 | "dev": true 3720 | }, 3721 | "yargs-unparser": { 3722 | "version": "2.0.0", 3723 | "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", 3724 | "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", 3725 | "dev": true, 3726 | "requires": { 3727 | "camelcase": "^6.0.0", 3728 | "decamelize": "^4.0.0", 3729 | "flat": "^5.0.2", 3730 | "is-plain-obj": "^2.1.0" 3731 | }, 3732 | "dependencies": { 3733 | "camelcase": { 3734 | "version": "6.2.0", 3735 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", 3736 | "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", 3737 | "dev": true 3738 | }, 3739 | "decamelize": { 3740 | "version": "4.0.0", 3741 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", 3742 | "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", 3743 | "dev": true 3744 | } 3745 | } 3746 | }, 3747 | "yauzl": { 3748 | "version": "2.10.0", 3749 | "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", 3750 | "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", 3751 | "dev": true, 3752 | "requires": { 3753 | "buffer-crc32": "~0.2.3", 3754 | "fd-slicer": "~1.1.0" 3755 | } 3756 | }, 3757 | "yocto-queue": { 3758 | "version": "0.1.0", 3759 | "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", 3760 | "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", 3761 | "dev": true 3762 | } 3763 | } 3764 | } 3765 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@github/typing-effect-element", 3 | "version": "0.1.0", 4 | "description": "A custom element that shows text as if it were being typed.", 5 | "main": "dist/index.js", 6 | "module": "dist/index.js", 7 | "type": "module", 8 | "types": "dist/index.d.ts", 9 | "license": "MIT", 10 | "repository": "github/typing-effect-element", 11 | "files": [ 12 | "dist" 13 | ], 14 | "scripts": { 15 | "clean": "rm -rf dist", 16 | "lint": "eslint . --ext .ts,.js", 17 | "prebuild": "npm run clean && npm run lint && mkdir dist", 18 | "build": "tsc", 19 | "pretest": "npm run build", 20 | "test": "karma start karma.config.cjs", 21 | "prepublishOnly": "npm run build", 22 | "postpublish": "npm publish --ignore-scripts --@github:registry='https://npm.pkg.github.com'" 23 | }, 24 | "prettier": "@github/prettier-config", 25 | "devDependencies": { 26 | "@github/prettier-config": "0.0.4", 27 | "chai": "^4.3.4", 28 | "chromium": "^3.0.3", 29 | "eslint": "^7.24.0", 30 | "eslint-plugin-github": "^4.1.3", 31 | "karma": "^6.3.2", 32 | "karma-chai": "^0.1.0", 33 | "karma-chrome-launcher": "^3.1.0", 34 | "karma-mocha": "^2.0.1", 35 | "karma-mocha-reporter": "^2.2.5", 36 | "mocha": "^8.3.2", 37 | "typescript": "^4.2.4" 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | const loaded: Promise = (function () { 2 | if (document.readyState === 'complete') { 3 | return Promise.resolve() 4 | } else { 5 | return new Promise(resolve => { 6 | window.addEventListener('load', resolve) 7 | }) 8 | } 9 | })() 10 | 11 | class TypingEffectElement extends HTMLElement { 12 | async connectedCallback(): Promise { 13 | await loaded 14 | if (this.content) await typeLines(this.lines, this.content, this.characterDelay, this.lineDelay) 15 | if (this.cursor) this.cursor.hidden = true 16 | this.dispatchEvent( 17 | new CustomEvent('typing:complete', { 18 | bubbles: true, 19 | cancelable: true 20 | }) 21 | ) 22 | } 23 | 24 | get content(): HTMLElement | null { 25 | return this.querySelector('[data-target="typing-effect.content"]') 26 | } 27 | 28 | get cursor(): HTMLElement | null { 29 | return this.querySelector('[data-target="typing-effect.cursor"]') 30 | } 31 | 32 | get lines(): string[] { 33 | const linesAttr = this.getAttribute('data-lines') 34 | 35 | try { 36 | return linesAttr ? (JSON.parse(linesAttr) as string[]) : [] 37 | } catch { 38 | return [] 39 | } 40 | } 41 | 42 | get prefersReducedMotion(): boolean { 43 | return window.matchMedia('(prefers-reduced-motion)').matches 44 | } 45 | 46 | get characterDelay(): number { 47 | if (this.prefersReducedMotion) { 48 | return 0 49 | } 50 | return Math.max(0, Math.min(Math.floor(Number(this.getAttribute('data-character-delay'))), 2_147_483_647)) || 40 51 | } 52 | 53 | set characterDelay(value: number) { 54 | if (value > 2_147_483_647 || value < 0) { 55 | throw new DOMException('Value is negative or greater than the allowed amount') 56 | } 57 | this.setAttribute('data-character-delay', String(value)) 58 | } 59 | 60 | get lineDelay(): number { 61 | if (this.prefersReducedMotion) { 62 | return 0 63 | } 64 | return Math.max(0, Math.min(Math.floor(Number(this.getAttribute('data-line-delay'))), 2_147_483_647)) || 40 65 | } 66 | 67 | set lineDelay(value: number) { 68 | if (value > 2_147_483_647 || value < 0) { 69 | throw new DOMException('Value is negative or greater than the allowed amount') 70 | } 71 | this.setAttribute('data-line-delay', String(value)) 72 | } 73 | } 74 | 75 | declare global { 76 | interface Window { 77 | TypingEffectElement: typeof TypingEffectElement 78 | } 79 | } 80 | 81 | export default TypingEffectElement 82 | 83 | if (!window.customElements.get('typing-effect')) { 84 | window.TypingEffectElement = TypingEffectElement 85 | window.customElements.define('typing-effect', TypingEffectElement) 86 | } 87 | 88 | async function typeLines( 89 | lines: string[], 90 | contentElement: HTMLElement, 91 | characterDelay: number, 92 | lineDelay: number 93 | ): Promise { 94 | for (let lineIndex = 0; lineIndex < lines.length; lineIndex++) { 95 | if (characterDelay === 0) { 96 | contentElement.append(lines[lineIndex]) 97 | } else { 98 | for (const character of lines[lineIndex].split('')) { 99 | await wait(characterDelay) 100 | contentElement.innerHTML += character 101 | } 102 | } 103 | 104 | if (lineDelay !== 0) await wait(lineDelay) 105 | if (lineIndex < lines.length - 1) contentElement.append(document.createElement('br')) 106 | } 107 | } 108 | 109 | async function wait(ms: number): Promise { 110 | return new Promise(resolve => { 111 | setTimeout(resolve, ms) 112 | }) 113 | } 114 | -------------------------------------------------------------------------------- /test/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "mocha": true 4 | }, 5 | "globals": { 6 | "assert": true 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /test/test.js: -------------------------------------------------------------------------------- 1 | describe('typing-effect', function () { 2 | describe('element creation', function () { 3 | it('creates from document.createElement', function () { 4 | const el = document.createElement('typing-effect') 5 | assert.equal('TYPING-EFFECT', el.nodeName) 6 | }) 7 | 8 | it('creates from constructor', function () { 9 | const el = new window.TypingEffectElement() 10 | assert.equal('TYPING-EFFECT', el.nodeName) 11 | }) 12 | }) 13 | 14 | describe('after tree insertion', function () { 15 | beforeEach(function () { 16 | document.body.innerHTML = ` 17 | 18 | ` 19 | }) 20 | 21 | afterEach(function () { 22 | document.body.innerHTML = '' 23 | }) 24 | 25 | it('initiates', function () { 26 | const ce = document.querySelector('typing-effect') 27 | assert.equal(ce.textContent, '') 28 | }) 29 | }) 30 | 31 | describe('content typing', function () { 32 | it('types a single line', async function () { 33 | const line = 'Welcome to GitHub!' 34 | const container = document.createElement('div') 35 | container.innerHTML = ` 36 | 37 | 38 | | 39 | 40 | ` 41 | const typingEffectElement = container.querySelector('typing-effect') 42 | const contentSpan = container.querySelector('span[data-target="typing-effect.content"]') 43 | document.body.append(container) 44 | 45 | await once(typingEffectElement, 'typing:complete') 46 | 47 | assert.equal(contentSpan.innerHTML, line) 48 | }) 49 | 50 | it('types multiple lines', async function () { 51 | const lineOne = 'Welcome!' 52 | const lineTwo = 'Let‘s begin' 53 | const container = document.createElement('div') 54 | container.innerHTML = ` 55 | 56 | 57 | | 58 | 59 | ` 60 | const typingEffectElement = container.querySelector('typing-effect') 61 | const contentSpan = container.querySelector('span[data-target="typing-effect.content"]') 62 | document.body.append(container) 63 | 64 | await once(typingEffectElement, 'typing:complete') 65 | 66 | assert.equal(contentSpan.innerHTML, `${lineOne}
${lineTwo}`) 67 | }) 68 | }) 69 | 70 | describe('delay attributes', function () { 71 | let realMatchMedia 72 | before(() => { 73 | realMatchMedia = window.matchMedia 74 | window.matchMedia = mediaString => { 75 | if (mediaString === '(prefers-reduced-motion)') { 76 | return {matches: false} 77 | } 78 | return realMatchMedia(mediaString) 79 | } 80 | }) 81 | 82 | after(() => { 83 | window.matchMedia = realMatchMedia 84 | }) 85 | 86 | it('uses defaults when no delays specified', function () { 87 | const typingEffectElement = document.createElement('typing-effect') 88 | document.body.append(typingEffectElement) 89 | 90 | assert.equal(typingEffectElement.characterDelay, 40) 91 | assert.equal(typingEffectElement.lineDelay, 40) 92 | }) 93 | 94 | it('uses specified delay attributes instead of using defaults', function () { 95 | const characterDelay = 20 96 | const lineDelay = 20 97 | document.body.innerHTML = ` 98 | 99 | 100 | ` 101 | const typingEffectElement = document.querySelector('typing-effect') 102 | 103 | assert.equal(typingEffectElement.characterDelay, characterDelay) 104 | assert.equal(typingEffectElement.lineDelay, lineDelay) 105 | }) 106 | }) 107 | 108 | describe('a11y considerations', function () { 109 | let realMatchMedia 110 | before(() => { 111 | realMatchMedia = window.matchMedia 112 | window.matchMedia = mediaString => { 113 | if (mediaString === '(prefers-reduced-motion)') { 114 | return {matches: true} 115 | } 116 | return realMatchMedia(mediaString) 117 | } 118 | }) 119 | 120 | after(() => { 121 | window.matchMedia = realMatchMedia 122 | }) 123 | 124 | it('sets delay to 0 when media query matches (prefers-reduced-motion)', function () { 125 | const typingEffectElement = document.createElement('typing-effect') 126 | document.body.append(typingEffectElement) 127 | 128 | assert.equal(window.matchMedia('(prefers-reduced-motion)').matches, true) 129 | assert.equal(typingEffectElement.characterDelay, 0) 130 | assert.equal(typingEffectElement.lineDelay, 0) 131 | }) 132 | }) 133 | }) 134 | 135 | function once(element, eventName) { 136 | return new Promise(resolve => { 137 | element.addEventListener(eventName, resolve, {once: true}) 138 | }) 139 | } 140 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "esnext", 4 | "target": "es2017", 5 | "lib": ["es2018", "dom"], 6 | "strict": true, 7 | "declaration": true, 8 | "outDir": "dist", 9 | "removeComments": true, 10 | "preserveConstEnums": true 11 | } 12 | } 13 | --------------------------------------------------------------------------------