├── .eslintrc.cjs ├── .github └── FUNDING.yml ├── .gitignore ├── .npmignore ├── README.md ├── package.json ├── pnpm-lock.yaml ├── src └── index.ts └── tsconfig.json /.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | plugins: [ 4 | '@typescript-eslint', 5 | ], 6 | // https://github.com/feross/standard/blob/master/RULES.md#javascript-standard-style 7 | extends: [ 8 | 'eslint-config-standard', 9 | 'plugin:@typescript-eslint/eslint-recommended', 10 | 'plugin:@typescript-eslint/recommended', 11 | ], 12 | parserOptions: { 13 | parser: { 14 | js: 'espree', 15 | jsx: 'espree', 16 | ts: '@typescript-eslint/parser', 17 | tsx: '@typescript-eslint/parser', 18 | }, 19 | }, 20 | // required to lint *.vue files 21 | /* plugins: [ 22 | 'html' 23 | ], */ 24 | env: { 25 | browser: true, 26 | node: true, 27 | }, 28 | // add your custom rules here 29 | rules: { 30 | // allow paren-less arrow functions 31 | 'arrow-parens': 0, 32 | // allow async-await 33 | 'generator-star-spacing': 0, 34 | // allow debugger during development 35 | 'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0, 36 | // trailing comma 37 | 'comma-dangle': ['error', 'always-multiline'], 38 | // beware of returning assignement 39 | 'no-return-assign': 'off', 40 | 'no-extend-native': 'warn', 41 | }, 42 | globals: { 43 | Meteor: false, 44 | Tracker: false, 45 | }, 46 | overrides: [ 47 | { 48 | files: ['*.ts', '*.tsx'], 49 | rules: { 50 | // The core 'no-unused-vars' rules (in the eslint:recommeded ruleset) 51 | // does not work with type definitions 52 | 'no-unused-vars': 'off', 53 | }, 54 | }, 55 | ], 56 | ignorePatterns: [ 57 | 'node_modules/', 58 | 'dist/', 59 | '!.*', 60 | ], 61 | } 62 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: Akryum 4 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | lib/ 3 | dist/ 4 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | src/ 2 | .eslintrc.xjs 3 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Vue integration for Meteor 2 | 3 | [![npm](https://img.shields.io/npm/v/vue-meteor-tracker.svg) ![npm](https://img.shields.io/npm/dm/vue-meteor-tracker.svg)](https://www.npmjs.com/package/vue-meteor-tracker) 4 | [![vue3](https://img.shields.io/badge/vue-3.x-brightgreen.svg) ![vue2.7](https://img.shields.io/badge/vue-2.7-brightgreen.svg)](https://vuejs.org/) 5 | 6 | Reactive subscriptions and data from Meteor for Vue components. 7 | 8 | ## Sponsors 9 | 10 | [Become a sponsor!](https://github.com/sponsors/Akryum) 11 | 12 | We are very grateful to all our sponsors for their support: 13 | 14 |

15 | 16 | 17 | 18 |

19 | 20 |
21 | 22 | ## Installation 23 | 24 | ```sh 25 | meteor npm install --save vue-meteor-tracker@next 26 | ``` 27 | 28 | Install `vite:bundler` too: 29 | 30 | ```sh 31 | meteor add vite:bundler 32 | ``` 33 | 34 | [Learn more](https://packosphere.com/vite/bundler) 35 | 36 | Example Vite config: 37 | 38 | ```js 39 | import { defineConfig } from 'vite' 40 | import Vue from '@vitejs/plugin-vue' 41 | 42 | export default defineConfig({ 43 | plugins: [ 44 | Vue(), 45 | ], 46 | 47 | optimizeDeps: { 48 | exclude: [ 49 | 'vue-meteor-tracker', 50 | ], 51 | }, 52 | 53 | meteor: { 54 | clientEntry: 'imports/ui/main.ts', 55 | }, 56 | }) 57 | ``` 58 | 59 | ## Options API 60 | 61 | Install the plugin into Vue: 62 | 63 | ```js 64 | import { VueMeteor } from 'vue-meteor-tracker' 65 | app.use(VueMeteor) 66 | ``` 67 | 68 | In your Vue component, add a `meteor` object : 69 | 70 | 71 | ```js 72 | export default { 73 | meteor: { 74 | // Meteor specific options 75 | } 76 | } 77 | ``` 78 | 79 | ### Subscriptions 80 | 81 | Add an object for each subscription in a `$subscribe` object. The object key is the name of the publication and the value is either an array of parameters or a function returning an array of parameters. These subscription will be stopped when the component is destroyed. 82 | 83 | ```js 84 | export default { 85 | meteor: { 86 | // Subscriptions 87 | $subscribe: { 88 | // Subscribes to the 'threads' publication with no parameters 89 | 'threads': [], 90 | // Subscribes to the 'threads' publication with static parameters 91 | 'threads': ['new', 10], // The 10 newest threads 92 | // Subscribes to the 'posts' publication with dynamic parameters 93 | // The subscription will be re-called when a vue reactive property changes 94 | 'posts': function() { 95 | // Here you can use Vue reactive properties 96 | return [this.selectedThreadId] // Subscription params 97 | } 98 | } 99 | } 100 | } 101 | ``` 102 | 103 | 104 | You can also use the `$subscribe(name, params)` method in you component code: 105 | 106 | 107 | ```js 108 | mounted () { 109 | // Subscribes to the 'threads' publication with two parameters 110 | this.$subscribe('thread', ['new', 10]) 111 | } 112 | ``` 113 | 114 | The `$subReady` object on your component contains the state of your subscriptions. For example, to know if the 'thread' subscription is ready, use this *reactive* expression: 115 | 116 | ```js 117 | console.log(this.$subReady.thread) 118 | ``` 119 | 120 | Or in your template: 121 | 122 | ```html 123 |
Loading...
124 | ``` 125 | 126 | You can also change the default subscription method by defining the `Vue.config.meteor.subscribe` function: 127 | 128 | 129 | ```js 130 | import { config } from 'vue-meteor-tracker' 131 | 132 | // You can replace the default subcription function with your own 133 | // Here we replace the native subscribe() with a cached one 134 | // with the ccorcos:subs-cache package 135 | const subsCache = new SubsCache({ 136 | expireAfter: 15, 137 | cacheLimit: -1 138 | }) 139 | 140 | config.subscribe = function(...args) { 141 | return subsCache.subscribe(...args) 142 | } 143 | ``` 144 | 145 | ### Reactive data 146 | 147 | You can add reactive properties that update from any Meteor reactive sources (like collections or session) by putting an object for each property in the `meteor` object. The object key is the name of the property (it shouldn't start with `$`), and the value is a function that returns the result. 148 | 149 | Here is an example: 150 | 151 | ```js 152 | export default { 153 | data() { 154 | return { 155 | selectedThreadId: null 156 | } 157 | }, 158 | meteor: { 159 | // Subscriptions 160 | $subscribe: { 161 | // We subscribe to the 'threads' publication 162 | 'threads': [] 163 | }, 164 | // Threads list 165 | // You can access tthe result with the 'threads' property on the Vue instance 166 | threads () { 167 | // Here you can use Meteor reactive sources 168 | // like cursors or reactive vars 169 | // as you would in a Blaze template helper 170 | return Threads.find({}, { 171 | sort: {date: -1} 172 | }) 173 | }, 174 | // Selected thread 175 | selectedThread () { 176 | // You can also use Vue reactive data inside 177 | return Threads.findOne(this.selectedThreadId) 178 | } 179 | } 180 | }) 181 | ``` 182 | 183 | Use the reactive data in the template: 184 | 185 | 186 | ```html 187 | 188 | 194 | 195 | 196 | 197 | ``` 198 | 199 | 200 | Or anywhere else in you Vue component: 201 | 202 | ```js 203 | computed: { 204 | count () { 205 | return this.threads.length 206 | } 207 | } 208 | ``` 209 | 210 | ### Meteor Methods 211 | 212 | You can call a Meteor method with a promise using `callMethod`: 213 | 214 | ```js 215 | import { callMethod } from 'vue-meteor-tracker' 216 | 217 | export default { 218 | methods: { 219 | async insertLink () { 220 | try { 221 | await callMethod('links.insert', 'title', 'url') 222 | console.log('done') 223 | } catch (e) { 224 | console.error(e) 225 | } 226 | }, 227 | }, 228 | } 229 | ``` 230 | 231 | --- 232 | 233 | ## Composition API 234 | 235 | ### Subscriptions 236 | 237 | Inside the component `setup`, you can use the `subscribe` function: 238 | 239 | ```js 240 | import { subscribe } from 'vue-meteor-tracker' 241 | 242 | // Simple sub 243 | 244 | subscribe('links') 245 | // With params 246 | subscribe('linksByPageAndLimit', 1, 10) 247 | 248 | // Reactive sub 249 | 250 | const page = ref(1) 251 | subscribe(() => ['linksByPageAndLimit', page.value, 10]) 252 | ``` 253 | 254 | If you need to subscribe later (outside of the `setup` context), call `useSubscribe` instead: 255 | 256 | ```js 257 | import { useSubscribe } from 'vue-meteor-tracker' 258 | 259 | const { subscribe } = useSubscribe() 260 | 261 | setTimeout(() => { 262 | subscribe('linksByPage', 2) 263 | }, 1000) 264 | ``` 265 | 266 | 267 | ### Reactive Data 268 | 269 | In the component `setup` context, you can use the `autorun` function: 270 | 271 | ```js 272 | import { autorun } from 'vue-meteor-tracker' 273 | import { LinksCollection } from '/imports/api/links' 274 | 275 | const links = autorun(() => LinksCollection.find({}).fetch()).result 276 | // const { result, stop } = autorun(() => LinksCollection.find({}).fetch()) 277 | ``` 278 | 279 | If you need to start an autorun later (outside of the `setup` context), call `useAutorun` instead: 280 | 281 | ```js 282 | import { useAutorun } from 'vue-meteor-tracker' 283 | import { LinksCollection } from '/imports/api/links' 284 | 285 | const { autorun } = useAutorun() 286 | 287 | // Later... 288 | const links = autorun(() => LinksCollection.find({}).fetch()).result 289 | ``` 290 | 291 | ### Meteor Methods 292 | 293 | You can call a Meteor method with a promise using `callMethod`: 294 | 295 | ```js 296 | import { callMethod } from 'vue-meteor-tracker' 297 | 298 | async function insertLink () { 299 | try { 300 | await callMethod('links.insert', 'title', 'url') 301 | console.log('done') 302 | } catch (e) { 303 | console.error(e) 304 | } 305 | } 306 | ``` 307 | 308 | To keep track of pending, error and result state with reactive variables, you can use `useMethod`: 309 | 310 | ```ts 311 | import { useMethod } from 'vue-meteor-tracker' 312 | import { LinksCollection } from '/imports/api/links' 313 | 314 | const insertLinkMethod = useMethod<[url: string, link: string]>('links.insert') 315 | insertLinkMethod.onResult((err) => { 316 | if (!err) { 317 | // Reset form 318 | insertLinkForm.title = '' 319 | insertLinkForm.url = '' 320 | } 321 | }) 322 | 323 | // Reactive state 324 | watch(insertLinkMethod.pending, () => { /* ... */ }) 325 | watch(insertLinkMethod.error, () => { /* ... */ }) 326 | watch(insertLinkMethod.result, () => { /* ... */ }) 327 | 328 | const insertLinkForm = reactive({ 329 | title: '', 330 | url: '', 331 | }) 332 | 333 | async function insertLink () { 334 | await insertLinkMethod.call(insertLinkForm.title, insertLinkForm.url) 335 | console.log('done') 336 | } 337 | ``` 338 | 339 | --- 340 | 341 | ## License 342 | 343 | MIT 344 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vue-meteor-tracker", 3 | "version": "3.0.0-beta.7", 4 | "description": "Use Meteor Tracker reactivity inside Vue components", 5 | "type": "module", 6 | "main": "dist/index.js", 7 | "types": "dist/index.d.ts", 8 | "exports": { 9 | ".": { 10 | "import": "./dist/index.js", 11 | "types": "./dist/index.d.ts" 12 | }, 13 | "./*": "./*" 14 | }, 15 | "engines": { 16 | "node": ">14.5.0" 17 | }, 18 | "scripts": { 19 | "build": "rimraf dist && tsc -d", 20 | "watch": "tsc -d -w --sourceMap", 21 | "prepublishOnly": "pnpm run test && pnpm run build", 22 | "test": "pnpm run test:eslint", 23 | "test:eslint": "eslint --ext .js,.ts src" 24 | }, 25 | "repository": { 26 | "type": "git", 27 | "url": "git+https://github.com/meteor-vue/vue-meteor-tracker.git" 28 | }, 29 | "keywords": [ 30 | "vue", 31 | "meteor", 32 | "integration", 33 | "tracker", 34 | "reactivity" 35 | ], 36 | "author": "Guillaume CHAU", 37 | "license": "MIT", 38 | "bugs": { 39 | "url": "https://github.com/meteor-vue/vue-meteor-tracker/issues" 40 | }, 41 | "homepage": "https://github.com/meteor-vue/vue-meteor-tracker#readme", 42 | "dependencies": { 43 | }, 44 | "peerDependencies": { 45 | "vue": "^2.7.0 || ^3.0.0" 46 | }, 47 | "devDependencies": { 48 | "@types/meteor": "^1.4.87", 49 | "@types/node": "^18.7.14", 50 | "@typescript-eslint/eslint-plugin": "^5.18.0", 51 | "@typescript-eslint/parser": "^5.18.0", 52 | "eslint": "^8.13.0", 53 | "eslint-config-standard": "^17.0.0", 54 | "eslint-plugin-import": "^2.26.0", 55 | "eslint-plugin-n": "^15.2.5", 56 | "eslint-plugin-node": "^11.1.0", 57 | "eslint-plugin-promise": "^6.0.0", 58 | "rimraf": "^3.0.2", 59 | "typescript": "^4.8.2", 60 | "vue": "^3.2.38" 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: 5.4 2 | 3 | specifiers: 4 | '@types/meteor': ^1.4.87 5 | '@types/node': ^18.7.14 6 | '@typescript-eslint/eslint-plugin': ^5.18.0 7 | '@typescript-eslint/parser': ^5.18.0 8 | eslint: ^8.13.0 9 | eslint-config-standard: ^17.0.0 10 | eslint-plugin-import: ^2.26.0 11 | eslint-plugin-n: ^15.2.5 12 | eslint-plugin-node: ^11.1.0 13 | eslint-plugin-promise: ^6.0.0 14 | rimraf: ^3.0.2 15 | typescript: ^4.8.2 16 | vue: ^3.2.38 17 | 18 | devDependencies: 19 | '@types/meteor': 1.4.87 20 | '@types/node': 18.7.14 21 | '@typescript-eslint/eslint-plugin': 5.36.1_lbwfnm54o3pmr3ypeqp3btnera 22 | '@typescript-eslint/parser': 5.36.1_yqf6kl63nyoq5megxukfnom5rm 23 | eslint: 8.23.0 24 | eslint-config-standard: 17.0.0_ci7jzfiysajw25w4iodapaa2cq 25 | eslint-plugin-import: 2.26.0_wyxuyzvlfep3lsyoibc4fosfq4 26 | eslint-plugin-n: 15.2.5_eslint@8.23.0 27 | eslint-plugin-node: 11.1.0_eslint@8.23.0 28 | eslint-plugin-promise: 6.0.1_eslint@8.23.0 29 | rimraf: 3.0.2 30 | typescript: 4.8.2 31 | vue: 3.2.38 32 | 33 | packages: 34 | 35 | /@babel/helper-string-parser/7.18.10: 36 | resolution: {integrity: sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==} 37 | engines: {node: '>=6.9.0'} 38 | dev: true 39 | 40 | /@babel/helper-validator-identifier/7.18.6: 41 | resolution: {integrity: sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==} 42 | engines: {node: '>=6.9.0'} 43 | dev: true 44 | 45 | /@babel/parser/7.18.13: 46 | resolution: {integrity: sha512-dgXcIfMuQ0kgzLB2b9tRZs7TTFFaGM2AbtA4fJgUUYukzGH4jwsS7hzQHEGs67jdehpm22vkgKwvbU+aEflgwg==} 47 | engines: {node: '>=6.0.0'} 48 | hasBin: true 49 | dependencies: 50 | '@babel/types': 7.18.13 51 | dev: true 52 | 53 | /@babel/types/7.18.13: 54 | resolution: {integrity: sha512-ePqfTihzW0W6XAU+aMw2ykilisStJfDnsejDCXRchCcMJ4O0+8DhPXf2YUbZ6wjBlsEmZwLK/sPweWtu8hcJYQ==} 55 | engines: {node: '>=6.9.0'} 56 | dependencies: 57 | '@babel/helper-string-parser': 7.18.10 58 | '@babel/helper-validator-identifier': 7.18.6 59 | to-fast-properties: 2.0.0 60 | dev: true 61 | 62 | /@eslint/eslintrc/1.3.1: 63 | resolution: {integrity: sha512-OhSY22oQQdw3zgPOOwdoj01l/Dzl1Z+xyUP33tkSN+aqyEhymJCcPHyXt+ylW8FSe0TfRC2VG+ROQOapD0aZSQ==} 64 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 65 | dependencies: 66 | ajv: 6.12.6 67 | debug: 4.3.4 68 | espree: 9.4.0 69 | globals: 13.17.0 70 | ignore: 5.2.0 71 | import-fresh: 3.3.0 72 | js-yaml: 4.1.0 73 | minimatch: 3.1.2 74 | strip-json-comments: 3.1.1 75 | transitivePeerDependencies: 76 | - supports-color 77 | dev: true 78 | 79 | /@humanwhocodes/config-array/0.10.4: 80 | resolution: {integrity: sha512-mXAIHxZT3Vcpg83opl1wGlVZ9xydbfZO3r5YfRSH6Gpp2J/PfdBP0wbDa2sO6/qRbcalpoevVyW6A/fI6LfeMw==} 81 | engines: {node: '>=10.10.0'} 82 | dependencies: 83 | '@humanwhocodes/object-schema': 1.2.1 84 | debug: 4.3.4 85 | minimatch: 3.1.2 86 | transitivePeerDependencies: 87 | - supports-color 88 | dev: true 89 | 90 | /@humanwhocodes/gitignore-to-minimatch/1.0.2: 91 | resolution: {integrity: sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==} 92 | dev: true 93 | 94 | /@humanwhocodes/module-importer/1.0.1: 95 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 96 | engines: {node: '>=12.22'} 97 | dev: true 98 | 99 | /@humanwhocodes/object-schema/1.2.1: 100 | resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} 101 | dev: true 102 | 103 | /@nodelib/fs.scandir/2.1.5: 104 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 105 | engines: {node: '>= 8'} 106 | dependencies: 107 | '@nodelib/fs.stat': 2.0.5 108 | run-parallel: 1.2.0 109 | dev: true 110 | 111 | /@nodelib/fs.stat/2.0.5: 112 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 113 | engines: {node: '>= 8'} 114 | dev: true 115 | 116 | /@nodelib/fs.walk/1.2.8: 117 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 118 | engines: {node: '>= 8'} 119 | dependencies: 120 | '@nodelib/fs.scandir': 2.1.5 121 | fastq: 1.13.0 122 | dev: true 123 | 124 | /@types/bson/4.2.0: 125 | resolution: {integrity: sha512-ELCPqAdroMdcuxqwMgUpifQyRoTpyYCNr1V9xKyF40VsBobsj+BbWNRvwGchMgBPGqkw655ypkjj2MEF5ywVwg==} 126 | deprecated: This is a stub types definition. bson provides its own type definitions, so you do not need this installed. 127 | dependencies: 128 | bson: 4.7.0 129 | dev: true 130 | 131 | /@types/connect/3.4.35: 132 | resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} 133 | dependencies: 134 | '@types/node': 18.7.14 135 | dev: true 136 | 137 | /@types/jquery/3.5.14: 138 | resolution: {integrity: sha512-X1gtMRMbziVQkErhTQmSe2jFwwENA/Zr+PprCkF63vFq+Yt5PZ4AlKqgmeNlwgn7dhsXEK888eIW2520EpC+xg==} 139 | dependencies: 140 | '@types/sizzle': 2.3.3 141 | dev: true 142 | 143 | /@types/json-schema/7.0.11: 144 | resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} 145 | dev: true 146 | 147 | /@types/json5/0.0.29: 148 | resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} 149 | dev: true 150 | 151 | /@types/meteor/1.4.87: 152 | resolution: {integrity: sha512-UU2rJvq3jkCYc//OXL482OLfwYOf8WQTiTRfYiCHJnzvhUHsg0Cx6iSzzThPuFGupp6FgmSeenJBwmt854hh7w==} 153 | dependencies: 154 | '@types/connect': 3.4.35 155 | '@types/jquery': 3.5.14 156 | '@types/mongodb': 3.6.20 157 | '@types/react': 18.0.18 158 | '@types/underscore': 1.11.4 159 | dev: true 160 | 161 | /@types/mongodb/3.6.20: 162 | resolution: {integrity: sha512-WcdpPJCakFzcWWD9juKoZbRtQxKIMYF/JIAM4JrNHrMcnJL6/a2NWjXxW7fo9hxboxxkg+icff8d7+WIEvKgYQ==} 163 | dependencies: 164 | '@types/bson': 4.2.0 165 | '@types/node': 18.7.14 166 | dev: true 167 | 168 | /@types/node/18.7.14: 169 | resolution: {integrity: sha512-6bbDaETVi8oyIARulOE9qF1/Qdi/23z6emrUh0fNJRUmjznqrixD4MpGDdgOFk5Xb0m2H6Xu42JGdvAxaJR/wA==} 170 | dev: true 171 | 172 | /@types/prop-types/15.7.5: 173 | resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} 174 | dev: true 175 | 176 | /@types/react/18.0.18: 177 | resolution: {integrity: sha512-6hI08umYs6NaiHFEEGioXnxJ+oEhY3eRz8VCUaudZmGdtvPviCJB8mgaMxaDWAdPSYd4eFavrPk2QIolwbLYrg==} 178 | dependencies: 179 | '@types/prop-types': 15.7.5 180 | '@types/scheduler': 0.16.2 181 | csstype: 3.1.0 182 | dev: true 183 | 184 | /@types/scheduler/0.16.2: 185 | resolution: {integrity: sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==} 186 | dev: true 187 | 188 | /@types/sizzle/2.3.3: 189 | resolution: {integrity: sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==} 190 | dev: true 191 | 192 | /@types/underscore/1.11.4: 193 | resolution: {integrity: sha512-uO4CD2ELOjw8tasUrAhvnn2W4A0ZECOvMjCivJr4gA9pGgjv+qxKWY9GLTMVEK8ej85BxQOocUyE7hImmSQYcg==} 194 | dev: true 195 | 196 | /@typescript-eslint/eslint-plugin/5.36.1_lbwfnm54o3pmr3ypeqp3btnera: 197 | resolution: {integrity: sha512-iC40UK8q1tMepSDwiLbTbMXKDxzNy+4TfPWgIL661Ym0sD42vRcQU93IsZIrmi+x292DBr60UI/gSwfdVYexCA==} 198 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 199 | peerDependencies: 200 | '@typescript-eslint/parser': ^5.0.0 201 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 202 | typescript: '*' 203 | peerDependenciesMeta: 204 | typescript: 205 | optional: true 206 | dependencies: 207 | '@typescript-eslint/parser': 5.36.1_yqf6kl63nyoq5megxukfnom5rm 208 | '@typescript-eslint/scope-manager': 5.36.1 209 | '@typescript-eslint/type-utils': 5.36.1_yqf6kl63nyoq5megxukfnom5rm 210 | '@typescript-eslint/utils': 5.36.1_yqf6kl63nyoq5megxukfnom5rm 211 | debug: 4.3.4 212 | eslint: 8.23.0 213 | functional-red-black-tree: 1.0.1 214 | ignore: 5.2.0 215 | regexpp: 3.2.0 216 | semver: 7.3.7 217 | tsutils: 3.21.0_typescript@4.8.2 218 | typescript: 4.8.2 219 | transitivePeerDependencies: 220 | - supports-color 221 | dev: true 222 | 223 | /@typescript-eslint/parser/5.36.1_yqf6kl63nyoq5megxukfnom5rm: 224 | resolution: {integrity: sha512-/IsgNGOkBi7CuDfUbwt1eOqUXF9WGVBW9dwEe1pi+L32XrTsZIgmDFIi2RxjzsvB/8i+MIf5JIoTEH8LOZ368A==} 225 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 226 | peerDependencies: 227 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 228 | typescript: '*' 229 | peerDependenciesMeta: 230 | typescript: 231 | optional: true 232 | dependencies: 233 | '@typescript-eslint/scope-manager': 5.36.1 234 | '@typescript-eslint/types': 5.36.1 235 | '@typescript-eslint/typescript-estree': 5.36.1_typescript@4.8.2 236 | debug: 4.3.4 237 | eslint: 8.23.0 238 | typescript: 4.8.2 239 | transitivePeerDependencies: 240 | - supports-color 241 | dev: true 242 | 243 | /@typescript-eslint/scope-manager/5.36.1: 244 | resolution: {integrity: sha512-pGC2SH3/tXdu9IH3ItoqciD3f3RRGCh7hb9zPdN2Drsr341zgd6VbhP5OHQO/reUqihNltfPpMpTNihFMarP2w==} 245 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 246 | dependencies: 247 | '@typescript-eslint/types': 5.36.1 248 | '@typescript-eslint/visitor-keys': 5.36.1 249 | dev: true 250 | 251 | /@typescript-eslint/type-utils/5.36.1_yqf6kl63nyoq5megxukfnom5rm: 252 | resolution: {integrity: sha512-xfZhfmoQT6m3lmlqDvDzv9TiCYdw22cdj06xY0obSznBsT///GK5IEZQdGliXpAOaRL34o8phEvXzEo/VJx13Q==} 253 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 254 | peerDependencies: 255 | eslint: '*' 256 | typescript: '*' 257 | peerDependenciesMeta: 258 | typescript: 259 | optional: true 260 | dependencies: 261 | '@typescript-eslint/typescript-estree': 5.36.1_typescript@4.8.2 262 | '@typescript-eslint/utils': 5.36.1_yqf6kl63nyoq5megxukfnom5rm 263 | debug: 4.3.4 264 | eslint: 8.23.0 265 | tsutils: 3.21.0_typescript@4.8.2 266 | typescript: 4.8.2 267 | transitivePeerDependencies: 268 | - supports-color 269 | dev: true 270 | 271 | /@typescript-eslint/types/5.36.1: 272 | resolution: {integrity: sha512-jd93ShpsIk1KgBTx9E+hCSEuLCUFwi9V/urhjOWnOaksGZFbTOxAT47OH2d4NLJnLhkVD+wDbB48BuaycZPLBg==} 273 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 274 | dev: true 275 | 276 | /@typescript-eslint/typescript-estree/5.36.1_typescript@4.8.2: 277 | resolution: {integrity: sha512-ih7V52zvHdiX6WcPjsOdmADhYMDN15SylWRZrT2OMy80wzKbc79n8wFW0xpWpU0x3VpBz/oDgTm2xwDAnFTl+g==} 278 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 279 | peerDependencies: 280 | typescript: '*' 281 | peerDependenciesMeta: 282 | typescript: 283 | optional: true 284 | dependencies: 285 | '@typescript-eslint/types': 5.36.1 286 | '@typescript-eslint/visitor-keys': 5.36.1 287 | debug: 4.3.4 288 | globby: 11.1.0 289 | is-glob: 4.0.3 290 | semver: 7.3.7 291 | tsutils: 3.21.0_typescript@4.8.2 292 | typescript: 4.8.2 293 | transitivePeerDependencies: 294 | - supports-color 295 | dev: true 296 | 297 | /@typescript-eslint/utils/5.36.1_yqf6kl63nyoq5megxukfnom5rm: 298 | resolution: {integrity: sha512-lNj4FtTiXm5c+u0pUehozaUWhh7UYKnwryku0nxJlYUEWetyG92uw2pr+2Iy4M/u0ONMKzfrx7AsGBTCzORmIg==} 299 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 300 | peerDependencies: 301 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 302 | dependencies: 303 | '@types/json-schema': 7.0.11 304 | '@typescript-eslint/scope-manager': 5.36.1 305 | '@typescript-eslint/types': 5.36.1 306 | '@typescript-eslint/typescript-estree': 5.36.1_typescript@4.8.2 307 | eslint: 8.23.0 308 | eslint-scope: 5.1.1 309 | eslint-utils: 3.0.0_eslint@8.23.0 310 | transitivePeerDependencies: 311 | - supports-color 312 | - typescript 313 | dev: true 314 | 315 | /@typescript-eslint/visitor-keys/5.36.1: 316 | resolution: {integrity: sha512-ojB9aRyRFzVMN3b5joSYni6FAS10BBSCAfKJhjJAV08t/a95aM6tAhz+O1jF+EtgxktuSO3wJysp2R+Def/IWQ==} 317 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 318 | dependencies: 319 | '@typescript-eslint/types': 5.36.1 320 | eslint-visitor-keys: 3.3.0 321 | dev: true 322 | 323 | /@vue/compiler-core/3.2.38: 324 | resolution: {integrity: sha512-/FsvnSu7Z+lkd/8KXMa4yYNUiqQrI22135gfsQYVGuh5tqEgOB0XqrUdb/KnCLa5+TmQLPwvyUnKMyCpu+SX3Q==} 325 | dependencies: 326 | '@babel/parser': 7.18.13 327 | '@vue/shared': 3.2.38 328 | estree-walker: 2.0.2 329 | source-map: 0.6.1 330 | dev: true 331 | 332 | /@vue/compiler-dom/3.2.38: 333 | resolution: {integrity: sha512-zqX4FgUbw56kzHlgYuEEJR8mefFiiyR3u96498+zWPsLeh1WKvgIReoNE+U7gG8bCUdvsrJ0JRmev0Ky6n2O0g==} 334 | dependencies: 335 | '@vue/compiler-core': 3.2.38 336 | '@vue/shared': 3.2.38 337 | dev: true 338 | 339 | /@vue/compiler-sfc/3.2.38: 340 | resolution: {integrity: sha512-KZjrW32KloMYtTcHAFuw3CqsyWc5X6seb8KbkANSWt3Cz9p2qA8c1GJpSkksFP9ABb6an0FLCFl46ZFXx3kKpg==} 341 | dependencies: 342 | '@babel/parser': 7.18.13 343 | '@vue/compiler-core': 3.2.38 344 | '@vue/compiler-dom': 3.2.38 345 | '@vue/compiler-ssr': 3.2.38 346 | '@vue/reactivity-transform': 3.2.38 347 | '@vue/shared': 3.2.38 348 | estree-walker: 2.0.2 349 | magic-string: 0.25.9 350 | postcss: 8.4.16 351 | source-map: 0.6.1 352 | dev: true 353 | 354 | /@vue/compiler-ssr/3.2.38: 355 | resolution: {integrity: sha512-bm9jOeyv1H3UskNm4S6IfueKjUNFmi2kRweFIGnqaGkkRePjwEcfCVqyS3roe7HvF4ugsEkhf4+kIvDhip6XzQ==} 356 | dependencies: 357 | '@vue/compiler-dom': 3.2.38 358 | '@vue/shared': 3.2.38 359 | dev: true 360 | 361 | /@vue/reactivity-transform/3.2.38: 362 | resolution: {integrity: sha512-3SD3Jmi1yXrDwiNJqQ6fs1x61WsDLqVk4NyKVz78mkaIRh6d3IqtRnptgRfXn+Fzf+m6B1KxBYWq1APj6h4qeA==} 363 | dependencies: 364 | '@babel/parser': 7.18.13 365 | '@vue/compiler-core': 3.2.38 366 | '@vue/shared': 3.2.38 367 | estree-walker: 2.0.2 368 | magic-string: 0.25.9 369 | dev: true 370 | 371 | /@vue/reactivity/3.2.38: 372 | resolution: {integrity: sha512-6L4myYcH9HG2M25co7/BSo0skKFHpAN8PhkNPM4xRVkyGl1K5M3Jx4rp5bsYhvYze2K4+l+pioN4e6ZwFLUVtw==} 373 | dependencies: 374 | '@vue/shared': 3.2.38 375 | dev: true 376 | 377 | /@vue/runtime-core/3.2.38: 378 | resolution: {integrity: sha512-kk0qiSiXUU/IKxZw31824rxmFzrLr3TL6ZcbrxWTKivadoKupdlzbQM4SlGo4MU6Zzrqv4fzyUasTU1jDoEnzg==} 379 | dependencies: 380 | '@vue/reactivity': 3.2.38 381 | '@vue/shared': 3.2.38 382 | dev: true 383 | 384 | /@vue/runtime-dom/3.2.38: 385 | resolution: {integrity: sha512-4PKAb/ck2TjxdMSzMsnHViOrrwpudk4/A56uZjhzvusoEU9xqa5dygksbzYepdZeB5NqtRw5fRhWIiQlRVK45A==} 386 | dependencies: 387 | '@vue/runtime-core': 3.2.38 388 | '@vue/shared': 3.2.38 389 | csstype: 2.6.20 390 | dev: true 391 | 392 | /@vue/server-renderer/3.2.38_vue@3.2.38: 393 | resolution: {integrity: sha512-pg+JanpbOZ5kEfOZzO2bt02YHd+ELhYP8zPeLU1H0e7lg079NtuuSB8fjLdn58c4Ou8UQ6C1/P+528nXnLPAhA==} 394 | peerDependencies: 395 | vue: 3.2.38 396 | dependencies: 397 | '@vue/compiler-ssr': 3.2.38 398 | '@vue/shared': 3.2.38 399 | vue: 3.2.38 400 | dev: true 401 | 402 | /@vue/shared/3.2.38: 403 | resolution: {integrity: sha512-dTyhTIRmGXBjxJE+skC8tTWCGLCVc4wQgRRLt8+O9p5ewBAjoBwtCAkLPrtToSr1xltoe3st21Pv953aOZ7alg==} 404 | dev: true 405 | 406 | /acorn-jsx/5.3.2_acorn@8.8.0: 407 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 408 | peerDependencies: 409 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 410 | dependencies: 411 | acorn: 8.8.0 412 | dev: true 413 | 414 | /acorn/8.8.0: 415 | resolution: {integrity: sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==} 416 | engines: {node: '>=0.4.0'} 417 | hasBin: true 418 | dev: true 419 | 420 | /ajv/6.12.6: 421 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 422 | dependencies: 423 | fast-deep-equal: 3.1.3 424 | fast-json-stable-stringify: 2.1.0 425 | json-schema-traverse: 0.4.1 426 | uri-js: 4.4.1 427 | dev: true 428 | 429 | /ansi-regex/5.0.1: 430 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 431 | engines: {node: '>=8'} 432 | dev: true 433 | 434 | /ansi-styles/4.3.0: 435 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 436 | engines: {node: '>=8'} 437 | dependencies: 438 | color-convert: 2.0.1 439 | dev: true 440 | 441 | /argparse/2.0.1: 442 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 443 | dev: true 444 | 445 | /array-includes/3.1.5: 446 | resolution: {integrity: sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ==} 447 | engines: {node: '>= 0.4'} 448 | dependencies: 449 | call-bind: 1.0.2 450 | define-properties: 1.1.4 451 | es-abstract: 1.20.2 452 | get-intrinsic: 1.1.2 453 | is-string: 1.0.7 454 | dev: true 455 | 456 | /array-union/2.1.0: 457 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} 458 | engines: {node: '>=8'} 459 | dev: true 460 | 461 | /array.prototype.flat/1.3.0: 462 | resolution: {integrity: sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==} 463 | engines: {node: '>= 0.4'} 464 | dependencies: 465 | call-bind: 1.0.2 466 | define-properties: 1.1.4 467 | es-abstract: 1.20.2 468 | es-shim-unscopables: 1.0.0 469 | dev: true 470 | 471 | /balanced-match/1.0.2: 472 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 473 | dev: true 474 | 475 | /base64-js/1.5.1: 476 | resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} 477 | dev: true 478 | 479 | /brace-expansion/1.1.11: 480 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 481 | dependencies: 482 | balanced-match: 1.0.2 483 | concat-map: 0.0.1 484 | dev: true 485 | 486 | /braces/3.0.2: 487 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 488 | engines: {node: '>=8'} 489 | dependencies: 490 | fill-range: 7.0.1 491 | dev: true 492 | 493 | /bson/4.7.0: 494 | resolution: {integrity: sha512-VrlEE4vuiO1WTpfof4VmaVolCVYkYTgB9iWgYNOrVlnifpME/06fhFRmONgBhClD5pFC1t9ZWqFUQEQAzY43bA==} 495 | engines: {node: '>=6.9.0'} 496 | dependencies: 497 | buffer: 5.7.1 498 | dev: true 499 | 500 | /buffer/5.7.1: 501 | resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} 502 | dependencies: 503 | base64-js: 1.5.1 504 | ieee754: 1.2.1 505 | dev: true 506 | 507 | /builtins/5.0.1: 508 | resolution: {integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==} 509 | dependencies: 510 | semver: 7.3.7 511 | dev: true 512 | 513 | /call-bind/1.0.2: 514 | resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} 515 | dependencies: 516 | function-bind: 1.1.1 517 | get-intrinsic: 1.1.2 518 | dev: true 519 | 520 | /callsites/3.1.0: 521 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 522 | engines: {node: '>=6'} 523 | dev: true 524 | 525 | /chalk/4.1.2: 526 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 527 | engines: {node: '>=10'} 528 | dependencies: 529 | ansi-styles: 4.3.0 530 | supports-color: 7.2.0 531 | dev: true 532 | 533 | /color-convert/2.0.1: 534 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 535 | engines: {node: '>=7.0.0'} 536 | dependencies: 537 | color-name: 1.1.4 538 | dev: true 539 | 540 | /color-name/1.1.4: 541 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 542 | dev: true 543 | 544 | /concat-map/0.0.1: 545 | resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} 546 | dev: true 547 | 548 | /cross-spawn/7.0.3: 549 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 550 | engines: {node: '>= 8'} 551 | dependencies: 552 | path-key: 3.1.1 553 | shebang-command: 2.0.0 554 | which: 2.0.2 555 | dev: true 556 | 557 | /csstype/2.6.20: 558 | resolution: {integrity: sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA==} 559 | dev: true 560 | 561 | /csstype/3.1.0: 562 | resolution: {integrity: sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA==} 563 | dev: true 564 | 565 | /debug/2.6.9: 566 | resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} 567 | peerDependencies: 568 | supports-color: '*' 569 | peerDependenciesMeta: 570 | supports-color: 571 | optional: true 572 | dependencies: 573 | ms: 2.0.0 574 | dev: true 575 | 576 | /debug/3.2.7: 577 | resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} 578 | peerDependencies: 579 | supports-color: '*' 580 | peerDependenciesMeta: 581 | supports-color: 582 | optional: true 583 | dependencies: 584 | ms: 2.1.3 585 | dev: true 586 | 587 | /debug/4.3.4: 588 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 589 | engines: {node: '>=6.0'} 590 | peerDependencies: 591 | supports-color: '*' 592 | peerDependenciesMeta: 593 | supports-color: 594 | optional: true 595 | dependencies: 596 | ms: 2.1.2 597 | dev: true 598 | 599 | /deep-is/0.1.4: 600 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 601 | dev: true 602 | 603 | /define-properties/1.1.4: 604 | resolution: {integrity: sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==} 605 | engines: {node: '>= 0.4'} 606 | dependencies: 607 | has-property-descriptors: 1.0.0 608 | object-keys: 1.1.1 609 | dev: true 610 | 611 | /dir-glob/3.0.1: 612 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} 613 | engines: {node: '>=8'} 614 | dependencies: 615 | path-type: 4.0.0 616 | dev: true 617 | 618 | /doctrine/2.1.0: 619 | resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} 620 | engines: {node: '>=0.10.0'} 621 | dependencies: 622 | esutils: 2.0.3 623 | dev: true 624 | 625 | /doctrine/3.0.0: 626 | resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} 627 | engines: {node: '>=6.0.0'} 628 | dependencies: 629 | esutils: 2.0.3 630 | dev: true 631 | 632 | /es-abstract/1.20.2: 633 | resolution: {integrity: sha512-XxXQuVNrySBNlEkTYJoDNFe5+s2yIOpzq80sUHEdPdQr0S5nTLz4ZPPPswNIpKseDDUS5yghX1gfLIHQZ1iNuQ==} 634 | engines: {node: '>= 0.4'} 635 | dependencies: 636 | call-bind: 1.0.2 637 | es-to-primitive: 1.2.1 638 | function-bind: 1.1.1 639 | function.prototype.name: 1.1.5 640 | get-intrinsic: 1.1.2 641 | get-symbol-description: 1.0.0 642 | has: 1.0.3 643 | has-property-descriptors: 1.0.0 644 | has-symbols: 1.0.3 645 | internal-slot: 1.0.3 646 | is-callable: 1.2.4 647 | is-negative-zero: 2.0.2 648 | is-regex: 1.1.4 649 | is-shared-array-buffer: 1.0.2 650 | is-string: 1.0.7 651 | is-weakref: 1.0.2 652 | object-inspect: 1.12.2 653 | object-keys: 1.1.1 654 | object.assign: 4.1.4 655 | regexp.prototype.flags: 1.4.3 656 | string.prototype.trimend: 1.0.5 657 | string.prototype.trimstart: 1.0.5 658 | unbox-primitive: 1.0.2 659 | dev: true 660 | 661 | /es-shim-unscopables/1.0.0: 662 | resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} 663 | dependencies: 664 | has: 1.0.3 665 | dev: true 666 | 667 | /es-to-primitive/1.2.1: 668 | resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} 669 | engines: {node: '>= 0.4'} 670 | dependencies: 671 | is-callable: 1.2.4 672 | is-date-object: 1.0.5 673 | is-symbol: 1.0.4 674 | dev: true 675 | 676 | /escape-string-regexp/4.0.0: 677 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 678 | engines: {node: '>=10'} 679 | dev: true 680 | 681 | /eslint-config-standard/17.0.0_ci7jzfiysajw25w4iodapaa2cq: 682 | resolution: {integrity: sha512-/2ks1GKyqSOkH7JFvXJicu0iMpoojkwB+f5Du/1SC0PtBL+s8v30k9njRZ21pm2drKYm2342jFnGWzttxPmZVg==} 683 | peerDependencies: 684 | eslint: ^8.0.1 685 | eslint-plugin-import: ^2.25.2 686 | eslint-plugin-n: ^15.0.0 687 | eslint-plugin-promise: ^6.0.0 688 | dependencies: 689 | eslint: 8.23.0 690 | eslint-plugin-import: 2.26.0_wyxuyzvlfep3lsyoibc4fosfq4 691 | eslint-plugin-n: 15.2.5_eslint@8.23.0 692 | eslint-plugin-promise: 6.0.1_eslint@8.23.0 693 | dev: true 694 | 695 | /eslint-import-resolver-node/0.3.6: 696 | resolution: {integrity: sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==} 697 | dependencies: 698 | debug: 3.2.7 699 | resolve: 1.22.1 700 | transitivePeerDependencies: 701 | - supports-color 702 | dev: true 703 | 704 | /eslint-module-utils/2.7.4_ykymimdrk6u2mbikrjd7umy4sm: 705 | resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==} 706 | engines: {node: '>=4'} 707 | peerDependencies: 708 | '@typescript-eslint/parser': '*' 709 | eslint: '*' 710 | eslint-import-resolver-node: '*' 711 | eslint-import-resolver-typescript: '*' 712 | eslint-import-resolver-webpack: '*' 713 | peerDependenciesMeta: 714 | '@typescript-eslint/parser': 715 | optional: true 716 | eslint: 717 | optional: true 718 | eslint-import-resolver-node: 719 | optional: true 720 | eslint-import-resolver-typescript: 721 | optional: true 722 | eslint-import-resolver-webpack: 723 | optional: true 724 | dependencies: 725 | '@typescript-eslint/parser': 5.36.1_yqf6kl63nyoq5megxukfnom5rm 726 | debug: 3.2.7 727 | eslint: 8.23.0 728 | eslint-import-resolver-node: 0.3.6 729 | transitivePeerDependencies: 730 | - supports-color 731 | dev: true 732 | 733 | /eslint-plugin-es/3.0.1_eslint@8.23.0: 734 | resolution: {integrity: sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==} 735 | engines: {node: '>=8.10.0'} 736 | peerDependencies: 737 | eslint: '>=4.19.1' 738 | dependencies: 739 | eslint: 8.23.0 740 | eslint-utils: 2.1.0 741 | regexpp: 3.2.0 742 | dev: true 743 | 744 | /eslint-plugin-es/4.1.0_eslint@8.23.0: 745 | resolution: {integrity: sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==} 746 | engines: {node: '>=8.10.0'} 747 | peerDependencies: 748 | eslint: '>=4.19.1' 749 | dependencies: 750 | eslint: 8.23.0 751 | eslint-utils: 2.1.0 752 | regexpp: 3.2.0 753 | dev: true 754 | 755 | /eslint-plugin-import/2.26.0_wyxuyzvlfep3lsyoibc4fosfq4: 756 | resolution: {integrity: sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==} 757 | engines: {node: '>=4'} 758 | peerDependencies: 759 | '@typescript-eslint/parser': '*' 760 | eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 761 | peerDependenciesMeta: 762 | '@typescript-eslint/parser': 763 | optional: true 764 | dependencies: 765 | '@typescript-eslint/parser': 5.36.1_yqf6kl63nyoq5megxukfnom5rm 766 | array-includes: 3.1.5 767 | array.prototype.flat: 1.3.0 768 | debug: 2.6.9 769 | doctrine: 2.1.0 770 | eslint: 8.23.0 771 | eslint-import-resolver-node: 0.3.6 772 | eslint-module-utils: 2.7.4_ykymimdrk6u2mbikrjd7umy4sm 773 | has: 1.0.3 774 | is-core-module: 2.10.0 775 | is-glob: 4.0.3 776 | minimatch: 3.1.2 777 | object.values: 1.1.5 778 | resolve: 1.22.1 779 | tsconfig-paths: 3.14.1 780 | transitivePeerDependencies: 781 | - eslint-import-resolver-typescript 782 | - eslint-import-resolver-webpack 783 | - supports-color 784 | dev: true 785 | 786 | /eslint-plugin-n/15.2.5_eslint@8.23.0: 787 | resolution: {integrity: sha512-8+BYsqiyZfpu6NXmdLOXVUfk8IocpCjpd8nMRRH0A9ulrcemhb2VI9RSJMEy5udx++A/YcVPD11zT8hpFq368g==} 788 | engines: {node: '>=12.22.0'} 789 | peerDependencies: 790 | eslint: '>=7.0.0' 791 | dependencies: 792 | builtins: 5.0.1 793 | eslint: 8.23.0 794 | eslint-plugin-es: 4.1.0_eslint@8.23.0 795 | eslint-utils: 3.0.0_eslint@8.23.0 796 | ignore: 5.2.0 797 | is-core-module: 2.10.0 798 | minimatch: 3.1.2 799 | resolve: 1.22.1 800 | semver: 7.3.7 801 | dev: true 802 | 803 | /eslint-plugin-node/11.1.0_eslint@8.23.0: 804 | resolution: {integrity: sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==} 805 | engines: {node: '>=8.10.0'} 806 | peerDependencies: 807 | eslint: '>=5.16.0' 808 | dependencies: 809 | eslint: 8.23.0 810 | eslint-plugin-es: 3.0.1_eslint@8.23.0 811 | eslint-utils: 2.1.0 812 | ignore: 5.2.0 813 | minimatch: 3.1.2 814 | resolve: 1.22.1 815 | semver: 6.3.0 816 | dev: true 817 | 818 | /eslint-plugin-promise/6.0.1_eslint@8.23.0: 819 | resolution: {integrity: sha512-uM4Tgo5u3UWQiroOyDEsYcVMOo7re3zmno0IZmB5auxoaQNIceAbXEkSt8RNrKtaYehARHG06pYK6K1JhtP0Zw==} 820 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 821 | peerDependencies: 822 | eslint: ^7.0.0 || ^8.0.0 823 | dependencies: 824 | eslint: 8.23.0 825 | dev: true 826 | 827 | /eslint-scope/5.1.1: 828 | resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} 829 | engines: {node: '>=8.0.0'} 830 | dependencies: 831 | esrecurse: 4.3.0 832 | estraverse: 4.3.0 833 | dev: true 834 | 835 | /eslint-scope/7.1.1: 836 | resolution: {integrity: sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==} 837 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 838 | dependencies: 839 | esrecurse: 4.3.0 840 | estraverse: 5.3.0 841 | dev: true 842 | 843 | /eslint-utils/2.1.0: 844 | resolution: {integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==} 845 | engines: {node: '>=6'} 846 | dependencies: 847 | eslint-visitor-keys: 1.3.0 848 | dev: true 849 | 850 | /eslint-utils/3.0.0_eslint@8.23.0: 851 | resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} 852 | engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} 853 | peerDependencies: 854 | eslint: '>=5' 855 | dependencies: 856 | eslint: 8.23.0 857 | eslint-visitor-keys: 2.1.0 858 | dev: true 859 | 860 | /eslint-visitor-keys/1.3.0: 861 | resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==} 862 | engines: {node: '>=4'} 863 | dev: true 864 | 865 | /eslint-visitor-keys/2.1.0: 866 | resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} 867 | engines: {node: '>=10'} 868 | dev: true 869 | 870 | /eslint-visitor-keys/3.3.0: 871 | resolution: {integrity: sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==} 872 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 873 | dev: true 874 | 875 | /eslint/8.23.0: 876 | resolution: {integrity: sha512-pBG/XOn0MsJcKcTRLr27S5HpzQo4kLr+HjLQIyK4EiCsijDl/TB+h5uEuJU6bQ8Edvwz1XWOjpaP2qgnXGpTcA==} 877 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 878 | hasBin: true 879 | dependencies: 880 | '@eslint/eslintrc': 1.3.1 881 | '@humanwhocodes/config-array': 0.10.4 882 | '@humanwhocodes/gitignore-to-minimatch': 1.0.2 883 | '@humanwhocodes/module-importer': 1.0.1 884 | ajv: 6.12.6 885 | chalk: 4.1.2 886 | cross-spawn: 7.0.3 887 | debug: 4.3.4 888 | doctrine: 3.0.0 889 | escape-string-regexp: 4.0.0 890 | eslint-scope: 7.1.1 891 | eslint-utils: 3.0.0_eslint@8.23.0 892 | eslint-visitor-keys: 3.3.0 893 | espree: 9.4.0 894 | esquery: 1.4.0 895 | esutils: 2.0.3 896 | fast-deep-equal: 3.1.3 897 | file-entry-cache: 6.0.1 898 | find-up: 5.0.0 899 | functional-red-black-tree: 1.0.1 900 | glob-parent: 6.0.2 901 | globals: 13.17.0 902 | globby: 11.1.0 903 | grapheme-splitter: 1.0.4 904 | ignore: 5.2.0 905 | import-fresh: 3.3.0 906 | imurmurhash: 0.1.4 907 | is-glob: 4.0.3 908 | js-yaml: 4.1.0 909 | json-stable-stringify-without-jsonify: 1.0.1 910 | levn: 0.4.1 911 | lodash.merge: 4.6.2 912 | minimatch: 3.1.2 913 | natural-compare: 1.4.0 914 | optionator: 0.9.1 915 | regexpp: 3.2.0 916 | strip-ansi: 6.0.1 917 | strip-json-comments: 3.1.1 918 | text-table: 0.2.0 919 | transitivePeerDependencies: 920 | - supports-color 921 | dev: true 922 | 923 | /espree/9.4.0: 924 | resolution: {integrity: sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==} 925 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 926 | dependencies: 927 | acorn: 8.8.0 928 | acorn-jsx: 5.3.2_acorn@8.8.0 929 | eslint-visitor-keys: 3.3.0 930 | dev: true 931 | 932 | /esquery/1.4.0: 933 | resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==} 934 | engines: {node: '>=0.10'} 935 | dependencies: 936 | estraverse: 5.3.0 937 | dev: true 938 | 939 | /esrecurse/4.3.0: 940 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 941 | engines: {node: '>=4.0'} 942 | dependencies: 943 | estraverse: 5.3.0 944 | dev: true 945 | 946 | /estraverse/4.3.0: 947 | resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} 948 | engines: {node: '>=4.0'} 949 | dev: true 950 | 951 | /estraverse/5.3.0: 952 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 953 | engines: {node: '>=4.0'} 954 | dev: true 955 | 956 | /estree-walker/2.0.2: 957 | resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} 958 | dev: true 959 | 960 | /esutils/2.0.3: 961 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 962 | engines: {node: '>=0.10.0'} 963 | dev: true 964 | 965 | /fast-deep-equal/3.1.3: 966 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 967 | dev: true 968 | 969 | /fast-glob/3.2.11: 970 | resolution: {integrity: sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==} 971 | engines: {node: '>=8.6.0'} 972 | dependencies: 973 | '@nodelib/fs.stat': 2.0.5 974 | '@nodelib/fs.walk': 1.2.8 975 | glob-parent: 5.1.2 976 | merge2: 1.4.1 977 | micromatch: 4.0.5 978 | dev: true 979 | 980 | /fast-json-stable-stringify/2.1.0: 981 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 982 | dev: true 983 | 984 | /fast-levenshtein/2.0.6: 985 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 986 | dev: true 987 | 988 | /fastq/1.13.0: 989 | resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==} 990 | dependencies: 991 | reusify: 1.0.4 992 | dev: true 993 | 994 | /file-entry-cache/6.0.1: 995 | resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} 996 | engines: {node: ^10.12.0 || >=12.0.0} 997 | dependencies: 998 | flat-cache: 3.0.4 999 | dev: true 1000 | 1001 | /fill-range/7.0.1: 1002 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 1003 | engines: {node: '>=8'} 1004 | dependencies: 1005 | to-regex-range: 5.0.1 1006 | dev: true 1007 | 1008 | /find-up/5.0.0: 1009 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 1010 | engines: {node: '>=10'} 1011 | dependencies: 1012 | locate-path: 6.0.0 1013 | path-exists: 4.0.0 1014 | dev: true 1015 | 1016 | /flat-cache/3.0.4: 1017 | resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} 1018 | engines: {node: ^10.12.0 || >=12.0.0} 1019 | dependencies: 1020 | flatted: 3.2.7 1021 | rimraf: 3.0.2 1022 | dev: true 1023 | 1024 | /flatted/3.2.7: 1025 | resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} 1026 | dev: true 1027 | 1028 | /fs.realpath/1.0.0: 1029 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} 1030 | dev: true 1031 | 1032 | /function-bind/1.1.1: 1033 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} 1034 | dev: true 1035 | 1036 | /function.prototype.name/1.1.5: 1037 | resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} 1038 | engines: {node: '>= 0.4'} 1039 | dependencies: 1040 | call-bind: 1.0.2 1041 | define-properties: 1.1.4 1042 | es-abstract: 1.20.2 1043 | functions-have-names: 1.2.3 1044 | dev: true 1045 | 1046 | /functional-red-black-tree/1.0.1: 1047 | resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==} 1048 | dev: true 1049 | 1050 | /functions-have-names/1.2.3: 1051 | resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} 1052 | dev: true 1053 | 1054 | /get-intrinsic/1.1.2: 1055 | resolution: {integrity: sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==} 1056 | dependencies: 1057 | function-bind: 1.1.1 1058 | has: 1.0.3 1059 | has-symbols: 1.0.3 1060 | dev: true 1061 | 1062 | /get-symbol-description/1.0.0: 1063 | resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} 1064 | engines: {node: '>= 0.4'} 1065 | dependencies: 1066 | call-bind: 1.0.2 1067 | get-intrinsic: 1.1.2 1068 | dev: true 1069 | 1070 | /glob-parent/5.1.2: 1071 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 1072 | engines: {node: '>= 6'} 1073 | dependencies: 1074 | is-glob: 4.0.3 1075 | dev: true 1076 | 1077 | /glob-parent/6.0.2: 1078 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 1079 | engines: {node: '>=10.13.0'} 1080 | dependencies: 1081 | is-glob: 4.0.3 1082 | dev: true 1083 | 1084 | /glob/7.2.3: 1085 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} 1086 | dependencies: 1087 | fs.realpath: 1.0.0 1088 | inflight: 1.0.6 1089 | inherits: 2.0.4 1090 | minimatch: 3.1.2 1091 | once: 1.4.0 1092 | path-is-absolute: 1.0.1 1093 | dev: true 1094 | 1095 | /globals/13.17.0: 1096 | resolution: {integrity: sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==} 1097 | engines: {node: '>=8'} 1098 | dependencies: 1099 | type-fest: 0.20.2 1100 | dev: true 1101 | 1102 | /globby/11.1.0: 1103 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} 1104 | engines: {node: '>=10'} 1105 | dependencies: 1106 | array-union: 2.1.0 1107 | dir-glob: 3.0.1 1108 | fast-glob: 3.2.11 1109 | ignore: 5.2.0 1110 | merge2: 1.4.1 1111 | slash: 3.0.0 1112 | dev: true 1113 | 1114 | /grapheme-splitter/1.0.4: 1115 | resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} 1116 | dev: true 1117 | 1118 | /has-bigints/1.0.2: 1119 | resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} 1120 | dev: true 1121 | 1122 | /has-flag/4.0.0: 1123 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 1124 | engines: {node: '>=8'} 1125 | dev: true 1126 | 1127 | /has-property-descriptors/1.0.0: 1128 | resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} 1129 | dependencies: 1130 | get-intrinsic: 1.1.2 1131 | dev: true 1132 | 1133 | /has-symbols/1.0.3: 1134 | resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} 1135 | engines: {node: '>= 0.4'} 1136 | dev: true 1137 | 1138 | /has-tostringtag/1.0.0: 1139 | resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} 1140 | engines: {node: '>= 0.4'} 1141 | dependencies: 1142 | has-symbols: 1.0.3 1143 | dev: true 1144 | 1145 | /has/1.0.3: 1146 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} 1147 | engines: {node: '>= 0.4.0'} 1148 | dependencies: 1149 | function-bind: 1.1.1 1150 | dev: true 1151 | 1152 | /ieee754/1.2.1: 1153 | resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} 1154 | dev: true 1155 | 1156 | /ignore/5.2.0: 1157 | resolution: {integrity: sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==} 1158 | engines: {node: '>= 4'} 1159 | dev: true 1160 | 1161 | /import-fresh/3.3.0: 1162 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 1163 | engines: {node: '>=6'} 1164 | dependencies: 1165 | parent-module: 1.0.1 1166 | resolve-from: 4.0.0 1167 | dev: true 1168 | 1169 | /imurmurhash/0.1.4: 1170 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 1171 | engines: {node: '>=0.8.19'} 1172 | dev: true 1173 | 1174 | /inflight/1.0.6: 1175 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} 1176 | dependencies: 1177 | once: 1.4.0 1178 | wrappy: 1.0.2 1179 | dev: true 1180 | 1181 | /inherits/2.0.4: 1182 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 1183 | dev: true 1184 | 1185 | /internal-slot/1.0.3: 1186 | resolution: {integrity: sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==} 1187 | engines: {node: '>= 0.4'} 1188 | dependencies: 1189 | get-intrinsic: 1.1.2 1190 | has: 1.0.3 1191 | side-channel: 1.0.4 1192 | dev: true 1193 | 1194 | /is-bigint/1.0.4: 1195 | resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} 1196 | dependencies: 1197 | has-bigints: 1.0.2 1198 | dev: true 1199 | 1200 | /is-boolean-object/1.1.2: 1201 | resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} 1202 | engines: {node: '>= 0.4'} 1203 | dependencies: 1204 | call-bind: 1.0.2 1205 | has-tostringtag: 1.0.0 1206 | dev: true 1207 | 1208 | /is-callable/1.2.4: 1209 | resolution: {integrity: sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==} 1210 | engines: {node: '>= 0.4'} 1211 | dev: true 1212 | 1213 | /is-core-module/2.10.0: 1214 | resolution: {integrity: sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==} 1215 | dependencies: 1216 | has: 1.0.3 1217 | dev: true 1218 | 1219 | /is-date-object/1.0.5: 1220 | resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} 1221 | engines: {node: '>= 0.4'} 1222 | dependencies: 1223 | has-tostringtag: 1.0.0 1224 | dev: true 1225 | 1226 | /is-extglob/2.1.1: 1227 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 1228 | engines: {node: '>=0.10.0'} 1229 | dev: true 1230 | 1231 | /is-glob/4.0.3: 1232 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1233 | engines: {node: '>=0.10.0'} 1234 | dependencies: 1235 | is-extglob: 2.1.1 1236 | dev: true 1237 | 1238 | /is-negative-zero/2.0.2: 1239 | resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} 1240 | engines: {node: '>= 0.4'} 1241 | dev: true 1242 | 1243 | /is-number-object/1.0.7: 1244 | resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} 1245 | engines: {node: '>= 0.4'} 1246 | dependencies: 1247 | has-tostringtag: 1.0.0 1248 | dev: true 1249 | 1250 | /is-number/7.0.0: 1251 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1252 | engines: {node: '>=0.12.0'} 1253 | dev: true 1254 | 1255 | /is-regex/1.1.4: 1256 | resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} 1257 | engines: {node: '>= 0.4'} 1258 | dependencies: 1259 | call-bind: 1.0.2 1260 | has-tostringtag: 1.0.0 1261 | dev: true 1262 | 1263 | /is-shared-array-buffer/1.0.2: 1264 | resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} 1265 | dependencies: 1266 | call-bind: 1.0.2 1267 | dev: true 1268 | 1269 | /is-string/1.0.7: 1270 | resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} 1271 | engines: {node: '>= 0.4'} 1272 | dependencies: 1273 | has-tostringtag: 1.0.0 1274 | dev: true 1275 | 1276 | /is-symbol/1.0.4: 1277 | resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} 1278 | engines: {node: '>= 0.4'} 1279 | dependencies: 1280 | has-symbols: 1.0.3 1281 | dev: true 1282 | 1283 | /is-weakref/1.0.2: 1284 | resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} 1285 | dependencies: 1286 | call-bind: 1.0.2 1287 | dev: true 1288 | 1289 | /isexe/2.0.0: 1290 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 1291 | dev: true 1292 | 1293 | /js-yaml/4.1.0: 1294 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 1295 | hasBin: true 1296 | dependencies: 1297 | argparse: 2.0.1 1298 | dev: true 1299 | 1300 | /json-schema-traverse/0.4.1: 1301 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 1302 | dev: true 1303 | 1304 | /json-stable-stringify-without-jsonify/1.0.1: 1305 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 1306 | dev: true 1307 | 1308 | /json5/1.0.1: 1309 | resolution: {integrity: sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==} 1310 | hasBin: true 1311 | dependencies: 1312 | minimist: 1.2.6 1313 | dev: true 1314 | 1315 | /levn/0.4.1: 1316 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 1317 | engines: {node: '>= 0.8.0'} 1318 | dependencies: 1319 | prelude-ls: 1.2.1 1320 | type-check: 0.4.0 1321 | dev: true 1322 | 1323 | /locate-path/6.0.0: 1324 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 1325 | engines: {node: '>=10'} 1326 | dependencies: 1327 | p-locate: 5.0.0 1328 | dev: true 1329 | 1330 | /lodash.merge/4.6.2: 1331 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 1332 | dev: true 1333 | 1334 | /lru-cache/6.0.0: 1335 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} 1336 | engines: {node: '>=10'} 1337 | dependencies: 1338 | yallist: 4.0.0 1339 | dev: true 1340 | 1341 | /magic-string/0.25.9: 1342 | resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} 1343 | dependencies: 1344 | sourcemap-codec: 1.4.8 1345 | dev: true 1346 | 1347 | /merge2/1.4.1: 1348 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 1349 | engines: {node: '>= 8'} 1350 | dev: true 1351 | 1352 | /micromatch/4.0.5: 1353 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} 1354 | engines: {node: '>=8.6'} 1355 | dependencies: 1356 | braces: 3.0.2 1357 | picomatch: 2.3.1 1358 | dev: true 1359 | 1360 | /minimatch/3.1.2: 1361 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 1362 | dependencies: 1363 | brace-expansion: 1.1.11 1364 | dev: true 1365 | 1366 | /minimist/1.2.6: 1367 | resolution: {integrity: sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==} 1368 | dev: true 1369 | 1370 | /ms/2.0.0: 1371 | resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} 1372 | dev: true 1373 | 1374 | /ms/2.1.2: 1375 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 1376 | dev: true 1377 | 1378 | /ms/2.1.3: 1379 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 1380 | dev: true 1381 | 1382 | /nanoid/3.3.4: 1383 | resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} 1384 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 1385 | hasBin: true 1386 | dev: true 1387 | 1388 | /natural-compare/1.4.0: 1389 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 1390 | dev: true 1391 | 1392 | /object-inspect/1.12.2: 1393 | resolution: {integrity: sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==} 1394 | dev: true 1395 | 1396 | /object-keys/1.1.1: 1397 | resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} 1398 | engines: {node: '>= 0.4'} 1399 | dev: true 1400 | 1401 | /object.assign/4.1.4: 1402 | resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} 1403 | engines: {node: '>= 0.4'} 1404 | dependencies: 1405 | call-bind: 1.0.2 1406 | define-properties: 1.1.4 1407 | has-symbols: 1.0.3 1408 | object-keys: 1.1.1 1409 | dev: true 1410 | 1411 | /object.values/1.1.5: 1412 | resolution: {integrity: sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==} 1413 | engines: {node: '>= 0.4'} 1414 | dependencies: 1415 | call-bind: 1.0.2 1416 | define-properties: 1.1.4 1417 | es-abstract: 1.20.2 1418 | dev: true 1419 | 1420 | /once/1.4.0: 1421 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 1422 | dependencies: 1423 | wrappy: 1.0.2 1424 | dev: true 1425 | 1426 | /optionator/0.9.1: 1427 | resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} 1428 | engines: {node: '>= 0.8.0'} 1429 | dependencies: 1430 | deep-is: 0.1.4 1431 | fast-levenshtein: 2.0.6 1432 | levn: 0.4.1 1433 | prelude-ls: 1.2.1 1434 | type-check: 0.4.0 1435 | word-wrap: 1.2.3 1436 | dev: true 1437 | 1438 | /p-limit/3.1.0: 1439 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 1440 | engines: {node: '>=10'} 1441 | dependencies: 1442 | yocto-queue: 0.1.0 1443 | dev: true 1444 | 1445 | /p-locate/5.0.0: 1446 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 1447 | engines: {node: '>=10'} 1448 | dependencies: 1449 | p-limit: 3.1.0 1450 | dev: true 1451 | 1452 | /parent-module/1.0.1: 1453 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 1454 | engines: {node: '>=6'} 1455 | dependencies: 1456 | callsites: 3.1.0 1457 | dev: true 1458 | 1459 | /path-exists/4.0.0: 1460 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 1461 | engines: {node: '>=8'} 1462 | dev: true 1463 | 1464 | /path-is-absolute/1.0.1: 1465 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} 1466 | engines: {node: '>=0.10.0'} 1467 | dev: true 1468 | 1469 | /path-key/3.1.1: 1470 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 1471 | engines: {node: '>=8'} 1472 | dev: true 1473 | 1474 | /path-parse/1.0.7: 1475 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 1476 | dev: true 1477 | 1478 | /path-type/4.0.0: 1479 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} 1480 | engines: {node: '>=8'} 1481 | dev: true 1482 | 1483 | /picocolors/1.0.0: 1484 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 1485 | dev: true 1486 | 1487 | /picomatch/2.3.1: 1488 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1489 | engines: {node: '>=8.6'} 1490 | dev: true 1491 | 1492 | /postcss/8.4.16: 1493 | resolution: {integrity: sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==} 1494 | engines: {node: ^10 || ^12 || >=14} 1495 | dependencies: 1496 | nanoid: 3.3.4 1497 | picocolors: 1.0.0 1498 | source-map-js: 1.0.2 1499 | dev: true 1500 | 1501 | /prelude-ls/1.2.1: 1502 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 1503 | engines: {node: '>= 0.8.0'} 1504 | dev: true 1505 | 1506 | /punycode/2.1.1: 1507 | resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} 1508 | engines: {node: '>=6'} 1509 | dev: true 1510 | 1511 | /queue-microtask/1.2.3: 1512 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 1513 | dev: true 1514 | 1515 | /regexp.prototype.flags/1.4.3: 1516 | resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==} 1517 | engines: {node: '>= 0.4'} 1518 | dependencies: 1519 | call-bind: 1.0.2 1520 | define-properties: 1.1.4 1521 | functions-have-names: 1.2.3 1522 | dev: true 1523 | 1524 | /regexpp/3.2.0: 1525 | resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} 1526 | engines: {node: '>=8'} 1527 | dev: true 1528 | 1529 | /resolve-from/4.0.0: 1530 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 1531 | engines: {node: '>=4'} 1532 | dev: true 1533 | 1534 | /resolve/1.22.1: 1535 | resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} 1536 | hasBin: true 1537 | dependencies: 1538 | is-core-module: 2.10.0 1539 | path-parse: 1.0.7 1540 | supports-preserve-symlinks-flag: 1.0.0 1541 | dev: true 1542 | 1543 | /reusify/1.0.4: 1544 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 1545 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 1546 | dev: true 1547 | 1548 | /rimraf/3.0.2: 1549 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} 1550 | hasBin: true 1551 | dependencies: 1552 | glob: 7.2.3 1553 | dev: true 1554 | 1555 | /run-parallel/1.2.0: 1556 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 1557 | dependencies: 1558 | queue-microtask: 1.2.3 1559 | dev: true 1560 | 1561 | /semver/6.3.0: 1562 | resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} 1563 | hasBin: true 1564 | dev: true 1565 | 1566 | /semver/7.3.7: 1567 | resolution: {integrity: sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==} 1568 | engines: {node: '>=10'} 1569 | hasBin: true 1570 | dependencies: 1571 | lru-cache: 6.0.0 1572 | dev: true 1573 | 1574 | /shebang-command/2.0.0: 1575 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 1576 | engines: {node: '>=8'} 1577 | dependencies: 1578 | shebang-regex: 3.0.0 1579 | dev: true 1580 | 1581 | /shebang-regex/3.0.0: 1582 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 1583 | engines: {node: '>=8'} 1584 | dev: true 1585 | 1586 | /side-channel/1.0.4: 1587 | resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} 1588 | dependencies: 1589 | call-bind: 1.0.2 1590 | get-intrinsic: 1.1.2 1591 | object-inspect: 1.12.2 1592 | dev: true 1593 | 1594 | /slash/3.0.0: 1595 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 1596 | engines: {node: '>=8'} 1597 | dev: true 1598 | 1599 | /source-map-js/1.0.2: 1600 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} 1601 | engines: {node: '>=0.10.0'} 1602 | dev: true 1603 | 1604 | /source-map/0.6.1: 1605 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} 1606 | engines: {node: '>=0.10.0'} 1607 | dev: true 1608 | 1609 | /sourcemap-codec/1.4.8: 1610 | resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} 1611 | dev: true 1612 | 1613 | /string.prototype.trimend/1.0.5: 1614 | resolution: {integrity: sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==} 1615 | dependencies: 1616 | call-bind: 1.0.2 1617 | define-properties: 1.1.4 1618 | es-abstract: 1.20.2 1619 | dev: true 1620 | 1621 | /string.prototype.trimstart/1.0.5: 1622 | resolution: {integrity: sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==} 1623 | dependencies: 1624 | call-bind: 1.0.2 1625 | define-properties: 1.1.4 1626 | es-abstract: 1.20.2 1627 | dev: true 1628 | 1629 | /strip-ansi/6.0.1: 1630 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 1631 | engines: {node: '>=8'} 1632 | dependencies: 1633 | ansi-regex: 5.0.1 1634 | dev: true 1635 | 1636 | /strip-bom/3.0.0: 1637 | resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} 1638 | engines: {node: '>=4'} 1639 | dev: true 1640 | 1641 | /strip-json-comments/3.1.1: 1642 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 1643 | engines: {node: '>=8'} 1644 | dev: true 1645 | 1646 | /supports-color/7.2.0: 1647 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 1648 | engines: {node: '>=8'} 1649 | dependencies: 1650 | has-flag: 4.0.0 1651 | dev: true 1652 | 1653 | /supports-preserve-symlinks-flag/1.0.0: 1654 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 1655 | engines: {node: '>= 0.4'} 1656 | dev: true 1657 | 1658 | /text-table/0.2.0: 1659 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} 1660 | dev: true 1661 | 1662 | /to-fast-properties/2.0.0: 1663 | resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} 1664 | engines: {node: '>=4'} 1665 | dev: true 1666 | 1667 | /to-regex-range/5.0.1: 1668 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 1669 | engines: {node: '>=8.0'} 1670 | dependencies: 1671 | is-number: 7.0.0 1672 | dev: true 1673 | 1674 | /tsconfig-paths/3.14.1: 1675 | resolution: {integrity: sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==} 1676 | dependencies: 1677 | '@types/json5': 0.0.29 1678 | json5: 1.0.1 1679 | minimist: 1.2.6 1680 | strip-bom: 3.0.0 1681 | dev: true 1682 | 1683 | /tslib/1.14.1: 1684 | resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} 1685 | dev: true 1686 | 1687 | /tsutils/3.21.0_typescript@4.8.2: 1688 | resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} 1689 | engines: {node: '>= 6'} 1690 | peerDependencies: 1691 | 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' 1692 | dependencies: 1693 | tslib: 1.14.1 1694 | typescript: 4.8.2 1695 | dev: true 1696 | 1697 | /type-check/0.4.0: 1698 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 1699 | engines: {node: '>= 0.8.0'} 1700 | dependencies: 1701 | prelude-ls: 1.2.1 1702 | dev: true 1703 | 1704 | /type-fest/0.20.2: 1705 | resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} 1706 | engines: {node: '>=10'} 1707 | dev: true 1708 | 1709 | /typescript/4.8.2: 1710 | resolution: {integrity: sha512-C0I1UsrrDHo2fYI5oaCGbSejwX4ch+9Y5jTQELvovfmFkK3HHSZJB8MSJcWLmCUBzQBchCrZ9rMRV6GuNrvGtw==} 1711 | engines: {node: '>=4.2.0'} 1712 | hasBin: true 1713 | dev: true 1714 | 1715 | /unbox-primitive/1.0.2: 1716 | resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} 1717 | dependencies: 1718 | call-bind: 1.0.2 1719 | has-bigints: 1.0.2 1720 | has-symbols: 1.0.3 1721 | which-boxed-primitive: 1.0.2 1722 | dev: true 1723 | 1724 | /uri-js/4.4.1: 1725 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 1726 | dependencies: 1727 | punycode: 2.1.1 1728 | dev: true 1729 | 1730 | /vue/3.2.38: 1731 | resolution: {integrity: sha512-hHrScEFSmDAWL0cwO4B6WO7D3sALZPbfuThDsGBebthrNlDxdJZpGR3WB87VbjpPh96mep1+KzukYEhpHDFa8Q==} 1732 | dependencies: 1733 | '@vue/compiler-dom': 3.2.38 1734 | '@vue/compiler-sfc': 3.2.38 1735 | '@vue/runtime-dom': 3.2.38 1736 | '@vue/server-renderer': 3.2.38_vue@3.2.38 1737 | '@vue/shared': 3.2.38 1738 | dev: true 1739 | 1740 | /which-boxed-primitive/1.0.2: 1741 | resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} 1742 | dependencies: 1743 | is-bigint: 1.0.4 1744 | is-boolean-object: 1.1.2 1745 | is-number-object: 1.0.7 1746 | is-string: 1.0.7 1747 | is-symbol: 1.0.4 1748 | dev: true 1749 | 1750 | /which/2.0.2: 1751 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 1752 | engines: {node: '>= 8'} 1753 | hasBin: true 1754 | dependencies: 1755 | isexe: 2.0.0 1756 | dev: true 1757 | 1758 | /word-wrap/1.2.3: 1759 | resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} 1760 | engines: {node: '>=0.10.0'} 1761 | dev: true 1762 | 1763 | /wrappy/1.0.2: 1764 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 1765 | dev: true 1766 | 1767 | /yallist/4.0.0: 1768 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} 1769 | dev: true 1770 | 1771 | /yocto-queue/0.1.0: 1772 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 1773 | engines: {node: '>=10'} 1774 | dev: true 1775 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | import { Tracker } from 'meteor/tracker' 2 | import { Meteor } from 'meteor/meteor' 3 | import { App, computed, ComputedRef, getCurrentInstance, markRaw, onUnmounted, reactive, ref, watch, watchEffect } from 'vue' 4 | 5 | export const config = { 6 | subscribe: Meteor.subscribe, 7 | } 8 | 9 | interface Stoppable { 10 | stop: () => void 11 | } 12 | 13 | export interface AutorunEffect extends Stoppable { 14 | result: ComputedRef 15 | } 16 | 17 | function autorun (callback: () => TResult): AutorunEffect { 18 | const result = ref() 19 | const stop = watchEffect((onInvalidate) => { 20 | const computation = Tracker.autorun(() => { 21 | let value: any = callback() 22 | if (typeof value?.fetch === 'function') { 23 | value = value.fetch() 24 | } 25 | result.value = value && typeof value === 'object' ? markRaw(value as unknown as object) as TResult : value 26 | }) 27 | onInvalidate(() => { 28 | computation.stop() 29 | }) 30 | }) 31 | return { 32 | result: computed(() => result.value as TResult), 33 | stop, 34 | } 35 | } 36 | 37 | export interface ReactiveMeteorSubscription extends Stoppable { 38 | ready: ComputedRef 39 | sub: Meteor.SubscriptionHandle 40 | } 41 | 42 | function subscribe (payload: string | (() => [name: string, ...args: any[]] | false), ...args: any[]): ReactiveMeteorSubscription { 43 | if (typeof payload === 'string') { 44 | return simpleSubscribe(payload, ...args) 45 | } else { 46 | return watchSubscribe(payload) 47 | } 48 | } 49 | 50 | function simpleSubscribe (name: string, ...args: any[]): ReactiveMeteorSubscription { 51 | const sub = config.subscribe(name, ...args) 52 | const ready = autorun(() => sub.ready()) 53 | 54 | function stop (): void { 55 | ready.stop() 56 | sub.stop() 57 | } 58 | 59 | getCurrentInstance() && onUnmounted(() => { 60 | stop() 61 | }) 62 | 63 | return { 64 | stop, 65 | ready: ready.result, 66 | sub, 67 | } 68 | } 69 | 70 | function watchSubscribe (callback: () => [name: string, ...args: any[]] | false): ReactiveMeteorSubscription { 71 | const ready = ref(false) 72 | const sub = ref() 73 | const stop = watch(callback, (value, oldValue, onInvalidate) => { 74 | if (value !== false) { 75 | sub.value = markRaw(config.subscribe(...value)) 76 | 77 | const computation = Tracker.autorun(() => { 78 | ready.value = sub.value.ready() 79 | }) 80 | 81 | onInvalidate(() => { 82 | sub.value.stop() 83 | computation.stop() 84 | }) 85 | } 86 | }, { 87 | immediate: true, 88 | deep: true, 89 | }) 90 | 91 | return { 92 | stop, 93 | ready: computed(() => ready.value), 94 | get sub () { 95 | return sub.value 96 | }, 97 | } 98 | } 99 | 100 | function makeComposable < 101 | TName extends string = string, 102 | TReturn extends Stoppable = Stoppable, 103 | TFn extends (...args: any[]) => TReturn = (...args: any[]) => TReturn 104 | > (name: TName, fn: TFn): () => { 105 | [K in TName]: TFn 106 | } { 107 | return () => { 108 | const effects: Stoppable[] = [] 109 | 110 | const _run = ((...args) => { 111 | const effect = fn(...args) 112 | effects.push(effect) 113 | return effect 114 | }) as TFn 115 | 116 | onUnmounted(() => { 117 | effects.forEach(effect => effect.stop()) 118 | }) 119 | 120 | return { 121 | [name]: _run, 122 | } as { 123 | [K in TName]: TFn 124 | } 125 | } 126 | } 127 | 128 | export const useAutorun = makeComposable<'autorun', ReturnType, typeof autorun>('autorun', autorun) 129 | export const useSubscribe = makeComposable<'subscribe', ReturnType, typeof subscribe>('subscribe', subscribe) 130 | 131 | function makeSetupOnlyFunction < 132 | TFn extends (...args: any[]) => any 133 | > (fn: TFn): TFn { 134 | return ((...args) => { 135 | if (process.env.NODE_ENV !== 'production') { 136 | if (!getCurrentInstance()) { 137 | console.warn(`'${fn.name}()' should only be used in setup() inside components to clean up correctly. If you need to call '${fn.name}' later outside of the setup context, use 'use${fn.name[0].toUpperCase()}${fn.name.slice(1)}()' instead.`) 138 | } 139 | } 140 | return fn(...args) 141 | }) as TFn 142 | } 143 | 144 | const setupOnlyAutorun = makeSetupOnlyFunction(autorun) 145 | const setupOnlySubscribe = makeSetupOnlyFunction(subscribe) 146 | 147 | export { 148 | setupOnlyAutorun as autorun, 149 | setupOnlySubscribe as subscribe, 150 | } 151 | 152 | export function callMethod< 153 | TResult = any 154 | > (methodName: string, ...args: any[]): Promise { 155 | return new Promise((resolve, reject) => { 156 | Meteor.call(methodName, ...args, (err: Error, res: TResult) => { 157 | if (err) { 158 | reject(err) 159 | } else { 160 | resolve(res) 161 | } 162 | }) 163 | }) 164 | } 165 | 166 | export type MethodResultCallback = (error: Error | undefined, result: TResult | undefined) => unknown 167 | 168 | export function useMethod (name: string) { 169 | const pending = ref(false) 170 | const error = ref() 171 | const result = ref() 172 | const callbacks: MethodResultCallback[] = [] 173 | 174 | async function call (...args: TArgs) { 175 | pending.value = true 176 | error.value = undefined 177 | try { 178 | result.value = await callMethod(name, ...args) 179 | return result.value 180 | } catch (e) { 181 | error.value = e as Error 182 | } finally { 183 | pending.value = false 184 | callbacks.forEach(callback => callback(error.value, result.value)) 185 | } 186 | } 187 | 188 | function onResult (callback: MethodResultCallback) { 189 | callbacks.push(callback) 190 | } 191 | 192 | return { 193 | call, 194 | pending, 195 | error, 196 | result, 197 | onResult, 198 | } 199 | } 200 | 201 | export const VueMeteor = { 202 | install (app: App) { 203 | app.mixin({ 204 | beforeCreate () { 205 | if (this.$options.meteor) { 206 | const subReady = reactive>({}) 207 | 208 | if (this.$options.meteor.$subscribe) { 209 | for (const key in this.$options.meteor.$subscribe) { 210 | const value = this.$options.meteor.$subscribe[key] 211 | const { ready } = typeof value === 'function' 212 | ? subscribe(() => { 213 | const result = value.call(this) 214 | return [key, ...result] 215 | }) 216 | : subscribe(key, ...value) 217 | // @ts-expect-error unwrapping 218 | subReady[key] = ready 219 | } 220 | } 221 | 222 | this.$options.computed = this.$options.computed || {} 223 | this.$options.computed.$subReady = () => subReady 224 | 225 | const { subscribe: $subscribe } = useSubscribe() 226 | this.$options.methods = this.$options.methods || {} 227 | this.$options.methods.$subscribe = $subscribe 228 | 229 | for (const key in this.$options.meteor) { 230 | if (key.startsWith('$')) continue 231 | const fn = this.$options.meteor[key] 232 | const { result } = autorun(fn.bind(this)) 233 | this.$options.computed[key] = () => result.value 234 | } 235 | } 236 | }, 237 | }) 238 | }, 239 | } 240 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ESNext", 4 | "module": "ESNext", 5 | "moduleResolution": "node", 6 | "outDir": "dist", 7 | "rootDir": "src", 8 | "baseUrl": ".", 9 | "allowSyntheticDefaultImports": true, 10 | "esModuleInterop": true, 11 | "removeComments": false, 12 | "resolveJsonModule": true, 13 | "skipLibCheck": true, 14 | "types": [ 15 | "node" 16 | ], 17 | "lib": [ 18 | "ESNext", 19 | "DOM" 20 | ], 21 | "sourceMap": false, 22 | "preserveWatchOutput": true, 23 | "preserveSymlinks": false, 24 | "declaration": true, 25 | // Strict 26 | "noImplicitAny": false, 27 | "noImplicitThis": true, 28 | "alwaysStrict": true, 29 | "strictBindCallApply": true, 30 | "strictFunctionTypes": true, 31 | }, 32 | "include": [ 33 | "src" 34 | ], 35 | "exclude": [ 36 | "node_modules", 37 | "dist/**/*", 38 | "src/**/*.spec.ts" 39 | ] 40 | } 41 | --------------------------------------------------------------------------------