├── .github
    └── workflows
    │   └── test.yml
├── .gitignore
├── LICENSE
├── README.md
├── package.json
├── plugin
    ├── package.json
    ├── pnpm-global
    │   └── 5
    │   │   └── pnpm-lock.yaml
    ├── rollup.config.js
    ├── src
    │   ├── index.ts
    │   ├── rwc.ts
    │   ├── utils
    │   │   ├── index.ts
    │   │   ├── react.ts
    │   │   └── viteWorker.ts
    │   ├── vite.ts
    │   └── vite
    │   │   ├── handleImports.ts
    │   │   ├── registerComponents.ts
    │   │   ├── workerComponent.ts
    │   │   └── workerFile.ts
    └── tsconfig.json
├── pnpm-global
    └── 5
    │   └── pnpm-lock.yaml
├── pnpm-lock.yaml
├── pnpm-workspace.yaml
├── test
    ├── utils.ts
    └── vite
    │   ├── App.tsx
    │   ├── Hello.worker.tsx
    │   ├── TextBox.tsx
    │   ├── basic.test.tsx
    │   ├── index.html
    │   ├── main.tsx
    │   ├── package.json
    │   ├── tsconfig.json
    │   └── vite.config.ts
└── tsconfig.json
/.github/workflows/test.yml:
--------------------------------------------------------------------------------
 1 | name: Test
 2 | 
 3 | on:
 4 |   push:
 5 |     branches:
 6 |       - main
 7 | 
 8 |   pull_request:
 9 |     branches:
10 |       - main
11 | 
12 | jobs:
13 |   build:
14 |     runs-on: ${{ matrix.os }}
15 | 
16 |     timeout-minutes: 6
17 | 
18 |     strategy:
19 |       matrix:
20 |         node-version: [16.x, 14] # 14
21 |         os: [ubuntu-latest, windows-latest, macos-latest] # mac
22 |       fail-fast: false
23 | 
24 |     steps:
25 |       - uses: actions/checkout@v2
26 | 
27 |       - name: Install pnpm
28 |         uses: pnpm/action-setup@v2.0.1
29 |         with:
30 |           version: 6.23.5
31 | 
32 |       - name: Set node version to ${{ matrix.node_version }}
33 |         uses: actions/setup-node@v2
34 |         with:
35 |           node-version: ${{ matrix.node_version }}
36 |           cache: "pnpm"
37 | 
38 |       - name: Install
39 |         run: pnpm i
40 | 
41 |       - name: Build
42 |         run: pnpm run build
43 | 
44 |       - name: Test
45 |         run: pnpm run test:ci
46 | 
47 |       - name: Lint
48 |         run: pnpm run lint --if-present
49 | 
50 |       - name: TypeCheck
51 |         run: pnpm run typecheck
52 | 
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules/
2 | dist
3 | 
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
 1 | MIT License
 2 | 
 3 | Copyright (c) 2021 M. Bagher Abiat
 4 | 
 5 | Permission is hereby granted, free of charge, to any person obtaining a copy
 6 | of this software and associated documentation files (the "Software"), to deal
 7 | in the Software without restriction, including without limitation the rights
 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 | 
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 | 
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 | 
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
 1 | # react-worker-components-plugin ⚡
 2 | 
 3 | 
 4 | 
 5 | > *something like react server components, but web workers instead of a server*
 6 | 
 7 | **react-worker-components-plugin** is a plugin that renders components in web workers and not in the main thread, which helps in rendering blocking components in a non-blocking way.  This project is based on the experimental [react-worker-components](https://github.com/dai-shi/react-worker-components).
 8 | 
 9 | - ⚡ Fast
10 | - 💥 Powered by `Suspense`
11 | - 🔥 Easy to use
12 | 
13 | 
32 |       fib of number {num}: {fibNum} 
33 |       {children}
34 |     
35 |   );
36 | };
37 | ```
38 | ### `App.tsx`
39 | ```tsx
40 | import { Fib } from './Fib.worker'
41 | 
42 | function App() {
43 |   const [count, setCount] = useState(40);
44 |   return (
45 |     
46 |       
Workers 
47 |       Count: {count} 
48 |        setCount(count + 1)}>
49 |         +1
50 |        
51 |        setCount((c) => c - 1)}
55 |       >
56 |         -1
57 |        
58 |       Loading... }>
59 | 	      ,
126 |   file: string,
127 |   contentHash: string,
128 |   content: string | Buffer
129 | ): string {
130 |   const basename = path.basename(file);
131 | 
132 |   // placeholders for `assetFileNames`
133 |   // `hash` is slightly different from the rollup's one
134 |   const extname = path.extname(basename);
135 |   const ext = extname.substring(1);
136 |   const name = basename.slice(0, -extname.length);
137 |   const hash = contentHash;
138 | 
139 |   if (typeof assetFileNames === "function") {
140 |     assetFileNames = assetFileNames({
141 |       name: file,
142 |       source: content,
143 |       type: "asset",
144 |     });
145 |     if (typeof assetFileNames !== "string") {
146 |       throw new TypeError("assetFileNames must return a string");
147 |     }
148 |   } else if (typeof assetFileNames !== "string") {
149 |     throw new TypeError("assetFileNames must be a string or a function");
150 |   }
151 | 
152 |   const fileName = assetFileNames.replace(
153 |     /\[\w+\]/g,
154 |     (placeholder: string): string => {
155 |       switch (placeholder) {
156 |         case "[ext]":
157 |           return ext;
158 | 
159 |         case "[extname]":
160 |           return extname;
161 | 
162 |         case "[hash]":
163 |           return hash;
164 | 
165 |         case "[name]":
166 |           return name;
167 |       }
168 |       throw new Error(
169 |         `invalid placeholder ${placeholder} in assetFileNames "${assetFileNames}"`
170 |       );
171 |     }
172 |   );
173 | 
174 |   return fileName;
175 | }
176 | const assetCache = new WeakMap>();
177 | const assetHashToFilenameMap = new WeakMap<
178 |   ResolvedConfig,
179 |   Map
180 | >();
181 | // save hashes of the files that has been emitted in build watch
182 | const emittedHashMap = new WeakMap>();
183 | export function getAssetHash(content: Buffer): string {
184 |   return createHash("sha256").update(content).digest("hex").slice(0, 8);
185 | }
186 | export async function fileToBuiltUrl(
187 |   id: string,
188 |   config: ResolvedConfig,
189 |   pluginContext: PluginContext,
190 |   skipPublicCheck = false
191 | ): Promise {
192 |   if (!skipPublicCheck && checkPublicFile(id, config)) {
193 |     return config.base + id.slice(1);
194 |   }
195 | 
196 |   const cache = assetCache.get(config)!;
197 |   const cached = cache.get(id);
198 |   if (cached) {
199 |     return cached;
200 |   }
201 | 
202 |   const file = cleanUrl(id);
203 |   const content = await fsp.readFile(file);
204 | 
205 |   let url: string;
206 |   if (
207 |     config.build.lib ||
208 |     (!file.endsWith(".svg") &&
209 |       content.length < Number(config.build.assetsInlineLimit))
210 |   ) {
211 |     // base64 inlined as a string
212 |     url = `data:${mime.getType(file)};base64,${content.toString("base64")}`;
213 |   } else {
214 |     // emit as asset
215 |     // rollup supports `import.meta.ROLLUP_FILE_URL_*`, but it generates code
216 |     // that uses runtime url sniffing and it can be verbose when targeting
217 |     // non-module format. It also fails to cascade the asset content change
218 |     // into the chunk's hash, so we have to do our own content hashing here.
219 |     // https://bundlers.tooling.report/hashing/asset-cascade/
220 |     // https://github.com/rollup/rollup/issues/3415
221 |     const map = assetHashToFilenameMap.get(config)!;
222 |     const contentHash = getAssetHash(content);
223 |     const { search, hash } = parseUrl(id);
224 |     const postfix = (search || "") + (hash || "");
225 |     const output = config.build?.rollupOptions?.output;
226 |     const assetFileNames =
227 |       (output && !Array.isArray(output) ? output.assetFileNames : undefined) ??
228 |       // defaults to '/[name].[hash][extname]'
229 |       // slightly different from rollup's one ('assets/[name]-[hash][extname]')
230 |       path.posix.join(config.build.assetsDir, "[name].[hash][extname]");
231 |     const fileName = assetFileNamesToFileName(
232 |       assetFileNames,
233 |       file,
234 |       contentHash,
235 |       content
236 |     );
237 |     if (!map.has(contentHash)) {
238 |       map.set(contentHash, fileName);
239 |     }
240 |     const emittedSet = emittedHashMap.get(config)!;
241 |     if (!emittedSet.has(contentHash)) {
242 |       const name = normalizePath(path.relative(config.root, file));
243 |       pluginContext.emitFile({
244 |         name,
245 |         fileName,
246 |         type: "asset",
247 |         source: content,
248 |       });
249 |       emittedSet.add(contentHash);
250 |     }
251 | 
252 |     url = `__VITE_ASSET__${contentHash}__${postfix ? `$_${postfix}__` : ``}`;
253 |   }
254 | 
255 |   cache.set(id, url);
256 |   return url;
257 | }
258 | 
259 | export function fileToDevUrl(id: string, config: ResolvedConfig) {
260 |   let rtn: string;
261 |   if (checkPublicFile(id, config)) {
262 |     // in public dir, keep the url as-is
263 |     rtn = id;
264 |   } else if (id.startsWith(config.root)) {
265 |     // in project root, infer short public path
266 |     rtn = "/" + path.posix.relative(config.root, id);
267 |   } else {
268 |     // outside of project root, use absolute fs path
269 |     // (this is special handled by the serve static middleware
270 |     rtn = path.posix.join(FS_PREFIX + id);
271 |   }
272 |   const origin = config.server?.origin ?? "";
273 |   return origin + config.base + rtn.replace(/^\//, "");
274 | }
275 | 
276 | export function fileToUrl(
277 |   id: string,
278 |   config: ResolvedConfig,
279 |   ctx: PluginContext
280 | ): string | Promise {
281 |   if (config.command === "serve") {
282 |     return fileToDevUrl(id, config);
283 |   } else {
284 |     return fileToBuiltUrl(id, config, ctx);
285 |   }
286 | }
287 | export function parseWorkerRequest(id: string): Record | null {
288 |   const { search } = parseUrl(id);
289 |   if (!search) {
290 |     return null;
291 |   }
292 |   return Object.fromEntries(new URLSearchParams(search.slice(1)));
293 | }
294 | 
295 | const WorkerFileId = "worker_file";
296 | 
297 | export function webWorkerPlugin(config: ResolvedConfig): Plugin {
298 |   const isBuild = config.command === "build";
299 | 
300 |   return {
301 |     name: "vite:worker",
302 | 
303 |     load(id) {
304 |       if (isBuild) {
305 |         const parsedQuery = parseWorkerRequest(id);
306 |         if (
307 |           parsedQuery &&
308 |           (parsedQuery.worker ?? parsedQuery.sharedworker) != null
309 |         ) {
310 |           return "";
311 |         }
312 |       }
313 |     },
314 | 
315 |     async transform(_, id) {
316 |       const query = parseWorkerRequest(id);
317 |       if (query && query[WorkerFileId] != null) {
318 |         return {
319 |           code: `import '${ENV_PUBLIC_PATH}'\n` + _,
320 |         };
321 |       }
322 |       if (
323 |         query == null ||
324 |         (query && (query.worker ?? query.sharedworker) == null)
325 |       ) {
326 |         return;
327 |       }
328 | 
329 |       let url: string;
330 |       if (isBuild) {
331 |         // bundle the file as entry to support imports
332 |         const rollup = require("rollup") as typeof Rollup;
333 |         const bundle = await rollup.rollup({
334 |           input: cleanUrl(id),
335 |           // plugins: await resolvePlugins({ ...config }, [], [], []),
336 |           onwarn(warning, warn) {
337 |             onRollupWarning(warning, warn, config);
338 |           },
339 |         });
340 |         let code: string;
341 |         try {
342 |           const { output } = await bundle.generate({
343 |             format: "iife",
344 |             sourcemap: config.build.sourcemap,
345 |           });
346 |           code = output[0].code;
347 |         } finally {
348 |           await bundle.close();
349 |         }
350 |         const content = Buffer.from(code);
351 |         if (query.inline != null) {
352 |           // inline as blob data url
353 |           return `const encodedJs = "${content.toString("base64")}";
354 |             const blob = typeof window !== "undefined" && window.Blob && new Blob([atob(encodedJs)], { type: "text/javascript;charset=utf-8" });
355 |             export default function WorkerWrapper() {
356 |               const objURL = blob && (window.URL || window.webkitURL).createObjectURL(blob);
357 |               try {
358 |                 return objURL ? new Worker(objURL) : new Worker("data:application/javascript;base64," + encodedJs, {type: "module"});
359 |               } finally {
360 |                 objURL && (window.URL || window.webkitURL).revokeObjectURL(objURL);
361 |               }
362 |             }`;
363 |         } else {
364 |           const basename = path.parse(cleanUrl(id)).name;
365 |           const contentHash = getAssetHash(content);
366 |           const fileName = path.posix.join(
367 |             config.build.assetsDir,
368 |             `${basename}.${contentHash}.js`
369 |           );
370 |           url = `__VITE_ASSET__${this.emitFile({
371 |             fileName,
372 |             type: "asset",
373 |             source: code,
374 |           })}__`;
375 |         }
376 |       } else {
377 |         url = await fileToUrl(cleanUrl(id), config, this);
378 |         url = injectQuery(url, WorkerFileId);
379 |       }
380 | 
381 |       const workerConstructor =
382 |         query.sharedworker != null ? "SharedWorker" : "Worker";
383 |       const workerOptions = { type: "module" };
384 | 
385 |       return `export default function WorkerWrapper() {
386 |         return new ${workerConstructor}(${JSON.stringify(
387 |         url
388 |       )}, ${JSON.stringify(workerOptions, null, 2)})
389 |       }`;
390 |     },
391 |   };
392 | }
393 | 
--------------------------------------------------------------------------------
/plugin/src/vite.ts:
--------------------------------------------------------------------------------
 1 | import type { Plugin } from "vite";
 2 | import workerComponent from "./vite/workerComponent";
 3 | import workerFile from "./vite/workerFile";
 4 | import handleImports from "./vite/handleImports";
 5 | import registerComponents from "./vite/registerComponents";
 6 | 
 7 | export default function plugin(): Plugin[] {
 8 |   return [
 9 |     registerComponents(),
10 |     workerFile(),
11 |     handleImports(),
12 |     workerComponent(),
13 |   ];
14 | }
15 | 
--------------------------------------------------------------------------------
/plugin/src/vite/handleImports.ts:
--------------------------------------------------------------------------------
 1 | import { ImportSpecifier, parse } from "es-module-lexer";
 2 | import MagicString from "magic-string";
 3 | import type { Plugin } from "vite";
 4 | 
 5 | export default function handleImports(): Plugin {
 6 |   return {
 7 |     enforce: "post",
 8 |     name: "react-worker-components:handle_imports",
 9 | 
10 |     async transform(src) {
11 |       const imports = parse(src)[0];
12 |       const workerComponentImports = importsWorkerComponent(imports);
13 |       if (workerComponentImports.length) {
14 |         const s = new MagicString(src);
15 |         let index = 0;
16 |         for (const {
17 |           ss: statementStart,
18 |           se: statementEnd,
19 |           n,
20 |         } of workerComponentImports) {
21 |           const importContent = /\{(.*?)\}/.exec(
22 |             src.substring(statementStart, statementEnd)
23 |           )?.[1];
24 | 
25 |           const entries: Record = {};
26 | 
27 |           importContent?.split(",")?.forEach((i) => {
28 |             if (i.includes("as")) {
29 |               const [component, as] = i.split("as");
30 |               entries[component.trim()] = as.trim();
31 |             } else {
32 |               entries[i.trim()] = i.trim();
33 |             }
34 |           });
35 | 
36 |           s.remove(statementStart, statementEnd);
37 | 
38 |           const newContent = `
39 |           import { wrap } from 'react-worker-components-plugin/rwc';
40 |           import __RWC_WORKER_${index} from '${n}';
41 | 
42 |           ${Object.entries(entries)
43 |             .map(([component, as]) => {
44 |               return `const ${as} = wrap(() => new __RWC_WORKER_${index}(), '${component}');`;
45 |             })
46 |             .join("\n")}
47 |             `;
48 |           s.prepend(newContent);
49 | 
50 |           index++;
51 |         }
52 | 
53 |         return {
54 |           code: s.toString(),
55 |           map: s.generateMap(),
56 |         };
57 |       }
58 |     },
59 |   };
60 | }
61 | 
62 | function importsWorkerComponent(imports: readonly ImportSpecifier[]) {
63 |   return imports.filter(({ n }) => n?.includes(".worker"));
64 | }
65 | 
--------------------------------------------------------------------------------
/plugin/src/vite/registerComponents.ts:
--------------------------------------------------------------------------------
 1 | import { parse } from "es-module-lexer";
 2 | import MagicString from "magic-string";
 3 | import type { Plugin, ResolvedConfig } from "vite";
 4 | import { isWorkerComponent } from "../utils";
 5 | import { isComponentishName } from "../utils/react";
 6 | 
 7 | export default function registerComponents(): Plugin {
 8 |   let config: ResolvedConfig;
 9 |   return {
10 |     enforce: "post",
11 |     name: "react-worker-components:register_components",
12 |     configResolved(_config) {
13 |       config = _config;
14 |     },
15 |     // register every component in a file that is not a worker
16 |     transform(src, id) {
17 |       if (isWorkerComponent(id)) {
18 |         return;
19 |       }
20 |       if (!id.includes(config.root)) {
21 |         return;
22 |       }
23 | 
24 |       const s = new MagicString(src);
25 |       const exports = parse(src)[1];
26 |       const components = exports.filter(isComponentishName);
27 |       if (!components.length) {
28 |         return;
29 |       }
30 |       const registeredExports = components
31 |         .map((component) => `\nregister(${component},'${component}');`)
32 |         .join("");
33 | 
34 |       s.prepend(
35 |         `import { register } from 'react-worker-components-plugin/rwc';\n`
36 |       );
37 |       s.append(registeredExports);
38 | 
39 |       return {
40 |         code: s.toString(),
41 |         map: s.generateMap(),
42 |       };
43 |     },
44 |   };
45 | }
46 | 
--------------------------------------------------------------------------------
/plugin/src/vite/workerComponent.ts:
--------------------------------------------------------------------------------
 1 | import MagicString from "magic-string";
 2 | import path from "path";
 3 | import type { Plugin, ResolvedConfig } from "vite";
 4 | import type Rollup from "rollup";
 5 | import { isWorkerComponent } from "../utils";
 6 | import {
 7 |   cleanUrl,
 8 |   fileToUrl,
 9 |   getAssetHash,
10 |   injectQuery,
11 |   onRollupWarning,
12 | } from "../utils/viteWorker";
13 | 
14 | const WorkerFileId = "react_worker_component";
15 | export default function workerComponent(): Plugin {
16 |   let config: ResolvedConfig;
17 |   return {
18 |     enforce: "post",
19 |     name: "react-worker-components:worker_component",
20 |     configResolved: (_config) => {
21 |       config = _config;
22 |     },
23 |     async transform(code, id) {
24 |       if (id.includes(WorkerFileId)) {
25 |         return;
26 |       }
27 |       if (!isWorkerComponent(id)) {
28 |         return;
29 |       }
30 | 
31 |       const s = new MagicString(code);
32 |       const isBuild = config.command === "build";
33 |       let url: string;
34 |       if (isBuild) {
35 |         // bundle the file as entry to support imports
36 |         const rollup = await import("rollup");
37 |         const bundle = await rollup.rollup({
38 |           input: cleanUrl(id),
39 |           plugins: config.plugins
40 |           .filter(
41 |             (p) => !p.name.includes("react-worker-components:worker_component")
42 |           ) as Rollup.Plugin[],
43 |           onwarn(warning, warn) {
44 |             onRollupWarning(warning, warn, config);
45 |           },
46 |         });
47 |         let code: string;
48 |         try {
49 |           const { output } = await bundle.generate({
50 |             format: "esm",
51 |             name: "worker_component",
52 |             sourcemap: config.build.sourcemap,
53 |           });
54 |           code = output[0].code;
55 |         } finally {
56 |           await bundle.close();
57 |         }
58 |         const content = Buffer.from(code);
59 | 
60 |         const basename = path.parse(cleanUrl(id)).name;
61 |         const contentHash = getAssetHash(content);
62 |         const fileName = path.posix.join(
63 |           config.build.assetsDir,
64 |           `${basename}.${contentHash}.js`
65 |         );
66 |         url = `__VITE_ASSET__${this.emitFile({
67 |           fileName,
68 |           type: "asset",
69 |           source: code,
70 |         })}__`;
71 |       } else {
72 |         url = injectQuery(
73 |           await fileToUrl(cleanUrl(id), config, this),
74 |           WorkerFileId
75 |         );
76 |       }
77 | 
78 |       const workerConstructor = "Worker";
79 |       const workerOptions = { type: "module" };
80 | 
81 |       const result = `export default function WorkerWrapper() {
82 |           return new ${workerConstructor}(${JSON.stringify(
83 |         url
84 |       )}, ${JSON.stringify(workerOptions, null, 2)})
85 |         }
86 |         `;
87 |       s.remove(0, code.length);
88 | 
89 |       s.append(result);
90 | 
91 |       return { code: s.toString(), map: s.generateMap() };
92 |     },
93 |   };
94 | }
95 | 
--------------------------------------------------------------------------------
/plugin/src/vite/workerFile.ts:
--------------------------------------------------------------------------------
 1 | import { init, parse } from "es-module-lexer";
 2 | import MagicString from "magic-string";
 3 | import type { Plugin, ResolvedConfig } from "vite";
 4 | import { isWorkerComponent } from "../utils";
 5 | import { isComponentishName } from "../utils/react";
 6 | import { ENV_PUBLIC_PATH, parseWorkerRequest } from "../utils/viteWorker";
 7 | 
 8 | const WorkerFileId = "react_worker_component";
 9 | export default function workerFile(): Plugin {
10 |   let config: ResolvedConfig;
11 |   return {
12 |     enforce: "post",
13 |     name: "react-worker-components:worker_file",
14 |     configResolved: (_config) => {
15 |       config = _config;
16 |     },
17 |     async transform(src, id) {
18 |       const isBuild = config.command === "build";
19 |       const query = parseWorkerRequest(id);
20 | 
21 |       if (
22 |         (query && query[WorkerFileId] != null) ||
23 |         // handle worker components here in build
24 |         (isBuild && isWorkerComponent(id))
25 |       ) {
26 |         await init;
27 | 
28 |         const s = new MagicString(src);
29 |         const exports = parse(src)[1];
30 |         const exposedExports = exports
31 |           .filter(isComponentishName)
32 |           .map((component) => `\nexpose(${component}, '${component}');`)
33 |           .join("");
34 | 
35 |         s.prepend(
36 |           `import { expose } from 'react-worker-components-plugin/rwc';\n`
37 |         );
38 |         s.append(exposedExports);
39 | 
40 |         if (!isBuild) {
41 |           s.prepend(`import '${ENV_PUBLIC_PATH}'\n`);
42 |         }
43 | 
44 |         return {
45 |           code: s.toString(),
46 |           map: s.generateMap(),
47 |         };
48 |       }
49 |     },
50 |   };
51 | }
52 | 
--------------------------------------------------------------------------------
/plugin/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 |   "extends": "../tsconfig.json",
3 |   "include": ["./src/**/*.ts"],
4 |   "exclude": ["./dist"]
5 | }
6 | 
--------------------------------------------------------------------------------
/pnpm-global/5/pnpm-lock.yaml:
--------------------------------------------------------------------------------
1 | lockfileVersion: 5.3
2 | 
3 | specifiers:
4 |   react-worker-components: ^0.1.0
5 | 
6 | devDependencies:
7 |   react-worker-components: link:../../../.nvm/versions/node/v16.5.0/pnpm-global/5/node_modules/react-worker-components
8 | 
--------------------------------------------------------------------------------
/pnpm-lock.yaml:
--------------------------------------------------------------------------------
   1 | lockfileVersion: 5.3
   2 | 
   3 | importers:
   4 | 
   5 |   .:
   6 |     specifiers:
   7 |       '@rollup/plugin-alias': ^3.1.9
   8 |       '@rollup/plugin-commonjs': ^21.0.1
   9 |       '@rollup/plugin-json': ^4.1.0
  10 |       '@rollup/plugin-node-resolve': ^13.1.2
  11 |       '@testing-library/jest-dom': ^5.16.1
  12 |       '@testing-library/react': ^12.1.2
  13 |       '@testing-library/react-hooks': ^7.0.2
  14 |       '@testing-library/user-event': ^13.5.0
  15 |       '@types/mime': ^2.0.3
  16 |       '@types/react': ^17.0.38
  17 |       '@types/react-dom': ^17.0.11
  18 |       '@types/shelljs': ^0.8.10
  19 |       '@vitejs/plugin-react': ^1.1.3
  20 |       buffer-es6: ^4.9.3
  21 |       cross-env: ^7.0.3
  22 |       execa: ^6.0.0
  23 |       kill-port: ^1.6.1
  24 |       magic-string: ^0.25.7
  25 |       process-es6: ^0.11.6
  26 |       puppeteer: ^13.0.1
  27 |       react: ^17.0.2
  28 |       react-dom: ^17.0.2
  29 |       react-worker-components: ^0.1.0
  30 |       rimraf: ^3.0.2
  31 |       rollup: 2.52.2
  32 |       rollup-plugin-dts: ^4.1.0
  33 |       rollup-plugin-esbuild: ^4.8.2
  34 |       shelljs: ^0.8.4
  35 |       typescript: ^4.5.4
  36 |       utility-types: ^3.10.0
  37 |       vite: ^2.7.10
  38 |       vitest: ^0.0.118
  39 |     dependencies:
  40 |       react-worker-components: 0.1.0_react@17.0.2
  41 |     devDependencies:
  42 |       '@rollup/plugin-alias': 3.1.9_rollup@2.52.2
  43 |       '@rollup/plugin-commonjs': 21.0.1_rollup@2.52.2
  44 |       '@rollup/plugin-json': 4.1.0_rollup@2.52.2
  45 |       '@rollup/plugin-node-resolve': 13.1.2_rollup@2.52.2
  46 |       '@testing-library/jest-dom': 5.16.1
  47 |       '@testing-library/react': 12.1.2_react-dom@17.0.2+react@17.0.2
  48 |       '@testing-library/react-hooks': 7.0.2_react-dom@17.0.2+react@17.0.2
  49 |       '@testing-library/user-event': 13.5.0
  50 |       '@types/mime': 2.0.3
  51 |       '@types/react': 17.0.38
  52 |       '@types/react-dom': 17.0.11
  53 |       '@types/shelljs': 0.8.10
  54 |       '@vitejs/plugin-react': 1.1.3
  55 |       buffer-es6: 4.9.3
  56 |       cross-env: 7.0.3
  57 |       execa: 6.0.0
  58 |       kill-port: 1.6.1
  59 |       magic-string: 0.25.7
  60 |       process-es6: 0.11.6
  61 |       puppeteer: 13.0.1
  62 |       react: 17.0.2
  63 |       react-dom: 17.0.2_react@17.0.2
  64 |       rimraf: 3.0.2
  65 |       rollup: 2.52.2
  66 |       rollup-plugin-dts: 4.1.0_rollup@2.52.2+typescript@4.5.4
  67 |       rollup-plugin-esbuild: 4.8.2_rollup@2.52.2
  68 |       shelljs: 0.8.4
  69 |       typescript: 4.5.4
  70 |       utility-types: 3.10.0
  71 |       vite: 2.7.10
  72 |       vitest: 0.0.118_vite@2.7.10
  73 | 
  74 |   plugin:
  75 |     specifiers:
  76 |       aslemammad-react-worker-components: ^0.1.1
  77 |       chalk: ^5.0.0
  78 |       es-module-lexer: ^0.9.3
  79 |       mime: ^3.0.0
  80 |       react-worker-components: ^0.1.0
  81 |       typescript: ^4.5.3
  82 |       vite: 2.7.0
  83 |     dependencies:
  84 |       chalk: 5.0.0
  85 |       es-module-lexer: 0.9.3
  86 |       mime: 3.0.0
  87 |     devDependencies:
  88 |       aslemammad-react-worker-components: 0.1.1_react@17.0.2
  89 |       react-worker-components: 0.1.0_react@17.0.2
  90 |       typescript: 4.5.4
  91 |       vite: 2.7.0
  92 | 
  93 |   test/vite:
  94 |     specifiers:
  95 |       mime: ^3.0.0
  96 |       react-worker-components-plugin: workspace:^0.0.0
  97 |       vite-plugin-inspect: ^0.3.13
  98 |     dependencies:
  99 |       mime: 3.0.0
 100 |       react-worker-components-plugin: link:../../plugin
 101 |     devDependencies:
 102 |       vite-plugin-inspect: 0.3.13_vite@2.7.10
 103 | 
 104 | packages:
 105 | 
 106 |   /@babel/code-frame/7.16.7:
 107 |     resolution: {integrity: sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==}
 108 |     engines: {node: '>=6.9.0'}
 109 |     dependencies:
 110 |       '@babel/highlight': 7.16.7
 111 |     dev: true
 112 | 
 113 |   /@babel/compat-data/7.16.4:
 114 |     resolution: {integrity: sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==}
 115 |     engines: {node: '>=6.9.0'}
 116 |     dev: true
 117 | 
 118 |   /@babel/core/7.16.7:
 119 |     resolution: {integrity: sha512-aeLaqcqThRNZYmbMqtulsetOQZ/5gbR/dWruUCJcpas4Qoyy+QeagfDsPdMrqwsPRDNxJvBlRiZxxX7THO7qtA==}
 120 |     engines: {node: '>=6.9.0'}
 121 |     dependencies:
 122 |       '@babel/code-frame': 7.16.7
 123 |       '@babel/generator': 7.16.7
 124 |       '@babel/helper-compilation-targets': 7.16.7_@babel+core@7.16.7
 125 |       '@babel/helper-module-transforms': 7.16.7
 126 |       '@babel/helpers': 7.16.7
 127 |       '@babel/parser': 7.16.7
 128 |       '@babel/template': 7.16.7
 129 |       '@babel/traverse': 7.16.7
 130 |       '@babel/types': 7.16.7
 131 |       convert-source-map: 1.8.0
 132 |       debug: 4.3.3
 133 |       gensync: 1.0.0-beta.2
 134 |       json5: 2.2.0
 135 |       semver: 6.3.0
 136 |       source-map: 0.5.7
 137 |     transitivePeerDependencies:
 138 |       - supports-color
 139 |     dev: true
 140 | 
 141 |   /@babel/generator/7.16.7:
 142 |     resolution: {integrity: sha512-/ST3Sg8MLGY5HVYmrjOgL60ENux/HfO/CsUh7y4MalThufhE/Ff/6EibFDHi4jiDCaWfJKoqbE6oTh21c5hrRg==}
 143 |     engines: {node: '>=6.9.0'}
 144 |     dependencies:
 145 |       '@babel/types': 7.16.7
 146 |       jsesc: 2.5.2
 147 |       source-map: 0.5.7
 148 |     dev: true
 149 | 
 150 |   /@babel/helper-annotate-as-pure/7.16.7:
 151 |     resolution: {integrity: sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==}
 152 |     engines: {node: '>=6.9.0'}
 153 |     dependencies:
 154 |       '@babel/types': 7.16.7
 155 |     dev: true
 156 | 
 157 |   /@babel/helper-compilation-targets/7.16.7_@babel+core@7.16.7:
 158 |     resolution: {integrity: sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA==}
 159 |     engines: {node: '>=6.9.0'}
 160 |     peerDependencies:
 161 |       '@babel/core': ^7.0.0
 162 |     dependencies:
 163 |       '@babel/compat-data': 7.16.4
 164 |       '@babel/core': 7.16.7
 165 |       '@babel/helper-validator-option': 7.16.7
 166 |       browserslist: 4.19.1
 167 |       semver: 6.3.0
 168 |     dev: true
 169 | 
 170 |   /@babel/helper-environment-visitor/7.16.7:
 171 |     resolution: {integrity: sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==}
 172 |     engines: {node: '>=6.9.0'}
 173 |     dependencies:
 174 |       '@babel/types': 7.16.7
 175 |     dev: true
 176 | 
 177 |   /@babel/helper-function-name/7.16.7:
 178 |     resolution: {integrity: sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==}
 179 |     engines: {node: '>=6.9.0'}
 180 |     dependencies:
 181 |       '@babel/helper-get-function-arity': 7.16.7
 182 |       '@babel/template': 7.16.7
 183 |       '@babel/types': 7.16.7
 184 |     dev: true
 185 | 
 186 |   /@babel/helper-get-function-arity/7.16.7:
 187 |     resolution: {integrity: sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==}
 188 |     engines: {node: '>=6.9.0'}
 189 |     dependencies:
 190 |       '@babel/types': 7.16.7
 191 |     dev: true
 192 | 
 193 |   /@babel/helper-hoist-variables/7.16.7:
 194 |     resolution: {integrity: sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==}
 195 |     engines: {node: '>=6.9.0'}
 196 |     dependencies:
 197 |       '@babel/types': 7.16.7
 198 |     dev: true
 199 | 
 200 |   /@babel/helper-module-imports/7.16.7:
 201 |     resolution: {integrity: sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==}
 202 |     engines: {node: '>=6.9.0'}
 203 |     dependencies:
 204 |       '@babel/types': 7.16.7
 205 |     dev: true
 206 | 
 207 |   /@babel/helper-module-transforms/7.16.7:
 208 |     resolution: {integrity: sha512-gaqtLDxJEFCeQbYp9aLAefjhkKdjKcdh6DB7jniIGU3Pz52WAmP268zK0VgPz9hUNkMSYeH976K2/Y6yPadpng==}
 209 |     engines: {node: '>=6.9.0'}
 210 |     dependencies:
 211 |       '@babel/helper-environment-visitor': 7.16.7
 212 |       '@babel/helper-module-imports': 7.16.7
 213 |       '@babel/helper-simple-access': 7.16.7
 214 |       '@babel/helper-split-export-declaration': 7.16.7
 215 |       '@babel/helper-validator-identifier': 7.16.7
 216 |       '@babel/template': 7.16.7
 217 |       '@babel/traverse': 7.16.7
 218 |       '@babel/types': 7.16.7
 219 |     transitivePeerDependencies:
 220 |       - supports-color
 221 |     dev: true
 222 | 
 223 |   /@babel/helper-plugin-utils/7.16.7:
 224 |     resolution: {integrity: sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==}
 225 |     engines: {node: '>=6.9.0'}
 226 |     dev: true
 227 | 
 228 |   /@babel/helper-simple-access/7.16.7:
 229 |     resolution: {integrity: sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g==}
 230 |     engines: {node: '>=6.9.0'}
 231 |     dependencies:
 232 |       '@babel/types': 7.16.7
 233 |     dev: true
 234 | 
 235 |   /@babel/helper-split-export-declaration/7.16.7:
 236 |     resolution: {integrity: sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==}
 237 |     engines: {node: '>=6.9.0'}
 238 |     dependencies:
 239 |       '@babel/types': 7.16.7
 240 |     dev: true
 241 | 
 242 |   /@babel/helper-validator-identifier/7.16.7:
 243 |     resolution: {integrity: sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==}
 244 |     engines: {node: '>=6.9.0'}
 245 |     dev: true
 246 | 
 247 |   /@babel/helper-validator-option/7.16.7:
 248 |     resolution: {integrity: sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==}
 249 |     engines: {node: '>=6.9.0'}
 250 |     dev: true
 251 | 
 252 |   /@babel/helpers/7.16.7:
 253 |     resolution: {integrity: sha512-9ZDoqtfY7AuEOt3cxchfii6C7GDyyMBffktR5B2jvWv8u2+efwvpnVKXMWzNehqy68tKgAfSwfdw/lWpthS2bw==}
 254 |     engines: {node: '>=6.9.0'}
 255 |     dependencies:
 256 |       '@babel/template': 7.16.7
 257 |       '@babel/traverse': 7.16.7
 258 |       '@babel/types': 7.16.7
 259 |     transitivePeerDependencies:
 260 |       - supports-color
 261 |     dev: true
 262 | 
 263 |   /@babel/highlight/7.16.7:
 264 |     resolution: {integrity: sha512-aKpPMfLvGO3Q97V0qhw/V2SWNWlwfJknuwAunU7wZLSfrM4xTBvg7E5opUVi1kJTBKihE38CPg4nBiqX83PWYw==}
 265 |     engines: {node: '>=6.9.0'}
 266 |     dependencies:
 267 |       '@babel/helper-validator-identifier': 7.16.7
 268 |       chalk: 2.4.2
 269 |       js-tokens: 4.0.0
 270 |     dev: true
 271 | 
 272 |   /@babel/parser/7.16.7:
 273 |     resolution: {integrity: sha512-sR4eaSrnM7BV7QPzGfEX5paG/6wrZM3I0HDzfIAK06ESvo9oy3xBuVBxE3MbQaKNhvg8g/ixjMWo2CGpzpHsDA==}
 274 |     engines: {node: '>=6.0.0'}
 275 |     hasBin: true
 276 |     dev: true
 277 | 
 278 |   /@babel/plugin-syntax-jsx/7.16.7_@babel+core@7.16.7:
 279 |     resolution: {integrity: sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q==}
 280 |     engines: {node: '>=6.9.0'}
 281 |     peerDependencies:
 282 |       '@babel/core': ^7.0.0-0
 283 |     dependencies:
 284 |       '@babel/core': 7.16.7
 285 |       '@babel/helper-plugin-utils': 7.16.7
 286 |     dev: true
 287 | 
 288 |   /@babel/plugin-transform-react-jsx-development/7.16.7_@babel+core@7.16.7:
 289 |     resolution: {integrity: sha512-RMvQWvpla+xy6MlBpPlrKZCMRs2AGiHOGHY3xRwl0pEeim348dDyxeH4xBsMPbIMhujeq7ihE702eM2Ew0Wo+A==}
 290 |     engines: {node: '>=6.9.0'}
 291 |     peerDependencies:
 292 |       '@babel/core': ^7.0.0-0
 293 |     dependencies:
 294 |       '@babel/core': 7.16.7
 295 |       '@babel/plugin-transform-react-jsx': 7.16.7_@babel+core@7.16.7
 296 |     dev: true
 297 | 
 298 |   /@babel/plugin-transform-react-jsx-self/7.16.7_@babel+core@7.16.7:
 299 |     resolution: {integrity: sha512-oe5VuWs7J9ilH3BCCApGoYjHoSO48vkjX2CbA5bFVhIuO2HKxA3vyF7rleA4o6/4rTDbk6r8hBW7Ul8E+UZrpA==}
 300 |     engines: {node: '>=6.9.0'}
 301 |     peerDependencies:
 302 |       '@babel/core': ^7.0.0-0
 303 |     dependencies:
 304 |       '@babel/core': 7.16.7
 305 |       '@babel/helper-plugin-utils': 7.16.7
 306 |     dev: true
 307 | 
 308 |   /@babel/plugin-transform-react-jsx-source/7.16.7_@babel+core@7.16.7:
 309 |     resolution: {integrity: sha512-rONFiQz9vgbsnaMtQlZCjIRwhJvlrPET8TabIUK2hzlXw9B9s2Ieaxte1SCOOXMbWRHodbKixNf3BLcWVOQ8Bw==}
 310 |     engines: {node: '>=6.9.0'}
 311 |     peerDependencies:
 312 |       '@babel/core': ^7.0.0-0
 313 |     dependencies:
 314 |       '@babel/core': 7.16.7
 315 |       '@babel/helper-plugin-utils': 7.16.7
 316 |     dev: true
 317 | 
 318 |   /@babel/plugin-transform-react-jsx/7.16.7_@babel+core@7.16.7:
 319 |     resolution: {integrity: sha512-8D16ye66fxiE8m890w0BpPpngG9o9OVBBy0gH2E+2AR7qMR2ZpTYJEqLxAsoroenMId0p/wMW+Blc0meDgu0Ag==}
 320 |     engines: {node: '>=6.9.0'}
 321 |     peerDependencies:
 322 |       '@babel/core': ^7.0.0-0
 323 |     dependencies:
 324 |       '@babel/core': 7.16.7
 325 |       '@babel/helper-annotate-as-pure': 7.16.7
 326 |       '@babel/helper-module-imports': 7.16.7
 327 |       '@babel/helper-plugin-utils': 7.16.7
 328 |       '@babel/plugin-syntax-jsx': 7.16.7_@babel+core@7.16.7
 329 |       '@babel/types': 7.16.7
 330 |     dev: true
 331 | 
 332 |   /@babel/runtime/7.16.7:
 333 |     resolution: {integrity: sha512-9E9FJowqAsytyOY6LG+1KuueckRL+aQW+mKvXRXnuFGyRAyepJPmEo9vgMfXUA6O9u3IeEdv9MAkppFcaQwogQ==}
 334 |     engines: {node: '>=6.9.0'}
 335 |     dependencies:
 336 |       regenerator-runtime: 0.13.9
 337 |     dev: true
 338 | 
 339 |   /@babel/template/7.16.7:
 340 |     resolution: {integrity: sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==}
 341 |     engines: {node: '>=6.9.0'}
 342 |     dependencies:
 343 |       '@babel/code-frame': 7.16.7
 344 |       '@babel/parser': 7.16.7
 345 |       '@babel/types': 7.16.7
 346 |     dev: true
 347 | 
 348 |   /@babel/traverse/7.16.7:
 349 |     resolution: {integrity: sha512-8KWJPIb8c2VvY8AJrydh6+fVRo2ODx1wYBU2398xJVq0JomuLBZmVQzLPBblJgHIGYG4znCpUZUZ0Pt2vdmVYQ==}
 350 |     engines: {node: '>=6.9.0'}
 351 |     dependencies:
 352 |       '@babel/code-frame': 7.16.7
 353 |       '@babel/generator': 7.16.7
 354 |       '@babel/helper-environment-visitor': 7.16.7
 355 |       '@babel/helper-function-name': 7.16.7
 356 |       '@babel/helper-hoist-variables': 7.16.7
 357 |       '@babel/helper-split-export-declaration': 7.16.7
 358 |       '@babel/parser': 7.16.7
 359 |       '@babel/types': 7.16.7
 360 |       debug: 4.3.3
 361 |       globals: 11.12.0
 362 |     transitivePeerDependencies:
 363 |       - supports-color
 364 |     dev: true
 365 | 
 366 |   /@babel/types/7.16.7:
 367 |     resolution: {integrity: sha512-E8HuV7FO9qLpx6OtoGfUQ2cjIYnbFwvZWYBS+87EwtdMvmUPJSwykpovFB+8insbpF0uJcpr8KMUi64XZntZcg==}
 368 |     engines: {node: '>=6.9.0'}
 369 |     dependencies:
 370 |       '@babel/helper-validator-identifier': 7.16.7
 371 |       to-fast-properties: 2.0.0
 372 |     dev: true
 373 | 
 374 |   /@jest/types/27.4.2:
 375 |     resolution: {integrity: sha512-j35yw0PMTPpZsUoOBiuHzr1zTYoad1cVIE0ajEjcrJONxxrko/IRGKkXx3os0Nsi4Hu3+5VmDbVfq5WhG/pWAg==}
 376 |     engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
 377 |     dependencies:
 378 |       '@types/istanbul-lib-coverage': 2.0.4
 379 |       '@types/istanbul-reports': 3.0.1
 380 |       '@types/node': 17.0.7
 381 |       '@types/yargs': 16.0.4
 382 |       chalk: 4.1.2
 383 |     dev: true
 384 | 
 385 |   /@polka/url/1.0.0-next.21:
 386 |     resolution: {integrity: sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==}
 387 |     dev: true
 388 | 
 389 |   /@rollup/plugin-alias/3.1.9_rollup@2.52.2:
 390 |     resolution: {integrity: sha512-QI5fsEvm9bDzt32k39wpOwZhVzRcL5ydcffUHMyLVaVaLeC70I8TJZ17F1z1eMoLu4E/UOcH9BWVkKpIKdrfiw==}
 391 |     engines: {node: '>=8.0.0'}
 392 |     peerDependencies:
 393 |       rollup: ^1.20.0||^2.0.0
 394 |     dependencies:
 395 |       rollup: 2.52.2
 396 |       slash: 3.0.0
 397 |     dev: true
 398 | 
 399 |   /@rollup/plugin-commonjs/21.0.1_rollup@2.52.2:
 400 |     resolution: {integrity: sha512-EA+g22lbNJ8p5kuZJUYyhhDK7WgJckW5g4pNN7n4mAFUM96VuwUnNT3xr2Db2iCZPI1pJPbGyfT5mS9T1dHfMg==}
 401 |     engines: {node: '>= 8.0.0'}
 402 |     peerDependencies:
 403 |       rollup: ^2.38.3
 404 |     dependencies:
 405 |       '@rollup/pluginutils': 3.1.0_rollup@2.52.2
 406 |       commondir: 1.0.1
 407 |       estree-walker: 2.0.2
 408 |       glob: 7.2.0
 409 |       is-reference: 1.2.1
 410 |       magic-string: 0.25.7
 411 |       resolve: 1.21.0
 412 |       rollup: 2.52.2
 413 |     dev: true
 414 | 
 415 |   /@rollup/plugin-json/4.1.0_rollup@2.52.2:
 416 |     resolution: {integrity: sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw==}
 417 |     peerDependencies:
 418 |       rollup: ^1.20.0 || ^2.0.0
 419 |     dependencies:
 420 |       '@rollup/pluginutils': 3.1.0_rollup@2.52.2
 421 |       rollup: 2.52.2
 422 |     dev: true
 423 | 
 424 |   /@rollup/plugin-node-resolve/13.1.2_rollup@2.52.2:
 425 |     resolution: {integrity: sha512-xyqbuf1vyOPC60jEKhx3DBHunymnCJswzjNTKfX4Jz7zCPar1UqbRZCNY1u5QaXh97beaFTWdoUUWiV4qX8o/g==}
 426 |     engines: {node: '>= 10.0.0'}
 427 |     peerDependencies:
 428 |       rollup: ^2.42.0
 429 |     dependencies:
 430 |       '@rollup/pluginutils': 3.1.0_rollup@2.52.2
 431 |       '@types/resolve': 1.17.1
 432 |       builtin-modules: 3.2.0
 433 |       deepmerge: 4.2.2
 434 |       is-module: 1.0.0
 435 |       resolve: 1.21.0
 436 |       rollup: 2.52.2
 437 |     dev: true
 438 | 
 439 |   /@rollup/pluginutils/3.1.0_rollup@2.52.2:
 440 |     resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==}
 441 |     engines: {node: '>= 8.0.0'}
 442 |     peerDependencies:
 443 |       rollup: ^1.20.0||^2.0.0
 444 |     dependencies:
 445 |       '@types/estree': 0.0.39
 446 |       estree-walker: 1.0.1
 447 |       picomatch: 2.3.1
 448 |       rollup: 2.52.2
 449 |     dev: true
 450 | 
 451 |   /@rollup/pluginutils/4.1.2:
 452 |     resolution: {integrity: sha512-ROn4qvkxP9SyPeHaf7uQC/GPFY6L/OWy9+bd9AwcjOAWQwxRscoEyAUD8qCY5o5iL4jqQwoLk2kaTKJPb/HwzQ==}
 453 |     engines: {node: '>= 8.0.0'}
 454 |     dependencies:
 455 |       estree-walker: 2.0.2
 456 |       picomatch: 2.3.1
 457 |     dev: true
 458 | 
 459 |   /@testing-library/dom/8.11.1:
 460 |     resolution: {integrity: sha512-3KQDyx9r0RKYailW2MiYrSSKEfH0GTkI51UGEvJenvcoDoeRYs0PZpi2SXqtnMClQvCqdtTTpOfFETDTVADpAg==}
 461 |     engines: {node: '>=12'}
 462 |     dependencies:
 463 |       '@babel/code-frame': 7.16.7
 464 |       '@babel/runtime': 7.16.7
 465 |       '@types/aria-query': 4.2.2
 466 |       aria-query: 5.0.0
 467 |       chalk: 4.1.2
 468 |       dom-accessibility-api: 0.5.10
 469 |       lz-string: 1.4.4
 470 |       pretty-format: 27.4.2
 471 |     dev: true
 472 | 
 473 |   /@testing-library/jest-dom/5.16.1:
 474 |     resolution: {integrity: sha512-ajUJdfDIuTCadB79ukO+0l8O+QwN0LiSxDaYUTI4LndbbUsGi6rWU1SCexXzBA2NSjlVB9/vbkasQIL3tmPBjw==}
 475 |     engines: {node: '>=8', npm: '>=6', yarn: '>=1'}
 476 |     dependencies:
 477 |       '@babel/runtime': 7.16.7
 478 |       '@types/testing-library__jest-dom': 5.14.2
 479 |       aria-query: 5.0.0
 480 |       chalk: 3.0.0
 481 |       css: 3.0.0
 482 |       css.escape: 1.5.1
 483 |       dom-accessibility-api: 0.5.10
 484 |       lodash: 4.17.21
 485 |       redent: 3.0.0
 486 |     dev: true
 487 | 
 488 |   /@testing-library/react-hooks/7.0.2_react-dom@17.0.2+react@17.0.2:
 489 |     resolution: {integrity: sha512-dYxpz8u9m4q1TuzfcUApqi8iFfR6R0FaMbr2hjZJy1uC8z+bO/K4v8Gs9eogGKYQop7QsrBTFkv/BCF7MzD2Cg==}
 490 |     engines: {node: '>=12'}
 491 |     peerDependencies:
 492 |       react: '>=16.9.0'
 493 |       react-dom: '>=16.9.0'
 494 |       react-test-renderer: '>=16.9.0'
 495 |     peerDependenciesMeta:
 496 |       react-dom:
 497 |         optional: true
 498 |       react-test-renderer:
 499 |         optional: true
 500 |     dependencies:
 501 |       '@babel/runtime': 7.16.7
 502 |       '@types/react': 17.0.38
 503 |       '@types/react-dom': 17.0.11
 504 |       '@types/react-test-renderer': 17.0.1
 505 |       react: 17.0.2
 506 |       react-dom: 17.0.2_react@17.0.2
 507 |       react-error-boundary: 3.1.4_react@17.0.2
 508 |     dev: true
 509 | 
 510 |   /@testing-library/react/12.1.2_react-dom@17.0.2+react@17.0.2:
 511 |     resolution: {integrity: sha512-ihQiEOklNyHIpo2Y8FREkyD1QAea054U0MVbwH1m8N9TxeFz+KoJ9LkqoKqJlzx2JDm56DVwaJ1r36JYxZM05g==}
 512 |     engines: {node: '>=12'}
 513 |     peerDependencies:
 514 |       react: '*'
 515 |       react-dom: '*'
 516 |     dependencies:
 517 |       '@babel/runtime': 7.16.7
 518 |       '@testing-library/dom': 8.11.1
 519 |       react: 17.0.2
 520 |       react-dom: 17.0.2_react@17.0.2
 521 |     dev: true
 522 | 
 523 |   /@testing-library/user-event/13.5.0:
 524 |     resolution: {integrity: sha512-5Kwtbo3Y/NowpkbRuSepbyMFkZmHgD+vPzYB/RJ4oxt5Gj/avFFBYjhw27cqSVPVw/3a67NK1PbiIr9k4Gwmdg==}
 525 |     engines: {node: '>=10', npm: '>=6'}
 526 |     peerDependencies:
 527 |       '@testing-library/dom': '>=7.21.4'
 528 |     dependencies:
 529 |       '@babel/runtime': 7.16.7
 530 |     dev: true
 531 | 
 532 |   /@types/aria-query/4.2.2:
 533 |     resolution: {integrity: sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig==}
 534 |     dev: true
 535 | 
 536 |   /@types/chai-subset/1.3.3:
 537 |     resolution: {integrity: sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==}
 538 |     dependencies:
 539 |       '@types/chai': 4.3.0
 540 |     dev: true
 541 | 
 542 |   /@types/chai/4.3.0:
 543 |     resolution: {integrity: sha512-/ceqdqeRraGolFTcfoXNiqjyQhZzbINDngeoAq9GoHa8PPK1yNzTaxWjA6BFWp5Ua9JpXEMSS4s5i9tS0hOJtw==}
 544 |     dev: true
 545 | 
 546 |   /@types/estree/0.0.39:
 547 |     resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==}
 548 |     dev: true
 549 | 
 550 |   /@types/estree/0.0.50:
 551 |     resolution: {integrity: sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==}
 552 |     dev: true
 553 | 
 554 |   /@types/glob/7.2.0:
 555 |     resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==}
 556 |     dependencies:
 557 |       '@types/minimatch': 3.0.5
 558 |       '@types/node': 17.0.7
 559 |     dev: true
 560 | 
 561 |   /@types/istanbul-lib-coverage/2.0.4:
 562 |     resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==}
 563 |     dev: true
 564 | 
 565 |   /@types/istanbul-lib-report/3.0.0:
 566 |     resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==}
 567 |     dependencies:
 568 |       '@types/istanbul-lib-coverage': 2.0.4
 569 |     dev: true
 570 | 
 571 |   /@types/istanbul-reports/3.0.1:
 572 |     resolution: {integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==}
 573 |     dependencies:
 574 |       '@types/istanbul-lib-report': 3.0.0
 575 |     dev: true
 576 | 
 577 |   /@types/jest/27.4.0:
 578 |     resolution: {integrity: sha512-gHl8XuC1RZ8H2j5sHv/JqsaxXkDDM9iDOgu0Wp8sjs4u/snb2PVehyWXJPr+ORA0RPpgw231mnutWI1+0hgjIQ==}
 579 |     dependencies:
 580 |       jest-diff: 27.4.2
 581 |       pretty-format: 27.4.2
 582 |     dev: true
 583 | 
 584 |   /@types/mime/2.0.3:
 585 |     resolution: {integrity: sha512-Jus9s4CDbqwocc5pOAnh8ShfrnMcPHuJYzVcSUU7lrh8Ni5HuIqX3oilL86p3dlTrk0LzHRCgA/GQ7uNCw6l2Q==}
 586 |     dev: true
 587 | 
 588 |   /@types/minimatch/3.0.5:
 589 |     resolution: {integrity: sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==}
 590 |     dev: true
 591 | 
 592 |   /@types/node/17.0.7:
 593 |     resolution: {integrity: sha512-1QUk+WAUD4t8iR+Oj+UgI8oJa6yyxaB8a8pHaC8uqM6RrS1qbL7bf3Pwl5rHv0psm2CuDErgho6v5N+G+5fwtQ==}
 594 |     dev: true
 595 | 
 596 |   /@types/prop-types/15.7.4:
 597 |     resolution: {integrity: sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==}
 598 |     dev: true
 599 | 
 600 |   /@types/react-dom/17.0.11:
 601 |     resolution: {integrity: sha512-f96K3k+24RaLGVu/Y2Ng3e1EbZ8/cVJvypZWd7cy0ofCBaf2lcM46xNhycMZ2xGwbBjRql7hOlZ+e2WlJ5MH3Q==}
 602 |     dependencies:
 603 |       '@types/react': 17.0.38
 604 |     dev: true
 605 | 
 606 |   /@types/react-test-renderer/17.0.1:
 607 |     resolution: {integrity: sha512-3Fi2O6Zzq/f3QR9dRnlnHso9bMl7weKCviFmfF6B4LS1Uat6Hkm15k0ZAQuDz+UBq6B3+g+NM6IT2nr5QgPzCw==}
 608 |     dependencies:
 609 |       '@types/react': 17.0.38
 610 |     dev: true
 611 | 
 612 |   /@types/react/17.0.38:
 613 |     resolution: {integrity: sha512-SI92X1IA+FMnP3qM5m4QReluXzhcmovhZnLNm3pyeQlooi02qI7sLiepEYqT678uNiyc25XfCqxREFpy3W7YhQ==}
 614 |     dependencies:
 615 |       '@types/prop-types': 15.7.4
 616 |       '@types/scheduler': 0.16.2
 617 |       csstype: 3.0.10
 618 |     dev: true
 619 | 
 620 |   /@types/resolve/1.17.1:
 621 |     resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==}
 622 |     dependencies:
 623 |       '@types/node': 17.0.7
 624 |     dev: true
 625 | 
 626 |   /@types/scheduler/0.16.2:
 627 |     resolution: {integrity: sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==}
 628 |     dev: true
 629 | 
 630 |   /@types/shelljs/0.8.10:
 631 |     resolution: {integrity: sha512-nhBdUA/n0nRo1B6E4BuRnUvllYAqal4T9zd91ZDnBh+qQMQTwvxmJHx6xEn/0vdjP2kqEA5eVeLazs4nMxeuFg==}
 632 |     dependencies:
 633 |       '@types/glob': 7.2.0
 634 |       '@types/node': 17.0.7
 635 |     dev: true
 636 | 
 637 |   /@types/testing-library__jest-dom/5.14.2:
 638 |     resolution: {integrity: sha512-vehbtyHUShPxIa9SioxDwCvgxukDMH//icJG90sXQBUm5lJOHLT5kNeU9tnivhnA/TkOFMzGIXN2cTc4hY8/kg==}
 639 |     dependencies:
 640 |       '@types/jest': 27.4.0
 641 |     dev: true
 642 | 
 643 |   /@types/yargs-parser/20.2.1:
 644 |     resolution: {integrity: sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==}
 645 |     dev: true
 646 | 
 647 |   /@types/yargs/16.0.4:
 648 |     resolution: {integrity: sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==}
 649 |     dependencies:
 650 |       '@types/yargs-parser': 20.2.1
 651 |     dev: true
 652 | 
 653 |   /@types/yauzl/2.9.2:
 654 |     resolution: {integrity: sha512-8uALY5LTvSuHgloDVUvWP3pIauILm+8/0pDMokuDYIoNsOkSwd5AiHBTSEJjKTDcZr5z8UpgOWZkxBF4iJftoA==}
 655 |     requiresBuild: true
 656 |     dependencies:
 657 |       '@types/node': 17.0.7
 658 |     dev: true
 659 |     optional: true
 660 | 
 661 |   /@vitejs/plugin-react/1.1.3:
 662 |     resolution: {integrity: sha512-xv8QujX/uR4ti8qpt0hMriM2bdpxX4jm4iU6GAZfCwHjh/ewkX/8DJgnmQpE0HSJmgz8dixyUnRJKi2Pf1nNoQ==}
 663 |     engines: {node: '>=12.0.0'}
 664 |     dependencies:
 665 |       '@babel/core': 7.16.7
 666 |       '@babel/plugin-transform-react-jsx': 7.16.7_@babel+core@7.16.7
 667 |       '@babel/plugin-transform-react-jsx-development': 7.16.7_@babel+core@7.16.7
 668 |       '@babel/plugin-transform-react-jsx-self': 7.16.7_@babel+core@7.16.7
 669 |       '@babel/plugin-transform-react-jsx-source': 7.16.7_@babel+core@7.16.7
 670 |       '@rollup/pluginutils': 4.1.2
 671 |       react-refresh: 0.11.0
 672 |       resolve: 1.21.0
 673 |     transitivePeerDependencies:
 674 |       - supports-color
 675 |     dev: true
 676 | 
 677 |   /agent-base/6.0.2:
 678 |     resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==}
 679 |     engines: {node: '>= 6.0.0'}
 680 |     dependencies:
 681 |       debug: 4.3.2
 682 |     transitivePeerDependencies:
 683 |       - supports-color
 684 |     dev: true
 685 | 
 686 |   /ansi-regex/5.0.1:
 687 |     resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
 688 |     engines: {node: '>=8'}
 689 |     dev: true
 690 | 
 691 |   /ansi-styles/3.2.1:
 692 |     resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
 693 |     engines: {node: '>=4'}
 694 |     dependencies:
 695 |       color-convert: 1.9.3
 696 |     dev: true
 697 | 
 698 |   /ansi-styles/4.3.0:
 699 |     resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
 700 |     engines: {node: '>=8'}
 701 |     dependencies:
 702 |       color-convert: 2.0.1
 703 |     dev: true
 704 | 
 705 |   /ansi-styles/5.2.0:
 706 |     resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==}
 707 |     engines: {node: '>=10'}
 708 |     dev: true
 709 | 
 710 |   /aria-query/5.0.0:
 711 |     resolution: {integrity: sha512-V+SM7AbUwJ+EBnB8+DXs0hPZHO0W6pqBcc0dW90OwtVG02PswOu/teuARoLQjdDOH+t9pJgGnW5/Qmouf3gPJg==}
 712 |     engines: {node: '>=6.0'}
 713 |     dev: true
 714 | 
 715 |   /aslemammad-react-worker-components/0.1.1_react@17.0.2:
 716 |     resolution: {integrity: sha512-9Oyzg2myA+AA8eQVCrDhiQeU0dWx2HY+YXtEzFIAf78398al2qoeQQUR0g1hC2DkoYF1YIhyx4AIZu1FGfdYxA==}
 717 |     peerDependencies:
 718 |       react: '>=16.8.0'
 719 |     dependencies:
 720 |       react: 17.0.2
 721 |     dev: true
 722 | 
 723 |   /assertion-error/1.1.0:
 724 |     resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==}
 725 |     dev: true
 726 | 
 727 |   /atob/2.1.2:
 728 |     resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==}
 729 |     engines: {node: '>= 4.5.0'}
 730 |     hasBin: true
 731 |     dev: true
 732 | 
 733 |   /balanced-match/1.0.2:
 734 |     resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
 735 |     dev: true
 736 | 
 737 |   /base64-js/1.5.1:
 738 |     resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
 739 |     dev: true
 740 | 
 741 |   /bl/4.1.0:
 742 |     resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==}
 743 |     dependencies:
 744 |       buffer: 5.7.1
 745 |       inherits: 2.0.4
 746 |       readable-stream: 3.6.0
 747 |     dev: true
 748 | 
 749 |   /brace-expansion/1.1.11:
 750 |     resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
 751 |     dependencies:
 752 |       balanced-match: 1.0.2
 753 |       concat-map: 0.0.1
 754 |     dev: true
 755 | 
 756 |   /browserslist/4.19.1:
 757 |     resolution: {integrity: sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==}
 758 |     engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
 759 |     hasBin: true
 760 |     dependencies:
 761 |       caniuse-lite: 1.0.30001296
 762 |       electron-to-chromium: 1.4.33
 763 |       escalade: 3.1.1
 764 |       node-releases: 2.0.1
 765 |       picocolors: 1.0.0
 766 |     dev: true
 767 | 
 768 |   /buffer-crc32/0.2.13:
 769 |     resolution: {integrity: sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=}
 770 |     dev: true
 771 | 
 772 |   /buffer-es6/4.9.3:
 773 |     resolution: {integrity: sha1-8mNHuC33b9N+GLy1KIxJcM/VxAQ=}
 774 |     dev: true
 775 | 
 776 |   /buffer/5.7.1:
 777 |     resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==}
 778 |     dependencies:
 779 |       base64-js: 1.5.1
 780 |       ieee754: 1.2.1
 781 |     dev: true
 782 | 
 783 |   /builtin-modules/3.2.0:
 784 |     resolution: {integrity: sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==}
 785 |     engines: {node: '>=6'}
 786 |     dev: true
 787 | 
 788 |   /builtins/4.0.0:
 789 |     resolution: {integrity: sha512-qC0E2Dxgou1IHhvJSLwGDSTvokbRovU5zZFuDY6oY8Y2lF3nGt5Ad8YZK7GMtqzY84Wu7pXTPeHQeHcXSXsRhw==}
 790 |     dependencies:
 791 |       semver: 7.3.5
 792 |     dev: true
 793 | 
 794 |   /caniuse-lite/1.0.30001296:
 795 |     resolution: {integrity: sha512-WfrtPEoNSoeATDlf4y3QvkwiELl9GyPLISV5GejTbbQRtQx4LhsXmc9IQ6XCL2d7UxCyEzToEZNMeqR79OUw8Q==}
 796 |     dev: true
 797 | 
 798 |   /chai/4.3.4:
 799 |     resolution: {integrity: sha512-yS5H68VYOCtN1cjfwumDSuzn/9c+yza4f3reKXlE5rUg7SFcCEy90gJvydNgOYtblyf4Zi6jIWRnXOgErta0KA==}
 800 |     engines: {node: '>=4'}
 801 |     dependencies:
 802 |       assertion-error: 1.1.0
 803 |       check-error: 1.0.2
 804 |       deep-eql: 3.0.1
 805 |       get-func-name: 2.0.0
 806 |       pathval: 1.1.1
 807 |       type-detect: 4.0.8
 808 |     dev: true
 809 | 
 810 |   /chalk/2.4.2:
 811 |     resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
 812 |     engines: {node: '>=4'}
 813 |     dependencies:
 814 |       ansi-styles: 3.2.1
 815 |       escape-string-regexp: 1.0.5
 816 |       supports-color: 5.5.0
 817 |     dev: true
 818 | 
 819 |   /chalk/3.0.0:
 820 |     resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==}
 821 |     engines: {node: '>=8'}
 822 |     dependencies:
 823 |       ansi-styles: 4.3.0
 824 |       supports-color: 7.2.0
 825 |     dev: true
 826 | 
 827 |   /chalk/4.1.2:
 828 |     resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
 829 |     engines: {node: '>=10'}
 830 |     dependencies:
 831 |       ansi-styles: 4.3.0
 832 |       supports-color: 7.2.0
 833 |     dev: true
 834 | 
 835 |   /chalk/5.0.0:
 836 |     resolution: {integrity: sha512-/duVOqst+luxCQRKEo4bNxinsOQtMP80ZYm7mMqzuh5PociNL0PvmHFvREJ9ueYL2TxlHjBcmLCdmocx9Vg+IQ==}
 837 |     engines: {node: ^12.17.0 || ^14.13 || >=16.0.0}
 838 |     dev: false
 839 | 
 840 |   /check-error/1.0.2:
 841 |     resolution: {integrity: sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=}
 842 |     dev: true
 843 | 
 844 |   /chownr/1.1.4:
 845 |     resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==}
 846 |     dev: true
 847 | 
 848 |   /color-convert/1.9.3:
 849 |     resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
 850 |     dependencies:
 851 |       color-name: 1.1.3
 852 |     dev: true
 853 | 
 854 |   /color-convert/2.0.1:
 855 |     resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
 856 |     engines: {node: '>=7.0.0'}
 857 |     dependencies:
 858 |       color-name: 1.1.4
 859 |     dev: true
 860 | 
 861 |   /color-name/1.1.3:
 862 |     resolution: {integrity: sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=}
 863 |     dev: true
 864 | 
 865 |   /color-name/1.1.4:
 866 |     resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
 867 |     dev: true
 868 | 
 869 |   /commondir/1.0.1:
 870 |     resolution: {integrity: sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=}
 871 |     dev: true
 872 | 
 873 |   /concat-map/0.0.1:
 874 |     resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=}
 875 |     dev: true
 876 | 
 877 |   /convert-source-map/1.8.0:
 878 |     resolution: {integrity: sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==}
 879 |     dependencies:
 880 |       safe-buffer: 5.1.2
 881 |     dev: true
 882 | 
 883 |   /cross-env/7.0.3:
 884 |     resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==}
 885 |     engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'}
 886 |     hasBin: true
 887 |     dependencies:
 888 |       cross-spawn: 7.0.3
 889 |     dev: true
 890 | 
 891 |   /cross-spawn/7.0.3:
 892 |     resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
 893 |     engines: {node: '>= 8'}
 894 |     dependencies:
 895 |       path-key: 3.1.1
 896 |       shebang-command: 2.0.0
 897 |       which: 2.0.2
 898 |     dev: true
 899 | 
 900 |   /css.escape/1.5.1:
 901 |     resolution: {integrity: sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s=}
 902 |     dev: true
 903 | 
 904 |   /css/3.0.0:
 905 |     resolution: {integrity: sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==}
 906 |     dependencies:
 907 |       inherits: 2.0.4
 908 |       source-map: 0.6.1
 909 |       source-map-resolve: 0.6.0
 910 |     dev: true
 911 | 
 912 |   /csstype/3.0.10:
 913 |     resolution: {integrity: sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA==}
 914 |     dev: true
 915 | 
 916 |   /debug/4.3.2:
 917 |     resolution: {integrity: sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==}
 918 |     engines: {node: '>=6.0'}
 919 |     peerDependencies:
 920 |       supports-color: '*'
 921 |     peerDependenciesMeta:
 922 |       supports-color:
 923 |         optional: true
 924 |     dependencies:
 925 |       ms: 2.1.2
 926 |     dev: true
 927 | 
 928 |   /debug/4.3.3:
 929 |     resolution: {integrity: sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==}
 930 |     engines: {node: '>=6.0'}
 931 |     peerDependencies:
 932 |       supports-color: '*'
 933 |     peerDependenciesMeta:
 934 |       supports-color:
 935 |         optional: true
 936 |     dependencies:
 937 |       ms: 2.1.2
 938 |     dev: true
 939 | 
 940 |   /decode-uri-component/0.2.0:
 941 |     resolution: {integrity: sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=}
 942 |     engines: {node: '>=0.10'}
 943 |     dev: true
 944 | 
 945 |   /deep-eql/3.0.1:
 946 |     resolution: {integrity: sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==}
 947 |     engines: {node: '>=0.12'}
 948 |     dependencies:
 949 |       type-detect: 4.0.8
 950 |     dev: true
 951 | 
 952 |   /deepmerge/4.2.2:
 953 |     resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==}
 954 |     engines: {node: '>=0.10.0'}
 955 |     dev: true
 956 | 
 957 |   /devtools-protocol/0.0.937139:
 958 |     resolution: {integrity: sha512-daj+rzR3QSxsPRy5vjjthn58axO8c11j58uY0lG5vvlJk/EiOdCWOptGdkXDjtuRHr78emKq0udHCXM4trhoDQ==}
 959 |     dev: true
 960 | 
 961 |   /diff-sequences/27.4.0:
 962 |     resolution: {integrity: sha512-YqiQzkrsmHMH5uuh8OdQFU9/ZpADnwzml8z0O5HvRNda+5UZsaX/xN+AAxfR2hWq1Y7HZnAzO9J5lJXOuDz2Ww==}
 963 |     engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
 964 |     dev: true
 965 | 
 966 |   /dom-accessibility-api/0.5.10:
 967 |     resolution: {integrity: sha512-Xu9mD0UjrJisTmv7lmVSDMagQcU9R5hwAbxsaAE/35XPnPLJobbuREfV/rraiSaEj/UOvgrzQs66zyTWTlyd+g==}
 968 |     dev: true
 969 | 
 970 |   /electron-to-chromium/1.4.33:
 971 |     resolution: {integrity: sha512-OVK1Ad3pHnmuXPhEfq85X8vUKr1UPNHryBnbKnyLcAfh8dPwoFjoDhDlP5KpPJIiymvSucZs48UBrE1250IxOw==}
 972 |     dev: true
 973 | 
 974 |   /end-of-stream/1.4.4:
 975 |     resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==}
 976 |     dependencies:
 977 |       once: 1.4.0
 978 |     dev: true
 979 | 
 980 |   /es-module-lexer/0.9.3:
 981 |     resolution: {integrity: sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==}
 982 | 
 983 |   /esbuild-android-arm64/0.13.15:
 984 |     resolution: {integrity: sha512-m602nft/XXeO8YQPUDVoHfjyRVPdPgjyyXOxZ44MK/agewFFkPa8tUo6lAzSWh5Ui5PB4KR9UIFTSBKh/RrCmg==}
 985 |     cpu: [arm64]
 986 |     os: [android]
 987 |     requiresBuild: true
 988 |     dev: true
 989 |     optional: true
 990 | 
 991 |   /esbuild-darwin-64/0.13.15:
 992 |     resolution: {integrity: sha512-ihOQRGs2yyp7t5bArCwnvn2Atr6X4axqPpEdCFPVp7iUj4cVSdisgvEKdNR7yH3JDjW6aQDw40iQFoTqejqxvQ==}
 993 |     cpu: [x64]
 994 |     os: [darwin]
 995 |     requiresBuild: true
 996 |     dev: true
 997 |     optional: true
 998 | 
 999 |   /esbuild-darwin-arm64/0.13.15:
1000 |     resolution: {integrity: sha512-i1FZssTVxUqNlJ6cBTj5YQj4imWy3m49RZRnHhLpefFIh0To05ow9DTrXROTE1urGTQCloFUXTX8QfGJy1P8dQ==}
1001 |     cpu: [arm64]
1002 |     os: [darwin]
1003 |     requiresBuild: true
1004 |     dev: true
1005 |     optional: true
1006 | 
1007 |   /esbuild-freebsd-64/0.13.15:
1008 |     resolution: {integrity: sha512-G3dLBXUI6lC6Z09/x+WtXBXbOYQZ0E8TDBqvn7aMaOCzryJs8LyVXKY4CPnHFXZAbSwkCbqiPuSQ1+HhrNk7EA==}
1009 |     cpu: [x64]
1010 |     os: [freebsd]
1011 |     requiresBuild: true
1012 |     dev: true
1013 |     optional: true
1014 | 
1015 |   /esbuild-freebsd-arm64/0.13.15:
1016 |     resolution: {integrity: sha512-KJx0fzEDf1uhNOZQStV4ujg30WlnwqUASaGSFPhznLM/bbheu9HhqZ6mJJZM32lkyfGJikw0jg7v3S0oAvtvQQ==}
1017 |     cpu: [arm64]
1018 |     os: [freebsd]
1019 |     requiresBuild: true
1020 |     dev: true
1021 |     optional: true
1022 | 
1023 |   /esbuild-linux-32/0.13.15:
1024 |     resolution: {integrity: sha512-ZvTBPk0YWCLMCXiFmD5EUtB30zIPvC5Itxz0mdTu/xZBbbHJftQgLWY49wEPSn2T/TxahYCRDWun5smRa0Tu+g==}
1025 |     cpu: [ia32]
1026 |     os: [linux]
1027 |     requiresBuild: true
1028 |     dev: true
1029 |     optional: true
1030 | 
1031 |   /esbuild-linux-64/0.13.15:
1032 |     resolution: {integrity: sha512-eCKzkNSLywNeQTRBxJRQ0jxRCl2YWdMB3+PkWFo2BBQYC5mISLIVIjThNtn6HUNqua1pnvgP5xX0nHbZbPj5oA==}
1033 |     cpu: [x64]
1034 |     os: [linux]
1035 |     requiresBuild: true
1036 |     dev: true
1037 |     optional: true
1038 | 
1039 |   /esbuild-linux-arm/0.13.15:
1040 |     resolution: {integrity: sha512-wUHttDi/ol0tD8ZgUMDH8Ef7IbDX+/UsWJOXaAyTdkT7Yy9ZBqPg8bgB/Dn3CZ9SBpNieozrPRHm0BGww7W/jA==}
1041 |     cpu: [arm]
1042 |     os: [linux]
1043 |     requiresBuild: true
1044 |     dev: true
1045 |     optional: true
1046 | 
1047 |   /esbuild-linux-arm64/0.13.15:
1048 |     resolution: {integrity: sha512-bYpuUlN6qYU9slzr/ltyLTR9YTBS7qUDymO8SV7kjeNext61OdmqFAzuVZom+OLW1HPHseBfJ/JfdSlx8oTUoA==}
1049 |     cpu: [arm64]
1050 |     os: [linux]
1051 |     requiresBuild: true
1052 |     dev: true
1053 |     optional: true
1054 | 
1055 |   /esbuild-linux-mips64le/0.13.15:
1056 |     resolution: {integrity: sha512-KlVjIG828uFPyJkO/8gKwy9RbXhCEUeFsCGOJBepUlpa7G8/SeZgncUEz/tOOUJTcWMTmFMtdd3GElGyAtbSWg==}
1057 |     cpu: [mips64el]
1058 |     os: [linux]
1059 |     requiresBuild: true
1060 |     dev: true
1061 |     optional: true
1062 | 
1063 |   /esbuild-linux-ppc64le/0.13.15:
1064 |     resolution: {integrity: sha512-h6gYF+OsaqEuBjeesTBtUPw0bmiDu7eAeuc2OEH9S6mV9/jPhPdhOWzdeshb0BskRZxPhxPOjqZ+/OqLcxQwEQ==}
1065 |     cpu: [ppc64]
1066 |     os: [linux]
1067 |     requiresBuild: true
1068 |     dev: true
1069 |     optional: true
1070 | 
1071 |   /esbuild-netbsd-64/0.13.15:
1072 |     resolution: {integrity: sha512-3+yE9emwoevLMyvu+iR3rsa+Xwhie7ZEHMGDQ6dkqP/ndFzRHkobHUKTe+NCApSqG5ce2z4rFu+NX/UHnxlh3w==}
1073 |     cpu: [x64]
1074 |     os: [netbsd]
1075 |     requiresBuild: true
1076 |     dev: true
1077 |     optional: true
1078 | 
1079 |   /esbuild-openbsd-64/0.13.15:
1080 |     resolution: {integrity: sha512-wTfvtwYJYAFL1fSs8yHIdf5GEE4NkbtbXtjLWjM3Cw8mmQKqsg8kTiqJ9NJQe5NX/5Qlo7Xd9r1yKMMkHllp5g==}
1081 |     cpu: [x64]
1082 |     os: [openbsd]
1083 |     requiresBuild: true
1084 |     dev: true
1085 |     optional: true
1086 | 
1087 |   /esbuild-sunos-64/0.13.15:
1088 |     resolution: {integrity: sha512-lbivT9Bx3t1iWWrSnGyBP9ODriEvWDRiweAs69vI+miJoeKwHWOComSRukttbuzjZ8r1q0mQJ8Z7yUsDJ3hKdw==}
1089 |     cpu: [x64]
1090 |     os: [sunos]
1091 |     requiresBuild: true
1092 |     dev: true
1093 |     optional: true
1094 | 
1095 |   /esbuild-windows-32/0.13.15:
1096 |     resolution: {integrity: sha512-fDMEf2g3SsJ599MBr50cY5ve5lP1wyVwTe6aLJsM01KtxyKkB4UT+fc5MXQFn3RLrAIAZOG+tHC+yXObpSn7Nw==}
1097 |     cpu: [ia32]
1098 |     os: [win32]
1099 |     requiresBuild: true
1100 |     dev: true
1101 |     optional: true
1102 | 
1103 |   /esbuild-windows-64/0.13.15:
1104 |     resolution: {integrity: sha512-9aMsPRGDWCd3bGjUIKG/ZOJPKsiztlxl/Q3C1XDswO6eNX/Jtwu4M+jb6YDH9hRSUflQWX0XKAfWzgy5Wk54JQ==}
1105 |     cpu: [x64]
1106 |     os: [win32]
1107 |     requiresBuild: true
1108 |     dev: true
1109 |     optional: true
1110 | 
1111 |   /esbuild-windows-arm64/0.13.15:
1112 |     resolution: {integrity: sha512-zzvyCVVpbwQQATaf3IG8mu1IwGEiDxKkYUdA4FpoCHi1KtPa13jeScYDjlW0Qh+ebWzpKfR2ZwvqAQkSWNcKjA==}
1113 |     cpu: [arm64]
1114 |     os: [win32]
1115 |     requiresBuild: true
1116 |     dev: true
1117 |     optional: true
1118 | 
1119 |   /esbuild/0.13.15:
1120 |     resolution: {integrity: sha512-raCxt02HBKv8RJxE8vkTSCXGIyKHdEdGfUmiYb8wnabnaEmHzyW7DCHb5tEN0xU8ryqg5xw54mcwnYkC4x3AIw==}
1121 |     hasBin: true
1122 |     requiresBuild: true
1123 |     optionalDependencies:
1124 |       esbuild-android-arm64: 0.13.15
1125 |       esbuild-darwin-64: 0.13.15
1126 |       esbuild-darwin-arm64: 0.13.15
1127 |       esbuild-freebsd-64: 0.13.15
1128 |       esbuild-freebsd-arm64: 0.13.15
1129 |       esbuild-linux-32: 0.13.15
1130 |       esbuild-linux-64: 0.13.15
1131 |       esbuild-linux-arm: 0.13.15
1132 |       esbuild-linux-arm64: 0.13.15
1133 |       esbuild-linux-mips64le: 0.13.15
1134 |       esbuild-linux-ppc64le: 0.13.15
1135 |       esbuild-netbsd-64: 0.13.15
1136 |       esbuild-openbsd-64: 0.13.15
1137 |       esbuild-sunos-64: 0.13.15
1138 |       esbuild-windows-32: 0.13.15
1139 |       esbuild-windows-64: 0.13.15
1140 |       esbuild-windows-arm64: 0.13.15
1141 |     dev: true
1142 | 
1143 |   /escalade/3.1.1:
1144 |     resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
1145 |     engines: {node: '>=6'}
1146 |     dev: true
1147 | 
1148 |   /escape-string-regexp/1.0.5:
1149 |     resolution: {integrity: sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=}
1150 |     engines: {node: '>=0.8.0'}
1151 |     dev: true
1152 | 
1153 |   /estree-walker/1.0.1:
1154 |     resolution: {integrity: sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==}
1155 |     dev: true
1156 | 
1157 |   /estree-walker/2.0.2:
1158 |     resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
1159 |     dev: true
1160 | 
1161 |   /execa/6.0.0:
1162 |     resolution: {integrity: sha512-m4wU9j4Z9nXXoqT8RSfl28JSwmMNLFF69OON8H/lL3NeU0tNpGz313bcOfYoBBHokB0dC2tMl3VUcKgHELhL2Q==}
1163 |     engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
1164 |     dependencies:
1165 |       cross-spawn: 7.0.3
1166 |       get-stream: 6.0.1
1167 |       human-signals: 3.0.1
1168 |       is-stream: 3.0.0
1169 |       merge-stream: 2.0.0
1170 |       npm-run-path: 5.0.1
1171 |       onetime: 6.0.0
1172 |       signal-exit: 3.0.6
1173 |       strip-final-newline: 3.0.0
1174 |     dev: true
1175 | 
1176 |   /extract-zip/2.0.1:
1177 |     resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==}
1178 |     engines: {node: '>= 10.17.0'}
1179 |     hasBin: true
1180 |     dependencies:
1181 |       debug: 4.3.2
1182 |       get-stream: 5.2.0
1183 |       yauzl: 2.10.0
1184 |     optionalDependencies:
1185 |       '@types/yauzl': 2.9.2
1186 |     transitivePeerDependencies:
1187 |       - supports-color
1188 |     dev: true
1189 | 
1190 |   /fd-slicer/1.1.0:
1191 |     resolution: {integrity: sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=}
1192 |     dependencies:
1193 |       pend: 1.2.0
1194 |     dev: true
1195 | 
1196 |   /find-up/4.1.0:
1197 |     resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==}
1198 |     engines: {node: '>=8'}
1199 |     dependencies:
1200 |       locate-path: 5.0.0
1201 |       path-exists: 4.0.0
1202 |     dev: true
1203 | 
1204 |   /fs-constants/1.0.0:
1205 |     resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==}
1206 |     dev: true
1207 | 
1208 |   /fs.realpath/1.0.0:
1209 |     resolution: {integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8=}
1210 |     dev: true
1211 | 
1212 |   /fsevents/2.3.2:
1213 |     resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==}
1214 |     engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
1215 |     os: [darwin]
1216 |     requiresBuild: true
1217 |     dev: true
1218 |     optional: true
1219 | 
1220 |   /function-bind/1.1.1:
1221 |     resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==}
1222 |     dev: true
1223 | 
1224 |   /gensync/1.0.0-beta.2:
1225 |     resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
1226 |     engines: {node: '>=6.9.0'}
1227 |     dev: true
1228 | 
1229 |   /get-func-name/2.0.0:
1230 |     resolution: {integrity: sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=}
1231 |     dev: true
1232 | 
1233 |   /get-stream/5.2.0:
1234 |     resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==}
1235 |     engines: {node: '>=8'}
1236 |     dependencies:
1237 |       pump: 3.0.0
1238 |     dev: true
1239 | 
1240 |   /get-stream/6.0.1:
1241 |     resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==}
1242 |     engines: {node: '>=10'}
1243 |     dev: true
1244 | 
1245 |   /get-them-args/1.3.2:
1246 |     resolution: {integrity: sha1-dKILqKSr7OWuGZrQPyvMaP38m6U=}
1247 |     dev: true
1248 | 
1249 |   /glob/7.2.0:
1250 |     resolution: {integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==}
1251 |     dependencies:
1252 |       fs.realpath: 1.0.0
1253 |       inflight: 1.0.6
1254 |       inherits: 2.0.4
1255 |       minimatch: 3.0.4
1256 |       once: 1.4.0
1257 |       path-is-absolute: 1.0.1
1258 |     dev: true
1259 | 
1260 |   /globals/11.12.0:
1261 |     resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
1262 |     engines: {node: '>=4'}
1263 |     dev: true
1264 | 
1265 |   /has-flag/3.0.0:
1266 |     resolution: {integrity: sha1-tdRU3CGZriJWmfNGfloH87lVuv0=}
1267 |     engines: {node: '>=4'}
1268 |     dev: true
1269 | 
1270 |   /has-flag/4.0.0:
1271 |     resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
1272 |     engines: {node: '>=8'}
1273 |     dev: true
1274 | 
1275 |   /has/1.0.3:
1276 |     resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==}
1277 |     engines: {node: '>= 0.4.0'}
1278 |     dependencies:
1279 |       function-bind: 1.1.1
1280 |     dev: true
1281 | 
1282 |   /https-proxy-agent/5.0.0:
1283 |     resolution: {integrity: sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==}
1284 |     engines: {node: '>= 6'}
1285 |     dependencies:
1286 |       agent-base: 6.0.2
1287 |       debug: 4.3.2
1288 |     transitivePeerDependencies:
1289 |       - supports-color
1290 |     dev: true
1291 | 
1292 |   /human-signals/3.0.1:
1293 |     resolution: {integrity: sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==}
1294 |     engines: {node: '>=12.20.0'}
1295 |     dev: true
1296 | 
1297 |   /ieee754/1.2.1:
1298 |     resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
1299 |     dev: true
1300 | 
1301 |   /import-meta-resolve/1.1.1:
1302 |     resolution: {integrity: sha512-JiTuIvVyPaUg11eTrNDx5bgQ/yMKMZffc7YSjvQeSMXy58DO2SQ8BtAf3xteZvmzvjYh14wnqNjL8XVeDy2o9A==}
1303 |     dependencies:
1304 |       builtins: 4.0.0
1305 |     dev: true
1306 | 
1307 |   /indent-string/4.0.0:
1308 |     resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==}
1309 |     engines: {node: '>=8'}
1310 |     dev: true
1311 | 
1312 |   /inflight/1.0.6:
1313 |     resolution: {integrity: sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=}
1314 |     dependencies:
1315 |       once: 1.4.0
1316 |       wrappy: 1.0.2
1317 |     dev: true
1318 | 
1319 |   /inherits/2.0.4:
1320 |     resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
1321 |     dev: true
1322 | 
1323 |   /interpret/1.4.0:
1324 |     resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==}
1325 |     engines: {node: '>= 0.10'}
1326 |     dev: true
1327 | 
1328 |   /is-core-module/2.8.0:
1329 |     resolution: {integrity: sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==}
1330 |     dependencies:
1331 |       has: 1.0.3
1332 |     dev: true
1333 | 
1334 |   /is-module/1.0.0:
1335 |     resolution: {integrity: sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=}
1336 |     dev: true
1337 | 
1338 |   /is-reference/1.2.1:
1339 |     resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==}
1340 |     dependencies:
1341 |       '@types/estree': 0.0.50
1342 |     dev: true
1343 | 
1344 |   /is-stream/3.0.0:
1345 |     resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==}
1346 |     engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
1347 |     dev: true
1348 | 
1349 |   /isexe/2.0.0:
1350 |     resolution: {integrity: sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=}
1351 |     dev: true
1352 | 
1353 |   /jest-diff/27.4.2:
1354 |     resolution: {integrity: sha512-ujc9ToyUZDh9KcqvQDkk/gkbf6zSaeEg9AiBxtttXW59H/AcqEYp1ciXAtJp+jXWva5nAf/ePtSsgWwE5mqp4Q==}
1355 |     engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
1356 |     dependencies:
1357 |       chalk: 4.1.2
1358 |       diff-sequences: 27.4.0
1359 |       jest-get-type: 27.4.0
1360 |       pretty-format: 27.4.2
1361 |     dev: true
1362 | 
1363 |   /jest-get-type/27.4.0:
1364 |     resolution: {integrity: sha512-tk9o+ld5TWq41DkK14L4wox4s2D9MtTpKaAVzXfr5CUKm5ZK2ExcaFE0qls2W71zE/6R2TxxrK9w2r6svAFDBQ==}
1365 |     engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
1366 |     dev: true
1367 | 
1368 |   /joycon/3.1.1:
1369 |     resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==}
1370 |     engines: {node: '>=10'}
1371 |     dev: true
1372 | 
1373 |   /js-tokens/4.0.0:
1374 |     resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
1375 |     dev: true
1376 | 
1377 |   /jsesc/2.5.2:
1378 |     resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==}
1379 |     engines: {node: '>=4'}
1380 |     hasBin: true
1381 |     dev: true
1382 | 
1383 |   /json5/2.2.0:
1384 |     resolution: {integrity: sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==}
1385 |     engines: {node: '>=6'}
1386 |     hasBin: true
1387 |     dependencies:
1388 |       minimist: 1.2.5
1389 |     dev: true
1390 | 
1391 |   /jsonc-parser/3.0.0:
1392 |     resolution: {integrity: sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==}
1393 |     dev: true
1394 | 
1395 |   /kill-port/1.6.1:
1396 |     resolution: {integrity: sha512-un0Y55cOM7JKGaLnGja28T38tDDop0AQ8N0KlAdyh+B1nmMoX8AnNmqPNZbS3mUMgiST51DCVqmbFT1gNJpVNw==}
1397 |     hasBin: true
1398 |     dependencies:
1399 |       get-them-args: 1.3.2
1400 |       shell-exec: 1.0.2
1401 |     dev: true
1402 | 
1403 |   /kolorist/1.5.1:
1404 |     resolution: {integrity: sha512-lxpCM3HTvquGxKGzHeknB/sUjuVoUElLlfYnXZT73K8geR9jQbroGlSCFBax9/0mpGoD3kzcMLnOlGQPJJNyqQ==}
1405 |     dev: true
1406 | 
1407 |   /local-pkg/0.4.0:
1408 |     resolution: {integrity: sha512-2XBWjO/v63JeR1HPzLJxdTVRQDB84Av2p2KtBA5ahvpyLUPubcAU6iXlAJrONcY7aSqgJhXxElAnKtnYsRolPQ==}
1409 |     engines: {node: '>=14'}
1410 |     dependencies:
1411 |       mlly: 0.2.10
1412 |     dev: true
1413 | 
1414 |   /locate-path/5.0.0:
1415 |     resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==}
1416 |     engines: {node: '>=8'}
1417 |     dependencies:
1418 |       p-locate: 4.1.0
1419 |     dev: true
1420 | 
1421 |   /lodash/4.17.21:
1422 |     resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
1423 |     dev: true
1424 | 
1425 |   /loose-envify/1.4.0:
1426 |     resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
1427 |     hasBin: true
1428 |     dependencies:
1429 |       js-tokens: 4.0.0
1430 |     dev: true
1431 | 
1432 |   /lru-cache/6.0.0:
1433 |     resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
1434 |     engines: {node: '>=10'}
1435 |     dependencies:
1436 |       yallist: 4.0.0
1437 |     dev: true
1438 | 
1439 |   /lz-string/1.4.4:
1440 |     resolution: {integrity: sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY=}
1441 |     hasBin: true
1442 |     dev: true
1443 | 
1444 |   /magic-string/0.25.7:
1445 |     resolution: {integrity: sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==}
1446 |     dependencies:
1447 |       sourcemap-codec: 1.4.8
1448 |     dev: true
1449 | 
1450 |   /merge-stream/2.0.0:
1451 |     resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
1452 |     dev: true
1453 | 
1454 |   /mime/3.0.0:
1455 |     resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==}
1456 |     engines: {node: '>=10.0.0'}
1457 |     hasBin: true
1458 |     dev: false
1459 | 
1460 |   /mimic-fn/4.0.0:
1461 |     resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==}
1462 |     engines: {node: '>=12'}
1463 |     dev: true
1464 | 
1465 |   /min-indent/1.0.1:
1466 |     resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==}
1467 |     engines: {node: '>=4'}
1468 |     dev: true
1469 | 
1470 |   /minimatch/3.0.4:
1471 |     resolution: {integrity: sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==}
1472 |     dependencies:
1473 |       brace-expansion: 1.1.11
1474 |     dev: true
1475 | 
1476 |   /minimist/1.2.5:
1477 |     resolution: {integrity: sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==}
1478 |     dev: true
1479 | 
1480 |   /mkdirp-classic/0.5.3:
1481 |     resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==}
1482 |     dev: true
1483 | 
1484 |   /mlly/0.2.10:
1485 |     resolution: {integrity: sha512-xfyW6c2QBGArtctzNnTV5leOKX8nOMz2simeubtXofdsdSJFSNw+Ncvrs8kxcN3pBrQLXuYBHNFV6NgZ5Ryf4A==}
1486 |     dependencies:
1487 |       import-meta-resolve: 1.1.1
1488 |     dev: true
1489 | 
1490 |   /mrmime/1.0.0:
1491 |     resolution: {integrity: sha512-a70zx7zFfVO7XpnQ2IX1Myh9yY4UYvfld/dikWRnsXxbyvMcfz+u6UfgNAtH+k2QqtJuzVpv6eLTx1G2+WKZbQ==}
1492 |     engines: {node: '>=10'}
1493 |     dev: true
1494 | 
1495 |   /ms/2.1.2:
1496 |     resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
1497 |     dev: true
1498 | 
1499 |   /nanoid/3.1.30:
1500 |     resolution: {integrity: sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==}
1501 |     engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
1502 |     hasBin: true
1503 |     dev: true
1504 | 
1505 |   /node-fetch/2.6.5:
1506 |     resolution: {integrity: sha512-mmlIVHJEu5rnIxgEgez6b9GgWXbkZj5YZ7fx+2r94a2E+Uirsp6HsPTPlomfdHtpt/B0cdKviwkoaM6pyvUOpQ==}
1507 |     engines: {node: 4.x || >=6.0.0}
1508 |     dependencies:
1509 |       whatwg-url: 5.0.0
1510 |     dev: true
1511 | 
1512 |   /node-releases/2.0.1:
1513 |     resolution: {integrity: sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==}
1514 |     dev: true
1515 | 
1516 |   /npm-run-path/5.0.1:
1517 |     resolution: {integrity: sha512-ybBJQUSyFwEEhqO2lXmyKOl9ucHtyZBWVM0h0FiMfT/+WKxCUZFa95qAR2X3w/w6oigN3B0b2UNHZbD+kdfD5w==}
1518 |     engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
1519 |     dependencies:
1520 |       path-key: 4.0.0
1521 |     dev: true
1522 | 
1523 |   /object-assign/4.1.1:
1524 |     resolution: {integrity: sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=}
1525 |     engines: {node: '>=0.10.0'}
1526 |     dev: true
1527 | 
1528 |   /once/1.4.0:
1529 |     resolution: {integrity: sha1-WDsap3WWHUsROsF9nFC6753Xa9E=}
1530 |     dependencies:
1531 |       wrappy: 1.0.2
1532 |     dev: true
1533 | 
1534 |   /onetime/6.0.0:
1535 |     resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==}
1536 |     engines: {node: '>=12'}
1537 |     dependencies:
1538 |       mimic-fn: 4.0.0
1539 |     dev: true
1540 | 
1541 |   /p-limit/2.3.0:
1542 |     resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==}
1543 |     engines: {node: '>=6'}
1544 |     dependencies:
1545 |       p-try: 2.2.0
1546 |     dev: true
1547 | 
1548 |   /p-locate/4.1.0:
1549 |     resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==}
1550 |     engines: {node: '>=8'}
1551 |     dependencies:
1552 |       p-limit: 2.3.0
1553 |     dev: true
1554 | 
1555 |   /p-try/2.2.0:
1556 |     resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==}
1557 |     engines: {node: '>=6'}
1558 |     dev: true
1559 | 
1560 |   /path-exists/4.0.0:
1561 |     resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
1562 |     engines: {node: '>=8'}
1563 |     dev: true
1564 | 
1565 |   /path-is-absolute/1.0.1:
1566 |     resolution: {integrity: sha1-F0uSaHNVNP+8es5r9TpanhtcX18=}
1567 |     engines: {node: '>=0.10.0'}
1568 |     dev: true
1569 | 
1570 |   /path-key/3.1.1:
1571 |     resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
1572 |     engines: {node: '>=8'}
1573 |     dev: true
1574 | 
1575 |   /path-key/4.0.0:
1576 |     resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==}
1577 |     engines: {node: '>=12'}
1578 |     dev: true
1579 | 
1580 |   /path-parse/1.0.7:
1581 |     resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
1582 |     dev: true
1583 | 
1584 |   /pathval/1.1.1:
1585 |     resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==}
1586 |     dev: true
1587 | 
1588 |   /pend/1.2.0:
1589 |     resolution: {integrity: sha1-elfrVQpng/kRUzH89GY9XI4AelA=}
1590 |     dev: true
1591 | 
1592 |   /picocolors/1.0.0:
1593 |     resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
1594 |     dev: true
1595 | 
1596 |   /picomatch/2.3.1:
1597 |     resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
1598 |     engines: {node: '>=8.6'}
1599 |     dev: true
1600 | 
1601 |   /pkg-dir/4.2.0:
1602 |     resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==}
1603 |     engines: {node: '>=8'}
1604 |     dependencies:
1605 |       find-up: 4.1.0
1606 |     dev: true
1607 | 
1608 |   /postcss/8.4.5:
1609 |     resolution: {integrity: sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==}
1610 |     engines: {node: ^10 || ^12 || >=14}
1611 |     dependencies:
1612 |       nanoid: 3.1.30
1613 |       picocolors: 1.0.0
1614 |       source-map-js: 1.0.1
1615 |     dev: true
1616 | 
1617 |   /pretty-format/27.4.2:
1618 |     resolution: {integrity: sha512-p0wNtJ9oLuvgOQDEIZ9zQjZffK7KtyR6Si0jnXULIDwrlNF8Cuir3AZP0hHv0jmKuNN/edOnbMjnzd4uTcmWiw==}
1619 |     engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
1620 |     dependencies:
1621 |       '@jest/types': 27.4.2
1622 |       ansi-regex: 5.0.1
1623 |       ansi-styles: 5.2.0
1624 |       react-is: 17.0.2
1625 |     dev: true
1626 | 
1627 |   /process-es6/0.11.6:
1628 |     resolution: {integrity: sha1-xrs4n5qVH4K9TrFpYAEFvS/5x3g=}
1629 |     dev: true
1630 | 
1631 |   /progress/2.0.3:
1632 |     resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==}
1633 |     engines: {node: '>=0.4.0'}
1634 |     dev: true
1635 | 
1636 |   /proxy-from-env/1.1.0:
1637 |     resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==}
1638 |     dev: true
1639 | 
1640 |   /pump/3.0.0:
1641 |     resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==}
1642 |     dependencies:
1643 |       end-of-stream: 1.4.4
1644 |       once: 1.4.0
1645 |     dev: true
1646 | 
1647 |   /puppeteer/13.0.1:
1648 |     resolution: {integrity: sha512-wqGIx59LzYqWhYcJQphMT+ux0sgatEUbjKG0lbjJxNVqVIT3ZC5m4Bvmq2gHE3qhb63EwS+rNkql08bm4BvO0A==}
1649 |     engines: {node: '>=10.18.1'}
1650 |     requiresBuild: true
1651 |     dependencies:
1652 |       debug: 4.3.2
1653 |       devtools-protocol: 0.0.937139
1654 |       extract-zip: 2.0.1
1655 |       https-proxy-agent: 5.0.0
1656 |       node-fetch: 2.6.5
1657 |       pkg-dir: 4.2.0
1658 |       progress: 2.0.3
1659 |       proxy-from-env: 1.1.0
1660 |       rimraf: 3.0.2
1661 |       tar-fs: 2.1.1
1662 |       unbzip2-stream: 1.4.3
1663 |       ws: 8.2.3
1664 |     transitivePeerDependencies:
1665 |       - bufferutil
1666 |       - supports-color
1667 |       - utf-8-validate
1668 |     dev: true
1669 | 
1670 |   /react-dom/17.0.2_react@17.0.2:
1671 |     resolution: {integrity: sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==}
1672 |     peerDependencies:
1673 |       react: 17.0.2
1674 |     dependencies:
1675 |       loose-envify: 1.4.0
1676 |       object-assign: 4.1.1
1677 |       react: 17.0.2
1678 |       scheduler: 0.20.2
1679 |     dev: true
1680 | 
1681 |   /react-error-boundary/3.1.4_react@17.0.2:
1682 |     resolution: {integrity: sha512-uM9uPzZJTF6wRQORmSrvOIgt4lJ9MC1sNgEOj2XGsDTRE4kmpWxg7ENK9EWNKJRMAOY9z0MuF4yIfl6gp4sotA==}
1683 |     engines: {node: '>=10', npm: '>=6'}
1684 |     peerDependencies:
1685 |       react: '>=16.13.1'
1686 |     dependencies:
1687 |       '@babel/runtime': 7.16.7
1688 |       react: 17.0.2
1689 |     dev: true
1690 | 
1691 |   /react-is/17.0.2:
1692 |     resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==}
1693 |     dev: true
1694 | 
1695 |   /react-refresh/0.11.0:
1696 |     resolution: {integrity: sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A==}
1697 |     engines: {node: '>=0.10.0'}
1698 |     dev: true
1699 | 
1700 |   /react-worker-components/0.1.0_react@17.0.2:
1701 |     resolution: {integrity: sha512-jq4E/pX/YyQ3WW2DTxSVmV53pAC2MtO38U2idzZ9N0tp2f6ZMJmzpUdZo0ku1nAFVSBnaycSsX1Vh5KEV9ecvA==}
1702 |     peerDependencies:
1703 |       react: '>=16.8.0'
1704 |     dependencies:
1705 |       react: 17.0.2
1706 | 
1707 |   /react/17.0.2:
1708 |     resolution: {integrity: sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==}
1709 |     engines: {node: '>=0.10.0'}
1710 |     dependencies:
1711 |       loose-envify: 1.4.0
1712 |       object-assign: 4.1.1
1713 |     dev: true
1714 | 
1715 |   /readable-stream/3.6.0:
1716 |     resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==}
1717 |     engines: {node: '>= 6'}
1718 |     dependencies:
1719 |       inherits: 2.0.4
1720 |       string_decoder: 1.3.0
1721 |       util-deprecate: 1.0.2
1722 |     dev: true
1723 | 
1724 |   /rechoir/0.6.2:
1725 |     resolution: {integrity: sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=}
1726 |     engines: {node: '>= 0.10'}
1727 |     dependencies:
1728 |       resolve: 1.21.0
1729 |     dev: true
1730 | 
1731 |   /redent/3.0.0:
1732 |     resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==}
1733 |     engines: {node: '>=8'}
1734 |     dependencies:
1735 |       indent-string: 4.0.0
1736 |       strip-indent: 3.0.0
1737 |     dev: true
1738 | 
1739 |   /regenerator-runtime/0.13.9:
1740 |     resolution: {integrity: sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==}
1741 |     dev: true
1742 | 
1743 |   /resolve/1.20.0:
1744 |     resolution: {integrity: sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==}
1745 |     dependencies:
1746 |       is-core-module: 2.8.0
1747 |       path-parse: 1.0.7
1748 |     dev: true
1749 | 
1750 |   /resolve/1.21.0:
1751 |     resolution: {integrity: sha512-3wCbTpk5WJlyE4mSOtDLhqQmGFi0/TD9VPwmiolnk8U0wRgMEktqCXd3vy5buTO3tljvalNvKrjHEfrd2WpEKA==}
1752 |     hasBin: true
1753 |     dependencies:
1754 |       is-core-module: 2.8.0
1755 |       path-parse: 1.0.7
1756 |       supports-preserve-symlinks-flag: 1.0.0
1757 |     dev: true
1758 | 
1759 |   /rimraf/3.0.2:
1760 |     resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
1761 |     hasBin: true
1762 |     dependencies:
1763 |       glob: 7.2.0
1764 |     dev: true
1765 | 
1766 |   /rollup-plugin-dts/4.1.0_rollup@2.52.2+typescript@4.5.4:
1767 |     resolution: {integrity: sha512-rriXIm3jdUiYeiAAd1Fv+x2AxK6Kq6IybB2Z/IdoAW95fb4uRUurYsEYKa8L1seedezDeJhy8cfo8FEL9aZzqg==}
1768 |     engines: {node: '>=v12.22.7'}
1769 |     peerDependencies:
1770 |       rollup: ^2.55
1771 |       typescript: ~4.1 || ~4.2 || ~4.3 || ~4.4 || ~4.5
1772 |     dependencies:
1773 |       magic-string: 0.25.7
1774 |       rollup: 2.52.2
1775 |       typescript: 4.5.4
1776 |     optionalDependencies:
1777 |       '@babel/code-frame': 7.16.7
1778 |     dev: true
1779 | 
1780 |   /rollup-plugin-esbuild/4.8.2_rollup@2.52.2:
1781 |     resolution: {integrity: sha512-wsaYNOjzTb6dN1qCIZsMZ7Q0LWiPJklYs2TDI8vJA2LUbvtPUY+17TC8C0vSat3jPMInfR9XWKdA7ttuwkjsGQ==}
1782 |     engines: {node: '>=12'}
1783 |     peerDependencies:
1784 |       esbuild: '>=0.10.1'
1785 |       rollup: ^1.20.0 || ^2.0.0
1786 |     dependencies:
1787 |       '@rollup/pluginutils': 4.1.2
1788 |       debug: 4.3.3
1789 |       es-module-lexer: 0.9.3
1790 |       joycon: 3.1.1
1791 |       jsonc-parser: 3.0.0
1792 |       rollup: 2.52.2
1793 |     transitivePeerDependencies:
1794 |       - supports-color
1795 |     dev: true
1796 | 
1797 |   /rollup/2.52.2:
1798 |     resolution: {integrity: sha512-4RlFC3k2BIHlUsJ9mGd8OO+9Lm2eDF5P7+6DNQOp5sx+7N/1tFM01kELfbxlMX3MxT6owvLB1ln4S3QvvQlbUA==}
1799 |     engines: {node: '>=10.0.0'}
1800 |     hasBin: true
1801 |     optionalDependencies:
1802 |       fsevents: 2.3.2
1803 |     dev: true
1804 | 
1805 |   /rollup/2.61.1:
1806 |     resolution: {integrity: sha512-BbTXlEvB8d+XFbK/7E5doIcRtxWPRiqr0eb5vQ0+2paMM04Ye4PZY5nHOQef2ix24l/L0SpLd5hwcH15QHPdvA==}
1807 |     engines: {node: '>=10.0.0'}
1808 |     hasBin: true
1809 |     optionalDependencies:
1810 |       fsevents: 2.3.2
1811 |     dev: true
1812 | 
1813 |   /rollup/2.63.0:
1814 |     resolution: {integrity: sha512-nps0idjmD+NXl6OREfyYXMn/dar3WGcyKn+KBzPdaLecub3x/LrId0wUcthcr8oZUAcZAR8NKcfGGFlNgGL1kQ==}
1815 |     engines: {node: '>=10.0.0'}
1816 |     hasBin: true
1817 |     optionalDependencies:
1818 |       fsevents: 2.3.2
1819 |     dev: true
1820 | 
1821 |   /safe-buffer/5.1.2:
1822 |     resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==}
1823 |     dev: true
1824 | 
1825 |   /safe-buffer/5.2.1:
1826 |     resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
1827 |     dev: true
1828 | 
1829 |   /scheduler/0.20.2:
1830 |     resolution: {integrity: sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==}
1831 |     dependencies:
1832 |       loose-envify: 1.4.0
1833 |       object-assign: 4.1.1
1834 |     dev: true
1835 | 
1836 |   /semver/6.3.0:
1837 |     resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==}
1838 |     hasBin: true
1839 |     dev: true
1840 | 
1841 |   /semver/7.3.5:
1842 |     resolution: {integrity: sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==}
1843 |     engines: {node: '>=10'}
1844 |     hasBin: true
1845 |     dependencies:
1846 |       lru-cache: 6.0.0
1847 |     dev: true
1848 | 
1849 |   /shebang-command/2.0.0:
1850 |     resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
1851 |     engines: {node: '>=8'}
1852 |     dependencies:
1853 |       shebang-regex: 3.0.0
1854 |     dev: true
1855 | 
1856 |   /shebang-regex/3.0.0:
1857 |     resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
1858 |     engines: {node: '>=8'}
1859 |     dev: true
1860 | 
1861 |   /shell-exec/1.0.2:
1862 |     resolution: {integrity: sha512-jyVd+kU2X+mWKMmGhx4fpWbPsjvD53k9ivqetutVW/BQ+WIZoDoP4d8vUMGezV6saZsiNoW2f9GIhg9Dondohg==}
1863 |     dev: true
1864 | 
1865 |   /shelljs/0.8.4:
1866 |     resolution: {integrity: sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ==}
1867 |     engines: {node: '>=4'}
1868 |     hasBin: true
1869 |     dependencies:
1870 |       glob: 7.2.0
1871 |       interpret: 1.4.0
1872 |       rechoir: 0.6.2
1873 |     dev: true
1874 | 
1875 |   /signal-exit/3.0.6:
1876 |     resolution: {integrity: sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==}
1877 |     dev: true
1878 | 
1879 |   /sirv/2.0.2:
1880 |     resolution: {integrity: sha512-4Qog6aE29nIjAOKe/wowFTxOdmbEZKb+3tsLljaBRzJwtqto0BChD2zzH0LhgCSXiI+V7X+Y45v14wBZQ1TK3w==}
1881 |     engines: {node: '>= 10'}
1882 |     dependencies:
1883 |       '@polka/url': 1.0.0-next.21
1884 |       mrmime: 1.0.0
1885 |       totalist: 3.0.0
1886 |     dev: true
1887 | 
1888 |   /slash/3.0.0:
1889 |     resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
1890 |     engines: {node: '>=8'}
1891 |     dev: true
1892 | 
1893 |   /source-map-js/1.0.1:
1894 |     resolution: {integrity: sha512-4+TN2b3tqOCd/kaGRJ/sTYA0tR0mdXx26ipdolxcwtJVqEnqNYvlCAt1q3ypy4QMlYus+Zh34RNtYLoq2oQ4IA==}
1895 |     engines: {node: '>=0.10.0'}
1896 |     dev: true
1897 | 
1898 |   /source-map-resolve/0.6.0:
1899 |     resolution: {integrity: sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==}
1900 |     dependencies:
1901 |       atob: 2.1.2
1902 |       decode-uri-component: 0.2.0
1903 |     dev: true
1904 | 
1905 |   /source-map/0.5.7:
1906 |     resolution: {integrity: sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=}
1907 |     engines: {node: '>=0.10.0'}
1908 |     dev: true
1909 | 
1910 |   /source-map/0.6.1:
1911 |     resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
1912 |     engines: {node: '>=0.10.0'}
1913 |     requiresBuild: true
1914 |     dev: true
1915 | 
1916 |   /sourcemap-codec/1.4.8:
1917 |     resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==}
1918 |     dev: true
1919 | 
1920 |   /string_decoder/1.3.0:
1921 |     resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
1922 |     dependencies:
1923 |       safe-buffer: 5.2.1
1924 |     dev: true
1925 | 
1926 |   /strip-final-newline/3.0.0:
1927 |     resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==}
1928 |     engines: {node: '>=12'}
1929 |     dev: true
1930 | 
1931 |   /strip-indent/3.0.0:
1932 |     resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==}
1933 |     engines: {node: '>=8'}
1934 |     dependencies:
1935 |       min-indent: 1.0.1
1936 |     dev: true
1937 | 
1938 |   /supports-color/5.5.0:
1939 |     resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
1940 |     engines: {node: '>=4'}
1941 |     dependencies:
1942 |       has-flag: 3.0.0
1943 |     dev: true
1944 | 
1945 |   /supports-color/7.2.0:
1946 |     resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
1947 |     engines: {node: '>=8'}
1948 |     dependencies:
1949 |       has-flag: 4.0.0
1950 |     dev: true
1951 | 
1952 |   /supports-preserve-symlinks-flag/1.0.0:
1953 |     resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
1954 |     engines: {node: '>= 0.4'}
1955 |     dev: true
1956 | 
1957 |   /tar-fs/2.1.1:
1958 |     resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==}
1959 |     dependencies:
1960 |       chownr: 1.1.4
1961 |       mkdirp-classic: 0.5.3
1962 |       pump: 3.0.0
1963 |       tar-stream: 2.2.0
1964 |     dev: true
1965 | 
1966 |   /tar-stream/2.2.0:
1967 |     resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==}
1968 |     engines: {node: '>=6'}
1969 |     dependencies:
1970 |       bl: 4.1.0
1971 |       end-of-stream: 1.4.4
1972 |       fs-constants: 1.0.0
1973 |       inherits: 2.0.4
1974 |       readable-stream: 3.6.0
1975 |     dev: true
1976 | 
1977 |   /through/2.3.8:
1978 |     resolution: {integrity: sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=}
1979 |     dev: true
1980 | 
1981 |   /tinypool/0.0.6:
1982 |     resolution: {integrity: sha512-E9vY6eq/Q7fUlSt69cY3y7qXNbVOFaxP+lAEDMKMObLrmO0MmEdUPyjOMgepoMDw/ps/sazl7WIQglnUrunnLg==}
1983 |     engines: {node: '>=14.0.0'}
1984 |     dev: true
1985 | 
1986 |   /tinyspy/0.2.7:
1987 |     resolution: {integrity: sha512-AaNITSED8/2j2/nSgPeQZW2nNhdTxNJ7XwcdBezI7MtPS2C+pJ1HjcHc/qfDhohUhQvODITdxzWH9u+Qs+7yFQ==}
1988 |     engines: {node: '>=14.0.0'}
1989 |     dev: true
1990 | 
1991 |   /to-fast-properties/2.0.0:
1992 |     resolution: {integrity: sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=}
1993 |     engines: {node: '>=4'}
1994 |     dev: true
1995 | 
1996 |   /totalist/3.0.0:
1997 |     resolution: {integrity: sha512-eM+pCBxXO/njtF7vdFsHuqb+ElbxqtI4r5EAvk6grfAFyJ6IvWlSkfZ5T9ozC6xWw3Fj1fGoSmrl0gUs46JVIw==}
1998 |     engines: {node: '>=6'}
1999 |     dev: true
2000 | 
2001 |   /tr46/0.0.3:
2002 |     resolution: {integrity: sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=}
2003 |     dev: true
2004 | 
2005 |   /type-detect/4.0.8:
2006 |     resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==}
2007 |     engines: {node: '>=4'}
2008 |     dev: true
2009 | 
2010 |   /typescript/4.5.4:
2011 |     resolution: {integrity: sha512-VgYs2A2QIRuGphtzFV7aQJduJ2gyfTljngLzjpfW9FoYZF6xuw1W0vW9ghCKLfcWrCFxK81CSGRAvS1pn4fIUg==}
2012 |     engines: {node: '>=4.2.0'}
2013 |     hasBin: true
2014 |     dev: true
2015 | 
2016 |   /ufo/0.7.9:
2017 |     resolution: {integrity: sha512-6t9LrLk3FhqTS+GW3IqlITtfRB5JAVr5MMNjpBECfK827W+Vh5Ilw/LhTcHWrt6b3hkeBvcbjx4Ti7QVFzmcww==}
2018 |     dev: true
2019 | 
2020 |   /unbzip2-stream/1.4.3:
2021 |     resolution: {integrity: sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==}
2022 |     dependencies:
2023 |       buffer: 5.7.1
2024 |       through: 2.3.8
2025 |     dev: true
2026 | 
2027 |   /util-deprecate/1.0.2:
2028 |     resolution: {integrity: sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=}
2029 |     dev: true
2030 | 
2031 |   /utility-types/3.10.0:
2032 |     resolution: {integrity: sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg==}
2033 |     engines: {node: '>= 4'}
2034 |     dev: true
2035 | 
2036 |   /vite-plugin-inspect/0.3.13_vite@2.7.10:
2037 |     resolution: {integrity: sha512-Naie3Rx/0IbmQSknfQPVrvWKiar7fCu50u+uLcUgt54yX0espduLDnI8IEtOYlsCA4gHs93IYKtxFDTxAThmYw==}
2038 |     engines: {node: '>=14'}
2039 |     peerDependencies:
2040 |       vite: ^2.0.0
2041 |     dependencies:
2042 |       '@rollup/pluginutils': 4.1.2
2043 |       debug: 4.3.3
2044 |       kolorist: 1.5.1
2045 |       sirv: 2.0.2
2046 |       ufo: 0.7.9
2047 |       vite: 2.7.10
2048 |     transitivePeerDependencies:
2049 |       - supports-color
2050 |     dev: true
2051 | 
2052 |   /vite/2.7.0:
2053 |     resolution: {integrity: sha512-ZM629j9n6f1Gcr2KsfpLhJ0FRkift4SsTLSvExmNpGJYzyi1JyLOFybz85ShqFP5f4oCfJSblWAma9X8lZg/vA==}
2054 |     engines: {node: '>=12.2.0'}
2055 |     hasBin: true
2056 |     peerDependencies:
2057 |       less: '*'
2058 |       sass: '*'
2059 |       stylus: '*'
2060 |     peerDependenciesMeta:
2061 |       less:
2062 |         optional: true
2063 |       sass:
2064 |         optional: true
2065 |       stylus:
2066 |         optional: true
2067 |     dependencies:
2068 |       esbuild: 0.13.15
2069 |       postcss: 8.4.5
2070 |       resolve: 1.20.0
2071 |       rollup: 2.61.1
2072 |     optionalDependencies:
2073 |       fsevents: 2.3.2
2074 |     dev: true
2075 | 
2076 |   /vite/2.7.10:
2077 |     resolution: {integrity: sha512-KEY96ntXUid1/xJihJbgmLZx7QSC2D4Tui0FdS0Old5OokYzFclcofhtxtjDdGOk/fFpPbHv9yw88+rB93Tb8w==}
2078 |     engines: {node: '>=12.2.0'}
2079 |     hasBin: true
2080 |     peerDependencies:
2081 |       less: '*'
2082 |       sass: '*'
2083 |       stylus: '*'
2084 |     peerDependenciesMeta:
2085 |       less:
2086 |         optional: true
2087 |       sass:
2088 |         optional: true
2089 |       stylus:
2090 |         optional: true
2091 |     dependencies:
2092 |       esbuild: 0.13.15
2093 |       postcss: 8.4.5
2094 |       resolve: 1.21.0
2095 |       rollup: 2.63.0
2096 |     optionalDependencies:
2097 |       fsevents: 2.3.2
2098 |     dev: true
2099 | 
2100 |   /vitest/0.0.118_vite@2.7.10:
2101 |     resolution: {integrity: sha512-2zBpowIaVAMPFB+/DkHFpt63QNXMz737dKTpLtC2t4RNUfLS4n+KKg14nFexj5VlhMf4ntSkrvDHnrE+6gFTmg==}
2102 |     engines: {node: '>=14.14.0'}
2103 |     hasBin: true
2104 |     peerDependencies:
2105 |       c8: '*'
2106 |       happy-dom: '*'
2107 |       jsdom: '*'
2108 |       vite: ^2.7.1
2109 |     peerDependenciesMeta:
2110 |       c8:
2111 |         optional: true
2112 |       happy-dom:
2113 |         optional: true
2114 |       jsdom:
2115 |         optional: true
2116 |     dependencies:
2117 |       '@types/chai': 4.3.0
2118 |       '@types/chai-subset': 1.3.3
2119 |       chai: 4.3.4
2120 |       local-pkg: 0.4.0
2121 |       tinypool: 0.0.6
2122 |       tinyspy: 0.2.7
2123 |       vite: 2.7.10
2124 |     dev: true
2125 | 
2126 |   /webidl-conversions/3.0.1:
2127 |     resolution: {integrity: sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=}
2128 |     dev: true
2129 | 
2130 |   /whatwg-url/5.0.0:
2131 |     resolution: {integrity: sha1-lmRU6HZUYuN2RNNib2dCzotwll0=}
2132 |     dependencies:
2133 |       tr46: 0.0.3
2134 |       webidl-conversions: 3.0.1
2135 |     dev: true
2136 | 
2137 |   /which/2.0.2:
2138 |     resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
2139 |     engines: {node: '>= 8'}
2140 |     hasBin: true
2141 |     dependencies:
2142 |       isexe: 2.0.0
2143 |     dev: true
2144 | 
2145 |   /wrappy/1.0.2:
2146 |     resolution: {integrity: sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=}
2147 |     dev: true
2148 | 
2149 |   /ws/8.2.3:
2150 |     resolution: {integrity: sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==}
2151 |     engines: {node: '>=10.0.0'}
2152 |     peerDependencies:
2153 |       bufferutil: ^4.0.1
2154 |       utf-8-validate: ^5.0.2
2155 |     peerDependenciesMeta:
2156 |       bufferutil:
2157 |         optional: true
2158 |       utf-8-validate:
2159 |         optional: true
2160 |     dev: true
2161 | 
2162 |   /yallist/4.0.0:
2163 |     resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
2164 |     dev: true
2165 | 
2166 |   /yauzl/2.10.0:
2167 |     resolution: {integrity: sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=}
2168 |     dependencies:
2169 |       buffer-crc32: 0.2.13
2170 |       fd-slicer: 1.1.0
2171 |     dev: true
2172 | 
--------------------------------------------------------------------------------
/pnpm-workspace.yaml:
--------------------------------------------------------------------------------
1 | packages:
2 |   - plugin/
3 |   - test/*
4 | 
--------------------------------------------------------------------------------
/test/utils.ts:
--------------------------------------------------------------------------------
 1 | export const sleep = (ms: number) => new Promise(resolve => setTimeout(resolve, ms));
 2 | 
 3 | export async function autoRetry(
 4 |   test: () => void | Promise
 5 | ): Promise {
 6 |   const period = 100;
 7 |   const numberOfTries = 30_000 / period;
 8 |   let i = 0;
 9 |   while (true) {
10 |     try {
11 |       await test();
12 |       return;
13 |     } catch (err) {
14 |       i = i + 1;
15 |       if (i > numberOfTries) {
16 |         throw err;
17 |       }
18 |     }
19 |     await sleep(period);
20 |   }
21 | }
22 | 
--------------------------------------------------------------------------------
/test/vite/App.tsx:
--------------------------------------------------------------------------------
 1 | import React from "react";
 2 | 
 3 | import { Hello, Hey as Hey1 } from "./Hello.worker";
 4 | import { Suspense, useState } from "react";
 5 | import { TextBox } from "./TextBox";
 6 | 
 7 | function App() {
 8 |   const [count, setCount] = useState(40);
 9 |   return (
10 |     
11 |       
Workers 
12 |       Count: {count} 
13 |        setCount(count + 1)}>
14 |         +1
15 |        
16 |        setCount((c) => c - 1)}
20 |       >
21 |         -1
22 |        
23 | 
24 |       Loading... }>
25 |         Loading...}>
28 |         
29 |            
31 |        
32 |     
33 |   );
34 | }
35 | 
36 | export default App;
37 | 
--------------------------------------------------------------------------------
/test/vite/Hello.worker.tsx:
--------------------------------------------------------------------------------
 1 | import React from "react";
 2 | 
 3 | // import { expose } from "react-worker-components";
 4 | 
 5 | import { TextBox } from "./TextBox";
 6 | 
 7 | const fib = (i: number): number => {
 8 |   const result = i <= 1 ? i : fib(i - 1) + fib(i - 2);
 9 |   return result;
10 | };
11 | 
12 | export const Hello: React.FC<{ count: number }> = ({ count, children }) => {
13 |   const fibNum = fib(count);
14 | 
15 |   return (
16 |     
17 |       
Hello from worker: {fibNum}
18 |       
Main TextBox 
19 |       {children}
20 |       
Worker TextBox 
21 |       
22 |     
29 |       
Hey from worker 
30 |     
31 |   );
32 | };
33 | 
34 | // expose(Hello);
35 | 
--------------------------------------------------------------------------------
/test/vite/TextBox.tsx:
--------------------------------------------------------------------------------
 1 | import React, { useState } from 'react';
 2 | 
 3 | export const TextBox = () => {
 4 |   const [text, setText] = useState('');
 5 |   return (
 6 |     
 7 |       Text: {text} 
 8 |       
10 |   );
11 | };
12 | 
13 | 
--------------------------------------------------------------------------------
/test/vite/basic.test.tsx:
--------------------------------------------------------------------------------
 1 | import { afterAll, beforeAll, describe, expect, test } from "vitest";
 2 | import { createServer, build, preview } from "vite";
 3 | import type { PreviewServer } from "vite";
 4 | import puppeteer from "puppeteer";
 5 | import type { Browser, Page } from "puppeteer";
 6 | import { autoRetry } from "../utils";
 7 | 
 8 | const url = "http://localhost:3000";
 9 | 
10 | describe("basic", async () => {
11 |   let server: PreviewServer;
12 |   let browser: Browser;
13 |   let page: Page;
14 | 
15 |   beforeAll(async () => {
16 |     if (process.env.PREVIEW) {
17 |       await build({
18 |         root: process.cwd(),
19 |       });
20 | 
21 |       server = await preview({
22 |         preview: { port: 3000 },
23 |         root: process.cwd(),
24 |       });
25 |     } else if (process.env.DEV) {
26 |       server = await createServer({
27 |         preview: { port: 3000 },
28 |         root: process.cwd(),
29 |         mode: "dev",
30 |       });
31 |       server.httpServer.listen(3000);
32 |     }
33 | 
34 |     browser = await puppeteer.launch();
35 |     page = await browser.newPage();
36 |   });
37 | 
38 |   afterAll(async () => {
39 |     await browser.close();
40 |     server.httpServer.close();
41 |   });
42 | 
43 |   it("basic render", async () => {
44 |     await page.goto(url);
45 |     expect(await page.content()).toContain("Workers");
46 |     expect(await page.content()).toContain("Loading");
47 |     await autoRetry(async () => {
48 |       expect(await page.content()).toContain("102334155");
49 |     });
50 | 
51 |     await page.click("#increment");
52 |     expect(await page.content()).toContain("Loading");
53 |     await autoRetry(async () => {
54 |       expect(await page.content()).toContain("165580141");
55 |     });
56 |   });
57 | });
58 | 
--------------------------------------------------------------------------------
/test/vite/index.html:
--------------------------------------------------------------------------------
 1 | 
 2 | 
 3 |   
 4 |     Vite App 
 8 |   
 9 |   
10 |     
11 |     
12 |   
13 | 
14 | 
--------------------------------------------------------------------------------
/test/vite/main.tsx:
--------------------------------------------------------------------------------
 1 | import React from 'react'
 2 | import ReactDOM from 'react-dom'
 3 | import App from './App'
 4 | 
 5 | ReactDOM.render(
 6 |   
 7 |      ,
 9 |   document.getElementById('root')
10 | )
11 | 
--------------------------------------------------------------------------------
/test/vite/package.json:
--------------------------------------------------------------------------------
 1 | {
 2 |   "type": "module",
 3 |   "scripts": {
 4 |     "start": "vite",
 5 |     "test:dev": "cross-env DEV=true vitest",
 6 |     "test:preview": "cross-env PREVIEW=true vitest",
 7 |     "test": "pnpm test:dev && pnpm test:dev"
 8 |   },
 9 |   "dependencies": {
10 |     "mime": "^3.0.0",
11 |     "react-worker-components-plugin": "workspace:^0.0.0"
12 |   },
13 |   "devDependencies": {
14 |     "vite-plugin-inspect": "^0.3.13"
15 |   }
16 | }
17 | 
--------------------------------------------------------------------------------
/test/vite/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 |   "extends": "../../tsconfig.json",
3 |   "include": ["./**/*.ts"],
4 |   "exclude": ["./dist"]
5 | }
6 | 
--------------------------------------------------------------------------------
/test/vite/vite.config.ts:
--------------------------------------------------------------------------------
 1 | ///