├── src
├── preact.d.ts
├── vite-env.d.ts
├── worker.ts
└── main.tsx
├── .gitignore
├── README.md
├── vite.config.ts
├── package.json
├── tsconfig.json
├── index.html
└── pnpm-lock.yaml
/src/preact.d.ts:
--------------------------------------------------------------------------------
1 | import JSX = preact.JSX;
2 |
--------------------------------------------------------------------------------
/src/vite-env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | .DS_Store
3 | dist
4 | dist-ssr
5 | *.local
6 |
7 | # Local Netlify folder
8 | .netlify
9 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # ShakerPhobia
2 |
3 | Bundle Size checker with treeshake on Browser.
4 |
5 | https://shakerphobia.netlify.app/
6 |
7 | ## LICENSE
8 |
9 | MIT
--------------------------------------------------------------------------------
/vite.config.ts:
--------------------------------------------------------------------------------
1 | import { defineConfig } from "vite";
2 | import preact from "@preact/preset-vite";
3 |
4 | // https://vitejs.dev/config/
5 | export default defineConfig({
6 | plugins: [preact()],
7 | resolve: {
8 | alias: {
9 | path: "path-browserify",
10 | },
11 | },
12 | });
13 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "esphobia",
3 | "version": "0.0.0",
4 | "scripts": {
5 | "dev": "vite",
6 | "build": "tsc && vite build",
7 | "serve": "vite preview"
8 | },
9 | "dependencies": {
10 | "comlink": "^4.3.1",
11 | "path-browserify": "^1.0.1",
12 | "preact": "^10.5.13"
13 | },
14 | "devDependencies": {
15 | "@preact/preset-vite": "^2.0.0",
16 | "@rollup/plugin-virtual": "^2.1.0",
17 | "@types/node": "^17.0.22",
18 | "rollup": "^2.70.1",
19 | "terser": "^5.12.1",
20 | "typescript": "^4.3.2",
21 | "vite": "^2.6.4"
22 | }
23 | }
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "ESNext",
4 | "useDefineForClassFields": true,
5 | "lib": ["DOM", "DOM.Iterable", "ESNext"],
6 | "allowJs": false,
7 | "skipLibCheck": false,
8 | "esModuleInterop": false,
9 | "allowSyntheticDefaultImports": true,
10 | "strict": true,
11 | "forceConsistentCasingInFileNames": true,
12 | "module": "ESNext",
13 | "moduleResolution": "Node",
14 | "resolveJsonModule": true,
15 | "isolatedModules": true,
16 | "noEmit": true,
17 | "jsx": "preserve",
18 | "jsxFactory": "h",
19 | "jsxFragmentFactory": "Fragment"
20 | },
21 | "include": ["src"]
22 | }
23 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
15 |
16 |
17 |
19 | Shakerphobia
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/src/worker.ts:
--------------------------------------------------------------------------------
1 | import { minify } from "terser";
2 | import { rollup } from "rollup";
3 | import { expose } from "comlink";
4 | import { Plugin } from "rollup";
5 | import path from "path";
6 |
7 | export type CompileResult = {
8 | error: false;
9 | input: string;
10 | code: string;
11 | size: number;
12 | gzipSize: number;
13 | } | {
14 | error: true;
15 | reason: string;
16 | };
17 |
18 | declare const CompressionStream: any;
19 | const encoder = new TextEncoder();
20 |
21 | async function compress(str: string): Promise {
22 | const cs = new CompressionStream("gzip");
23 | const buf = encoder.encode(str);
24 | const stream = new Response(buf).body!.pipeThrough(cs);
25 | return new Response(stream as any).arrayBuffer();
26 | }
27 |
28 | const api = {
29 | async compile(
30 | pkgName: string,
31 | imports: string[] | undefined,
32 | ): Promise {
33 | const importsString = imports?.join(",");
34 | const input = imports?.length
35 | ? `import {${importsString}} from "${pkgName}";\nconsole.log(${importsString})`
36 | : `import x from "${pkgName}";console.log(x)`;
37 |
38 | try {
39 | const bundle = await rollup({
40 | input: "entry.js",
41 | plugins: [
42 | {
43 | name: "entry",
44 | resolveId(id, importer) {
45 | if (importer == null) {
46 | return "entry.js";
47 | }
48 | },
49 | load(id) {
50 | if (id === "entry.js") {
51 | return input;
52 | }
53 | },
54 | },
55 | httpResolve(),
56 | ],
57 | });
58 | const generated = await bundle.generate({
59 | format: "es",
60 | });
61 | const main = generated.output[0].code;
62 | const minified = await minify(main, { module: true });
63 | const gzipped = await compress(minified.code!);
64 | return {
65 | error: false,
66 | input,
67 | code: minified.code!,
68 | size: minified.code!.length,
69 | gzipSize: gzipped.byteLength,
70 | };
71 | } catch (e) {
72 | return {
73 | error: true,
74 | reason: e instanceof Error ? e.message : JSON.stringify(e),
75 | };
76 | }
77 | },
78 | };
79 |
80 | export type Api = typeof api;
81 |
82 | expose(api);
83 |
84 | // http-resolve
85 | function isHttpProtocol(id: string | undefined | null) {
86 | return id?.startsWith("https://");
87 | }
88 |
89 | const DEBUG = true;
90 | const log = (...args: any) => DEBUG && console.log(...args);
91 |
92 | type HttpResolveOptions = {
93 | cache?: any;
94 | fetcher?: (url: string) => Promise;
95 | onRequest?: (url: string) => void;
96 | onUseCache?: (url: string) => void;
97 | };
98 | const defaultCache = new Map();
99 |
100 | const httpResolve = function httpResolve_({
101 | cache = defaultCache,
102 | onRequest,
103 | onUseCache,
104 | fetcher,
105 | }: HttpResolveOptions = {}) {
106 | return {
107 | name: "http-resolve",
108 | async resolveId(id: string, importer: string) {
109 | if (isHttpProtocol(id)) {
110 | return id;
111 | }
112 | log("[http-resolve:resolveId:enter]", id, "from", importer);
113 | // on network resolve
114 | if (importer && isHttpProtocol(importer)) {
115 | log("[http-resolve:resolveId:target]", id, "from", importer);
116 | if (id.startsWith("https://")) {
117 | log("[http-reslove:end] return with https", id);
118 | return id;
119 | }
120 | const { pathname, protocol, host } = new URL(importer);
121 | if (id.startsWith("/")) {
122 | log(
123 | "[http-reslove:end] return with host root",
124 | `${protocol}//${host}${id}`,
125 | );
126 | return `${protocol}//${host}${id}`;
127 | } else if (id.startsWith(".") || id === "entry.js") {
128 | // pattern: ./xxx/yyy in https://esm.sh
129 | const resolvedPathname = path.join(path.dirname(pathname), id);
130 | const newId = `${protocol}//${host}${resolvedPathname}`;
131 | log("[http-resolve:end] return with relativePath", newId);
132 | return newId;
133 | }
134 | }
135 | },
136 | async load(id: string) {
137 | log("[http-resolve:load]", id);
138 | if (id === null) {
139 | return;
140 | }
141 | if (isHttpProtocol(id)) {
142 | const cached = await cache.get(id);
143 | if (cached) {
144 | onUseCache?.(id);
145 | return cached;
146 | }
147 | onRequest?.(id);
148 | if (fetcher) {
149 | const code = await fetcher(id);
150 | await cache.set(id, code);
151 | return code;
152 | } else {
153 | const res = await fetch(id);
154 | if (!res.ok) {
155 | throw res.statusText;
156 | }
157 | const code = await res.text();
158 | await cache.set(id, code);
159 | return code;
160 | }
161 | }
162 | },
163 | } as Plugin;
164 | };
165 |
--------------------------------------------------------------------------------
/src/main.tsx:
--------------------------------------------------------------------------------
1 | import type { Api, CompileResult } from "./worker";
2 | import { render } from "preact";
3 | import { useEffect, useState } from "preact/hooks";
4 | import { wrap } from "comlink";
5 |
6 | const worker = new Worker(new URL("./worker.ts", import.meta.url), {
7 | type: "module",
8 | });
9 | const api = wrap(worker);
10 |
11 | type Query = {
12 | pkg?: string;
13 | imports?: string;
14 | };
15 |
16 | function Reporter(props: { query: Query }) {
17 | const [error, setError] = useState<{ reason: string } | null>(null);
18 | const [result, setResult] = useState(null);
19 |
20 | useEffect(() => {
21 | (async () => {
22 | const imports = props.query.imports
23 | ? props.query.imports.split(",")
24 | : undefined;
25 | try {
26 | const ret = await api.compile(
27 | `https://cdn.skypack.dev/${props.query.pkg}`,
28 | imports,
29 | );
30 | if (!ret.error && ret.code.includes("[Package Error]")) {
31 | setError({ reason: ret.code });
32 | }
33 | setResult(ret);
34 | } catch (err) {
35 | setError({ reason: "compile error" });
36 | }
37 | })();
38 | }, [props.query]);
39 |
40 | if (error) {
41 | return
42 | BundleError
43 |
44 |
45 | {error.reason}
46 |
47 |
48 |
;
49 | }
50 | if (!result) {
51 | return bundling...
;
52 | }
53 | if (result.error) {
54 | return CompileError: {result.reason}
;
55 | }
56 | return (
57 |
58 |
59 | {bytesToSize(result.size)} - gzip: {bytesToSize(result.gzipSize)}
60 |
61 |
62 |
63 | Output
64 |
72 |
73 | {result.code}
74 |
75 |
76 |
77 |
78 |
79 | );
80 | }
81 |
82 | function SearchForm(props: { pkg: string, imports: string, onChangePkg: (pkg: string) => void, onChangeImports: (imports: string) => void }) {
83 | return (
84 |
135 | );
136 | }
137 |
138 | function TopPage() {
139 | return (
140 |
141 |
What's this
142 |
143 | This is a tool to check bundle size with treeshake. It downloads sources
144 | from cdn.skpack.dev {" "}
145 | and build with rollup and terser in your browser .
146 |
147 |
148 | Open to bundle:{" "}
149 |
150 | {`https://shakerphobia.netlify.com/?pkg=&imports=`}
151 | .
152 |
153 |
Examples
154 |
155 |
156 | {[
157 | {
158 | pkg: "preact",
159 | imports: ["render", "h"],
160 | },
161 | {
162 | pkg: "react-dom@18.0.0",
163 | imports: ["hydrate"],
164 | },
165 | {
166 | pkg: "@mizchi/mints",
167 | imports: ["transformSync"],
168 | },
169 | ].map((t) => {
170 | const url = `${location.protocol}//${location.host}/?pkg=${t.pkg}${
171 | t.imports ? `&imports=${t.imports.join(",")}` : ""
172 | }`;
173 | return (
174 |
175 |
176 | {url}
177 |
178 |
179 | );
180 | })}
181 |
182 |
183 |
184 | );
185 | }
186 |
187 | function App() {
188 | const [error, setError] = useState<{ reason: string } | null>(null);
189 | const [isTop, setIsTop] = useState(false);
190 | const [query, setQuery] = useState(null);
191 | useEffect(() => {
192 | if (!location.search) {
193 | setIsTop(true);
194 | return;
195 | }
196 | const query: Query = location.search.slice(1).split("&").reduce(
197 | (acc, cur) => {
198 | const [key, val] = cur.split("=");
199 | return { ...acc, [decodeURIComponent(key)]: decodeURIComponent(val) };
200 | },
201 | {},
202 | );
203 | // console.log(query);
204 |
205 | if (query.pkg) {
206 | if (query.pkg && /[a-zA-Z@][a-zA-Z-_\d\/\@]+/.test(query.pkg)) {
207 | setQuery(query);
208 | const pkg = document.querySelector("[name=pkg]") as HTMLInputElement;
209 | if (pkg) {
210 | pkg.value = query.pkg;
211 | }
212 | const imports = document.querySelector("[name=imports]") as HTMLInputElement;
213 | if (imports) {
214 | imports.value = query.imports ?? '';
215 | }
216 | } else {
217 | setError({ reason: "Invalid pkgName" });
218 | }
219 | } else {
220 | setIsTop(true);
221 | }
222 | }, []);
223 | return (
224 |
225 |
244 |
245 |
246 | {query && }
247 |
248 |
249 | {error && (
250 |
251 | {error.reason}
252 |
253 | )}
254 | {isTop &&
}
255 |
256 | );
257 | }
258 |
259 | render( , document.getElementById("app")!);
260 |
261 | function bytesToSize(bytes: number, decimals = 2) {
262 | if (bytes === 0) return "0 Bytes";
263 |
264 | const k = 1024;
265 | const dm = decimals < 0 ? 0 : decimals;
266 | const sizes = ["bytes", "kb", "MB", "GB"];
267 | const i = Math.floor(Math.log(bytes) / Math.log(k));
268 | return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + " " + sizes[i];
269 | }
270 |
--------------------------------------------------------------------------------
/pnpm-lock.yaml:
--------------------------------------------------------------------------------
1 | lockfileVersion: 5.3
2 |
3 | specifiers:
4 | '@preact/preset-vite': ^2.0.0
5 | '@rollup/plugin-virtual': ^2.1.0
6 | '@types/node': ^17.0.22
7 | comlink: ^4.3.1
8 | path-browserify: ^1.0.1
9 | preact: ^10.5.13
10 | rollup: ^2.70.1
11 | terser: ^5.12.1
12 | typescript: ^4.3.2
13 | vite: ^2.6.4
14 |
15 | dependencies:
16 | comlink: 4.3.1
17 | path-browserify: 1.0.1
18 | preact: 10.6.6
19 |
20 | devDependencies:
21 | '@preact/preset-vite': 2.1.7_preact@10.6.6+vite@2.8.6
22 | '@rollup/plugin-virtual': 2.1.0_rollup@2.70.1
23 | '@types/node': 17.0.22
24 | rollup: 2.70.1
25 | terser: 5.12.1
26 | typescript: 4.6.2
27 | vite: 2.8.6
28 |
29 | packages:
30 |
31 | /@ampproject/remapping/2.1.2:
32 | resolution: {integrity: sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==}
33 | engines: {node: '>=6.0.0'}
34 | dependencies:
35 | '@jridgewell/trace-mapping': 0.3.4
36 | dev: true
37 |
38 | /@babel/code-frame/7.16.7:
39 | resolution: {integrity: sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==}
40 | engines: {node: '>=6.9.0'}
41 | dependencies:
42 | '@babel/highlight': 7.16.10
43 | dev: true
44 |
45 | /@babel/compat-data/7.17.7:
46 | resolution: {integrity: sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==}
47 | engines: {node: '>=6.9.0'}
48 | dev: true
49 |
50 | /@babel/core/7.17.8:
51 | resolution: {integrity: sha512-OdQDV/7cRBtJHLSOBqqbYNkOcydOgnX59TZx4puf41fzcVtN3e/4yqY8lMQsK+5X2lJtAdmA+6OHqsj1hBJ4IQ==}
52 | engines: {node: '>=6.9.0'}
53 | dependencies:
54 | '@ampproject/remapping': 2.1.2
55 | '@babel/code-frame': 7.16.7
56 | '@babel/generator': 7.17.7
57 | '@babel/helper-compilation-targets': 7.17.7_@babel+core@7.17.8
58 | '@babel/helper-module-transforms': 7.17.7
59 | '@babel/helpers': 7.17.8
60 | '@babel/parser': 7.17.8
61 | '@babel/template': 7.16.7
62 | '@babel/traverse': 7.17.3
63 | '@babel/types': 7.17.0
64 | convert-source-map: 1.8.0
65 | debug: 4.3.4
66 | gensync: 1.0.0-beta.2
67 | json5: 2.2.1
68 | semver: 6.3.0
69 | transitivePeerDependencies:
70 | - supports-color
71 | dev: true
72 |
73 | /@babel/generator/7.17.7:
74 | resolution: {integrity: sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==}
75 | engines: {node: '>=6.9.0'}
76 | dependencies:
77 | '@babel/types': 7.17.0
78 | jsesc: 2.5.2
79 | source-map: 0.5.7
80 | dev: true
81 |
82 | /@babel/helper-annotate-as-pure/7.16.7:
83 | resolution: {integrity: sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==}
84 | engines: {node: '>=6.9.0'}
85 | dependencies:
86 | '@babel/types': 7.17.0
87 | dev: true
88 |
89 | /@babel/helper-compilation-targets/7.17.7_@babel+core@7.17.8:
90 | resolution: {integrity: sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==}
91 | engines: {node: '>=6.9.0'}
92 | peerDependencies:
93 | '@babel/core': ^7.0.0
94 | dependencies:
95 | '@babel/compat-data': 7.17.7
96 | '@babel/core': 7.17.8
97 | '@babel/helper-validator-option': 7.16.7
98 | browserslist: 4.20.2
99 | semver: 6.3.0
100 | dev: true
101 |
102 | /@babel/helper-environment-visitor/7.16.7:
103 | resolution: {integrity: sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==}
104 | engines: {node: '>=6.9.0'}
105 | dependencies:
106 | '@babel/types': 7.17.0
107 | dev: true
108 |
109 | /@babel/helper-function-name/7.16.7:
110 | resolution: {integrity: sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==}
111 | engines: {node: '>=6.9.0'}
112 | dependencies:
113 | '@babel/helper-get-function-arity': 7.16.7
114 | '@babel/template': 7.16.7
115 | '@babel/types': 7.17.0
116 | dev: true
117 |
118 | /@babel/helper-get-function-arity/7.16.7:
119 | resolution: {integrity: sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==}
120 | engines: {node: '>=6.9.0'}
121 | dependencies:
122 | '@babel/types': 7.17.0
123 | dev: true
124 |
125 | /@babel/helper-hoist-variables/7.16.7:
126 | resolution: {integrity: sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==}
127 | engines: {node: '>=6.9.0'}
128 | dependencies:
129 | '@babel/types': 7.17.0
130 | dev: true
131 |
132 | /@babel/helper-module-imports/7.16.7:
133 | resolution: {integrity: sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==}
134 | engines: {node: '>=6.9.0'}
135 | dependencies:
136 | '@babel/types': 7.17.0
137 | dev: true
138 |
139 | /@babel/helper-module-transforms/7.17.7:
140 | resolution: {integrity: sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==}
141 | engines: {node: '>=6.9.0'}
142 | dependencies:
143 | '@babel/helper-environment-visitor': 7.16.7
144 | '@babel/helper-module-imports': 7.16.7
145 | '@babel/helper-simple-access': 7.17.7
146 | '@babel/helper-split-export-declaration': 7.16.7
147 | '@babel/helper-validator-identifier': 7.16.7
148 | '@babel/template': 7.16.7
149 | '@babel/traverse': 7.17.3
150 | '@babel/types': 7.17.0
151 | transitivePeerDependencies:
152 | - supports-color
153 | dev: true
154 |
155 | /@babel/helper-plugin-utils/7.16.7:
156 | resolution: {integrity: sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==}
157 | engines: {node: '>=6.9.0'}
158 | dev: true
159 |
160 | /@babel/helper-simple-access/7.17.7:
161 | resolution: {integrity: sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==}
162 | engines: {node: '>=6.9.0'}
163 | dependencies:
164 | '@babel/types': 7.17.0
165 | dev: true
166 |
167 | /@babel/helper-split-export-declaration/7.16.7:
168 | resolution: {integrity: sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==}
169 | engines: {node: '>=6.9.0'}
170 | dependencies:
171 | '@babel/types': 7.17.0
172 | dev: true
173 |
174 | /@babel/helper-validator-identifier/7.16.7:
175 | resolution: {integrity: sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==}
176 | engines: {node: '>=6.9.0'}
177 | dev: true
178 |
179 | /@babel/helper-validator-option/7.16.7:
180 | resolution: {integrity: sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==}
181 | engines: {node: '>=6.9.0'}
182 | dev: true
183 |
184 | /@babel/helpers/7.17.8:
185 | resolution: {integrity: sha512-QcL86FGxpfSJwGtAvv4iG93UL6bmqBdmoVY0CMCU2g+oD2ezQse3PT5Pa+jiD6LJndBQi0EDlpzOWNlLuhz5gw==}
186 | engines: {node: '>=6.9.0'}
187 | dependencies:
188 | '@babel/template': 7.16.7
189 | '@babel/traverse': 7.17.3
190 | '@babel/types': 7.17.0
191 | transitivePeerDependencies:
192 | - supports-color
193 | dev: true
194 |
195 | /@babel/highlight/7.16.10:
196 | resolution: {integrity: sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==}
197 | engines: {node: '>=6.9.0'}
198 | dependencies:
199 | '@babel/helper-validator-identifier': 7.16.7
200 | chalk: 2.4.2
201 | js-tokens: 4.0.0
202 | dev: true
203 |
204 | /@babel/parser/7.17.8:
205 | resolution: {integrity: sha512-BoHhDJrJXqcg+ZL16Xv39H9n+AqJ4pcDrQBGZN+wHxIysrLZ3/ECwCBUch/1zUNhnsXULcONU3Ei5Hmkfk6kiQ==}
206 | engines: {node: '>=6.0.0'}
207 | hasBin: true
208 | dev: true
209 |
210 | /@babel/plugin-syntax-jsx/7.16.7:
211 | resolution: {integrity: sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q==}
212 | engines: {node: '>=6.9.0'}
213 | peerDependencies:
214 | '@babel/core': ^7.0.0-0
215 | dependencies:
216 | '@babel/helper-plugin-utils': 7.16.7
217 | dev: true
218 |
219 | /@babel/plugin-transform-react-jsx/7.17.3:
220 | resolution: {integrity: sha512-9tjBm4O07f7mzKSIlEmPdiE6ub7kfIe6Cd+w+oQebpATfTQMAgW+YOuWxogbKVTulA+MEO7byMeIUtQ1z+z+ZQ==}
221 | engines: {node: '>=6.9.0'}
222 | peerDependencies:
223 | '@babel/core': ^7.0.0-0
224 | dependencies:
225 | '@babel/helper-annotate-as-pure': 7.16.7
226 | '@babel/helper-module-imports': 7.16.7
227 | '@babel/helper-plugin-utils': 7.16.7
228 | '@babel/plugin-syntax-jsx': 7.16.7
229 | '@babel/types': 7.17.0
230 | dev: true
231 |
232 | /@babel/template/7.16.7:
233 | resolution: {integrity: sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==}
234 | engines: {node: '>=6.9.0'}
235 | dependencies:
236 | '@babel/code-frame': 7.16.7
237 | '@babel/parser': 7.17.8
238 | '@babel/types': 7.17.0
239 | dev: true
240 |
241 | /@babel/traverse/7.17.3:
242 | resolution: {integrity: sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==}
243 | engines: {node: '>=6.9.0'}
244 | dependencies:
245 | '@babel/code-frame': 7.16.7
246 | '@babel/generator': 7.17.7
247 | '@babel/helper-environment-visitor': 7.16.7
248 | '@babel/helper-function-name': 7.16.7
249 | '@babel/helper-hoist-variables': 7.16.7
250 | '@babel/helper-split-export-declaration': 7.16.7
251 | '@babel/parser': 7.17.8
252 | '@babel/types': 7.17.0
253 | debug: 4.3.4
254 | globals: 11.12.0
255 | transitivePeerDependencies:
256 | - supports-color
257 | dev: true
258 |
259 | /@babel/types/7.17.0:
260 | resolution: {integrity: sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==}
261 | engines: {node: '>=6.9.0'}
262 | dependencies:
263 | '@babel/helper-validator-identifier': 7.16.7
264 | to-fast-properties: 2.0.0
265 | dev: true
266 |
267 | /@jridgewell/resolve-uri/3.0.5:
268 | resolution: {integrity: sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==}
269 | engines: {node: '>=6.0.0'}
270 | dev: true
271 |
272 | /@jridgewell/sourcemap-codec/1.4.11:
273 | resolution: {integrity: sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==}
274 | dev: true
275 |
276 | /@jridgewell/trace-mapping/0.3.4:
277 | resolution: {integrity: sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ==}
278 | dependencies:
279 | '@jridgewell/resolve-uri': 3.0.5
280 | '@jridgewell/sourcemap-codec': 1.4.11
281 | dev: true
282 |
283 | /@preact/preset-vite/2.1.7_preact@10.6.6+vite@2.8.6:
284 | resolution: {integrity: sha512-/Ii+aN1Jm8TK5YzDVrj5UOVRZ91F2Nik1P3FbmZyQ5VJAg1ZCkOBBkmLrz9YhiMbbGl+U35yaZNUDMcO8Xlp2g==}
285 | peerDependencies:
286 | '@babel/core': 7.x
287 | vite: 2.x
288 | dependencies:
289 | '@babel/plugin-transform-react-jsx': 7.17.3
290 | '@prefresh/vite': 2.2.8_preact@10.6.6+vite@2.8.6
291 | '@rollup/pluginutils': 4.2.0
292 | babel-plugin-transform-hook-names: 1.0.2
293 | debug: 4.3.4
294 | kolorist: 1.5.1
295 | resolve: 1.22.0
296 | vite: 2.8.6
297 | transitivePeerDependencies:
298 | - preact
299 | - supports-color
300 | dev: true
301 |
302 | /@prefresh/babel-plugin/0.4.3:
303 | resolution: {integrity: sha512-fYAWbU1WDSLn108kKY4eDaaeUcnszFqXjgaGKYXNZ5NLulpRTpsrY+Sbfo9q8LDpWrBpqIgzjrwNnvglWI1xNQ==}
304 | dev: true
305 |
306 | /@prefresh/core/1.3.4_preact@10.6.6:
307 | resolution: {integrity: sha512-s7iNsnyJ3lZEUrYIgmVIB/hKtp4U6mdD91a31Zg7Q8M49O0x2KThrbrMQYraoDDrs4STdFB8Zv6bceUguOoX1A==}
308 | peerDependencies:
309 | preact: ^10.0.0
310 | dependencies:
311 | preact: 10.6.6
312 | dev: true
313 |
314 | /@prefresh/utils/1.1.3:
315 | resolution: {integrity: sha512-Mb9abhJTOV4yCfkXrMrcgFiFT7MfNOw8sDa+XyZBdq/Ai2p4Zyxqsb3EgHLOEdHpMj6J9aiZ54W8H6FTam1u+A==}
316 | dev: true
317 |
318 | /@prefresh/vite/2.2.8_preact@10.6.6+vite@2.8.6:
319 | resolution: {integrity: sha512-yGGa+PKPYPTzMlxgQ8aBgxw9K69I8X4iQ0E6KOcIvls96WKqKLLOYZW9SUgCve446jpUXvc9udviPBZjCeZIIQ==}
320 | peerDependencies:
321 | preact: ^10.4.0
322 | vite: '>=2.0.0-beta.3'
323 | dependencies:
324 | '@babel/core': 7.17.8
325 | '@prefresh/babel-plugin': 0.4.3
326 | '@prefresh/core': 1.3.4_preact@10.6.6
327 | '@prefresh/utils': 1.1.3
328 | '@rollup/pluginutils': 4.2.0
329 | preact: 10.6.6
330 | vite: 2.8.6
331 | transitivePeerDependencies:
332 | - supports-color
333 | dev: true
334 |
335 | /@rollup/plugin-virtual/2.1.0_rollup@2.70.1:
336 | resolution: {integrity: sha512-CPPAtlKT53HFqC8jFHb/V5WErpU8Hrq2TyCR0A7kPQMlF2wNUf0o1xuAc+Qxj8NCZM0Z3Yvl+FbUXfJjVWqDwA==}
337 | engines: {node: '>=8.0.0'}
338 | peerDependencies:
339 | rollup: ^1.20.0||^2.0.0
340 | dependencies:
341 | rollup: 2.70.1
342 | dev: true
343 |
344 | /@rollup/pluginutils/4.2.0:
345 | resolution: {integrity: sha512-2WUyJNRkyH5p487pGnn4tWAsxhEFKN/pT8CMgHshd5H+IXkOnKvKZwsz5ZWz+YCXkleZRAU5kwbfgF8CPfDRqA==}
346 | engines: {node: '>= 8.0.0'}
347 | dependencies:
348 | estree-walker: 2.0.2
349 | picomatch: 2.3.1
350 | dev: true
351 |
352 | /@types/node/17.0.22:
353 | resolution: {integrity: sha512-8FwbVoG4fy+ykY86XCAclKZDORttqE5/s7dyWZKLXTdv3vRy5HozBEinG5IqhvPXXzIZEcTVbuHlQEI6iuwcmw==}
354 | dev: true
355 |
356 | /acorn/8.7.0:
357 | resolution: {integrity: sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==}
358 | engines: {node: '>=0.4.0'}
359 | hasBin: true
360 | dev: true
361 |
362 | /ansi-styles/3.2.1:
363 | resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
364 | engines: {node: '>=4'}
365 | dependencies:
366 | color-convert: 1.9.3
367 | dev: true
368 |
369 | /babel-plugin-transform-hook-names/1.0.2:
370 | resolution: {integrity: sha512-5gafyjyyBTTdX/tQQ0hRgu4AhNHG/hqWi0ZZmg2xvs2FgRkJXzDNKBZCyoYqgFkovfDrgM8OoKg8karoUvWeCw==}
371 | peerDependencies:
372 | '@babel/core': ^7.12.10
373 | dev: true
374 |
375 | /browserslist/4.20.2:
376 | resolution: {integrity: sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA==}
377 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
378 | hasBin: true
379 | dependencies:
380 | caniuse-lite: 1.0.30001319
381 | electron-to-chromium: 1.4.90
382 | escalade: 3.1.1
383 | node-releases: 2.0.2
384 | picocolors: 1.0.0
385 | dev: true
386 |
387 | /buffer-from/1.1.2:
388 | resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
389 | dev: true
390 |
391 | /caniuse-lite/1.0.30001319:
392 | resolution: {integrity: sha512-xjlIAFHucBRSMUo1kb5D4LYgcN1M45qdKP++lhqowDpwJwGkpIRTt5qQqnhxjj1vHcI7nrJxWhCC1ATrCEBTcw==}
393 | dev: true
394 |
395 | /chalk/2.4.2:
396 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
397 | engines: {node: '>=4'}
398 | dependencies:
399 | ansi-styles: 3.2.1
400 | escape-string-regexp: 1.0.5
401 | supports-color: 5.5.0
402 | dev: true
403 |
404 | /color-convert/1.9.3:
405 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
406 | dependencies:
407 | color-name: 1.1.3
408 | dev: true
409 |
410 | /color-name/1.1.3:
411 | resolution: {integrity: sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=}
412 | dev: true
413 |
414 | /comlink/4.3.1:
415 | resolution: {integrity: sha512-+YbhUdNrpBZggBAHWcgQMLPLH1KDF3wJpeqrCKieWQ8RL7atmgsgTQko1XEBK6PsecfopWNntopJ+ByYG1lRaA==}
416 | dev: false
417 |
418 | /commander/2.20.3:
419 | resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==}
420 | dev: true
421 |
422 | /convert-source-map/1.8.0:
423 | resolution: {integrity: sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==}
424 | dependencies:
425 | safe-buffer: 5.1.2
426 | dev: true
427 |
428 | /debug/4.3.4:
429 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
430 | engines: {node: '>=6.0'}
431 | peerDependencies:
432 | supports-color: '*'
433 | peerDependenciesMeta:
434 | supports-color:
435 | optional: true
436 | dependencies:
437 | ms: 2.1.2
438 | dev: true
439 |
440 | /electron-to-chromium/1.4.90:
441 | resolution: {integrity: sha512-ZwKgSA0mQMyEhz+NR0F8dRzkrCLeHLzLkjx/CWf16+zV85hQ6meXPQbKanvhnpkYb7b2uJNj+enQJ/N877ND4Q==}
442 | dev: true
443 |
444 | /esbuild-android-64/0.14.27:
445 | resolution: {integrity: sha512-LuEd4uPuj/16Y8j6kqy3Z2E9vNY9logfq8Tq+oTE2PZVuNs3M1kj5Qd4O95ee66yDGb3isaOCV7sOLDwtMfGaQ==}
446 | engines: {node: '>=12'}
447 | cpu: [x64]
448 | os: [android]
449 | requiresBuild: true
450 | dev: true
451 | optional: true
452 |
453 | /esbuild-android-arm64/0.14.27:
454 | resolution: {integrity: sha512-E8Ktwwa6vX8q7QeJmg8yepBYXaee50OdQS3BFtEHKrzbV45H4foMOeEE7uqdjGQZFBap5VAqo7pvjlyA92wznQ==}
455 | engines: {node: '>=12'}
456 | cpu: [arm64]
457 | os: [android]
458 | requiresBuild: true
459 | dev: true
460 | optional: true
461 |
462 | /esbuild-darwin-64/0.14.27:
463 | resolution: {integrity: sha512-czw/kXl/1ZdenPWfw9jDc5iuIYxqUxgQ/Q+hRd4/3udyGGVI31r29LCViN2bAJgGvQkqyLGVcG03PJPEXQ5i2g==}
464 | engines: {node: '>=12'}
465 | cpu: [x64]
466 | os: [darwin]
467 | requiresBuild: true
468 | dev: true
469 | optional: true
470 |
471 | /esbuild-darwin-arm64/0.14.27:
472 | resolution: {integrity: sha512-BEsv2U2U4o672oV8+xpXNxN9bgqRCtddQC6WBh4YhXKDcSZcdNh7+6nS+DM2vu7qWIWNA4JbRG24LUUYXysimQ==}
473 | engines: {node: '>=12'}
474 | cpu: [arm64]
475 | os: [darwin]
476 | requiresBuild: true
477 | dev: true
478 | optional: true
479 |
480 | /esbuild-freebsd-64/0.14.27:
481 | resolution: {integrity: sha512-7FeiFPGBo+ga+kOkDxtPmdPZdayrSzsV9pmfHxcyLKxu+3oTcajeZlOO1y9HW+t5aFZPiv7czOHM4KNd0tNwCA==}
482 | engines: {node: '>=12'}
483 | cpu: [x64]
484 | os: [freebsd]
485 | requiresBuild: true
486 | dev: true
487 | optional: true
488 |
489 | /esbuild-freebsd-arm64/0.14.27:
490 | resolution: {integrity: sha512-8CK3++foRZJluOWXpllG5zwAVlxtv36NpHfsbWS7TYlD8S+QruXltKlXToc/5ZNzBK++l6rvRKELu/puCLc7jA==}
491 | engines: {node: '>=12'}
492 | cpu: [arm64]
493 | os: [freebsd]
494 | requiresBuild: true
495 | dev: true
496 | optional: true
497 |
498 | /esbuild-linux-32/0.14.27:
499 | resolution: {integrity: sha512-qhNYIcT+EsYSBClZ5QhLzFzV5iVsP1YsITqblSaztr3+ZJUI+GoK8aXHyzKd7/CKKuK93cxEMJPpfi1dfsOfdw==}
500 | engines: {node: '>=12'}
501 | cpu: [ia32]
502 | os: [linux]
503 | requiresBuild: true
504 | dev: true
505 | optional: true
506 |
507 | /esbuild-linux-64/0.14.27:
508 | resolution: {integrity: sha512-ESjck9+EsHoTaKWlFKJpPZRN26uiav5gkI16RuI8WBxUdLrrAlYuYSndxxKgEn1csd968BX/8yQZATYf/9+/qg==}
509 | engines: {node: '>=12'}
510 | cpu: [x64]
511 | os: [linux]
512 | requiresBuild: true
513 | dev: true
514 | optional: true
515 |
516 | /esbuild-linux-arm/0.14.27:
517 | resolution: {integrity: sha512-JnnmgUBdqLQO9hoNZQqNHFWlNpSX82vzB3rYuCJMhtkuaWQEmQz6Lec1UIxJdC38ifEghNTBsF9bbe8dFilnCw==}
518 | engines: {node: '>=12'}
519 | cpu: [arm]
520 | os: [linux]
521 | requiresBuild: true
522 | dev: true
523 | optional: true
524 |
525 | /esbuild-linux-arm64/0.14.27:
526 | resolution: {integrity: sha512-no6Mi17eV2tHlJnqBHRLekpZ2/VYx+NfGxKcBE/2xOMYwctsanCaXxw4zapvNrGE9X38vefVXLz6YCF8b1EHiQ==}
527 | engines: {node: '>=12'}
528 | cpu: [arm64]
529 | os: [linux]
530 | requiresBuild: true
531 | dev: true
532 | optional: true
533 |
534 | /esbuild-linux-mips64le/0.14.27:
535 | resolution: {integrity: sha512-NolWP2uOvIJpbwpsDbwfeExZOY1bZNlWE/kVfkzLMsSgqeVcl5YMen/cedRe9mKnpfLli+i0uSp7N+fkKNU27A==}
536 | engines: {node: '>=12'}
537 | cpu: [mips64el]
538 | os: [linux]
539 | requiresBuild: true
540 | dev: true
541 | optional: true
542 |
543 | /esbuild-linux-ppc64le/0.14.27:
544 | resolution: {integrity: sha512-/7dTjDvXMdRKmsSxKXeWyonuGgblnYDn0MI1xDC7J1VQXny8k1qgNp6VmrlsawwnsymSUUiThhkJsI+rx0taNA==}
545 | engines: {node: '>=12'}
546 | cpu: [ppc64]
547 | os: [linux]
548 | requiresBuild: true
549 | dev: true
550 | optional: true
551 |
552 | /esbuild-linux-riscv64/0.14.27:
553 | resolution: {integrity: sha512-D+aFiUzOJG13RhrSmZgrcFaF4UUHpqj7XSKrIiCXIj1dkIkFqdrmqMSOtSs78dOtObWiOrFCDDzB24UyeEiNGg==}
554 | engines: {node: '>=12'}
555 | cpu: [riscv64]
556 | os: [linux]
557 | requiresBuild: true
558 | dev: true
559 | optional: true
560 |
561 | /esbuild-linux-s390x/0.14.27:
562 | resolution: {integrity: sha512-CD/D4tj0U4UQjELkdNlZhQ8nDHU5rBn6NGp47Hiz0Y7/akAY5i0oGadhEIg0WCY/HYVXFb3CsSPPwaKcTOW3bg==}
563 | engines: {node: '>=12'}
564 | cpu: [s390x]
565 | os: [linux]
566 | requiresBuild: true
567 | dev: true
568 | optional: true
569 |
570 | /esbuild-netbsd-64/0.14.27:
571 | resolution: {integrity: sha512-h3mAld69SrO1VoaMpYl3a5FNdGRE/Nqc+E8VtHOag4tyBwhCQXxtvDDOAKOUQexBGca0IuR6UayQ4ntSX5ij1Q==}
572 | engines: {node: '>=12'}
573 | cpu: [x64]
574 | os: [netbsd]
575 | requiresBuild: true
576 | dev: true
577 | optional: true
578 |
579 | /esbuild-openbsd-64/0.14.27:
580 | resolution: {integrity: sha512-xwSje6qIZaDHXWoPpIgvL+7fC6WeubHHv18tusLYMwL+Z6bEa4Pbfs5IWDtQdHkArtfxEkIZz77944z8MgDxGw==}
581 | engines: {node: '>=12'}
582 | cpu: [x64]
583 | os: [openbsd]
584 | requiresBuild: true
585 | dev: true
586 | optional: true
587 |
588 | /esbuild-sunos-64/0.14.27:
589 | resolution: {integrity: sha512-/nBVpWIDjYiyMhuqIqbXXsxBc58cBVH9uztAOIfWShStxq9BNBik92oPQPJ57nzWXRNKQUEFWr4Q98utDWz7jg==}
590 | engines: {node: '>=12'}
591 | cpu: [x64]
592 | os: [sunos]
593 | requiresBuild: true
594 | dev: true
595 | optional: true
596 |
597 | /esbuild-windows-32/0.14.27:
598 | resolution: {integrity: sha512-Q9/zEjhZJ4trtWhFWIZvS/7RUzzi8rvkoaS9oiizkHTTKd8UxFwn/Mm2OywsAfYymgUYm8+y2b+BKTNEFxUekw==}
599 | engines: {node: '>=12'}
600 | cpu: [ia32]
601 | os: [win32]
602 | requiresBuild: true
603 | dev: true
604 | optional: true
605 |
606 | /esbuild-windows-64/0.14.27:
607 | resolution: {integrity: sha512-b3y3vTSl5aEhWHK66ngtiS/c6byLf6y/ZBvODH1YkBM+MGtVL6jN38FdHUsZasCz9gFwYs/lJMVY9u7GL6wfYg==}
608 | engines: {node: '>=12'}
609 | cpu: [x64]
610 | os: [win32]
611 | requiresBuild: true
612 | dev: true
613 | optional: true
614 |
615 | /esbuild-windows-arm64/0.14.27:
616 | resolution: {integrity: sha512-I/reTxr6TFMcR5qbIkwRGvldMIaiBu2+MP0LlD7sOlNXrfqIl9uNjsuxFPGEG4IRomjfQ5q8WT+xlF/ySVkqKg==}
617 | engines: {node: '>=12'}
618 | cpu: [arm64]
619 | os: [win32]
620 | requiresBuild: true
621 | dev: true
622 | optional: true
623 |
624 | /esbuild/0.14.27:
625 | resolution: {integrity: sha512-MZQt5SywZS3hA9fXnMhR22dv0oPGh6QtjJRIYbgL1AeqAoQZE+Qn5ppGYQAoHv/vq827flj4tIJ79Mrdiwk46Q==}
626 | engines: {node: '>=12'}
627 | hasBin: true
628 | requiresBuild: true
629 | optionalDependencies:
630 | esbuild-android-64: 0.14.27
631 | esbuild-android-arm64: 0.14.27
632 | esbuild-darwin-64: 0.14.27
633 | esbuild-darwin-arm64: 0.14.27
634 | esbuild-freebsd-64: 0.14.27
635 | esbuild-freebsd-arm64: 0.14.27
636 | esbuild-linux-32: 0.14.27
637 | esbuild-linux-64: 0.14.27
638 | esbuild-linux-arm: 0.14.27
639 | esbuild-linux-arm64: 0.14.27
640 | esbuild-linux-mips64le: 0.14.27
641 | esbuild-linux-ppc64le: 0.14.27
642 | esbuild-linux-riscv64: 0.14.27
643 | esbuild-linux-s390x: 0.14.27
644 | esbuild-netbsd-64: 0.14.27
645 | esbuild-openbsd-64: 0.14.27
646 | esbuild-sunos-64: 0.14.27
647 | esbuild-windows-32: 0.14.27
648 | esbuild-windows-64: 0.14.27
649 | esbuild-windows-arm64: 0.14.27
650 | dev: true
651 |
652 | /escalade/3.1.1:
653 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
654 | engines: {node: '>=6'}
655 | dev: true
656 |
657 | /escape-string-regexp/1.0.5:
658 | resolution: {integrity: sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=}
659 | engines: {node: '>=0.8.0'}
660 | dev: true
661 |
662 | /estree-walker/2.0.2:
663 | resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
664 | dev: true
665 |
666 | /fsevents/2.3.2:
667 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==}
668 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
669 | os: [darwin]
670 | requiresBuild: true
671 | dev: true
672 | optional: true
673 |
674 | /function-bind/1.1.1:
675 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==}
676 | dev: true
677 |
678 | /gensync/1.0.0-beta.2:
679 | resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
680 | engines: {node: '>=6.9.0'}
681 | dev: true
682 |
683 | /globals/11.12.0:
684 | resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
685 | engines: {node: '>=4'}
686 | dev: true
687 |
688 | /has-flag/3.0.0:
689 | resolution: {integrity: sha1-tdRU3CGZriJWmfNGfloH87lVuv0=}
690 | engines: {node: '>=4'}
691 | dev: true
692 |
693 | /has/1.0.3:
694 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==}
695 | engines: {node: '>= 0.4.0'}
696 | dependencies:
697 | function-bind: 1.1.1
698 | dev: true
699 |
700 | /is-core-module/2.8.1:
701 | resolution: {integrity: sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==}
702 | dependencies:
703 | has: 1.0.3
704 | dev: true
705 |
706 | /js-tokens/4.0.0:
707 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
708 | dev: true
709 |
710 | /jsesc/2.5.2:
711 | resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==}
712 | engines: {node: '>=4'}
713 | hasBin: true
714 | dev: true
715 |
716 | /json5/2.2.1:
717 | resolution: {integrity: sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==}
718 | engines: {node: '>=6'}
719 | hasBin: true
720 | dev: true
721 |
722 | /kolorist/1.5.1:
723 | resolution: {integrity: sha512-lxpCM3HTvquGxKGzHeknB/sUjuVoUElLlfYnXZT73K8geR9jQbroGlSCFBax9/0mpGoD3kzcMLnOlGQPJJNyqQ==}
724 | dev: true
725 |
726 | /ms/2.1.2:
727 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
728 | dev: true
729 |
730 | /nanoid/3.3.1:
731 | resolution: {integrity: sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==}
732 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
733 | hasBin: true
734 | dev: true
735 |
736 | /node-releases/2.0.2:
737 | resolution: {integrity: sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==}
738 | dev: true
739 |
740 | /path-browserify/1.0.1:
741 | resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==}
742 | dev: false
743 |
744 | /path-parse/1.0.7:
745 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
746 | dev: true
747 |
748 | /picocolors/1.0.0:
749 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
750 | dev: true
751 |
752 | /picomatch/2.3.1:
753 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
754 | engines: {node: '>=8.6'}
755 | dev: true
756 |
757 | /postcss/8.4.12:
758 | resolution: {integrity: sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg==}
759 | engines: {node: ^10 || ^12 || >=14}
760 | dependencies:
761 | nanoid: 3.3.1
762 | picocolors: 1.0.0
763 | source-map-js: 1.0.2
764 | dev: true
765 |
766 | /preact/10.6.6:
767 | resolution: {integrity: sha512-dgxpTFV2vs4vizwKohYKkk7g7rmp1wOOcfd4Tz3IB3Wi+ivZzsn/SpeKJhRENSE+n8sUfsAl4S3HiCVT923ABw==}
768 | dev: false
769 |
770 | /resolve/1.22.0:
771 | resolution: {integrity: sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==}
772 | hasBin: true
773 | dependencies:
774 | is-core-module: 2.8.1
775 | path-parse: 1.0.7
776 | supports-preserve-symlinks-flag: 1.0.0
777 | dev: true
778 |
779 | /rollup/2.70.1:
780 | resolution: {integrity: sha512-CRYsI5EuzLbXdxC6RnYhOuRdtz4bhejPMSWjsFLfVM/7w/85n2szZv6yExqUXsBdz5KT8eoubeyDUDjhLHEslA==}
781 | engines: {node: '>=10.0.0'}
782 | hasBin: true
783 | optionalDependencies:
784 | fsevents: 2.3.2
785 | dev: true
786 |
787 | /safe-buffer/5.1.2:
788 | resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==}
789 | dev: true
790 |
791 | /semver/6.3.0:
792 | resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==}
793 | hasBin: true
794 | dev: true
795 |
796 | /source-map-js/1.0.2:
797 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
798 | engines: {node: '>=0.10.0'}
799 | dev: true
800 |
801 | /source-map-support/0.5.21:
802 | resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==}
803 | dependencies:
804 | buffer-from: 1.1.2
805 | source-map: 0.6.1
806 | dev: true
807 |
808 | /source-map/0.5.7:
809 | resolution: {integrity: sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=}
810 | engines: {node: '>=0.10.0'}
811 | dev: true
812 |
813 | /source-map/0.6.1:
814 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
815 | engines: {node: '>=0.10.0'}
816 | dev: true
817 |
818 | /source-map/0.7.3:
819 | resolution: {integrity: sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==}
820 | engines: {node: '>= 8'}
821 | dev: true
822 |
823 | /supports-color/5.5.0:
824 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
825 | engines: {node: '>=4'}
826 | dependencies:
827 | has-flag: 3.0.0
828 | dev: true
829 |
830 | /supports-preserve-symlinks-flag/1.0.0:
831 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
832 | engines: {node: '>= 0.4'}
833 | dev: true
834 |
835 | /terser/5.12.1:
836 | resolution: {integrity: sha512-NXbs+7nisos5E+yXwAD+y7zrcTkMqb0dEJxIGtSKPdCBzopf7ni4odPul2aechpV7EXNvOudYOX2bb5tln1jbQ==}
837 | engines: {node: '>=10'}
838 | hasBin: true
839 | dependencies:
840 | acorn: 8.7.0
841 | commander: 2.20.3
842 | source-map: 0.7.3
843 | source-map-support: 0.5.21
844 | dev: true
845 |
846 | /to-fast-properties/2.0.0:
847 | resolution: {integrity: sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=}
848 | engines: {node: '>=4'}
849 | dev: true
850 |
851 | /typescript/4.6.2:
852 | resolution: {integrity: sha512-HM/hFigTBHZhLXshn9sN37H085+hQGeJHJ/X7LpBWLID/fbc2acUMfU+lGD98X81sKP+pFa9f0DZmCwB9GnbAg==}
853 | engines: {node: '>=4.2.0'}
854 | hasBin: true
855 | dev: true
856 |
857 | /vite/2.8.6:
858 | resolution: {integrity: sha512-e4H0QpludOVKkmOsRyqQ7LTcMUDF3mcgyNU4lmi0B5JUbe0ZxeBBl8VoZ8Y6Rfn9eFKYtdXNPcYK97ZwH+K2ug==}
859 | engines: {node: '>=12.2.0'}
860 | hasBin: true
861 | peerDependencies:
862 | less: '*'
863 | sass: '*'
864 | stylus: '*'
865 | peerDependenciesMeta:
866 | less:
867 | optional: true
868 | sass:
869 | optional: true
870 | stylus:
871 | optional: true
872 | dependencies:
873 | esbuild: 0.14.27
874 | postcss: 8.4.12
875 | resolve: 1.22.0
876 | rollup: 2.70.1
877 | optionalDependencies:
878 | fsevents: 2.3.2
879 | dev: true
880 |
--------------------------------------------------------------------------------