├── .eslintignore ├── .eslintrc.js ├── .github ├── FUNDING.yml └── workflows │ └── test.yml ├── .gitignore ├── .vscode └── settings.json ├── LICENSE ├── README.md ├── package.json ├── pnpm-lock.yaml ├── res ├── hero.png └── reactivity-spreadsheet.gif ├── scripts ├── build.ts └── generate.ts ├── src ├── boolean │ └── index.ts ├── console │ └── index.ts ├── core.ts ├── index.ts ├── json │ └── index.ts ├── math │ ├── generated.ts │ └── index.ts ├── number │ ├── generated.ts │ └── index.ts ├── string │ ├── generated.ts │ └── index.ts └── utils.ts ├── test ├── examples.test.ts ├── math.test.ts ├── string.test.ts └── utils.ts └── tsconfig.json /.eslintignore: -------------------------------------------------------------------------------- 1 | dist 2 | typings 3 | -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: ['@antfu'], 3 | } 4 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: antfu 2 | -------------------------------------------------------------------------------- /.github/workflows/test.yml: -------------------------------------------------------------------------------- 1 | name: Test 2 | 3 | on: [push] 4 | 5 | jobs: 6 | build: 7 | 8 | runs-on: ubuntu-latest 9 | 10 | strategy: 11 | matrix: 12 | node-version: [12.x, 14.x] 13 | 14 | steps: 15 | - uses: actions/checkout@v1 16 | 17 | - name: Install 18 | run: npx pnpm i 19 | 20 | - name: Lint 21 | run: npm run lint 22 | 23 | - name: Test 24 | run: npm test 25 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Created by .ignore support plugin (hsz.mobi) 2 | ### Node template 3 | # Logs 4 | logs 5 | *.log 6 | npm-debug.log* 7 | yarn-debug.log* 8 | yarn-error.log* 9 | 10 | # Runtime data 11 | pids 12 | *.pid 13 | *.seed 14 | *.pid.lock 15 | 16 | # Directory for instrumented libs generated by jscoverage/JSCover 17 | lib-cov 18 | 19 | # Coverage directory used by tools like istanbul 20 | coverage 21 | 22 | # nyc test coverage 23 | .nyc_output 24 | 25 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 26 | .grunt 27 | 28 | # Bower dependency directory (https://bower.io/) 29 | bower_components 30 | 31 | # node-waf configuration 32 | .lock-wscript 33 | 34 | # Compiled binary addons (https://nodejs.org/api/addons.html) 35 | build/Release 36 | 37 | # Dependency directories 38 | node_modules/ 39 | jspm_packages/ 40 | 41 | # TypeScript v1 declaration files 42 | typings/ 43 | 44 | # Optional npm cache directory 45 | .npm 46 | 47 | # Optional eslint cache 48 | .eslintcache 49 | 50 | # Optional REPL history 51 | .node_repl_history 52 | 53 | # Output of 'npm pack' 54 | *.tgz 55 | 56 | # Yarn Integrity file 57 | .yarn-integrity 58 | 59 | # dotenv environment variables file 60 | .env 61 | 62 | # parcel-bundler cache (https://parceljs.org/) 63 | .cache 64 | 65 | # next.js build output 66 | .next 67 | 68 | # nuxt.js build output 69 | .nuxt 70 | 71 | # Nuxt generate 72 | dist 73 | 74 | # vuepress build output 75 | .vuepress/dist 76 | 77 | # Serverless directories 78 | .serverless 79 | 80 | # IDE 81 | .idea 82 | 83 | .DS_Store 84 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "cSpell.words": [ 3 | "reactified" 4 | ], 5 | "grammarly.userWords": [ 6 | "Reactified", 7 | "destructurable", 8 | "github", 9 | "isSupported", 10 | "monorepo", 11 | "prepublish", 12 | "reactified", 13 | "vue" 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Anthony Fu 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

2 | Vue Chemistry 3 |

4 | 5 | > The ~~science~~ that deals with the [properties](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Working_with_Objects#objects_and_properties), [composition](https://v3.vuejs.org/guide/composition-api-introduction.html#why-composition-api), and structure of states, the transformations they undergo during [reactions](https://v3.vuejs.org/guide/reactivity.html#what-is-reactivity). 6 | 7 | Reactified JavaScript functions for Vue, powered by [`reactify`](https://vueuse.js.org/?path=/story/utilities--reactify) from [VueUse](https://github.com/antfu/vueuse). 8 | 9 | ## Reactified? What? 10 | 11 | In JavaScript, for most of the time, you are dealing with **procedural** functions. Which means after the calculation/transformation, the result won't know relationships with its sources, for example 12 | 13 | ```js 14 | function sum(x, y) { 15 | return x + y 16 | } 17 | 18 | let a = 1 19 | const b = 2 20 | 21 | const c = sum(a, b) // c = a + b = 3 22 | 23 | a = 2 24 | 25 | console.log(c) // still 3, not 4 26 | ``` 27 | 28 | On the other hand, in Spreadsheets apps like Microsoft Excel or Google Sheets, formulas are always up-to-update whenever their source changes. 29 | 30 | 31 | 32 | [Vue's reactivity system](https://v3.vuejs.org/guide/reactivity.html#what-is-reactivity) is a way to approach the reactiveness in JavaScript. In the [Composition API](https://v3.vuejs.org/guide/composition-api-introduction.html#why-composition-api), we are kinda mixing the procedural and reactivity together (which is good and flexible). But what it will be like to have a complete reactive developing experience? 33 | 34 | **Introducing Vue Chemistry**, a set of reactified JavaScript functions letting you enjoy the pure reactiveness! 35 | 36 | From the example above, now we can have: 37 | 38 | ```js 39 | import { set } from 'vue-chemistry/core' 40 | import { sum } from 'vue-chemistry/math' 41 | import { log } from 'vue-chemistry/console' 42 | 43 | const a = ref(1) 44 | const b = ref(2) 45 | 46 | const c = sum(a, b) // c = a + b = 3 47 | 48 | set(a, 2) // shorthand for a.value = 2 49 | 50 | log(c) // it's 4 (2 + 2)! 51 | ``` 52 | 53 | ### Cool, but, how is that possible? 54 | 55 | We are basically making functions accepting [`Ref`](https://v3.vuejs.org/api/refs-api.html#refs) as their arguments and then wrapper their result with [`computed`](https://v3.vuejs.org/guide/reactivity-computed-watchers.html#computed-and-watch). This makes them automatically collect dependency sources and re-evaluate when the sources get changed. Note that the `ComputedRef` is also a `Ref` which means the operations are chainable! 56 | 57 | An example for comparsion: 58 | 59 | ```ts 60 | // procedural function 61 | function sum(x: number, y: number) { 62 | return x + y 63 | } 64 | ``` 65 | 66 | ```ts 67 | import type { ComputedRef, Ref } from 'vue' 68 | import { computed, unref } from 'vue' 69 | 70 | // reactified function 71 | function sum( 72 | x: number | Ref, 73 | y: number | Ref 74 | ): ComputedRef { 75 | return computed(() => unref(x) + unref(y)) 76 | } 77 | ``` 78 | 79 | If you want to convert a normal function into a "reactified" one, you can use `reactify()` function. The source code can be found [here](https://github.com/antfu/vueuse/blob/master/packages/shared/reactify/index.ts) (deadly simple!). 80 | 81 | ```ts 82 | import { reactify } from 'vue-chemistry/core' 83 | 84 | function sum(x: number, y: number) { 85 | return x + y 86 | } 87 | 88 | const reactifiedSum = reactify(sum) 89 | ``` 90 | 91 | ## Install 92 | 93 | ```bash 94 | npm i vue-chemistry 95 | ``` 96 | 97 | ## Usage 98 | 99 | Functions available in the following namespaces 100 | 101 | ```js 102 | // see the auto-completion for the full functions list 103 | import { pow, round, sin, sqrt, sum } from 'vue-chemistry/math' 104 | import { toLowerCase, toString } from 'vue-chemistry/string' 105 | import { parseFloat, parseInt } from 'vue-chemistry/number' 106 | import { parse, stringify } from 'vue-chemistry/json' 107 | import { isFalsy } from 'vue-chemistry/boolean' 108 | import { log } from 'vue-chemistry/console' 109 | import { set } from 'vue-chemistry/core' 110 | // or 111 | import * as Math from 'vue-chemistry/math' 112 | Math.sin(a) 113 | ``` 114 | 115 | Or to have everything in one place: 116 | 117 | ```js 118 | import { log, parse, parseInt, sqrt } from 'vue-chemistry' 119 | ``` 120 | 121 | 122 | ## Examples 123 | 124 | ```js 125 | import { set } from 'vue-chemistry/core' 126 | import { log } from 'vue-chemistry/console' 127 | import { pow, sqrt, sum } from 'vue-chemistry/math' 128 | 129 | // Math _________ 130 | // c = √ a² + b² 131 | const a = ref(3) 132 | const b = ref(4) 133 | const c = sqrt(sum(pow(a, 2), pow(b, 2))) 134 | log(c) // 5 135 | 136 | set(a, 5) // shorthand for a.value = 5 137 | set(b, 12) 138 | log(c) // 13 139 | ``` 140 | 141 | ```ts 142 | import { parse, stringify } from 'vue-chemistry/json' 143 | import { log } from 'vue-chemistry/console' 144 | 145 | // JSON 146 | // 147 | const obj = ref({ foo: 'bar' }) 148 | const str = stringify(obj) 149 | const clone = parse(str) 150 | 151 | log(str) // {"foo":"bar"} 152 | 153 | obj.value.no = 42 154 | log(str) // {"foo":"bar","no":42} 155 | ``` 156 | 157 | ```ts 158 | import { set } from 'vue-chemistry/core' 159 | import { log } from 'vue-chemistry/console' 160 | import { rs, toUpperCase } from 'vue-chemistry/string' 161 | 162 | // String 163 | // rs - Reactive String 164 | const name = ref('foo') 165 | const message = rs`Hello ${toUpperCase(name)}!` 166 | log(message) // Hello FOO! 167 | set(name, 'Anthony') 168 | log(message) // Hello ANTHONY! 169 | ``` 170 | 171 | ```ts 172 | import { set } from 'vue-chemistry/core' 173 | import { log } from 'vue-chemistry/console' 174 | import { rs } from 'vue-chemistry/string' 175 | import { dec, multiply } from 'vue-chemistry/match' 176 | 177 | // String 2 178 | // 179 | const x = ref(9) 180 | const y = ref(9) 181 | const z = ref(7) 182 | const equation = rs`${x} x ${y} + ${z} = ${sum(multiply(x, y), z)}` 183 | log(equation) // 9 x 9 + 7 = 88 184 | set(x, 98) 185 | dec(z) 186 | log(equation) // 98 x 9 + 6 = 888 187 | set(x, 987) 188 | dec(z) 189 | log(equation) // 987 x 9 + 5 = 8888 190 | ``` 191 | 192 | ```ts 193 | import { is, log, rs, set, ternary } from 'vue-chemistry' 194 | 195 | // String 3 196 | // 197 | const mode = ref('light') 198 | 199 | const isDark = is(mode, 'dark') 200 | const icon = rs`mdi-${ternary(isDark, 'moon', 'sun')}` 201 | 202 | log(icon) // mdi-sun 203 | 204 | set(mode, 'dark') 205 | 206 | log(icon) // mdi-moon 207 | ``` 208 | 209 | ## Sponsors 210 | 211 | This project is part of my Sponsor Program 212 | 213 |

214 | 215 | 216 | 217 |

218 | 219 | ## License 220 | 221 | MIT 222 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vue-chemistry", 3 | "version": "0.3.0", 4 | "packageManager": "pnpm@7.13.0", 5 | "description": "Reactive JavaScript utilities", 6 | "author": "Anthony Fu ", 7 | "license": "MIT", 8 | "funding": "https://github.com/sponsors/antfu", 9 | "homepage": "https://github.com/vue-chemistry#readme", 10 | "repository": { 11 | "type": "git", 12 | "url": "git+https://github.com/vue-chemistry.git" 13 | }, 14 | "bugs": { 15 | "url": "https://github.com/vue-chemistry/issues" 16 | }, 17 | "sideEffects": false, 18 | "exports": { 19 | ".": { 20 | "require": "./cjs/index.js", 21 | "import": "./esm/index.js" 22 | }, 23 | "./core": { 24 | "require": "./cjs/core.js", 25 | "import": "./esm/core.js" 26 | }, 27 | "./json": { 28 | "require": "./cjs/json/index.js", 29 | "import": "./esm/json/index.js" 30 | }, 31 | "./string": { 32 | "require": "./cjs/string/index.js", 33 | "import": "./esm/string/index.js" 34 | }, 35 | "./math": { 36 | "require": "./cjs/math/index.js", 37 | "import": "./esm/math/index.js" 38 | }, 39 | "./number": { 40 | "require": "./cjs/number/index.js", 41 | "import": "./esm/number/index.js" 42 | }, 43 | "./boolean": { 44 | "require": "./cjs/boolean/index.js", 45 | "import": "./esm/boolean/index.js" 46 | }, 47 | "./console": { 48 | "require": "./cjs/console/index.js", 49 | "import": "./esm/console/index.js" 50 | } 51 | }, 52 | "types": "./index.d.ts", 53 | "scripts": { 54 | "build": "esno scripts/build.ts", 55 | "release": "npx bumpp --commit --push --tag && npm run build && cd dist && npm publish --access public", 56 | "lint": "eslint .", 57 | "test": "vitest" 58 | }, 59 | "dependencies": { 60 | "@vueuse/shared": "^9.3.0", 61 | "vue-demi": "latest" 62 | }, 63 | "devDependencies": { 64 | "@antfu/eslint-config": "^0.27.0", 65 | "@types/fs-extra": "^9.0.13", 66 | "@types/node": "^18.11.0", 67 | "eslint": "^8.25.0", 68 | "esno": "^0.16.3", 69 | "fast-glob": "^3.2.12", 70 | "fs-extra": "^10.1.0", 71 | "rimraf": "^3.0.2", 72 | "typescript": "^4.8.4", 73 | "vitest": "^0.24.3", 74 | "vue": "^3.2.41" 75 | } 76 | } 77 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: 5.4 2 | 3 | specifiers: 4 | '@antfu/eslint-config': ^0.27.0 5 | '@types/fs-extra': ^9.0.13 6 | '@types/node': ^18.11.0 7 | '@vueuse/shared': ^9.3.0 8 | eslint: ^8.25.0 9 | esno: ^0.16.3 10 | fast-glob: ^3.2.12 11 | fs-extra: ^10.1.0 12 | rimraf: ^3.0.2 13 | typescript: ^4.8.4 14 | vitest: ^0.24.3 15 | vue: ^3.2.41 16 | vue-demi: latest 17 | 18 | dependencies: 19 | '@vueuse/shared': 9.3.0_vue@3.2.41 20 | vue-demi: 0.13.11_vue@3.2.41 21 | 22 | devDependencies: 23 | '@antfu/eslint-config': 0.27.0_z4bbprzjrhnsfa24uvmcbu7f5q 24 | '@types/fs-extra': 9.0.13 25 | '@types/node': 18.11.0 26 | eslint: 8.25.0 27 | esno: 0.16.3 28 | fast-glob: 3.2.12 29 | fs-extra: 10.1.0 30 | rimraf: 3.0.2 31 | typescript: 4.8.4 32 | vitest: 0.24.3 33 | vue: 3.2.41 34 | 35 | packages: 36 | 37 | /@antfu/eslint-config-basic/0.27.0_25sstg4uu2sk4pm7xcyzuov7xq: 38 | resolution: {integrity: sha512-QgQVCiNiV9ZF7h09uBqTHctHDfVqJGIIpe0ZHCicLvUv233nAYeu4adAr53buhKrxDeoalozSs2ePiDiCyceTg==} 39 | peerDependencies: 40 | eslint: '>=7.4.0' 41 | dependencies: 42 | eslint: 8.25.0 43 | eslint-plugin-antfu: 0.27.0_z4bbprzjrhnsfa24uvmcbu7f5q 44 | eslint-plugin-eslint-comments: 3.2.0_eslint@8.25.0 45 | eslint-plugin-html: 7.1.0 46 | eslint-plugin-import: 2.26.0_zb5prbqp7qzcgafjm73dfpyyvm 47 | eslint-plugin-jsonc: 2.4.0_eslint@8.25.0 48 | eslint-plugin-markdown: 3.0.0_eslint@8.25.0 49 | eslint-plugin-n: 15.3.0_eslint@8.25.0 50 | eslint-plugin-promise: 6.1.0_eslint@8.25.0 51 | eslint-plugin-unicorn: 43.0.2_eslint@8.25.0 52 | eslint-plugin-yml: 1.2.0_eslint@8.25.0 53 | jsonc-eslint-parser: 2.1.0 54 | yaml-eslint-parser: 1.1.0 55 | transitivePeerDependencies: 56 | - '@typescript-eslint/parser' 57 | - eslint-import-resolver-typescript 58 | - eslint-import-resolver-webpack 59 | - supports-color 60 | - typescript 61 | dev: true 62 | 63 | /@antfu/eslint-config-ts/0.27.0_z4bbprzjrhnsfa24uvmcbu7f5q: 64 | resolution: {integrity: sha512-h/ai9xe65lXtsUiSBRAvfcN47fqn5uGHcCA5c0LoBRX6fVFHk06BbPWMlSJRtqmc3uBTmv3gU8SrnWwrycnKag==} 65 | peerDependencies: 66 | eslint: '>=7.4.0' 67 | typescript: '>=3.9' 68 | dependencies: 69 | '@antfu/eslint-config-basic': 0.27.0_25sstg4uu2sk4pm7xcyzuov7xq 70 | '@typescript-eslint/eslint-plugin': 5.40.0_25sstg4uu2sk4pm7xcyzuov7xq 71 | '@typescript-eslint/parser': 5.40.0_z4bbprzjrhnsfa24uvmcbu7f5q 72 | eslint: 8.25.0 73 | typescript: 4.8.4 74 | transitivePeerDependencies: 75 | - eslint-import-resolver-typescript 76 | - eslint-import-resolver-webpack 77 | - supports-color 78 | dev: true 79 | 80 | /@antfu/eslint-config-vue/0.27.0_z4bbprzjrhnsfa24uvmcbu7f5q: 81 | resolution: {integrity: sha512-Iw4GY4rXK1dPxzIl35bOwPE1vn6E5Wm8uljqdpQYQpTX1j6el7Yo30bpanCogWRcdPSMWKcS7GVlHjV47QB59w==} 82 | peerDependencies: 83 | eslint: '>=7.4.0' 84 | dependencies: 85 | '@antfu/eslint-config-ts': 0.27.0_z4bbprzjrhnsfa24uvmcbu7f5q 86 | eslint: 8.25.0 87 | eslint-plugin-vue: 9.6.0_eslint@8.25.0 88 | transitivePeerDependencies: 89 | - eslint-import-resolver-typescript 90 | - eslint-import-resolver-webpack 91 | - supports-color 92 | - typescript 93 | dev: true 94 | 95 | /@antfu/eslint-config/0.27.0_z4bbprzjrhnsfa24uvmcbu7f5q: 96 | resolution: {integrity: sha512-xM1In6/ueNyKxxWO86jd7a9IdKby66lZVT/fE8k2RlP+X0xe5/DTTQfwLbVvnRpn77jCPIhEjNKVWxDO/DUEIg==} 97 | peerDependencies: 98 | eslint: '>=7.4.0' 99 | dependencies: 100 | '@antfu/eslint-config-vue': 0.27.0_z4bbprzjrhnsfa24uvmcbu7f5q 101 | '@typescript-eslint/eslint-plugin': 5.40.0_25sstg4uu2sk4pm7xcyzuov7xq 102 | '@typescript-eslint/parser': 5.40.0_z4bbprzjrhnsfa24uvmcbu7f5q 103 | eslint: 8.25.0 104 | eslint-plugin-eslint-comments: 3.2.0_eslint@8.25.0 105 | eslint-plugin-html: 7.1.0 106 | eslint-plugin-import: 2.26.0_zb5prbqp7qzcgafjm73dfpyyvm 107 | eslint-plugin-jsonc: 2.4.0_eslint@8.25.0 108 | eslint-plugin-n: 15.3.0_eslint@8.25.0 109 | eslint-plugin-promise: 6.1.0_eslint@8.25.0 110 | eslint-plugin-unicorn: 43.0.2_eslint@8.25.0 111 | eslint-plugin-vue: 9.6.0_eslint@8.25.0 112 | eslint-plugin-yml: 1.2.0_eslint@8.25.0 113 | jsonc-eslint-parser: 2.1.0 114 | yaml-eslint-parser: 1.1.0 115 | transitivePeerDependencies: 116 | - eslint-import-resolver-typescript 117 | - eslint-import-resolver-webpack 118 | - supports-color 119 | - typescript 120 | dev: true 121 | 122 | /@babel/code-frame/7.18.6: 123 | resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==} 124 | engines: {node: '>=6.9.0'} 125 | dependencies: 126 | '@babel/highlight': 7.18.6 127 | dev: true 128 | 129 | /@babel/helper-validator-identifier/7.19.1: 130 | resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} 131 | engines: {node: '>=6.9.0'} 132 | 133 | /@babel/highlight/7.18.6: 134 | resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} 135 | engines: {node: '>=6.9.0'} 136 | dependencies: 137 | '@babel/helper-validator-identifier': 7.19.1 138 | chalk: 2.4.2 139 | js-tokens: 4.0.0 140 | dev: true 141 | 142 | /@babel/parser/7.19.4: 143 | resolution: {integrity: sha512-qpVT7gtuOLjWeDTKLkJ6sryqLliBaFpAtGeqw5cs5giLldvh+Ch0plqnUMKoVAUS6ZEueQQiZV+p5pxtPitEsA==} 144 | engines: {node: '>=6.0.0'} 145 | hasBin: true 146 | dependencies: 147 | '@babel/types': 7.12.12 148 | 149 | /@babel/types/7.12.12: 150 | resolution: {integrity: sha512-lnIX7piTxOH22xE7fDXDbSHg9MM1/6ORnafpJmov5rs0kX5g4BZxeXNJLXsMRiO0U5Rb8/FvMS6xlTnTHvxonQ==} 151 | dependencies: 152 | '@babel/helper-validator-identifier': 7.19.1 153 | lodash: 4.17.21 154 | to-fast-properties: 2.0.0 155 | 156 | /@esbuild-kit/cjs-loader/2.4.0: 157 | resolution: {integrity: sha512-DBBCiHPgL2B/elUpvCDhNHXnlZQ9sfO2uyt1OJyAXKT41beQEFY4OxZ6gwS+ZesRCbZ6JV8M7GEyOPkjv8kdIw==} 158 | dependencies: 159 | '@esbuild-kit/core-utils': 3.0.0 160 | get-tsconfig: 4.2.0 161 | dev: true 162 | 163 | /@esbuild-kit/core-utils/3.0.0: 164 | resolution: {integrity: sha512-TXmwH9EFS3DC2sI2YJWJBgHGhlteK0Xyu1VabwetMULfm3oYhbrsWV5yaSr2NTWZIgDGVLHbRf0inxbjXqAcmQ==} 165 | dependencies: 166 | esbuild: 0.15.11 167 | source-map-support: 0.5.21 168 | dev: true 169 | 170 | /@esbuild-kit/esm-loader/2.5.0: 171 | resolution: {integrity: sha512-ySs0qOsiwj+hsgZM9/MniGdvfa9/WzqfFuIia8/5gSUPeIQIX2/tG91QakxPFOR35VFiwTB7wCiHtiS6dc6SkA==} 172 | dependencies: 173 | '@esbuild-kit/core-utils': 3.0.0 174 | get-tsconfig: 4.2.0 175 | dev: true 176 | 177 | /@esbuild/android-arm/0.15.11: 178 | resolution: {integrity: sha512-PzMcQLazLBkwDEkrNPi9AbjFt6+3I7HKbiYF2XtWQ7wItrHvEOeO3T8Am434zAozWtVP7lrTue1bEfc2nYWeCA==} 179 | engines: {node: '>=12'} 180 | cpu: [arm] 181 | os: [android] 182 | requiresBuild: true 183 | dev: true 184 | optional: true 185 | 186 | /@esbuild/linux-loong64/0.15.11: 187 | resolution: {integrity: sha512-geWp637tUhNmhL3Xgy4Bj703yXB9dqiLJe05lCUfjSFDrQf9C/8pArusyPUbUbPwlC/EAUjBw32sxuIl/11dZw==} 188 | engines: {node: '>=12'} 189 | cpu: [loong64] 190 | os: [linux] 191 | requiresBuild: true 192 | dev: true 193 | optional: true 194 | 195 | /@eslint/eslintrc/1.3.3: 196 | resolution: {integrity: sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==} 197 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 198 | dependencies: 199 | ajv: 6.12.6 200 | debug: 4.3.4 201 | espree: 9.4.0 202 | globals: 13.17.0 203 | ignore: 5.2.0 204 | import-fresh: 3.3.0 205 | js-yaml: 4.1.0 206 | minimatch: 3.1.2 207 | strip-json-comments: 3.1.1 208 | transitivePeerDependencies: 209 | - supports-color 210 | dev: true 211 | 212 | /@humanwhocodes/config-array/0.10.7: 213 | resolution: {integrity: sha512-MDl6D6sBsaV452/QSdX+4CXIjZhIcI0PELsxUjk4U828yd58vk3bTIvk/6w5FY+4hIy9sLW0sfrV7K7Kc++j/w==} 214 | engines: {node: '>=10.10.0'} 215 | dependencies: 216 | '@humanwhocodes/object-schema': 1.2.1 217 | debug: 4.3.4 218 | minimatch: 3.1.2 219 | transitivePeerDependencies: 220 | - supports-color 221 | dev: true 222 | 223 | /@humanwhocodes/module-importer/1.0.1: 224 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 225 | engines: {node: '>=12.22'} 226 | dev: true 227 | 228 | /@humanwhocodes/object-schema/1.2.1: 229 | resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} 230 | dev: true 231 | 232 | /@nodelib/fs.scandir/2.1.4: 233 | resolution: {integrity: sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA==} 234 | engines: {node: '>= 8'} 235 | dependencies: 236 | '@nodelib/fs.stat': 2.0.4 237 | run-parallel: 1.1.10 238 | dev: true 239 | 240 | /@nodelib/fs.stat/2.0.4: 241 | resolution: {integrity: sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==} 242 | engines: {node: '>= 8'} 243 | dev: true 244 | 245 | /@nodelib/fs.walk/1.2.6: 246 | resolution: {integrity: sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow==} 247 | engines: {node: '>= 8'} 248 | dependencies: 249 | '@nodelib/fs.scandir': 2.1.4 250 | fastq: 1.10.0 251 | dev: true 252 | 253 | /@types/chai-subset/1.3.3: 254 | resolution: {integrity: sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==} 255 | dependencies: 256 | '@types/chai': 4.3.3 257 | dev: true 258 | 259 | /@types/chai/4.3.3: 260 | resolution: {integrity: sha512-hC7OMnszpxhZPduX+m+nrx+uFoLkWOMiR4oa/AZF3MuSETYTZmFfJAHqZEM8MVlvfG7BEUcgvtwoCTxBp6hm3g==} 261 | dev: true 262 | 263 | /@types/fs-extra/9.0.13: 264 | resolution: {integrity: sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==} 265 | dependencies: 266 | '@types/node': 18.11.0 267 | dev: true 268 | 269 | /@types/json-schema/7.0.11: 270 | resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} 271 | dev: true 272 | 273 | /@types/json5/0.0.29: 274 | resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} 275 | dev: true 276 | 277 | /@types/mdast/3.0.10: 278 | resolution: {integrity: sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==} 279 | dependencies: 280 | '@types/unist': 2.0.6 281 | dev: true 282 | 283 | /@types/node/18.11.0: 284 | resolution: {integrity: sha512-IOXCvVRToe7e0ny7HpT/X9Rb2RYtElG1a+VshjwT00HxrM2dWBApHQoqsI6WiY7Q03vdf2bCrIGzVrkF/5t10w==} 285 | dev: true 286 | 287 | /@types/normalize-package-data/2.4.0: 288 | resolution: {integrity: sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==} 289 | dev: true 290 | 291 | /@types/unist/2.0.6: 292 | resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==} 293 | dev: true 294 | 295 | /@typescript-eslint/eslint-plugin/5.40.0_25sstg4uu2sk4pm7xcyzuov7xq: 296 | resolution: {integrity: sha512-FIBZgS3DVJgqPwJzvZTuH4HNsZhHMa9SjxTKAZTlMsPw/UzpEjcf9f4dfgDJEHjK+HboUJo123Eshl6niwEm/Q==} 297 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 298 | peerDependencies: 299 | '@typescript-eslint/parser': ^5.0.0 300 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 301 | typescript: '*' 302 | peerDependenciesMeta: 303 | typescript: 304 | optional: true 305 | dependencies: 306 | '@typescript-eslint/parser': 5.40.0_z4bbprzjrhnsfa24uvmcbu7f5q 307 | '@typescript-eslint/scope-manager': 5.40.0 308 | '@typescript-eslint/type-utils': 5.40.0_z4bbprzjrhnsfa24uvmcbu7f5q 309 | '@typescript-eslint/utils': 5.40.0_z4bbprzjrhnsfa24uvmcbu7f5q 310 | debug: 4.3.4 311 | eslint: 8.25.0 312 | ignore: 5.2.0 313 | regexpp: 3.2.0 314 | semver: 7.3.8 315 | tsutils: 3.21.0_typescript@4.8.4 316 | typescript: 4.8.4 317 | transitivePeerDependencies: 318 | - supports-color 319 | dev: true 320 | 321 | /@typescript-eslint/parser/5.40.0_z4bbprzjrhnsfa24uvmcbu7f5q: 322 | resolution: {integrity: sha512-Ah5gqyX2ySkiuYeOIDg7ap51/b63QgWZA7w6AHtFrag7aH0lRQPbLzUjk0c9o5/KZ6JRkTTDKShL4AUrQa6/hw==} 323 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 324 | peerDependencies: 325 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 326 | typescript: '*' 327 | peerDependenciesMeta: 328 | typescript: 329 | optional: true 330 | dependencies: 331 | '@typescript-eslint/scope-manager': 5.40.0 332 | '@typescript-eslint/types': 5.40.0 333 | '@typescript-eslint/typescript-estree': 5.40.0_typescript@4.8.4 334 | debug: 4.3.4 335 | eslint: 8.25.0 336 | typescript: 4.8.4 337 | transitivePeerDependencies: 338 | - supports-color 339 | dev: true 340 | 341 | /@typescript-eslint/scope-manager/5.40.0: 342 | resolution: {integrity: sha512-d3nPmjUeZtEWRvyReMI4I1MwPGC63E8pDoHy0BnrYjnJgilBD3hv7XOiETKLY/zTwI7kCnBDf2vWTRUVpYw0Uw==} 343 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 344 | dependencies: 345 | '@typescript-eslint/types': 5.40.0 346 | '@typescript-eslint/visitor-keys': 5.40.0 347 | dev: true 348 | 349 | /@typescript-eslint/type-utils/5.40.0_z4bbprzjrhnsfa24uvmcbu7f5q: 350 | resolution: {integrity: sha512-nfuSdKEZY2TpnPz5covjJqav+g5qeBqwSHKBvz7Vm1SAfy93SwKk/JeSTymruDGItTwNijSsno5LhOHRS1pcfw==} 351 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 352 | peerDependencies: 353 | eslint: '*' 354 | typescript: '*' 355 | peerDependenciesMeta: 356 | typescript: 357 | optional: true 358 | dependencies: 359 | '@typescript-eslint/typescript-estree': 5.40.0_typescript@4.8.4 360 | '@typescript-eslint/utils': 5.40.0_z4bbprzjrhnsfa24uvmcbu7f5q 361 | debug: 4.3.4 362 | eslint: 8.25.0 363 | tsutils: 3.21.0_typescript@4.8.4 364 | typescript: 4.8.4 365 | transitivePeerDependencies: 366 | - supports-color 367 | dev: true 368 | 369 | /@typescript-eslint/types/5.40.0: 370 | resolution: {integrity: sha512-V1KdQRTXsYpf1Y1fXCeZ+uhjW48Niiw0VGt4V8yzuaDTU8Z1Xl7yQDyQNqyAFcVhpYXIVCEuxSIWTsLDpHgTbw==} 371 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 372 | dev: true 373 | 374 | /@typescript-eslint/typescript-estree/5.40.0_typescript@4.8.4: 375 | resolution: {integrity: sha512-b0GYlDj8TLTOqwX7EGbw2gL5EXS2CPEWhF9nGJiGmEcmlpNBjyHsTwbqpyIEPVpl6br4UcBOYlcI2FJVtJkYhg==} 376 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 377 | peerDependencies: 378 | typescript: '*' 379 | peerDependenciesMeta: 380 | typescript: 381 | optional: true 382 | dependencies: 383 | '@typescript-eslint/types': 5.40.0 384 | '@typescript-eslint/visitor-keys': 5.40.0 385 | debug: 4.3.4 386 | globby: 11.1.0 387 | is-glob: 4.0.3 388 | semver: 7.3.8 389 | tsutils: 3.21.0_typescript@4.8.4 390 | typescript: 4.8.4 391 | transitivePeerDependencies: 392 | - supports-color 393 | dev: true 394 | 395 | /@typescript-eslint/utils/5.40.0_z4bbprzjrhnsfa24uvmcbu7f5q: 396 | resolution: {integrity: sha512-MO0y3T5BQ5+tkkuYZJBjePewsY+cQnfkYeRqS6tPh28niiIwPnQ1t59CSRcs1ZwJJNOdWw7rv9pF8aP58IMihA==} 397 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 398 | peerDependencies: 399 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 400 | dependencies: 401 | '@types/json-schema': 7.0.11 402 | '@typescript-eslint/scope-manager': 5.40.0 403 | '@typescript-eslint/types': 5.40.0 404 | '@typescript-eslint/typescript-estree': 5.40.0_typescript@4.8.4 405 | eslint: 8.25.0 406 | eslint-scope: 5.1.1 407 | eslint-utils: 3.0.0_eslint@8.25.0 408 | semver: 7.3.8 409 | transitivePeerDependencies: 410 | - supports-color 411 | - typescript 412 | dev: true 413 | 414 | /@typescript-eslint/visitor-keys/5.40.0: 415 | resolution: {integrity: sha512-ijJ+6yig+x9XplEpG2K6FUdJeQGGj/15U3S56W9IqXKJqleuD7zJ2AX/miLezwxpd7ZxDAqO87zWufKg+RPZyQ==} 416 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 417 | dependencies: 418 | '@typescript-eslint/types': 5.40.0 419 | eslint-visitor-keys: 3.3.0 420 | dev: true 421 | 422 | /@vue/compiler-core/3.2.41: 423 | resolution: {integrity: sha512-oA4mH6SA78DT+96/nsi4p9DX97PHcNROxs51lYk7gb9Z4BPKQ3Mh+BLn6CQZBw857Iuhu28BfMSRHAlPvD4vlw==} 424 | dependencies: 425 | '@babel/parser': 7.19.4 426 | '@vue/shared': 3.2.41 427 | estree-walker: 2.0.2 428 | source-map: 0.6.1 429 | 430 | /@vue/compiler-dom/3.2.41: 431 | resolution: {integrity: sha512-xe5TbbIsonjENxJsYRbDJvthzqxLNk+tb3d/c47zgREDa/PCp6/Y4gC/skM4H6PIuX5DAxm7fFJdbjjUH2QTMw==} 432 | dependencies: 433 | '@vue/compiler-core': 3.2.41 434 | '@vue/shared': 3.2.41 435 | 436 | /@vue/compiler-sfc/3.2.41: 437 | resolution: {integrity: sha512-+1P2m5kxOeaxVmJNXnBskAn3BenbTmbxBxWOtBq3mQTCokIreuMULFantBUclP0+KnzNCMOvcnKinqQZmiOF8w==} 438 | dependencies: 439 | '@babel/parser': 7.19.4 440 | '@vue/compiler-core': 3.2.41 441 | '@vue/compiler-dom': 3.2.41 442 | '@vue/compiler-ssr': 3.2.41 443 | '@vue/reactivity-transform': 3.2.41 444 | '@vue/shared': 3.2.41 445 | estree-walker: 2.0.2 446 | magic-string: 0.25.9 447 | postcss: 8.4.18 448 | source-map: 0.6.1 449 | 450 | /@vue/compiler-ssr/3.2.41: 451 | resolution: {integrity: sha512-Y5wPiNIiaMz/sps8+DmhaKfDm1xgj6GrH99z4gq2LQenfVQcYXmHIOBcs5qPwl7jaW3SUQWjkAPKMfQemEQZwQ==} 452 | dependencies: 453 | '@vue/compiler-dom': 3.2.41 454 | '@vue/shared': 3.2.41 455 | 456 | /@vue/reactivity-transform/3.2.41: 457 | resolution: {integrity: sha512-mK5+BNMsL4hHi+IR3Ft/ho6Za+L3FA5j8WvreJ7XzHrqkPq8jtF/SMo7tuc9gHjLDwKZX1nP1JQOKo9IEAn54A==} 458 | dependencies: 459 | '@babel/parser': 7.19.4 460 | '@vue/compiler-core': 3.2.41 461 | '@vue/shared': 3.2.41 462 | estree-walker: 2.0.2 463 | magic-string: 0.25.9 464 | 465 | /@vue/reactivity/3.2.41: 466 | resolution: {integrity: sha512-9JvCnlj8uc5xRiQGZ28MKGjuCoPhhTwcoAdv3o31+cfGgonwdPNuvqAXLhlzu4zwqavFEG5tvaoINQEfxz+l6g==} 467 | dependencies: 468 | '@vue/shared': 3.2.41 469 | 470 | /@vue/runtime-core/3.2.41: 471 | resolution: {integrity: sha512-0LBBRwqnI0p4FgIkO9q2aJBBTKDSjzhnxrxHYengkAF6dMOjeAIZFDADAlcf2h3GDALWnblbeprYYpItiulSVQ==} 472 | dependencies: 473 | '@vue/reactivity': 3.2.41 474 | '@vue/shared': 3.2.41 475 | 476 | /@vue/runtime-dom/3.2.41: 477 | resolution: {integrity: sha512-U7zYuR1NVIP8BL6jmOqmapRAHovEFp7CSw4pR2FacqewXNGqZaRfHoNLQsqQvVQ8yuZNZtxSZy0FFyC70YXPpA==} 478 | dependencies: 479 | '@vue/runtime-core': 3.2.41 480 | '@vue/shared': 3.2.41 481 | csstype: 2.6.14 482 | 483 | /@vue/server-renderer/3.2.41_vue@3.2.41: 484 | resolution: {integrity: sha512-7YHLkfJdTlsZTV0ae5sPwl9Gn/EGr2hrlbcS/8naXm2CDpnKUwC68i1wGlrYAfIgYWL7vUZwk2GkYLQH5CvFig==} 485 | peerDependencies: 486 | vue: 3.2.41 487 | dependencies: 488 | '@vue/compiler-ssr': 3.2.41 489 | '@vue/shared': 3.2.41 490 | vue: 3.2.41 491 | 492 | /@vue/shared/3.2.41: 493 | resolution: {integrity: sha512-W9mfWLHmJhkfAmV+7gDjcHeAWALQtgGT3JErxULl0oz6R6+3ug91I7IErs93eCFhPCZPHBs4QJS7YWEV7A3sxw==} 494 | 495 | /@vueuse/shared/9.3.0_vue@3.2.41: 496 | resolution: {integrity: sha512-caGUWLY0DpPC6l31KxeUy6vPVNA0yKxx81jFYLoMpyP6cF84FG5Dkf69DfSUqL57wX8JcUkJDMnQaQIZPWFEQQ==} 497 | dependencies: 498 | vue-demi: 0.13.11_vue@3.2.41 499 | transitivePeerDependencies: 500 | - '@vue/composition-api' 501 | - vue 502 | dev: false 503 | 504 | /acorn-jsx/5.3.2_acorn@8.8.0: 505 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 506 | peerDependencies: 507 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 508 | dependencies: 509 | acorn: 8.8.0 510 | dev: true 511 | 512 | /acorn/8.8.0: 513 | resolution: {integrity: sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==} 514 | engines: {node: '>=0.4.0'} 515 | hasBin: true 516 | dev: true 517 | 518 | /ajv/6.12.6: 519 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 520 | dependencies: 521 | fast-deep-equal: 3.1.3 522 | fast-json-stable-stringify: 2.1.0 523 | json-schema-traverse: 0.4.1 524 | uri-js: 4.4.0 525 | dev: true 526 | 527 | /ansi-regex/5.0.1: 528 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 529 | engines: {node: '>=8'} 530 | dev: true 531 | 532 | /ansi-styles/3.2.1: 533 | resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} 534 | engines: {node: '>=4'} 535 | dependencies: 536 | color-convert: 1.9.3 537 | dev: true 538 | 539 | /ansi-styles/4.3.0: 540 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 541 | engines: {node: '>=8'} 542 | dependencies: 543 | color-convert: 2.0.1 544 | dev: true 545 | 546 | /argparse/2.0.1: 547 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 548 | dev: true 549 | 550 | /array-includes/3.1.5: 551 | resolution: {integrity: sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ==} 552 | engines: {node: '>= 0.4'} 553 | dependencies: 554 | call-bind: 1.0.2 555 | define-properties: 1.1.4 556 | es-abstract: 1.20.4 557 | get-intrinsic: 1.1.3 558 | is-string: 1.0.7 559 | dev: true 560 | 561 | /array-union/2.1.0: 562 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} 563 | engines: {node: '>=8'} 564 | dev: true 565 | 566 | /array.prototype.flat/1.3.0: 567 | resolution: {integrity: sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==} 568 | engines: {node: '>= 0.4'} 569 | dependencies: 570 | call-bind: 1.0.2 571 | define-properties: 1.1.4 572 | es-abstract: 1.20.4 573 | es-shim-unscopables: 1.0.0 574 | dev: true 575 | 576 | /assertion-error/1.1.0: 577 | resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} 578 | dev: true 579 | 580 | /balanced-match/1.0.0: 581 | resolution: {integrity: sha512-9Y0g0Q8rmSt+H33DfKv7FOc3v+iRI+o1lbzt8jGcIosYW37IIW/2XVYq5NPdmaD5NQ59Nk26Kl/vZbwW9Fr8vg==} 582 | dev: true 583 | 584 | /boolbase/1.0.0: 585 | resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} 586 | dev: true 587 | 588 | /brace-expansion/1.1.11: 589 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 590 | dependencies: 591 | balanced-match: 1.0.0 592 | concat-map: 0.0.1 593 | dev: true 594 | 595 | /braces/3.0.2: 596 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 597 | engines: {node: '>=8'} 598 | dependencies: 599 | fill-range: 7.0.1 600 | dev: true 601 | 602 | /buffer-from/1.1.1: 603 | resolution: {integrity: sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==} 604 | dev: true 605 | 606 | /builtin-modules/3.3.0: 607 | resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} 608 | engines: {node: '>=6'} 609 | dev: true 610 | 611 | /builtins/5.0.1: 612 | resolution: {integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==} 613 | dependencies: 614 | semver: 7.3.8 615 | dev: true 616 | 617 | /call-bind/1.0.2: 618 | resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} 619 | dependencies: 620 | function-bind: 1.1.1 621 | get-intrinsic: 1.1.3 622 | dev: true 623 | 624 | /callsites/3.1.0: 625 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 626 | engines: {node: '>=6'} 627 | dev: true 628 | 629 | /chai/4.3.6: 630 | resolution: {integrity: sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q==} 631 | engines: {node: '>=4'} 632 | dependencies: 633 | assertion-error: 1.1.0 634 | check-error: 1.0.2 635 | deep-eql: 3.0.1 636 | get-func-name: 2.0.0 637 | loupe: 2.3.4 638 | pathval: 1.1.1 639 | type-detect: 4.0.8 640 | dev: true 641 | 642 | /chalk/2.4.2: 643 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} 644 | engines: {node: '>=4'} 645 | dependencies: 646 | ansi-styles: 3.2.1 647 | escape-string-regexp: 1.0.5 648 | supports-color: 5.5.0 649 | dev: true 650 | 651 | /chalk/4.1.0: 652 | resolution: {integrity: sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==} 653 | engines: {node: '>=10'} 654 | dependencies: 655 | ansi-styles: 4.3.0 656 | supports-color: 7.2.0 657 | dev: true 658 | 659 | /character-entities-legacy/1.1.4: 660 | resolution: {integrity: sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==} 661 | dev: true 662 | 663 | /character-entities/1.2.4: 664 | resolution: {integrity: sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==} 665 | dev: true 666 | 667 | /character-reference-invalid/1.1.4: 668 | resolution: {integrity: sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==} 669 | dev: true 670 | 671 | /check-error/1.0.2: 672 | resolution: {integrity: sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==} 673 | dev: true 674 | 675 | /ci-info/3.5.0: 676 | resolution: {integrity: sha512-yH4RezKOGlOhxkmhbeNuC4eYZKAUsEaGtBuBzDDP1eFUKiccDWzBABxBfOx31IDwDIXMTxWuwAxUGModvkbuVw==} 677 | dev: true 678 | 679 | /clean-regexp/1.0.0: 680 | resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==} 681 | engines: {node: '>=4'} 682 | dependencies: 683 | escape-string-regexp: 1.0.5 684 | dev: true 685 | 686 | /color-convert/1.9.3: 687 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} 688 | dependencies: 689 | color-name: 1.1.3 690 | dev: true 691 | 692 | /color-convert/2.0.1: 693 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 694 | engines: {node: '>=7.0.0'} 695 | dependencies: 696 | color-name: 1.1.4 697 | dev: true 698 | 699 | /color-name/1.1.3: 700 | resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} 701 | dev: true 702 | 703 | /color-name/1.1.4: 704 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 705 | dev: true 706 | 707 | /concat-map/0.0.1: 708 | resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} 709 | dev: true 710 | 711 | /cross-spawn/7.0.3: 712 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 713 | engines: {node: '>= 8'} 714 | dependencies: 715 | path-key: 3.1.1 716 | shebang-command: 2.0.0 717 | which: 2.0.2 718 | dev: true 719 | 720 | /cssesc/3.0.0: 721 | resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} 722 | engines: {node: '>=4'} 723 | hasBin: true 724 | dev: true 725 | 726 | /csstype/2.6.14: 727 | resolution: {integrity: sha512-2mSc+VEpGPblzAxyeR+vZhJKgYg0Og0nnRi7pmRXFYYxSfnOnW8A5wwQb4n4cE2nIOzqKOAzLCaEX6aBmNEv8A==} 728 | 729 | /debug/2.6.9: 730 | resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} 731 | peerDependencies: 732 | supports-color: '*' 733 | peerDependenciesMeta: 734 | supports-color: 735 | optional: true 736 | dependencies: 737 | ms: 2.0.0 738 | dev: true 739 | 740 | /debug/3.2.7: 741 | resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} 742 | peerDependencies: 743 | supports-color: '*' 744 | peerDependenciesMeta: 745 | supports-color: 746 | optional: true 747 | dependencies: 748 | ms: 2.1.2 749 | dev: true 750 | 751 | /debug/4.3.4: 752 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 753 | engines: {node: '>=6.0'} 754 | peerDependencies: 755 | supports-color: '*' 756 | peerDependenciesMeta: 757 | supports-color: 758 | optional: true 759 | dependencies: 760 | ms: 2.1.2 761 | dev: true 762 | 763 | /deep-eql/3.0.1: 764 | resolution: {integrity: sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==} 765 | engines: {node: '>=0.12'} 766 | dependencies: 767 | type-detect: 4.0.8 768 | dev: true 769 | 770 | /deep-is/0.1.3: 771 | resolution: {integrity: sha512-GtxAN4HvBachZzm4OnWqc45ESpUCMwkYcsjnsPs23FwJbsO+k4t0k9bQCgOmzIlpHO28+WPK/KRbRk0DDHuuDw==} 772 | dev: true 773 | 774 | /define-properties/1.1.4: 775 | resolution: {integrity: sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==} 776 | engines: {node: '>= 0.4'} 777 | dependencies: 778 | has-property-descriptors: 1.0.0 779 | object-keys: 1.1.1 780 | dev: true 781 | 782 | /dir-glob/3.0.1: 783 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} 784 | engines: {node: '>=8'} 785 | dependencies: 786 | path-type: 4.0.0 787 | dev: true 788 | 789 | /doctrine/2.1.0: 790 | resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} 791 | engines: {node: '>=0.10.0'} 792 | dependencies: 793 | esutils: 2.0.3 794 | dev: true 795 | 796 | /doctrine/3.0.0: 797 | resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} 798 | engines: {node: '>=6.0.0'} 799 | dependencies: 800 | esutils: 2.0.3 801 | dev: true 802 | 803 | /dom-serializer/2.0.0: 804 | resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} 805 | dependencies: 806 | domelementtype: 2.3.0 807 | domhandler: 5.0.3 808 | entities: 4.4.0 809 | dev: true 810 | 811 | /domelementtype/2.3.0: 812 | resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} 813 | dev: true 814 | 815 | /domhandler/5.0.3: 816 | resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} 817 | engines: {node: '>= 4'} 818 | dependencies: 819 | domelementtype: 2.3.0 820 | dev: true 821 | 822 | /domutils/3.0.1: 823 | resolution: {integrity: sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q==} 824 | dependencies: 825 | dom-serializer: 2.0.0 826 | domelementtype: 2.3.0 827 | domhandler: 5.0.3 828 | dev: true 829 | 830 | /entities/4.4.0: 831 | resolution: {integrity: sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==} 832 | engines: {node: '>=0.12'} 833 | dev: true 834 | 835 | /error-ex/1.3.2: 836 | resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} 837 | dependencies: 838 | is-arrayish: 0.2.1 839 | dev: true 840 | 841 | /es-abstract/1.20.4: 842 | resolution: {integrity: sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA==} 843 | engines: {node: '>= 0.4'} 844 | dependencies: 845 | call-bind: 1.0.2 846 | es-to-primitive: 1.2.1 847 | function-bind: 1.1.1 848 | function.prototype.name: 1.1.5 849 | get-intrinsic: 1.1.3 850 | get-symbol-description: 1.0.0 851 | has: 1.0.3 852 | has-property-descriptors: 1.0.0 853 | has-symbols: 1.0.3 854 | internal-slot: 1.0.3 855 | is-callable: 1.2.7 856 | is-negative-zero: 2.0.2 857 | is-regex: 1.1.4 858 | is-shared-array-buffer: 1.0.2 859 | is-string: 1.0.7 860 | is-weakref: 1.0.2 861 | object-inspect: 1.12.2 862 | object-keys: 1.1.1 863 | object.assign: 4.1.4 864 | regexp.prototype.flags: 1.4.3 865 | safe-regex-test: 1.0.0 866 | string.prototype.trimend: 1.0.5 867 | string.prototype.trimstart: 1.0.5 868 | unbox-primitive: 1.0.2 869 | dev: true 870 | 871 | /es-shim-unscopables/1.0.0: 872 | resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} 873 | dependencies: 874 | has: 1.0.3 875 | dev: true 876 | 877 | /es-to-primitive/1.2.1: 878 | resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} 879 | engines: {node: '>= 0.4'} 880 | dependencies: 881 | is-callable: 1.2.7 882 | is-date-object: 1.0.2 883 | is-symbol: 1.0.3 884 | dev: true 885 | 886 | /esbuild-android-64/0.15.11: 887 | resolution: {integrity: sha512-rrwoXEiuI1kaw4k475NJpexs8GfJqQUKcD08VR8sKHmuW9RUuTR2VxcupVvHdiGh9ihxL9m3lpqB1kju92Ialw==} 888 | engines: {node: '>=12'} 889 | cpu: [x64] 890 | os: [android] 891 | requiresBuild: true 892 | dev: true 893 | optional: true 894 | 895 | /esbuild-android-arm64/0.15.11: 896 | resolution: {integrity: sha512-/hDubOg7BHOhUUsT8KUIU7GfZm5bihqssvqK5PfO4apag7YuObZRZSzViyEKcFn2tPeHx7RKbSBXvAopSHDZJQ==} 897 | engines: {node: '>=12'} 898 | cpu: [arm64] 899 | os: [android] 900 | requiresBuild: true 901 | dev: true 902 | optional: true 903 | 904 | /esbuild-darwin-64/0.15.11: 905 | resolution: {integrity: sha512-1DqHD0ms3AhiwkKnjRUzmiW7JnaJJr5FKrPiR7xuyMwnjDqvNWDdMq4rKSD9OC0piFNK6n0LghsglNMe2MwJtA==} 906 | engines: {node: '>=12'} 907 | cpu: [x64] 908 | os: [darwin] 909 | requiresBuild: true 910 | dev: true 911 | optional: true 912 | 913 | /esbuild-darwin-arm64/0.15.11: 914 | resolution: {integrity: sha512-OMzhxSbS0lwwrW40HHjRCeVIJTURdXFA8c3GU30MlHKuPCcvWNUIKVucVBtNpJySXmbkQMDJdJNrXzNDyvoqvQ==} 915 | engines: {node: '>=12'} 916 | cpu: [arm64] 917 | os: [darwin] 918 | requiresBuild: true 919 | dev: true 920 | optional: true 921 | 922 | /esbuild-freebsd-64/0.15.11: 923 | resolution: {integrity: sha512-8dKP26r0/Qyez8nTCwpq60QbuYKOeBygdgOAWGCRalunyeqWRoSZj9TQjPDnTTI9joxd3QYw3UhVZTKxO9QdRg==} 924 | engines: {node: '>=12'} 925 | cpu: [x64] 926 | os: [freebsd] 927 | requiresBuild: true 928 | dev: true 929 | optional: true 930 | 931 | /esbuild-freebsd-arm64/0.15.11: 932 | resolution: {integrity: sha512-aSGiODiukLGGnSg/O9+cGO2QxEacrdCtCawehkWYTt5VX1ni2b9KoxpHCT9h9Y6wGqNHmXFnB47RRJ8BIqZgmQ==} 933 | engines: {node: '>=12'} 934 | cpu: [arm64] 935 | os: [freebsd] 936 | requiresBuild: true 937 | dev: true 938 | optional: true 939 | 940 | /esbuild-linux-32/0.15.11: 941 | resolution: {integrity: sha512-lsrAfdyJBGx+6aHIQmgqUonEzKYeBnyfJPkT6N2dOf1RoXYYV1BkWB6G02tjsrz1d5wZzaTc3cF+TKmuTo/ZwA==} 942 | engines: {node: '>=12'} 943 | cpu: [ia32] 944 | os: [linux] 945 | requiresBuild: true 946 | dev: true 947 | optional: true 948 | 949 | /esbuild-linux-64/0.15.11: 950 | resolution: {integrity: sha512-Y2Rh+PcyVhQqXKBTacPCltINN3uIw2xC+dsvLANJ1SpK5NJUtxv8+rqWpjmBgaNWKQT1/uGpMmA9olALy9PLVA==} 951 | engines: {node: '>=12'} 952 | cpu: [x64] 953 | os: [linux] 954 | requiresBuild: true 955 | dev: true 956 | optional: true 957 | 958 | /esbuild-linux-arm/0.15.11: 959 | resolution: {integrity: sha512-TJllTVk5aSyqPFvvcHTvf6Wu1ZKhWpJ/qNmZO8LL/XeB+LXCclm7HQHNEIz6MT7IX8PmlC1BZYrOiw2sXSB95A==} 960 | engines: {node: '>=12'} 961 | cpu: [arm] 962 | os: [linux] 963 | requiresBuild: true 964 | dev: true 965 | optional: true 966 | 967 | /esbuild-linux-arm64/0.15.11: 968 | resolution: {integrity: sha512-uhcXiTwTmD4OpxJu3xC5TzAAw6Wzf9O1XGWL448EE9bqGjgV1j+oK3lIHAfsHnuIn8K4nDW8yjX0Sv5S++oRuw==} 969 | engines: {node: '>=12'} 970 | cpu: [arm64] 971 | os: [linux] 972 | requiresBuild: true 973 | dev: true 974 | optional: true 975 | 976 | /esbuild-linux-mips64le/0.15.11: 977 | resolution: {integrity: sha512-WD61y/R1M4BLe4gxXRypoQ0Ci+Vjf714QYzcPNkiYv5I8K8WDz2ZR8Bm6cqKxd6rD+e/rZgPDbhQ9PCf7TMHmA==} 978 | engines: {node: '>=12'} 979 | cpu: [mips64el] 980 | os: [linux] 981 | requiresBuild: true 982 | dev: true 983 | optional: true 984 | 985 | /esbuild-linux-ppc64le/0.15.11: 986 | resolution: {integrity: sha512-JVleZS9oPVLTlBhPTWgOwxFWU/wMUdlBwTbGA4GF8c38sLbS13cupj+C8bLq929jU7EMWry4SaL+tKGIaTlqKg==} 987 | engines: {node: '>=12'} 988 | cpu: [ppc64] 989 | os: [linux] 990 | requiresBuild: true 991 | dev: true 992 | optional: true 993 | 994 | /esbuild-linux-riscv64/0.15.11: 995 | resolution: {integrity: sha512-9aLIalZ2HFHIOZpmVU11sEAS9F8TnHw49daEjcgMpBXHFF57VuT9f9/9LKJhw781Gda0P9jDkuCWJ0tFbErvJw==} 996 | engines: {node: '>=12'} 997 | cpu: [riscv64] 998 | os: [linux] 999 | requiresBuild: true 1000 | dev: true 1001 | optional: true 1002 | 1003 | /esbuild-linux-s390x/0.15.11: 1004 | resolution: {integrity: sha512-sZHtiXXOKsLI3XGBGoYO4qKBzJlb8xNsWmvFiwFMHFzA4AXgDP1KDp7Dawe9C2pavTRBDvl+Ok4n/DHQ59oaTg==} 1005 | engines: {node: '>=12'} 1006 | cpu: [s390x] 1007 | os: [linux] 1008 | requiresBuild: true 1009 | dev: true 1010 | optional: true 1011 | 1012 | /esbuild-netbsd-64/0.15.11: 1013 | resolution: {integrity: sha512-hUC9yN06K9sg7ju4Vgu9ChAPdsEgtcrcLfyNT5IKwKyfpLvKUwCMZSdF+gRD3WpyZelgTQfJ+pDx5XFbXTlB0A==} 1014 | engines: {node: '>=12'} 1015 | cpu: [x64] 1016 | os: [netbsd] 1017 | requiresBuild: true 1018 | dev: true 1019 | optional: true 1020 | 1021 | /esbuild-openbsd-64/0.15.11: 1022 | resolution: {integrity: sha512-0bBo9SQR4t66Wd91LGMAqmWorzO0TTzVjYiifwoFtel8luFeXuPThQnEm5ztN4g0fnvcp7AnUPPzS/Depf17wQ==} 1023 | engines: {node: '>=12'} 1024 | cpu: [x64] 1025 | os: [openbsd] 1026 | requiresBuild: true 1027 | dev: true 1028 | optional: true 1029 | 1030 | /esbuild-sunos-64/0.15.11: 1031 | resolution: {integrity: sha512-EuBdTGlsMTjEl1sQnBX2jfygy7iR6CKfvOzi+gEOfhDqbHXsmY1dcpbVtcwHAg9/2yUZSfMJHMAgf1z8M4yyyw==} 1032 | engines: {node: '>=12'} 1033 | cpu: [x64] 1034 | os: [sunos] 1035 | requiresBuild: true 1036 | dev: true 1037 | optional: true 1038 | 1039 | /esbuild-windows-32/0.15.11: 1040 | resolution: {integrity: sha512-O0/Wo1Wk6dc0rZSxkvGpmTNIycEznHmkObTFz2VHBhjPsO4ZpCgfGxNkCpz4AdAIeMczpTXt/8d5vdJNKEGC+Q==} 1041 | engines: {node: '>=12'} 1042 | cpu: [ia32] 1043 | os: [win32] 1044 | requiresBuild: true 1045 | dev: true 1046 | optional: true 1047 | 1048 | /esbuild-windows-64/0.15.11: 1049 | resolution: {integrity: sha512-x977Q4HhNjnHx00b4XLAnTtj5vfbdEvkxaQwC1Zh5AN8g5EX+izgZ6e5QgqJgpzyRNJqh4hkgIJF1pyy1be0mQ==} 1050 | engines: {node: '>=12'} 1051 | cpu: [x64] 1052 | os: [win32] 1053 | requiresBuild: true 1054 | dev: true 1055 | optional: true 1056 | 1057 | /esbuild-windows-arm64/0.15.11: 1058 | resolution: {integrity: sha512-VwUHFACuBahrvntdcMKZteUZ9HaYrBRODoKe4tIWxguQRvvYoYb7iu5LrcRS/FQx8KPZNaa72zuqwVtHeXsITw==} 1059 | engines: {node: '>=12'} 1060 | cpu: [arm64] 1061 | os: [win32] 1062 | requiresBuild: true 1063 | dev: true 1064 | optional: true 1065 | 1066 | /esbuild/0.15.11: 1067 | resolution: {integrity: sha512-OgHGuhlfZ//mToxjte1D5iiiQgWfJ2GByVMwEC/IuoXsBGkuyK1+KrjYu0laSpnN/L1UmLUCv0s25vObdc1bVg==} 1068 | engines: {node: '>=12'} 1069 | hasBin: true 1070 | requiresBuild: true 1071 | optionalDependencies: 1072 | '@esbuild/android-arm': 0.15.11 1073 | '@esbuild/linux-loong64': 0.15.11 1074 | esbuild-android-64: 0.15.11 1075 | esbuild-android-arm64: 0.15.11 1076 | esbuild-darwin-64: 0.15.11 1077 | esbuild-darwin-arm64: 0.15.11 1078 | esbuild-freebsd-64: 0.15.11 1079 | esbuild-freebsd-arm64: 0.15.11 1080 | esbuild-linux-32: 0.15.11 1081 | esbuild-linux-64: 0.15.11 1082 | esbuild-linux-arm: 0.15.11 1083 | esbuild-linux-arm64: 0.15.11 1084 | esbuild-linux-mips64le: 0.15.11 1085 | esbuild-linux-ppc64le: 0.15.11 1086 | esbuild-linux-riscv64: 0.15.11 1087 | esbuild-linux-s390x: 0.15.11 1088 | esbuild-netbsd-64: 0.15.11 1089 | esbuild-openbsd-64: 0.15.11 1090 | esbuild-sunos-64: 0.15.11 1091 | esbuild-windows-32: 0.15.11 1092 | esbuild-windows-64: 0.15.11 1093 | esbuild-windows-arm64: 0.15.11 1094 | dev: true 1095 | 1096 | /escape-string-regexp/1.0.5: 1097 | resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} 1098 | engines: {node: '>=0.8.0'} 1099 | dev: true 1100 | 1101 | /escape-string-regexp/4.0.0: 1102 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 1103 | engines: {node: '>=10'} 1104 | dev: true 1105 | 1106 | /eslint-import-resolver-node/0.3.6: 1107 | resolution: {integrity: sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==} 1108 | dependencies: 1109 | debug: 3.2.7 1110 | resolve: 1.22.1 1111 | transitivePeerDependencies: 1112 | - supports-color 1113 | dev: true 1114 | 1115 | /eslint-module-utils/2.7.4_c3hlus4v72tewog5wytziddckm: 1116 | resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==} 1117 | engines: {node: '>=4'} 1118 | peerDependencies: 1119 | '@typescript-eslint/parser': '*' 1120 | eslint: '*' 1121 | eslint-import-resolver-node: '*' 1122 | eslint-import-resolver-typescript: '*' 1123 | eslint-import-resolver-webpack: '*' 1124 | peerDependenciesMeta: 1125 | '@typescript-eslint/parser': 1126 | optional: true 1127 | eslint: 1128 | optional: true 1129 | eslint-import-resolver-node: 1130 | optional: true 1131 | eslint-import-resolver-typescript: 1132 | optional: true 1133 | eslint-import-resolver-webpack: 1134 | optional: true 1135 | dependencies: 1136 | '@typescript-eslint/parser': 5.40.0_z4bbprzjrhnsfa24uvmcbu7f5q 1137 | debug: 3.2.7 1138 | eslint: 8.25.0 1139 | eslint-import-resolver-node: 0.3.6 1140 | transitivePeerDependencies: 1141 | - supports-color 1142 | dev: true 1143 | 1144 | /eslint-plugin-antfu/0.27.0_z4bbprzjrhnsfa24uvmcbu7f5q: 1145 | resolution: {integrity: sha512-xjNfATHonE3Do2igOlhwjfL2tlaGnm1EgbsLLkHgdk30oIvJU4bLNxF6wXIuaCdjqmwWIqF6smJbX2YhtaEC4w==} 1146 | dependencies: 1147 | '@typescript-eslint/utils': 5.40.0_z4bbprzjrhnsfa24uvmcbu7f5q 1148 | transitivePeerDependencies: 1149 | - eslint 1150 | - supports-color 1151 | - typescript 1152 | dev: true 1153 | 1154 | /eslint-plugin-es/4.1.0_eslint@8.25.0: 1155 | resolution: {integrity: sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==} 1156 | engines: {node: '>=8.10.0'} 1157 | peerDependencies: 1158 | eslint: '>=4.19.1' 1159 | dependencies: 1160 | eslint: 8.25.0 1161 | eslint-utils: 2.1.0 1162 | regexpp: 3.2.0 1163 | dev: true 1164 | 1165 | /eslint-plugin-eslint-comments/3.2.0_eslint@8.25.0: 1166 | resolution: {integrity: sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==} 1167 | engines: {node: '>=6.5.0'} 1168 | peerDependencies: 1169 | eslint: '>=4.19.1' 1170 | dependencies: 1171 | escape-string-regexp: 1.0.5 1172 | eslint: 8.25.0 1173 | ignore: 5.2.0 1174 | dev: true 1175 | 1176 | /eslint-plugin-html/7.1.0: 1177 | resolution: {integrity: sha512-fNLRraV/e6j8e3XYOC9xgND4j+U7b1Rq+OygMlLcMg+wI/IpVbF+ubQa3R78EjKB9njT6TQOlcK5rFKBVVtdfg==} 1178 | dependencies: 1179 | htmlparser2: 8.0.1 1180 | dev: true 1181 | 1182 | /eslint-plugin-import/2.26.0_zb5prbqp7qzcgafjm73dfpyyvm: 1183 | resolution: {integrity: sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==} 1184 | engines: {node: '>=4'} 1185 | peerDependencies: 1186 | '@typescript-eslint/parser': '*' 1187 | eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 1188 | peerDependenciesMeta: 1189 | '@typescript-eslint/parser': 1190 | optional: true 1191 | dependencies: 1192 | '@typescript-eslint/parser': 5.40.0_z4bbprzjrhnsfa24uvmcbu7f5q 1193 | array-includes: 3.1.5 1194 | array.prototype.flat: 1.3.0 1195 | debug: 2.6.9 1196 | doctrine: 2.1.0 1197 | eslint: 8.25.0 1198 | eslint-import-resolver-node: 0.3.6 1199 | eslint-module-utils: 2.7.4_c3hlus4v72tewog5wytziddckm 1200 | has: 1.0.3 1201 | is-core-module: 2.10.0 1202 | is-glob: 4.0.3 1203 | minimatch: 3.1.2 1204 | object.values: 1.1.5 1205 | resolve: 1.22.1 1206 | tsconfig-paths: 3.14.1 1207 | transitivePeerDependencies: 1208 | - eslint-import-resolver-typescript 1209 | - eslint-import-resolver-webpack 1210 | - supports-color 1211 | dev: true 1212 | 1213 | /eslint-plugin-jsonc/2.4.0_eslint@8.25.0: 1214 | resolution: {integrity: sha512-YXy5PjyUL9gFYal6pYijd8P6EmpeWskv7PVhB9Py/AwKPn+hwnQHcIzQILiLfxztfhtWiRIUSzoLe/JThZgSUw==} 1215 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1216 | peerDependencies: 1217 | eslint: '>=6.0.0' 1218 | dependencies: 1219 | eslint: 8.25.0 1220 | eslint-utils: 3.0.0_eslint@8.25.0 1221 | jsonc-eslint-parser: 2.1.0 1222 | natural-compare: 1.4.0 1223 | dev: true 1224 | 1225 | /eslint-plugin-markdown/3.0.0_eslint@8.25.0: 1226 | resolution: {integrity: sha512-hRs5RUJGbeHDLfS7ELanT0e29Ocyssf/7kBM+p7KluY5AwngGkDf8Oyu4658/NZSGTTq05FZeWbkxXtbVyHPwg==} 1227 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1228 | peerDependencies: 1229 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 1230 | dependencies: 1231 | eslint: 8.25.0 1232 | mdast-util-from-markdown: 0.8.5 1233 | transitivePeerDependencies: 1234 | - supports-color 1235 | dev: true 1236 | 1237 | /eslint-plugin-n/15.3.0_eslint@8.25.0: 1238 | resolution: {integrity: sha512-IyzPnEWHypCWasDpxeJnim60jhlumbmq0pubL6IOcnk8u2y53s5QfT8JnXy7skjHJ44yWHRb11PLtDHuu1kg/Q==} 1239 | engines: {node: '>=12.22.0'} 1240 | peerDependencies: 1241 | eslint: '>=7.0.0' 1242 | dependencies: 1243 | builtins: 5.0.1 1244 | eslint: 8.25.0 1245 | eslint-plugin-es: 4.1.0_eslint@8.25.0 1246 | eslint-utils: 3.0.0_eslint@8.25.0 1247 | ignore: 5.2.0 1248 | is-core-module: 2.10.0 1249 | minimatch: 3.1.2 1250 | resolve: 1.22.1 1251 | semver: 7.3.8 1252 | dev: true 1253 | 1254 | /eslint-plugin-promise/6.1.0_eslint@8.25.0: 1255 | resolution: {integrity: sha512-NYCfDZF/KHt27p06nFAttgWuFyIDSUMnNaJBIY1FY9GpBFhdT2vMG64HlFguSgcJeyM5by6Yr5csSOuJm60eXQ==} 1256 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1257 | peerDependencies: 1258 | eslint: ^7.0.0 || ^8.0.0 1259 | dependencies: 1260 | eslint: 8.25.0 1261 | dev: true 1262 | 1263 | /eslint-plugin-unicorn/43.0.2_eslint@8.25.0: 1264 | resolution: {integrity: sha512-DtqZ5mf/GMlfWoz1abIjq5jZfaFuHzGBZYIeuJfEoKKGWRHr2JiJR+ea+BF7Wx2N1PPRoT/2fwgiK1NnmNE3Hg==} 1265 | engines: {node: '>=14.18'} 1266 | peerDependencies: 1267 | eslint: '>=8.18.0' 1268 | dependencies: 1269 | '@babel/helper-validator-identifier': 7.19.1 1270 | ci-info: 3.5.0 1271 | clean-regexp: 1.0.0 1272 | eslint: 8.25.0 1273 | eslint-utils: 3.0.0_eslint@8.25.0 1274 | esquery: 1.4.0 1275 | indent-string: 4.0.0 1276 | is-builtin-module: 3.2.0 1277 | lodash: 4.17.21 1278 | pluralize: 8.0.0 1279 | read-pkg-up: 7.0.1 1280 | regexp-tree: 0.1.24 1281 | safe-regex: 2.1.1 1282 | semver: 7.3.8 1283 | strip-indent: 3.0.0 1284 | dev: true 1285 | 1286 | /eslint-plugin-vue/9.6.0_eslint@8.25.0: 1287 | resolution: {integrity: sha512-zzySkJgVbFCylnG2+9MDF7N+2Rjze2y0bF8GyUNpFOnT8mCMfqqtLDJkHBuYu9N/psW1A6DVbQhPkP92E+qakA==} 1288 | engines: {node: ^14.17.0 || >=16.0.0} 1289 | peerDependencies: 1290 | eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 1291 | dependencies: 1292 | eslint: 8.25.0 1293 | eslint-utils: 3.0.0_eslint@8.25.0 1294 | natural-compare: 1.4.0 1295 | nth-check: 2.1.1 1296 | postcss-selector-parser: 6.0.10 1297 | semver: 7.3.8 1298 | vue-eslint-parser: 9.1.0_eslint@8.25.0 1299 | xml-name-validator: 4.0.0 1300 | transitivePeerDependencies: 1301 | - supports-color 1302 | dev: true 1303 | 1304 | /eslint-plugin-yml/1.2.0_eslint@8.25.0: 1305 | resolution: {integrity: sha512-v0jAU/F5SJg28zkpxwGpY04eGZMWFP6os8u2qaEAIRjSH2GqrNl0yBR5+sMHLU/026kAduxVbvLSqmT3Mu3O0g==} 1306 | engines: {node: ^14.17.0 || >=16.0.0} 1307 | peerDependencies: 1308 | eslint: '>=6.0.0' 1309 | dependencies: 1310 | debug: 4.3.4 1311 | eslint: 8.25.0 1312 | lodash: 4.17.21 1313 | natural-compare: 1.4.0 1314 | yaml-eslint-parser: 1.1.0 1315 | transitivePeerDependencies: 1316 | - supports-color 1317 | dev: true 1318 | 1319 | /eslint-scope/5.1.1: 1320 | resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} 1321 | engines: {node: '>=8.0.0'} 1322 | dependencies: 1323 | esrecurse: 4.3.0 1324 | estraverse: 4.3.0 1325 | dev: true 1326 | 1327 | /eslint-scope/7.1.1: 1328 | resolution: {integrity: sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==} 1329 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1330 | dependencies: 1331 | esrecurse: 4.3.0 1332 | estraverse: 5.2.0 1333 | dev: true 1334 | 1335 | /eslint-utils/2.1.0: 1336 | resolution: {integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==} 1337 | engines: {node: '>=6'} 1338 | dependencies: 1339 | eslint-visitor-keys: 1.3.0 1340 | dev: true 1341 | 1342 | /eslint-utils/3.0.0_eslint@8.25.0: 1343 | resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} 1344 | engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} 1345 | peerDependencies: 1346 | eslint: '>=5' 1347 | dependencies: 1348 | eslint: 8.25.0 1349 | eslint-visitor-keys: 2.0.0 1350 | dev: true 1351 | 1352 | /eslint-visitor-keys/1.3.0: 1353 | resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==} 1354 | engines: {node: '>=4'} 1355 | dev: true 1356 | 1357 | /eslint-visitor-keys/2.0.0: 1358 | resolution: {integrity: sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==} 1359 | engines: {node: '>=10'} 1360 | dev: true 1361 | 1362 | /eslint-visitor-keys/3.3.0: 1363 | resolution: {integrity: sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==} 1364 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1365 | dev: true 1366 | 1367 | /eslint/8.25.0: 1368 | resolution: {integrity: sha512-DVlJOZ4Pn50zcKW5bYH7GQK/9MsoQG2d5eDH0ebEkE8PbgzTTmtt/VTH9GGJ4BfeZCpBLqFfvsjX35UacUL83A==} 1369 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1370 | hasBin: true 1371 | dependencies: 1372 | '@eslint/eslintrc': 1.3.3 1373 | '@humanwhocodes/config-array': 0.10.7 1374 | '@humanwhocodes/module-importer': 1.0.1 1375 | ajv: 6.12.6 1376 | chalk: 4.1.0 1377 | cross-spawn: 7.0.3 1378 | debug: 4.3.4 1379 | doctrine: 3.0.0 1380 | escape-string-regexp: 4.0.0 1381 | eslint-scope: 7.1.1 1382 | eslint-utils: 3.0.0_eslint@8.25.0 1383 | eslint-visitor-keys: 3.3.0 1384 | espree: 9.4.0 1385 | esquery: 1.4.0 1386 | esutils: 2.0.3 1387 | fast-deep-equal: 3.1.3 1388 | file-entry-cache: 6.0.1 1389 | find-up: 5.0.0 1390 | glob-parent: 6.0.2 1391 | globals: 13.17.0 1392 | globby: 11.1.0 1393 | grapheme-splitter: 1.0.4 1394 | ignore: 5.2.0 1395 | import-fresh: 3.3.0 1396 | imurmurhash: 0.1.4 1397 | is-glob: 4.0.3 1398 | js-sdsl: 4.1.5 1399 | js-yaml: 4.1.0 1400 | json-stable-stringify-without-jsonify: 1.0.1 1401 | levn: 0.4.1 1402 | lodash.merge: 4.6.2 1403 | minimatch: 3.1.2 1404 | natural-compare: 1.4.0 1405 | optionator: 0.9.1 1406 | regexpp: 3.2.0 1407 | strip-ansi: 6.0.1 1408 | strip-json-comments: 3.1.1 1409 | text-table: 0.2.0 1410 | transitivePeerDependencies: 1411 | - supports-color 1412 | dev: true 1413 | 1414 | /esno/0.16.3: 1415 | resolution: {integrity: sha512-6slSBEV1lMKcX13DBifvnDFpNno5WXhw4j/ff7RI0y51BZiDqEe5dNhhjhIQ3iCOQuzsm2MbVzmwqbN78BBhPg==} 1416 | hasBin: true 1417 | dependencies: 1418 | tsx: 3.10.1 1419 | dev: true 1420 | 1421 | /espree/9.4.0: 1422 | resolution: {integrity: sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==} 1423 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1424 | dependencies: 1425 | acorn: 8.8.0 1426 | acorn-jsx: 5.3.2_acorn@8.8.0 1427 | eslint-visitor-keys: 3.3.0 1428 | dev: true 1429 | 1430 | /esquery/1.4.0: 1431 | resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==} 1432 | engines: {node: '>=0.10'} 1433 | dependencies: 1434 | estraverse: 5.2.0 1435 | dev: true 1436 | 1437 | /esrecurse/4.3.0: 1438 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 1439 | engines: {node: '>=4.0'} 1440 | dependencies: 1441 | estraverse: 5.2.0 1442 | dev: true 1443 | 1444 | /estraverse/4.3.0: 1445 | resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} 1446 | engines: {node: '>=4.0'} 1447 | dev: true 1448 | 1449 | /estraverse/5.2.0: 1450 | resolution: {integrity: sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==} 1451 | engines: {node: '>=4.0'} 1452 | dev: true 1453 | 1454 | /estree-walker/2.0.2: 1455 | resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} 1456 | 1457 | /esutils/2.0.3: 1458 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 1459 | engines: {node: '>=0.10.0'} 1460 | dev: true 1461 | 1462 | /fast-deep-equal/3.1.3: 1463 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 1464 | dev: true 1465 | 1466 | /fast-glob/3.2.12: 1467 | resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} 1468 | engines: {node: '>=8.6.0'} 1469 | dependencies: 1470 | '@nodelib/fs.stat': 2.0.4 1471 | '@nodelib/fs.walk': 1.2.6 1472 | glob-parent: 5.1.2 1473 | merge2: 1.4.1 1474 | micromatch: 4.0.5 1475 | dev: true 1476 | 1477 | /fast-json-stable-stringify/2.1.0: 1478 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 1479 | dev: true 1480 | 1481 | /fast-levenshtein/2.0.6: 1482 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 1483 | dev: true 1484 | 1485 | /fastq/1.10.0: 1486 | resolution: {integrity: sha512-NL2Qc5L3iQEsyYzweq7qfgy5OtXCmGzGvhElGEd/SoFWEMOEczNh5s5ocaF01HDetxz+p8ecjNPA6cZxxIHmzA==} 1487 | dependencies: 1488 | reusify: 1.0.4 1489 | dev: true 1490 | 1491 | /file-entry-cache/6.0.1: 1492 | resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} 1493 | engines: {node: ^10.12.0 || >=12.0.0} 1494 | dependencies: 1495 | flat-cache: 3.0.4 1496 | dev: true 1497 | 1498 | /fill-range/7.0.1: 1499 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 1500 | engines: {node: '>=8'} 1501 | dependencies: 1502 | to-regex-range: 5.0.1 1503 | dev: true 1504 | 1505 | /find-up/4.1.0: 1506 | resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} 1507 | engines: {node: '>=8'} 1508 | dependencies: 1509 | locate-path: 5.0.0 1510 | path-exists: 4.0.0 1511 | dev: true 1512 | 1513 | /find-up/5.0.0: 1514 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 1515 | engines: {node: '>=10'} 1516 | dependencies: 1517 | locate-path: 6.0.0 1518 | path-exists: 4.0.0 1519 | dev: true 1520 | 1521 | /flat-cache/3.0.4: 1522 | resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} 1523 | engines: {node: ^10.12.0 || >=12.0.0} 1524 | dependencies: 1525 | flatted: 3.1.0 1526 | rimraf: 3.0.2 1527 | dev: true 1528 | 1529 | /flatted/3.1.0: 1530 | resolution: {integrity: sha512-tW+UkmtNg/jv9CSofAKvgVcO7c2URjhTdW1ZTkcAritblu8tajiYy7YisnIflEwtKssCtOxpnBRoCB7iap0/TA==} 1531 | dev: true 1532 | 1533 | /fs-extra/10.1.0: 1534 | resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} 1535 | engines: {node: '>=12'} 1536 | dependencies: 1537 | graceful-fs: 4.2.4 1538 | jsonfile: 6.1.0 1539 | universalify: 2.0.0 1540 | dev: true 1541 | 1542 | /fs.realpath/1.0.0: 1543 | resolution: {integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8=} 1544 | dev: true 1545 | 1546 | /fsevents/2.3.2: 1547 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} 1548 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1549 | os: [darwin] 1550 | requiresBuild: true 1551 | dev: true 1552 | optional: true 1553 | 1554 | /function-bind/1.1.1: 1555 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} 1556 | dev: true 1557 | 1558 | /function.prototype.name/1.1.5: 1559 | resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} 1560 | engines: {node: '>= 0.4'} 1561 | dependencies: 1562 | call-bind: 1.0.2 1563 | define-properties: 1.1.4 1564 | es-abstract: 1.20.4 1565 | functions-have-names: 1.2.3 1566 | dev: true 1567 | 1568 | /functions-have-names/1.2.3: 1569 | resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} 1570 | dev: true 1571 | 1572 | /get-func-name/2.0.0: 1573 | resolution: {integrity: sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==} 1574 | dev: true 1575 | 1576 | /get-intrinsic/1.1.3: 1577 | resolution: {integrity: sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==} 1578 | dependencies: 1579 | function-bind: 1.1.1 1580 | has: 1.0.3 1581 | has-symbols: 1.0.3 1582 | dev: true 1583 | 1584 | /get-symbol-description/1.0.0: 1585 | resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} 1586 | engines: {node: '>= 0.4'} 1587 | dependencies: 1588 | call-bind: 1.0.2 1589 | get-intrinsic: 1.1.3 1590 | dev: true 1591 | 1592 | /get-tsconfig/4.2.0: 1593 | resolution: {integrity: sha512-X8u8fREiYOE6S8hLbq99PeykTDoLVnxvF4DjWKJmz9xy2nNRdUcV8ZN9tniJFeKyTU3qnC9lL8n4Chd6LmVKHg==} 1594 | dev: true 1595 | 1596 | /glob-parent/5.1.2: 1597 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 1598 | engines: {node: '>= 6'} 1599 | dependencies: 1600 | is-glob: 4.0.3 1601 | dev: true 1602 | 1603 | /glob-parent/6.0.2: 1604 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 1605 | engines: {node: '>=10.13.0'} 1606 | dependencies: 1607 | is-glob: 4.0.3 1608 | dev: true 1609 | 1610 | /glob/7.1.6: 1611 | resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} 1612 | dependencies: 1613 | fs.realpath: 1.0.0 1614 | inflight: 1.0.6 1615 | inherits: 2.0.4 1616 | minimatch: 3.1.2 1617 | once: 1.4.0 1618 | path-is-absolute: 1.0.1 1619 | dev: true 1620 | 1621 | /globals/13.17.0: 1622 | resolution: {integrity: sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==} 1623 | engines: {node: '>=8'} 1624 | dependencies: 1625 | type-fest: 0.20.2 1626 | dev: true 1627 | 1628 | /globby/11.1.0: 1629 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} 1630 | engines: {node: '>=10'} 1631 | dependencies: 1632 | array-union: 2.1.0 1633 | dir-glob: 3.0.1 1634 | fast-glob: 3.2.12 1635 | ignore: 5.2.0 1636 | merge2: 1.4.1 1637 | slash: 3.0.0 1638 | dev: true 1639 | 1640 | /graceful-fs/4.2.10: 1641 | resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} 1642 | dev: true 1643 | optional: true 1644 | 1645 | /graceful-fs/4.2.4: 1646 | resolution: {integrity: sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==} 1647 | dev: true 1648 | 1649 | /grapheme-splitter/1.0.4: 1650 | resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} 1651 | dev: true 1652 | 1653 | /has-bigints/1.0.2: 1654 | resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} 1655 | dev: true 1656 | 1657 | /has-flag/3.0.0: 1658 | resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} 1659 | engines: {node: '>=4'} 1660 | dev: true 1661 | 1662 | /has-flag/4.0.0: 1663 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 1664 | engines: {node: '>=8'} 1665 | dev: true 1666 | 1667 | /has-property-descriptors/1.0.0: 1668 | resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} 1669 | dependencies: 1670 | get-intrinsic: 1.1.3 1671 | dev: true 1672 | 1673 | /has-symbols/1.0.3: 1674 | resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} 1675 | engines: {node: '>= 0.4'} 1676 | dev: true 1677 | 1678 | /has-tostringtag/1.0.0: 1679 | resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} 1680 | engines: {node: '>= 0.4'} 1681 | dependencies: 1682 | has-symbols: 1.0.3 1683 | dev: true 1684 | 1685 | /has/1.0.3: 1686 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} 1687 | engines: {node: '>= 0.4.0'} 1688 | dependencies: 1689 | function-bind: 1.1.1 1690 | dev: true 1691 | 1692 | /hosted-git-info/2.8.8: 1693 | resolution: {integrity: sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==} 1694 | dev: true 1695 | 1696 | /htmlparser2/8.0.1: 1697 | resolution: {integrity: sha512-4lVbmc1diZC7GUJQtRQ5yBAeUCL1exyMwmForWkRLnwyzWBFxN633SALPMGYaWZvKe9j1pRZJpauvmxENSp/EA==} 1698 | dependencies: 1699 | domelementtype: 2.3.0 1700 | domhandler: 5.0.3 1701 | domutils: 3.0.1 1702 | entities: 4.4.0 1703 | dev: true 1704 | 1705 | /ignore/5.2.0: 1706 | resolution: {integrity: sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==} 1707 | engines: {node: '>= 4'} 1708 | dev: true 1709 | 1710 | /import-fresh/3.3.0: 1711 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 1712 | engines: {node: '>=6'} 1713 | dependencies: 1714 | parent-module: 1.0.1 1715 | resolve-from: 4.0.0 1716 | dev: true 1717 | 1718 | /imurmurhash/0.1.4: 1719 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 1720 | engines: {node: '>=0.8.19'} 1721 | dev: true 1722 | 1723 | /indent-string/4.0.0: 1724 | resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} 1725 | engines: {node: '>=8'} 1726 | dev: true 1727 | 1728 | /inflight/1.0.6: 1729 | resolution: {integrity: sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=} 1730 | dependencies: 1731 | once: 1.4.0 1732 | wrappy: 1.0.2 1733 | dev: true 1734 | 1735 | /inherits/2.0.4: 1736 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 1737 | dev: true 1738 | 1739 | /internal-slot/1.0.3: 1740 | resolution: {integrity: sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==} 1741 | engines: {node: '>= 0.4'} 1742 | dependencies: 1743 | get-intrinsic: 1.1.3 1744 | has: 1.0.3 1745 | side-channel: 1.0.4 1746 | dev: true 1747 | 1748 | /is-alphabetical/1.0.4: 1749 | resolution: {integrity: sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==} 1750 | dev: true 1751 | 1752 | /is-alphanumerical/1.0.4: 1753 | resolution: {integrity: sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==} 1754 | dependencies: 1755 | is-alphabetical: 1.0.4 1756 | is-decimal: 1.0.4 1757 | dev: true 1758 | 1759 | /is-arrayish/0.2.1: 1760 | resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} 1761 | dev: true 1762 | 1763 | /is-bigint/1.0.4: 1764 | resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} 1765 | dependencies: 1766 | has-bigints: 1.0.2 1767 | dev: true 1768 | 1769 | /is-boolean-object/1.1.2: 1770 | resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} 1771 | engines: {node: '>= 0.4'} 1772 | dependencies: 1773 | call-bind: 1.0.2 1774 | has-tostringtag: 1.0.0 1775 | dev: true 1776 | 1777 | /is-builtin-module/3.2.0: 1778 | resolution: {integrity: sha512-phDA4oSGt7vl1n5tJvTWooWWAsXLY+2xCnxNqvKhGEzujg+A43wPlPOyDg3C8XQHN+6k/JTQWJ/j0dQh/qr+Hw==} 1779 | engines: {node: '>=6'} 1780 | dependencies: 1781 | builtin-modules: 3.3.0 1782 | dev: true 1783 | 1784 | /is-callable/1.2.7: 1785 | resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} 1786 | engines: {node: '>= 0.4'} 1787 | dev: true 1788 | 1789 | /is-core-module/2.10.0: 1790 | resolution: {integrity: sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==} 1791 | dependencies: 1792 | has: 1.0.3 1793 | dev: true 1794 | 1795 | /is-date-object/1.0.2: 1796 | resolution: {integrity: sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==} 1797 | engines: {node: '>= 0.4'} 1798 | dev: true 1799 | 1800 | /is-decimal/1.0.4: 1801 | resolution: {integrity: sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==} 1802 | dev: true 1803 | 1804 | /is-extglob/2.1.1: 1805 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 1806 | engines: {node: '>=0.10.0'} 1807 | dev: true 1808 | 1809 | /is-glob/4.0.3: 1810 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1811 | engines: {node: '>=0.10.0'} 1812 | dependencies: 1813 | is-extglob: 2.1.1 1814 | dev: true 1815 | 1816 | /is-hexadecimal/1.0.4: 1817 | resolution: {integrity: sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==} 1818 | dev: true 1819 | 1820 | /is-negative-zero/2.0.2: 1821 | resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} 1822 | engines: {node: '>= 0.4'} 1823 | dev: true 1824 | 1825 | /is-number-object/1.0.7: 1826 | resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} 1827 | engines: {node: '>= 0.4'} 1828 | dependencies: 1829 | has-tostringtag: 1.0.0 1830 | dev: true 1831 | 1832 | /is-number/7.0.0: 1833 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1834 | engines: {node: '>=0.12.0'} 1835 | dev: true 1836 | 1837 | /is-regex/1.1.4: 1838 | resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} 1839 | engines: {node: '>= 0.4'} 1840 | dependencies: 1841 | call-bind: 1.0.2 1842 | has-tostringtag: 1.0.0 1843 | dev: true 1844 | 1845 | /is-shared-array-buffer/1.0.2: 1846 | resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} 1847 | dependencies: 1848 | call-bind: 1.0.2 1849 | dev: true 1850 | 1851 | /is-string/1.0.7: 1852 | resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} 1853 | engines: {node: '>= 0.4'} 1854 | dependencies: 1855 | has-tostringtag: 1.0.0 1856 | dev: true 1857 | 1858 | /is-symbol/1.0.3: 1859 | resolution: {integrity: sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==} 1860 | engines: {node: '>= 0.4'} 1861 | dependencies: 1862 | has-symbols: 1.0.3 1863 | dev: true 1864 | 1865 | /is-weakref/1.0.2: 1866 | resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} 1867 | dependencies: 1868 | call-bind: 1.0.2 1869 | dev: true 1870 | 1871 | /isexe/2.0.0: 1872 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 1873 | dev: true 1874 | 1875 | /js-sdsl/4.1.5: 1876 | resolution: {integrity: sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q==} 1877 | dev: true 1878 | 1879 | /js-tokens/4.0.0: 1880 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 1881 | dev: true 1882 | 1883 | /js-yaml/4.1.0: 1884 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 1885 | hasBin: true 1886 | dependencies: 1887 | argparse: 2.0.1 1888 | dev: true 1889 | 1890 | /json-parse-even-better-errors/2.3.1: 1891 | resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} 1892 | dev: true 1893 | 1894 | /json-schema-traverse/0.4.1: 1895 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 1896 | dev: true 1897 | 1898 | /json-stable-stringify-without-jsonify/1.0.1: 1899 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 1900 | dev: true 1901 | 1902 | /json5/1.0.1: 1903 | resolution: {integrity: sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==} 1904 | hasBin: true 1905 | dependencies: 1906 | minimist: 1.2.7 1907 | dev: true 1908 | 1909 | /jsonc-eslint-parser/2.1.0: 1910 | resolution: {integrity: sha512-qCRJWlbP2v6HbmKW7R3lFbeiVWHo+oMJ0j+MizwvauqnCV/EvtAeEeuCgoc/ErtsuoKgYB8U4Ih8AxJbXoE6/g==} 1911 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1912 | dependencies: 1913 | acorn: 8.8.0 1914 | eslint-visitor-keys: 3.3.0 1915 | espree: 9.4.0 1916 | semver: 7.3.8 1917 | dev: true 1918 | 1919 | /jsonfile/6.1.0: 1920 | resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} 1921 | dependencies: 1922 | universalify: 2.0.0 1923 | optionalDependencies: 1924 | graceful-fs: 4.2.10 1925 | dev: true 1926 | 1927 | /levn/0.4.1: 1928 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 1929 | engines: {node: '>= 0.8.0'} 1930 | dependencies: 1931 | prelude-ls: 1.2.1 1932 | type-check: 0.4.0 1933 | dev: true 1934 | 1935 | /lines-and-columns/1.1.6: 1936 | resolution: {integrity: sha512-8ZmlJFVK9iCmtLz19HpSsR8HaAMWBT284VMNednLwlIMDP2hJDCIhUp0IZ2xUcZ+Ob6BM0VvCSJwzASDM45NLQ==} 1937 | dev: true 1938 | 1939 | /local-pkg/0.4.2: 1940 | resolution: {integrity: sha512-mlERgSPrbxU3BP4qBqAvvwlgW4MTg78iwJdGGnv7kibKjWcJksrG3t6LB5lXI93wXRDvG4NpUgJFmTG4T6rdrg==} 1941 | engines: {node: '>=14'} 1942 | dev: true 1943 | 1944 | /locate-path/5.0.0: 1945 | resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} 1946 | engines: {node: '>=8'} 1947 | dependencies: 1948 | p-locate: 4.1.0 1949 | dev: true 1950 | 1951 | /locate-path/6.0.0: 1952 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 1953 | engines: {node: '>=10'} 1954 | dependencies: 1955 | p-locate: 5.0.0 1956 | dev: true 1957 | 1958 | /lodash.merge/4.6.2: 1959 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 1960 | dev: true 1961 | 1962 | /lodash/4.17.21: 1963 | resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} 1964 | 1965 | /loupe/2.3.4: 1966 | resolution: {integrity: sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==} 1967 | dependencies: 1968 | get-func-name: 2.0.0 1969 | dev: true 1970 | 1971 | /lru-cache/6.0.0: 1972 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} 1973 | engines: {node: '>=10'} 1974 | dependencies: 1975 | yallist: 4.0.0 1976 | dev: true 1977 | 1978 | /magic-string/0.25.9: 1979 | resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} 1980 | dependencies: 1981 | sourcemap-codec: 1.4.8 1982 | 1983 | /mdast-util-from-markdown/0.8.5: 1984 | resolution: {integrity: sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==} 1985 | dependencies: 1986 | '@types/mdast': 3.0.10 1987 | mdast-util-to-string: 2.0.0 1988 | micromark: 2.11.4 1989 | parse-entities: 2.0.0 1990 | unist-util-stringify-position: 2.0.3 1991 | transitivePeerDependencies: 1992 | - supports-color 1993 | dev: true 1994 | 1995 | /mdast-util-to-string/2.0.0: 1996 | resolution: {integrity: sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==} 1997 | dev: true 1998 | 1999 | /merge2/1.4.1: 2000 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 2001 | engines: {node: '>= 8'} 2002 | dev: true 2003 | 2004 | /micromark/2.11.4: 2005 | resolution: {integrity: sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==} 2006 | dependencies: 2007 | debug: 4.3.4 2008 | parse-entities: 2.0.0 2009 | transitivePeerDependencies: 2010 | - supports-color 2011 | dev: true 2012 | 2013 | /micromatch/4.0.5: 2014 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} 2015 | engines: {node: '>=8.6'} 2016 | dependencies: 2017 | braces: 3.0.2 2018 | picomatch: 2.3.1 2019 | dev: true 2020 | 2021 | /min-indent/1.0.1: 2022 | resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} 2023 | engines: {node: '>=4'} 2024 | dev: true 2025 | 2026 | /minimatch/3.1.2: 2027 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 2028 | dependencies: 2029 | brace-expansion: 1.1.11 2030 | dev: true 2031 | 2032 | /minimist/1.2.7: 2033 | resolution: {integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==} 2034 | dev: true 2035 | 2036 | /ms/2.0.0: 2037 | resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} 2038 | dev: true 2039 | 2040 | /ms/2.1.2: 2041 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 2042 | dev: true 2043 | 2044 | /nanoid/3.3.4: 2045 | resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} 2046 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 2047 | hasBin: true 2048 | 2049 | /natural-compare/1.4.0: 2050 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 2051 | dev: true 2052 | 2053 | /normalize-package-data/2.5.0: 2054 | resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} 2055 | dependencies: 2056 | hosted-git-info: 2.8.8 2057 | resolve: 1.22.1 2058 | semver: 5.7.1 2059 | validate-npm-package-license: 3.0.4 2060 | dev: true 2061 | 2062 | /nth-check/2.1.1: 2063 | resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} 2064 | dependencies: 2065 | boolbase: 1.0.0 2066 | dev: true 2067 | 2068 | /object-inspect/1.12.2: 2069 | resolution: {integrity: sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==} 2070 | dev: true 2071 | 2072 | /object-keys/1.1.1: 2073 | resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} 2074 | engines: {node: '>= 0.4'} 2075 | dev: true 2076 | 2077 | /object.assign/4.1.4: 2078 | resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} 2079 | engines: {node: '>= 0.4'} 2080 | dependencies: 2081 | call-bind: 1.0.2 2082 | define-properties: 1.1.4 2083 | has-symbols: 1.0.3 2084 | object-keys: 1.1.1 2085 | dev: true 2086 | 2087 | /object.values/1.1.5: 2088 | resolution: {integrity: sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==} 2089 | engines: {node: '>= 0.4'} 2090 | dependencies: 2091 | call-bind: 1.0.2 2092 | define-properties: 1.1.4 2093 | es-abstract: 1.20.4 2094 | dev: true 2095 | 2096 | /once/1.4.0: 2097 | resolution: {integrity: sha1-WDsap3WWHUsROsF9nFC6753Xa9E=} 2098 | dependencies: 2099 | wrappy: 1.0.2 2100 | dev: true 2101 | 2102 | /optionator/0.9.1: 2103 | resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} 2104 | engines: {node: '>= 0.8.0'} 2105 | dependencies: 2106 | deep-is: 0.1.3 2107 | fast-levenshtein: 2.0.6 2108 | levn: 0.4.1 2109 | prelude-ls: 1.2.1 2110 | type-check: 0.4.0 2111 | word-wrap: 1.2.3 2112 | dev: true 2113 | 2114 | /p-limit/2.3.0: 2115 | resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} 2116 | engines: {node: '>=6'} 2117 | dependencies: 2118 | p-try: 2.2.0 2119 | dev: true 2120 | 2121 | /p-limit/3.1.0: 2122 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 2123 | engines: {node: '>=10'} 2124 | dependencies: 2125 | yocto-queue: 0.1.0 2126 | dev: true 2127 | 2128 | /p-locate/4.1.0: 2129 | resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} 2130 | engines: {node: '>=8'} 2131 | dependencies: 2132 | p-limit: 2.3.0 2133 | dev: true 2134 | 2135 | /p-locate/5.0.0: 2136 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 2137 | engines: {node: '>=10'} 2138 | dependencies: 2139 | p-limit: 3.1.0 2140 | dev: true 2141 | 2142 | /p-try/2.2.0: 2143 | resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} 2144 | engines: {node: '>=6'} 2145 | dev: true 2146 | 2147 | /parent-module/1.0.1: 2148 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 2149 | engines: {node: '>=6'} 2150 | dependencies: 2151 | callsites: 3.1.0 2152 | dev: true 2153 | 2154 | /parse-entities/2.0.0: 2155 | resolution: {integrity: sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==} 2156 | dependencies: 2157 | character-entities: 1.2.4 2158 | character-entities-legacy: 1.1.4 2159 | character-reference-invalid: 1.1.4 2160 | is-alphanumerical: 1.0.4 2161 | is-decimal: 1.0.4 2162 | is-hexadecimal: 1.0.4 2163 | dev: true 2164 | 2165 | /parse-json/5.1.0: 2166 | resolution: {integrity: sha512-+mi/lmVVNKFNVyLXV31ERiy2CY5E1/F6QtJFEzoChPRwwngMNXRDQ9GJ5WdE2Z2P4AujsOi0/+2qHID68KwfIQ==} 2167 | engines: {node: '>=8'} 2168 | dependencies: 2169 | '@babel/code-frame': 7.18.6 2170 | error-ex: 1.3.2 2171 | json-parse-even-better-errors: 2.3.1 2172 | lines-and-columns: 1.1.6 2173 | dev: true 2174 | 2175 | /path-exists/4.0.0: 2176 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 2177 | engines: {node: '>=8'} 2178 | dev: true 2179 | 2180 | /path-is-absolute/1.0.1: 2181 | resolution: {integrity: sha1-F0uSaHNVNP+8es5r9TpanhtcX18=} 2182 | engines: {node: '>=0.10.0'} 2183 | dev: true 2184 | 2185 | /path-key/3.1.1: 2186 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 2187 | engines: {node: '>=8'} 2188 | dev: true 2189 | 2190 | /path-parse/1.0.7: 2191 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 2192 | dev: true 2193 | 2194 | /path-type/4.0.0: 2195 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} 2196 | engines: {node: '>=8'} 2197 | dev: true 2198 | 2199 | /pathval/1.1.1: 2200 | resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} 2201 | dev: true 2202 | 2203 | /picocolors/1.0.0: 2204 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 2205 | 2206 | /picomatch/2.3.1: 2207 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 2208 | engines: {node: '>=8.6'} 2209 | dev: true 2210 | 2211 | /pluralize/8.0.0: 2212 | resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} 2213 | engines: {node: '>=4'} 2214 | dev: true 2215 | 2216 | /postcss-selector-parser/6.0.10: 2217 | resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==} 2218 | engines: {node: '>=4'} 2219 | dependencies: 2220 | cssesc: 3.0.0 2221 | util-deprecate: 1.0.2 2222 | dev: true 2223 | 2224 | /postcss/8.4.18: 2225 | resolution: {integrity: sha512-Wi8mWhncLJm11GATDaQKobXSNEYGUHeQLiQqDFG1qQ5UTDPTEvKw0Xt5NsTpktGTwLps3ByrWsBrG0rB8YQ9oA==} 2226 | engines: {node: ^10 || ^12 || >=14} 2227 | dependencies: 2228 | nanoid: 3.3.4 2229 | picocolors: 1.0.0 2230 | source-map-js: 1.0.2 2231 | 2232 | /prelude-ls/1.2.1: 2233 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 2234 | engines: {node: '>= 0.8.0'} 2235 | dev: true 2236 | 2237 | /punycode/2.1.1: 2238 | resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} 2239 | engines: {node: '>=6'} 2240 | dev: true 2241 | 2242 | /read-pkg-up/7.0.1: 2243 | resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} 2244 | engines: {node: '>=8'} 2245 | dependencies: 2246 | find-up: 4.1.0 2247 | read-pkg: 5.2.0 2248 | type-fest: 0.8.1 2249 | dev: true 2250 | 2251 | /read-pkg/5.2.0: 2252 | resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} 2253 | engines: {node: '>=8'} 2254 | dependencies: 2255 | '@types/normalize-package-data': 2.4.0 2256 | normalize-package-data: 2.5.0 2257 | parse-json: 5.1.0 2258 | type-fest: 0.6.0 2259 | dev: true 2260 | 2261 | /regexp-tree/0.1.24: 2262 | resolution: {integrity: sha512-s2aEVuLhvnVJW6s/iPgEGK6R+/xngd2jNQ+xy4bXNDKxZKJH6jpPHY6kVeVv1IeLCHgswRj+Kl3ELaDjG6V1iw==} 2263 | hasBin: true 2264 | dev: true 2265 | 2266 | /regexp.prototype.flags/1.4.3: 2267 | resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==} 2268 | engines: {node: '>= 0.4'} 2269 | dependencies: 2270 | call-bind: 1.0.2 2271 | define-properties: 1.1.4 2272 | functions-have-names: 1.2.3 2273 | dev: true 2274 | 2275 | /regexpp/3.2.0: 2276 | resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} 2277 | engines: {node: '>=8'} 2278 | dev: true 2279 | 2280 | /resolve-from/4.0.0: 2281 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 2282 | engines: {node: '>=4'} 2283 | dev: true 2284 | 2285 | /resolve/1.22.1: 2286 | resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} 2287 | hasBin: true 2288 | dependencies: 2289 | is-core-module: 2.10.0 2290 | path-parse: 1.0.7 2291 | supports-preserve-symlinks-flag: 1.0.0 2292 | dev: true 2293 | 2294 | /reusify/1.0.4: 2295 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 2296 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 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.6 2304 | dev: true 2305 | 2306 | /rollup/2.78.1: 2307 | resolution: {integrity: sha512-VeeCgtGi4P+o9hIg+xz4qQpRl6R401LWEXBmxYKOV4zlF82lyhgh2hTZnheFUbANE8l2A41F458iwj2vEYaXJg==} 2308 | engines: {node: '>=10.0.0'} 2309 | hasBin: true 2310 | optionalDependencies: 2311 | fsevents: 2.3.2 2312 | dev: true 2313 | 2314 | /run-parallel/1.1.10: 2315 | resolution: {integrity: sha512-zb/1OuZ6flOlH6tQyMPUrE3x3Ulxjlo9WIVXR4yVYi4H9UXQaeIsPbLn2R3O3vQCnDKkAl2qHiuocKKX4Tz/Sw==} 2316 | dev: true 2317 | 2318 | /safe-regex-test/1.0.0: 2319 | resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} 2320 | dependencies: 2321 | call-bind: 1.0.2 2322 | get-intrinsic: 1.1.3 2323 | is-regex: 1.1.4 2324 | dev: true 2325 | 2326 | /safe-regex/2.1.1: 2327 | resolution: {integrity: sha512-rx+x8AMzKb5Q5lQ95Zoi6ZbJqwCLkqi3XuJXp5P3rT8OEc6sZCJG5AE5dU3lsgRr/F4Bs31jSlVN+j5KrsGu9A==} 2328 | dependencies: 2329 | regexp-tree: 0.1.24 2330 | dev: true 2331 | 2332 | /semver/5.7.1: 2333 | resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} 2334 | hasBin: true 2335 | dev: true 2336 | 2337 | /semver/7.3.8: 2338 | resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==} 2339 | engines: {node: '>=10'} 2340 | hasBin: true 2341 | dependencies: 2342 | lru-cache: 6.0.0 2343 | dev: true 2344 | 2345 | /shebang-command/2.0.0: 2346 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 2347 | engines: {node: '>=8'} 2348 | dependencies: 2349 | shebang-regex: 3.0.0 2350 | dev: true 2351 | 2352 | /shebang-regex/3.0.0: 2353 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 2354 | engines: {node: '>=8'} 2355 | dev: true 2356 | 2357 | /side-channel/1.0.4: 2358 | resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} 2359 | dependencies: 2360 | call-bind: 1.0.2 2361 | get-intrinsic: 1.1.3 2362 | object-inspect: 1.12.2 2363 | dev: true 2364 | 2365 | /slash/3.0.0: 2366 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 2367 | engines: {node: '>=8'} 2368 | dev: true 2369 | 2370 | /source-map-js/1.0.2: 2371 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} 2372 | engines: {node: '>=0.10.0'} 2373 | 2374 | /source-map-support/0.5.21: 2375 | resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} 2376 | dependencies: 2377 | buffer-from: 1.1.1 2378 | source-map: 0.6.1 2379 | dev: true 2380 | 2381 | /source-map/0.6.1: 2382 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} 2383 | engines: {node: '>=0.10.0'} 2384 | 2385 | /sourcemap-codec/1.4.8: 2386 | resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} 2387 | 2388 | /spdx-correct/3.1.1: 2389 | resolution: {integrity: sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==} 2390 | dependencies: 2391 | spdx-expression-parse: 3.0.1 2392 | spdx-license-ids: 3.0.7 2393 | dev: true 2394 | 2395 | /spdx-exceptions/2.3.0: 2396 | resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} 2397 | dev: true 2398 | 2399 | /spdx-expression-parse/3.0.1: 2400 | resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} 2401 | dependencies: 2402 | spdx-exceptions: 2.3.0 2403 | spdx-license-ids: 3.0.7 2404 | dev: true 2405 | 2406 | /spdx-license-ids/3.0.7: 2407 | resolution: {integrity: sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==} 2408 | dev: true 2409 | 2410 | /string.prototype.trimend/1.0.5: 2411 | resolution: {integrity: sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==} 2412 | dependencies: 2413 | call-bind: 1.0.2 2414 | define-properties: 1.1.4 2415 | es-abstract: 1.20.4 2416 | dev: true 2417 | 2418 | /string.prototype.trimstart/1.0.5: 2419 | resolution: {integrity: sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==} 2420 | dependencies: 2421 | call-bind: 1.0.2 2422 | define-properties: 1.1.4 2423 | es-abstract: 1.20.4 2424 | dev: true 2425 | 2426 | /strip-ansi/6.0.1: 2427 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 2428 | engines: {node: '>=8'} 2429 | dependencies: 2430 | ansi-regex: 5.0.1 2431 | dev: true 2432 | 2433 | /strip-bom/3.0.0: 2434 | resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} 2435 | engines: {node: '>=4'} 2436 | dev: true 2437 | 2438 | /strip-indent/3.0.0: 2439 | resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} 2440 | engines: {node: '>=8'} 2441 | dependencies: 2442 | min-indent: 1.0.1 2443 | dev: true 2444 | 2445 | /strip-json-comments/3.1.1: 2446 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 2447 | engines: {node: '>=8'} 2448 | dev: true 2449 | 2450 | /strip-literal/0.4.2: 2451 | resolution: {integrity: sha512-pv48ybn4iE1O9RLgCAN0iU4Xv7RlBTiit6DKmMiErbs9x1wH6vXBs45tWc0H5wUIF6TLTrKweqkmYF/iraQKNw==} 2452 | dependencies: 2453 | acorn: 8.8.0 2454 | dev: true 2455 | 2456 | /supports-color/5.5.0: 2457 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} 2458 | engines: {node: '>=4'} 2459 | dependencies: 2460 | has-flag: 3.0.0 2461 | dev: true 2462 | 2463 | /supports-color/7.2.0: 2464 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 2465 | engines: {node: '>=8'} 2466 | dependencies: 2467 | has-flag: 4.0.0 2468 | dev: true 2469 | 2470 | /supports-preserve-symlinks-flag/1.0.0: 2471 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 2472 | engines: {node: '>= 0.4'} 2473 | dev: true 2474 | 2475 | /text-table/0.2.0: 2476 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} 2477 | dev: true 2478 | 2479 | /tinybench/2.3.0: 2480 | resolution: {integrity: sha512-zs1gMVBwyyG2QbVchYIbnabRhMOCGvrwZz/q+SV+LIMa9q5YDQZi2kkI6ZRqV2Bz7ba1uvrc7ieUoE4KWnGeKg==} 2481 | dev: true 2482 | 2483 | /tinypool/0.3.0: 2484 | resolution: {integrity: sha512-NX5KeqHOBZU6Bc0xj9Vr5Szbb1j8tUHIeD18s41aDJaPeC5QTdEhK0SpdpUrZlj2nv5cctNcSjaKNanXlfcVEQ==} 2485 | engines: {node: '>=14.0.0'} 2486 | dev: true 2487 | 2488 | /tinyspy/1.0.2: 2489 | resolution: {integrity: sha512-bSGlgwLBYf7PnUsQ6WOc6SJ3pGOcd+d8AA6EUnLDDM0kWEstC1JIlSZA3UNliDXhd9ABoS7hiRBDCu+XP/sf1Q==} 2490 | engines: {node: '>=14.0.0'} 2491 | dev: true 2492 | 2493 | /to-fast-properties/2.0.0: 2494 | resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} 2495 | engines: {node: '>=4'} 2496 | 2497 | /to-regex-range/5.0.1: 2498 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 2499 | engines: {node: '>=8.0'} 2500 | dependencies: 2501 | is-number: 7.0.0 2502 | dev: true 2503 | 2504 | /tsconfig-paths/3.14.1: 2505 | resolution: {integrity: sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==} 2506 | dependencies: 2507 | '@types/json5': 0.0.29 2508 | json5: 1.0.1 2509 | minimist: 1.2.7 2510 | strip-bom: 3.0.0 2511 | dev: true 2512 | 2513 | /tslib/1.14.1: 2514 | resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} 2515 | dev: true 2516 | 2517 | /tsutils/3.21.0_typescript@4.8.4: 2518 | resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} 2519 | engines: {node: '>= 6'} 2520 | peerDependencies: 2521 | typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' 2522 | dependencies: 2523 | tslib: 1.14.1 2524 | typescript: 4.8.4 2525 | dev: true 2526 | 2527 | /tsx/3.10.1: 2528 | resolution: {integrity: sha512-Gh6xoW4xrdnLs6hYZydVHIQtrgmbZ/DbnJoLsYoI8MxhKAIyu8R7RyF0D5qg9UKi74Nmr4iSlijdz7Q43IGLyQ==} 2529 | hasBin: true 2530 | dependencies: 2531 | '@esbuild-kit/cjs-loader': 2.4.0 2532 | '@esbuild-kit/core-utils': 3.0.0 2533 | '@esbuild-kit/esm-loader': 2.5.0 2534 | optionalDependencies: 2535 | fsevents: 2.3.2 2536 | dev: true 2537 | 2538 | /type-check/0.4.0: 2539 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 2540 | engines: {node: '>= 0.8.0'} 2541 | dependencies: 2542 | prelude-ls: 1.2.1 2543 | dev: true 2544 | 2545 | /type-detect/4.0.8: 2546 | resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} 2547 | engines: {node: '>=4'} 2548 | dev: true 2549 | 2550 | /type-fest/0.20.2: 2551 | resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} 2552 | engines: {node: '>=10'} 2553 | dev: true 2554 | 2555 | /type-fest/0.6.0: 2556 | resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} 2557 | engines: {node: '>=8'} 2558 | dev: true 2559 | 2560 | /type-fest/0.8.1: 2561 | resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} 2562 | engines: {node: '>=8'} 2563 | dev: true 2564 | 2565 | /typescript/4.8.4: 2566 | resolution: {integrity: sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==} 2567 | engines: {node: '>=4.2.0'} 2568 | hasBin: true 2569 | dev: true 2570 | 2571 | /unbox-primitive/1.0.2: 2572 | resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} 2573 | dependencies: 2574 | call-bind: 1.0.2 2575 | has-bigints: 1.0.2 2576 | has-symbols: 1.0.3 2577 | which-boxed-primitive: 1.0.2 2578 | dev: true 2579 | 2580 | /unist-util-stringify-position/2.0.3: 2581 | resolution: {integrity: sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==} 2582 | dependencies: 2583 | '@types/unist': 2.0.6 2584 | dev: true 2585 | 2586 | /universalify/2.0.0: 2587 | resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} 2588 | engines: {node: '>= 10.0.0'} 2589 | dev: true 2590 | 2591 | /uri-js/4.4.0: 2592 | resolution: {integrity: sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==} 2593 | dependencies: 2594 | punycode: 2.1.1 2595 | dev: true 2596 | 2597 | /util-deprecate/1.0.2: 2598 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 2599 | dev: true 2600 | 2601 | /validate-npm-package-license/3.0.4: 2602 | resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} 2603 | dependencies: 2604 | spdx-correct: 3.1.1 2605 | spdx-expression-parse: 3.0.1 2606 | dev: true 2607 | 2608 | /vite/3.1.8: 2609 | resolution: {integrity: sha512-m7jJe3nufUbuOfotkntGFupinL/fmuTNuQmiVE7cH2IZMuf4UbfbGYMUT3jVWgGYuRVLY9j8NnrRqgw5rr5QTg==} 2610 | engines: {node: ^14.18.0 || >=16.0.0} 2611 | hasBin: true 2612 | peerDependencies: 2613 | less: '*' 2614 | sass: '*' 2615 | stylus: '*' 2616 | terser: ^5.4.0 2617 | peerDependenciesMeta: 2618 | less: 2619 | optional: true 2620 | sass: 2621 | optional: true 2622 | stylus: 2623 | optional: true 2624 | terser: 2625 | optional: true 2626 | dependencies: 2627 | esbuild: 0.15.11 2628 | postcss: 8.4.18 2629 | resolve: 1.22.1 2630 | rollup: 2.78.1 2631 | optionalDependencies: 2632 | fsevents: 2.3.2 2633 | dev: true 2634 | 2635 | /vitest/0.24.3: 2636 | resolution: {integrity: sha512-aM0auuPPgMSstWvr851hB74g/LKaKBzSxcG3da7ejfZbx08Y21JpZmbmDYrMTCGhVZKqTGwzcnLMwyfz2WzkhQ==} 2637 | engines: {node: '>=v14.16.0'} 2638 | hasBin: true 2639 | peerDependencies: 2640 | '@edge-runtime/vm': '*' 2641 | '@vitest/browser': '*' 2642 | '@vitest/ui': '*' 2643 | happy-dom: '*' 2644 | jsdom: '*' 2645 | peerDependenciesMeta: 2646 | '@edge-runtime/vm': 2647 | optional: true 2648 | '@vitest/browser': 2649 | optional: true 2650 | '@vitest/ui': 2651 | optional: true 2652 | happy-dom: 2653 | optional: true 2654 | jsdom: 2655 | optional: true 2656 | dependencies: 2657 | '@types/chai': 4.3.3 2658 | '@types/chai-subset': 1.3.3 2659 | '@types/node': 18.11.0 2660 | chai: 4.3.6 2661 | debug: 4.3.4 2662 | local-pkg: 0.4.2 2663 | strip-literal: 0.4.2 2664 | tinybench: 2.3.0 2665 | tinypool: 0.3.0 2666 | tinyspy: 1.0.2 2667 | vite: 3.1.8 2668 | transitivePeerDependencies: 2669 | - less 2670 | - sass 2671 | - stylus 2672 | - supports-color 2673 | - terser 2674 | dev: true 2675 | 2676 | /vue-demi/0.13.11_vue@3.2.41: 2677 | resolution: {integrity: sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==} 2678 | engines: {node: '>=12'} 2679 | hasBin: true 2680 | requiresBuild: true 2681 | peerDependencies: 2682 | '@vue/composition-api': ^1.0.0-rc.1 2683 | vue: ^3.0.0-0 || ^2.6.0 2684 | peerDependenciesMeta: 2685 | '@vue/composition-api': 2686 | optional: true 2687 | dependencies: 2688 | vue: 3.2.41 2689 | dev: false 2690 | 2691 | /vue-eslint-parser/9.1.0_eslint@8.25.0: 2692 | resolution: {integrity: sha512-NGn/iQy8/Wb7RrRa4aRkokyCZfOUWk19OP5HP6JEozQFX5AoS/t+Z0ZN7FY4LlmWc4FNI922V7cvX28zctN8dQ==} 2693 | engines: {node: ^14.17.0 || >=16.0.0} 2694 | peerDependencies: 2695 | eslint: '>=6.0.0' 2696 | dependencies: 2697 | debug: 4.3.4 2698 | eslint: 8.25.0 2699 | eslint-scope: 7.1.1 2700 | eslint-visitor-keys: 3.3.0 2701 | espree: 9.4.0 2702 | esquery: 1.4.0 2703 | lodash: 4.17.21 2704 | semver: 7.3.8 2705 | transitivePeerDependencies: 2706 | - supports-color 2707 | dev: true 2708 | 2709 | /vue/3.2.41: 2710 | resolution: {integrity: sha512-uuuvnrDXEeZ9VUPljgHkqB5IaVO8SxhPpqF2eWOukVrBnRBx2THPSGQBnVRt0GrIG1gvCmFXMGbd7FqcT1ixNQ==} 2711 | dependencies: 2712 | '@vue/compiler-dom': 3.2.41 2713 | '@vue/compiler-sfc': 3.2.41 2714 | '@vue/runtime-dom': 3.2.41 2715 | '@vue/server-renderer': 3.2.41_vue@3.2.41 2716 | '@vue/shared': 3.2.41 2717 | 2718 | /which-boxed-primitive/1.0.2: 2719 | resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} 2720 | dependencies: 2721 | is-bigint: 1.0.4 2722 | is-boolean-object: 1.1.2 2723 | is-number-object: 1.0.7 2724 | is-string: 1.0.7 2725 | is-symbol: 1.0.3 2726 | dev: true 2727 | 2728 | /which/2.0.2: 2729 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 2730 | engines: {node: '>= 8'} 2731 | hasBin: true 2732 | dependencies: 2733 | isexe: 2.0.0 2734 | dev: true 2735 | 2736 | /word-wrap/1.2.3: 2737 | resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} 2738 | engines: {node: '>=0.10.0'} 2739 | dev: true 2740 | 2741 | /wrappy/1.0.2: 2742 | resolution: {integrity: sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=} 2743 | dev: true 2744 | 2745 | /xml-name-validator/4.0.0: 2746 | resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} 2747 | engines: {node: '>=12'} 2748 | dev: true 2749 | 2750 | /yallist/4.0.0: 2751 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} 2752 | dev: true 2753 | 2754 | /yaml-eslint-parser/1.1.0: 2755 | resolution: {integrity: sha512-b464Q1fYiX1oYx2kE8k4mEp6S9Prk+tfDsY/IPxQ0FCjEuj3AKko5Skf3/yQJeYTTDyjDE+aWIJemnv29HvEWQ==} 2756 | engines: {node: ^14.17.0 || >=16.0.0} 2757 | dependencies: 2758 | eslint-visitor-keys: 3.3.0 2759 | lodash: 4.17.21 2760 | yaml: 2.1.3 2761 | dev: true 2762 | 2763 | /yaml/2.1.3: 2764 | resolution: {integrity: sha512-AacA8nRULjKMX2DvWvOAdBZMOfQlypSFkjcOcu9FalllIDJ1kvlREzcdIZmidQUqqeMv7jorHjq2HlLv/+c2lg==} 2765 | engines: {node: '>= 14'} 2766 | dev: true 2767 | 2768 | /yocto-queue/0.1.0: 2769 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 2770 | engines: {node: '>=10'} 2771 | dev: true 2772 | -------------------------------------------------------------------------------- /res/hero.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vueuse/vue-chemistry/f62861e098e907541e6e52a39aa8d82ec73bd82f/res/hero.png -------------------------------------------------------------------------------- /res/reactivity-spreadsheet.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vueuse/vue-chemistry/f62861e098e907541e6e52a39aa8d82ec73bd82f/res/reactivity-spreadsheet.gif -------------------------------------------------------------------------------- /scripts/build.ts: -------------------------------------------------------------------------------- 1 | import { execSync } from 'child_process' 2 | import { dirname } from 'path' 3 | import fg from 'fast-glob' 4 | import fs from 'fs-extra' 5 | 6 | execSync('npx rimraf dist', { stdio: 'inherit' }) 7 | console.log('Build ESM...') 8 | execSync('npx tsc --outDir dist/esm', { stdio: 'inherit' }) 9 | console.log('Build CJS...') 10 | execSync('npx tsc --module commonjs --outDir dist/cjs', { stdio: 'inherit' }) 11 | 12 | console.log('Copying...') 13 | fg.sync('dist/esm/**/*.d.ts') 14 | .forEach((i) => { 15 | const target = i.replace('/esm/', '/') 16 | fs.ensureDirSync(dirname(target)) 17 | fs.copySync(i, target) 18 | }) 19 | 20 | fs.copySync('package.json', 'dist/package.json') 21 | fs.copySync('README.md', 'dist/README.md') 22 | fs.copySync('LICENSE', 'dist/LICENSE') 23 | 24 | console.log('Done.') 25 | -------------------------------------------------------------------------------- /scripts/generate.ts: -------------------------------------------------------------------------------- 1 | import fs from 'fs-extra' 2 | 3 | async function generateMath() { 4 | const ignorelist = [ 5 | 'random', 6 | ] 7 | 8 | const rename = { 9 | log: 'logE', 10 | } 11 | 12 | const lines = [ 13 | 'import { reactify } from \'@vueuse/shared\'', 14 | '', 15 | ] 16 | 17 | Object.getOwnPropertyNames(Math) 18 | .filter(key => !ignorelist.includes(key)) 19 | .forEach((key) => { 20 | // @ts-expect-error cast 21 | const value = Math[key] 22 | if (typeof value === 'function') { 23 | lines.push('/*@__PURE__*/') 24 | // @ts-expect-error cast 25 | lines.push(`export const ${rename[key] || key} = reactify(Math.${key})`) 26 | } 27 | }) 28 | 29 | lines.push('') 30 | 31 | await fs.writeFile('src/math/generated.ts', lines.join('\n'), 'utf-8') 32 | } 33 | 34 | async function generateString() { 35 | const ignorelist: string[] = [ 36 | 'toString', 37 | 'constructor', 38 | 'valueOf', 39 | ] 40 | 41 | const lines = [ 42 | 'import { reactifyString } from \'../utils\'', 43 | '', 44 | 'const __proto = String.prototype', 45 | '', 46 | ] 47 | 48 | Object.getOwnPropertyNames(String.prototype) 49 | .filter(key => !ignorelist.includes(key)) 50 | .forEach((key) => { 51 | // @ts-expect-error cast 52 | const value = String.prototype[key] 53 | if (typeof value === 'function') { 54 | lines.push('/*@__PURE__*/') 55 | lines.push(`export const ${key} = reactifyString(__proto.${key})`) 56 | } 57 | }) 58 | 59 | lines.push('') 60 | 61 | await fs.writeFile('src/string/generated.ts', lines.join('\n'), 'utf-8') 62 | } 63 | 64 | async function generateNumber() { 65 | const ignorelist: string[] = [ 66 | 'toString', 67 | 'constructor', 68 | 'valueOf', 69 | ] 70 | 71 | const lines = [ 72 | 'import { reactifyNumber } from \'../utils\'', 73 | '', 74 | 'const __proto = Number.prototype', 75 | '', 76 | ] 77 | 78 | Object.getOwnPropertyNames(Number.prototype) 79 | .filter(key => !ignorelist.includes(key)) 80 | .forEach((key) => { 81 | // @ts-expect-error cast 82 | const value = Number.prototype[KeyObject] 83 | if (typeof value === 'function') { 84 | lines.push('/*@__PURE__*/') 85 | lines.push(`export const ${key} = reactifyNumber(__proto.${key})`) 86 | } 87 | }) 88 | 89 | lines.push('') 90 | 91 | await fs.writeFile('src/number/generated.ts', lines.join('\n'), 'utf-8') 92 | } 93 | 94 | generateMath() 95 | generateString() 96 | generateNumber() 97 | -------------------------------------------------------------------------------- /src/boolean/index.ts: -------------------------------------------------------------------------------- 1 | import type { MaybeRef } from '@vueuse/shared' 2 | import { reactify } from '@vueuse/shared' 3 | 4 | import type { ComputedRef, Ref } from 'vue-demi' 5 | import { computed, unref } from 'vue-demi' 6 | 7 | /* @__PURE__ */ 8 | export const toBoolean = reactify((a: any) => !!a) 9 | 10 | /* @__PURE__ */ 11 | export const not = reactify((a: any) => !a) 12 | 13 | /* @__PURE__ */ 14 | export const isTruthy = toBoolean 15 | 16 | /* @__PURE__ */ 17 | export const isFalsy = not 18 | 19 | /** 20 | * Equal, "==". Use `is` for strictly equal. 21 | */ 22 | export function eq(a: MaybeRef, b: MaybeRef) { 23 | // @ts-expect-error what? 24 | // eslint-disable-next-line eqeqeq 25 | return computed(() => unref(a) == unref(b)) 26 | } 27 | 28 | /** 29 | * Strictly equal, "===" 30 | */ 31 | export function is(a: MaybeRef, b: MaybeRef) { 32 | // @ts-expect-error what? 33 | return computed(() => unref(a) === unref(b)) 34 | } 35 | 36 | /** 37 | * Strictly not equal, "!==" 38 | */ 39 | export function isNot(a: MaybeRef, b: MaybeRef) { 40 | // @ts-expect-error what? 41 | return computed(() => unref(a) !== unref(b)) 42 | } 43 | 44 | /** 45 | * Not equal, "!=" 46 | */ 47 | export function noEq(a: MaybeRef, b: MaybeRef) { 48 | // @ts-expect-error what? 49 | // eslint-disable-next-line eqeqeq 50 | return computed(() => unref(a) != unref(b)) 51 | } 52 | 53 | export function and(...args: MaybeRef[]) { 54 | return computed(() => args.every(i => unref(i))) 55 | } 56 | 57 | export function or(...args: MaybeRef[]) { 58 | return computed(() => args.some(i => unref(i))) 59 | } 60 | 61 | /** 62 | * Ternary operator, "cond ? true : false" 63 | */ 64 | export function ternary(condition: Ref, t: MaybeRef, f: MaybeRef) { 65 | return computed(() => condition.value ? unref(t) : unref(f)) as ComputedRef 66 | } 67 | -------------------------------------------------------------------------------- /src/console/index.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable no-console */ 2 | import { unref, watchEffect } from 'vue-demi' 3 | import { unrefFn } from '../utils' 4 | 5 | /* @__PURE__ */ 6 | export const log = unrefFn(console.log) 7 | /* @__PURE__ */ 8 | export const warn = unrefFn(console.warn) 9 | /* @__PURE__ */ 10 | export const dir = unrefFn(console.dir) 11 | /* @__PURE__ */ 12 | export const table = unrefFn(console.table) 13 | /* @__PURE__ */ 14 | export const debug = unrefFn(console.debug) 15 | /* @__PURE__ */ 16 | export const info = unrefFn(console.info) 17 | /* @__PURE__ */ 18 | export const error = unrefFn(console.error) 19 | 20 | export function track(...args: any[]) { 21 | return watchEffect(() => { 22 | console.log(...args.map(unref)) 23 | }) 24 | } 25 | -------------------------------------------------------------------------------- /src/core.ts: -------------------------------------------------------------------------------- 1 | import { get as _get, reactify } from '@vueuse/shared' 2 | 3 | export { reactify, reactifyObject, set, whenever, MaybeRef } from '@vueuse/shared' 4 | 5 | /* @__PURE__ */ 6 | export const get = reactify(_get) 7 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './boolean' 2 | export * from './console' 3 | export * from './json' 4 | export * from './math' 5 | export * from './number' 6 | export * from './string' 7 | export * from './core' 8 | -------------------------------------------------------------------------------- /src/json/index.ts: -------------------------------------------------------------------------------- 1 | import { reactify } from '@vueuse/shared' 2 | 3 | /* @__PURE__ */ 4 | export const stringify = reactify(JSON.stringify) 5 | 6 | /* @__PURE__ */ 7 | export const parse = reactify(JSON.parse) 8 | -------------------------------------------------------------------------------- /src/math/generated.ts: -------------------------------------------------------------------------------- 1 | import { reactify } from '@vueuse/shared' 2 | 3 | /* @__PURE__ */ 4 | export const abs = reactify(Math.abs) 5 | /* @__PURE__ */ 6 | export const acos = reactify(Math.acos) 7 | /* @__PURE__ */ 8 | export const acosh = reactify(Math.acosh) 9 | /* @__PURE__ */ 10 | export const asin = reactify(Math.asin) 11 | /* @__PURE__ */ 12 | export const asinh = reactify(Math.asinh) 13 | /* @__PURE__ */ 14 | export const atan = reactify(Math.atan) 15 | /* @__PURE__ */ 16 | export const atanh = reactify(Math.atanh) 17 | /* @__PURE__ */ 18 | export const atan2 = reactify(Math.atan2) 19 | /* @__PURE__ */ 20 | export const ceil = reactify(Math.ceil) 21 | /* @__PURE__ */ 22 | export const cbrt = reactify(Math.cbrt) 23 | /* @__PURE__ */ 24 | export const expm1 = reactify(Math.expm1) 25 | /* @__PURE__ */ 26 | export const clz32 = reactify(Math.clz32) 27 | /* @__PURE__ */ 28 | export const cos = reactify(Math.cos) 29 | /* @__PURE__ */ 30 | export const cosh = reactify(Math.cosh) 31 | /* @__PURE__ */ 32 | export const exp = reactify(Math.exp) 33 | /* @__PURE__ */ 34 | export const floor = reactify(Math.floor) 35 | /* @__PURE__ */ 36 | export const fround = reactify(Math.fround) 37 | /* @__PURE__ */ 38 | export const hypot = reactify(Math.hypot) 39 | /* @__PURE__ */ 40 | export const imul = reactify(Math.imul) 41 | /* @__PURE__ */ 42 | export const logE = reactify(Math.log) 43 | /* @__PURE__ */ 44 | export const log1p = reactify(Math.log1p) 45 | /* @__PURE__ */ 46 | export const log2 = reactify(Math.log2) 47 | /* @__PURE__ */ 48 | export const log10 = reactify(Math.log10) 49 | /* @__PURE__ */ 50 | export const max = reactify(Math.max) 51 | /* @__PURE__ */ 52 | export const min = reactify(Math.min) 53 | /* @__PURE__ */ 54 | export const pow = reactify(Math.pow) 55 | /* @__PURE__ */ 56 | export const round = reactify(Math.round) 57 | /* @__PURE__ */ 58 | export const sign = reactify(Math.sign) 59 | /* @__PURE__ */ 60 | export const sin = reactify(Math.sin) 61 | /* @__PURE__ */ 62 | export const sinh = reactify(Math.sinh) 63 | /* @__PURE__ */ 64 | export const sqrt = reactify(Math.sqrt) 65 | /* @__PURE__ */ 66 | export const tan = reactify(Math.tan) 67 | /* @__PURE__ */ 68 | export const tanh = reactify(Math.tanh) 69 | /* @__PURE__ */ 70 | export const trunc = reactify(Math.trunc) 71 | -------------------------------------------------------------------------------- /src/math/index.ts: -------------------------------------------------------------------------------- 1 | import type { MaybeRef } from '@vueuse/shared' 2 | import { reactify } from '@vueuse/shared' 3 | 4 | export * from './generated' 5 | 6 | /* @__PURE__ */ 7 | export const negative = reactify((n: number) => -n) 8 | 9 | /* @__PURE__ */ 10 | export const sum = reactify((...numbers: number[]) => { 11 | let result = 0 12 | numbers.forEach(i => result += i) 13 | return result 14 | }) 15 | 16 | /* @__PURE__ */ 17 | export const multiply = reactify((...numbers: number[]) => { 18 | let result = 1 19 | numbers.forEach(i => result *= i) 20 | return result 21 | }) 22 | 23 | /* @__PURE__ */ 24 | export const divide = reactify((a: number, b: number) => a / b) 25 | 26 | /* @__PURE__ */ 27 | export const subtract = reactify((a: number, b: number) => a - b) 28 | 29 | /* @__PURE__ */ 30 | export const mod = reactify((a: number, b: number) => a % b) 31 | 32 | /* @__PURE__ */ 33 | const pureGcd = (a: number, b: number): number => { 34 | if (b === 0) 35 | return a 36 | else return pureGcd(b, a % b) 37 | } 38 | 39 | /* @__PURE__ */ 40 | export const gcd = reactify(pureGcd) 41 | 42 | /* @__PURE__ */ 43 | export const lcm = (a: MaybeRef, b: MaybeRef) => { 44 | return divide(multiply(a, b), gcd(a, b)) 45 | } 46 | -------------------------------------------------------------------------------- /src/number/generated.ts: -------------------------------------------------------------------------------- 1 | import { reactifyNumber } from '../utils' 2 | 3 | const __proto = Number.prototype 4 | 5 | /* @__PURE__ */ 6 | export const toExponential = reactifyNumber(__proto.toExponential) 7 | /* @__PURE__ */ 8 | export const toFixed = reactifyNumber(__proto.toFixed) 9 | /* @__PURE__ */ 10 | export const toPrecision = reactifyNumber(__proto.toPrecision) 11 | /* @__PURE__ */ 12 | export const toLocaleString = reactifyNumber(__proto.toLocaleString) 13 | -------------------------------------------------------------------------------- /src/number/index.ts: -------------------------------------------------------------------------------- 1 | import { reactify } from '@vueuse/shared' 2 | import type { Ref } from 'vue-demi' 3 | 4 | export * from './generated' 5 | 6 | /* @__PURE__ */ 7 | const _parseFloat = reactify(parseFloat) 8 | 9 | /* @__PURE__ */ 10 | const _parseInt = reactify(parseInt) 11 | 12 | /* @__PURE__ */ 13 | const _isNaN = reactify(isNaN) 14 | 15 | /* @__PURE__ */ 16 | const _isFinite = reactify(isFinite) 17 | 18 | export { 19 | _parseFloat as parseFloat, 20 | _parseInt as parseInt, 21 | _isNaN as isNaN, 22 | _isFinite as isFinite, 23 | } 24 | 25 | export function inc(a: Ref, v = 1) { a.value += v } 26 | export function dec(a: Ref, v = 1) { a.value -= v } 27 | -------------------------------------------------------------------------------- /src/string/generated.ts: -------------------------------------------------------------------------------- 1 | import { reactifyString } from '../utils' 2 | 3 | const __proto = String.prototype 4 | 5 | /* @__PURE__ */ 6 | export const anchor = reactifyString(__proto.anchor) 7 | /* @__PURE__ */ 8 | export const big = reactifyString(__proto.big) 9 | /* @__PURE__ */ 10 | export const blink = reactifyString(__proto.blink) 11 | /* @__PURE__ */ 12 | export const bold = reactifyString(__proto.bold) 13 | /* @__PURE__ */ 14 | export const charAt = reactifyString(__proto.charAt) 15 | /* @__PURE__ */ 16 | export const charCodeAt = reactifyString(__proto.charCodeAt) 17 | /* @__PURE__ */ 18 | export const codePointAt = reactifyString(__proto.codePointAt) 19 | /* @__PURE__ */ 20 | export const concat = reactifyString(__proto.concat) 21 | /* @__PURE__ */ 22 | export const endsWith = reactifyString(__proto.endsWith) 23 | /* @__PURE__ */ 24 | export const fontcolor = reactifyString(__proto.fontcolor) 25 | /* @__PURE__ */ 26 | export const fontsize = reactifyString(__proto.fontsize) 27 | /* @__PURE__ */ 28 | export const fixed = reactifyString(__proto.fixed) 29 | /* @__PURE__ */ 30 | export const includes = reactifyString(__proto.includes) 31 | /* @__PURE__ */ 32 | export const indexOf = reactifyString(__proto.indexOf) 33 | /* @__PURE__ */ 34 | export const italics = reactifyString(__proto.italics) 35 | /* @__PURE__ */ 36 | export const lastIndexOf = reactifyString(__proto.lastIndexOf) 37 | /* @__PURE__ */ 38 | export const link = reactifyString(__proto.link) 39 | /* @__PURE__ */ 40 | export const localeCompare = reactifyString(__proto.localeCompare) 41 | /* @__PURE__ */ 42 | export const match = reactifyString(__proto.match) 43 | /* @__PURE__ */ 44 | export const matchAll = reactifyString(__proto.matchAll) 45 | /* @__PURE__ */ 46 | export const normalize = reactifyString(__proto.normalize) 47 | /* @__PURE__ */ 48 | export const padEnd = reactifyString(__proto.padEnd) 49 | /* @__PURE__ */ 50 | export const padStart = reactifyString(__proto.padStart) 51 | /* @__PURE__ */ 52 | export const repeat = reactifyString(__proto.repeat) 53 | /* @__PURE__ */ 54 | export const replace = reactifyString(__proto.replace) 55 | /* @__PURE__ */ 56 | export const search = reactifyString(__proto.search) 57 | /* @__PURE__ */ 58 | export const slice = reactifyString(__proto.slice) 59 | /* @__PURE__ */ 60 | export const small = reactifyString(__proto.small) 61 | /* @__PURE__ */ 62 | export const split = reactifyString(__proto.split) 63 | /* @__PURE__ */ 64 | export const strike = reactifyString(__proto.strike) 65 | /* @__PURE__ */ 66 | export const sub = reactifyString(__proto.sub) 67 | /* @__PURE__ */ 68 | export const substr = reactifyString(__proto.substr) 69 | /* @__PURE__ */ 70 | export const substring = reactifyString(__proto.substring) 71 | /* @__PURE__ */ 72 | export const sup = reactifyString(__proto.sup) 73 | /* @__PURE__ */ 74 | export const startsWith = reactifyString(__proto.startsWith) 75 | /* @__PURE__ */ 76 | export const trim = reactifyString(__proto.trim) 77 | /* @__PURE__ */ 78 | export const trimStart = reactifyString(__proto.trimStart) 79 | /* @__PURE__ */ 80 | export const trimLeft = reactifyString(__proto.trimLeft) 81 | /* @__PURE__ */ 82 | export const trimEnd = reactifyString(__proto.trimEnd) 83 | /* @__PURE__ */ 84 | export const trimRight = reactifyString(__proto.trimRight) 85 | /* @__PURE__ */ 86 | export const toLocaleLowerCase = reactifyString(__proto.toLocaleLowerCase) 87 | /* @__PURE__ */ 88 | export const toLocaleUpperCase = reactifyString(__proto.toLocaleUpperCase) 89 | /* @__PURE__ */ 90 | export const toLowerCase = reactifyString(__proto.toLowerCase) 91 | /* @__PURE__ */ 92 | export const toUpperCase = reactifyString(__proto.toUpperCase) 93 | -------------------------------------------------------------------------------- /src/string/index.ts: -------------------------------------------------------------------------------- 1 | import { computed, unref } from 'vue-demi' 2 | import { reactifyString } from '../utils' 3 | 4 | export * from './generated' 5 | 6 | /* @__PURE__ */ 7 | export const toString = reactifyString(Object.prototype.toString) 8 | 9 | export function reactiveStr(strings: TemplateStringsArray, ...args: any[]) { 10 | return computed(() => String.raw(strings, ...args.map(unref))) 11 | } 12 | 13 | /* @__PURE__ */ 14 | export const rs = reactiveStr 15 | -------------------------------------------------------------------------------- /src/utils.ts: -------------------------------------------------------------------------------- 1 | import type { MaybeRef, Reactified } from '@vueuse/shared' 2 | import { reactify } from '@vueuse/shared' 3 | import { unref } from 'vue-demi' 4 | 5 | type PrependArgument = Fn extends (...args: infer R) => infer T ? (that: E, ...args: R) => T : never 6 | 7 | export type UnrefFn = T extends (...args: infer A) => infer R 8 | ? (...args: { [K in keyof A]: MaybeRef }) => R 9 | : never 10 | 11 | export function unrefFn(fn: T): UnrefFn { 12 | return function (this: any, ...args: any[]) { 13 | return fn.apply(this, args.map(i => unref(i))) 14 | } as UnrefFn 15 | } 16 | 17 | export function reactifyMethod(fn: T): Reactified, true> { 18 | // @ts-expect-error cast 19 | return reactify((that: any, ...args: any) => fn.apply(that, args)) 20 | } 21 | 22 | export const reactifyString: (fn: T) => Reactified, true> = reactifyMethod 23 | export const reactifyNumber: (fn: T) => Reactified, true> = reactifyMethod 24 | -------------------------------------------------------------------------------- /test/examples.test.ts: -------------------------------------------------------------------------------- 1 | import { ref } from 'vue-demi' 2 | import { describe, it } from 'vitest' 3 | import { dec, is, multiply, pow, rs, set, sqrt, stringify, sum, ternary, toUpperCase } from '../src' 4 | import { $expect } from './utils' 5 | 6 | describe('examples', () => { 7 | it('math', () => { 8 | const a = ref(3) 9 | const b = ref(4) 10 | const c = sqrt(sum(pow(a, 2), pow(b, 2))) 11 | $expect(is(c, 5)) 12 | 13 | set(a, 5) // shorthand for a.value = 5 14 | set(b, 12) 15 | $expect(is(c, 13)) 16 | }) 17 | 18 | it('json', () => { 19 | const obj = ref({ foo: 'bar' }) 20 | const str = stringify(obj) 21 | // const clone = parse(str) 22 | 23 | $expect(is(str, '{"foo":"bar"}')) 24 | 25 | obj.value.no = 42 26 | 27 | $expect(is(str, '{"foo":"bar","no":42}')) 28 | }) 29 | 30 | it('string 1', () => { 31 | const name = ref('foo') 32 | const message = rs`Hello ${toUpperCase(name)}!` 33 | $expect(is(message, 'Hello FOO!')) 34 | set(name, 'Anthony') 35 | $expect(is(message, 'Hello ANTHONY!')) 36 | }) 37 | 38 | it('string 2', () => { 39 | const x = ref(9) 40 | const y = ref(9) 41 | const z = ref(7) 42 | const equation = rs`${x} x ${y} + ${z} = ${sum(multiply(x, y), z)}` 43 | $expect(is(equation, '9 x 9 + 7 = 88')) 44 | set(x, 98) 45 | dec(z) 46 | $expect(is(equation, '98 x 9 + 6 = 888')) 47 | set(x, 987) 48 | dec(z) 49 | $expect(is(equation, '987 x 9 + 5 = 8888')) 50 | }) 51 | 52 | it('string 3', () => { 53 | const mode = ref('light') 54 | 55 | const isDark = is(mode, 'dark') 56 | const icon = rs`mdi-${ternary(isDark, 'moon', 'sun')}` 57 | 58 | $expect(is(icon, 'mdi-sun')) 59 | 60 | set(mode, 'dark') 61 | 62 | $expect(is(icon, 'mdi-moon')) 63 | }) 64 | }) 65 | -------------------------------------------------------------------------------- /test/math.test.ts: -------------------------------------------------------------------------------- 1 | import { ref } from 'vue-demi' 2 | import { describe, it } from 'vitest' 3 | import { divide, gcd, is, lcm, mod, multiply, negative, set, subtract, sum } from '../src' 4 | import { $expect } from './utils' 5 | 6 | describe('reactiveMath', () => { 7 | it('negative', () => { 8 | const a = ref(9) 9 | const c = negative(a) 10 | $expect(is(c, -9)) 11 | $expect(is(a, 9)) 12 | 13 | set(a, 10) 14 | $expect(is(c, -10)) 15 | }) 16 | 17 | it('sum', () => { 18 | const a = ref(1) 19 | const b = ref(2) 20 | const c = ref(3) 21 | const d = sum(a, b, c) 22 | $expect(is(d, 6)) 23 | 24 | set(a, 10) 25 | set(b, 15) 26 | $expect(is(d, 28)) 27 | }) 28 | 29 | it('subtract', () => { 30 | const a = ref(1) 31 | const b = ref(2) 32 | const c = subtract(a, b) 33 | $expect(is(c, -1)) 34 | 35 | set(a, 20) 36 | set(b, 15) 37 | $expect(is(c, 5)) 38 | }) 39 | 40 | it('multiply', () => { 41 | const a = ref(1) 42 | const b = ref(2) 43 | const c = ref(3) 44 | const d = multiply(a, b, c) 45 | $expect(is(d, 6)) 46 | 47 | set(a, 4) 48 | set(b, 5) 49 | $expect(is(d, 60)) 50 | }) 51 | 52 | it('divide', () => { 53 | const a = ref(1) 54 | const b = ref(2) 55 | const c = divide(a, b) 56 | $expect(is(c, 0.5)) 57 | 58 | set(a, 20) 59 | set(b, 10) 60 | $expect(is(c, 2)) 61 | }) 62 | 63 | it('mod', () => { 64 | const a = ref(15) 65 | const b = ref(9) 66 | const c = mod(a, b) 67 | $expect(is(c, 6)) 68 | $expect(is(b, 9)) 69 | 70 | set(a, 3) 71 | set(b, 2) 72 | $expect(is(c, 1)) 73 | }) 74 | 75 | it('gcd', () => { 76 | const a = ref(9) 77 | const b = ref(15) 78 | const c = gcd(a, b) 79 | $expect(is(c, 3)) 80 | $expect(is(a, 9)) 81 | 82 | set(a, 14) 83 | set(b, 21) 84 | $expect(is(c, 7)) 85 | $expect(is(a, 14)) 86 | }) 87 | 88 | it('lcm', () => { 89 | const a = ref(2) 90 | const b = ref(3) 91 | const c = lcm(a, b) 92 | $expect(is(c, 6)) 93 | 94 | set(a, 7) 95 | set(b, 14) 96 | $expect(is(c, 14)) 97 | }) 98 | }) 99 | -------------------------------------------------------------------------------- /test/string.test.ts: -------------------------------------------------------------------------------- 1 | import { ref } from 'vue-demi' 2 | import { describe, it } from 'vitest' 3 | import { is, multiply, rs } from '../src' 4 | import { $expect } from './utils' 5 | 6 | describe('reactiveStr', () => { 7 | it('exported', () => { 8 | const a = ref(2) 9 | const b = ref(3) 10 | const c = rs`${a} x ${b} = ${multiply(a, b)}` 11 | 12 | $expect(is(c, '2 x 3 = 6')) 13 | 14 | a.value = 8 15 | b.value = 5 16 | 17 | $expect(is(c, '8 x 5 = 40')) 18 | }) 19 | }) 20 | -------------------------------------------------------------------------------- /test/utils.ts: -------------------------------------------------------------------------------- 1 | import type { MaybeRef } from '@vueuse/shared' 2 | import { unref } from 'vue-demi' 3 | import { expect } from 'vitest' 4 | 5 | export function $expect(a: MaybeRef) { 6 | expect(unref(a)).toBe(true) 7 | } 8 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es2017", 4 | "module": "esnext", 5 | "lib": ["esnext"], 6 | "outDir": "dist", 7 | "declaration": true, 8 | "moduleResolution": "node", 9 | "esModuleInterop": true, 10 | "strict": true, 11 | "strictNullChecks": true, 12 | "resolveJsonModule": true, 13 | "skipLibCheck": true 14 | } 15 | } 16 | --------------------------------------------------------------------------------