├── .github ├── dependabot.yml └── workflows │ └── test.yml ├── .gitignore ├── .prettierrc ├── LICENSE ├── Makefile ├── README.md ├── package.json ├── pnpm-lock.yaml ├── src ├── __tests__ │ └── index.spec.ts └── index.ts └── tsconfig.json /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: "github-actions" 4 | directory: "/" 5 | schedule: 6 | interval: "daily" 7 | 8 | - package-ecosystem: "npm" 9 | directory: "/" 10 | schedule: 11 | interval: "daily" -------------------------------------------------------------------------------- /.github/workflows/test.yml: -------------------------------------------------------------------------------- 1 | name: test 2 | 3 | on: push 4 | 5 | jobs: 6 | test: 7 | runs-on: ubuntu-latest 8 | 9 | steps: 10 | - uses: actions/checkout@v2 11 | 12 | - uses: actions/setup-node@v2 13 | with: 14 | node-version: "16" 15 | 16 | - run: npm i -g pnpm 17 | - run: make test 18 | 19 | - uses: codecov/codecov-action@v2 20 | with: 21 | file: ./coverage/clover.xml 22 | fail_ci_if_error: true 23 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .idea/ 2 | node_modules/ 3 | coverage/ 4 | lib/ 5 | 6 | *.jsx 7 | *.js 8 | *.js.map 9 | 10 | *.log 11 | 12 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "trailingComma": "all", 3 | "arrowParens": "always", 4 | "jsxBracketSameLine": true 5 | } -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE 2 | Version 2, December 2004 3 | 4 | Copyright (C) 2021 morlay 5 | 6 | Everyone is permitted to copy and distribute verbatim or modified 7 | copies of this license document, and changing it is allowed as long 8 | as the name is changed. 9 | 10 | DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE 11 | TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 12 | 13 | 0. You just DO WHAT THE FUCK YOU WANT TO. -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | fmt: 2 | pnpx prettier --write "src/**/*.{ts,tsx,json,md}" 3 | 4 | build: 5 | tsc 6 | 7 | test: install fmt 8 | pnpx jest --coverage 9 | 10 | install: 11 | pnpm install 12 | 13 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## babel-plugin-pure-calls-annotation 2 | 3 | [![test](https://img.shields.io/github/workflow/status/morlay/babel-plugin-pure-calls-annotation/test?style=flat-square)](https://github.com/morlay/babel-plugin-pure-calls-annotation/actions/workflows/test.yml) 4 | [![codecov](https://img.shields.io/codecov/c/github/morlay/babel-plugin-pure-calls-annotation?style=flat-square)](https://codecov.io/gh/morlay/babel-plugin-pure-calls-annotation) 5 | [![npm](https://img.shields.io/npm/v/babel-plugin-pure-calls-annotation?style=flat-square)](https://npmjs.org/package/babel-plugin-pure-calls-annotation) 6 | [![dep](https://img.shields.io/librariesio/release/npm/babel-plugin-pure-calls-annotation?style=flat-square)](https://libraries.io/github/morlay/babel-plugin-pure-calls-annotation) 7 | 8 | Automated annotate **`/*#__PURE__*/`** to call expression which in **variable declarator**, 9 | **assignment expression**, **arguments of call expression** and other expressions as values 10 | 11 | ### Purpose 12 | 13 | help to annotate **`/*#__PURE__*/`** to drop dead code in [Webpack](https://github.com/webpack/webpack) 14 | for uglyfiy and tree shaking 15 | 16 | Will transform 17 | 18 | ```typescript 19 | export const call = (s) => { 20 | return "call" + s 21 | } 22 | 23 | export const stringA = call("a") 24 | export const stringB = (() => call("b"))() 25 | ``` 26 | 27 | to 28 | 29 | ```typescript 30 | export const call = (s) => { 31 | return "call" + s 32 | } 33 | 34 | export const stringA = /*#__PURE__*/call("a") 35 | export const stringB = /*#__PURE__*/(() => call("b"))() 36 | ``` 37 | 38 | Notice: 39 | 40 | code like below will not be pure call 41 | 42 | ```typescript 43 | const a = setInterval(() => { 44 | console.log(a) 45 | }, 1000) 46 | ``` 47 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "babel-plugin-pure-calls-annotation", 3 | "version": "0.4.2", 4 | "main": "lib/index.js", 5 | "types": "src/index.ts", 6 | "files": [ 7 | "lib", 8 | "src" 9 | ], 10 | "license": "WTFPL", 11 | "author": "Morlay Null ", 12 | "scripts": { 13 | "prepublishOnly": "make build" 14 | }, 15 | "devDependencies": { 16 | "@babel/core": "~7.15.0", 17 | "@babel/plugin-syntax-dynamic-import": "7.x", 18 | "@types/babel__core": "~7.1.15", 19 | "@types/babel__traverse": "~7.14.2", 20 | "@types/jest": "~27.0.1", 21 | "@types/node": "~16.7.10", 22 | "jest": "~27.1.0", 23 | "prettier": "~2.3.2", 24 | "ts-jest": "~27.0.5", 25 | "ts-node": "~10.2.1", 26 | "typescript": "~4.4.2" 27 | }, 28 | "dependencies": { 29 | "@babel/plugin-syntax-dynamic-import": "~7.8.3", 30 | "@babel/traverse": "~7.15.0", 31 | "@babel/types": "~7.15.0" 32 | }, 33 | "jest": { 34 | "testEnvironment": "node", 35 | "transform": { 36 | "^.+\\.tsx?$": "ts-jest" 37 | }, 38 | "moduleFileExtensions": [ 39 | "tsx", 40 | "ts", 41 | "json", 42 | "jsx", 43 | "js" 44 | ], 45 | "modulePaths": [ 46 | "" 47 | ], 48 | "testRegex": ".*/__tests__/.+\\.(test|spec)\\.(ts|tsx)$" 49 | }, 50 | "directories": { 51 | "lib": "lib" 52 | }, 53 | "repository": { 54 | "type": "git", 55 | "url": "git+https://github.com/morlay/babel-plugin-pure-calls-annotation.git" 56 | }, 57 | "bugs": { 58 | "url": "https://github.com/morlay/babel-plugin-pure-calls-annotation/issues" 59 | }, 60 | "homepage": "https://github.com/morlay/babel-plugin-pure-calls-annotation#readme" 61 | } 62 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: 5.3 2 | 3 | specifiers: 4 | '@babel/core': ~7.15.0 5 | '@babel/plugin-syntax-dynamic-import': ~7.8.3 6 | '@babel/traverse': ~7.15.0 7 | '@babel/types': ~7.15.0 8 | '@types/babel__core': ~7.1.15 9 | '@types/babel__traverse': ~7.14.2 10 | '@types/jest': ~27.0.1 11 | '@types/node': ~16.7.10 12 | jest: ~27.1.0 13 | prettier: ~2.3.2 14 | ts-jest: ~27.0.5 15 | ts-node: ~10.2.1 16 | typescript: ~4.4.2 17 | 18 | dependencies: 19 | '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.15.0 20 | '@babel/traverse': 7.15.0 21 | '@babel/types': 7.15.0 22 | 23 | devDependencies: 24 | '@babel/core': 7.15.0 25 | '@types/babel__core': 7.1.15 26 | '@types/babel__traverse': 7.14.2 27 | '@types/jest': 27.0.1 28 | '@types/node': 16.7.10 29 | jest: 27.1.0_ts-node@10.2.1 30 | prettier: 2.3.2 31 | ts-jest: 27.0.5_6d30e69f90053666506486100a0270e0 32 | ts-node: 10.2.1_737b1ec089c67d77c879529dd12190ba 33 | typescript: 4.4.2 34 | 35 | packages: 36 | 37 | /@babel/code-frame/7.14.5: 38 | resolution: {integrity: sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==} 39 | engines: {node: '>=6.9.0'} 40 | dependencies: 41 | '@babel/highlight': 7.14.5 42 | 43 | /@babel/compat-data/7.15.0: 44 | resolution: {integrity: sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==} 45 | engines: {node: '>=6.9.0'} 46 | dev: true 47 | 48 | /@babel/core/7.15.0: 49 | resolution: {integrity: sha512-tXtmTminrze5HEUPn/a0JtOzzfp0nk+UEXQ/tqIJo3WDGypl/2OFQEMll/zSFU8f/lfmfLXvTaORHF3cfXIQMw==} 50 | engines: {node: '>=6.9.0'} 51 | dependencies: 52 | '@babel/code-frame': 7.14.5 53 | '@babel/generator': 7.15.0 54 | '@babel/helper-compilation-targets': 7.15.0_@babel+core@7.15.0 55 | '@babel/helper-module-transforms': 7.15.0 56 | '@babel/helpers': 7.15.3 57 | '@babel/parser': 7.15.3 58 | '@babel/template': 7.14.5 59 | '@babel/traverse': 7.15.0 60 | '@babel/types': 7.15.0 61 | convert-source-map: 1.8.0 62 | debug: 4.3.2 63 | gensync: 1.0.0-beta.2 64 | json5: 2.2.0 65 | semver: 6.3.0 66 | source-map: 0.5.7 67 | transitivePeerDependencies: 68 | - supports-color 69 | dev: true 70 | 71 | /@babel/generator/7.15.0: 72 | resolution: {integrity: sha512-eKl4XdMrbpYvuB505KTta4AV9g+wWzmVBW69tX0H2NwKVKd2YJbKgyK6M8j/rgLbmHOYJn6rUklV677nOyJrEQ==} 73 | engines: {node: '>=6.9.0'} 74 | dependencies: 75 | '@babel/types': 7.15.0 76 | jsesc: 2.5.2 77 | source-map: 0.5.7 78 | 79 | /@babel/helper-compilation-targets/7.15.0_@babel+core@7.15.0: 80 | resolution: {integrity: sha512-h+/9t0ncd4jfZ8wsdAsoIxSa61qhBYlycXiHWqJaQBCXAhDCMbPRSMTGnZIkkmt1u4ag+UQmuqcILwqKzZ4N2A==} 81 | engines: {node: '>=6.9.0'} 82 | peerDependencies: 83 | '@babel/core': ^7.0.0 84 | dependencies: 85 | '@babel/compat-data': 7.15.0 86 | '@babel/core': 7.15.0 87 | '@babel/helper-validator-option': 7.14.5 88 | browserslist: 4.16.8 89 | semver: 6.3.0 90 | dev: true 91 | 92 | /@babel/helper-function-name/7.14.5: 93 | resolution: {integrity: sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==} 94 | engines: {node: '>=6.9.0'} 95 | dependencies: 96 | '@babel/helper-get-function-arity': 7.14.5 97 | '@babel/template': 7.14.5 98 | '@babel/types': 7.15.0 99 | 100 | /@babel/helper-get-function-arity/7.14.5: 101 | resolution: {integrity: sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==} 102 | engines: {node: '>=6.9.0'} 103 | dependencies: 104 | '@babel/types': 7.15.0 105 | 106 | /@babel/helper-hoist-variables/7.14.5: 107 | resolution: {integrity: sha512-R1PXiz31Uc0Vxy4OEOm07x0oSjKAdPPCh3tPivn/Eo8cvz6gveAeuyUUPB21Hoiif0uoPQSSdhIPS3352nvdyQ==} 108 | engines: {node: '>=6.9.0'} 109 | dependencies: 110 | '@babel/types': 7.15.0 111 | 112 | /@babel/helper-member-expression-to-functions/7.15.0: 113 | resolution: {integrity: sha512-Jq8H8U2kYiafuj2xMTPQwkTBnEEdGKpT35lJEQsRRjnG0LW3neucsaMWLgKcwu3OHKNeYugfw+Z20BXBSEs2Lg==} 114 | engines: {node: '>=6.9.0'} 115 | dependencies: 116 | '@babel/types': 7.15.0 117 | dev: true 118 | 119 | /@babel/helper-module-imports/7.14.5: 120 | resolution: {integrity: sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ==} 121 | engines: {node: '>=6.9.0'} 122 | dependencies: 123 | '@babel/types': 7.15.0 124 | dev: true 125 | 126 | /@babel/helper-module-transforms/7.15.0: 127 | resolution: {integrity: sha512-RkGiW5Rer7fpXv9m1B3iHIFDZdItnO2/BLfWVW/9q7+KqQSDY5kUfQEbzdXM1MVhJGcugKV7kRrNVzNxmk7NBg==} 128 | engines: {node: '>=6.9.0'} 129 | dependencies: 130 | '@babel/helper-module-imports': 7.14.5 131 | '@babel/helper-replace-supers': 7.15.0 132 | '@babel/helper-simple-access': 7.14.8 133 | '@babel/helper-split-export-declaration': 7.14.5 134 | '@babel/helper-validator-identifier': 7.14.9 135 | '@babel/template': 7.14.5 136 | '@babel/traverse': 7.15.0 137 | '@babel/types': 7.15.0 138 | transitivePeerDependencies: 139 | - supports-color 140 | dev: true 141 | 142 | /@babel/helper-optimise-call-expression/7.14.5: 143 | resolution: {integrity: sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA==} 144 | engines: {node: '>=6.9.0'} 145 | dependencies: 146 | '@babel/types': 7.15.0 147 | dev: true 148 | 149 | /@babel/helper-plugin-utils/7.14.5: 150 | resolution: {integrity: sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==} 151 | engines: {node: '>=6.9.0'} 152 | 153 | /@babel/helper-replace-supers/7.15.0: 154 | resolution: {integrity: sha512-6O+eWrhx+HEra/uJnifCwhwMd6Bp5+ZfZeJwbqUTuqkhIT6YcRhiZCOOFChRypOIe0cV46kFrRBlm+t5vHCEaA==} 155 | engines: {node: '>=6.9.0'} 156 | dependencies: 157 | '@babel/helper-member-expression-to-functions': 7.15.0 158 | '@babel/helper-optimise-call-expression': 7.14.5 159 | '@babel/traverse': 7.15.0 160 | '@babel/types': 7.15.0 161 | transitivePeerDependencies: 162 | - supports-color 163 | dev: true 164 | 165 | /@babel/helper-simple-access/7.14.8: 166 | resolution: {integrity: sha512-TrFN4RHh9gnWEU+s7JloIho2T76GPwRHhdzOWLqTrMnlas8T9O7ec+oEDNsRXndOmru9ymH9DFrEOxpzPoSbdg==} 167 | engines: {node: '>=6.9.0'} 168 | dependencies: 169 | '@babel/types': 7.15.0 170 | dev: true 171 | 172 | /@babel/helper-split-export-declaration/7.14.5: 173 | resolution: {integrity: sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==} 174 | engines: {node: '>=6.9.0'} 175 | dependencies: 176 | '@babel/types': 7.15.0 177 | 178 | /@babel/helper-validator-identifier/7.14.9: 179 | resolution: {integrity: sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==} 180 | engines: {node: '>=6.9.0'} 181 | 182 | /@babel/helper-validator-option/7.14.5: 183 | resolution: {integrity: sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==} 184 | engines: {node: '>=6.9.0'} 185 | dev: true 186 | 187 | /@babel/helpers/7.15.3: 188 | resolution: {integrity: sha512-HwJiz52XaS96lX+28Tnbu31VeFSQJGOeKHJeaEPQlTl7PnlhFElWPj8tUXtqFIzeN86XxXoBr+WFAyK2PPVz6g==} 189 | engines: {node: '>=6.9.0'} 190 | dependencies: 191 | '@babel/template': 7.14.5 192 | '@babel/traverse': 7.15.0 193 | '@babel/types': 7.15.0 194 | transitivePeerDependencies: 195 | - supports-color 196 | dev: true 197 | 198 | /@babel/highlight/7.14.5: 199 | resolution: {integrity: sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==} 200 | engines: {node: '>=6.9.0'} 201 | dependencies: 202 | '@babel/helper-validator-identifier': 7.14.9 203 | chalk: 2.4.2 204 | js-tokens: 4.0.0 205 | 206 | /@babel/parser/7.15.3: 207 | resolution: {integrity: sha512-O0L6v/HvqbdJawj0iBEfVQMc3/6WP+AeOsovsIgBFyJaG+W2w7eqvZB7puddATmWuARlm1SX7DwxJ/JJUnDpEA==} 208 | engines: {node: '>=6.0.0'} 209 | hasBin: true 210 | 211 | /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.15.0: 212 | resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} 213 | peerDependencies: 214 | '@babel/core': ^7.0.0-0 215 | dependencies: 216 | '@babel/core': 7.15.0 217 | '@babel/helper-plugin-utils': 7.14.5 218 | dev: true 219 | 220 | /@babel/plugin-syntax-bigint/7.8.3_@babel+core@7.15.0: 221 | resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} 222 | peerDependencies: 223 | '@babel/core': ^7.0.0-0 224 | dependencies: 225 | '@babel/core': 7.15.0 226 | '@babel/helper-plugin-utils': 7.14.5 227 | dev: true 228 | 229 | /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.15.0: 230 | resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} 231 | peerDependencies: 232 | '@babel/core': ^7.0.0-0 233 | dependencies: 234 | '@babel/core': 7.15.0 235 | '@babel/helper-plugin-utils': 7.14.5 236 | dev: true 237 | 238 | /@babel/plugin-syntax-dynamic-import/7.8.3_@babel+core@7.15.0: 239 | resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} 240 | peerDependencies: 241 | '@babel/core': ^7.0.0-0 242 | dependencies: 243 | '@babel/core': 7.15.0 244 | '@babel/helper-plugin-utils': 7.14.5 245 | 246 | /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.15.0: 247 | resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} 248 | peerDependencies: 249 | '@babel/core': ^7.0.0-0 250 | dependencies: 251 | '@babel/core': 7.15.0 252 | '@babel/helper-plugin-utils': 7.14.5 253 | dev: true 254 | 255 | /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.15.0: 256 | resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} 257 | peerDependencies: 258 | '@babel/core': ^7.0.0-0 259 | dependencies: 260 | '@babel/core': 7.15.0 261 | '@babel/helper-plugin-utils': 7.14.5 262 | dev: true 263 | 264 | /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.15.0: 265 | resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} 266 | peerDependencies: 267 | '@babel/core': ^7.0.0-0 268 | dependencies: 269 | '@babel/core': 7.15.0 270 | '@babel/helper-plugin-utils': 7.14.5 271 | dev: true 272 | 273 | /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.15.0: 274 | resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} 275 | peerDependencies: 276 | '@babel/core': ^7.0.0-0 277 | dependencies: 278 | '@babel/core': 7.15.0 279 | '@babel/helper-plugin-utils': 7.14.5 280 | dev: true 281 | 282 | /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.15.0: 283 | resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} 284 | peerDependencies: 285 | '@babel/core': ^7.0.0-0 286 | dependencies: 287 | '@babel/core': 7.15.0 288 | '@babel/helper-plugin-utils': 7.14.5 289 | dev: true 290 | 291 | /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.15.0: 292 | resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} 293 | peerDependencies: 294 | '@babel/core': ^7.0.0-0 295 | dependencies: 296 | '@babel/core': 7.15.0 297 | '@babel/helper-plugin-utils': 7.14.5 298 | dev: true 299 | 300 | /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.15.0: 301 | resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} 302 | peerDependencies: 303 | '@babel/core': ^7.0.0-0 304 | dependencies: 305 | '@babel/core': 7.15.0 306 | '@babel/helper-plugin-utils': 7.14.5 307 | dev: true 308 | 309 | /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.15.0: 310 | resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} 311 | peerDependencies: 312 | '@babel/core': ^7.0.0-0 313 | dependencies: 314 | '@babel/core': 7.15.0 315 | '@babel/helper-plugin-utils': 7.14.5 316 | dev: true 317 | 318 | /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.15.0: 319 | resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} 320 | engines: {node: '>=6.9.0'} 321 | peerDependencies: 322 | '@babel/core': ^7.0.0-0 323 | dependencies: 324 | '@babel/core': 7.15.0 325 | '@babel/helper-plugin-utils': 7.14.5 326 | dev: true 327 | 328 | /@babel/plugin-syntax-typescript/7.14.5_@babel+core@7.15.0: 329 | resolution: {integrity: sha512-u6OXzDaIXjEstBRRoBCQ/uKQKlbuaeE5in0RvWdA4pN6AhqxTIwUsnHPU1CFZA/amYObMsuWhYfRl3Ch90HD0Q==} 330 | engines: {node: '>=6.9.0'} 331 | peerDependencies: 332 | '@babel/core': ^7.0.0-0 333 | dependencies: 334 | '@babel/core': 7.15.0 335 | '@babel/helper-plugin-utils': 7.14.5 336 | dev: true 337 | 338 | /@babel/template/7.14.5: 339 | resolution: {integrity: sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==} 340 | engines: {node: '>=6.9.0'} 341 | dependencies: 342 | '@babel/code-frame': 7.14.5 343 | '@babel/parser': 7.15.3 344 | '@babel/types': 7.15.0 345 | 346 | /@babel/traverse/7.15.0: 347 | resolution: {integrity: sha512-392d8BN0C9eVxVWd8H6x9WfipgVH5IaIoLp23334Sc1vbKKWINnvwRpb4us0xtPaCumlwbTtIYNA0Dv/32sVFw==} 348 | engines: {node: '>=6.9.0'} 349 | dependencies: 350 | '@babel/code-frame': 7.14.5 351 | '@babel/generator': 7.15.0 352 | '@babel/helper-function-name': 7.14.5 353 | '@babel/helper-hoist-variables': 7.14.5 354 | '@babel/helper-split-export-declaration': 7.14.5 355 | '@babel/parser': 7.15.3 356 | '@babel/types': 7.15.0 357 | debug: 4.3.2 358 | globals: 11.12.0 359 | transitivePeerDependencies: 360 | - supports-color 361 | 362 | /@babel/types/7.15.0: 363 | resolution: {integrity: sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==} 364 | engines: {node: '>=6.9.0'} 365 | dependencies: 366 | '@babel/helper-validator-identifier': 7.14.9 367 | to-fast-properties: 2.0.0 368 | 369 | /@bcoe/v8-coverage/0.2.3: 370 | resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} 371 | dev: true 372 | 373 | /@cspotcode/source-map-consumer/0.8.0: 374 | resolution: {integrity: sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==} 375 | engines: {node: '>= 12'} 376 | dev: true 377 | 378 | /@cspotcode/source-map-support/0.6.1: 379 | resolution: {integrity: sha512-DX3Z+T5dt1ockmPdobJS/FAsQPW4V4SrWEhD2iYQT2Cb2tQsiMnYxrcUH9By/Z3B+v0S5LMBkQtV/XOBbpLEOg==} 380 | engines: {node: '>=12'} 381 | dependencies: 382 | '@cspotcode/source-map-consumer': 0.8.0 383 | dev: true 384 | 385 | /@istanbuljs/load-nyc-config/1.1.0: 386 | resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} 387 | engines: {node: '>=8'} 388 | dependencies: 389 | camelcase: 5.3.1 390 | find-up: 4.1.0 391 | get-package-type: 0.1.0 392 | js-yaml: 3.14.1 393 | resolve-from: 5.0.0 394 | dev: true 395 | 396 | /@istanbuljs/schema/0.1.3: 397 | resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} 398 | engines: {node: '>=8'} 399 | dev: true 400 | 401 | /@jest/console/27.1.0: 402 | resolution: {integrity: sha512-+Vl+xmLwAXLNlqT61gmHEixeRbS4L8MUzAjtpBCOPWH+izNI/dR16IeXjkXJdRtIVWVSf9DO1gdp67B1XorZhQ==} 403 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 404 | dependencies: 405 | '@jest/types': 27.1.0 406 | '@types/node': 16.7.10 407 | chalk: 4.1.2 408 | jest-message-util: 27.1.0 409 | jest-util: 27.1.0 410 | slash: 3.0.0 411 | dev: true 412 | 413 | /@jest/core/27.1.0_ts-node@10.2.1: 414 | resolution: {integrity: sha512-3l9qmoknrlCFKfGdrmiQiPne+pUR4ALhKwFTYyOeKw6egfDwJkO21RJ1xf41rN8ZNFLg5W+w6+P4fUqq4EMRWA==} 415 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 416 | peerDependencies: 417 | node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 418 | peerDependenciesMeta: 419 | node-notifier: 420 | optional: true 421 | dependencies: 422 | '@jest/console': 27.1.0 423 | '@jest/reporters': 27.1.0 424 | '@jest/test-result': 27.1.0 425 | '@jest/transform': 27.1.0 426 | '@jest/types': 27.1.0 427 | '@types/node': 16.7.10 428 | ansi-escapes: 4.3.2 429 | chalk: 4.1.2 430 | emittery: 0.8.1 431 | exit: 0.1.2 432 | graceful-fs: 4.2.8 433 | jest-changed-files: 27.1.0 434 | jest-config: 27.1.0_ts-node@10.2.1 435 | jest-haste-map: 27.1.0 436 | jest-message-util: 27.1.0 437 | jest-regex-util: 27.0.6 438 | jest-resolve: 27.1.0 439 | jest-resolve-dependencies: 27.1.0 440 | jest-runner: 27.1.0 441 | jest-runtime: 27.1.0 442 | jest-snapshot: 27.1.0 443 | jest-util: 27.1.0 444 | jest-validate: 27.1.0 445 | jest-watcher: 27.1.0 446 | micromatch: 4.0.4 447 | p-each-series: 2.2.0 448 | rimraf: 3.0.2 449 | slash: 3.0.0 450 | strip-ansi: 6.0.0 451 | transitivePeerDependencies: 452 | - bufferutil 453 | - canvas 454 | - supports-color 455 | - ts-node 456 | - utf-8-validate 457 | dev: true 458 | 459 | /@jest/environment/27.1.0: 460 | resolution: {integrity: sha512-wRp50aAMY2w1U2jP1G32d6FUVBNYqmk8WaGkiIEisU48qyDV0WPtw3IBLnl7orBeggveommAkuijY+RzVnNDOQ==} 461 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 462 | dependencies: 463 | '@jest/fake-timers': 27.1.0 464 | '@jest/types': 27.1.0 465 | '@types/node': 16.7.10 466 | jest-mock: 27.1.0 467 | dev: true 468 | 469 | /@jest/fake-timers/27.1.0: 470 | resolution: {integrity: sha512-22Zyn8il8DzpS+30jJNVbTlm7vAtnfy1aYvNeOEHloMlGy1PCYLHa4PWlSws0hvNsMM5bON6GISjkLoQUV3oMA==} 471 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 472 | dependencies: 473 | '@jest/types': 27.1.0 474 | '@sinonjs/fake-timers': 7.1.2 475 | '@types/node': 16.7.10 476 | jest-message-util: 27.1.0 477 | jest-mock: 27.1.0 478 | jest-util: 27.1.0 479 | dev: true 480 | 481 | /@jest/globals/27.1.0: 482 | resolution: {integrity: sha512-73vLV4aNHAlAgjk0/QcSIzzCZSqVIPbmFROJJv9D3QUR7BI4f517gVdJpSrCHxuRH3VZFhe0yGG/tmttlMll9g==} 483 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 484 | dependencies: 485 | '@jest/environment': 27.1.0 486 | '@jest/types': 27.1.0 487 | expect: 27.1.0 488 | dev: true 489 | 490 | /@jest/reporters/27.1.0: 491 | resolution: {integrity: sha512-5T/zlPkN2HnK3Sboeg64L5eC8iiaZueLpttdktWTJsvALEtP2YMkC5BQxwjRWQACG9SwDmz+XjjkoxXUDMDgdw==} 492 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 493 | peerDependencies: 494 | node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 495 | peerDependenciesMeta: 496 | node-notifier: 497 | optional: true 498 | dependencies: 499 | '@bcoe/v8-coverage': 0.2.3 500 | '@jest/console': 27.1.0 501 | '@jest/test-result': 27.1.0 502 | '@jest/transform': 27.1.0 503 | '@jest/types': 27.1.0 504 | chalk: 4.1.2 505 | collect-v8-coverage: 1.0.1 506 | exit: 0.1.2 507 | glob: 7.1.7 508 | graceful-fs: 4.2.8 509 | istanbul-lib-coverage: 3.0.0 510 | istanbul-lib-instrument: 4.0.3 511 | istanbul-lib-report: 3.0.0 512 | istanbul-lib-source-maps: 4.0.0 513 | istanbul-reports: 3.0.2 514 | jest-haste-map: 27.1.0 515 | jest-resolve: 27.1.0 516 | jest-util: 27.1.0 517 | jest-worker: 27.1.0 518 | slash: 3.0.0 519 | source-map: 0.6.1 520 | string-length: 4.0.2 521 | terminal-link: 2.1.1 522 | v8-to-istanbul: 8.0.0 523 | transitivePeerDependencies: 524 | - supports-color 525 | dev: true 526 | 527 | /@jest/source-map/27.0.6: 528 | resolution: {integrity: sha512-Fek4mi5KQrqmlY07T23JRi0e7Z9bXTOOD86V/uS0EIW4PClvPDqZOyFlLpNJheS6QI0FNX1CgmPjtJ4EA/2M+g==} 529 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 530 | dependencies: 531 | callsites: 3.1.0 532 | graceful-fs: 4.2.8 533 | source-map: 0.6.1 534 | dev: true 535 | 536 | /@jest/test-result/27.1.0: 537 | resolution: {integrity: sha512-Aoz00gpDL528ODLghat3QSy6UBTD5EmmpjrhZZMK/v1Q2/rRRqTGnFxHuEkrD4z/Py96ZdOHxIWkkCKRpmnE1A==} 538 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 539 | dependencies: 540 | '@jest/console': 27.1.0 541 | '@jest/types': 27.1.0 542 | '@types/istanbul-lib-coverage': 2.0.3 543 | collect-v8-coverage: 1.0.1 544 | dev: true 545 | 546 | /@jest/test-sequencer/27.1.0: 547 | resolution: {integrity: sha512-lnCWawDr6Z1DAAK9l25o3AjmKGgcutq1iIbp+hC10s/HxnB8ZkUsYq1FzjOoxxZ5hW+1+AthBtvS4x9yno3V1A==} 548 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 549 | dependencies: 550 | '@jest/test-result': 27.1.0 551 | graceful-fs: 4.2.8 552 | jest-haste-map: 27.1.0 553 | jest-runtime: 27.1.0 554 | transitivePeerDependencies: 555 | - supports-color 556 | dev: true 557 | 558 | /@jest/transform/27.1.0: 559 | resolution: {integrity: sha512-ZRGCA2ZEVJ00ubrhkTG87kyLbN6n55g1Ilq0X9nJb5bX3MhMp3O6M7KG+LvYu+nZRqG5cXsQnJEdZbdpTAV8pQ==} 560 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 561 | dependencies: 562 | '@babel/core': 7.15.0 563 | '@jest/types': 27.1.0 564 | babel-plugin-istanbul: 6.0.0 565 | chalk: 4.1.2 566 | convert-source-map: 1.8.0 567 | fast-json-stable-stringify: 2.1.0 568 | graceful-fs: 4.2.8 569 | jest-haste-map: 27.1.0 570 | jest-regex-util: 27.0.6 571 | jest-util: 27.1.0 572 | micromatch: 4.0.4 573 | pirates: 4.0.1 574 | slash: 3.0.0 575 | source-map: 0.6.1 576 | write-file-atomic: 3.0.3 577 | transitivePeerDependencies: 578 | - supports-color 579 | dev: true 580 | 581 | /@jest/types/27.1.0: 582 | resolution: {integrity: sha512-pRP5cLIzN7I7Vp6mHKRSaZD7YpBTK7hawx5si8trMKqk4+WOdK8NEKOTO2G8PKWD1HbKMVckVB6/XHh/olhf2g==} 583 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 584 | dependencies: 585 | '@types/istanbul-lib-coverage': 2.0.3 586 | '@types/istanbul-reports': 3.0.1 587 | '@types/node': 16.7.10 588 | '@types/yargs': 16.0.4 589 | chalk: 4.1.2 590 | dev: true 591 | 592 | /@sinonjs/commons/1.8.3: 593 | resolution: {integrity: sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==} 594 | dependencies: 595 | type-detect: 4.0.8 596 | dev: true 597 | 598 | /@sinonjs/fake-timers/7.1.2: 599 | resolution: {integrity: sha512-iQADsW4LBMISqZ6Ci1dupJL9pprqwcVFTcOsEmQOEhW+KLCVn/Y4Jrvg2k19fIHCp+iFprriYPTdRcQR8NbUPg==} 600 | dependencies: 601 | '@sinonjs/commons': 1.8.3 602 | dev: true 603 | 604 | /@tootallnate/once/1.1.2: 605 | resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==} 606 | engines: {node: '>= 6'} 607 | dev: true 608 | 609 | /@tsconfig/node10/1.0.8: 610 | resolution: {integrity: sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==} 611 | dev: true 612 | 613 | /@tsconfig/node12/1.0.9: 614 | resolution: {integrity: sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==} 615 | dev: true 616 | 617 | /@tsconfig/node14/1.0.1: 618 | resolution: {integrity: sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==} 619 | dev: true 620 | 621 | /@tsconfig/node16/1.0.2: 622 | resolution: {integrity: sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==} 623 | dev: true 624 | 625 | /@types/babel__core/7.1.15: 626 | resolution: {integrity: sha512-bxlMKPDbY8x5h6HBwVzEOk2C8fb6SLfYQ5Jw3uBYuYF1lfWk/kbLd81la82vrIkBb0l+JdmrZaDikPrNxpS/Ew==} 627 | dependencies: 628 | '@babel/parser': 7.15.3 629 | '@babel/types': 7.15.0 630 | '@types/babel__generator': 7.6.3 631 | '@types/babel__template': 7.4.1 632 | '@types/babel__traverse': 7.14.2 633 | dev: true 634 | 635 | /@types/babel__generator/7.6.3: 636 | resolution: {integrity: sha512-/GWCmzJWqV7diQW54smJZzWbSFf4QYtF71WCKhcx6Ru/tFyQIY2eiiITcCAeuPbNSvT9YCGkVMqqvSk2Z0mXiA==} 637 | dependencies: 638 | '@babel/types': 7.15.0 639 | dev: true 640 | 641 | /@types/babel__template/7.4.1: 642 | resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} 643 | dependencies: 644 | '@babel/parser': 7.15.3 645 | '@babel/types': 7.15.0 646 | dev: true 647 | 648 | /@types/babel__traverse/7.14.2: 649 | resolution: {integrity: sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA==} 650 | dependencies: 651 | '@babel/types': 7.15.0 652 | dev: true 653 | 654 | /@types/graceful-fs/4.1.5: 655 | resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==} 656 | dependencies: 657 | '@types/node': 16.7.10 658 | dev: true 659 | 660 | /@types/istanbul-lib-coverage/2.0.3: 661 | resolution: {integrity: sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==} 662 | dev: true 663 | 664 | /@types/istanbul-lib-report/3.0.0: 665 | resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==} 666 | dependencies: 667 | '@types/istanbul-lib-coverage': 2.0.3 668 | dev: true 669 | 670 | /@types/istanbul-reports/3.0.1: 671 | resolution: {integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==} 672 | dependencies: 673 | '@types/istanbul-lib-report': 3.0.0 674 | dev: true 675 | 676 | /@types/jest/27.0.1: 677 | resolution: {integrity: sha512-HTLpVXHrY69556ozYkcq47TtQJXpcWAWfkoqz+ZGz2JnmZhzlRjprCIyFnetSy8gpDWwTTGBcRVv1J1I1vBrHw==} 678 | dependencies: 679 | jest-diff: 27.1.0 680 | pretty-format: 27.1.0 681 | dev: true 682 | 683 | /@types/node/16.7.10: 684 | resolution: {integrity: sha512-S63Dlv4zIPb8x6MMTgDq5WWRJQe56iBEY0O3SOFA9JrRienkOVDXSXBjjJw6HTNQYSE2JI6GMCR6LVbIMHJVvA==} 685 | dev: true 686 | 687 | /@types/prettier/2.3.2: 688 | resolution: {integrity: sha512-eI5Yrz3Qv4KPUa/nSIAi0h+qX0XyewOliug5F2QAtuRg6Kjg6jfmxe1GIwoIRhZspD1A0RP8ANrPwvEXXtRFog==} 689 | dev: true 690 | 691 | /@types/stack-utils/2.0.1: 692 | resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} 693 | dev: true 694 | 695 | /@types/yargs-parser/20.2.1: 696 | resolution: {integrity: sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==} 697 | dev: true 698 | 699 | /@types/yargs/16.0.4: 700 | resolution: {integrity: sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==} 701 | dependencies: 702 | '@types/yargs-parser': 20.2.1 703 | dev: true 704 | 705 | /abab/2.0.5: 706 | resolution: {integrity: sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==} 707 | dev: true 708 | 709 | /acorn-globals/6.0.0: 710 | resolution: {integrity: sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==} 711 | dependencies: 712 | acorn: 7.4.1 713 | acorn-walk: 7.2.0 714 | dev: true 715 | 716 | /acorn-walk/7.2.0: 717 | resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} 718 | engines: {node: '>=0.4.0'} 719 | dev: true 720 | 721 | /acorn-walk/8.1.1: 722 | resolution: {integrity: sha512-FbJdceMlPHEAWJOILDk1fXD8lnTlEIWFkqtfk+MvmL5q/qlHfN7GEHcsFZWt/Tea9jRNPWUZG4G976nqAAmU9w==} 723 | engines: {node: '>=0.4.0'} 724 | dev: true 725 | 726 | /acorn/7.4.1: 727 | resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} 728 | engines: {node: '>=0.4.0'} 729 | hasBin: true 730 | dev: true 731 | 732 | /acorn/8.4.1: 733 | resolution: {integrity: sha512-asabaBSkEKosYKMITunzX177CXxQ4Q8BSSzMTKD+FefUhipQC70gfW5SiUDhYQ3vk8G+81HqQk7Fv9OXwwn9KA==} 734 | engines: {node: '>=0.4.0'} 735 | hasBin: true 736 | dev: true 737 | 738 | /agent-base/6.0.2: 739 | resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} 740 | engines: {node: '>= 6.0.0'} 741 | dependencies: 742 | debug: 4.3.2 743 | transitivePeerDependencies: 744 | - supports-color 745 | dev: true 746 | 747 | /ansi-escapes/4.3.2: 748 | resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} 749 | engines: {node: '>=8'} 750 | dependencies: 751 | type-fest: 0.21.3 752 | dev: true 753 | 754 | /ansi-regex/5.0.0: 755 | resolution: {integrity: sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==} 756 | engines: {node: '>=8'} 757 | dev: true 758 | 759 | /ansi-styles/3.2.1: 760 | resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} 761 | engines: {node: '>=4'} 762 | dependencies: 763 | color-convert: 1.9.3 764 | 765 | /ansi-styles/4.3.0: 766 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 767 | engines: {node: '>=8'} 768 | dependencies: 769 | color-convert: 2.0.1 770 | dev: true 771 | 772 | /ansi-styles/5.2.0: 773 | resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} 774 | engines: {node: '>=10'} 775 | dev: true 776 | 777 | /anymatch/3.1.2: 778 | resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==} 779 | engines: {node: '>= 8'} 780 | dependencies: 781 | normalize-path: 3.0.0 782 | picomatch: 2.3.0 783 | dev: true 784 | 785 | /arg/4.1.3: 786 | resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} 787 | dev: true 788 | 789 | /argparse/1.0.10: 790 | resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} 791 | dependencies: 792 | sprintf-js: 1.0.3 793 | dev: true 794 | 795 | /asynckit/0.4.0: 796 | resolution: {integrity: sha1-x57Zf380y48robyXkLzDZkdLS3k=} 797 | dev: true 798 | 799 | /babel-jest/27.1.0_@babel+core@7.15.0: 800 | resolution: {integrity: sha512-6NrdqzaYemALGCuR97QkC/FkFIEBWP5pw5TMJoUHZTVXyOgocujp6A0JE2V6gE0HtqAAv6VKU/nI+OCR1Z4gHA==} 801 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 802 | peerDependencies: 803 | '@babel/core': ^7.8.0 804 | dependencies: 805 | '@babel/core': 7.15.0 806 | '@jest/transform': 27.1.0 807 | '@jest/types': 27.1.0 808 | '@types/babel__core': 7.1.15 809 | babel-plugin-istanbul: 6.0.0 810 | babel-preset-jest: 27.0.6_@babel+core@7.15.0 811 | chalk: 4.1.2 812 | graceful-fs: 4.2.8 813 | slash: 3.0.0 814 | transitivePeerDependencies: 815 | - supports-color 816 | dev: true 817 | 818 | /babel-plugin-istanbul/6.0.0: 819 | resolution: {integrity: sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ==} 820 | engines: {node: '>=8'} 821 | dependencies: 822 | '@babel/helper-plugin-utils': 7.14.5 823 | '@istanbuljs/load-nyc-config': 1.1.0 824 | '@istanbuljs/schema': 0.1.3 825 | istanbul-lib-instrument: 4.0.3 826 | test-exclude: 6.0.0 827 | transitivePeerDependencies: 828 | - supports-color 829 | dev: true 830 | 831 | /babel-plugin-jest-hoist/27.0.6: 832 | resolution: {integrity: sha512-CewFeM9Vv2gM7Yr9n5eyyLVPRSiBnk6lKZRjgwYnGKSl9M14TMn2vkN02wTF04OGuSDLEzlWiMzvjXuW9mB6Gw==} 833 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 834 | dependencies: 835 | '@babel/template': 7.14.5 836 | '@babel/types': 7.15.0 837 | '@types/babel__core': 7.1.15 838 | '@types/babel__traverse': 7.14.2 839 | dev: true 840 | 841 | /babel-preset-current-node-syntax/1.0.1_@babel+core@7.15.0: 842 | resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} 843 | peerDependencies: 844 | '@babel/core': ^7.0.0 845 | dependencies: 846 | '@babel/core': 7.15.0 847 | '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.15.0 848 | '@babel/plugin-syntax-bigint': 7.8.3_@babel+core@7.15.0 849 | '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.15.0 850 | '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.15.0 851 | '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.15.0 852 | '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.15.0 853 | '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.15.0 854 | '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.15.0 855 | '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.15.0 856 | '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.15.0 857 | '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.15.0 858 | '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.15.0 859 | dev: true 860 | 861 | /babel-preset-jest/27.0.6_@babel+core@7.15.0: 862 | resolution: {integrity: sha512-WObA0/Biw2LrVVwZkF/2GqbOdzhKD6Fkdwhoy9ASIrOWr/zodcSpQh72JOkEn6NWyjmnPDjNSqaGN4KnpKzhXw==} 863 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 864 | peerDependencies: 865 | '@babel/core': ^7.0.0 866 | dependencies: 867 | '@babel/core': 7.15.0 868 | babel-plugin-jest-hoist: 27.0.6 869 | babel-preset-current-node-syntax: 1.0.1_@babel+core@7.15.0 870 | dev: true 871 | 872 | /balanced-match/1.0.2: 873 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 874 | dev: true 875 | 876 | /brace-expansion/1.1.11: 877 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 878 | dependencies: 879 | balanced-match: 1.0.2 880 | concat-map: 0.0.1 881 | dev: true 882 | 883 | /braces/3.0.2: 884 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 885 | engines: {node: '>=8'} 886 | dependencies: 887 | fill-range: 7.0.1 888 | dev: true 889 | 890 | /browser-process-hrtime/1.0.0: 891 | resolution: {integrity: sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==} 892 | dev: true 893 | 894 | /browserslist/4.16.8: 895 | resolution: {integrity: sha512-sc2m9ohR/49sWEbPj14ZSSZqp+kbi16aLao42Hmn3Z8FpjuMaq2xCA2l4zl9ITfyzvnvyE0hcg62YkIGKxgaNQ==} 896 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 897 | hasBin: true 898 | dependencies: 899 | caniuse-lite: 1.0.30001252 900 | colorette: 1.3.0 901 | electron-to-chromium: 1.3.827 902 | escalade: 3.1.1 903 | node-releases: 1.1.75 904 | dev: true 905 | 906 | /bs-logger/0.2.6: 907 | resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} 908 | engines: {node: '>= 6'} 909 | dependencies: 910 | fast-json-stable-stringify: 2.1.0 911 | dev: true 912 | 913 | /bser/2.1.1: 914 | resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} 915 | dependencies: 916 | node-int64: 0.4.0 917 | dev: true 918 | 919 | /buffer-from/1.1.2: 920 | resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} 921 | dev: true 922 | 923 | /callsites/3.1.0: 924 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 925 | engines: {node: '>=6'} 926 | dev: true 927 | 928 | /camelcase/5.3.1: 929 | resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} 930 | engines: {node: '>=6'} 931 | dev: true 932 | 933 | /camelcase/6.2.0: 934 | resolution: {integrity: sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==} 935 | engines: {node: '>=10'} 936 | dev: true 937 | 938 | /caniuse-lite/1.0.30001252: 939 | resolution: {integrity: sha512-I56jhWDGMtdILQORdusxBOH+Nl/KgQSdDmpJezYddnAkVOmnoU8zwjTV9xAjMIYxr0iPreEAVylCGcmHCjfaOw==} 940 | dev: true 941 | 942 | /chalk/2.4.2: 943 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} 944 | engines: {node: '>=4'} 945 | dependencies: 946 | ansi-styles: 3.2.1 947 | escape-string-regexp: 1.0.5 948 | supports-color: 5.5.0 949 | 950 | /chalk/4.1.2: 951 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 952 | engines: {node: '>=10'} 953 | dependencies: 954 | ansi-styles: 4.3.0 955 | supports-color: 7.2.0 956 | dev: true 957 | 958 | /char-regex/1.0.2: 959 | resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} 960 | engines: {node: '>=10'} 961 | dev: true 962 | 963 | /ci-info/3.2.0: 964 | resolution: {integrity: sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==} 965 | dev: true 966 | 967 | /cjs-module-lexer/1.2.2: 968 | resolution: {integrity: sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==} 969 | dev: true 970 | 971 | /cliui/7.0.4: 972 | resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} 973 | dependencies: 974 | string-width: 4.2.2 975 | strip-ansi: 6.0.0 976 | wrap-ansi: 7.0.0 977 | dev: true 978 | 979 | /co/4.6.0: 980 | resolution: {integrity: sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=} 981 | engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} 982 | dev: true 983 | 984 | /collect-v8-coverage/1.0.1: 985 | resolution: {integrity: sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==} 986 | dev: true 987 | 988 | /color-convert/1.9.3: 989 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} 990 | dependencies: 991 | color-name: 1.1.3 992 | 993 | /color-convert/2.0.1: 994 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 995 | engines: {node: '>=7.0.0'} 996 | dependencies: 997 | color-name: 1.1.4 998 | dev: true 999 | 1000 | /color-name/1.1.3: 1001 | resolution: {integrity: sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=} 1002 | 1003 | /color-name/1.1.4: 1004 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 1005 | dev: true 1006 | 1007 | /colorette/1.3.0: 1008 | resolution: {integrity: sha512-ecORCqbSFP7Wm8Y6lyqMJjexBQqXSF7SSeaTyGGphogUjBlFP9m9o08wy86HL2uB7fMTxtOUzLMk7ogKcxMg1w==} 1009 | dev: true 1010 | 1011 | /combined-stream/1.0.8: 1012 | resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} 1013 | engines: {node: '>= 0.8'} 1014 | dependencies: 1015 | delayed-stream: 1.0.0 1016 | dev: true 1017 | 1018 | /concat-map/0.0.1: 1019 | resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} 1020 | dev: true 1021 | 1022 | /convert-source-map/1.8.0: 1023 | resolution: {integrity: sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==} 1024 | dependencies: 1025 | safe-buffer: 5.1.2 1026 | dev: true 1027 | 1028 | /create-require/1.1.1: 1029 | resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} 1030 | dev: true 1031 | 1032 | /cross-spawn/7.0.3: 1033 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 1034 | engines: {node: '>= 8'} 1035 | dependencies: 1036 | path-key: 3.1.1 1037 | shebang-command: 2.0.0 1038 | which: 2.0.2 1039 | dev: true 1040 | 1041 | /cssom/0.3.8: 1042 | resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} 1043 | dev: true 1044 | 1045 | /cssom/0.4.4: 1046 | resolution: {integrity: sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==} 1047 | dev: true 1048 | 1049 | /cssstyle/2.3.0: 1050 | resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} 1051 | engines: {node: '>=8'} 1052 | dependencies: 1053 | cssom: 0.3.8 1054 | dev: true 1055 | 1056 | /data-urls/2.0.0: 1057 | resolution: {integrity: sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==} 1058 | engines: {node: '>=10'} 1059 | dependencies: 1060 | abab: 2.0.5 1061 | whatwg-mimetype: 2.3.0 1062 | whatwg-url: 8.7.0 1063 | dev: true 1064 | 1065 | /debug/4.3.2: 1066 | resolution: {integrity: sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==} 1067 | engines: {node: '>=6.0'} 1068 | peerDependencies: 1069 | supports-color: '*' 1070 | peerDependenciesMeta: 1071 | supports-color: 1072 | optional: true 1073 | dependencies: 1074 | ms: 2.1.2 1075 | 1076 | /decimal.js/10.3.1: 1077 | resolution: {integrity: sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==} 1078 | dev: true 1079 | 1080 | /dedent/0.7.0: 1081 | resolution: {integrity: sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=} 1082 | dev: true 1083 | 1084 | /deep-is/0.1.3: 1085 | resolution: {integrity: sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=} 1086 | dev: true 1087 | 1088 | /deepmerge/4.2.2: 1089 | resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==} 1090 | engines: {node: '>=0.10.0'} 1091 | dev: true 1092 | 1093 | /delayed-stream/1.0.0: 1094 | resolution: {integrity: sha1-3zrhmayt+31ECqrgsp4icrJOxhk=} 1095 | engines: {node: '>=0.4.0'} 1096 | dev: true 1097 | 1098 | /detect-newline/3.1.0: 1099 | resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} 1100 | engines: {node: '>=8'} 1101 | dev: true 1102 | 1103 | /diff-sequences/27.0.6: 1104 | resolution: {integrity: sha512-ag6wfpBFyNXZ0p8pcuIDS//D8H062ZQJ3fzYxjpmeKjnz8W4pekL3AI8VohmyZmsWW2PWaHgjsmqR6L13101VQ==} 1105 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 1106 | dev: true 1107 | 1108 | /diff/4.0.2: 1109 | resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} 1110 | engines: {node: '>=0.3.1'} 1111 | dev: true 1112 | 1113 | /domexception/2.0.1: 1114 | resolution: {integrity: sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==} 1115 | engines: {node: '>=8'} 1116 | dependencies: 1117 | webidl-conversions: 5.0.0 1118 | dev: true 1119 | 1120 | /electron-to-chromium/1.3.827: 1121 | resolution: {integrity: sha512-ye+4uQOY/jbjRutMcE/EmOcNwUeo1qo9aKL2tPyb09cU3lmxNeyDF4RWiemmkknW+p29h7dyDqy02higTxc9/A==} 1122 | dev: true 1123 | 1124 | /emittery/0.8.1: 1125 | resolution: {integrity: sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==} 1126 | engines: {node: '>=10'} 1127 | dev: true 1128 | 1129 | /emoji-regex/8.0.0: 1130 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 1131 | dev: true 1132 | 1133 | /escalade/3.1.1: 1134 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} 1135 | engines: {node: '>=6'} 1136 | dev: true 1137 | 1138 | /escape-string-regexp/1.0.5: 1139 | resolution: {integrity: sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=} 1140 | engines: {node: '>=0.8.0'} 1141 | 1142 | /escape-string-regexp/2.0.0: 1143 | resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} 1144 | engines: {node: '>=8'} 1145 | dev: true 1146 | 1147 | /escodegen/2.0.0: 1148 | resolution: {integrity: sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==} 1149 | engines: {node: '>=6.0'} 1150 | hasBin: true 1151 | dependencies: 1152 | esprima: 4.0.1 1153 | estraverse: 5.2.0 1154 | esutils: 2.0.3 1155 | optionator: 0.8.3 1156 | optionalDependencies: 1157 | source-map: 0.6.1 1158 | dev: true 1159 | 1160 | /esprima/4.0.1: 1161 | resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} 1162 | engines: {node: '>=4'} 1163 | hasBin: true 1164 | dev: true 1165 | 1166 | /estraverse/5.2.0: 1167 | resolution: {integrity: sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==} 1168 | engines: {node: '>=4.0'} 1169 | dev: true 1170 | 1171 | /esutils/2.0.3: 1172 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 1173 | engines: {node: '>=0.10.0'} 1174 | dev: true 1175 | 1176 | /execa/5.1.1: 1177 | resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} 1178 | engines: {node: '>=10'} 1179 | dependencies: 1180 | cross-spawn: 7.0.3 1181 | get-stream: 6.0.1 1182 | human-signals: 2.1.0 1183 | is-stream: 2.0.1 1184 | merge-stream: 2.0.0 1185 | npm-run-path: 4.0.1 1186 | onetime: 5.1.2 1187 | signal-exit: 3.0.3 1188 | strip-final-newline: 2.0.0 1189 | dev: true 1190 | 1191 | /exit/0.1.2: 1192 | resolution: {integrity: sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=} 1193 | engines: {node: '>= 0.8.0'} 1194 | dev: true 1195 | 1196 | /expect/27.1.0: 1197 | resolution: {integrity: sha512-9kJngV5hOJgkFil4F/uXm3hVBubUK2nERVfvqNNwxxuW8ZOUwSTTSysgfzckYtv/LBzj/LJXbiAF7okHCXgdug==} 1198 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 1199 | dependencies: 1200 | '@jest/types': 27.1.0 1201 | ansi-styles: 5.2.0 1202 | jest-get-type: 27.0.6 1203 | jest-matcher-utils: 27.1.0 1204 | jest-message-util: 27.1.0 1205 | jest-regex-util: 27.0.6 1206 | dev: true 1207 | 1208 | /fast-json-stable-stringify/2.1.0: 1209 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 1210 | dev: true 1211 | 1212 | /fast-levenshtein/2.0.6: 1213 | resolution: {integrity: sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=} 1214 | dev: true 1215 | 1216 | /fb-watchman/2.0.1: 1217 | resolution: {integrity: sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==} 1218 | dependencies: 1219 | bser: 2.1.1 1220 | dev: true 1221 | 1222 | /fill-range/7.0.1: 1223 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 1224 | engines: {node: '>=8'} 1225 | dependencies: 1226 | to-regex-range: 5.0.1 1227 | dev: true 1228 | 1229 | /find-up/4.1.0: 1230 | resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} 1231 | engines: {node: '>=8'} 1232 | dependencies: 1233 | locate-path: 5.0.0 1234 | path-exists: 4.0.0 1235 | dev: true 1236 | 1237 | /form-data/3.0.1: 1238 | resolution: {integrity: sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==} 1239 | engines: {node: '>= 6'} 1240 | dependencies: 1241 | asynckit: 0.4.0 1242 | combined-stream: 1.0.8 1243 | mime-types: 2.1.32 1244 | dev: true 1245 | 1246 | /fs.realpath/1.0.0: 1247 | resolution: {integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8=} 1248 | dev: true 1249 | 1250 | /fsevents/2.3.2: 1251 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} 1252 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1253 | os: [darwin] 1254 | dev: true 1255 | optional: true 1256 | 1257 | /function-bind/1.1.1: 1258 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} 1259 | dev: true 1260 | 1261 | /gensync/1.0.0-beta.2: 1262 | resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} 1263 | engines: {node: '>=6.9.0'} 1264 | dev: true 1265 | 1266 | /get-caller-file/2.0.5: 1267 | resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} 1268 | engines: {node: 6.* || 8.* || >= 10.*} 1269 | dev: true 1270 | 1271 | /get-package-type/0.1.0: 1272 | resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} 1273 | engines: {node: '>=8.0.0'} 1274 | dev: true 1275 | 1276 | /get-stream/6.0.1: 1277 | resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} 1278 | engines: {node: '>=10'} 1279 | dev: true 1280 | 1281 | /glob/7.1.7: 1282 | resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} 1283 | dependencies: 1284 | fs.realpath: 1.0.0 1285 | inflight: 1.0.6 1286 | inherits: 2.0.4 1287 | minimatch: 3.0.4 1288 | once: 1.4.0 1289 | path-is-absolute: 1.0.1 1290 | dev: true 1291 | 1292 | /globals/11.12.0: 1293 | resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} 1294 | engines: {node: '>=4'} 1295 | 1296 | /graceful-fs/4.2.8: 1297 | resolution: {integrity: sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==} 1298 | dev: true 1299 | 1300 | /has-flag/3.0.0: 1301 | resolution: {integrity: sha1-tdRU3CGZriJWmfNGfloH87lVuv0=} 1302 | engines: {node: '>=4'} 1303 | 1304 | /has-flag/4.0.0: 1305 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 1306 | engines: {node: '>=8'} 1307 | dev: true 1308 | 1309 | /has/1.0.3: 1310 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} 1311 | engines: {node: '>= 0.4.0'} 1312 | dependencies: 1313 | function-bind: 1.1.1 1314 | dev: true 1315 | 1316 | /html-encoding-sniffer/2.0.1: 1317 | resolution: {integrity: sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==} 1318 | engines: {node: '>=10'} 1319 | dependencies: 1320 | whatwg-encoding: 1.0.5 1321 | dev: true 1322 | 1323 | /html-escaper/2.0.2: 1324 | resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} 1325 | dev: true 1326 | 1327 | /http-proxy-agent/4.0.1: 1328 | resolution: {integrity: sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==} 1329 | engines: {node: '>= 6'} 1330 | dependencies: 1331 | '@tootallnate/once': 1.1.2 1332 | agent-base: 6.0.2 1333 | debug: 4.3.2 1334 | transitivePeerDependencies: 1335 | - supports-color 1336 | dev: true 1337 | 1338 | /https-proxy-agent/5.0.0: 1339 | resolution: {integrity: sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==} 1340 | engines: {node: '>= 6'} 1341 | dependencies: 1342 | agent-base: 6.0.2 1343 | debug: 4.3.2 1344 | transitivePeerDependencies: 1345 | - supports-color 1346 | dev: true 1347 | 1348 | /human-signals/2.1.0: 1349 | resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} 1350 | engines: {node: '>=10.17.0'} 1351 | dev: true 1352 | 1353 | /iconv-lite/0.4.24: 1354 | resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} 1355 | engines: {node: '>=0.10.0'} 1356 | dependencies: 1357 | safer-buffer: 2.1.2 1358 | dev: true 1359 | 1360 | /import-local/3.0.2: 1361 | resolution: {integrity: sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==} 1362 | engines: {node: '>=8'} 1363 | hasBin: true 1364 | dependencies: 1365 | pkg-dir: 4.2.0 1366 | resolve-cwd: 3.0.0 1367 | dev: true 1368 | 1369 | /imurmurhash/0.1.4: 1370 | resolution: {integrity: sha1-khi5srkoojixPcT7a21XbyMUU+o=} 1371 | engines: {node: '>=0.8.19'} 1372 | dev: true 1373 | 1374 | /inflight/1.0.6: 1375 | resolution: {integrity: sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=} 1376 | dependencies: 1377 | once: 1.4.0 1378 | wrappy: 1.0.2 1379 | dev: true 1380 | 1381 | /inherits/2.0.4: 1382 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 1383 | dev: true 1384 | 1385 | /is-ci/3.0.0: 1386 | resolution: {integrity: sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ==} 1387 | hasBin: true 1388 | dependencies: 1389 | ci-info: 3.2.0 1390 | dev: true 1391 | 1392 | /is-core-module/2.6.0: 1393 | resolution: {integrity: sha512-wShG8vs60jKfPWpF2KZRaAtvt3a20OAn7+IJ6hLPECpSABLcKtFKTTI4ZtH5QcBruBHlq+WsdHWyz0BCZW7svQ==} 1394 | dependencies: 1395 | has: 1.0.3 1396 | dev: true 1397 | 1398 | /is-fullwidth-code-point/3.0.0: 1399 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 1400 | engines: {node: '>=8'} 1401 | dev: true 1402 | 1403 | /is-generator-fn/2.1.0: 1404 | resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} 1405 | engines: {node: '>=6'} 1406 | dev: true 1407 | 1408 | /is-number/7.0.0: 1409 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1410 | engines: {node: '>=0.12.0'} 1411 | dev: true 1412 | 1413 | /is-potential-custom-element-name/1.0.1: 1414 | resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} 1415 | dev: true 1416 | 1417 | /is-stream/2.0.1: 1418 | resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} 1419 | engines: {node: '>=8'} 1420 | dev: true 1421 | 1422 | /is-typedarray/1.0.0: 1423 | resolution: {integrity: sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=} 1424 | dev: true 1425 | 1426 | /isexe/2.0.0: 1427 | resolution: {integrity: sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=} 1428 | dev: true 1429 | 1430 | /istanbul-lib-coverage/3.0.0: 1431 | resolution: {integrity: sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==} 1432 | engines: {node: '>=8'} 1433 | dev: true 1434 | 1435 | /istanbul-lib-instrument/4.0.3: 1436 | resolution: {integrity: sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==} 1437 | engines: {node: '>=8'} 1438 | dependencies: 1439 | '@babel/core': 7.15.0 1440 | '@istanbuljs/schema': 0.1.3 1441 | istanbul-lib-coverage: 3.0.0 1442 | semver: 6.3.0 1443 | transitivePeerDependencies: 1444 | - supports-color 1445 | dev: true 1446 | 1447 | /istanbul-lib-report/3.0.0: 1448 | resolution: {integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==} 1449 | engines: {node: '>=8'} 1450 | dependencies: 1451 | istanbul-lib-coverage: 3.0.0 1452 | make-dir: 3.1.0 1453 | supports-color: 7.2.0 1454 | dev: true 1455 | 1456 | /istanbul-lib-source-maps/4.0.0: 1457 | resolution: {integrity: sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==} 1458 | engines: {node: '>=8'} 1459 | dependencies: 1460 | debug: 4.3.2 1461 | istanbul-lib-coverage: 3.0.0 1462 | source-map: 0.6.1 1463 | transitivePeerDependencies: 1464 | - supports-color 1465 | dev: true 1466 | 1467 | /istanbul-reports/3.0.2: 1468 | resolution: {integrity: sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==} 1469 | engines: {node: '>=8'} 1470 | dependencies: 1471 | html-escaper: 2.0.2 1472 | istanbul-lib-report: 3.0.0 1473 | dev: true 1474 | 1475 | /jest-changed-files/27.1.0: 1476 | resolution: {integrity: sha512-eRcb13TfQw0xiV2E98EmiEgs9a5uaBIqJChyl0G7jR9fCIvGjXovnDS6Zbku3joij4tXYcSK4SE1AXqOlUxjWg==} 1477 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 1478 | dependencies: 1479 | '@jest/types': 27.1.0 1480 | execa: 5.1.1 1481 | throat: 6.0.1 1482 | dev: true 1483 | 1484 | /jest-circus/27.1.0: 1485 | resolution: {integrity: sha512-6FWtHs3nZyZlMBhRf1wvAC5CirnflbGJAY1xssSAnERLiiXQRH+wY2ptBVtXjX4gz4AA2EwRV57b038LmifRbA==} 1486 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 1487 | dependencies: 1488 | '@jest/environment': 27.1.0 1489 | '@jest/test-result': 27.1.0 1490 | '@jest/types': 27.1.0 1491 | '@types/node': 16.7.10 1492 | chalk: 4.1.2 1493 | co: 4.6.0 1494 | dedent: 0.7.0 1495 | expect: 27.1.0 1496 | is-generator-fn: 2.1.0 1497 | jest-each: 27.1.0 1498 | jest-matcher-utils: 27.1.0 1499 | jest-message-util: 27.1.0 1500 | jest-runtime: 27.1.0 1501 | jest-snapshot: 27.1.0 1502 | jest-util: 27.1.0 1503 | pretty-format: 27.1.0 1504 | slash: 3.0.0 1505 | stack-utils: 2.0.3 1506 | throat: 6.0.1 1507 | transitivePeerDependencies: 1508 | - supports-color 1509 | dev: true 1510 | 1511 | /jest-cli/27.1.0_ts-node@10.2.1: 1512 | resolution: {integrity: sha512-h6zPUOUu+6oLDrXz0yOWY2YXvBLk8gQinx4HbZ7SF4V3HzasQf+ncoIbKENUMwXyf54/6dBkYXvXJos+gOHYZw==} 1513 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 1514 | hasBin: true 1515 | peerDependencies: 1516 | node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 1517 | peerDependenciesMeta: 1518 | node-notifier: 1519 | optional: true 1520 | dependencies: 1521 | '@jest/core': 27.1.0_ts-node@10.2.1 1522 | '@jest/test-result': 27.1.0 1523 | '@jest/types': 27.1.0 1524 | chalk: 4.1.2 1525 | exit: 0.1.2 1526 | graceful-fs: 4.2.8 1527 | import-local: 3.0.2 1528 | jest-config: 27.1.0_ts-node@10.2.1 1529 | jest-util: 27.1.0 1530 | jest-validate: 27.1.0 1531 | prompts: 2.4.1 1532 | yargs: 16.2.0 1533 | transitivePeerDependencies: 1534 | - bufferutil 1535 | - canvas 1536 | - supports-color 1537 | - ts-node 1538 | - utf-8-validate 1539 | dev: true 1540 | 1541 | /jest-config/27.1.0_ts-node@10.2.1: 1542 | resolution: {integrity: sha512-GMo7f76vMYUA3b3xOdlcKeKQhKcBIgurjERO2hojo0eLkKPGcw7fyIoanH+m6KOP2bLad+fGnF8aWOJYxzNPeg==} 1543 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 1544 | peerDependencies: 1545 | ts-node: '>=9.0.0' 1546 | peerDependenciesMeta: 1547 | ts-node: 1548 | optional: true 1549 | dependencies: 1550 | '@babel/core': 7.15.0 1551 | '@jest/test-sequencer': 27.1.0 1552 | '@jest/types': 27.1.0 1553 | babel-jest: 27.1.0_@babel+core@7.15.0 1554 | chalk: 4.1.2 1555 | deepmerge: 4.2.2 1556 | glob: 7.1.7 1557 | graceful-fs: 4.2.8 1558 | is-ci: 3.0.0 1559 | jest-circus: 27.1.0 1560 | jest-environment-jsdom: 27.1.0 1561 | jest-environment-node: 27.1.0 1562 | jest-get-type: 27.0.6 1563 | jest-jasmine2: 27.1.0 1564 | jest-regex-util: 27.0.6 1565 | jest-resolve: 27.1.0 1566 | jest-runner: 27.1.0 1567 | jest-util: 27.1.0 1568 | jest-validate: 27.1.0 1569 | micromatch: 4.0.4 1570 | pretty-format: 27.1.0 1571 | ts-node: 10.2.1_737b1ec089c67d77c879529dd12190ba 1572 | transitivePeerDependencies: 1573 | - bufferutil 1574 | - canvas 1575 | - supports-color 1576 | - utf-8-validate 1577 | dev: true 1578 | 1579 | /jest-diff/27.1.0: 1580 | resolution: {integrity: sha512-rjfopEYl58g/SZTsQFmspBODvMSytL16I+cirnScWTLkQVXYVZfxm78DFfdIIXc05RCYuGjxJqrdyG4PIFzcJg==} 1581 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 1582 | dependencies: 1583 | chalk: 4.1.2 1584 | diff-sequences: 27.0.6 1585 | jest-get-type: 27.0.6 1586 | pretty-format: 27.1.0 1587 | dev: true 1588 | 1589 | /jest-docblock/27.0.6: 1590 | resolution: {integrity: sha512-Fid6dPcjwepTFraz0YxIMCi7dejjJ/KL9FBjPYhBp4Sv1Y9PdhImlKZqYU555BlN4TQKaTc+F2Av1z+anVyGkA==} 1591 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 1592 | dependencies: 1593 | detect-newline: 3.1.0 1594 | dev: true 1595 | 1596 | /jest-each/27.1.0: 1597 | resolution: {integrity: sha512-K/cNvQlmDqQMRHF8CaQ0XPzCfjP5HMJc2bIJglrIqI9fjwpNqITle63IWE+wq4p+3v+iBgh7Wq0IdGpLx5xjDg==} 1598 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 1599 | dependencies: 1600 | '@jest/types': 27.1.0 1601 | chalk: 4.1.2 1602 | jest-get-type: 27.0.6 1603 | jest-util: 27.1.0 1604 | pretty-format: 27.1.0 1605 | dev: true 1606 | 1607 | /jest-environment-jsdom/27.1.0: 1608 | resolution: {integrity: sha512-JbwOcOxh/HOtsj56ljeXQCUJr3ivnaIlM45F5NBezFLVYdT91N5UofB1ux2B1CATsQiudcHdgTaeuqGXJqjJYQ==} 1609 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 1610 | dependencies: 1611 | '@jest/environment': 27.1.0 1612 | '@jest/fake-timers': 27.1.0 1613 | '@jest/types': 27.1.0 1614 | '@types/node': 16.7.10 1615 | jest-mock: 27.1.0 1616 | jest-util: 27.1.0 1617 | jsdom: 16.7.0 1618 | transitivePeerDependencies: 1619 | - bufferutil 1620 | - canvas 1621 | - supports-color 1622 | - utf-8-validate 1623 | dev: true 1624 | 1625 | /jest-environment-node/27.1.0: 1626 | resolution: {integrity: sha512-JIyJ8H3wVyM4YCXp7njbjs0dIT87yhGlrXCXhDKNIg1OjurXr6X38yocnnbXvvNyqVTqSI4M9l+YfPKueqL1lw==} 1627 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 1628 | dependencies: 1629 | '@jest/environment': 27.1.0 1630 | '@jest/fake-timers': 27.1.0 1631 | '@jest/types': 27.1.0 1632 | '@types/node': 16.7.10 1633 | jest-mock: 27.1.0 1634 | jest-util: 27.1.0 1635 | dev: true 1636 | 1637 | /jest-get-type/27.0.6: 1638 | resolution: {integrity: sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg==} 1639 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 1640 | dev: true 1641 | 1642 | /jest-haste-map/27.1.0: 1643 | resolution: {integrity: sha512-7mz6LopSe+eA6cTFMf10OfLLqRoIPvmMyz5/OnSXnHO7hB0aDP1iIeLWCXzAcYU5eIJVpHr12Bk9yyq2fTW9vg==} 1644 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 1645 | dependencies: 1646 | '@jest/types': 27.1.0 1647 | '@types/graceful-fs': 4.1.5 1648 | '@types/node': 16.7.10 1649 | anymatch: 3.1.2 1650 | fb-watchman: 2.0.1 1651 | graceful-fs: 4.2.8 1652 | jest-regex-util: 27.0.6 1653 | jest-serializer: 27.0.6 1654 | jest-util: 27.1.0 1655 | jest-worker: 27.1.0 1656 | micromatch: 4.0.4 1657 | walker: 1.0.7 1658 | optionalDependencies: 1659 | fsevents: 2.3.2 1660 | dev: true 1661 | 1662 | /jest-jasmine2/27.1.0: 1663 | resolution: {integrity: sha512-Z/NIt0wBDg3przOW2FCWtYjMn3Ip68t0SL60agD/e67jlhTyV3PIF8IzT9ecwqFbeuUSO2OT8WeJgHcalDGFzQ==} 1664 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 1665 | dependencies: 1666 | '@babel/traverse': 7.15.0 1667 | '@jest/environment': 27.1.0 1668 | '@jest/source-map': 27.0.6 1669 | '@jest/test-result': 27.1.0 1670 | '@jest/types': 27.1.0 1671 | '@types/node': 16.7.10 1672 | chalk: 4.1.2 1673 | co: 4.6.0 1674 | expect: 27.1.0 1675 | is-generator-fn: 2.1.0 1676 | jest-each: 27.1.0 1677 | jest-matcher-utils: 27.1.0 1678 | jest-message-util: 27.1.0 1679 | jest-runtime: 27.1.0 1680 | jest-snapshot: 27.1.0 1681 | jest-util: 27.1.0 1682 | pretty-format: 27.1.0 1683 | throat: 6.0.1 1684 | transitivePeerDependencies: 1685 | - supports-color 1686 | dev: true 1687 | 1688 | /jest-leak-detector/27.1.0: 1689 | resolution: {integrity: sha512-oHvSkz1E80VyeTKBvZNnw576qU+cVqRXUD3/wKXh1zpaki47Qty2xeHg2HKie9Hqcd2l4XwircgNOWb/NiGqdA==} 1690 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 1691 | dependencies: 1692 | jest-get-type: 27.0.6 1693 | pretty-format: 27.1.0 1694 | dev: true 1695 | 1696 | /jest-matcher-utils/27.1.0: 1697 | resolution: {integrity: sha512-VmAudus2P6Yt/JVBRdTPFhUzlIN8DYJd+et5Rd9QDsO/Z82Z4iwGjo43U8Z+PTiz8CBvKvlb6Fh3oKy39hykkQ==} 1698 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 1699 | dependencies: 1700 | chalk: 4.1.2 1701 | jest-diff: 27.1.0 1702 | jest-get-type: 27.0.6 1703 | pretty-format: 27.1.0 1704 | dev: true 1705 | 1706 | /jest-message-util/27.1.0: 1707 | resolution: {integrity: sha512-Eck8NFnJ5Sg36R9XguD65cf2D5+McC+NF5GIdEninoabcuoOfWrID5qJhufq5FB0DRKoiyxB61hS7MKoMD0trQ==} 1708 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 1709 | dependencies: 1710 | '@babel/code-frame': 7.14.5 1711 | '@jest/types': 27.1.0 1712 | '@types/stack-utils': 2.0.1 1713 | chalk: 4.1.2 1714 | graceful-fs: 4.2.8 1715 | micromatch: 4.0.4 1716 | pretty-format: 27.1.0 1717 | slash: 3.0.0 1718 | stack-utils: 2.0.3 1719 | dev: true 1720 | 1721 | /jest-mock/27.1.0: 1722 | resolution: {integrity: sha512-iT3/Yhu7DwAg/0HvvLCqLvrTKTRMyJlrrfJYWzuLSf9RCAxBoIXN3HoymZxMnYsC3eD8ewGbUa9jUknwBenx2w==} 1723 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 1724 | dependencies: 1725 | '@jest/types': 27.1.0 1726 | '@types/node': 16.7.10 1727 | dev: true 1728 | 1729 | /jest-pnp-resolver/1.2.2_jest-resolve@27.1.0: 1730 | resolution: {integrity: sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==} 1731 | engines: {node: '>=6'} 1732 | peerDependencies: 1733 | jest-resolve: '*' 1734 | peerDependenciesMeta: 1735 | jest-resolve: 1736 | optional: true 1737 | dependencies: 1738 | jest-resolve: 27.1.0 1739 | dev: true 1740 | 1741 | /jest-regex-util/27.0.6: 1742 | resolution: {integrity: sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==} 1743 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 1744 | dev: true 1745 | 1746 | /jest-resolve-dependencies/27.1.0: 1747 | resolution: {integrity: sha512-Kq5XuDAELuBnrERrjFYEzu/A+i2W7l9HnPWqZEeKGEQ7m1R+6ndMbdXCVCx29Se1qwLZLgvoXwinB3SPIaitMQ==} 1748 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 1749 | dependencies: 1750 | '@jest/types': 27.1.0 1751 | jest-regex-util: 27.0.6 1752 | jest-snapshot: 27.1.0 1753 | transitivePeerDependencies: 1754 | - supports-color 1755 | dev: true 1756 | 1757 | /jest-resolve/27.1.0: 1758 | resolution: {integrity: sha512-TXvzrLyPg0vLOwcWX38ZGYeEztSEmW+cQQKqc4HKDUwun31wsBXwotRlUz4/AYU/Fq4GhbMd/ileIWZEtcdmIA==} 1759 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 1760 | dependencies: 1761 | '@jest/types': 27.1.0 1762 | chalk: 4.1.2 1763 | escalade: 3.1.1 1764 | graceful-fs: 4.2.8 1765 | jest-haste-map: 27.1.0 1766 | jest-pnp-resolver: 1.2.2_jest-resolve@27.1.0 1767 | jest-util: 27.1.0 1768 | jest-validate: 27.1.0 1769 | resolve: 1.20.0 1770 | slash: 3.0.0 1771 | dev: true 1772 | 1773 | /jest-runner/27.1.0: 1774 | resolution: {integrity: sha512-ZWPKr9M5w5gDplz1KsJ6iRmQaDT/yyAFLf18fKbb/+BLWsR1sCNC2wMT0H7pP3gDcBz0qZ6aJraSYUNAGSJGaw==} 1775 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 1776 | dependencies: 1777 | '@jest/console': 27.1.0 1778 | '@jest/environment': 27.1.0 1779 | '@jest/test-result': 27.1.0 1780 | '@jest/transform': 27.1.0 1781 | '@jest/types': 27.1.0 1782 | '@types/node': 16.7.10 1783 | chalk: 4.1.2 1784 | emittery: 0.8.1 1785 | exit: 0.1.2 1786 | graceful-fs: 4.2.8 1787 | jest-docblock: 27.0.6 1788 | jest-environment-jsdom: 27.1.0 1789 | jest-environment-node: 27.1.0 1790 | jest-haste-map: 27.1.0 1791 | jest-leak-detector: 27.1.0 1792 | jest-message-util: 27.1.0 1793 | jest-resolve: 27.1.0 1794 | jest-runtime: 27.1.0 1795 | jest-util: 27.1.0 1796 | jest-worker: 27.1.0 1797 | source-map-support: 0.5.19 1798 | throat: 6.0.1 1799 | transitivePeerDependencies: 1800 | - bufferutil 1801 | - canvas 1802 | - supports-color 1803 | - utf-8-validate 1804 | dev: true 1805 | 1806 | /jest-runtime/27.1.0: 1807 | resolution: {integrity: sha512-okiR2cpGjY0RkWmUGGado6ETpFOi9oG3yV0CioYdoktkVxy5Hv0WRLWnJFuArSYS8cHMCNcceUUMGiIfgxCO9A==} 1808 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 1809 | dependencies: 1810 | '@jest/console': 27.1.0 1811 | '@jest/environment': 27.1.0 1812 | '@jest/fake-timers': 27.1.0 1813 | '@jest/globals': 27.1.0 1814 | '@jest/source-map': 27.0.6 1815 | '@jest/test-result': 27.1.0 1816 | '@jest/transform': 27.1.0 1817 | '@jest/types': 27.1.0 1818 | '@types/yargs': 16.0.4 1819 | chalk: 4.1.2 1820 | cjs-module-lexer: 1.2.2 1821 | collect-v8-coverage: 1.0.1 1822 | execa: 5.1.1 1823 | exit: 0.1.2 1824 | glob: 7.1.7 1825 | graceful-fs: 4.2.8 1826 | jest-haste-map: 27.1.0 1827 | jest-message-util: 27.1.0 1828 | jest-mock: 27.1.0 1829 | jest-regex-util: 27.0.6 1830 | jest-resolve: 27.1.0 1831 | jest-snapshot: 27.1.0 1832 | jest-util: 27.1.0 1833 | jest-validate: 27.1.0 1834 | slash: 3.0.0 1835 | strip-bom: 4.0.0 1836 | yargs: 16.2.0 1837 | transitivePeerDependencies: 1838 | - supports-color 1839 | dev: true 1840 | 1841 | /jest-serializer/27.0.6: 1842 | resolution: {integrity: sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA==} 1843 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 1844 | dependencies: 1845 | '@types/node': 16.7.10 1846 | graceful-fs: 4.2.8 1847 | dev: true 1848 | 1849 | /jest-snapshot/27.1.0: 1850 | resolution: {integrity: sha512-eaeUBoEjuuRwmiRI51oTldUsKOohB1F6fPqWKKILuDi/CStxzp2IWekVUXbuHHoz5ik33ioJhshiHpgPFbYgcA==} 1851 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 1852 | dependencies: 1853 | '@babel/core': 7.15.0 1854 | '@babel/generator': 7.15.0 1855 | '@babel/parser': 7.15.3 1856 | '@babel/plugin-syntax-typescript': 7.14.5_@babel+core@7.15.0 1857 | '@babel/traverse': 7.15.0 1858 | '@babel/types': 7.15.0 1859 | '@jest/transform': 27.1.0 1860 | '@jest/types': 27.1.0 1861 | '@types/babel__traverse': 7.14.2 1862 | '@types/prettier': 2.3.2 1863 | babel-preset-current-node-syntax: 1.0.1_@babel+core@7.15.0 1864 | chalk: 4.1.2 1865 | expect: 27.1.0 1866 | graceful-fs: 4.2.8 1867 | jest-diff: 27.1.0 1868 | jest-get-type: 27.0.6 1869 | jest-haste-map: 27.1.0 1870 | jest-matcher-utils: 27.1.0 1871 | jest-message-util: 27.1.0 1872 | jest-resolve: 27.1.0 1873 | jest-util: 27.1.0 1874 | natural-compare: 1.4.0 1875 | pretty-format: 27.1.0 1876 | semver: 7.3.5 1877 | transitivePeerDependencies: 1878 | - supports-color 1879 | dev: true 1880 | 1881 | /jest-util/27.1.0: 1882 | resolution: {integrity: sha512-edSLD2OneYDKC6gZM1yc+wY/877s/fuJNoM1k3sOEpzFyeptSmke3SLnk1dDHk9CgTA+58mnfx3ew3J11Kes/w==} 1883 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 1884 | dependencies: 1885 | '@jest/types': 27.1.0 1886 | '@types/node': 16.7.10 1887 | chalk: 4.1.2 1888 | graceful-fs: 4.2.8 1889 | is-ci: 3.0.0 1890 | picomatch: 2.3.0 1891 | dev: true 1892 | 1893 | /jest-validate/27.1.0: 1894 | resolution: {integrity: sha512-QiJ+4XuSuMsfPi9zvdO//IrSRSlG6ybJhOpuqYSsuuaABaNT84h0IoD6vvQhThBOKT+DIKvl5sTM0l6is9+SRA==} 1895 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 1896 | dependencies: 1897 | '@jest/types': 27.1.0 1898 | camelcase: 6.2.0 1899 | chalk: 4.1.2 1900 | jest-get-type: 27.0.6 1901 | leven: 3.1.0 1902 | pretty-format: 27.1.0 1903 | dev: true 1904 | 1905 | /jest-watcher/27.1.0: 1906 | resolution: {integrity: sha512-ivaWTrA46aHWdgPDgPypSHiNQjyKnLBpUIHeBaGg11U+pDzZpkffGlcB1l1a014phmG0mHgkOHtOgiqJQM6yKQ==} 1907 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 1908 | dependencies: 1909 | '@jest/test-result': 27.1.0 1910 | '@jest/types': 27.1.0 1911 | '@types/node': 16.7.10 1912 | ansi-escapes: 4.3.2 1913 | chalk: 4.1.2 1914 | jest-util: 27.1.0 1915 | string-length: 4.0.2 1916 | dev: true 1917 | 1918 | /jest-worker/27.1.0: 1919 | resolution: {integrity: sha512-mO4PHb2QWLn9yRXGp7rkvXLAYuxwhq1ZYUo0LoDhg8wqvv4QizP1ZWEJOeolgbEgAWZLIEU0wsku8J+lGWfBhg==} 1920 | engines: {node: '>= 10.13.0'} 1921 | dependencies: 1922 | '@types/node': 16.7.10 1923 | merge-stream: 2.0.0 1924 | supports-color: 8.1.1 1925 | dev: true 1926 | 1927 | /jest/27.1.0_ts-node@10.2.1: 1928 | resolution: {integrity: sha512-pSQDVwRSwb109Ss13lcMtdfS9r8/w2Zz8+mTUA9VORD66GflCdl8nUFCqM96geOD2EBwWCNURrNAfQsLIDNBdg==} 1929 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 1930 | hasBin: true 1931 | peerDependencies: 1932 | node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 1933 | peerDependenciesMeta: 1934 | node-notifier: 1935 | optional: true 1936 | dependencies: 1937 | '@jest/core': 27.1.0_ts-node@10.2.1 1938 | import-local: 3.0.2 1939 | jest-cli: 27.1.0_ts-node@10.2.1 1940 | transitivePeerDependencies: 1941 | - bufferutil 1942 | - canvas 1943 | - supports-color 1944 | - ts-node 1945 | - utf-8-validate 1946 | dev: true 1947 | 1948 | /js-tokens/4.0.0: 1949 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 1950 | 1951 | /js-yaml/3.14.1: 1952 | resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} 1953 | hasBin: true 1954 | dependencies: 1955 | argparse: 1.0.10 1956 | esprima: 4.0.1 1957 | dev: true 1958 | 1959 | /jsdom/16.7.0: 1960 | resolution: {integrity: sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==} 1961 | engines: {node: '>=10'} 1962 | peerDependencies: 1963 | canvas: ^2.5.0 1964 | peerDependenciesMeta: 1965 | canvas: 1966 | optional: true 1967 | dependencies: 1968 | abab: 2.0.5 1969 | acorn: 8.4.1 1970 | acorn-globals: 6.0.0 1971 | cssom: 0.4.4 1972 | cssstyle: 2.3.0 1973 | data-urls: 2.0.0 1974 | decimal.js: 10.3.1 1975 | domexception: 2.0.1 1976 | escodegen: 2.0.0 1977 | form-data: 3.0.1 1978 | html-encoding-sniffer: 2.0.1 1979 | http-proxy-agent: 4.0.1 1980 | https-proxy-agent: 5.0.0 1981 | is-potential-custom-element-name: 1.0.1 1982 | nwsapi: 2.2.0 1983 | parse5: 6.0.1 1984 | saxes: 5.0.1 1985 | symbol-tree: 3.2.4 1986 | tough-cookie: 4.0.0 1987 | w3c-hr-time: 1.0.2 1988 | w3c-xmlserializer: 2.0.0 1989 | webidl-conversions: 6.1.0 1990 | whatwg-encoding: 1.0.5 1991 | whatwg-mimetype: 2.3.0 1992 | whatwg-url: 8.7.0 1993 | ws: 7.5.4 1994 | xml-name-validator: 3.0.0 1995 | transitivePeerDependencies: 1996 | - bufferutil 1997 | - supports-color 1998 | - utf-8-validate 1999 | dev: true 2000 | 2001 | /jsesc/2.5.2: 2002 | resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} 2003 | engines: {node: '>=4'} 2004 | hasBin: true 2005 | 2006 | /json5/2.2.0: 2007 | resolution: {integrity: sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==} 2008 | engines: {node: '>=6'} 2009 | hasBin: true 2010 | dependencies: 2011 | minimist: 1.2.5 2012 | dev: true 2013 | 2014 | /kleur/3.0.3: 2015 | resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} 2016 | engines: {node: '>=6'} 2017 | dev: true 2018 | 2019 | /leven/3.1.0: 2020 | resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} 2021 | engines: {node: '>=6'} 2022 | dev: true 2023 | 2024 | /levn/0.3.0: 2025 | resolution: {integrity: sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=} 2026 | engines: {node: '>= 0.8.0'} 2027 | dependencies: 2028 | prelude-ls: 1.1.2 2029 | type-check: 0.3.2 2030 | dev: true 2031 | 2032 | /locate-path/5.0.0: 2033 | resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} 2034 | engines: {node: '>=8'} 2035 | dependencies: 2036 | p-locate: 4.1.0 2037 | dev: true 2038 | 2039 | /lodash/4.17.21: 2040 | resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} 2041 | dev: true 2042 | 2043 | /lru-cache/6.0.0: 2044 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} 2045 | engines: {node: '>=10'} 2046 | dependencies: 2047 | yallist: 4.0.0 2048 | dev: true 2049 | 2050 | /make-dir/3.1.0: 2051 | resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} 2052 | engines: {node: '>=8'} 2053 | dependencies: 2054 | semver: 6.3.0 2055 | dev: true 2056 | 2057 | /make-error/1.3.6: 2058 | resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} 2059 | dev: true 2060 | 2061 | /makeerror/1.0.11: 2062 | resolution: {integrity: sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=} 2063 | dependencies: 2064 | tmpl: 1.0.4 2065 | dev: true 2066 | 2067 | /merge-stream/2.0.0: 2068 | resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} 2069 | dev: true 2070 | 2071 | /micromatch/4.0.4: 2072 | resolution: {integrity: sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==} 2073 | engines: {node: '>=8.6'} 2074 | dependencies: 2075 | braces: 3.0.2 2076 | picomatch: 2.3.0 2077 | dev: true 2078 | 2079 | /mime-db/1.49.0: 2080 | resolution: {integrity: sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA==} 2081 | engines: {node: '>= 0.6'} 2082 | dev: true 2083 | 2084 | /mime-types/2.1.32: 2085 | resolution: {integrity: sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A==} 2086 | engines: {node: '>= 0.6'} 2087 | dependencies: 2088 | mime-db: 1.49.0 2089 | dev: true 2090 | 2091 | /mimic-fn/2.1.0: 2092 | resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} 2093 | engines: {node: '>=6'} 2094 | dev: true 2095 | 2096 | /minimatch/3.0.4: 2097 | resolution: {integrity: sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==} 2098 | dependencies: 2099 | brace-expansion: 1.1.11 2100 | dev: true 2101 | 2102 | /minimist/1.2.5: 2103 | resolution: {integrity: sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==} 2104 | dev: true 2105 | 2106 | /ms/2.1.2: 2107 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 2108 | 2109 | /natural-compare/1.4.0: 2110 | resolution: {integrity: sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=} 2111 | dev: true 2112 | 2113 | /node-int64/0.4.0: 2114 | resolution: {integrity: sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=} 2115 | dev: true 2116 | 2117 | /node-modules-regexp/1.0.0: 2118 | resolution: {integrity: sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=} 2119 | engines: {node: '>=0.10.0'} 2120 | dev: true 2121 | 2122 | /node-releases/1.1.75: 2123 | resolution: {integrity: sha512-Qe5OUajvqrqDSy6wrWFmMwfJ0jVgwiw4T3KqmbTcZ62qW0gQkheXYhcFM1+lOVcGUoRxcEcfyvFMAnDgaF1VWw==} 2124 | dev: true 2125 | 2126 | /normalize-path/3.0.0: 2127 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 2128 | engines: {node: '>=0.10.0'} 2129 | dev: true 2130 | 2131 | /npm-run-path/4.0.1: 2132 | resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} 2133 | engines: {node: '>=8'} 2134 | dependencies: 2135 | path-key: 3.1.1 2136 | dev: true 2137 | 2138 | /nwsapi/2.2.0: 2139 | resolution: {integrity: sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==} 2140 | dev: true 2141 | 2142 | /once/1.4.0: 2143 | resolution: {integrity: sha1-WDsap3WWHUsROsF9nFC6753Xa9E=} 2144 | dependencies: 2145 | wrappy: 1.0.2 2146 | dev: true 2147 | 2148 | /onetime/5.1.2: 2149 | resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} 2150 | engines: {node: '>=6'} 2151 | dependencies: 2152 | mimic-fn: 2.1.0 2153 | dev: true 2154 | 2155 | /optionator/0.8.3: 2156 | resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} 2157 | engines: {node: '>= 0.8.0'} 2158 | dependencies: 2159 | deep-is: 0.1.3 2160 | fast-levenshtein: 2.0.6 2161 | levn: 0.3.0 2162 | prelude-ls: 1.1.2 2163 | type-check: 0.3.2 2164 | word-wrap: 1.2.3 2165 | dev: true 2166 | 2167 | /p-each-series/2.2.0: 2168 | resolution: {integrity: sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==} 2169 | engines: {node: '>=8'} 2170 | dev: true 2171 | 2172 | /p-limit/2.3.0: 2173 | resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} 2174 | engines: {node: '>=6'} 2175 | dependencies: 2176 | p-try: 2.2.0 2177 | dev: true 2178 | 2179 | /p-locate/4.1.0: 2180 | resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} 2181 | engines: {node: '>=8'} 2182 | dependencies: 2183 | p-limit: 2.3.0 2184 | dev: true 2185 | 2186 | /p-try/2.2.0: 2187 | resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} 2188 | engines: {node: '>=6'} 2189 | dev: true 2190 | 2191 | /parse5/6.0.1: 2192 | resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} 2193 | dev: true 2194 | 2195 | /path-exists/4.0.0: 2196 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 2197 | engines: {node: '>=8'} 2198 | dev: true 2199 | 2200 | /path-is-absolute/1.0.1: 2201 | resolution: {integrity: sha1-F0uSaHNVNP+8es5r9TpanhtcX18=} 2202 | engines: {node: '>=0.10.0'} 2203 | dev: true 2204 | 2205 | /path-key/3.1.1: 2206 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 2207 | engines: {node: '>=8'} 2208 | dev: true 2209 | 2210 | /path-parse/1.0.7: 2211 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 2212 | dev: true 2213 | 2214 | /picomatch/2.3.0: 2215 | resolution: {integrity: sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==} 2216 | engines: {node: '>=8.6'} 2217 | dev: true 2218 | 2219 | /pirates/4.0.1: 2220 | resolution: {integrity: sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==} 2221 | engines: {node: '>= 6'} 2222 | dependencies: 2223 | node-modules-regexp: 1.0.0 2224 | dev: true 2225 | 2226 | /pkg-dir/4.2.0: 2227 | resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} 2228 | engines: {node: '>=8'} 2229 | dependencies: 2230 | find-up: 4.1.0 2231 | dev: true 2232 | 2233 | /prelude-ls/1.1.2: 2234 | resolution: {integrity: sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=} 2235 | engines: {node: '>= 0.8.0'} 2236 | dev: true 2237 | 2238 | /prettier/2.3.2: 2239 | resolution: {integrity: sha512-lnJzDfJ66zkMy58OL5/NY5zp70S7Nz6KqcKkXYzn2tMVrNxvbqaBpg7H3qHaLxCJ5lNMsGuM8+ohS7cZrthdLQ==} 2240 | engines: {node: '>=10.13.0'} 2241 | hasBin: true 2242 | dev: true 2243 | 2244 | /pretty-format/27.1.0: 2245 | resolution: {integrity: sha512-4aGaud3w3rxAO6OXmK3fwBFQ0bctIOG3/if+jYEFGNGIs0EvuidQm3bZ9mlP2/t9epLNC/12czabfy7TZNSwVA==} 2246 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 2247 | dependencies: 2248 | '@jest/types': 27.1.0 2249 | ansi-regex: 5.0.0 2250 | ansi-styles: 5.2.0 2251 | react-is: 17.0.2 2252 | dev: true 2253 | 2254 | /prompts/2.4.1: 2255 | resolution: {integrity: sha512-EQyfIuO2hPDsX1L/blblV+H7I0knhgAd82cVneCwcdND9B8AuCDuRcBH6yIcG4dFzlOUqbazQqwGjx5xmsNLuQ==} 2256 | engines: {node: '>= 6'} 2257 | dependencies: 2258 | kleur: 3.0.3 2259 | sisteransi: 1.0.5 2260 | dev: true 2261 | 2262 | /psl/1.8.0: 2263 | resolution: {integrity: sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==} 2264 | dev: true 2265 | 2266 | /punycode/2.1.1: 2267 | resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} 2268 | engines: {node: '>=6'} 2269 | dev: true 2270 | 2271 | /react-is/17.0.2: 2272 | resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} 2273 | dev: true 2274 | 2275 | /require-directory/2.1.1: 2276 | resolution: {integrity: sha1-jGStX9MNqxyXbiNE/+f3kqam30I=} 2277 | engines: {node: '>=0.10.0'} 2278 | dev: true 2279 | 2280 | /resolve-cwd/3.0.0: 2281 | resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} 2282 | engines: {node: '>=8'} 2283 | dependencies: 2284 | resolve-from: 5.0.0 2285 | dev: true 2286 | 2287 | /resolve-from/5.0.0: 2288 | resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} 2289 | engines: {node: '>=8'} 2290 | dev: true 2291 | 2292 | /resolve/1.20.0: 2293 | resolution: {integrity: sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==} 2294 | dependencies: 2295 | is-core-module: 2.6.0 2296 | path-parse: 1.0.7 2297 | dev: true 2298 | 2299 | /rimraf/3.0.2: 2300 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} 2301 | hasBin: true 2302 | dependencies: 2303 | glob: 7.1.7 2304 | dev: true 2305 | 2306 | /safe-buffer/5.1.2: 2307 | resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} 2308 | dev: true 2309 | 2310 | /safer-buffer/2.1.2: 2311 | resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} 2312 | dev: true 2313 | 2314 | /saxes/5.0.1: 2315 | resolution: {integrity: sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==} 2316 | engines: {node: '>=10'} 2317 | dependencies: 2318 | xmlchars: 2.2.0 2319 | dev: true 2320 | 2321 | /semver/6.3.0: 2322 | resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} 2323 | hasBin: true 2324 | dev: true 2325 | 2326 | /semver/7.3.5: 2327 | resolution: {integrity: sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==} 2328 | engines: {node: '>=10'} 2329 | hasBin: true 2330 | dependencies: 2331 | lru-cache: 6.0.0 2332 | dev: true 2333 | 2334 | /shebang-command/2.0.0: 2335 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 2336 | engines: {node: '>=8'} 2337 | dependencies: 2338 | shebang-regex: 3.0.0 2339 | dev: true 2340 | 2341 | /shebang-regex/3.0.0: 2342 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 2343 | engines: {node: '>=8'} 2344 | dev: true 2345 | 2346 | /signal-exit/3.0.3: 2347 | resolution: {integrity: sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==} 2348 | dev: true 2349 | 2350 | /sisteransi/1.0.5: 2351 | resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} 2352 | dev: true 2353 | 2354 | /slash/3.0.0: 2355 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 2356 | engines: {node: '>=8'} 2357 | dev: true 2358 | 2359 | /source-map-support/0.5.19: 2360 | resolution: {integrity: sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==} 2361 | dependencies: 2362 | buffer-from: 1.1.2 2363 | source-map: 0.6.1 2364 | dev: true 2365 | 2366 | /source-map/0.5.7: 2367 | resolution: {integrity: sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=} 2368 | engines: {node: '>=0.10.0'} 2369 | 2370 | /source-map/0.6.1: 2371 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} 2372 | engines: {node: '>=0.10.0'} 2373 | dev: true 2374 | 2375 | /source-map/0.7.3: 2376 | resolution: {integrity: sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==} 2377 | engines: {node: '>= 8'} 2378 | dev: true 2379 | 2380 | /sprintf-js/1.0.3: 2381 | resolution: {integrity: sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=} 2382 | dev: true 2383 | 2384 | /stack-utils/2.0.3: 2385 | resolution: {integrity: sha512-gL//fkxfWUsIlFL2Tl42Cl6+HFALEaB1FU76I/Fy+oZjRreP7OPMXFlGbxM7NQsI0ZpUfw76sHnv0WNYuTb7Iw==} 2386 | engines: {node: '>=10'} 2387 | dependencies: 2388 | escape-string-regexp: 2.0.0 2389 | dev: true 2390 | 2391 | /string-length/4.0.2: 2392 | resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} 2393 | engines: {node: '>=10'} 2394 | dependencies: 2395 | char-regex: 1.0.2 2396 | strip-ansi: 6.0.0 2397 | dev: true 2398 | 2399 | /string-width/4.2.2: 2400 | resolution: {integrity: sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==} 2401 | engines: {node: '>=8'} 2402 | dependencies: 2403 | emoji-regex: 8.0.0 2404 | is-fullwidth-code-point: 3.0.0 2405 | strip-ansi: 6.0.0 2406 | dev: true 2407 | 2408 | /strip-ansi/6.0.0: 2409 | resolution: {integrity: sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==} 2410 | engines: {node: '>=8'} 2411 | dependencies: 2412 | ansi-regex: 5.0.0 2413 | dev: true 2414 | 2415 | /strip-bom/4.0.0: 2416 | resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} 2417 | engines: {node: '>=8'} 2418 | dev: true 2419 | 2420 | /strip-final-newline/2.0.0: 2421 | resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} 2422 | engines: {node: '>=6'} 2423 | dev: true 2424 | 2425 | /supports-color/5.5.0: 2426 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} 2427 | engines: {node: '>=4'} 2428 | dependencies: 2429 | has-flag: 3.0.0 2430 | 2431 | /supports-color/7.2.0: 2432 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 2433 | engines: {node: '>=8'} 2434 | dependencies: 2435 | has-flag: 4.0.0 2436 | dev: true 2437 | 2438 | /supports-color/8.1.1: 2439 | resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} 2440 | engines: {node: '>=10'} 2441 | dependencies: 2442 | has-flag: 4.0.0 2443 | dev: true 2444 | 2445 | /supports-hyperlinks/2.2.0: 2446 | resolution: {integrity: sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==} 2447 | engines: {node: '>=8'} 2448 | dependencies: 2449 | has-flag: 4.0.0 2450 | supports-color: 7.2.0 2451 | dev: true 2452 | 2453 | /symbol-tree/3.2.4: 2454 | resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} 2455 | dev: true 2456 | 2457 | /terminal-link/2.1.1: 2458 | resolution: {integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==} 2459 | engines: {node: '>=8'} 2460 | dependencies: 2461 | ansi-escapes: 4.3.2 2462 | supports-hyperlinks: 2.2.0 2463 | dev: true 2464 | 2465 | /test-exclude/6.0.0: 2466 | resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} 2467 | engines: {node: '>=8'} 2468 | dependencies: 2469 | '@istanbuljs/schema': 0.1.3 2470 | glob: 7.1.7 2471 | minimatch: 3.0.4 2472 | dev: true 2473 | 2474 | /throat/6.0.1: 2475 | resolution: {integrity: sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==} 2476 | dev: true 2477 | 2478 | /tmpl/1.0.4: 2479 | resolution: {integrity: sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=} 2480 | dev: true 2481 | 2482 | /to-fast-properties/2.0.0: 2483 | resolution: {integrity: sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=} 2484 | engines: {node: '>=4'} 2485 | 2486 | /to-regex-range/5.0.1: 2487 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 2488 | engines: {node: '>=8.0'} 2489 | dependencies: 2490 | is-number: 7.0.0 2491 | dev: true 2492 | 2493 | /tough-cookie/4.0.0: 2494 | resolution: {integrity: sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==} 2495 | engines: {node: '>=6'} 2496 | dependencies: 2497 | psl: 1.8.0 2498 | punycode: 2.1.1 2499 | universalify: 0.1.2 2500 | dev: true 2501 | 2502 | /tr46/2.1.0: 2503 | resolution: {integrity: sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==} 2504 | engines: {node: '>=8'} 2505 | dependencies: 2506 | punycode: 2.1.1 2507 | dev: true 2508 | 2509 | /ts-jest/27.0.5_6d30e69f90053666506486100a0270e0: 2510 | resolution: {integrity: sha512-lIJApzfTaSSbtlksfFNHkWOzLJuuSm4faFAfo5kvzOiRAuoN4/eKxVJ2zEAho8aecE04qX6K1pAzfH5QHL1/8w==} 2511 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 2512 | hasBin: true 2513 | peerDependencies: 2514 | '@babel/core': '>=7.0.0-beta.0 <8' 2515 | '@types/jest': ^27.0.0 2516 | babel-jest: '>=27.0.0 <28' 2517 | jest: ^27.0.0 2518 | typescript: '>=3.8 <5.0' 2519 | peerDependenciesMeta: 2520 | '@babel/core': 2521 | optional: true 2522 | '@types/jest': 2523 | optional: true 2524 | babel-jest: 2525 | optional: true 2526 | dependencies: 2527 | '@babel/core': 7.15.0 2528 | '@types/jest': 27.0.1 2529 | bs-logger: 0.2.6 2530 | fast-json-stable-stringify: 2.1.0 2531 | jest: 27.1.0_ts-node@10.2.1 2532 | jest-util: 27.1.0 2533 | json5: 2.2.0 2534 | lodash: 4.17.21 2535 | make-error: 1.3.6 2536 | semver: 7.3.5 2537 | typescript: 4.4.2 2538 | yargs-parser: 20.2.9 2539 | dev: true 2540 | 2541 | /ts-node/10.2.1_737b1ec089c67d77c879529dd12190ba: 2542 | resolution: {integrity: sha512-hCnyOyuGmD5wHleOQX6NIjJtYVIO8bPP8F2acWkB4W06wdlkgyvJtubO/I9NkI88hCFECbsEgoLc0VNkYmcSfw==} 2543 | engines: {node: '>=12.0.0'} 2544 | hasBin: true 2545 | peerDependencies: 2546 | '@swc/core': '>=1.2.50' 2547 | '@swc/wasm': '>=1.2.50' 2548 | '@types/node': '*' 2549 | typescript: '>=2.7' 2550 | peerDependenciesMeta: 2551 | '@swc/core': 2552 | optional: true 2553 | '@swc/wasm': 2554 | optional: true 2555 | dependencies: 2556 | '@cspotcode/source-map-support': 0.6.1 2557 | '@tsconfig/node10': 1.0.8 2558 | '@tsconfig/node12': 1.0.9 2559 | '@tsconfig/node14': 1.0.1 2560 | '@tsconfig/node16': 1.0.2 2561 | '@types/node': 16.7.10 2562 | acorn: 8.4.1 2563 | acorn-walk: 8.1.1 2564 | arg: 4.1.3 2565 | create-require: 1.1.1 2566 | diff: 4.0.2 2567 | make-error: 1.3.6 2568 | typescript: 4.4.2 2569 | yn: 3.1.1 2570 | dev: true 2571 | 2572 | /type-check/0.3.2: 2573 | resolution: {integrity: sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=} 2574 | engines: {node: '>= 0.8.0'} 2575 | dependencies: 2576 | prelude-ls: 1.1.2 2577 | dev: true 2578 | 2579 | /type-detect/4.0.8: 2580 | resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} 2581 | engines: {node: '>=4'} 2582 | dev: true 2583 | 2584 | /type-fest/0.21.3: 2585 | resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} 2586 | engines: {node: '>=10'} 2587 | dev: true 2588 | 2589 | /typedarray-to-buffer/3.1.5: 2590 | resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} 2591 | dependencies: 2592 | is-typedarray: 1.0.0 2593 | dev: true 2594 | 2595 | /typescript/4.4.2: 2596 | resolution: {integrity: sha512-gzP+t5W4hdy4c+68bfcv0t400HVJMMd2+H9B7gae1nQlBzCqvrXX+6GL/b3GAgyTH966pzrZ70/fRjwAtZksSQ==} 2597 | engines: {node: '>=4.2.0'} 2598 | hasBin: true 2599 | dev: true 2600 | 2601 | /universalify/0.1.2: 2602 | resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} 2603 | engines: {node: '>= 4.0.0'} 2604 | dev: true 2605 | 2606 | /v8-to-istanbul/8.0.0: 2607 | resolution: {integrity: sha512-LkmXi8UUNxnCC+JlH7/fsfsKr5AU110l+SYGJimWNkWhxbN5EyeOtm1MJ0hhvqMMOhGwBj1Fp70Yv9i+hX0QAg==} 2608 | engines: {node: '>=10.12.0'} 2609 | dependencies: 2610 | '@types/istanbul-lib-coverage': 2.0.3 2611 | convert-source-map: 1.8.0 2612 | source-map: 0.7.3 2613 | dev: true 2614 | 2615 | /w3c-hr-time/1.0.2: 2616 | resolution: {integrity: sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==} 2617 | dependencies: 2618 | browser-process-hrtime: 1.0.0 2619 | dev: true 2620 | 2621 | /w3c-xmlserializer/2.0.0: 2622 | resolution: {integrity: sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==} 2623 | engines: {node: '>=10'} 2624 | dependencies: 2625 | xml-name-validator: 3.0.0 2626 | dev: true 2627 | 2628 | /walker/1.0.7: 2629 | resolution: {integrity: sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=} 2630 | dependencies: 2631 | makeerror: 1.0.11 2632 | dev: true 2633 | 2634 | /webidl-conversions/5.0.0: 2635 | resolution: {integrity: sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==} 2636 | engines: {node: '>=8'} 2637 | dev: true 2638 | 2639 | /webidl-conversions/6.1.0: 2640 | resolution: {integrity: sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==} 2641 | engines: {node: '>=10.4'} 2642 | dev: true 2643 | 2644 | /whatwg-encoding/1.0.5: 2645 | resolution: {integrity: sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==} 2646 | dependencies: 2647 | iconv-lite: 0.4.24 2648 | dev: true 2649 | 2650 | /whatwg-mimetype/2.3.0: 2651 | resolution: {integrity: sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==} 2652 | dev: true 2653 | 2654 | /whatwg-url/8.7.0: 2655 | resolution: {integrity: sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==} 2656 | engines: {node: '>=10'} 2657 | dependencies: 2658 | lodash: 4.17.21 2659 | tr46: 2.1.0 2660 | webidl-conversions: 6.1.0 2661 | dev: true 2662 | 2663 | /which/2.0.2: 2664 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 2665 | engines: {node: '>= 8'} 2666 | hasBin: true 2667 | dependencies: 2668 | isexe: 2.0.0 2669 | dev: true 2670 | 2671 | /word-wrap/1.2.3: 2672 | resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} 2673 | engines: {node: '>=0.10.0'} 2674 | dev: true 2675 | 2676 | /wrap-ansi/7.0.0: 2677 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} 2678 | engines: {node: '>=10'} 2679 | dependencies: 2680 | ansi-styles: 4.3.0 2681 | string-width: 4.2.2 2682 | strip-ansi: 6.0.0 2683 | dev: true 2684 | 2685 | /wrappy/1.0.2: 2686 | resolution: {integrity: sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=} 2687 | dev: true 2688 | 2689 | /write-file-atomic/3.0.3: 2690 | resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} 2691 | dependencies: 2692 | imurmurhash: 0.1.4 2693 | is-typedarray: 1.0.0 2694 | signal-exit: 3.0.3 2695 | typedarray-to-buffer: 3.1.5 2696 | dev: true 2697 | 2698 | /ws/7.5.4: 2699 | resolution: {integrity: sha512-zP9z6GXm6zC27YtspwH99T3qTG7bBFv2VIkeHstMLrLlDJuzA7tQ5ls3OJ1hOGGCzTQPniNJoHXIAOS0Jljohg==} 2700 | engines: {node: '>=8.3.0'} 2701 | peerDependencies: 2702 | bufferutil: ^4.0.1 2703 | utf-8-validate: ^5.0.2 2704 | peerDependenciesMeta: 2705 | bufferutil: 2706 | optional: true 2707 | utf-8-validate: 2708 | optional: true 2709 | dev: true 2710 | 2711 | /xml-name-validator/3.0.0: 2712 | resolution: {integrity: sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==} 2713 | dev: true 2714 | 2715 | /xmlchars/2.2.0: 2716 | resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} 2717 | dev: true 2718 | 2719 | /y18n/5.0.8: 2720 | resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} 2721 | engines: {node: '>=10'} 2722 | dev: true 2723 | 2724 | /yallist/4.0.0: 2725 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} 2726 | dev: true 2727 | 2728 | /yargs-parser/20.2.9: 2729 | resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} 2730 | engines: {node: '>=10'} 2731 | dev: true 2732 | 2733 | /yargs/16.2.0: 2734 | resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} 2735 | engines: {node: '>=10'} 2736 | dependencies: 2737 | cliui: 7.0.4 2738 | escalade: 3.1.1 2739 | get-caller-file: 2.0.5 2740 | require-directory: 2.1.1 2741 | string-width: 4.2.2 2742 | y18n: 5.0.8 2743 | yargs-parser: 20.2.9 2744 | dev: true 2745 | 2746 | /yn/3.1.1: 2747 | resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} 2748 | engines: {node: '>=6'} 2749 | dev: true 2750 | -------------------------------------------------------------------------------- /src/__tests__/index.spec.ts: -------------------------------------------------------------------------------- 1 | import { transform } from "@babel/core"; 2 | import pluginAnnotatePureCallInVariableDeclarator from "../"; 3 | 4 | const cases = [ 5 | { 6 | title: "Annotated #__PURE__", 7 | src: `const A = String("a");`, 8 | dest: `const A = /*#__PURE__*/String("a");`, 9 | }, 10 | { 11 | title: "Annotated #__PURE__ in assignment expression", 12 | src: `A = String("a");`, 13 | dest: `A = /*#__PURE__*/String("a");`, 14 | }, 15 | { 16 | title: "Annotated #__PURE__ multiline", 17 | src: `const A = String("a"); 18 | const B = String("b");`, 19 | dest: `const A = /*#__PURE__*/String("a"); 20 | const B = /*#__PURE__*/String("b");`, 21 | }, 22 | { 23 | title: "Skip #__PURE__ for side effect fn()", 24 | src: `fn();`, 25 | dest: `fn();`, 26 | }, 27 | { 28 | // only: true, 29 | title: "Skip #__PURE__ for side effect fn()()()", 30 | src: `fn()()();`, 31 | dest: `fn()()();`, 32 | }, 33 | { 34 | title: "Skip annotated #__PURE__ when with variable used in param callback", 35 | src: `const a = setInterval(() => { console.log(a) }, 1000)`, 36 | dest: `const a = setInterval(() => { console.log(a) }, 1000)`, 37 | }, 38 | { 39 | title: "Skip annotated #__PURE__ when with variable used in param callback", 40 | src: `const a = s$.pipe().subscribe(() => { a.subscribe() }, 1000)`, 41 | dest: `const a = s$.pipe().subscribe(() => { a.subscribe() }, 1000)`, 42 | }, 43 | { 44 | title: "Annotated #__PURE__ when with variable not used in param callback", 45 | src: `const a = /*#__PURE__*/setInterval(() => { }, 1000)`, 46 | dest: `const a = /*#__PURE__*/setInterval(() => { }, 1000)`, 47 | }, 48 | { 49 | title: "Annotated #__PURE__ when with variable not used in param callback", 50 | src: `const b = 1; const a = /*#__PURE__*/setInterval(() => { console.log(b) }, 1000)`, 51 | dest: `const b = 1; const a = /*#__PURE__*/setInterval(() => { console.log(b) }, 1000)`, 52 | }, 53 | { 54 | title: 55 | "Annotated #__PURE__ when with variable used in param callback in assignment expression", 56 | src: `let a; a = /*#__PURE__*/setInterval(() => { console.log(a) }, 1000)`, 57 | dest: `let a; a = /*#__PURE__*/setInterval(() => { console.log(a) }, 1000)`, 58 | }, 59 | { 60 | title: "Skip annotated #__PURE__ when already have", 61 | src: `const A = /*#__PURE__*/String("a");`, 62 | dest: `const A = /*#__PURE__*/String("a");`, 63 | }, 64 | { 65 | title: "Annotated #__PURE__ with other comments", 66 | src: `const A = /*other comments*/String("a");`, 67 | dest: `const A = /*other comments*/ /*#__PURE__*/String("a");`, 68 | }, 69 | { 70 | title: "Annotated #__PURE__ when export", 71 | src: `export const A = String("a");`, 72 | dest: `export const A = /*#__PURE__*/String("a");`, 73 | }, 74 | { 75 | title: "Annotated #__PURE__ for IIFE", 76 | src: `export const A = (() => "a")();`, 77 | dest: `export const A = /*#__PURE__*/(() => "a")();`, 78 | }, 79 | { 80 | title: "Annotated #__PURE__ for IIFE with function", 81 | src: `export const A = (function () { return "a" })();`, 82 | dest: `export const A = /*#__PURE__*/(function () { return "a" })();`, 83 | }, 84 | { 85 | title: "Annotated #__PURE__ for defined add(0, 1) called in IIFE", 86 | src: `const add = (x, y) => x + y; export const one = (() => add(0, 1))();`, 87 | dest: `const add = (x, y) => x + y; export const one = /*#__PURE__*/(() => add(0, 1))();`, 88 | }, 89 | { 90 | title: "Annotated #__PURE__ for IIFE should not deep walk body", 91 | src: `export const A = (() => call("b"))();`, 92 | dest: `export const A = /*#__PURE__*/(() => call("b"))();`, 93 | }, 94 | { 95 | title: "Annotated #__PURE__ for import()", 96 | src: `export const A = import("")`, 97 | dest: `export const A = /*#__PURE__*/import("");`, 98 | }, 99 | { 100 | title: "Annotated #__PURE__ for fn(fn())", 101 | src: `export const A = fn(fn())`, 102 | dest: `export const A = /*#__PURE__*/fn( /*#__PURE__*/fn());`, 103 | }, 104 | { 105 | title: "Annotated #__PURE__ for undefined fn(0)", 106 | src: `export const one = fn(0);`, 107 | dest: `export const one = /*#__PURE__*/fn(0);`, 108 | }, 109 | { 110 | title: "Annotated #__PURE__ for defined fn(0)", 111 | src: `const fn = (x) => x; export const one = fn(0);`, 112 | dest: `const fn = (x) => x; export const one = /*#__PURE__*/fn(0);`, 113 | }, 114 | { 115 | title: "Annotated #__PURE__ for undefined add(0, 1)", 116 | src: `export const one = add(0, 1);`, 117 | dest: `export const one = /*#__PURE__*/add(0, 1);`, 118 | }, 119 | { 120 | title: "Annotated #__PURE__ for pure call as parameter", 121 | src: `export const one = add(0, add(0, 1));`, 122 | dest: `export const one = /*#__PURE__*/add(0, /*#__PURE__*/add(0, 1));`, 123 | }, 124 | { 125 | title: "Annotated #__PURE__ for pure call as array item", 126 | src: `([add(0,1)]);`, 127 | dest: `([/*#__PURE__*/add(0,1)]);`, 128 | }, 129 | { 130 | title: "Annotated #__PURE__ for pure call as object property", 131 | src: `({ x: add(0,1) })`, 132 | dest: `({ x: /*#__PURE__*/add(0,1) })`, 133 | }, 134 | { 135 | title: "Annotated #__PURE__ for defined add(0, 1)", 136 | src: `const add = (x, y) => x + y; export const one = add(0, 1);`, 137 | dest: `const add = (x, y) => x + y; export const one = /*#__PURE__*/add(0, 1);`, 138 | }, 139 | ]; 140 | 141 | function unPad(str: string) { 142 | return str.replace(/^\n+|\n+$/, "").replace(/\n+/g, "\n"); 143 | } 144 | 145 | describe("test cases", () => { 146 | cases.forEach((caseItem) => { 147 | ((caseItem as any).only ? it.only : it)(caseItem.title, () => { 148 | const src = transform(caseItem.src, { 149 | plugins: [pluginAnnotatePureCallInVariableDeclarator], 150 | })!.code; 151 | 152 | const dest = transform(caseItem.dest, { 153 | plugins: ["@babel/plugin-syntax-dynamic-import"], 154 | })!.code; 155 | expect(unPad(src || "")).toEqual(unPad(dest || "")); 156 | }); 157 | }); 158 | }); 159 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | import { NodePath } from "@babel/traverse"; 2 | import { 3 | ArrowFunctionExpression, 4 | CallExpression, 5 | Comment, 6 | CommentBlock, 7 | FunctionExpression, 8 | Identifier, 9 | VariableDeclarator, 10 | } from "@babel/types"; 11 | 12 | const PURE_ANNOTATION = "#__PURE__"; 13 | 14 | const isPureAnnotated = (comments: ReadonlyArray | null): boolean => { 15 | if (comments && comments.length > 0) { 16 | return comments[comments.length - 1].value === PURE_ANNOTATION; 17 | } 18 | return false; 19 | }; 20 | 21 | const containsNodePath = (nodePaths: NodePath[], nodePath: NodePath) => { 22 | return nodePaths.indexOf(nodePath) > -1; 23 | }; 24 | 25 | const createComponentBlock = (value: string): Comment => 26 | ({ 27 | type: "CommentBlock", 28 | value, 29 | } as CommentBlock); 30 | 31 | const isDeclaredVariableUsedInCallback = ( 32 | nodePath: NodePath, 33 | ) => { 34 | let used = false; 35 | 36 | if (nodePath.parentPath.isVariableDeclarator()) { 37 | const scope = nodePath.parentPath.scope; 38 | const id = (nodePath.parentPath as NodePath).get("id"); 39 | 40 | const traverseReferencedIdentifier = (np: NodePath) => 41 | np.traverse({ 42 | ReferencedIdentifier(n: NodePath) { 43 | if (scope.hasOwnBinding(n.node.name)) { 44 | if (id.isIdentifier()) { 45 | if (id.node.name === n.node.name) { 46 | used = true; 47 | } 48 | } 49 | } 50 | }, 51 | } as any); 52 | 53 | nodePath.traverse({ 54 | ArrowFunctionExpression: ( 55 | nodePath: NodePath, 56 | ) => { 57 | traverseReferencedIdentifier(nodePath); 58 | }, 59 | FunctionExpression: (nodePath: NodePath) => { 60 | traverseReferencedIdentifier(nodePath); 61 | }, 62 | }); 63 | } 64 | 65 | return used; 66 | }; 67 | 68 | const isPureCall = (nodePath: NodePath) => { 69 | // x = pureCall() 70 | // a.x = pureCall() 71 | if (nodePath.parentPath.isAssignmentExpression()) { 72 | return true; 73 | } 74 | 75 | // [pureCall()] 76 | if (nodePath.parentPath.isArrayExpression()) { 77 | return true; 78 | } 79 | 80 | // ({ x: prueCall(0,1) }) 81 | if (nodePath.parentPath.isProperty()) { 82 | return true; 83 | } 84 | 85 | // const x = pureCall() 86 | if (nodePath.parentPath.isVariableDeclarator()) { 87 | return !isDeclaredVariableUsedInCallback(nodePath); 88 | } 89 | 90 | // otherCall(pureCall()) 91 | if (nodePath.parentPath.isCallExpression()) { 92 | return containsNodePath( 93 | nodePath.parentPath.get("arguments") || ([] as NodePath[]), 94 | nodePath, 95 | ); 96 | } 97 | 98 | return false; 99 | }; 100 | 101 | export default () => ({ 102 | name: "pure-calls-annotation", 103 | inherits: require("@babel/plugin-syntax-dynamic-import").default, 104 | visitor: { 105 | CallExpression: { 106 | enter(nodePath: NodePath) { 107 | if (isPureCall(nodePath)) { 108 | if (!isPureAnnotated(nodePath.node.leadingComments)) { 109 | const pureAnnotation = createComponentBlock(PURE_ANNOTATION); 110 | 111 | nodePath.replaceWith({ 112 | ...nodePath.node, 113 | leadingComments: nodePath.node.leadingComments 114 | ? nodePath.node.leadingComments.concat(pureAnnotation) 115 | : [pureAnnotation], 116 | } as any); 117 | } 118 | } 119 | }, 120 | }, 121 | }, 122 | }); 123 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "rootDir": "src", 4 | "outDir": "lib", 5 | "module": "commonjs", 6 | "moduleResolution": "node", 7 | "noUnusedLocals": true, 8 | "noUnusedParameters": true, 9 | "noImplicitReturns": true, 10 | "noFallthroughCasesInSwitch": true, 11 | "esModuleInterop": true, 12 | "strict": true, 13 | "target": "es2015", 14 | "sourceMap": true, 15 | "skipLibCheck": true 16 | }, 17 | "exclude": [ 18 | "node_modules/*", 19 | "lib/*" 20 | ] 21 | } --------------------------------------------------------------------------------