├── .github
└── workflows
│ └── node.js.yml
├── .gitignore
├── .npmignore
├── .npmrc
├── LICENSE
├── README.md
├── cjs
├── index.js
└── package.json
├── es.js
├── esm
└── index.js
├── package-lock.json
├── package.json
├── rollup
└── es.config.js
├── test
├── index.html
└── index.js
└── types
└── index.d.ts
/.github/workflows/node.js.yml:
--------------------------------------------------------------------------------
1 | # This workflow will do a clean install of node dependencies, cache/restore them, build the source code and run tests across different versions of node
2 | # For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions
3 |
4 | name: build
5 |
6 | on: [push, pull_request]
7 |
8 | jobs:
9 | build:
10 |
11 | runs-on: ubuntu-latest
12 |
13 | strategy:
14 | matrix:
15 | node-version: [16]
16 |
17 | steps:
18 | - uses: actions/checkout@v2
19 | - name: Use Node.js ${{ matrix.node-version }}
20 | uses: actions/setup-node@v2
21 | with:
22 | node-version: ${{ matrix.node-version }}
23 | cache: 'npm'
24 | - run: npm ci
25 | - run: npm run build --if-present
26 | - run: npm test
27 | - run: npm run coverage --if-present
28 | - name: Coveralls
29 | uses: coverallsapp/github-action@master
30 | with:
31 | github-token: ${{ secrets.GITHUB_TOKEN }}
32 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | .nyc_output
3 | coverage/
4 | node_modules/
5 |
--------------------------------------------------------------------------------
/.npmignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | .nyc_output
3 | .eslintrc.json
4 | .travis.yml
5 | .github/
6 | coverage/
7 | node_modules/
8 | rollup/
9 | test/
10 | tsconfig.json
11 | package-lock.json
12 |
--------------------------------------------------------------------------------
/.npmrc:
--------------------------------------------------------------------------------
1 | package-lock=true
2 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | ISC License
2 |
3 | Copyright (c) 2022, Andrea Giammarchi, @WebReflection
4 |
5 | Permission to use, copy, modify, and/or distribute this software for any
6 | purpose with or without fee is hereby granted, provided that the above
7 | copyright notice and this permission notice appear in all copies.
8 |
9 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
10 | REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
11 | AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
12 | INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
13 | LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
14 | OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
15 | PERFORMANCE OF THIS SOFTWARE.
16 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # @webreflection/signal
2 |
3 | [](https://coveralls.io/github/WebReflection/signal?branch=main) [](https://github.com/WebReflection/signal/actions)
4 |
5 | **Social Media Photo by [Louis Reed](https://unsplash.com/@_louisreed) on [Unsplash](https://unsplash.com/)**
6 |
7 | A minimalistic signals implementation, derived from the post [Signals: the nitty-gritty](https://calendar.perfplanet.com/2022/signals-the-nitty-gritty/), which size, once minified and brotlied, is 528 bytes.
8 |
9 | * no automatic effect disposal except when an outer effect has inner effects and the outer effect `dispose()` is invoked
10 | * computed are lazily initialied but updated per each signal change they depend on, unless a `batch` operation is updating all inner signals at once
11 | * no fancy features from other libraries
12 |
13 | For anything more complex please check [usignal](https://github.com/WebReflection/usignal#readme) out.
14 |
15 | ### exports
16 |
17 | * `signal(value)` to create a new signal with a reactive `.value`
18 | * `computed(fn[, initialValue])` to create a computed signal with a read-only `.value`
19 | * `effect(fn)` to create an effect and return a dispose function
20 | * `batch(fn)` to update multiple signals at once and invoke related effects once
21 | * `untracked(fn)` to make a callback that can read some signals without subscription to them
22 | * `Signal` to compare via `instanceof Signal` instances
23 | * `Computed` to compare via `instanceof Computed` instances
24 |
25 | *Computed* accepts an initial value to pass to the callback. The callback will keep receiving the previous value on each new invoke.
26 |
27 |
28 | ### example
29 |
30 | ```js
31 | // import {signal, effect} from 'https://unpkg.com/@webreflection/signal';
32 | // const {signal, effect} = require('@webreflection/signal');
33 | import {signal, effect} from '@webreflection/signal';
34 |
35 | const single = signal(1);
36 | const double = signal(10);
37 | const triple = signal(100);
38 |
39 | const dispose1 = effect(() => {
40 | console.log(`
41 | #1 effect
42 | single: ${single}
43 | double: ${double}
44 | `);
45 | });
46 |
47 | const dispose2 = effect(() => {
48 | console.log(`
49 | #2 effect
50 | double: ${double}
51 | triple: ${triple}
52 | `);
53 | });
54 |
55 | ++double.value;
56 | // logs single 1, double 11
57 | // logs double 11, triple 100
58 |
59 | dispose2();
60 |
61 | ++double.value;
62 | // logs single 1, double 11
63 | ```
64 |
--------------------------------------------------------------------------------
/cjs/index.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 | /*! (c) Andrea Giammarchi */
3 |
4 | let batches = null;
5 |
6 | /**
7 | * Invoke a callback that updates many signals and runs effects only after.
8 | * @type {(fn:() => void) => void}
9 | */
10 | const batch = fn => {
11 | let effects = batches;
12 | if (!effects) batches = new Set;
13 | try { fn() }
14 | finally {
15 | if (!effects) {
16 | [batches, effects] = [null, batches];
17 | for (const effect of effects) effect._();
18 | }
19 | }
20 | };
21 | exports.batch = batch;
22 |
23 | const cleared = self => {
24 | const entries = [...self];
25 | self.clear();
26 | return entries;
27 | };
28 |
29 | class Effect extends Set {
30 | constructor(_) { super()._ = _ }
31 | dispose() {
32 | for (const entry of cleared(this)) {
33 | entry.delete(this);
34 | entry.dispose?.();
35 | }
36 | }
37 | }
38 |
39 | let current = null;
40 | const create = (block) => {
41 | const fx = new Effect(() => {
42 | const prev = current;
43 | current = fx;
44 | try { block() }
45 | finally { current = prev }
46 | });
47 | return fx;
48 | };
49 |
50 | /**
51 | * Invokes a function when any of its internal signals or computed values change.
52 | * Returns a `dispose` callback.
53 | * @template T
54 | * @type {(fn: (v?: T) => T | undefined, value?: T) => () => void}
55 | */
56 | const effect = (fn) => {
57 | let teardown, fx = create(() => { teardown?.call?.(); teardown = fn() });
58 | if (current) current.add(fx);
59 | return fx._(), () => (teardown?.call?.(), fx.dispose());
60 | };
61 | exports.effect = effect;
62 |
63 | /**
64 | * Executes a given function without tracking its dependencies.
65 | * This is useful for actions that should not subscribe to updates in the reactive system.
66 | * @param {Function} fn - The function to execute without dependency tracking.
67 | */
68 | const untracked = (fn) => {
69 | let prev = current, result
70 | current = null
71 | result = fn()
72 | current = prev
73 | return result
74 | }
75 | exports.untracked = untracked
76 |
77 | /**
78 | * A signal with a value property also exposed via toJSON, toString and valueOf.
79 | * @template T
80 | */
81 | class Signal extends Set {
82 |
83 | /** @param {T} value the value carried through the signal */
84 | constructor(_) { super()._ = _ }
85 |
86 | /** @returns {T} */
87 | get value() {
88 | if (current) current.add(this.add(current));
89 | return this._;
90 | }
91 |
92 | /** @param {T} value the new value carried through the signal */
93 | set value(_) {
94 | if (this._ !== _) {
95 | this._ = _;
96 | const root = !batches;
97 | for (const effect of cleared(this)) {
98 | if (root) effect._();
99 | else batches.add(effect);
100 | }
101 | }
102 | }
103 |
104 | // EXPLICIT NO SIDE EFFECT
105 | peek() { return this._ }
106 |
107 | // IMPLICIT SIDE EFFECT
108 | toJSON() { return this.value }
109 | valueOf() { return this.value }
110 | toString() { return String(this.value) }
111 | }
112 | exports.Signal = Signal
113 |
114 | /**
115 | * Returns a writable Signal that side-effects whenever its value gets updated.
116 | * @template T
117 | * @type {(value: T) => Signal}
118 | */
119 | const signal = value => new Signal(value);
120 | exports.signal = signal;
121 |
122 | /**
123 | * A read-only Signal extend that is invoked only when any of the internally
124 | * used signals, as in within the callback, is unknown or updated.
125 | * @template T
126 | * @extends {Signal}
127 | */
128 | class Computed extends Signal {
129 | /**
130 | * @param {(v?: T) => T} fn the callback invoked when its signals changes
131 | * @param {T | undefined} value the optional initial value of the callback
132 | */
133 | constructor(fn, value) {
134 | super(value).f = fn;
135 | this.e = null;
136 | }
137 |
138 | /** @readonly @returns {T} */
139 | get value() {
140 | if (!this.e)
141 | (this.e = create(() => { super.value = this.f(this._) }))._();
142 | return super.value;
143 | }
144 |
145 | /** @throws {Error} */
146 | set value(_) { throw new Error('computed is read-only') }
147 | }
148 | exports.Computed = Computed
149 |
150 | /**
151 | * Returns a Computed signal that is invoked only when any of the internally
152 | * used signals, as in within the callback, is unknown or updated.
153 | * @template T
154 | * @type {(fn: (v?: T) => T, value?: T) => Computed}
155 | */
156 | const computed = (fn, value) => new Computed(fn, value);
157 | exports.computed = computed;
158 |
--------------------------------------------------------------------------------
/cjs/package.json:
--------------------------------------------------------------------------------
1 | {"type":"commonjs"}
--------------------------------------------------------------------------------
/es.js:
--------------------------------------------------------------------------------
1 | /*! (c) Andrea Giammarchi */
2 | let t=null;const e=e=>{let s=t;s||(t=new Set);try{e()}finally{if(!s){[t,s]=[null,t];for(const t of s)t._()}}},s=t=>{const e=[...t];return t.clear(),e};class r extends Set{constructor(t){super()._=t}dispose(){for(const t of s(this))t.delete(this),t.dispose?.()}}let n=null;const l=t=>{const e=new r((()=>{const s=n;n=e;try{t()}finally{n=s}}));return e},u=t=>{let e,s=l((()=>{e?.call?.(),e=t()}));return n&&n.add(s),s._(),()=>(e?.call?.(),s.dispose())},o=t=>{let e,s=n;return n=null,e=t(),n=s,e};class i extends Set{constructor(t){super()._=t}get value(){return n&&n.add(this.add(n)),this._}set value(e){if(this._!==e){this._=e;const r=!t;for(const e of s(this))r?e._():t.add(e)}}peek(){return this._}toJSON(){return this.value}valueOf(){return this.value}toString(){return String(this.value)}}const c=t=>new i(t);class a extends i{constructor(t,e){super(e).f=t,this.e=null}get value(){return this.e||(this.e=l((()=>{super.value=this.f(this._)})))._(),super.value}set value(t){throw new Error("computed is read-only")}}const d=(t,e)=>new a(t,e);export{a as Computed,i as Signal,e as batch,d as computed,u as effect,c as signal,o as untracked};
3 |
--------------------------------------------------------------------------------
/esm/index.js:
--------------------------------------------------------------------------------
1 | /*! (c) Andrea Giammarchi */
2 |
3 | let batches = null;
4 |
5 | /**
6 | * Invoke a callback that updates many signals and runs effects only after.
7 | * @type {(fn:() => void) => void}
8 | */
9 | export const batch = fn => {
10 | let effects = batches;
11 | if (!effects) batches = new Set;
12 | try { fn() }
13 | finally {
14 | if (!effects) {
15 | [batches, effects] = [null, batches];
16 | for (const effect of effects) effect._();
17 | }
18 | }
19 | };
20 |
21 | const cleared = self => {
22 | const entries = [...self];
23 | self.clear();
24 | return entries;
25 | };
26 |
27 | class Effect extends Set {
28 | constructor(_) { super()._ = _ }
29 | dispose() {
30 | for (const entry of cleared(this)) {
31 | entry.delete(this);
32 | entry.dispose?.();
33 | }
34 | }
35 | }
36 |
37 | let current = null;
38 | const create = (block) => {
39 | const fx = new Effect(() => {
40 | const prev = current;
41 | current = fx;
42 | try { block() }
43 | finally { current = prev }
44 | });
45 | return fx;
46 | };
47 |
48 | /**
49 | * Invokes a function when any of its internal signals or computed values change.
50 | * Returns a `dispose` callback.
51 | * @template T
52 | * @type {(fn: (v?: T) => T | undefined, value?: T) => () => void}
53 | */
54 | export const effect = (fn) => {
55 | let teardown, fx = create(() => { teardown?.call?.(); teardown = fn() });
56 | if (current) current.add(fx);
57 | return fx._(), () => (teardown?.call?.(), fx.dispose());
58 | };
59 |
60 | /**
61 | * Executes a given function without tracking its dependencies.
62 | * This is useful for actions that should not subscribe to updates in the reactive system.
63 | * @param {Function} fn - The function to execute without dependency tracking.
64 | */
65 | export const untracked = (fn) => {
66 | let prev = current, result
67 | current = null
68 | result = fn()
69 | current = prev
70 | return result
71 | }
72 |
73 | /**
74 | * A signal with a value property also exposed via toJSON, toString and valueOf.
75 | * @template T
76 | */
77 | export class Signal extends Set {
78 |
79 | /** @param {T} value the value carried through the signal */
80 | constructor(_) { super()._ = _ }
81 |
82 | /** @returns {T} */
83 | get value() {
84 | if (current) current.add(this.add(current));
85 | return this._;
86 | }
87 |
88 | /** @param {T} value the new value carried through the signal */
89 | set value(_) {
90 | if (this._ !== _) {
91 | this._ = _;
92 | const root = !batches;
93 | for (const effect of cleared(this)) {
94 | if (root) effect._();
95 | else batches.add(effect);
96 | }
97 | }
98 | }
99 |
100 | // EXPLICIT NO SIDE EFFECT
101 | peek() { return this._ }
102 |
103 | // IMPLICIT SIDE EFFECT
104 | toJSON() { return this.value }
105 | valueOf() { return this.value }
106 | toString() { return String(this.value) }
107 | }
108 |
109 | /**
110 | * Returns a writable Signal that side-effects whenever its value gets updated.
111 | * @template T
112 | * @type {(value: T) => Signal}
113 | */
114 | export const signal = value => new Signal(value);
115 |
116 | /**
117 | * A read-only Signal extend that is invoked only when any of the internally
118 | * used signals, as in within the callback, is unknown or updated.
119 | * @template T
120 | * @extends {Signal}
121 | */
122 | export class Computed extends Signal {
123 | /**
124 | * @param {(v?: T) => T} fn the callback invoked when its signals changes
125 | * @param {T | undefined} value the optional initial value of the callback
126 | */
127 | constructor(fn, value) {
128 | super(value).f = fn;
129 | this.e = null;
130 | }
131 |
132 | /** @readonly @returns {T} */
133 | get value() {
134 | if (!this.e)
135 | (this.e = create(() => { super.value = this.f(this._) }))._();
136 | return super.value;
137 | }
138 |
139 | /** @throws {Error} */
140 | set value(_) { throw new Error('computed is read-only') }
141 | }
142 |
143 | /**
144 | * Returns a Computed signal that is invoked only when any of the internally
145 | * used signals, as in within the callback, is unknown or updated.
146 | * @template T
147 | * @type {(fn: (v?: T) => T, value?: T) => Computed}
148 | */
149 | export const computed = (fn, value) => new Computed(fn, value);
150 |
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "@webreflection/signal",
3 | "version": "2.1.2",
4 | "lockfileVersion": 2,
5 | "requires": true,
6 | "packages": {
7 | "": {
8 | "name": "@webreflection/signal",
9 | "version": "2.1.2",
10 | "license": "ISC",
11 | "devDependencies": {
12 | "@rollup/plugin-node-resolve": "^15.2.3",
13 | "@rollup/plugin-terser": "^0.4.4",
14 | "ascjs": "^6.0.3",
15 | "c8": "^9.1.0",
16 | "rollup": "^4.14.3"
17 | }
18 | },
19 | "node_modules/@babel/parser": {
20 | "version": "7.20.15",
21 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.15.tgz",
22 | "integrity": "sha512-DI4a1oZuf8wC+oAJA9RW6ga3Zbe8RZFt7kD9i4qAspz3I/yHet1VvC3DiSy/fsUvv5pvJuNPh0LPOdCcqinDPg==",
23 | "dev": true,
24 | "bin": {
25 | "parser": "bin/babel-parser.js"
26 | },
27 | "engines": {
28 | "node": ">=6.0.0"
29 | }
30 | },
31 | "node_modules/@bcoe/v8-coverage": {
32 | "version": "0.2.3",
33 | "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz",
34 | "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==",
35 | "dev": true
36 | },
37 | "node_modules/@istanbuljs/schema": {
38 | "version": "0.1.3",
39 | "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz",
40 | "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==",
41 | "dev": true,
42 | "engines": {
43 | "node": ">=8"
44 | }
45 | },
46 | "node_modules/@jridgewell/gen-mapping": {
47 | "version": "0.3.4",
48 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.4.tgz",
49 | "integrity": "sha512-Oud2QPM5dHviZNn4y/WhhYKSXksv+1xLEIsNrAbGcFzUN3ubqWRFT5gwPchNc5NuzILOU4tPBDTZ4VwhL8Y7cw==",
50 | "dev": true,
51 | "dependencies": {
52 | "@jridgewell/set-array": "^1.0.1",
53 | "@jridgewell/sourcemap-codec": "^1.4.10",
54 | "@jridgewell/trace-mapping": "^0.3.9"
55 | },
56 | "engines": {
57 | "node": ">=6.0.0"
58 | }
59 | },
60 | "node_modules/@jridgewell/resolve-uri": {
61 | "version": "3.1.0",
62 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
63 | "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
64 | "dev": true,
65 | "engines": {
66 | "node": ">=6.0.0"
67 | }
68 | },
69 | "node_modules/@jridgewell/set-array": {
70 | "version": "1.1.2",
71 | "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
72 | "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
73 | "dev": true,
74 | "engines": {
75 | "node": ">=6.0.0"
76 | }
77 | },
78 | "node_modules/@jridgewell/source-map": {
79 | "version": "0.3.5",
80 | "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz",
81 | "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==",
82 | "dev": true,
83 | "dependencies": {
84 | "@jridgewell/gen-mapping": "^0.3.0",
85 | "@jridgewell/trace-mapping": "^0.3.9"
86 | }
87 | },
88 | "node_modules/@jridgewell/sourcemap-codec": {
89 | "version": "1.4.14",
90 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
91 | "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==",
92 | "dev": true
93 | },
94 | "node_modules/@jridgewell/trace-mapping": {
95 | "version": "0.3.17",
96 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz",
97 | "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==",
98 | "dev": true,
99 | "dependencies": {
100 | "@jridgewell/resolve-uri": "3.1.0",
101 | "@jridgewell/sourcemap-codec": "1.4.14"
102 | }
103 | },
104 | "node_modules/@rollup/plugin-node-resolve": {
105 | "version": "15.2.3",
106 | "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.2.3.tgz",
107 | "integrity": "sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==",
108 | "dev": true,
109 | "dependencies": {
110 | "@rollup/pluginutils": "^5.0.1",
111 | "@types/resolve": "1.20.2",
112 | "deepmerge": "^4.2.2",
113 | "is-builtin-module": "^3.2.1",
114 | "is-module": "^1.0.0",
115 | "resolve": "^1.22.1"
116 | },
117 | "engines": {
118 | "node": ">=14.0.0"
119 | },
120 | "peerDependencies": {
121 | "rollup": "^2.78.0||^3.0.0||^4.0.0"
122 | },
123 | "peerDependenciesMeta": {
124 | "rollup": {
125 | "optional": true
126 | }
127 | }
128 | },
129 | "node_modules/@rollup/plugin-terser": {
130 | "version": "0.4.4",
131 | "resolved": "https://registry.npmjs.org/@rollup/plugin-terser/-/plugin-terser-0.4.4.tgz",
132 | "integrity": "sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A==",
133 | "dev": true,
134 | "dependencies": {
135 | "serialize-javascript": "^6.0.1",
136 | "smob": "^1.0.0",
137 | "terser": "^5.17.4"
138 | },
139 | "engines": {
140 | "node": ">=14.0.0"
141 | },
142 | "peerDependencies": {
143 | "rollup": "^2.0.0||^3.0.0||^4.0.0"
144 | },
145 | "peerDependenciesMeta": {
146 | "rollup": {
147 | "optional": true
148 | }
149 | }
150 | },
151 | "node_modules/@rollup/pluginutils": {
152 | "version": "5.1.0",
153 | "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz",
154 | "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==",
155 | "dev": true,
156 | "dependencies": {
157 | "@types/estree": "^1.0.0",
158 | "estree-walker": "^2.0.2",
159 | "picomatch": "^2.3.1"
160 | },
161 | "engines": {
162 | "node": ">=14.0.0"
163 | },
164 | "peerDependencies": {
165 | "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0"
166 | },
167 | "peerDependenciesMeta": {
168 | "rollup": {
169 | "optional": true
170 | }
171 | }
172 | },
173 | "node_modules/@rollup/rollup-android-arm-eabi": {
174 | "version": "4.14.3",
175 | "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.14.3.tgz",
176 | "integrity": "sha512-X9alQ3XM6I9IlSlmC8ddAvMSyG1WuHk5oUnXGw+yUBs3BFoTizmG1La/Gr8fVJvDWAq+zlYTZ9DBgrlKRVY06g==",
177 | "cpu": [
178 | "arm"
179 | ],
180 | "dev": true,
181 | "optional": true,
182 | "os": [
183 | "android"
184 | ]
185 | },
186 | "node_modules/@rollup/rollup-android-arm64": {
187 | "version": "4.14.3",
188 | "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.14.3.tgz",
189 | "integrity": "sha512-eQK5JIi+POhFpzk+LnjKIy4Ks+pwJ+NXmPxOCSvOKSNRPONzKuUvWE+P9JxGZVxrtzm6BAYMaL50FFuPe0oWMQ==",
190 | "cpu": [
191 | "arm64"
192 | ],
193 | "dev": true,
194 | "optional": true,
195 | "os": [
196 | "android"
197 | ]
198 | },
199 | "node_modules/@rollup/rollup-darwin-arm64": {
200 | "version": "4.14.3",
201 | "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.14.3.tgz",
202 | "integrity": "sha512-Od4vE6f6CTT53yM1jgcLqNfItTsLt5zE46fdPaEmeFHvPs5SjZYlLpHrSiHEKR1+HdRfxuzXHjDOIxQyC3ptBA==",
203 | "cpu": [
204 | "arm64"
205 | ],
206 | "dev": true,
207 | "optional": true,
208 | "os": [
209 | "darwin"
210 | ]
211 | },
212 | "node_modules/@rollup/rollup-darwin-x64": {
213 | "version": "4.14.3",
214 | "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.14.3.tgz",
215 | "integrity": "sha512-0IMAO21axJeNIrvS9lSe/PGthc8ZUS+zC53O0VhF5gMxfmcKAP4ESkKOCwEi6u2asUrt4mQv2rjY8QseIEb1aw==",
216 | "cpu": [
217 | "x64"
218 | ],
219 | "dev": true,
220 | "optional": true,
221 | "os": [
222 | "darwin"
223 | ]
224 | },
225 | "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
226 | "version": "4.14.3",
227 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.14.3.tgz",
228 | "integrity": "sha512-ge2DC7tHRHa3caVEoSbPRJpq7azhG+xYsd6u2MEnJ6XzPSzQsTKyXvh6iWjXRf7Rt9ykIUWHtl0Uz3T6yXPpKw==",
229 | "cpu": [
230 | "arm"
231 | ],
232 | "dev": true,
233 | "optional": true,
234 | "os": [
235 | "linux"
236 | ]
237 | },
238 | "node_modules/@rollup/rollup-linux-arm-musleabihf": {
239 | "version": "4.14.3",
240 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.14.3.tgz",
241 | "integrity": "sha512-ljcuiDI4V3ySuc7eSk4lQ9wU8J8r8KrOUvB2U+TtK0TiW6OFDmJ+DdIjjwZHIw9CNxzbmXY39wwpzYuFDwNXuw==",
242 | "cpu": [
243 | "arm"
244 | ],
245 | "dev": true,
246 | "optional": true,
247 | "os": [
248 | "linux"
249 | ]
250 | },
251 | "node_modules/@rollup/rollup-linux-arm64-gnu": {
252 | "version": "4.14.3",
253 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.14.3.tgz",
254 | "integrity": "sha512-Eci2us9VTHm1eSyn5/eEpaC7eP/mp5n46gTRB3Aar3BgSvDQGJZuicyq6TsH4HngNBgVqC5sDYxOzTExSU+NjA==",
255 | "cpu": [
256 | "arm64"
257 | ],
258 | "dev": true,
259 | "optional": true,
260 | "os": [
261 | "linux"
262 | ]
263 | },
264 | "node_modules/@rollup/rollup-linux-arm64-musl": {
265 | "version": "4.14.3",
266 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.14.3.tgz",
267 | "integrity": "sha512-UrBoMLCq4E92/LCqlh+blpqMz5h1tJttPIniwUgOFJyjWI1qrtrDhhpHPuFxULlUmjFHfloWdixtDhSxJt5iKw==",
268 | "cpu": [
269 | "arm64"
270 | ],
271 | "dev": true,
272 | "optional": true,
273 | "os": [
274 | "linux"
275 | ]
276 | },
277 | "node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
278 | "version": "4.14.3",
279 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.14.3.tgz",
280 | "integrity": "sha512-5aRjvsS8q1nWN8AoRfrq5+9IflC3P1leMoy4r2WjXyFqf3qcqsxRCfxtZIV58tCxd+Yv7WELPcO9mY9aeQyAmw==",
281 | "cpu": [
282 | "ppc64"
283 | ],
284 | "dev": true,
285 | "optional": true,
286 | "os": [
287 | "linux"
288 | ]
289 | },
290 | "node_modules/@rollup/rollup-linux-riscv64-gnu": {
291 | "version": "4.14.3",
292 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.14.3.tgz",
293 | "integrity": "sha512-sk/Qh1j2/RJSX7FhEpJn8n0ndxy/uf0kI/9Zc4b1ELhqULVdTfN6HL31CDaTChiBAOgLcsJ1sgVZjWv8XNEsAQ==",
294 | "cpu": [
295 | "riscv64"
296 | ],
297 | "dev": true,
298 | "optional": true,
299 | "os": [
300 | "linux"
301 | ]
302 | },
303 | "node_modules/@rollup/rollup-linux-s390x-gnu": {
304 | "version": "4.14.3",
305 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.14.3.tgz",
306 | "integrity": "sha512-jOO/PEaDitOmY9TgkxF/TQIjXySQe5KVYB57H/8LRP/ux0ZoO8cSHCX17asMSv3ruwslXW/TLBcxyaUzGRHcqg==",
307 | "cpu": [
308 | "s390x"
309 | ],
310 | "dev": true,
311 | "optional": true,
312 | "os": [
313 | "linux"
314 | ]
315 | },
316 | "node_modules/@rollup/rollup-linux-x64-gnu": {
317 | "version": "4.14.3",
318 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.14.3.tgz",
319 | "integrity": "sha512-8ybV4Xjy59xLMyWo3GCfEGqtKV5M5gCSrZlxkPGvEPCGDLNla7v48S662HSGwRd6/2cSneMQWiv+QzcttLrrOA==",
320 | "cpu": [
321 | "x64"
322 | ],
323 | "dev": true,
324 | "optional": true,
325 | "os": [
326 | "linux"
327 | ]
328 | },
329 | "node_modules/@rollup/rollup-linux-x64-musl": {
330 | "version": "4.14.3",
331 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.14.3.tgz",
332 | "integrity": "sha512-s+xf1I46trOY10OqAtZ5Rm6lzHre/UiLA1J2uOhCFXWkbZrJRkYBPO6FhvGfHmdtQ3Bx793MNa7LvoWFAm93bg==",
333 | "cpu": [
334 | "x64"
335 | ],
336 | "dev": true,
337 | "optional": true,
338 | "os": [
339 | "linux"
340 | ]
341 | },
342 | "node_modules/@rollup/rollup-win32-arm64-msvc": {
343 | "version": "4.14.3",
344 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.14.3.tgz",
345 | "integrity": "sha512-+4h2WrGOYsOumDQ5S2sYNyhVfrue+9tc9XcLWLh+Kw3UOxAvrfOrSMFon60KspcDdytkNDh7K2Vs6eMaYImAZg==",
346 | "cpu": [
347 | "arm64"
348 | ],
349 | "dev": true,
350 | "optional": true,
351 | "os": [
352 | "win32"
353 | ]
354 | },
355 | "node_modules/@rollup/rollup-win32-ia32-msvc": {
356 | "version": "4.14.3",
357 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.14.3.tgz",
358 | "integrity": "sha512-T1l7y/bCeL/kUwh9OD4PQT4aM7Bq43vX05htPJJ46RTI4r5KNt6qJRzAfNfM+OYMNEVBWQzR2Gyk+FXLZfogGw==",
359 | "cpu": [
360 | "ia32"
361 | ],
362 | "dev": true,
363 | "optional": true,
364 | "os": [
365 | "win32"
366 | ]
367 | },
368 | "node_modules/@rollup/rollup-win32-x64-msvc": {
369 | "version": "4.14.3",
370 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.14.3.tgz",
371 | "integrity": "sha512-/BypzV0H1y1HzgYpxqRaXGBRqfodgoBBCcsrujT6QRcakDQdfU+Lq9PENPh5jB4I44YWq+0C2eHsHya+nZY1sA==",
372 | "cpu": [
373 | "x64"
374 | ],
375 | "dev": true,
376 | "optional": true,
377 | "os": [
378 | "win32"
379 | ]
380 | },
381 | "node_modules/@types/estree": {
382 | "version": "1.0.5",
383 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
384 | "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==",
385 | "dev": true
386 | },
387 | "node_modules/@types/istanbul-lib-coverage": {
388 | "version": "2.0.4",
389 | "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz",
390 | "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==",
391 | "dev": true
392 | },
393 | "node_modules/@types/resolve": {
394 | "version": "1.20.2",
395 | "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz",
396 | "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==",
397 | "dev": true
398 | },
399 | "node_modules/acorn": {
400 | "version": "8.11.3",
401 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz",
402 | "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==",
403 | "dev": true,
404 | "bin": {
405 | "acorn": "bin/acorn"
406 | },
407 | "engines": {
408 | "node": ">=0.4.0"
409 | }
410 | },
411 | "node_modules/ansi-regex": {
412 | "version": "5.0.1",
413 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
414 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
415 | "dev": true,
416 | "engines": {
417 | "node": ">=8"
418 | }
419 | },
420 | "node_modules/ansi-styles": {
421 | "version": "4.3.0",
422 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
423 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
424 | "dev": true,
425 | "dependencies": {
426 | "color-convert": "^2.0.1"
427 | },
428 | "engines": {
429 | "node": ">=8"
430 | },
431 | "funding": {
432 | "url": "https://github.com/chalk/ansi-styles?sponsor=1"
433 | }
434 | },
435 | "node_modules/ascjs": {
436 | "version": "6.0.3",
437 | "resolved": "https://registry.npmjs.org/ascjs/-/ascjs-6.0.3.tgz",
438 | "integrity": "sha512-lAIyi1j7oT0OtF9yFLiRf93LEcK7xTb/gPFwmfdi2T/BQmxJi1YcIES+VnP/kgGJkxq9Oh2DEK6GrZ6l2OVhVQ==",
439 | "dev": true,
440 | "dependencies": {
441 | "@babel/parser": "^7.12.5"
442 | },
443 | "bin": {
444 | "ascjs": "bin.js"
445 | }
446 | },
447 | "node_modules/balanced-match": {
448 | "version": "1.0.2",
449 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
450 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
451 | "dev": true
452 | },
453 | "node_modules/brace-expansion": {
454 | "version": "1.1.11",
455 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
456 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
457 | "dev": true,
458 | "dependencies": {
459 | "balanced-match": "^1.0.0",
460 | "concat-map": "0.0.1"
461 | }
462 | },
463 | "node_modules/buffer-from": {
464 | "version": "1.1.2",
465 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
466 | "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
467 | "dev": true
468 | },
469 | "node_modules/builtin-modules": {
470 | "version": "3.3.0",
471 | "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz",
472 | "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==",
473 | "dev": true,
474 | "engines": {
475 | "node": ">=6"
476 | },
477 | "funding": {
478 | "url": "https://github.com/sponsors/sindresorhus"
479 | }
480 | },
481 | "node_modules/c8": {
482 | "version": "9.1.0",
483 | "resolved": "https://registry.npmjs.org/c8/-/c8-9.1.0.tgz",
484 | "integrity": "sha512-mBWcT5iqNir1zIkzSPyI3NCR9EZCVI3WUD+AVO17MVWTSFNyUueXE82qTeampNtTr+ilN/5Ua3j24LgbCKjDVg==",
485 | "dev": true,
486 | "dependencies": {
487 | "@bcoe/v8-coverage": "^0.2.3",
488 | "@istanbuljs/schema": "^0.1.3",
489 | "find-up": "^5.0.0",
490 | "foreground-child": "^3.1.1",
491 | "istanbul-lib-coverage": "^3.2.0",
492 | "istanbul-lib-report": "^3.0.1",
493 | "istanbul-reports": "^3.1.6",
494 | "test-exclude": "^6.0.0",
495 | "v8-to-istanbul": "^9.0.0",
496 | "yargs": "^17.7.2",
497 | "yargs-parser": "^21.1.1"
498 | },
499 | "bin": {
500 | "c8": "bin/c8.js"
501 | },
502 | "engines": {
503 | "node": ">=14.14.0"
504 | }
505 | },
506 | "node_modules/cliui": {
507 | "version": "8.0.1",
508 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
509 | "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
510 | "dev": true,
511 | "dependencies": {
512 | "string-width": "^4.2.0",
513 | "strip-ansi": "^6.0.1",
514 | "wrap-ansi": "^7.0.0"
515 | },
516 | "engines": {
517 | "node": ">=12"
518 | }
519 | },
520 | "node_modules/color-convert": {
521 | "version": "2.0.1",
522 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
523 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
524 | "dev": true,
525 | "dependencies": {
526 | "color-name": "~1.1.4"
527 | },
528 | "engines": {
529 | "node": ">=7.0.0"
530 | }
531 | },
532 | "node_modules/color-name": {
533 | "version": "1.1.4",
534 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
535 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
536 | "dev": true
537 | },
538 | "node_modules/commander": {
539 | "version": "2.20.3",
540 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
541 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
542 | "dev": true
543 | },
544 | "node_modules/concat-map": {
545 | "version": "0.0.1",
546 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
547 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
548 | "dev": true
549 | },
550 | "node_modules/convert-source-map": {
551 | "version": "1.9.0",
552 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz",
553 | "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==",
554 | "dev": true
555 | },
556 | "node_modules/cross-spawn": {
557 | "version": "7.0.3",
558 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
559 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
560 | "dev": true,
561 | "dependencies": {
562 | "path-key": "^3.1.0",
563 | "shebang-command": "^2.0.0",
564 | "which": "^2.0.1"
565 | },
566 | "engines": {
567 | "node": ">= 8"
568 | }
569 | },
570 | "node_modules/deepmerge": {
571 | "version": "4.3.0",
572 | "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.0.tgz",
573 | "integrity": "sha512-z2wJZXrmeHdvYJp/Ux55wIjqo81G5Bp4c+oELTW+7ar6SogWHajt5a9gO3s3IDaGSAXjDk0vlQKN3rms8ab3og==",
574 | "dev": true,
575 | "engines": {
576 | "node": ">=0.10.0"
577 | }
578 | },
579 | "node_modules/emoji-regex": {
580 | "version": "8.0.0",
581 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
582 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
583 | "dev": true
584 | },
585 | "node_modules/escalade": {
586 | "version": "3.1.2",
587 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz",
588 | "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==",
589 | "dev": true,
590 | "engines": {
591 | "node": ">=6"
592 | }
593 | },
594 | "node_modules/estree-walker": {
595 | "version": "2.0.2",
596 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
597 | "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
598 | "dev": true
599 | },
600 | "node_modules/find-up": {
601 | "version": "5.0.0",
602 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
603 | "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
604 | "dev": true,
605 | "dependencies": {
606 | "locate-path": "^6.0.0",
607 | "path-exists": "^4.0.0"
608 | },
609 | "engines": {
610 | "node": ">=10"
611 | },
612 | "funding": {
613 | "url": "https://github.com/sponsors/sindresorhus"
614 | }
615 | },
616 | "node_modules/foreground-child": {
617 | "version": "3.1.1",
618 | "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz",
619 | "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==",
620 | "dev": true,
621 | "dependencies": {
622 | "cross-spawn": "^7.0.0",
623 | "signal-exit": "^4.0.1"
624 | },
625 | "engines": {
626 | "node": ">=14"
627 | },
628 | "funding": {
629 | "url": "https://github.com/sponsors/isaacs"
630 | }
631 | },
632 | "node_modules/fs.realpath": {
633 | "version": "1.0.0",
634 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
635 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
636 | "dev": true
637 | },
638 | "node_modules/fsevents": {
639 | "version": "2.3.2",
640 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
641 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
642 | "dev": true,
643 | "hasInstallScript": true,
644 | "optional": true,
645 | "os": [
646 | "darwin"
647 | ],
648 | "engines": {
649 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
650 | }
651 | },
652 | "node_modules/function-bind": {
653 | "version": "1.1.1",
654 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
655 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
656 | "dev": true
657 | },
658 | "node_modules/get-caller-file": {
659 | "version": "2.0.5",
660 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
661 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
662 | "dev": true,
663 | "engines": {
664 | "node": "6.* || 8.* || >= 10.*"
665 | }
666 | },
667 | "node_modules/glob": {
668 | "version": "7.2.3",
669 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
670 | "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
671 | "dev": true,
672 | "dependencies": {
673 | "fs.realpath": "^1.0.0",
674 | "inflight": "^1.0.4",
675 | "inherits": "2",
676 | "minimatch": "^3.1.1",
677 | "once": "^1.3.0",
678 | "path-is-absolute": "^1.0.0"
679 | },
680 | "engines": {
681 | "node": "*"
682 | },
683 | "funding": {
684 | "url": "https://github.com/sponsors/isaacs"
685 | }
686 | },
687 | "node_modules/has": {
688 | "version": "1.0.3",
689 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
690 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
691 | "dev": true,
692 | "dependencies": {
693 | "function-bind": "^1.1.1"
694 | },
695 | "engines": {
696 | "node": ">= 0.4.0"
697 | }
698 | },
699 | "node_modules/has-flag": {
700 | "version": "4.0.0",
701 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
702 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
703 | "dev": true,
704 | "engines": {
705 | "node": ">=8"
706 | }
707 | },
708 | "node_modules/html-escaper": {
709 | "version": "2.0.2",
710 | "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz",
711 | "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==",
712 | "dev": true
713 | },
714 | "node_modules/inflight": {
715 | "version": "1.0.6",
716 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
717 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
718 | "dev": true,
719 | "dependencies": {
720 | "once": "^1.3.0",
721 | "wrappy": "1"
722 | }
723 | },
724 | "node_modules/inherits": {
725 | "version": "2.0.4",
726 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
727 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
728 | "dev": true
729 | },
730 | "node_modules/is-builtin-module": {
731 | "version": "3.2.1",
732 | "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz",
733 | "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==",
734 | "dev": true,
735 | "dependencies": {
736 | "builtin-modules": "^3.3.0"
737 | },
738 | "engines": {
739 | "node": ">=6"
740 | },
741 | "funding": {
742 | "url": "https://github.com/sponsors/sindresorhus"
743 | }
744 | },
745 | "node_modules/is-core-module": {
746 | "version": "2.11.0",
747 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz",
748 | "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==",
749 | "dev": true,
750 | "dependencies": {
751 | "has": "^1.0.3"
752 | },
753 | "funding": {
754 | "url": "https://github.com/sponsors/ljharb"
755 | }
756 | },
757 | "node_modules/is-fullwidth-code-point": {
758 | "version": "3.0.0",
759 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
760 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
761 | "dev": true,
762 | "engines": {
763 | "node": ">=8"
764 | }
765 | },
766 | "node_modules/is-module": {
767 | "version": "1.0.0",
768 | "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz",
769 | "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==",
770 | "dev": true
771 | },
772 | "node_modules/isexe": {
773 | "version": "2.0.0",
774 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
775 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
776 | "dev": true
777 | },
778 | "node_modules/istanbul-lib-coverage": {
779 | "version": "3.2.2",
780 | "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz",
781 | "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==",
782 | "dev": true,
783 | "engines": {
784 | "node": ">=8"
785 | }
786 | },
787 | "node_modules/istanbul-lib-report": {
788 | "version": "3.0.1",
789 | "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz",
790 | "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==",
791 | "dev": true,
792 | "dependencies": {
793 | "istanbul-lib-coverage": "^3.0.0",
794 | "make-dir": "^4.0.0",
795 | "supports-color": "^7.1.0"
796 | },
797 | "engines": {
798 | "node": ">=10"
799 | }
800 | },
801 | "node_modules/istanbul-reports": {
802 | "version": "3.1.7",
803 | "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz",
804 | "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==",
805 | "dev": true,
806 | "dependencies": {
807 | "html-escaper": "^2.0.0",
808 | "istanbul-lib-report": "^3.0.0"
809 | },
810 | "engines": {
811 | "node": ">=8"
812 | }
813 | },
814 | "node_modules/locate-path": {
815 | "version": "6.0.0",
816 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
817 | "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
818 | "dev": true,
819 | "dependencies": {
820 | "p-locate": "^5.0.0"
821 | },
822 | "engines": {
823 | "node": ">=10"
824 | },
825 | "funding": {
826 | "url": "https://github.com/sponsors/sindresorhus"
827 | }
828 | },
829 | "node_modules/lru-cache": {
830 | "version": "6.0.0",
831 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
832 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
833 | "dev": true,
834 | "dependencies": {
835 | "yallist": "^4.0.0"
836 | },
837 | "engines": {
838 | "node": ">=10"
839 | }
840 | },
841 | "node_modules/make-dir": {
842 | "version": "4.0.0",
843 | "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz",
844 | "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==",
845 | "dev": true,
846 | "dependencies": {
847 | "semver": "^7.5.3"
848 | },
849 | "engines": {
850 | "node": ">=10"
851 | },
852 | "funding": {
853 | "url": "https://github.com/sponsors/sindresorhus"
854 | }
855 | },
856 | "node_modules/minimatch": {
857 | "version": "3.1.2",
858 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
859 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
860 | "dev": true,
861 | "dependencies": {
862 | "brace-expansion": "^1.1.7"
863 | },
864 | "engines": {
865 | "node": "*"
866 | }
867 | },
868 | "node_modules/once": {
869 | "version": "1.4.0",
870 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
871 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
872 | "dev": true,
873 | "dependencies": {
874 | "wrappy": "1"
875 | }
876 | },
877 | "node_modules/p-limit": {
878 | "version": "3.1.0",
879 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
880 | "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
881 | "dev": true,
882 | "dependencies": {
883 | "yocto-queue": "^0.1.0"
884 | },
885 | "engines": {
886 | "node": ">=10"
887 | },
888 | "funding": {
889 | "url": "https://github.com/sponsors/sindresorhus"
890 | }
891 | },
892 | "node_modules/p-locate": {
893 | "version": "5.0.0",
894 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
895 | "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
896 | "dev": true,
897 | "dependencies": {
898 | "p-limit": "^3.0.2"
899 | },
900 | "engines": {
901 | "node": ">=10"
902 | },
903 | "funding": {
904 | "url": "https://github.com/sponsors/sindresorhus"
905 | }
906 | },
907 | "node_modules/path-exists": {
908 | "version": "4.0.0",
909 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
910 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
911 | "dev": true,
912 | "engines": {
913 | "node": ">=8"
914 | }
915 | },
916 | "node_modules/path-is-absolute": {
917 | "version": "1.0.1",
918 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
919 | "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
920 | "dev": true,
921 | "engines": {
922 | "node": ">=0.10.0"
923 | }
924 | },
925 | "node_modules/path-key": {
926 | "version": "3.1.1",
927 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
928 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
929 | "dev": true,
930 | "engines": {
931 | "node": ">=8"
932 | }
933 | },
934 | "node_modules/path-parse": {
935 | "version": "1.0.7",
936 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
937 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
938 | "dev": true
939 | },
940 | "node_modules/picomatch": {
941 | "version": "2.3.1",
942 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
943 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
944 | "dev": true,
945 | "engines": {
946 | "node": ">=8.6"
947 | },
948 | "funding": {
949 | "url": "https://github.com/sponsors/jonschlinkert"
950 | }
951 | },
952 | "node_modules/randombytes": {
953 | "version": "2.1.0",
954 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
955 | "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
956 | "dev": true,
957 | "dependencies": {
958 | "safe-buffer": "^5.1.0"
959 | }
960 | },
961 | "node_modules/require-directory": {
962 | "version": "2.1.1",
963 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
964 | "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
965 | "dev": true,
966 | "engines": {
967 | "node": ">=0.10.0"
968 | }
969 | },
970 | "node_modules/resolve": {
971 | "version": "1.22.1",
972 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
973 | "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
974 | "dev": true,
975 | "dependencies": {
976 | "is-core-module": "^2.9.0",
977 | "path-parse": "^1.0.7",
978 | "supports-preserve-symlinks-flag": "^1.0.0"
979 | },
980 | "bin": {
981 | "resolve": "bin/resolve"
982 | },
983 | "funding": {
984 | "url": "https://github.com/sponsors/ljharb"
985 | }
986 | },
987 | "node_modules/rollup": {
988 | "version": "4.14.3",
989 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.14.3.tgz",
990 | "integrity": "sha512-ag5tTQKYsj1bhrFC9+OEWqb5O6VYgtQDO9hPDBMmIbePwhfSr+ExlcU741t8Dhw5DkPCQf6noz0jb36D6W9/hw==",
991 | "dev": true,
992 | "dependencies": {
993 | "@types/estree": "1.0.5"
994 | },
995 | "bin": {
996 | "rollup": "dist/bin/rollup"
997 | },
998 | "engines": {
999 | "node": ">=18.0.0",
1000 | "npm": ">=8.0.0"
1001 | },
1002 | "optionalDependencies": {
1003 | "@rollup/rollup-android-arm-eabi": "4.14.3",
1004 | "@rollup/rollup-android-arm64": "4.14.3",
1005 | "@rollup/rollup-darwin-arm64": "4.14.3",
1006 | "@rollup/rollup-darwin-x64": "4.14.3",
1007 | "@rollup/rollup-linux-arm-gnueabihf": "4.14.3",
1008 | "@rollup/rollup-linux-arm-musleabihf": "4.14.3",
1009 | "@rollup/rollup-linux-arm64-gnu": "4.14.3",
1010 | "@rollup/rollup-linux-arm64-musl": "4.14.3",
1011 | "@rollup/rollup-linux-powerpc64le-gnu": "4.14.3",
1012 | "@rollup/rollup-linux-riscv64-gnu": "4.14.3",
1013 | "@rollup/rollup-linux-s390x-gnu": "4.14.3",
1014 | "@rollup/rollup-linux-x64-gnu": "4.14.3",
1015 | "@rollup/rollup-linux-x64-musl": "4.14.3",
1016 | "@rollup/rollup-win32-arm64-msvc": "4.14.3",
1017 | "@rollup/rollup-win32-ia32-msvc": "4.14.3",
1018 | "@rollup/rollup-win32-x64-msvc": "4.14.3",
1019 | "fsevents": "~2.3.2"
1020 | }
1021 | },
1022 | "node_modules/safe-buffer": {
1023 | "version": "5.2.1",
1024 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
1025 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
1026 | "dev": true,
1027 | "funding": [
1028 | {
1029 | "type": "github",
1030 | "url": "https://github.com/sponsors/feross"
1031 | },
1032 | {
1033 | "type": "patreon",
1034 | "url": "https://www.patreon.com/feross"
1035 | },
1036 | {
1037 | "type": "consulting",
1038 | "url": "https://feross.org/support"
1039 | }
1040 | ]
1041 | },
1042 | "node_modules/semver": {
1043 | "version": "7.6.0",
1044 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
1045 | "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
1046 | "dev": true,
1047 | "dependencies": {
1048 | "lru-cache": "^6.0.0"
1049 | },
1050 | "bin": {
1051 | "semver": "bin/semver.js"
1052 | },
1053 | "engines": {
1054 | "node": ">=10"
1055 | }
1056 | },
1057 | "node_modules/serialize-javascript": {
1058 | "version": "6.0.1",
1059 | "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz",
1060 | "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==",
1061 | "dev": true,
1062 | "dependencies": {
1063 | "randombytes": "^2.1.0"
1064 | }
1065 | },
1066 | "node_modules/shebang-command": {
1067 | "version": "2.0.0",
1068 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
1069 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
1070 | "dev": true,
1071 | "dependencies": {
1072 | "shebang-regex": "^3.0.0"
1073 | },
1074 | "engines": {
1075 | "node": ">=8"
1076 | }
1077 | },
1078 | "node_modules/shebang-regex": {
1079 | "version": "3.0.0",
1080 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
1081 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
1082 | "dev": true,
1083 | "engines": {
1084 | "node": ">=8"
1085 | }
1086 | },
1087 | "node_modules/signal-exit": {
1088 | "version": "4.1.0",
1089 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
1090 | "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
1091 | "dev": true,
1092 | "engines": {
1093 | "node": ">=14"
1094 | },
1095 | "funding": {
1096 | "url": "https://github.com/sponsors/isaacs"
1097 | }
1098 | },
1099 | "node_modules/smob": {
1100 | "version": "1.4.1",
1101 | "resolved": "https://registry.npmjs.org/smob/-/smob-1.4.1.tgz",
1102 | "integrity": "sha512-9LK+E7Hv5R9u4g4C3p+jjLstaLe11MDsL21UpYaCNmapvMkYhqCV4A/f/3gyH8QjMyh6l68q9xC85vihY9ahMQ==",
1103 | "dev": true
1104 | },
1105 | "node_modules/source-map": {
1106 | "version": "0.6.1",
1107 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
1108 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
1109 | "dev": true,
1110 | "engines": {
1111 | "node": ">=0.10.0"
1112 | }
1113 | },
1114 | "node_modules/source-map-support": {
1115 | "version": "0.5.21",
1116 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
1117 | "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
1118 | "dev": true,
1119 | "dependencies": {
1120 | "buffer-from": "^1.0.0",
1121 | "source-map": "^0.6.0"
1122 | }
1123 | },
1124 | "node_modules/string-width": {
1125 | "version": "4.2.3",
1126 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
1127 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
1128 | "dev": true,
1129 | "dependencies": {
1130 | "emoji-regex": "^8.0.0",
1131 | "is-fullwidth-code-point": "^3.0.0",
1132 | "strip-ansi": "^6.0.1"
1133 | },
1134 | "engines": {
1135 | "node": ">=8"
1136 | }
1137 | },
1138 | "node_modules/strip-ansi": {
1139 | "version": "6.0.1",
1140 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
1141 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
1142 | "dev": true,
1143 | "dependencies": {
1144 | "ansi-regex": "^5.0.1"
1145 | },
1146 | "engines": {
1147 | "node": ">=8"
1148 | }
1149 | },
1150 | "node_modules/supports-color": {
1151 | "version": "7.2.0",
1152 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
1153 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
1154 | "dev": true,
1155 | "dependencies": {
1156 | "has-flag": "^4.0.0"
1157 | },
1158 | "engines": {
1159 | "node": ">=8"
1160 | }
1161 | },
1162 | "node_modules/supports-preserve-symlinks-flag": {
1163 | "version": "1.0.0",
1164 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
1165 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
1166 | "dev": true,
1167 | "engines": {
1168 | "node": ">= 0.4"
1169 | },
1170 | "funding": {
1171 | "url": "https://github.com/sponsors/ljharb"
1172 | }
1173 | },
1174 | "node_modules/terser": {
1175 | "version": "5.28.1",
1176 | "resolved": "https://registry.npmjs.org/terser/-/terser-5.28.1.tgz",
1177 | "integrity": "sha512-wM+bZp54v/E9eRRGXb5ZFDvinrJIOaTapx3WUokyVGZu5ucVCK55zEgGd5Dl2fSr3jUo5sDiERErUWLY6QPFyA==",
1178 | "dev": true,
1179 | "dependencies": {
1180 | "@jridgewell/source-map": "^0.3.3",
1181 | "acorn": "^8.8.2",
1182 | "commander": "^2.20.0",
1183 | "source-map-support": "~0.5.20"
1184 | },
1185 | "bin": {
1186 | "terser": "bin/terser"
1187 | },
1188 | "engines": {
1189 | "node": ">=10"
1190 | }
1191 | },
1192 | "node_modules/test-exclude": {
1193 | "version": "6.0.0",
1194 | "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz",
1195 | "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==",
1196 | "dev": true,
1197 | "dependencies": {
1198 | "@istanbuljs/schema": "^0.1.2",
1199 | "glob": "^7.1.4",
1200 | "minimatch": "^3.0.4"
1201 | },
1202 | "engines": {
1203 | "node": ">=8"
1204 | }
1205 | },
1206 | "node_modules/v8-to-istanbul": {
1207 | "version": "9.0.1",
1208 | "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz",
1209 | "integrity": "sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==",
1210 | "dev": true,
1211 | "dependencies": {
1212 | "@jridgewell/trace-mapping": "^0.3.12",
1213 | "@types/istanbul-lib-coverage": "^2.0.1",
1214 | "convert-source-map": "^1.6.0"
1215 | },
1216 | "engines": {
1217 | "node": ">=10.12.0"
1218 | }
1219 | },
1220 | "node_modules/which": {
1221 | "version": "2.0.2",
1222 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
1223 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
1224 | "dev": true,
1225 | "dependencies": {
1226 | "isexe": "^2.0.0"
1227 | },
1228 | "bin": {
1229 | "node-which": "bin/node-which"
1230 | },
1231 | "engines": {
1232 | "node": ">= 8"
1233 | }
1234 | },
1235 | "node_modules/wrap-ansi": {
1236 | "version": "7.0.0",
1237 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
1238 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
1239 | "dev": true,
1240 | "dependencies": {
1241 | "ansi-styles": "^4.0.0",
1242 | "string-width": "^4.1.0",
1243 | "strip-ansi": "^6.0.0"
1244 | },
1245 | "engines": {
1246 | "node": ">=10"
1247 | },
1248 | "funding": {
1249 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
1250 | }
1251 | },
1252 | "node_modules/wrappy": {
1253 | "version": "1.0.2",
1254 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
1255 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
1256 | "dev": true
1257 | },
1258 | "node_modules/y18n": {
1259 | "version": "5.0.8",
1260 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
1261 | "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
1262 | "dev": true,
1263 | "engines": {
1264 | "node": ">=10"
1265 | }
1266 | },
1267 | "node_modules/yallist": {
1268 | "version": "4.0.0",
1269 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
1270 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
1271 | "dev": true
1272 | },
1273 | "node_modules/yargs": {
1274 | "version": "17.7.2",
1275 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
1276 | "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
1277 | "dev": true,
1278 | "dependencies": {
1279 | "cliui": "^8.0.1",
1280 | "escalade": "^3.1.1",
1281 | "get-caller-file": "^2.0.5",
1282 | "require-directory": "^2.1.1",
1283 | "string-width": "^4.2.3",
1284 | "y18n": "^5.0.5",
1285 | "yargs-parser": "^21.1.1"
1286 | },
1287 | "engines": {
1288 | "node": ">=12"
1289 | }
1290 | },
1291 | "node_modules/yargs-parser": {
1292 | "version": "21.1.1",
1293 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
1294 | "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
1295 | "dev": true,
1296 | "engines": {
1297 | "node": ">=12"
1298 | }
1299 | },
1300 | "node_modules/yocto-queue": {
1301 | "version": "0.1.0",
1302 | "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
1303 | "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
1304 | "dev": true,
1305 | "engines": {
1306 | "node": ">=10"
1307 | },
1308 | "funding": {
1309 | "url": "https://github.com/sponsors/sindresorhus"
1310 | }
1311 | }
1312 | },
1313 | "dependencies": {
1314 | "@babel/parser": {
1315 | "version": "7.20.15",
1316 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.15.tgz",
1317 | "integrity": "sha512-DI4a1oZuf8wC+oAJA9RW6ga3Zbe8RZFt7kD9i4qAspz3I/yHet1VvC3DiSy/fsUvv5pvJuNPh0LPOdCcqinDPg==",
1318 | "dev": true
1319 | },
1320 | "@bcoe/v8-coverage": {
1321 | "version": "0.2.3",
1322 | "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz",
1323 | "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==",
1324 | "dev": true
1325 | },
1326 | "@istanbuljs/schema": {
1327 | "version": "0.1.3",
1328 | "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz",
1329 | "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==",
1330 | "dev": true
1331 | },
1332 | "@jridgewell/gen-mapping": {
1333 | "version": "0.3.4",
1334 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.4.tgz",
1335 | "integrity": "sha512-Oud2QPM5dHviZNn4y/WhhYKSXksv+1xLEIsNrAbGcFzUN3ubqWRFT5gwPchNc5NuzILOU4tPBDTZ4VwhL8Y7cw==",
1336 | "dev": true,
1337 | "requires": {
1338 | "@jridgewell/set-array": "^1.0.1",
1339 | "@jridgewell/sourcemap-codec": "^1.4.10",
1340 | "@jridgewell/trace-mapping": "^0.3.9"
1341 | }
1342 | },
1343 | "@jridgewell/resolve-uri": {
1344 | "version": "3.1.0",
1345 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
1346 | "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
1347 | "dev": true
1348 | },
1349 | "@jridgewell/set-array": {
1350 | "version": "1.1.2",
1351 | "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
1352 | "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
1353 | "dev": true
1354 | },
1355 | "@jridgewell/source-map": {
1356 | "version": "0.3.5",
1357 | "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz",
1358 | "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==",
1359 | "dev": true,
1360 | "requires": {
1361 | "@jridgewell/gen-mapping": "^0.3.0",
1362 | "@jridgewell/trace-mapping": "^0.3.9"
1363 | }
1364 | },
1365 | "@jridgewell/sourcemap-codec": {
1366 | "version": "1.4.14",
1367 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
1368 | "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==",
1369 | "dev": true
1370 | },
1371 | "@jridgewell/trace-mapping": {
1372 | "version": "0.3.17",
1373 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz",
1374 | "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==",
1375 | "dev": true,
1376 | "requires": {
1377 | "@jridgewell/resolve-uri": "3.1.0",
1378 | "@jridgewell/sourcemap-codec": "1.4.14"
1379 | }
1380 | },
1381 | "@rollup/plugin-node-resolve": {
1382 | "version": "15.2.3",
1383 | "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.2.3.tgz",
1384 | "integrity": "sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==",
1385 | "dev": true,
1386 | "requires": {
1387 | "@rollup/pluginutils": "^5.0.1",
1388 | "@types/resolve": "1.20.2",
1389 | "deepmerge": "^4.2.2",
1390 | "is-builtin-module": "^3.2.1",
1391 | "is-module": "^1.0.0",
1392 | "resolve": "^1.22.1"
1393 | }
1394 | },
1395 | "@rollup/plugin-terser": {
1396 | "version": "0.4.4",
1397 | "resolved": "https://registry.npmjs.org/@rollup/plugin-terser/-/plugin-terser-0.4.4.tgz",
1398 | "integrity": "sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A==",
1399 | "dev": true,
1400 | "requires": {
1401 | "serialize-javascript": "^6.0.1",
1402 | "smob": "^1.0.0",
1403 | "terser": "^5.17.4"
1404 | }
1405 | },
1406 | "@rollup/pluginutils": {
1407 | "version": "5.1.0",
1408 | "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz",
1409 | "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==",
1410 | "dev": true,
1411 | "requires": {
1412 | "@types/estree": "^1.0.0",
1413 | "estree-walker": "^2.0.2",
1414 | "picomatch": "^2.3.1"
1415 | }
1416 | },
1417 | "@rollup/rollup-android-arm-eabi": {
1418 | "version": "4.14.3",
1419 | "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.14.3.tgz",
1420 | "integrity": "sha512-X9alQ3XM6I9IlSlmC8ddAvMSyG1WuHk5oUnXGw+yUBs3BFoTizmG1La/Gr8fVJvDWAq+zlYTZ9DBgrlKRVY06g==",
1421 | "dev": true,
1422 | "optional": true
1423 | },
1424 | "@rollup/rollup-android-arm64": {
1425 | "version": "4.14.3",
1426 | "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.14.3.tgz",
1427 | "integrity": "sha512-eQK5JIi+POhFpzk+LnjKIy4Ks+pwJ+NXmPxOCSvOKSNRPONzKuUvWE+P9JxGZVxrtzm6BAYMaL50FFuPe0oWMQ==",
1428 | "dev": true,
1429 | "optional": true
1430 | },
1431 | "@rollup/rollup-darwin-arm64": {
1432 | "version": "4.14.3",
1433 | "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.14.3.tgz",
1434 | "integrity": "sha512-Od4vE6f6CTT53yM1jgcLqNfItTsLt5zE46fdPaEmeFHvPs5SjZYlLpHrSiHEKR1+HdRfxuzXHjDOIxQyC3ptBA==",
1435 | "dev": true,
1436 | "optional": true
1437 | },
1438 | "@rollup/rollup-darwin-x64": {
1439 | "version": "4.14.3",
1440 | "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.14.3.tgz",
1441 | "integrity": "sha512-0IMAO21axJeNIrvS9lSe/PGthc8ZUS+zC53O0VhF5gMxfmcKAP4ESkKOCwEi6u2asUrt4mQv2rjY8QseIEb1aw==",
1442 | "dev": true,
1443 | "optional": true
1444 | },
1445 | "@rollup/rollup-linux-arm-gnueabihf": {
1446 | "version": "4.14.3",
1447 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.14.3.tgz",
1448 | "integrity": "sha512-ge2DC7tHRHa3caVEoSbPRJpq7azhG+xYsd6u2MEnJ6XzPSzQsTKyXvh6iWjXRf7Rt9ykIUWHtl0Uz3T6yXPpKw==",
1449 | "dev": true,
1450 | "optional": true
1451 | },
1452 | "@rollup/rollup-linux-arm-musleabihf": {
1453 | "version": "4.14.3",
1454 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.14.3.tgz",
1455 | "integrity": "sha512-ljcuiDI4V3ySuc7eSk4lQ9wU8J8r8KrOUvB2U+TtK0TiW6OFDmJ+DdIjjwZHIw9CNxzbmXY39wwpzYuFDwNXuw==",
1456 | "dev": true,
1457 | "optional": true
1458 | },
1459 | "@rollup/rollup-linux-arm64-gnu": {
1460 | "version": "4.14.3",
1461 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.14.3.tgz",
1462 | "integrity": "sha512-Eci2us9VTHm1eSyn5/eEpaC7eP/mp5n46gTRB3Aar3BgSvDQGJZuicyq6TsH4HngNBgVqC5sDYxOzTExSU+NjA==",
1463 | "dev": true,
1464 | "optional": true
1465 | },
1466 | "@rollup/rollup-linux-arm64-musl": {
1467 | "version": "4.14.3",
1468 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.14.3.tgz",
1469 | "integrity": "sha512-UrBoMLCq4E92/LCqlh+blpqMz5h1tJttPIniwUgOFJyjWI1qrtrDhhpHPuFxULlUmjFHfloWdixtDhSxJt5iKw==",
1470 | "dev": true,
1471 | "optional": true
1472 | },
1473 | "@rollup/rollup-linux-powerpc64le-gnu": {
1474 | "version": "4.14.3",
1475 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.14.3.tgz",
1476 | "integrity": "sha512-5aRjvsS8q1nWN8AoRfrq5+9IflC3P1leMoy4r2WjXyFqf3qcqsxRCfxtZIV58tCxd+Yv7WELPcO9mY9aeQyAmw==",
1477 | "dev": true,
1478 | "optional": true
1479 | },
1480 | "@rollup/rollup-linux-riscv64-gnu": {
1481 | "version": "4.14.3",
1482 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.14.3.tgz",
1483 | "integrity": "sha512-sk/Qh1j2/RJSX7FhEpJn8n0ndxy/uf0kI/9Zc4b1ELhqULVdTfN6HL31CDaTChiBAOgLcsJ1sgVZjWv8XNEsAQ==",
1484 | "dev": true,
1485 | "optional": true
1486 | },
1487 | "@rollup/rollup-linux-s390x-gnu": {
1488 | "version": "4.14.3",
1489 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.14.3.tgz",
1490 | "integrity": "sha512-jOO/PEaDitOmY9TgkxF/TQIjXySQe5KVYB57H/8LRP/ux0ZoO8cSHCX17asMSv3ruwslXW/TLBcxyaUzGRHcqg==",
1491 | "dev": true,
1492 | "optional": true
1493 | },
1494 | "@rollup/rollup-linux-x64-gnu": {
1495 | "version": "4.14.3",
1496 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.14.3.tgz",
1497 | "integrity": "sha512-8ybV4Xjy59xLMyWo3GCfEGqtKV5M5gCSrZlxkPGvEPCGDLNla7v48S662HSGwRd6/2cSneMQWiv+QzcttLrrOA==",
1498 | "dev": true,
1499 | "optional": true
1500 | },
1501 | "@rollup/rollup-linux-x64-musl": {
1502 | "version": "4.14.3",
1503 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.14.3.tgz",
1504 | "integrity": "sha512-s+xf1I46trOY10OqAtZ5Rm6lzHre/UiLA1J2uOhCFXWkbZrJRkYBPO6FhvGfHmdtQ3Bx793MNa7LvoWFAm93bg==",
1505 | "dev": true,
1506 | "optional": true
1507 | },
1508 | "@rollup/rollup-win32-arm64-msvc": {
1509 | "version": "4.14.3",
1510 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.14.3.tgz",
1511 | "integrity": "sha512-+4h2WrGOYsOumDQ5S2sYNyhVfrue+9tc9XcLWLh+Kw3UOxAvrfOrSMFon60KspcDdytkNDh7K2Vs6eMaYImAZg==",
1512 | "dev": true,
1513 | "optional": true
1514 | },
1515 | "@rollup/rollup-win32-ia32-msvc": {
1516 | "version": "4.14.3",
1517 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.14.3.tgz",
1518 | "integrity": "sha512-T1l7y/bCeL/kUwh9OD4PQT4aM7Bq43vX05htPJJ46RTI4r5KNt6qJRzAfNfM+OYMNEVBWQzR2Gyk+FXLZfogGw==",
1519 | "dev": true,
1520 | "optional": true
1521 | },
1522 | "@rollup/rollup-win32-x64-msvc": {
1523 | "version": "4.14.3",
1524 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.14.3.tgz",
1525 | "integrity": "sha512-/BypzV0H1y1HzgYpxqRaXGBRqfodgoBBCcsrujT6QRcakDQdfU+Lq9PENPh5jB4I44YWq+0C2eHsHya+nZY1sA==",
1526 | "dev": true,
1527 | "optional": true
1528 | },
1529 | "@types/estree": {
1530 | "version": "1.0.5",
1531 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
1532 | "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==",
1533 | "dev": true
1534 | },
1535 | "@types/istanbul-lib-coverage": {
1536 | "version": "2.0.4",
1537 | "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz",
1538 | "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==",
1539 | "dev": true
1540 | },
1541 | "@types/resolve": {
1542 | "version": "1.20.2",
1543 | "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz",
1544 | "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==",
1545 | "dev": true
1546 | },
1547 | "acorn": {
1548 | "version": "8.11.3",
1549 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz",
1550 | "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==",
1551 | "dev": true
1552 | },
1553 | "ansi-regex": {
1554 | "version": "5.0.1",
1555 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
1556 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
1557 | "dev": true
1558 | },
1559 | "ansi-styles": {
1560 | "version": "4.3.0",
1561 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
1562 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
1563 | "dev": true,
1564 | "requires": {
1565 | "color-convert": "^2.0.1"
1566 | }
1567 | },
1568 | "ascjs": {
1569 | "version": "6.0.3",
1570 | "resolved": "https://registry.npmjs.org/ascjs/-/ascjs-6.0.3.tgz",
1571 | "integrity": "sha512-lAIyi1j7oT0OtF9yFLiRf93LEcK7xTb/gPFwmfdi2T/BQmxJi1YcIES+VnP/kgGJkxq9Oh2DEK6GrZ6l2OVhVQ==",
1572 | "dev": true,
1573 | "requires": {
1574 | "@babel/parser": "^7.12.5"
1575 | }
1576 | },
1577 | "balanced-match": {
1578 | "version": "1.0.2",
1579 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
1580 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
1581 | "dev": true
1582 | },
1583 | "brace-expansion": {
1584 | "version": "1.1.11",
1585 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
1586 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
1587 | "dev": true,
1588 | "requires": {
1589 | "balanced-match": "^1.0.0",
1590 | "concat-map": "0.0.1"
1591 | }
1592 | },
1593 | "buffer-from": {
1594 | "version": "1.1.2",
1595 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
1596 | "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
1597 | "dev": true
1598 | },
1599 | "builtin-modules": {
1600 | "version": "3.3.0",
1601 | "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz",
1602 | "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==",
1603 | "dev": true
1604 | },
1605 | "c8": {
1606 | "version": "9.1.0",
1607 | "resolved": "https://registry.npmjs.org/c8/-/c8-9.1.0.tgz",
1608 | "integrity": "sha512-mBWcT5iqNir1zIkzSPyI3NCR9EZCVI3WUD+AVO17MVWTSFNyUueXE82qTeampNtTr+ilN/5Ua3j24LgbCKjDVg==",
1609 | "dev": true,
1610 | "requires": {
1611 | "@bcoe/v8-coverage": "^0.2.3",
1612 | "@istanbuljs/schema": "^0.1.3",
1613 | "find-up": "^5.0.0",
1614 | "foreground-child": "^3.1.1",
1615 | "istanbul-lib-coverage": "^3.2.0",
1616 | "istanbul-lib-report": "^3.0.1",
1617 | "istanbul-reports": "^3.1.6",
1618 | "test-exclude": "^6.0.0",
1619 | "v8-to-istanbul": "^9.0.0",
1620 | "yargs": "^17.7.2",
1621 | "yargs-parser": "^21.1.1"
1622 | }
1623 | },
1624 | "cliui": {
1625 | "version": "8.0.1",
1626 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
1627 | "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
1628 | "dev": true,
1629 | "requires": {
1630 | "string-width": "^4.2.0",
1631 | "strip-ansi": "^6.0.1",
1632 | "wrap-ansi": "^7.0.0"
1633 | }
1634 | },
1635 | "color-convert": {
1636 | "version": "2.0.1",
1637 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
1638 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
1639 | "dev": true,
1640 | "requires": {
1641 | "color-name": "~1.1.4"
1642 | }
1643 | },
1644 | "color-name": {
1645 | "version": "1.1.4",
1646 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
1647 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
1648 | "dev": true
1649 | },
1650 | "commander": {
1651 | "version": "2.20.3",
1652 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
1653 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
1654 | "dev": true
1655 | },
1656 | "concat-map": {
1657 | "version": "0.0.1",
1658 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
1659 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
1660 | "dev": true
1661 | },
1662 | "convert-source-map": {
1663 | "version": "1.9.0",
1664 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz",
1665 | "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==",
1666 | "dev": true
1667 | },
1668 | "cross-spawn": {
1669 | "version": "7.0.3",
1670 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
1671 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
1672 | "dev": true,
1673 | "requires": {
1674 | "path-key": "^3.1.0",
1675 | "shebang-command": "^2.0.0",
1676 | "which": "^2.0.1"
1677 | }
1678 | },
1679 | "deepmerge": {
1680 | "version": "4.3.0",
1681 | "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.0.tgz",
1682 | "integrity": "sha512-z2wJZXrmeHdvYJp/Ux55wIjqo81G5Bp4c+oELTW+7ar6SogWHajt5a9gO3s3IDaGSAXjDk0vlQKN3rms8ab3og==",
1683 | "dev": true
1684 | },
1685 | "emoji-regex": {
1686 | "version": "8.0.0",
1687 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
1688 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
1689 | "dev": true
1690 | },
1691 | "escalade": {
1692 | "version": "3.1.2",
1693 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz",
1694 | "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==",
1695 | "dev": true
1696 | },
1697 | "estree-walker": {
1698 | "version": "2.0.2",
1699 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
1700 | "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
1701 | "dev": true
1702 | },
1703 | "find-up": {
1704 | "version": "5.0.0",
1705 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
1706 | "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
1707 | "dev": true,
1708 | "requires": {
1709 | "locate-path": "^6.0.0",
1710 | "path-exists": "^4.0.0"
1711 | }
1712 | },
1713 | "foreground-child": {
1714 | "version": "3.1.1",
1715 | "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz",
1716 | "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==",
1717 | "dev": true,
1718 | "requires": {
1719 | "cross-spawn": "^7.0.0",
1720 | "signal-exit": "^4.0.1"
1721 | }
1722 | },
1723 | "fs.realpath": {
1724 | "version": "1.0.0",
1725 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
1726 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
1727 | "dev": true
1728 | },
1729 | "fsevents": {
1730 | "version": "2.3.2",
1731 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
1732 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
1733 | "dev": true,
1734 | "optional": true
1735 | },
1736 | "function-bind": {
1737 | "version": "1.1.1",
1738 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
1739 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
1740 | "dev": true
1741 | },
1742 | "get-caller-file": {
1743 | "version": "2.0.5",
1744 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
1745 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
1746 | "dev": true
1747 | },
1748 | "glob": {
1749 | "version": "7.2.3",
1750 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
1751 | "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
1752 | "dev": true,
1753 | "requires": {
1754 | "fs.realpath": "^1.0.0",
1755 | "inflight": "^1.0.4",
1756 | "inherits": "2",
1757 | "minimatch": "^3.1.1",
1758 | "once": "^1.3.0",
1759 | "path-is-absolute": "^1.0.0"
1760 | }
1761 | },
1762 | "has": {
1763 | "version": "1.0.3",
1764 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
1765 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
1766 | "dev": true,
1767 | "requires": {
1768 | "function-bind": "^1.1.1"
1769 | }
1770 | },
1771 | "has-flag": {
1772 | "version": "4.0.0",
1773 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
1774 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
1775 | "dev": true
1776 | },
1777 | "html-escaper": {
1778 | "version": "2.0.2",
1779 | "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz",
1780 | "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==",
1781 | "dev": true
1782 | },
1783 | "inflight": {
1784 | "version": "1.0.6",
1785 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
1786 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
1787 | "dev": true,
1788 | "requires": {
1789 | "once": "^1.3.0",
1790 | "wrappy": "1"
1791 | }
1792 | },
1793 | "inherits": {
1794 | "version": "2.0.4",
1795 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
1796 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
1797 | "dev": true
1798 | },
1799 | "is-builtin-module": {
1800 | "version": "3.2.1",
1801 | "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz",
1802 | "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==",
1803 | "dev": true,
1804 | "requires": {
1805 | "builtin-modules": "^3.3.0"
1806 | }
1807 | },
1808 | "is-core-module": {
1809 | "version": "2.11.0",
1810 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz",
1811 | "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==",
1812 | "dev": true,
1813 | "requires": {
1814 | "has": "^1.0.3"
1815 | }
1816 | },
1817 | "is-fullwidth-code-point": {
1818 | "version": "3.0.0",
1819 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
1820 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
1821 | "dev": true
1822 | },
1823 | "is-module": {
1824 | "version": "1.0.0",
1825 | "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz",
1826 | "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==",
1827 | "dev": true
1828 | },
1829 | "isexe": {
1830 | "version": "2.0.0",
1831 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
1832 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
1833 | "dev": true
1834 | },
1835 | "istanbul-lib-coverage": {
1836 | "version": "3.2.2",
1837 | "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz",
1838 | "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==",
1839 | "dev": true
1840 | },
1841 | "istanbul-lib-report": {
1842 | "version": "3.0.1",
1843 | "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz",
1844 | "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==",
1845 | "dev": true,
1846 | "requires": {
1847 | "istanbul-lib-coverage": "^3.0.0",
1848 | "make-dir": "^4.0.0",
1849 | "supports-color": "^7.1.0"
1850 | }
1851 | },
1852 | "istanbul-reports": {
1853 | "version": "3.1.7",
1854 | "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz",
1855 | "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==",
1856 | "dev": true,
1857 | "requires": {
1858 | "html-escaper": "^2.0.0",
1859 | "istanbul-lib-report": "^3.0.0"
1860 | }
1861 | },
1862 | "locate-path": {
1863 | "version": "6.0.0",
1864 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
1865 | "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
1866 | "dev": true,
1867 | "requires": {
1868 | "p-locate": "^5.0.0"
1869 | }
1870 | },
1871 | "lru-cache": {
1872 | "version": "6.0.0",
1873 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
1874 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
1875 | "dev": true,
1876 | "requires": {
1877 | "yallist": "^4.0.0"
1878 | }
1879 | },
1880 | "make-dir": {
1881 | "version": "4.0.0",
1882 | "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz",
1883 | "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==",
1884 | "dev": true,
1885 | "requires": {
1886 | "semver": "^7.5.3"
1887 | }
1888 | },
1889 | "minimatch": {
1890 | "version": "3.1.2",
1891 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
1892 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
1893 | "dev": true,
1894 | "requires": {
1895 | "brace-expansion": "^1.1.7"
1896 | }
1897 | },
1898 | "once": {
1899 | "version": "1.4.0",
1900 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
1901 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
1902 | "dev": true,
1903 | "requires": {
1904 | "wrappy": "1"
1905 | }
1906 | },
1907 | "p-limit": {
1908 | "version": "3.1.0",
1909 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
1910 | "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
1911 | "dev": true,
1912 | "requires": {
1913 | "yocto-queue": "^0.1.0"
1914 | }
1915 | },
1916 | "p-locate": {
1917 | "version": "5.0.0",
1918 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
1919 | "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
1920 | "dev": true,
1921 | "requires": {
1922 | "p-limit": "^3.0.2"
1923 | }
1924 | },
1925 | "path-exists": {
1926 | "version": "4.0.0",
1927 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
1928 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
1929 | "dev": true
1930 | },
1931 | "path-is-absolute": {
1932 | "version": "1.0.1",
1933 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
1934 | "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
1935 | "dev": true
1936 | },
1937 | "path-key": {
1938 | "version": "3.1.1",
1939 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
1940 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
1941 | "dev": true
1942 | },
1943 | "path-parse": {
1944 | "version": "1.0.7",
1945 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
1946 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
1947 | "dev": true
1948 | },
1949 | "picomatch": {
1950 | "version": "2.3.1",
1951 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
1952 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
1953 | "dev": true
1954 | },
1955 | "randombytes": {
1956 | "version": "2.1.0",
1957 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
1958 | "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
1959 | "dev": true,
1960 | "requires": {
1961 | "safe-buffer": "^5.1.0"
1962 | }
1963 | },
1964 | "require-directory": {
1965 | "version": "2.1.1",
1966 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
1967 | "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
1968 | "dev": true
1969 | },
1970 | "resolve": {
1971 | "version": "1.22.1",
1972 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
1973 | "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
1974 | "dev": true,
1975 | "requires": {
1976 | "is-core-module": "^2.9.0",
1977 | "path-parse": "^1.0.7",
1978 | "supports-preserve-symlinks-flag": "^1.0.0"
1979 | }
1980 | },
1981 | "rollup": {
1982 | "version": "4.14.3",
1983 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.14.3.tgz",
1984 | "integrity": "sha512-ag5tTQKYsj1bhrFC9+OEWqb5O6VYgtQDO9hPDBMmIbePwhfSr+ExlcU741t8Dhw5DkPCQf6noz0jb36D6W9/hw==",
1985 | "dev": true,
1986 | "requires": {
1987 | "@rollup/rollup-android-arm-eabi": "4.14.3",
1988 | "@rollup/rollup-android-arm64": "4.14.3",
1989 | "@rollup/rollup-darwin-arm64": "4.14.3",
1990 | "@rollup/rollup-darwin-x64": "4.14.3",
1991 | "@rollup/rollup-linux-arm-gnueabihf": "4.14.3",
1992 | "@rollup/rollup-linux-arm-musleabihf": "4.14.3",
1993 | "@rollup/rollup-linux-arm64-gnu": "4.14.3",
1994 | "@rollup/rollup-linux-arm64-musl": "4.14.3",
1995 | "@rollup/rollup-linux-powerpc64le-gnu": "4.14.3",
1996 | "@rollup/rollup-linux-riscv64-gnu": "4.14.3",
1997 | "@rollup/rollup-linux-s390x-gnu": "4.14.3",
1998 | "@rollup/rollup-linux-x64-gnu": "4.14.3",
1999 | "@rollup/rollup-linux-x64-musl": "4.14.3",
2000 | "@rollup/rollup-win32-arm64-msvc": "4.14.3",
2001 | "@rollup/rollup-win32-ia32-msvc": "4.14.3",
2002 | "@rollup/rollup-win32-x64-msvc": "4.14.3",
2003 | "@types/estree": "1.0.5",
2004 | "fsevents": "~2.3.2"
2005 | }
2006 | },
2007 | "safe-buffer": {
2008 | "version": "5.2.1",
2009 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
2010 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
2011 | "dev": true
2012 | },
2013 | "semver": {
2014 | "version": "7.6.0",
2015 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
2016 | "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
2017 | "dev": true,
2018 | "requires": {
2019 | "lru-cache": "^6.0.0"
2020 | }
2021 | },
2022 | "serialize-javascript": {
2023 | "version": "6.0.1",
2024 | "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz",
2025 | "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==",
2026 | "dev": true,
2027 | "requires": {
2028 | "randombytes": "^2.1.0"
2029 | }
2030 | },
2031 | "shebang-command": {
2032 | "version": "2.0.0",
2033 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
2034 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
2035 | "dev": true,
2036 | "requires": {
2037 | "shebang-regex": "^3.0.0"
2038 | }
2039 | },
2040 | "shebang-regex": {
2041 | "version": "3.0.0",
2042 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
2043 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
2044 | "dev": true
2045 | },
2046 | "signal-exit": {
2047 | "version": "4.1.0",
2048 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
2049 | "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
2050 | "dev": true
2051 | },
2052 | "smob": {
2053 | "version": "1.4.1",
2054 | "resolved": "https://registry.npmjs.org/smob/-/smob-1.4.1.tgz",
2055 | "integrity": "sha512-9LK+E7Hv5R9u4g4C3p+jjLstaLe11MDsL21UpYaCNmapvMkYhqCV4A/f/3gyH8QjMyh6l68q9xC85vihY9ahMQ==",
2056 | "dev": true
2057 | },
2058 | "source-map": {
2059 | "version": "0.6.1",
2060 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
2061 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
2062 | "dev": true
2063 | },
2064 | "source-map-support": {
2065 | "version": "0.5.21",
2066 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
2067 | "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
2068 | "dev": true,
2069 | "requires": {
2070 | "buffer-from": "^1.0.0",
2071 | "source-map": "^0.6.0"
2072 | }
2073 | },
2074 | "string-width": {
2075 | "version": "4.2.3",
2076 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
2077 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
2078 | "dev": true,
2079 | "requires": {
2080 | "emoji-regex": "^8.0.0",
2081 | "is-fullwidth-code-point": "^3.0.0",
2082 | "strip-ansi": "^6.0.1"
2083 | }
2084 | },
2085 | "strip-ansi": {
2086 | "version": "6.0.1",
2087 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
2088 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
2089 | "dev": true,
2090 | "requires": {
2091 | "ansi-regex": "^5.0.1"
2092 | }
2093 | },
2094 | "supports-color": {
2095 | "version": "7.2.0",
2096 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
2097 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
2098 | "dev": true,
2099 | "requires": {
2100 | "has-flag": "^4.0.0"
2101 | }
2102 | },
2103 | "supports-preserve-symlinks-flag": {
2104 | "version": "1.0.0",
2105 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
2106 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
2107 | "dev": true
2108 | },
2109 | "terser": {
2110 | "version": "5.28.1",
2111 | "resolved": "https://registry.npmjs.org/terser/-/terser-5.28.1.tgz",
2112 | "integrity": "sha512-wM+bZp54v/E9eRRGXb5ZFDvinrJIOaTapx3WUokyVGZu5ucVCK55zEgGd5Dl2fSr3jUo5sDiERErUWLY6QPFyA==",
2113 | "dev": true,
2114 | "requires": {
2115 | "@jridgewell/source-map": "^0.3.3",
2116 | "acorn": "^8.8.2",
2117 | "commander": "^2.20.0",
2118 | "source-map-support": "~0.5.20"
2119 | }
2120 | },
2121 | "test-exclude": {
2122 | "version": "6.0.0",
2123 | "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz",
2124 | "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==",
2125 | "dev": true,
2126 | "requires": {
2127 | "@istanbuljs/schema": "^0.1.2",
2128 | "glob": "^7.1.4",
2129 | "minimatch": "^3.0.4"
2130 | }
2131 | },
2132 | "v8-to-istanbul": {
2133 | "version": "9.0.1",
2134 | "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz",
2135 | "integrity": "sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==",
2136 | "dev": true,
2137 | "requires": {
2138 | "@jridgewell/trace-mapping": "^0.3.12",
2139 | "@types/istanbul-lib-coverage": "^2.0.1",
2140 | "convert-source-map": "^1.6.0"
2141 | }
2142 | },
2143 | "which": {
2144 | "version": "2.0.2",
2145 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
2146 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
2147 | "dev": true,
2148 | "requires": {
2149 | "isexe": "^2.0.0"
2150 | }
2151 | },
2152 | "wrap-ansi": {
2153 | "version": "7.0.0",
2154 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
2155 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
2156 | "dev": true,
2157 | "requires": {
2158 | "ansi-styles": "^4.0.0",
2159 | "string-width": "^4.1.0",
2160 | "strip-ansi": "^6.0.0"
2161 | }
2162 | },
2163 | "wrappy": {
2164 | "version": "1.0.2",
2165 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
2166 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
2167 | "dev": true
2168 | },
2169 | "y18n": {
2170 | "version": "5.0.8",
2171 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
2172 | "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
2173 | "dev": true
2174 | },
2175 | "yallist": {
2176 | "version": "4.0.0",
2177 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
2178 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
2179 | "dev": true
2180 | },
2181 | "yargs": {
2182 | "version": "17.7.2",
2183 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
2184 | "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
2185 | "dev": true,
2186 | "requires": {
2187 | "cliui": "^8.0.1",
2188 | "escalade": "^3.1.1",
2189 | "get-caller-file": "^2.0.5",
2190 | "require-directory": "^2.1.1",
2191 | "string-width": "^4.2.3",
2192 | "y18n": "^5.0.5",
2193 | "yargs-parser": "^21.1.1"
2194 | }
2195 | },
2196 | "yargs-parser": {
2197 | "version": "21.1.1",
2198 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
2199 | "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
2200 | "dev": true
2201 | },
2202 | "yocto-queue": {
2203 | "version": "0.1.0",
2204 | "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
2205 | "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
2206 | "dev": true
2207 | }
2208 | }
2209 | }
2210 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "@webreflection/signal",
3 | "description": "A minimalistic signals implementation",
4 | "version": "2.1.2",
5 | "main": "./cjs/index.js",
6 | "types": "./types/index.d.ts",
7 | "scripts": {
8 | "build": "npm run cjs && npm run rollup:es && npm run test && npm run size",
9 | "cjs": "ascjs esm cjs",
10 | "test": "c8 node test/index.js",
11 | "size": "cat es.js | wc -c && cat es.js | brotli | wc -c",
12 | "rollup:es": "rollup --config rollup/es.config.js && sed -i 's/),this.dispose/).dispose/' es.js",
13 | "coverage": "mkdir -p ./coverage; c8 report --reporter=text-lcov > ./coverage/lcov.info"
14 | },
15 | "keywords": [
16 | "minimalistic",
17 | "signals"
18 | ],
19 | "author": "Andrea Giammarchi",
20 | "license": "ISC",
21 | "devDependencies": {
22 | "@rollup/plugin-node-resolve": "^15.2.3",
23 | "@rollup/plugin-terser": "^0.4.4",
24 | "ascjs": "^6.0.3",
25 | "c8": "^9.1.0",
26 | "rollup": "^4.14.3"
27 | },
28 | "module": "./esm/index.js",
29 | "unpkg": "./es.js",
30 | "type": "module",
31 | "exports": {
32 | ".": {
33 | "import": "./esm/index.js",
34 | "default": "./cjs/index.js",
35 | "types": "./types/index.d.ts"
36 | },
37 | "./package.json": "./package.json"
38 | },
39 | "repository": {
40 | "type": "git",
41 | "url": "git+https://github.com/WebReflection/signal.git"
42 | },
43 | "bugs": {
44 | "url": "https://github.com/WebReflection/signal/issues"
45 | },
46 | "homepage": "https://github.com/WebReflection/signal#readme"
47 | }
48 |
--------------------------------------------------------------------------------
/rollup/es.config.js:
--------------------------------------------------------------------------------
1 | import {nodeResolve} from '@rollup/plugin-node-resolve';
2 | import terser from '@rollup/plugin-terser';
3 |
4 | export default {
5 | input: './esm/index.js',
6 | plugins: [
7 | nodeResolve(),
8 | terser()
9 | ],
10 | output: {
11 | file: './es.js',
12 | format: 'module'
13 | }
14 | };
15 |
--------------------------------------------------------------------------------
/test/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
44 |
45 |
--------------------------------------------------------------------------------
/test/index.js:
--------------------------------------------------------------------------------
1 | import { signal, computed, effect, batch, untracked } from '../esm/index.js';
2 |
3 | const assert = (got, expected) => {
4 | if (got !== expected) {
5 | console.error('expected', expected, 'got', got);
6 | process.exit(1);
7 | }
8 | };
9 |
10 | console.time('@webreflection/signal');
11 |
12 | const single = signal(1);
13 | const double = signal(10);
14 | const triple = signal(100);
15 |
16 | const sum = computed(() => single + double + triple);
17 | const min = computed(() => sum - triple);
18 |
19 | assert(sum.value, 111);
20 |
21 | effect(() => {
22 | console.log('computed in effect', sum.value);
23 | });
24 |
25 | assert(single.peek(), 1);
26 | single.value++;
27 |
28 | assert(sum.value, 112);
29 | assert(min.value, 12);
30 | sum.e.dispose();
31 | assert(min.value, 12);
32 |
33 | assert(single.peek(), 2);
34 |
35 | single.value++;
36 | double.value++;
37 | triple.value++;
38 | assert(min.value, 112 - triple.value);
39 |
40 | assert(sum.value, 112);
41 | assert(sum.toJSON(), 112);
42 | assert(sum.toString(), '112');
43 | assert(sum.valueOf(), 112);
44 | assert(sum.peek(), 112);
45 |
46 | try {
47 | sum.value = 1;
48 | assert('assignment', 'cannot assign computed');
49 | }
50 | catch (OK) { }
51 |
52 | // internal effects
53 | console.log('')
54 | let runs = 0, out = 0;
55 | let inner, outer = effect(() => {
56 | runs++;
57 | console.log('outer effect', single.value);
58 | inner = effect(() => {
59 | runs++;
60 | console.log('inner effect', double.value);
61 | return () => out++
62 | });
63 | });
64 |
65 | assert(runs, 2);
66 | assert(out, 0);
67 | ++double.value;
68 | assert(out, 1);
69 | assert(runs, 3);
70 | outer();
71 | ++double.value;
72 | assert(runs, 3);
73 | assert(out, 1);
74 | inner()
75 | assert(out, 2);
76 |
77 | // untracked
78 | console.log('')
79 | runs = 0; out = 0;
80 | outer = effect(() => {
81 | runs++;
82 | console.log('tracked effect', single.value);
83 | out = untracked(() => (
84 | console.log('untracked effect', double.value),
85 | runs++
86 | ));
87 | });
88 |
89 | assert(runs, 2);
90 | ++double.value;
91 | assert(runs, 2);
92 | assert(out, 1);
93 | outer();
94 | ++double.value;
95 | assert(runs, 2);
96 | assert(out, 1);
97 |
98 | // batched
99 | runs = 0;
100 | const d1 = effect(() => {
101 | runs++;
102 | console.log('');
103 | console.log('batched effect 1', single.value);
104 | console.log('batched effect 2', double.value);
105 | });
106 |
107 | assert(runs, 1);
108 | batch(() => {
109 | single.value++;
110 | double.value++;
111 | });
112 | assert(runs, 2);
113 | d1();
114 | assert(runs, 2);
115 |
116 | const cmp = computed(() => single + double);
117 |
118 | // batched computed
119 | console.log('');
120 | runs = 0;
121 | const d2 = effect(() => {
122 | runs++;
123 | console.log('batched computed', cmp.value);
124 | });
125 |
126 | assert(runs, 1);
127 | batch(() => {
128 | single.value++;
129 | double.value++;
130 | });
131 | assert(runs, 2);
132 | d2();
133 | assert(runs, 2);
134 | single.value++;
135 | assert(runs, 2);
136 |
137 | console.timeEnd('@webreflection/signal');
138 |
--------------------------------------------------------------------------------
/types/index.d.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Invoke a callback that updates many signals and runs effects only after.
3 | * @type {(fn:() => void) => void}
4 | */
5 | export const batch: (fn: () => void) => void;
6 |
7 | /**
8 | * Invokes a function when any of its internal signals or computed values change.
9 | * Returns a `dispose` callback.
10 | * @template T
11 | * @type {(fn: (v?: T) => T | undefined, value?: T) => () => void}
12 | */
13 | export const effect: (fn: (v?: T) => T, value?: T) => () => void;
14 |
15 | /**
16 | * A signal with a value property also exposed via toJSON, toString and valueOf.
17 | * @template T
18 | */
19 | export class Signal extends Set {
20 | /** @param {T} value the value carried through the signal */
21 | constructor(value: T);
22 |
23 | /** @param {T} value the new value carried through the signal */
24 | set value(arg: T);
25 |
26 | /** @returns {T} */
27 | get value(): T;
28 |
29 | /** Returns the `value` without side-effects */
30 | peek(): T;
31 |
32 | /** Resolves the `Promise` with implicit side-effects */
33 | then(onfulfilled?: (value: T) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike): Promise;
34 |
35 | /** Returns the `value` with implicit side-effects */
36 | toJSON(): T;
37 |
38 | /** Returns the `value` with implicit side-effects */
39 | valueOf(): T;
40 | }
41 |
42 | /**
43 | * Returns a writable Signal that side-effects whenever its `value` gets updated.
44 | * @template T
45 | * @type {(value: T) => Signal}
46 | */
47 | export const signal: (value: T) => Signal;
48 |
49 | /**
50 | * A read-only Signal extend that is invoked only when any of the internally
51 | * used signals, as in within the callback, is unknown or updated.
52 | * @template T
53 | * @extends {Signal}
54 | */
55 | export class Computed extends Signal {
56 | /**
57 | * @param {(v?: T) => T} fn the callback invoked when its signals changes
58 | * @param {T | undefined} value the optional initial value of the callback
59 | */
60 | constructor(fn: (v?: T) => T, value: T | undefined);
61 |
62 | /** @readonly @returns {T} */
63 | get value(): T;
64 | }
65 |
66 | /**
67 | * Returns a Computed signal that is invoked only when any of the internally
68 | * used signals, as in within the callback, is unknown or updated.
69 | * @template T
70 | * @type {(fn: (v?: T) => T, value?: T) => Computed}
71 | */
72 | export const computed: (fn: (v?: T) => T, value?: T) => Computed;
73 |
--------------------------------------------------------------------------------