├── .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 | [ ](https://www.npmjs.com/package/vue-meteor-tracker)
4 | [ ](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 |
--------------------------------------------------------------------------------