authorgravatar for git@paperclover.netclover caruso <git@paperclover.net> 2026-03-19 19:56:44-07:00
committergravatar for git@paperclover.netclover caruso <git@paperclover.net> 2026-03-20 01:17:10-07:00
log9aff7edf050088cee3bc2d69cc5a6c4f4d512704
treee16773874a39b94fa1d750b636356af1ecbb2cc9
parenta5ec1eef9bc66643cc4a597bbcac83d7b713bd3d
signaturebadge-check Signed by SSH key SHA256:xbd+BjjhyBfwk7GVoURf9Yx0gzDerHbvYv7SddNWmAs

feat: prepare publishing


20 files changed, 4022 insertions(+), 1113 deletions(-)

.gitignore+2-3
...@@ -1,4 +1,3 @@...@@ -1,4 +1,3 @@
1node_modules1node_modules
2dist2# non-canonical lockfile
3*.log3deno.lock
4.DS_Store
.npmrc created+1
...@@ -0,0 +1 @@
1@jsr:registry=https://npm.jsr.io
.oxfmtrc.json created+4
...@@ -0,0 +1,4 @@
1{
2 "$schema": "./node_modules/oxfmt/configuration_schema.json",
3 "ignorePatterns": []
4}
LICENSE created+5
...@@ -0,0 +1,5 @@
1Copyright 2026 clover caruso
2
3Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.
4
5THE SOFTWARE IS PROVIDED “AS IS” AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
README.md+36-6
...@@ -6,14 +6,15 @@ component is extremely memoized, making it suitable for streaming situations...@@ -6,14 +6,15 @@ component is extremely memoized, making it suitable for streaming situations
6such as LLM chat interfaces.6such as LLM chat interfaces.
77
8- **Bring your Existing Pipeline**: The primary option for configuration is8- **Bring your Existing Pipeline**: The primary option for configuration is
9 providing a `unified.Processor` with or without the `rehypeReact` plugin.9 providing a `unified.Processor` with remark and rehype plugins configured.
10 Additionally, you can override the element renderers with the `components`10 Additionally, you can override the element renderers with the `components`
11 attribute. By default, `@clo/react-markdown` applies a bare bones config so11 attribute. By default, `@clo/react-markdown` applies a bare bones config so
12 you can get started with just `<Markdown content="hi" />`. Configuration is12 you can get started with just `<Markdown content="hi" />`. Configuration is
13 done either with a provider, or right at the component level.13 done either with a provider, or right at the component level.
14- **Handle Partial Markdown**: When the `predict` prop is set, sequences like14- **Handle Partial Markdown**: When the `predict` prop is set, the document
15 `hello **world` will be emitted as `hello <strong>world</strong>`. This15 will be treated as an incomplete stream at the end of a document.
16 behavior can be used standlone via the `@clo/react-markdown/Predict` class.16 `hello **world` will be emitted as `hello <strong>world</strong>`, perfect for
17 the LLM case. (standalone predictor exported as `@clo/react-markdown/Predict`)
1718
18The motivation for this package is to have an easy to understand version of19The motivation for this package is to have an easy to understand version of
19[Streamdown]. With me banning all Vercel software at the company I work at,20[Streamdown]. With me banning all Vercel software at the company I work at,
...@@ -27,7 +28,7 @@ to Streamdown:...@@ -27,7 +28,7 @@ to Streamdown:
27- **Headless UI**: No built in styles or components, bring your own CSS to blend28- **Headless UI**: No built in styles or components, bring your own CSS to blend
28 your markdown with your existing theme. `@clo/react-markdown` simply takes in29 your markdown with your existing theme. `@clo/react-markdown` simply takes in
29 your existing `unified` pipeline and works off of that.30 your existing `unified` pipeline and works off of that.
30- **Easy to Audit**: Under 700 lines of precise, highly commented TypeScript.31- **Easy to Audit**: ~850 lines of TypeScript. Main dependency is [unified].
3132
32[Streamdown]: https://streamdown.ai33[Streamdown]: https://streamdown.ai
33[unified]: https://unifiedjs.com/34[unified]: https://unifiedjs.com/
...@@ -41,7 +42,12 @@ import remarkParse from "remark-parse";...@@ -41,7 +42,12 @@ import remarkParse from "remark-parse";
41import { unified } from "unified";42import { unified } from "unified";
4243
43// Define any unified processing pipeline. We expect that your44// Define any unified processing pipeline. We expect that your
44// app already has one of these.45// app already has one of these. @clo/react-markdown works with
46// most pipelines, but some important things to note:
47// - During parsing, all nodes have to have a source location.
48// - The pipeline must output a remark (Markdown) AST.
49// - You can also add `remarkRehype` and some rehype plugins.
50// - Do not include the `rehypeReact` plugin in here. It is added for you.
45const processor = unified().use(remarkParse).use(remarkGfm);51const processor = unified().use(remarkParse).use(remarkGfm);
4652
47// Define custom components. (maps to rehypeReact's option)53// Define custom components. (maps to rehypeReact's option)
...@@ -63,3 +69,27 @@ export function HelloWorld() {...@@ -63,3 +69,27 @@ export function HelloWorld() {
63 );69 );
64}70}
65```71```
72
73## Architecture
74
75The `Markdown` component is built out of a memoizer which uses the following tricks to improve performance:
76
77- Using proper `React.memo()` calls. Obviously.
78- Prediction is implemented in a stateful way that only parses the tail end of
79 the document, marking how much of the document is stable and where possible
80 incomplete syntax may live. Since prediction only applies at the end, changing
81 text midway through can invalidate the whole predictor.
82- Separate the parsed document into "blocks", noting the source location of
83 where each block lives.
84- Only start parsing after the first changed character, rounded to the nearest
85 block. In the append-only stream, this essentially means the last two blocks
86 are the only things being re-parsed.
87- Similarly, run AST transforms only on the changed data. This step has a couple
88 of slow paths for when reference link definitions are added or edited, since
89 it means any places that might have used a reference link may now have to
90 reflect it.
91- After all that, a special AST -> React node transform is used that diffs the
92 new ast with the last ast, reusing React nodes whenever possible. This is what
93 prevents most rerenders.
94
95All put together, basically nothing rerenders except what actually changed, and the document is beautiful.
deno.json created+11
...@@ -0,0 +1,11 @@
1{
2 "name": "@clo/react-markdown",
3 "version": "1.0.0-beta.4",
4 "exports": {
5 ".": "./src/Markdown.ts",
6 "./Predict": "./src/Predict.ts"
7 },
8 "publish": {
9 "include": ["README.md", "src/**/*.ts", "tests/**/*.ts", "tests/**/*.tsx"]
10 }
11}
deno.lock created+3101
...@@ -0,0 +1,3101 @@
1{
2 "version": "5",
3 "specifiers": {
4 "jsr:@clo/lib@3": "3.0.0",
5 "npm:@jsr/clo__lib@3": "3.0.0",
6 "npm:@tailwindcss/typography@~0.5.19": "0.5.19_tailwindcss@4.2.2",
7 "npm:@tailwindcss/vite@^4.2.2": "4.2.2_vite@8.0.1__@types+node@25.5.0_@types+node@25.5.0",
8 "npm:@testing-library/react@^16.3.2": "16.3.2_@testing-library+dom@10.4.1_@types+react@19.2.14_@types+react-dom@19.2.3__@types+react@19.2.14_react@19.2.4_react-dom@19.2.4__react@19.2.4",
9 "npm:@types/hast@^3.0.4": "3.0.4",
10 "npm:@types/node@^25.5.0": "25.5.0",
11 "npm:@types/react-dom@^19.2.3": "19.2.3_@types+react@19.2.14",
12 "npm:@types/react@^19.2.14": "19.2.14",
13 "npm:@types/unist@^3.0.3": "3.0.3",
14 "npm:@vitejs/plugin-react@^6.0.1": "6.0.1_vite@8.0.1__@types+node@25.5.0_@types+node@25.5.0",
15 "npm:dequal@2": "2.0.3",
16 "npm:dequal@^2.0.3": "2.0.3",
17 "npm:happy-dom@^20.8.4": "20.8.4",
18 "npm:hast-util-to-jsx-runtime@2": "2.3.6",
19 "npm:hast-util-to-jsx-runtime@2.3.6": "2.3.6",
20 "npm:oxfmt@0.40": "0.40.0",
21 "npm:oxlint@^1.55.0": "1.56.0",
22 "npm:react-dom@^19.2.4": "19.2.4_react@19.2.4",
23 "npm:react-markdown@^10.1.0": "10.1.0_@types+react@19.2.14_react@19.2.4",
24 "npm:react-scan@~0.5.3": "0.5.3_react@19.2.4_react-dom@19.2.4__react@19.2.4_preact@10.29.0_@types+react@19.2.14",
25 "npm:react@^19.2.4": "19.2.4",
26 "npm:rehype-react@8": "8.0.0",
27 "npm:remark-gfm@^4.0.1": "4.0.1",
28 "npm:remark-parse@11": "11.0.0",
29 "npm:remark-rehype@11": "11.1.2",
30 "npm:remark-rehype@^11.1.2": "11.1.2",
31 "npm:streamdown@^2.5.0": "2.5.0_react@19.2.4_react-dom@19.2.4__react@19.2.4",
32 "npm:tailwindcss@^4.2.2": "4.2.2",
33 "npm:typescript@^5.9.3": "5.9.3",
34 "npm:unified@11": "11.0.5",
35 "npm:unified@^11.0.5": "11.0.5",
36 "npm:vite@8": "8.0.1_@types+node@25.5.0",
37 "npm:vitest@4": "4.1.0_@types+node@25.5.0_happy-dom@20.8.4_vite@8.0.1__@types+node@25.5.0"
38 },
39 "jsr": {
40 "@clo/lib@3.0.0": {
41 "integrity": "0c806e34505442ad4969e0b66c032e6cb3f27513b27b02c53990ce8494d1f805"
42 }
43 },
44 "npm": {
45 "@antfu/install-pkg@1.1.0": {
46 "integrity": "sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==",
47 "dependencies": [
48 "package-manager-detector",
49 "tinyexec"
50 ]
51 },
52 "@babel/code-frame@7.29.0": {
53 "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==",
54 "dependencies": [
55 "@babel/helper-validator-identifier",
56 "js-tokens",
57 "picocolors"
58 ]
59 },
60 "@babel/compat-data@7.29.0": {
61 "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg=="
62 },
63 "@babel/core@7.29.0": {
64 "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==",
65 "dependencies": [
66 "@babel/code-frame",
67 "@babel/generator",
68 "@babel/helper-compilation-targets",
69 "@babel/helper-module-transforms",
70 "@babel/helpers",
71 "@babel/parser",
72 "@babel/template",
73 "@babel/traverse",
74 "@babel/types",
75 "@jridgewell/remapping",
76 "convert-source-map",
77 "debug",
78 "gensync",
79 "json5",
80 "semver"
81 ]
82 },
83 "@babel/generator@7.29.1": {
84 "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==",
85 "dependencies": [
86 "@babel/parser",
87 "@babel/types",
88 "@jridgewell/gen-mapping",
89 "@jridgewell/trace-mapping",
90 "jsesc"
91 ]
92 },
93 "@babel/helper-compilation-targets@7.28.6": {
94 "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==",
95 "dependencies": [
96 "@babel/compat-data",
97 "@babel/helper-validator-option",
98 "browserslist",
99 "lru-cache",
100 "semver"
101 ]
102 },
103 "@babel/helper-globals@7.28.0": {
104 "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw=="
105 },
106 "@babel/helper-module-imports@7.28.6": {
107 "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==",
108 "dependencies": [
109 "@babel/traverse",
110 "@babel/types"
111 ]
112 },
113 "@babel/helper-module-transforms@7.28.6_@babel+core@7.29.0": {
114 "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==",
115 "dependencies": [
116 "@babel/core",
117 "@babel/helper-module-imports",
118 "@babel/helper-validator-identifier",
119 "@babel/traverse"
120 ]
121 },
122 "@babel/helper-string-parser@7.27.1": {
123 "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA=="
124 },
125 "@babel/helper-validator-identifier@7.28.5": {
126 "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q=="
127 },
128 "@babel/helper-validator-option@7.27.1": {
129 "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg=="
130 },
131 "@babel/helpers@7.29.2": {
132 "integrity": "sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==",
133 "dependencies": [
134 "@babel/template",
135 "@babel/types"
136 ]
137 },
138 "@babel/parser@7.29.2": {
139 "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==",
140 "dependencies": [
141 "@babel/types"
142 ],
143 "bin": true
144 },
145 "@babel/runtime@7.29.2": {
146 "integrity": "sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g=="
147 },
148 "@babel/template@7.28.6": {
149 "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==",
150 "dependencies": [
151 "@babel/code-frame",
152 "@babel/parser",
153 "@babel/types"
154 ]
155 },
156 "@babel/traverse@7.29.0": {
157 "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==",
158 "dependencies": [
159 "@babel/code-frame",
160 "@babel/generator",
161 "@babel/helper-globals",
162 "@babel/parser",
163 "@babel/template",
164 "@babel/types",
165 "debug"
166 ]
167 },
168 "@babel/types@7.29.0": {
169 "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==",
170 "dependencies": [
171 "@babel/helper-string-parser",
172 "@babel/helper-validator-identifier"
173 ]
174 },
175 "@braintree/sanitize-url@7.1.2": {
176 "integrity": "sha512-jigsZK+sMF/cuiB7sERuo9V7N9jx+dhmHHnQyDSVdpZwVutaBu7WvNYqMDLSgFgfB30n452TP3vjDAvFC973mA=="
177 },
178 "@chevrotain/cst-dts-gen@11.1.2": {
179 "integrity": "sha512-XTsjvDVB5nDZBQB8o0o/0ozNelQtn2KrUVteIHSlPd2VAV2utEb6JzyCJaJ8tGxACR4RiBNWy5uYUHX2eji88Q==",
180 "dependencies": [
181 "@chevrotain/gast",
182 "@chevrotain/types",
183 "lodash-es"
184 ]
185 },
186 "@chevrotain/gast@11.1.2": {
187 "integrity": "sha512-Z9zfXR5jNZb1Hlsd/p+4XWeUFugrHirq36bKzPWDSIacV+GPSVXdk+ahVWZTwjhNwofAWg/sZg58fyucKSQx5g==",
188 "dependencies": [
189 "@chevrotain/types",
190 "lodash-es"
191 ]
192 },
193 "@chevrotain/regexp-to-ast@11.1.2": {
194 "integrity": "sha512-nMU3Uj8naWer7xpZTYJdxbAs6RIv/dxYzkYU8GSwgUtcAAlzjcPfX1w+RKRcYG8POlzMeayOQ/znfwxEGo5ulw=="
195 },
196 "@chevrotain/types@11.1.2": {
197 "integrity": "sha512-U+HFai5+zmJCkK86QsaJtoITlboZHBqrVketcO2ROv865xfCMSFpELQoz1GkX5GzME8pTa+3kbKrZHQtI0gdbw=="
198 },
199 "@chevrotain/utils@11.1.2": {
200 "integrity": "sha512-4mudFAQ6H+MqBTfqLmU7G1ZwRzCLfJEooL/fsF6rCX5eePMbGhoy5n4g+G4vlh2muDcsCTJtL+uKbOzWxs5LHA=="
201 },
202 "@emnapi/core@1.9.1": {
203 "integrity": "sha512-mukuNALVsoix/w1BJwFzwXBN/dHeejQtuVzcDsfOEsdpCumXb/E9j8w11h5S54tT1xhifGfbbSm/ICrObRb3KA==",
204 "dependencies": [
205 "@emnapi/wasi-threads",
206 "tslib"
207 ]
208 },
209 "@emnapi/runtime@1.9.1": {
210 "integrity": "sha512-VYi5+ZVLhpgK4hQ0TAjiQiZ6ol0oe4mBx7mVv7IflsiEp0OWoVsp/+f9Vc1hOhE0TtkORVrI1GvzyreqpgWtkA==",
211 "dependencies": [
212 "tslib"
213 ]
214 },
215 "@emnapi/wasi-threads@1.2.0": {
216 "integrity": "sha512-N10dEJNSsUx41Z6pZsXU8FjPjpBEplgH24sfkmITrBED1/U2Esum9F3lfLrMjKHHjmi557zQn7kR9R+XWXu5Rg==",
217 "dependencies": [
218 "tslib"
219 ]
220 },
221 "@esbuild/aix-ppc64@0.25.12": {
222 "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==",
223 "os": ["aix"],
224 "cpu": ["ppc64"]
225 },
226 "@esbuild/android-arm64@0.25.12": {
227 "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==",
228 "os": ["android"],
229 "cpu": ["arm64"]
230 },
231 "@esbuild/android-arm@0.25.12": {
232 "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==",
233 "os": ["android"],
234 "cpu": ["arm"]
235 },
236 "@esbuild/android-x64@0.25.12": {
237 "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==",
238 "os": ["android"],
239 "cpu": ["x64"]
240 },
241 "@esbuild/darwin-arm64@0.25.12": {
242 "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==",
243 "os": ["darwin"],
244 "cpu": ["arm64"]
245 },
246 "@esbuild/darwin-x64@0.25.12": {
247 "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==",
248 "os": ["darwin"],
249 "cpu": ["x64"]
250 },
251 "@esbuild/freebsd-arm64@0.25.12": {
252 "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==",
253 "os": ["freebsd"],
254 "cpu": ["arm64"]
255 },
256 "@esbuild/freebsd-x64@0.25.12": {
257 "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==",
258 "os": ["freebsd"],
259 "cpu": ["x64"]
260 },
261 "@esbuild/linux-arm64@0.25.12": {
262 "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==",
263 "os": ["linux"],
264 "cpu": ["arm64"]
265 },
266 "@esbuild/linux-arm@0.25.12": {
267 "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==",
268 "os": ["linux"],
269 "cpu": ["arm"]
270 },
271 "@esbuild/linux-ia32@0.25.12": {
272 "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==",
273 "os": ["linux"],
274 "cpu": ["ia32"]
275 },
276 "@esbuild/linux-loong64@0.25.12": {
277 "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==",
278 "os": ["linux"],
279 "cpu": ["loong64"]
280 },
281 "@esbuild/linux-mips64el@0.25.12": {
282 "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==",
283 "os": ["linux"],
284 "cpu": ["mips64el"]
285 },
286 "@esbuild/linux-ppc64@0.25.12": {
287 "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==",
288 "os": ["linux"],
289 "cpu": ["ppc64"]
290 },
291 "@esbuild/linux-riscv64@0.25.12": {
292 "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==",
293 "os": ["linux"],
294 "cpu": ["riscv64"]
295 },
296 "@esbuild/linux-s390x@0.25.12": {
297 "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==",
298 "os": ["linux"],
299 "cpu": ["s390x"]
300 },
301 "@esbuild/linux-x64@0.25.12": {
302 "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==",
303 "os": ["linux"],
304 "cpu": ["x64"]
305 },
306 "@esbuild/netbsd-arm64@0.25.12": {
307 "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==",
308 "os": ["netbsd"],
309 "cpu": ["arm64"]
310 },
311 "@esbuild/netbsd-x64@0.25.12": {
312 "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==",
313 "os": ["netbsd"],
314 "cpu": ["x64"]
315 },
316 "@esbuild/openbsd-arm64@0.25.12": {
317 "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==",
318 "os": ["openbsd"],
319 "cpu": ["arm64"]
320 },
321 "@esbuild/openbsd-x64@0.25.12": {
322 "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==",
323 "os": ["openbsd"],
324 "cpu": ["x64"]
325 },
326 "@esbuild/openharmony-arm64@0.25.12": {
327 "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==",
328 "os": ["openharmony"],
329 "cpu": ["arm64"]
330 },
331 "@esbuild/sunos-x64@0.25.12": {
332 "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==",
333 "os": ["sunos"],
334 "cpu": ["x64"]
335 },
336 "@esbuild/win32-arm64@0.25.12": {
337 "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==",
338 "os": ["win32"],
339 "cpu": ["arm64"]
340 },
341 "@esbuild/win32-ia32@0.25.12": {
342 "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==",
343 "os": ["win32"],
344 "cpu": ["ia32"]
345 },
346 "@esbuild/win32-x64@0.25.12": {
347 "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==",
348 "os": ["win32"],
349 "cpu": ["x64"]
350 },
351 "@iconify/types@2.0.0": {
352 "integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg=="
353 },
354 "@iconify/utils@3.1.0": {
355 "integrity": "sha512-Zlzem1ZXhI1iHeeERabLNzBHdOa4VhQbqAcOQaMKuTuyZCpwKbC2R4Dd0Zo3g9EAc+Y4fiarO8HIHRAth7+skw==",
356 "dependencies": [
357 "@antfu/install-pkg",
358 "@iconify/types",
359 "mlly"
360 ]
361 },
362 "@jridgewell/gen-mapping@0.3.13": {
363 "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==",
364 "dependencies": [
365 "@jridgewell/sourcemap-codec",
366 "@jridgewell/trace-mapping"
367 ]
368 },
369 "@jridgewell/remapping@2.3.5": {
370 "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==",
371 "dependencies": [
372 "@jridgewell/gen-mapping",
373 "@jridgewell/trace-mapping"
374 ]
375 },
376 "@jridgewell/resolve-uri@3.1.2": {
377 "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw=="
378 },
379 "@jridgewell/sourcemap-codec@1.5.5": {
380 "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og=="
381 },
382 "@jridgewell/trace-mapping@0.3.31": {
383 "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==",
384 "dependencies": [
385 "@jridgewell/resolve-uri",
386 "@jridgewell/sourcemap-codec"
387 ]
388 },
389 "@jsr/clo__lib@3.0.0": {
390 "integrity": "sha512-oseZwHCAcXNPbqnGZ37l7+wAoj6ikIXE1VM0s6eD6fz4DcgM030Slf0T7Lgtn7fIdas5hlfx4JF54TR+vo4THw==",
391 "tarball": "https://npm.jsr.io/~/11/@jsr/clo__lib/3.0.0.tgz"
392 },
393 "@mermaid-js/parser@1.0.1": {
394 "integrity": "sha512-opmV19kN1JsK0T6HhhokHpcVkqKpF+x2pPDKKM2ThHtZAB5F4PROopk0amuVYK5qMrIA4erzpNm8gmPNJgMDxQ==",
395 "dependencies": [
396 "langium"
397 ]
398 },
399 "@napi-rs/wasm-runtime@1.1.1": {
400 "integrity": "sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A==",
401 "dependencies": [
402 "@emnapi/core",
403 "@emnapi/runtime",
404 "@tybys/wasm-util"
405 ]
406 },
407 "@oxc-project/types@0.120.0": {
408 "integrity": "sha512-k1YNu55DuvAip/MGE1FTsIuU3FUCn6v/ujG9V7Nq5Df/kX2CWb13hhwD0lmJGMGqE+bE1MXvv9SZVnMzEXlWcg=="
409 },
410 "@oxfmt/binding-android-arm-eabi@0.40.0": {
411 "integrity": "sha512-S6zd5r1w/HmqR8t0CTnGjFTBLDq2QKORPwriCHxo4xFNuhmOTABGjPaNvCJJVnrKBLsohOeiDX3YqQfJPF+FXw==",
412 "os": ["android"],
413 "cpu": ["arm"]
414 },
415 "@oxfmt/binding-android-arm64@0.40.0": {
416 "integrity": "sha512-/mbS9UUP/5Vbl2D6osIdcYiP0oie63LKMoTyGj5hyMCK/SFkl3EhtyRAfdjPvuvHC0SXdW6ePaTKkBSq1SNcIw==",
417 "os": ["android"],
418 "cpu": ["arm64"]
419 },
420 "@oxfmt/binding-darwin-arm64@0.40.0": {
421 "integrity": "sha512-wRt8fRdfLiEhnRMBonlIbKrJWixoEmn6KCjKE9PElnrSDSXETGZfPb8ee+nQNTobXkCVvVLytp2o0obAsxl78Q==",
422 "os": ["darwin"],
423 "cpu": ["arm64"]
424 },
425 "@oxfmt/binding-darwin-x64@0.40.0": {
426 "integrity": "sha512-fzowhqbOE/NRy+AE5ob0+Y4X243WbWzDb00W+pKwD7d9tOqsAFbtWUwIyqqCoCLxj791m2xXIEeLH/3uz7zCCg==",
427 "os": ["darwin"],
428 "cpu": ["x64"]
429 },
430 "@oxfmt/binding-freebsd-x64@0.40.0": {
431 "integrity": "sha512-agZ9ITaqdBjcerRRFEHB8s0OyVcQW8F9ZxsszjxzeSthQ4fcN2MuOtQFWec1ed8/lDa50jSLHVE2/xPmTgtCfQ==",
432 "os": ["freebsd"],
433 "cpu": ["x64"]
434 },
435 "@oxfmt/binding-linux-arm-gnueabihf@0.40.0": {
436 "integrity": "sha512-ZM2oQ47p28TP1DVIp7HL1QoMUgqlBFHey0ksHct7tMXoU5BqjNvPWw7888azzMt25lnyPODVuye1wvNbvVUFOA==",
437 "os": ["linux"],
438 "cpu": ["arm"]
439 },
440 "@oxfmt/binding-linux-arm-musleabihf@0.40.0": {
441 "integrity": "sha512-RBFPAxRAIsMisKM47Oe6Lwdv6agZYLz02CUhVCD1sOv5ajAcRMrnwCFBPWwGXpazToW2mjnZxFos8TuFjTU15A==",
442 "os": ["linux"],
443 "cpu": ["arm"]
444 },
445 "@oxfmt/binding-linux-arm64-gnu@0.40.0": {
446 "integrity": "sha512-Nb2XbQ+wV3W2jSIihXdPj7k83eOxeSgYP3N/SRXvQ6ZYPIk6Q86qEh5Gl/7OitX3bQoQrESqm1yMLvZV8/J7dA==",
447 "os": ["linux"],
448 "cpu": ["arm64"]
449 },
450 "@oxfmt/binding-linux-arm64-musl@0.40.0": {
451 "integrity": "sha512-tGmWhLD/0YMotCdfezlT6tC/MJG/wKpo4vnQ3Cq+4eBk/BwNv7EmkD0VkD5F/dYkT3b8FNU01X2e8vvJuWoM1w==",
452 "os": ["linux"],
453 "cpu": ["arm64"]
454 },
455 "@oxfmt/binding-linux-ppc64-gnu@0.40.0": {
456 "integrity": "sha512-rVbFyM3e7YhkVnp0IVYjaSHfrBWcTRWb60LEcdNAJcE2mbhTpbqKufx0FrhWfoxOrW/+7UJonAOShoFFLigDqQ==",
457 "os": ["linux"],
458 "cpu": ["ppc64"]
459 },
460 "@oxfmt/binding-linux-riscv64-gnu@0.40.0": {
461 "integrity": "sha512-3ZqBw14JtWeEoLiioJcXSJz8RQyPE+3jLARnYM1HdPzZG4vk+Ua8CUupt2+d+vSAvMyaQBTN2dZK+kbBS/j5mA==",
462 "os": ["linux"],
463 "cpu": ["riscv64"]
464 },
465 "@oxfmt/binding-linux-riscv64-musl@0.40.0": {
466 "integrity": "sha512-JJ4PPSdcbGBjPvb+O7xYm2FmAsKCyuEMYhqatBAHMp/6TA6rVlf9Z/sYPa4/3Bommb+8nndm15SPFRHEPU5qFA==",
467 "os": ["linux"],
468 "cpu": ["riscv64"]
469 },
470 "@oxfmt/binding-linux-s390x-gnu@0.40.0": {
471 "integrity": "sha512-Kp0zNJoX9Ik77wUya2tpBY3W9f40VUoMQLWVaob5SgCrblH/t2xr/9B2bWHfs0WCefuGmqXcB+t0Lq77sbBmZw==",
472 "os": ["linux"],
473 "cpu": ["s390x"]
474 },
475 "@oxfmt/binding-linux-x64-gnu@0.40.0": {
476 "integrity": "sha512-7YTCNzleWTaQTqNGUNQ66qVjpoV6DjbCOea+RnpMBly2bpzrI/uu7Rr+2zcgRfNxyjXaFTVQKaRKjqVdeUfeVA==",
477 "os": ["linux"],
478 "cpu": ["x64"]
479 },
480 "@oxfmt/binding-linux-x64-musl@0.40.0": {
481 "integrity": "sha512-hWnSzJ0oegeOwfOEeejYXfBqmnRGHusgtHfCPzmvJvHTwy1s3Neo59UKc1CmpE3zxvrCzJoVHos0rr97GHMNPw==",
482 "os": ["linux"],
483 "cpu": ["x64"]
484 },
485 "@oxfmt/binding-openharmony-arm64@0.40.0": {
486 "integrity": "sha512-28sJC1lR4qtBJGzSRRbPnSW3GxU2+4YyQFE6rCmsUYqZ5XYH8jg0/w+CvEzQ8TuAQz5zLkcA25nFQGwoU0PT3Q==",
487 "os": ["openharmony"],
488 "cpu": ["arm64"]
489 },
490 "@oxfmt/binding-win32-arm64-msvc@0.40.0": {
491 "integrity": "sha512-cDkRnyT0dqwF5oIX1Cv59HKCeZQFbWWdUpXa3uvnHFT2iwYSSZspkhgjXjU6iDp5pFPaAEAe9FIbMoTgkTmKPg==",
492 "os": ["win32"],
493 "cpu": ["arm64"]
494 },
495 "@oxfmt/binding-win32-ia32-msvc@0.40.0": {
496 "integrity": "sha512-7rPemBJjqm5Gkv6ZRCPvK8lE6AqQ/2z31DRdWazyx2ZvaSgL7QGofHXHNouRpPvNsT9yxRNQJgigsWkc+0qg4w==",
497 "os": ["win32"],
498 "cpu": ["ia32"]
499 },
500 "@oxfmt/binding-win32-x64-msvc@0.40.0": {
501 "integrity": "sha512-/Zmj0yTYSvmha6TG1QnoLqVT7ZMRDqXvFXXBQpIjteEwx9qvUYMBH2xbiOFhDeMUJkGwC3D6fdKsFtaqUvkwNA==",
502 "os": ["win32"],
503 "cpu": ["x64"]
504 },
505 "@oxlint/binding-android-arm-eabi@1.56.0": {
506 "integrity": "sha512-IyfYPthZyiSKwAv/dLjeO18SaK8MxLI9Yss2JrRDyweQAkuL3LhEy7pwIwI7uA3KQc1Vdn20kdmj3q0oUIQL6A==",
507 "os": ["android"],
508 "cpu": ["arm"]
509 },
510 "@oxlint/binding-android-arm64@1.56.0": {
511 "integrity": "sha512-Ga5zYrzH6vc/VFxhn6MmyUnYEfy9vRpwTIks99mY3j6Nz30yYpIkWryI0QKPCgvGUtDSXVLEaMum5nA+WrNOSg==",
512 "os": ["android"],
513 "cpu": ["arm64"]
514 },
515 "@oxlint/binding-darwin-arm64@1.56.0": {
516 "integrity": "sha512-ogmbdJysnw/D4bDcpf1sPLpFThZ48lYp4aKYm10Z/6Nh1SON6NtnNhTNOlhEY296tDFItsZUz+2tgcSYqh8Eyw==",
517 "os": ["darwin"],
518 "cpu": ["arm64"]
519 },
520 "@oxlint/binding-darwin-x64@1.56.0": {
521 "integrity": "sha512-x8QE1h+RAtQ2g+3KPsP6Fk/tdz6zJQUv5c7fTrJxXV3GHOo+Ry5p/PsogU4U+iUZg0rj6hS+E4xi+mnwwlDCWQ==",
522 "os": ["darwin"],
523 "cpu": ["x64"]
524 },
525 "@oxlint/binding-freebsd-x64@1.56.0": {
526 "integrity": "sha512-6G+WMZvwJpMvY7my+/SHEjb7BTk/PFbePqLpmVmUJRIsJMy/UlyYqjpuh0RCgYYkPLcnXm1rUM04kbTk8yS1Yg==",
527 "os": ["freebsd"],
528 "cpu": ["x64"]
529 },
530 "@oxlint/binding-linux-arm-gnueabihf@1.56.0": {
531 "integrity": "sha512-YYHBsk/sl7fYwQOok+6W5lBPeUEvisznV/HZD2IfZmF3Bns6cPC3Z0vCtSEOaAWTjYWN3jVsdu55jMxKlsdlhg==",
532 "os": ["linux"],
533 "cpu": ["arm"]
534 },
535 "@oxlint/binding-linux-arm-musleabihf@1.56.0": {
536 "integrity": "sha512-+AZK8rOUr78y8WT6XkDb04IbMRqauNV+vgT6f8ZLOH8wnpQ9i7Nol0XLxAu+Cq7Sb+J9wC0j6Km5hG8rj47/yQ==",
537 "os": ["linux"],
538 "cpu": ["arm"]
539 },
540 "@oxlint/binding-linux-arm64-gnu@1.56.0": {
541 "integrity": "sha512-urse2SnugwJRojUkGSSeH2LPMaje5Q50yQtvtL9HFckiyeqXzoFwOAZqD5TR29R2lq7UHidfFDM9EGcchcbb8A==",
542 "os": ["linux"],
543 "cpu": ["arm64"]
544 },
545 "@oxlint/binding-linux-arm64-musl@1.56.0": {
546 "integrity": "sha512-rkTZkBfJ4TYLjansjSzL6mgZOdN5IvUnSq3oNJSLwBcNvy3dlgQtpHPrRxrCEbbcp7oQ6If0tkNaqfOsphYZ9g==",
547 "os": ["linux"],
548 "cpu": ["arm64"]
549 },
550 "@oxlint/binding-linux-ppc64-gnu@1.56.0": {
551 "integrity": "sha512-uqL1kMH3u69/e1CH2EJhP3CP28jw2ExLsku4o8RVAZ7fySo9zOyI2fy9pVlTAp4voBLVgzndXi3SgtdyCTa2aA==",
552 "os": ["linux"],
553 "cpu": ["ppc64"]
554 },
555 "@oxlint/binding-linux-riscv64-gnu@1.56.0": {
556 "integrity": "sha512-j0CcMBOgV6KsRaBdsebIeiy7hCjEvq2KdEsiULf2LZqAq0v1M1lWjelhCV57LxsqaIGChXFuFJ0RiFrSRHPhSg==",
557 "os": ["linux"],
558 "cpu": ["riscv64"]
559 },
560 "@oxlint/binding-linux-riscv64-musl@1.56.0": {
561 "integrity": "sha512-7VDOiL8cDG3DQ/CY3yKjbV1c4YPvc4vH8qW09Vv+5ukq3l/Kcyr6XGCd5NvxUmxqDb2vjMpM+eW/4JrEEsUetA==",
562 "os": ["linux"],
563 "cpu": ["riscv64"]
564 },
565 "@oxlint/binding-linux-s390x-gnu@1.56.0": {
566 "integrity": "sha512-JGRpX0M+ikD3WpwJ7vKcHKV6Kg0dT52BW2Eu2BupXotYeqGXBrbY+QPkAyKO6MNgKozyTNaRh3r7g+VWgyAQYQ==",
567 "os": ["linux"],
568 "cpu": ["s390x"]
569 },
570 "@oxlint/binding-linux-x64-gnu@1.56.0": {
571 "integrity": "sha512-dNaICPvtmuxFP/VbqdofrLqdS3bM/AKJN3LMJD52si44ea7Be1cBk6NpfIahaysG9Uo+L98QKddU9CD5L8UHnQ==",
572 "os": ["linux"],
573 "cpu": ["x64"]
574 },
575 "@oxlint/binding-linux-x64-musl@1.56.0": {
576 "integrity": "sha512-pF1vOtM+GuXmbklM1hV8WMsn6tCNPvkUzklj/Ej98JhlanbmA2RB1BILgOpwSuCTRTIYx2MXssmEyQQ90QF5aA==",
577 "os": ["linux"],
578 "cpu": ["x64"]
579 },
580 "@oxlint/binding-openharmony-arm64@1.56.0": {
581 "integrity": "sha512-bp8NQ4RE6fDIFLa4bdBiOA+TAvkNkg+rslR+AvvjlLTYXLy9/uKAYLQudaQouWihLD/hgkrXIKKzXi5IXOewwg==",
582 "os": ["openharmony"],
583 "cpu": ["arm64"]
584 },
585 "@oxlint/binding-win32-arm64-msvc@1.56.0": {
586 "integrity": "sha512-PxT4OJDfMOQBzo3OlzFb9gkoSD+n8qSBxyVq2wQSZIHFQYGEqIRTo9M0ZStvZm5fdhMqaVYpOnJvH2hUMEDk/g==",
587 "os": ["win32"],
588 "cpu": ["arm64"]
589 },
590 "@oxlint/binding-win32-ia32-msvc@1.56.0": {
591 "integrity": "sha512-PTRy6sIEPqy2x8PTP1baBNReN/BNEFmde0L+mYeHmjXE1Vlcc9+I5nsqENsB2yAm5wLkzPoTNCMY/7AnabT4/A==",
592 "os": ["win32"],
593 "cpu": ["ia32"]
594 },
595 "@oxlint/binding-win32-x64-msvc@1.56.0": {
596 "integrity": "sha512-ZHa0clocjLmIDr+1LwoWtxRcoYniAvERotvwKUYKhH41NVfl0Y4LNbyQkwMZzwDvKklKGvGZ5+DAG58/Ik47tQ==",
597 "os": ["win32"],
598 "cpu": ["x64"]
599 },
600 "@preact/signals-core@1.14.0": {
601 "integrity": "sha512-AowtCcCU/33lFlh1zRFf/u+12rfrhtNakj7UpaGEsmMwUKpKWMVvcktOGcwBBNiB4lWrZWc01LhiyyzVklJyaQ=="
602 },
603 "@preact/signals@1.3.4_preact@10.29.0": {
604 "integrity": "sha512-TPMkStdT0QpSc8FpB63aOwXoSiZyIrPsP9Uj347KopdS6olZdAYeeird/5FZv/M1Yc1ge5qstub2o8VDbvkT4g==",
605 "dependencies": [
606 "@preact/signals-core",
607 "preact"
608 ]
609 },
610 "@rolldown/binding-android-arm64@1.0.0-rc.10": {
611 "integrity": "sha512-jOHxwXhxmFKuXztiu1ORieJeTbx5vrTkcOkkkn2d35726+iwhrY1w/+nYY/AGgF12thg33qC3R1LMBF5tHTZHg==",
612 "os": ["android"],
613 "cpu": ["arm64"]
614 },
615 "@rolldown/binding-darwin-arm64@1.0.0-rc.10": {
616 "integrity": "sha512-gED05Teg/vtTZbIJBc4VNMAxAFDUPkuO/rAIyyxZjTj1a1/s6z5TII/5yMGZ0uLRCifEtwUQn8OlYzuYc0m70w==",
617 "os": ["darwin"],
618 "cpu": ["arm64"]
619 },
620 "@rolldown/binding-darwin-x64@1.0.0-rc.10": {
621 "integrity": "sha512-rI15NcM1mA48lqrIxVkHfAqcyFLcQwyXWThy+BQ5+mkKKPvSO26ir+ZDp36AgYoYVkqvMcdS8zOE6SeBsR9e8A==",
622 "os": ["darwin"],
623 "cpu": ["x64"]
624 },
625 "@rolldown/binding-freebsd-x64@1.0.0-rc.10": {
626 "integrity": "sha512-XZRXHdTa+4ME1MuDVp021+doQ+z6Ei4CCFmNc5/sKbqb8YmkiJdj8QKlV3rCI0AJtAeSB5n0WGPuJWNL9p/L2w==",
627 "os": ["freebsd"],
628 "cpu": ["x64"]
629 },
630 "@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.10": {
631 "integrity": "sha512-R0SQMRluISSLzFE20sPWYHVmJdDQnRyc/FzSCN72BqQmh2SOZUFG+N3/vBZpR4C6WpEUVYJLrYUXaj43sJsNLA==",
632 "os": ["linux"],
633 "cpu": ["arm"]
634 },
635 "@rolldown/binding-linux-arm64-gnu@1.0.0-rc.10": {
636 "integrity": "sha512-Y1reMrV/o+cwpduYhJuOE3OMKx32RMYCidf14y+HssARRmhDuWXJ4yVguDg2R/8SyyGNo+auzz64LnPK9Hq6jg==",
637 "os": ["linux"],
638 "cpu": ["arm64"]
639 },
640 "@rolldown/binding-linux-arm64-musl@1.0.0-rc.10": {
641 "integrity": "sha512-vELN+HNb2IzuzSBUOD4NHmP9yrGwl1DVM29wlQvx1OLSclL0NgVWnVDKl/8tEks79EFek/kebQKnNJkIAA4W2g==",
642 "os": ["linux"],
643 "cpu": ["arm64"]
644 },
645 "@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.10": {
646 "integrity": "sha512-ZqrufYTgzxbHwpqOjzSsb0UV/aV2TFIY5rP8HdsiPTv/CuAgCRjM6s9cYFwQ4CNH+hf9Y4erHW1GjZuZ7WoI7w==",
647 "os": ["linux"],
648 "cpu": ["ppc64"]
649 },
650 "@rolldown/binding-linux-s390x-gnu@1.0.0-rc.10": {
651 "integrity": "sha512-gSlmVS1FZJSRicA6IyjoRoKAFK7IIHBs7xJuHRSmjImqk3mPPWbR7RhbnfH2G6bcmMEllCt2vQ/7u9e6bBnByg==",
652 "os": ["linux"],
653 "cpu": ["s390x"]
654 },
655 "@rolldown/binding-linux-x64-gnu@1.0.0-rc.10": {
656 "integrity": "sha512-eOCKUpluKgfObT2pHjztnaWEIbUabWzk3qPZ5PuacuPmr4+JtQG4k2vGTY0H15edaTnicgU428XW/IH6AimcQw==",
657 "os": ["linux"],
658 "cpu": ["x64"]
659 },
660 "@rolldown/binding-linux-x64-musl@1.0.0-rc.10": {
661 "integrity": "sha512-Xdf2jQbfQowJnLcgYfD/m0Uu0Qj5OdxKallD78/IPPfzaiaI4KRAwZzHcKQ4ig1gtg1SuzC7jovNiM2TzQsBXA==",
662 "os": ["linux"],
663 "cpu": ["x64"]
664 },
665 "@rolldown/binding-openharmony-arm64@1.0.0-rc.10": {
666 "integrity": "sha512-o1hYe8hLi1EY6jgPFyxQgQ1wcycX+qz8eEbVmot2hFkgUzPxy9+kF0u0NIQBeDq+Mko47AkaFFaChcvZa9UX9Q==",
667 "os": ["openharmony"],
668 "cpu": ["arm64"]
669 },
670 "@rolldown/binding-wasm32-wasi@1.0.0-rc.10": {
671 "integrity": "sha512-Ugv9o7qYJudqQO5Y5y2N2SOo6S4WiqiNOpuQyoPInnhVzCY+wi/GHltcLHypG9DEUYMB0iTB/huJrpadiAcNcA==",
672 "dependencies": [
673 "@napi-rs/wasm-runtime"
674 ],
675 "cpu": ["wasm32"]
676 },
677 "@rolldown/binding-win32-arm64-msvc@1.0.0-rc.10": {
678 "integrity": "sha512-7UODQb4fQUNT/vmgDZBl3XOBAIOutP5R3O/rkxg0aLfEGQ4opbCgU5vOw/scPe4xOqBwL9fw7/RP1vAMZ6QlAQ==",
679 "os": ["win32"],
680 "cpu": ["arm64"]
681 },
682 "@rolldown/binding-win32-x64-msvc@1.0.0-rc.10": {
683 "integrity": "sha512-PYxKHMVHOb5NJuDL53vBUl1VwUjymDcYI6rzpIni0C9+9mTiJedvUxSk7/RPp7OOAm3v+EjgMu9bIy3N6b408w==",
684 "os": ["win32"],
685 "cpu": ["x64"]
686 },
687 "@rolldown/pluginutils@1.0.0-rc.10": {
688 "integrity": "sha512-UkVDEFk1w3mveXeKgaTuYfKWtPbvgck1dT8TUG3bnccrH0XtLTuAyfCoks4Q/M5ZGToSVJTIQYCzy2g/atAOeg=="
689 },
690 "@rolldown/pluginutils@1.0.0-rc.7": {
691 "integrity": "sha512-qujRfC8sFVInYSPPMLQByRh7zhwkGFS4+tyMQ83srV1qrxL4g8E2tyxVVyxd0+8QeBM1mIk9KbWxkegRr76XzA=="
692 },
693 "@rollup/pluginutils@5.3.0": {
694 "integrity": "sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==",
695 "dependencies": [
696 "@types/estree",
697 "estree-walker@2.0.2",
698 "picomatch"
699 ]
700 },
701 "@standard-schema/spec@1.1.0": {
702 "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="
703 },
704 "@tailwindcss/node@4.2.2": {
705 "integrity": "sha512-pXS+wJ2gZpVXqFaUEjojq7jzMpTGf8rU6ipJz5ovJV6PUGmlJ+jvIwGrzdHdQ80Sg+wmQxUFuoW1UAAwHNEdFA==",
706 "dependencies": [
707 "@jridgewell/remapping",
708 "enhanced-resolve",
709 "jiti",
710 "lightningcss",
711 "magic-string",
712 "source-map-js",
713 "tailwindcss"
714 ]
715 },
716 "@tailwindcss/oxide-android-arm64@4.2.2": {
717 "integrity": "sha512-dXGR1n+P3B6748jZO/SvHZq7qBOqqzQ+yFrXpoOWWALWndF9MoSKAT3Q0fYgAzYzGhxNYOoysRvYlpixRBBoDg==",
718 "os": ["android"],
719 "cpu": ["arm64"]
720 },
721 "@tailwindcss/oxide-darwin-arm64@4.2.2": {
722 "integrity": "sha512-iq9Qjr6knfMpZHj55/37ouZeykwbDqF21gPFtfnhCCKGDcPI/21FKC9XdMO/XyBM7qKORx6UIhGgg6jLl7BZlg==",
723 "os": ["darwin"],
724 "cpu": ["arm64"]
725 },
726 "@tailwindcss/oxide-darwin-x64@4.2.2": {
727 "integrity": "sha512-BlR+2c3nzc8f2G639LpL89YY4bdcIdUmiOOkv2GQv4/4M0vJlpXEa0JXNHhCHU7VWOKWT/CjqHdTP8aUuDJkuw==",
728 "os": ["darwin"],
729 "cpu": ["x64"]
730 },
731 "@tailwindcss/oxide-freebsd-x64@4.2.2": {
732 "integrity": "sha512-YUqUgrGMSu2CDO82hzlQ5qSb5xmx3RUrke/QgnoEx7KvmRJHQuZHZmZTLSuuHwFf0DJPybFMXMYf+WJdxHy/nQ==",
733 "os": ["freebsd"],
734 "cpu": ["x64"]
735 },
736 "@tailwindcss/oxide-linux-arm-gnueabihf@4.2.2": {
737 "integrity": "sha512-FPdhvsW6g06T9BWT0qTwiVZYE2WIFo2dY5aCSpjG/S/u1tby+wXoslXS0kl3/KXnULlLr1E3NPRRw0g7t2kgaQ==",
738 "os": ["linux"],
739 "cpu": ["arm"]
740 },
741 "@tailwindcss/oxide-linux-arm64-gnu@4.2.2": {
742 "integrity": "sha512-4og1V+ftEPXGttOO7eCmW7VICmzzJWgMx+QXAJRAhjrSjumCwWqMfkDrNu1LXEQzNAwz28NCUpucgQPrR4S2yw==",
743 "os": ["linux"],
744 "cpu": ["arm64"]
745 },
746 "@tailwindcss/oxide-linux-arm64-musl@4.2.2": {
747 "integrity": "sha512-oCfG/mS+/+XRlwNjnsNLVwnMWYH7tn/kYPsNPh+JSOMlnt93mYNCKHYzylRhI51X+TbR+ufNhhKKzm6QkqX8ag==",
748 "os": ["linux"],
749 "cpu": ["arm64"]
750 },
751 "@tailwindcss/oxide-linux-x64-gnu@4.2.2": {
752 "integrity": "sha512-rTAGAkDgqbXHNp/xW0iugLVmX62wOp2PoE39BTCGKjv3Iocf6AFbRP/wZT/kuCxC9QBh9Pu8XPkv/zCZB2mcMg==",
753 "os": ["linux"],
754 "cpu": ["x64"]
755 },
756 "@tailwindcss/oxide-linux-x64-musl@4.2.2": {
757 "integrity": "sha512-XW3t3qwbIwiSyRCggeO2zxe3KWaEbM0/kW9e8+0XpBgyKU4ATYzcVSMKteZJ1iukJ3HgHBjbg9P5YPRCVUxlnQ==",
758 "os": ["linux"],
759 "cpu": ["x64"]
760 },
761 "@tailwindcss/oxide-wasm32-wasi@4.2.2": {
762 "integrity": "sha512-eKSztKsmEsn1O5lJ4ZAfyn41NfG7vzCg496YiGtMDV86jz1q/irhms5O0VrY6ZwTUkFy/EKG3RfWgxSI3VbZ8Q==",
763 "cpu": ["wasm32"]
764 },
765 "@tailwindcss/oxide-win32-arm64-msvc@4.2.2": {
766 "integrity": "sha512-qPmaQM4iKu5mxpsrWZMOZRgZv1tOZpUm+zdhhQP0VhJfyGGO3aUKdbh3gDZc/dPLQwW4eSqWGrrcWNBZWUWaXQ==",
767 "os": ["win32"],
768 "cpu": ["arm64"]
769 },
770 "@tailwindcss/oxide-win32-x64-msvc@4.2.2": {
771 "integrity": "sha512-1T/37VvI7WyH66b+vqHj/cLwnCxt7Qt3WFu5Q8hk65aOvlwAhs7rAp1VkulBJw/N4tMirXjVnylTR72uI0HGcA==",
772 "os": ["win32"],
773 "cpu": ["x64"]
774 },
775 "@tailwindcss/oxide@4.2.2": {
776 "integrity": "sha512-qEUA07+E5kehxYp9BVMpq9E8vnJuBHfJEC0vPC5e7iL/hw7HR61aDKoVoKzrG+QKp56vhNZe4qwkRmMC0zDLvg==",
777 "optionalDependencies": [
778 "@tailwindcss/oxide-android-arm64",
779 "@tailwindcss/oxide-darwin-arm64",
780 "@tailwindcss/oxide-darwin-x64",
781 "@tailwindcss/oxide-freebsd-x64",
782 "@tailwindcss/oxide-linux-arm-gnueabihf",
783 "@tailwindcss/oxide-linux-arm64-gnu",
784 "@tailwindcss/oxide-linux-arm64-musl",
785 "@tailwindcss/oxide-linux-x64-gnu",
786 "@tailwindcss/oxide-linux-x64-musl",
787 "@tailwindcss/oxide-wasm32-wasi",
788 "@tailwindcss/oxide-win32-arm64-msvc",
789 "@tailwindcss/oxide-win32-x64-msvc"
790 ]
791 },
792 "@tailwindcss/typography@0.5.19_tailwindcss@4.2.2": {
793 "integrity": "sha512-w31dd8HOx3k9vPtcQh5QHP9GwKcgbMp87j58qi6xgiBnFFtKEAgCWnDw4qUT8aHwkCp8bKvb/KGKWWHedP0AAg==",
794 "dependencies": [
795 "postcss-selector-parser",
796 "tailwindcss"
797 ]
798 },
799 "@tailwindcss/vite@4.2.2_vite@8.0.1__@types+node@25.5.0_@types+node@25.5.0": {
800 "integrity": "sha512-mEiF5HO1QqCLXoNEfXVA1Tzo+cYsrqV7w9Juj2wdUFyW07JRenqMG225MvPwr3ZD9N1bFQj46X7r33iHxLUW0w==",
801 "dependencies": [
802 "@tailwindcss/node",
803 "@tailwindcss/oxide",
804 "tailwindcss",
805 "vite"
806 ]
807 },
808 "@testing-library/dom@10.4.1": {
809 "integrity": "sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==",
810 "dependencies": [
811 "@babel/code-frame",
812 "@babel/runtime",
813 "@types/aria-query",
814 "aria-query",
815 "dom-accessibility-api",
816 "lz-string",
817 "picocolors",
818 "pretty-format"
819 ]
820 },
821 "@testing-library/react@16.3.2_@testing-library+dom@10.4.1_@types+react@19.2.14_@types+react-dom@19.2.3__@types+react@19.2.14_react@19.2.4_react-dom@19.2.4__react@19.2.4": {
822 "integrity": "sha512-XU5/SytQM+ykqMnAnvB2umaJNIOsLF3PVv//1Ew4CTcpz0/BRyy/af40qqrt7SjKpDdT1saBMc42CUok5gaw+g==",
823 "dependencies": [
824 "@babel/runtime",
825 "@testing-library/dom",
826 "@types/react",
827 "@types/react-dom",
828 "react",
829 "react-dom"
830 ],
831 "optionalPeers": [
832 "@types/react",
833 "@types/react-dom"
834 ]
835 },
836 "@tybys/wasm-util@0.10.1": {
837 "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==",
838 "dependencies": [
839 "tslib"
840 ]
841 },
842 "@types/aria-query@5.0.4": {
843 "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw=="
844 },
845 "@types/chai@5.2.3": {
846 "integrity": "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==",
847 "dependencies": [
848 "@types/deep-eql",
849 "assertion-error"
850 ]
851 },
852 "@types/d3-array@3.2.2": {
853 "integrity": "sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw=="
854 },
855 "@types/d3-axis@3.0.6": {
856 "integrity": "sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==",
857 "dependencies": [
858 "@types/d3-selection"
859 ]
860 },
861 "@types/d3-brush@3.0.6": {
862 "integrity": "sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==",
863 "dependencies": [
864 "@types/d3-selection"
865 ]
866 },
867 "@types/d3-chord@3.0.6": {
868 "integrity": "sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg=="
869 },
870 "@types/d3-color@3.1.3": {
871 "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A=="
872 },
873 "@types/d3-contour@3.0.6": {
874 "integrity": "sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==",
875 "dependencies": [
876 "@types/d3-array",
877 "@types/geojson"
878 ]
879 },
880 "@types/d3-delaunay@6.0.4": {
881 "integrity": "sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw=="
882 },
883 "@types/d3-dispatch@3.0.7": {
884 "integrity": "sha512-5o9OIAdKkhN1QItV2oqaE5KMIiXAvDWBDPrD85e58Qlz1c1kI/J0NcqbEG88CoTwJrYe7ntUCVfeUl2UJKbWgA=="
885 },
886 "@types/d3-drag@3.0.7": {
887 "integrity": "sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==",
888 "dependencies": [
889 "@types/d3-selection"
890 ]
891 },
892 "@types/d3-dsv@3.0.7": {
893 "integrity": "sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g=="
894 },
895 "@types/d3-ease@3.0.2": {
896 "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA=="
897 },
898 "@types/d3-fetch@3.0.7": {
899 "integrity": "sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==",
900 "dependencies": [
901 "@types/d3-dsv"
902 ]
903 },
904 "@types/d3-force@3.0.10": {
905 "integrity": "sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw=="
906 },
907 "@types/d3-format@3.0.4": {
908 "integrity": "sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g=="
909 },
910 "@types/d3-geo@3.1.0": {
911 "integrity": "sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==",
912 "dependencies": [
913 "@types/geojson"
914 ]
915 },
916 "@types/d3-hierarchy@3.1.7": {
917 "integrity": "sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg=="
918 },
919 "@types/d3-interpolate@3.0.4": {
920 "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==",
921 "dependencies": [
922 "@types/d3-color"
923 ]
924 },
925 "@types/d3-path@3.1.1": {
926 "integrity": "sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg=="
927 },
928 "@types/d3-polygon@3.0.2": {
929 "integrity": "sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA=="
930 },
931 "@types/d3-quadtree@3.0.6": {
932 "integrity": "sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg=="
933 },
934 "@types/d3-random@3.0.3": {
935 "integrity": "sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ=="
936 },
937 "@types/d3-scale-chromatic@3.1.0": {
938 "integrity": "sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ=="
939 },
940 "@types/d3-scale@4.0.9": {
941 "integrity": "sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==",
942 "dependencies": [
943 "@types/d3-time"
944 ]
945 },
946 "@types/d3-selection@3.0.11": {
947 "integrity": "sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w=="
948 },
949 "@types/d3-shape@3.1.8": {
950 "integrity": "sha512-lae0iWfcDeR7qt7rA88BNiqdvPS5pFVPpo5OfjElwNaT2yyekbM0C9vK+yqBqEmHr6lDkRnYNoTBYlAgJa7a4w==",
951 "dependencies": [
952 "@types/d3-path"
953 ]
954 },
955 "@types/d3-time-format@4.0.3": {
956 "integrity": "sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg=="
957 },
958 "@types/d3-time@3.0.4": {
959 "integrity": "sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g=="
960 },
961 "@types/d3-timer@3.0.2": {
962 "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw=="
963 },
964 "@types/d3-transition@3.0.9": {
965 "integrity": "sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg==",
966 "dependencies": [
967 "@types/d3-selection"
968 ]
969 },
970 "@types/d3-zoom@3.0.8": {
971 "integrity": "sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==",
972 "dependencies": [
973 "@types/d3-interpolate",
974 "@types/d3-selection"
975 ]
976 },
977 "@types/d3@7.4.3": {
978 "integrity": "sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==",
979 "dependencies": [
980 "@types/d3-array",
981 "@types/d3-axis",
982 "@types/d3-brush",
983 "@types/d3-chord",
984 "@types/d3-color",
985 "@types/d3-contour",
986 "@types/d3-delaunay",
987 "@types/d3-dispatch",
988 "@types/d3-drag",
989 "@types/d3-dsv",
990 "@types/d3-ease",
991 "@types/d3-fetch",
992 "@types/d3-force",
993 "@types/d3-format",
994 "@types/d3-geo",
995 "@types/d3-hierarchy",
996 "@types/d3-interpolate",
997 "@types/d3-path",
998 "@types/d3-polygon",
999 "@types/d3-quadtree",
1000 "@types/d3-random",
1001 "@types/d3-scale",
1002 "@types/d3-scale-chromatic",
1003 "@types/d3-selection",
1004 "@types/d3-shape",
1005 "@types/d3-time",
1006 "@types/d3-time-format",
1007 "@types/d3-timer",
1008 "@types/d3-transition",
1009 "@types/d3-zoom"
1010 ]
1011 },
1012 "@types/debug@4.1.13": {
1013 "integrity": "sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw==",
1014 "dependencies": [
1015 "@types/ms"
1016 ]
1017 },
1018 "@types/deep-eql@4.0.2": {
1019 "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw=="
1020 },
1021 "@types/estree-jsx@1.0.5": {
1022 "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==",
1023 "dependencies": [
1024 "@types/estree"
1025 ]
1026 },
1027 "@types/estree@1.0.8": {
1028 "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w=="
1029 },
1030 "@types/geojson@7946.0.16": {
1031 "integrity": "sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg=="
1032 },
1033 "@types/hast@3.0.4": {
1034 "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==",
1035 "dependencies": [
1036 "@types/unist@3.0.3"
1037 ]
1038 },
1039 "@types/mdast@4.0.4": {
1040 "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==",
1041 "dependencies": [
1042 "@types/unist@3.0.3"
1043 ]
1044 },
1045 "@types/ms@2.1.0": {
1046 "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA=="
1047 },
1048 "@types/node@20.19.37": {
1049 "integrity": "sha512-8kzdPJ3FsNsVIurqBs7oodNnCEVbni9yUEkaHbgptDACOPW04jimGagZ51E6+lXUwJjgnBw+hyko/lkFWCldqw==",
1050 "dependencies": [
1051 "undici-types@6.21.0"
1052 ]
1053 },
1054 "@types/node@25.5.0": {
1055 "integrity": "sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw==",
1056 "dependencies": [
1057 "undici-types@7.18.2"
1058 ]
1059 },
1060 "@types/react-dom@19.2.3_@types+react@19.2.14": {
1061 "integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==",
1062 "dependencies": [
1063 "@types/react"
1064 ]
1065 },
1066 "@types/react-reconciler@0.28.9_@types+react@19.2.14": {
1067 "integrity": "sha512-HHM3nxyUZ3zAylX8ZEyrDNd2XZOnQ0D5XfunJF5FLQnZbHHYq4UWvW1QfelQNXv1ICNkwYhfxjwfnqivYB6bFg==",
1068 "dependencies": [
1069 "@types/react"
1070 ]
1071 },
1072 "@types/react@19.2.14": {
1073 "integrity": "sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==",
1074 "dependencies": [
1075 "csstype"
1076 ]
1077 },
1078 "@types/trusted-types@2.0.7": {
1079 "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw=="
1080 },
1081 "@types/unist@2.0.11": {
1082 "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA=="
1083 },
1084 "@types/unist@3.0.3": {
1085 "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q=="
1086 },
1087 "@types/whatwg-mimetype@3.0.2": {
1088 "integrity": "sha512-c2AKvDT8ToxLIOUlN51gTiHXflsfIFisS4pO7pDPoKouJCESkhZnEy623gwP9laCy5lnLDAw1vAzu2vM2YLOrA=="
1089 },
1090 "@types/ws@8.18.1": {
1091 "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==",
1092 "dependencies": [
1093 "@types/node@25.5.0"
1094 ]
1095 },
1096 "@ungap/structured-clone@1.3.0": {
1097 "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g=="
1098 },
1099 "@upsetjs/venn.js@2.0.0_d3-selection@3.0.0": {
1100 "integrity": "sha512-WbBhLrooyePuQ1VZxrJjtLvTc4NVfpOyKx0sKqioq9bX1C1m7Jgykkn8gLrtwumBioXIqam8DLxp88Adbue6Hw==",
1101 "optionalDependencies": [
1102 "d3-selection",
1103 "d3-transition"
1104 ]
1105 },
1106 "@vitejs/plugin-react@6.0.1_vite@8.0.1__@types+node@25.5.0_@types+node@25.5.0": {
1107 "integrity": "sha512-l9X/E3cDb+xY3SWzlG1MOGt2usfEHGMNIaegaUGFsLkb3RCn/k8/TOXBcab+OndDI4TBtktT8/9BwwW8Vi9KUQ==",
1108 "dependencies": [
1109 "@rolldown/pluginutils@1.0.0-rc.7",
1110 "vite"
1111 ]
1112 },
1113 "@vitest/expect@4.1.0": {
1114 "integrity": "sha512-EIxG7k4wlWweuCLG9Y5InKFwpMEOyrMb6ZJ1ihYu02LVj/bzUwn2VMU+13PinsjRW75XnITeFrQBMH5+dLvCDA==",
1115 "dependencies": [
1116 "@standard-schema/spec",
1117 "@types/chai",
1118 "@vitest/spy",
1119 "@vitest/utils",
1120 "chai",
1121 "tinyrainbow"
1122 ]
1123 },
1124 "@vitest/mocker@4.1.0_vite@8.0.1__@types+node@25.5.0_@types+node@25.5.0": {
1125 "integrity": "sha512-evxREh+Hork43+Y4IOhTo+h5lGmVRyjqI739Rz4RlUPqwrkFFDF6EMvOOYjTx4E8Tl6gyCLRL8Mu7Ry12a13Tw==",
1126 "dependencies": [
1127 "@vitest/spy",
1128 "estree-walker@3.0.3",
1129 "magic-string",
1130 "vite"
1131 ],
1132 "optionalPeers": [
1133 "vite"
1134 ]
1135 },
1136 "@vitest/pretty-format@4.1.0": {
1137 "integrity": "sha512-3RZLZlh88Ib0J7NQTRATfc/3ZPOnSUn2uDBUoGNn5T36+bALixmzphN26OUD3LRXWkJu4H0s5vvUeqBiw+kS0A==",
1138 "dependencies": [
1139 "tinyrainbow"
1140 ]
1141 },
1142 "@vitest/runner@4.1.0": {
1143 "integrity": "sha512-Duvx2OzQ7d6OjchL+trw+aSrb9idh7pnNfxrklo14p3zmNL4qPCDeIJAK+eBKYjkIwG96Bc6vYuxhqDXQOWpoQ==",
1144 "dependencies": [
1145 "@vitest/utils",
1146 "pathe"
1147 ]
1148 },
1149 "@vitest/snapshot@4.1.0": {
1150 "integrity": "sha512-0Vy9euT1kgsnj1CHttwi9i9o+4rRLEaPRSOJ5gyv579GJkNpgJK+B4HSv/rAWixx2wdAFci1X4CEPjiu2bXIMg==",
1151 "dependencies": [
1152 "@vitest/pretty-format",
1153 "@vitest/utils",
1154 "magic-string",
1155 "pathe"
1156 ]
1157 },
1158 "@vitest/spy@4.1.0": {
1159 "integrity": "sha512-pz77k+PgNpyMDv2FV6qmk5ZVau6c3R8HC8v342T2xlFxQKTrSeYw9waIJG8KgV9fFwAtTu4ceRzMivPTH6wSxw=="
1160 },
1161 "@vitest/utils@4.1.0": {
1162 "integrity": "sha512-XfPXT6a8TZY3dcGY8EdwsBulFCIw+BeeX0RZn2x/BtiY/75YGh8FeWGG8QISN/WhaqSrE2OrlDgtF8q5uhOTmw==",
1163 "dependencies": [
1164 "@vitest/pretty-format",
1165 "convert-source-map",
1166 "tinyrainbow"
1167 ]
1168 },
1169 "acorn@8.16.0": {
1170 "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==",
1171 "bin": true
1172 },
1173 "ansi-regex@5.0.1": {
1174 "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="
1175 },
1176 "ansi-styles@5.2.0": {
1177 "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA=="
1178 },
1179 "aria-query@5.3.0": {
1180 "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==",
1181 "dependencies": [
1182 "dequal"
1183 ]
1184 },
1185 "assertion-error@2.0.1": {
1186 "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA=="
1187 },
1188 "bail@2.0.2": {
1189 "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw=="
1190 },
1191 "baseline-browser-mapping@2.10.9": {
1192 "integrity": "sha512-OZd0e2mU11ClX8+IdXe3r0dbqMEznRiT4TfbhYIbcRPZkqJ7Qwer8ij3GZAmLsRKa+II9V1v5czCkvmHH3XZBg==",
1193 "bin": true
1194 },
1195 "bippy@0.5.32_react@19.2.4_@types+react@19.2.14": {
1196 "integrity": "sha512-yt1mC8eReTxjfg41YBZdN4PvsDwHFWxltoiQX0Q+Htlbf41aSniopb7ECZits01HwNAvXEh69RGk/ImlswDTEw==",
1197 "dependencies": [
1198 "@types/react-reconciler",
1199 "react"
1200 ]
1201 },
1202 "browserslist@4.28.1": {
1203 "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==",
1204 "dependencies": [
1205 "baseline-browser-mapping",
1206 "caniuse-lite",
1207 "electron-to-chromium",
1208 "node-releases",
1209 "update-browserslist-db"
1210 ],
1211 "bin": true
1212 },
1213 "caniuse-lite@1.0.30001780": {
1214 "integrity": "sha512-llngX0E7nQci5BPJDqoZSbuZ5Bcs9F5db7EtgfwBerX9XGtkkiO4NwfDDIRzHTTwcYC8vC7bmeUEPGrKlR/TkQ=="
1215 },
1216 "ccount@2.0.1": {
1217 "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg=="
1218 },
1219 "chai@6.2.2": {
1220 "integrity": "sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg=="
1221 },
1222 "character-entities-html4@2.1.0": {
1223 "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA=="
1224 },
1225 "character-entities-legacy@3.0.0": {
1226 "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ=="
1227 },
1228 "character-entities@2.0.2": {
1229 "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ=="
1230 },
1231 "character-reference-invalid@2.0.1": {
1232 "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw=="
1233 },
1234 "chevrotain-allstar@0.3.1_chevrotain@11.1.2": {
1235 "integrity": "sha512-b7g+y9A0v4mxCW1qUhf3BSVPg+/NvGErk/dOkrDaHA0nQIQGAtrOjlX//9OQtRlSCy+x9rfB5N8yC71lH1nvMw==",
1236 "dependencies": [
1237 "chevrotain",
1238 "lodash-es"
1239 ]
1240 },
1241 "chevrotain@11.1.2": {
1242 "integrity": "sha512-opLQzEVriiH1uUQ4Kctsd49bRoFDXGGSC4GUqj7pGyxM3RehRhvTlZJc1FL/Flew2p5uwxa1tUDWKzI4wNM8pg==",
1243 "dependencies": [
1244 "@chevrotain/cst-dts-gen",
1245 "@chevrotain/gast",
1246 "@chevrotain/regexp-to-ast",
1247 "@chevrotain/types",
1248 "@chevrotain/utils",
1249 "lodash-es"
1250 ]
1251 },
1252 "clsx@2.1.1": {
1253 "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA=="
1254 },
1255 "comma-separated-tokens@2.0.3": {
1256 "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg=="
1257 },
1258 "commander@14.0.3": {
1259 "integrity": "sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw=="
1260 },
1261 "commander@7.2.0": {
1262 "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw=="
1263 },
1264 "commander@8.3.0": {
1265 "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww=="
1266 },
1267 "confbox@0.1.8": {
1268 "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w=="
1269 },
1270 "convert-source-map@2.0.0": {
1271 "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg=="
1272 },
1273 "cose-base@1.0.3": {
1274 "integrity": "sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==",
1275 "dependencies": [
1276 "layout-base@1.0.2"
1277 ]
1278 },
1279 "cose-base@2.2.0": {
1280 "integrity": "sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==",
1281 "dependencies": [
1282 "layout-base@2.0.1"
1283 ]
1284 },
1285 "cssesc@3.0.0": {
1286 "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
1287 "bin": true
1288 },
1289 "csstype@3.2.3": {
1290 "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ=="
1291 },
1292 "cytoscape-cose-bilkent@4.1.0_cytoscape@3.33.1": {
1293 "integrity": "sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==",
1294 "dependencies": [
1295 "cose-base@1.0.3",
1296 "cytoscape"
1297 ]
1298 },
1299 "cytoscape-fcose@2.2.0_cytoscape@3.33.1": {
1300 "integrity": "sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ==",
1301 "dependencies": [
1302 "cose-base@2.2.0",
1303 "cytoscape"
1304 ]
1305 },
1306 "cytoscape@3.33.1": {
1307 "integrity": "sha512-iJc4TwyANnOGR1OmWhsS9ayRS3s+XQ185FmuHObThD+5AeJCakAAbWv8KimMTt08xCCLNgneQwFp+JRJOr9qGQ=="
1308 },
1309 "d3-array@2.12.1": {
1310 "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==",
1311 "dependencies": [
1312 "internmap"
1313 ]
1314 },
1315 "d3-array@3.2.4": {
1316 "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==",
1317 "dependencies": [
1318 "internmap"
1319 ]
1320 },
1321 "d3-axis@3.0.0": {
1322 "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw=="
1323 },
1324 "d3-brush@3.0.0_d3-selection@3.0.0": {
1325 "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==",
1326 "dependencies": [
1327 "d3-dispatch",
1328 "d3-drag",
1329 "d3-interpolate",
1330 "d3-selection",
1331 "d3-transition"
1332 ]
1333 },
1334 "d3-chord@3.0.1": {
1335 "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==",
1336 "dependencies": [
1337 "d3-path@3.1.0"
1338 ]
1339 },
1340 "d3-color@3.1.0": {
1341 "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA=="
1342 },
1343 "d3-contour@4.0.2": {
1344 "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==",
1345 "dependencies": [
1346 "d3-array@3.2.4"
1347 ]
1348 },
1349 "d3-delaunay@6.0.4": {
1350 "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==",
1351 "dependencies": [
1352 "delaunator"
1353 ]
1354 },
1355 "d3-dispatch@3.0.1": {
1356 "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg=="
1357 },
1358 "d3-drag@3.0.0": {
1359 "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==",
1360 "dependencies": [
1361 "d3-dispatch",
1362 "d3-selection"
1363 ]
1364 },
1365 "d3-dsv@3.0.1": {
1366 "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==",
1367 "dependencies": [
1368 "commander@7.2.0",
1369 "iconv-lite",
1370 "rw"
1371 ],
1372 "bin": true
1373 },
1374 "d3-ease@3.0.1": {
1375 "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w=="
1376 },
1377 "d3-fetch@3.0.1": {
1378 "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==",
1379 "dependencies": [
1380 "d3-dsv"
1381 ]
1382 },
1383 "d3-force@3.0.0": {
1384 "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==",
1385 "dependencies": [
1386 "d3-dispatch",
1387 "d3-quadtree",
1388 "d3-timer"
1389 ]
1390 },
1391 "d3-format@3.1.2": {
1392 "integrity": "sha512-AJDdYOdnyRDV5b6ArilzCPPwc1ejkHcoyFarqlPqT7zRYjhavcT3uSrqcMvsgh2CgoPbK3RCwyHaVyxYcP2Arg=="
1393 },
1394 "d3-geo@3.1.1": {
1395 "integrity": "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==",
1396 "dependencies": [
1397 "d3-array@3.2.4"
1398 ]
1399 },
1400 "d3-hierarchy@3.1.2": {
1401 "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA=="
1402 },
1403 "d3-interpolate@3.0.1": {
1404 "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==",
1405 "dependencies": [
1406 "d3-color"
1407 ]
1408 },
1409 "d3-path@1.0.9": {
1410 "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg=="
1411 },
1412 "d3-path@3.1.0": {
1413 "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ=="
1414 },
1415 "d3-polygon@3.0.1": {
1416 "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg=="
1417 },
1418 "d3-quadtree@3.0.1": {
1419 "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw=="
1420 },
1421 "d3-random@3.0.1": {
1422 "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ=="
1423 },
1424 "d3-sankey@0.12.3": {
1425 "integrity": "sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==",
1426 "dependencies": [
1427 "d3-array@2.12.1",
1428 "d3-shape@1.3.7"
1429 ]
1430 },
1431 "d3-scale-chromatic@3.1.0": {
1432 "integrity": "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==",
1433 "dependencies": [
1434 "d3-color",
1435 "d3-interpolate"
1436 ]
1437 },
1438 "d3-scale@4.0.2": {
1439 "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==",
1440 "dependencies": [
1441 "d3-array@3.2.4",
1442 "d3-format",
1443 "d3-interpolate",
1444 "d3-time",
1445 "d3-time-format"
1446 ]
1447 },
1448 "d3-selection@3.0.0": {
1449 "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ=="
1450 },
1451 "d3-shape@1.3.7": {
1452 "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==",
1453 "dependencies": [
1454 "d3-path@1.0.9"
1455 ]
1456 },
1457 "d3-shape@3.2.0": {
1458 "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==",
1459 "dependencies": [
1460 "d3-path@3.1.0"
1461 ]
1462 },
1463 "d3-time-format@4.1.0": {
1464 "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==",
1465 "dependencies": [
1466 "d3-time"
1467 ]
1468 },
1469 "d3-time@3.1.0": {
1470 "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==",
1471 "dependencies": [
1472 "d3-array@3.2.4"
1473 ]
1474 },
1475 "d3-timer@3.0.1": {
1476 "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA=="
1477 },
1478 "d3-transition@3.0.1_d3-selection@3.0.0": {
1479 "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==",
1480 "dependencies": [
1481 "d3-color",
1482 "d3-dispatch",
1483 "d3-ease",
1484 "d3-interpolate",
1485 "d3-selection",
1486 "d3-timer"
1487 ]
1488 },
1489 "d3-zoom@3.0.0_d3-selection@3.0.0": {
1490 "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==",
1491 "dependencies": [
1492 "d3-dispatch",
1493 "d3-drag",
1494 "d3-interpolate",
1495 "d3-selection",
1496 "d3-transition"
1497 ]
1498 },
1499 "d3@7.9.0_d3-selection@3.0.0": {
1500 "integrity": "sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==",
1501 "dependencies": [
1502 "d3-array@3.2.4",
1503 "d3-axis",
1504 "d3-brush",
1505 "d3-chord",
1506 "d3-color",
1507 "d3-contour",
1508 "d3-delaunay",
1509 "d3-dispatch",
1510 "d3-drag",
1511 "d3-dsv",
1512 "d3-ease",
1513 "d3-fetch",
1514 "d3-force",
1515 "d3-format",
1516 "d3-geo",
1517 "d3-hierarchy",
1518 "d3-interpolate",
1519 "d3-path@3.1.0",
1520 "d3-polygon",
1521 "d3-quadtree",
1522 "d3-random",
1523 "d3-scale",
1524 "d3-scale-chromatic",
1525 "d3-selection",
1526 "d3-shape@3.2.0",
1527 "d3-time",
1528 "d3-time-format",
1529 "d3-timer",
1530 "d3-transition",
1531 "d3-zoom"
1532 ]
1533 },
1534 "dagre-d3-es@7.0.14": {
1535 "integrity": "sha512-P4rFMVq9ESWqmOgK+dlXvOtLwYg0i7u0HBGJER0LZDJT2VHIPAMZ/riPxqJceWMStH5+E61QxFra9kIS3AqdMg==",
1536 "dependencies": [
1537 "d3",
1538 "lodash-es"
1539 ]
1540 },
1541 "dayjs@1.11.20": {
1542 "integrity": "sha512-YbwwqR/uYpeoP4pu043q+LTDLFBLApUP6VxRihdfNTqu4ubqMlGDLd6ErXhEgsyvY0K6nCs7nggYumAN+9uEuQ=="
1543 },
1544 "debug@4.4.3": {
1545 "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
1546 "dependencies": [
1547 "ms"
1548 ]
1549 },
1550 "decode-named-character-reference@1.3.0": {
1551 "integrity": "sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==",
1552 "dependencies": [
1553 "character-entities"
1554 ]
1555 },
1556 "delaunator@5.0.1": {
1557 "integrity": "sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==",
1558 "dependencies": [
1559 "robust-predicates"
1560 ]
1561 },
1562 "dequal@2.0.3": {
1563 "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA=="
1564 },
1565 "detect-libc@2.1.2": {
1566 "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ=="
1567 },
1568 "devlop@1.1.0": {
1569 "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==",
1570 "dependencies": [
1571 "dequal"
1572 ]
1573 },
1574 "dom-accessibility-api@0.5.16": {
1575 "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg=="
1576 },
1577 "dompurify@3.3.3": {
1578 "integrity": "sha512-Oj6pzI2+RqBfFG+qOaOLbFXLQ90ARpcGG6UePL82bJLtdsa6CYJD7nmiU8MW9nQNOtCHV3lZ/Bzq1X0QYbBZCA==",
1579 "optionalDependencies": [
1580 "@types/trusted-types"
1581 ]
1582 },
1583 "electron-to-chromium@1.5.321": {
1584 "integrity": "sha512-L2C7Q279W2D/J4PLZLk7sebOILDSWos7bMsMNN06rK482umHUrh/3lM8G7IlHFOYip2oAg5nha1rCMxr/rs6ZQ=="
1585 },
1586 "enhanced-resolve@5.20.1": {
1587 "integrity": "sha512-Qohcme7V1inbAfvjItgw0EaxVX5q2rdVEZHRBrEQdRZTssLDGsL8Lwrznl8oQ/6kuTJONLaDcGjkNP247XEhcA==",
1588 "dependencies": [
1589 "graceful-fs",
1590 "tapable"
1591 ]
1592 },
1593 "entities@6.0.1": {
1594 "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g=="
1595 },
1596 "entities@7.0.1": {
1597 "integrity": "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA=="
1598 },
1599 "es-module-lexer@2.0.0": {
1600 "integrity": "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw=="
1601 },
1602 "esbuild@0.25.12": {
1603 "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==",
1604 "optionalDependencies": [
1605 "@esbuild/aix-ppc64",
1606 "@esbuild/android-arm",
1607 "@esbuild/android-arm64",
1608 "@esbuild/android-x64",
1609 "@esbuild/darwin-arm64",
1610 "@esbuild/darwin-x64",
1611 "@esbuild/freebsd-arm64",
1612 "@esbuild/freebsd-x64",
1613 "@esbuild/linux-arm",
1614 "@esbuild/linux-arm64",
1615 "@esbuild/linux-ia32",
1616 "@esbuild/linux-loong64",
1617 "@esbuild/linux-mips64el",
1618 "@esbuild/linux-ppc64",
1619 "@esbuild/linux-riscv64",
1620 "@esbuild/linux-s390x",
1621 "@esbuild/linux-x64",
1622 "@esbuild/netbsd-arm64",
1623 "@esbuild/netbsd-x64",
1624 "@esbuild/openbsd-arm64",
1625 "@esbuild/openbsd-x64",
1626 "@esbuild/openharmony-arm64",
1627 "@esbuild/sunos-x64",
1628 "@esbuild/win32-arm64",
1629 "@esbuild/win32-ia32",
1630 "@esbuild/win32-x64"
1631 ],
1632 "scripts": true,
1633 "bin": true
1634 },
1635 "escalade@3.2.0": {
1636 "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA=="
1637 },
1638 "escape-string-regexp@5.0.0": {
1639 "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw=="
1640 },
1641 "estree-util-is-identifier-name@3.0.0": {
1642 "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg=="
1643 },
1644 "estree-walker@2.0.2": {
1645 "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
1646 },
1647 "estree-walker@3.0.3": {
1648 "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==",
1649 "dependencies": [
1650 "@types/estree"
1651 ]
1652 },
1653 "expect-type@1.3.0": {
1654 "integrity": "sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA=="
1655 },
1656 "extend@3.0.2": {
1657 "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
1658 },
1659 "fdir@6.5.0_picomatch@4.0.3": {
1660 "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==",
1661 "dependencies": [
1662 "picomatch"
1663 ],
1664 "optionalPeers": [
1665 "picomatch"
1666 ]
1667 },
1668 "fsevents@2.3.3": {
1669 "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
1670 "os": ["darwin"],
1671 "scripts": true
1672 },
1673 "gensync@1.0.0-beta.2": {
1674 "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg=="
1675 },
1676 "graceful-fs@4.2.11": {
1677 "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="
1678 },
1679 "hachure-fill@0.5.2": {
1680 "integrity": "sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg=="
1681 },
1682 "happy-dom@20.8.4": {
1683 "integrity": "sha512-GKhjq4OQCYB4VLFBzv8mmccUadwlAusOZOI7hC1D9xDIT5HhzkJK17c4el2f6R6C715P9xB4uiMxeKUa2nHMwQ==",
1684 "dependencies": [
1685 "@types/node@25.5.0",
1686 "@types/whatwg-mimetype",
1687 "@types/ws",
1688 "entities@7.0.1",
1689 "whatwg-mimetype",
1690 "ws"
1691 ]
1692 },
1693 "hast-util-from-parse5@8.0.3": {
1694 "integrity": "sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==",
1695 "dependencies": [
1696 "@types/hast",
1697 "@types/unist@3.0.3",
1698 "devlop",
1699 "hastscript",
1700 "property-information",
1701 "vfile",
1702 "vfile-location",
1703 "web-namespaces"
1704 ]
1705 },
1706 "hast-util-parse-selector@4.0.0": {
1707 "integrity": "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==",
1708 "dependencies": [
1709 "@types/hast"
1710 ]
1711 },
1712 "hast-util-raw@9.1.0": {
1713 "integrity": "sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw==",
1714 "dependencies": [
1715 "@types/hast",
1716 "@types/unist@3.0.3",
1717 "@ungap/structured-clone",
1718 "hast-util-from-parse5",
1719 "hast-util-to-parse5",
1720 "html-void-elements",
1721 "mdast-util-to-hast",
1722 "parse5",
1723 "unist-util-position",
1724 "unist-util-visit",
1725 "vfile",
1726 "web-namespaces",
1727 "zwitch"
1728 ]
1729 },
1730 "hast-util-sanitize@5.0.2": {
1731 "integrity": "sha512-3yTWghByc50aGS7JlGhk61SPenfE/p1oaFeNwkOOyrscaOkMGrcW9+Cy/QAIOBpZxP1yqDIzFMR0+Np0i0+usg==",
1732 "dependencies": [
1733 "@types/hast",
1734 "@ungap/structured-clone",
1735 "unist-util-position"
1736 ]
1737 },
1738 "hast-util-to-jsx-runtime@2.3.6": {
1739 "integrity": "sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==",
1740 "dependencies": [
1741 "@types/estree",
1742 "@types/hast",
1743 "@types/unist@3.0.3",
1744 "comma-separated-tokens",
1745 "devlop",
1746 "estree-util-is-identifier-name",
1747 "hast-util-whitespace",
1748 "mdast-util-mdx-expression",
1749 "mdast-util-mdx-jsx",
1750 "mdast-util-mdxjs-esm",
1751 "property-information",
1752 "space-separated-tokens",
1753 "style-to-js",
1754 "unist-util-position",
1755 "vfile-message"
1756 ]
1757 },
1758 "hast-util-to-parse5@8.0.1": {
1759 "integrity": "sha512-MlWT6Pjt4CG9lFCjiz4BH7l9wmrMkfkJYCxFwKQic8+RTZgWPuWxwAfjJElsXkex7DJjfSJsQIt931ilUgmwdA==",
1760 "dependencies": [
1761 "@types/hast",
1762 "comma-separated-tokens",
1763 "devlop",
1764 "property-information",
1765 "space-separated-tokens",
1766 "web-namespaces",
1767 "zwitch"
1768 ]
1769 },
1770 "hast-util-whitespace@3.0.0": {
1771 "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==",
1772 "dependencies": [
1773 "@types/hast"
1774 ]
1775 },
1776 "hastscript@9.0.1": {
1777 "integrity": "sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==",
1778 "dependencies": [
1779 "@types/hast",
1780 "comma-separated-tokens",
1781 "hast-util-parse-selector",
1782 "property-information",
1783 "space-separated-tokens"
1784 ]
1785 },
1786 "html-url-attributes@3.0.1": {
1787 "integrity": "sha512-ol6UPyBWqsrO6EJySPz2O7ZSr856WDrEzM5zMqp+FJJLGMW35cLYmmZnl0vztAZxRUoNZJFTCohfjuIJ8I4QBQ=="
1788 },
1789 "html-void-elements@3.0.0": {
1790 "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg=="
1791 },
1792 "iconv-lite@0.6.3": {
1793 "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
1794 "dependencies": [
1795 "safer-buffer"
1796 ]
1797 },
1798 "inline-style-parser@0.2.7": {
1799 "integrity": "sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA=="
1800 },
1801 "internmap@1.0.1": {
1802 "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw=="
1803 },
1804 "is-alphabetical@2.0.1": {
1805 "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ=="
1806 },
1807 "is-alphanumerical@2.0.1": {
1808 "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==",
1809 "dependencies": [
1810 "is-alphabetical",
1811 "is-decimal"
1812 ]
1813 },
1814 "is-decimal@2.0.1": {
1815 "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A=="
1816 },
1817 "is-hexadecimal@2.0.1": {
1818 "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg=="
1819 },
1820 "is-plain-obj@4.1.0": {
1821 "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg=="
1822 },
1823 "jiti@2.6.1": {
1824 "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==",
1825 "bin": true
1826 },
1827 "js-tokens@4.0.0": {
1828 "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
1829 },
1830 "jsesc@3.1.0": {
1831 "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==",
1832 "bin": true
1833 },
1834 "json5@2.2.3": {
1835 "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
1836 "bin": true
1837 },
1838 "katex@0.16.39": {
1839 "integrity": "sha512-FR2f6y85+81ZLO0GPhyQ+EJl/E5ILNWltJhpAeOTzRny952Z13x2867lTFDmvMZix//Ux3CuMQ2VkLXRbUwOFg==",
1840 "dependencies": [
1841 "commander@8.3.0"
1842 ],
1843 "bin": true
1844 },
1845 "khroma@2.1.0": {
1846 "integrity": "sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw=="
1847 },
1848 "kleur@3.0.3": {
1849 "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w=="
1850 },
1851 "langium@4.2.1_chevrotain@11.1.2": {
1852 "integrity": "sha512-zu9QWmjpzJcomzdJQAHgDVhLGq5bLosVak1KVa40NzQHXfqr4eAHupvnPOVXEoLkg6Ocefvf/93d//SB7du4YQ==",
1853 "dependencies": [
1854 "chevrotain",
1855 "chevrotain-allstar",
1856 "vscode-languageserver",
1857 "vscode-languageserver-textdocument",
1858 "vscode-uri"
1859 ]
1860 },
1861 "layout-base@1.0.2": {
1862 "integrity": "sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg=="
1863 },
1864 "layout-base@2.0.1": {
1865 "integrity": "sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg=="
1866 },
1867 "lightningcss-android-arm64@1.32.0": {
1868 "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==",
1869 "os": ["android"],
1870 "cpu": ["arm64"]
1871 },
1872 "lightningcss-darwin-arm64@1.32.0": {
1873 "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==",
1874 "os": ["darwin"],
1875 "cpu": ["arm64"]
1876 },
1877 "lightningcss-darwin-x64@1.32.0": {
1878 "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==",
1879 "os": ["darwin"],
1880 "cpu": ["x64"]
1881 },
1882 "lightningcss-freebsd-x64@1.32.0": {
1883 "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==",
1884 "os": ["freebsd"],
1885 "cpu": ["x64"]
1886 },
1887 "lightningcss-linux-arm-gnueabihf@1.32.0": {
1888 "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==",
1889 "os": ["linux"],
1890 "cpu": ["arm"]
1891 },
1892 "lightningcss-linux-arm64-gnu@1.32.0": {
1893 "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==",
1894 "os": ["linux"],
1895 "cpu": ["arm64"]
1896 },
1897 "lightningcss-linux-arm64-musl@1.32.0": {
1898 "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==",
1899 "os": ["linux"],
1900 "cpu": ["arm64"]
1901 },
1902 "lightningcss-linux-x64-gnu@1.32.0": {
1903 "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==",
1904 "os": ["linux"],
1905 "cpu": ["x64"]
1906 },
1907 "lightningcss-linux-x64-musl@1.32.0": {
1908 "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==",
1909 "os": ["linux"],
1910 "cpu": ["x64"]
1911 },
1912 "lightningcss-win32-arm64-msvc@1.32.0": {
1913 "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==",
1914 "os": ["win32"],
1915 "cpu": ["arm64"]
1916 },
1917 "lightningcss-win32-x64-msvc@1.32.0": {
1918 "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==",
1919 "os": ["win32"],
1920 "cpu": ["x64"]
1921 },
1922 "lightningcss@1.32.0": {
1923 "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==",
1924 "dependencies": [
1925 "detect-libc"
1926 ],
1927 "optionalDependencies": [
1928 "lightningcss-android-arm64",
1929 "lightningcss-darwin-arm64",
1930 "lightningcss-darwin-x64",
1931 "lightningcss-freebsd-x64",
1932 "lightningcss-linux-arm-gnueabihf",
1933 "lightningcss-linux-arm64-gnu",
1934 "lightningcss-linux-arm64-musl",
1935 "lightningcss-linux-x64-gnu",
1936 "lightningcss-linux-x64-musl",
1937 "lightningcss-win32-arm64-msvc",
1938 "lightningcss-win32-x64-msvc"
1939 ]
1940 },
1941 "lodash-es@4.17.23": {
1942 "integrity": "sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg=="
1943 },
1944 "longest-streak@3.1.0": {
1945 "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g=="
1946 },
1947 "lru-cache@5.1.1": {
1948 "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
1949 "dependencies": [
1950 "yallist"
1951 ]
1952 },
1953 "lz-string@1.5.0": {
1954 "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==",
1955 "bin": true
1956 },
1957 "magic-string@0.30.21": {
1958 "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==",
1959 "dependencies": [
1960 "@jridgewell/sourcemap-codec"
1961 ]
1962 },
1963 "markdown-table@3.0.4": {
1964 "integrity": "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw=="
1965 },
1966 "marked@16.4.2": {
1967 "integrity": "sha512-TI3V8YYWvkVf3KJe1dRkpnjs68JUPyEa5vjKrp1XEEJUAOaQc+Qj+L1qWbPd0SJuAdQkFU0h73sXXqwDYxsiDA==",
1968 "bin": true
1969 },
1970 "marked@17.0.4": {
1971 "integrity": "sha512-NOmVMM+KAokHMvjWmC5N/ZOvgmSWuqJB8FoYI019j4ogb/PeRMKoKIjReZ2w3376kkA8dSJIP8uD993Kxc0iRQ==",
1972 "bin": true
1973 },
1974 "mdast-util-find-and-replace@3.0.2": {
1975 "integrity": "sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==",
1976 "dependencies": [
1977 "@types/mdast",
1978 "escape-string-regexp",
1979 "unist-util-is",
1980 "unist-util-visit-parents"
1981 ]
1982 },
1983 "mdast-util-from-markdown@2.0.3": {
1984 "integrity": "sha512-W4mAWTvSlKvf8L6J+VN9yLSqQ9AOAAvHuoDAmPkz4dHf553m5gVj2ejadHJhoJmcmxEnOv6Pa8XJhpxE93kb8Q==",
1985 "dependencies": [
1986 "@types/mdast",
1987 "@types/unist@3.0.3",
1988 "decode-named-character-reference",
1989 "devlop",
1990 "mdast-util-to-string",
1991 "micromark",
1992 "micromark-util-decode-numeric-character-reference",
1993 "micromark-util-decode-string",
1994 "micromark-util-normalize-identifier",
1995 "micromark-util-symbol",
1996 "micromark-util-types",
1997 "unist-util-stringify-position"
1998 ]
1999 },
2000 "mdast-util-gfm-autolink-literal@2.0.1": {
2001 "integrity": "sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==",
2002 "dependencies": [
2003 "@types/mdast",
2004 "ccount",
2005 "devlop",
2006 "mdast-util-find-and-replace",
2007 "micromark-util-character"
2008 ]
2009 },
2010 "mdast-util-gfm-footnote@2.1.0": {
2011 "integrity": "sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==",
2012 "dependencies": [
2013 "@types/mdast",
2014 "devlop",
2015 "mdast-util-from-markdown",
2016 "mdast-util-to-markdown",
2017 "micromark-util-normalize-identifier"
2018 ]
2019 },
2020 "mdast-util-gfm-strikethrough@2.0.0": {
2021 "integrity": "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==",
2022 "dependencies": [
2023 "@types/mdast",
2024 "mdast-util-from-markdown",
2025 "mdast-util-to-markdown"
2026 ]
2027 },
2028 "mdast-util-gfm-table@2.0.0": {
2029 "integrity": "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==",
2030 "dependencies": [
2031 "@types/mdast",
2032 "devlop",
2033 "markdown-table",
2034 "mdast-util-from-markdown",
2035 "mdast-util-to-markdown"
2036 ]
2037 },
2038 "mdast-util-gfm-task-list-item@2.0.0": {
2039 "integrity": "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==",
2040 "dependencies": [
2041 "@types/mdast",
2042 "devlop",
2043 "mdast-util-from-markdown",
2044 "mdast-util-to-markdown"
2045 ]
2046 },
2047 "mdast-util-gfm@3.1.0": {
2048 "integrity": "sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==",
2049 "dependencies": [
2050 "mdast-util-from-markdown",
2051 "mdast-util-gfm-autolink-literal",
2052 "mdast-util-gfm-footnote",
2053 "mdast-util-gfm-strikethrough",
2054 "mdast-util-gfm-table",
2055 "mdast-util-gfm-task-list-item",
2056 "mdast-util-to-markdown"
2057 ]
2058 },
2059 "mdast-util-mdx-expression@2.0.1": {
2060 "integrity": "sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==",
2061 "dependencies": [
2062 "@types/estree-jsx",
2063 "@types/hast",
2064 "@types/mdast",
2065 "devlop",
2066 "mdast-util-from-markdown",
2067 "mdast-util-to-markdown"
2068 ]
2069 },
2070 "mdast-util-mdx-jsx@3.2.0": {
2071 "integrity": "sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==",
2072 "dependencies": [
2073 "@types/estree-jsx",
2074 "@types/hast",
2075 "@types/mdast",
2076 "@types/unist@3.0.3",
2077 "ccount",
2078 "devlop",
2079 "mdast-util-from-markdown",
2080 "mdast-util-to-markdown",
2081 "parse-entities",
2082 "stringify-entities",
2083 "unist-util-stringify-position",
2084 "vfile-message"
2085 ]
2086 },
2087 "mdast-util-mdxjs-esm@2.0.1": {
2088 "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==",
2089 "dependencies": [
2090 "@types/estree-jsx",
2091 "@types/hast",
2092 "@types/mdast",
2093 "devlop",
2094 "mdast-util-from-markdown",
2095 "mdast-util-to-markdown"
2096 ]
2097 },
2098 "mdast-util-phrasing@4.1.0": {
2099 "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==",
2100 "dependencies": [
2101 "@types/mdast",
2102 "unist-util-is"
2103 ]
2104 },
2105 "mdast-util-to-hast@13.2.1": {
2106 "integrity": "sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==",
2107 "dependencies": [
2108 "@types/hast",
2109 "@types/mdast",
2110 "@ungap/structured-clone",
2111 "devlop",
2112 "micromark-util-sanitize-uri",
2113 "trim-lines",
2114 "unist-util-position",
2115 "unist-util-visit",
2116 "vfile"
2117 ]
2118 },
2119 "mdast-util-to-markdown@2.1.2": {
2120 "integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==",
2121 "dependencies": [
2122 "@types/mdast",
2123 "@types/unist@3.0.3",
2124 "longest-streak",
2125 "mdast-util-phrasing",
2126 "mdast-util-to-string",
2127 "micromark-util-classify-character",
2128 "micromark-util-decode-string",
2129 "unist-util-visit",
2130 "zwitch"
2131 ]
2132 },
2133 "mdast-util-to-string@4.0.0": {
2134 "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==",
2135 "dependencies": [
2136 "@types/mdast"
2137 ]
2138 },
2139 "mermaid@11.13.0_cytoscape@3.33.1": {
2140 "integrity": "sha512-fEnci+Immw6lKMFI8sqzjlATTyjLkRa6axrEgLV2yHTfv8r+h1wjFbV6xeRtd4rUV1cS4EpR9rwp3Rci7TRWDw==",
2141 "dependencies": [
2142 "@braintree/sanitize-url",
2143 "@iconify/utils",
2144 "@mermaid-js/parser",
2145 "@types/d3",
2146 "@upsetjs/venn.js",
2147 "cytoscape",
2148 "cytoscape-cose-bilkent",
2149 "cytoscape-fcose",
2150 "d3",
2151 "d3-sankey",
2152 "dagre-d3-es",
2153 "dayjs",
2154 "dompurify",
2155 "katex",
2156 "khroma",
2157 "lodash-es",
2158 "marked@16.4.2",
2159 "roughjs",
2160 "stylis",
2161 "ts-dedent",
2162 "uuid"
2163 ]
2164 },
2165 "micromark-core-commonmark@2.0.3": {
2166 "integrity": "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==",
2167 "dependencies": [
2168 "decode-named-character-reference",
2169 "devlop",
2170 "micromark-factory-destination",
2171 "micromark-factory-label",
2172 "micromark-factory-space",
2173 "micromark-factory-title",
2174 "micromark-factory-whitespace",
2175 "micromark-util-character",
2176 "micromark-util-chunked",
2177 "micromark-util-classify-character",
2178 "micromark-util-html-tag-name",
2179 "micromark-util-normalize-identifier",
2180 "micromark-util-resolve-all",
2181 "micromark-util-subtokenize",
2182 "micromark-util-symbol",
2183 "micromark-util-types"
2184 ]
2185 },
2186 "micromark-extension-gfm-autolink-literal@2.1.0": {
2187 "integrity": "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==",
2188 "dependencies": [
2189 "micromark-util-character",
2190 "micromark-util-sanitize-uri",
2191 "micromark-util-symbol",
2192 "micromark-util-types"
2193 ]
2194 },
2195 "micromark-extension-gfm-footnote@2.1.0": {
2196 "integrity": "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==",
2197 "dependencies": [
2198 "devlop",
2199 "micromark-core-commonmark",
2200 "micromark-factory-space",
2201 "micromark-util-character",
2202 "micromark-util-normalize-identifier",
2203 "micromark-util-sanitize-uri",
2204 "micromark-util-symbol",
2205 "micromark-util-types"
2206 ]
2207 },
2208 "micromark-extension-gfm-strikethrough@2.1.0": {
2209 "integrity": "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==",
2210 "dependencies": [
2211 "devlop",
2212 "micromark-util-chunked",
2213 "micromark-util-classify-character",
2214 "micromark-util-resolve-all",
2215 "micromark-util-symbol",
2216 "micromark-util-types"
2217 ]
2218 },
2219 "micromark-extension-gfm-table@2.1.1": {
2220 "integrity": "sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==",
2221 "dependencies": [
2222 "devlop",
2223 "micromark-factory-space",
2224 "micromark-util-character",
2225 "micromark-util-symbol",
2226 "micromark-util-types"
2227 ]
2228 },
2229 "micromark-extension-gfm-tagfilter@2.0.0": {
2230 "integrity": "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==",
2231 "dependencies": [
2232 "micromark-util-types"
2233 ]
2234 },
2235 "micromark-extension-gfm-task-list-item@2.1.0": {
2236 "integrity": "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==",
2237 "dependencies": [
2238 "devlop",
2239 "micromark-factory-space",
2240 "micromark-util-character",
2241 "micromark-util-symbol",
2242 "micromark-util-types"
2243 ]
2244 },
2245 "micromark-extension-gfm@3.0.0": {
2246 "integrity": "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==",
2247 "dependencies": [
2248 "micromark-extension-gfm-autolink-literal",
2249 "micromark-extension-gfm-footnote",
2250 "micromark-extension-gfm-strikethrough",
2251 "micromark-extension-gfm-table",
2252 "micromark-extension-gfm-tagfilter",
2253 "micromark-extension-gfm-task-list-item",
2254 "micromark-util-combine-extensions",
2255 "micromark-util-types"
2256 ]
2257 },
2258 "micromark-factory-destination@2.0.1": {
2259 "integrity": "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==",
2260 "dependencies": [
2261 "micromark-util-character",
2262 "micromark-util-symbol",
2263 "micromark-util-types"
2264 ]
2265 },
2266 "micromark-factory-label@2.0.1": {
2267 "integrity": "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==",
2268 "dependencies": [
2269 "devlop",
2270 "micromark-util-character",
2271 "micromark-util-symbol",
2272 "micromark-util-types"
2273 ]
2274 },
2275 "micromark-factory-space@2.0.1": {
2276 "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==",
2277 "dependencies": [
2278 "micromark-util-character",
2279 "micromark-util-types"
2280 ]
2281 },
2282 "micromark-factory-title@2.0.1": {
2283 "integrity": "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==",
2284 "dependencies": [
2285 "micromark-factory-space",
2286 "micromark-util-character",
2287 "micromark-util-symbol",
2288 "micromark-util-types"
2289 ]
2290 },
2291 "micromark-factory-whitespace@2.0.1": {
2292 "integrity": "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==",
2293 "dependencies": [
2294 "micromark-factory-space",
2295 "micromark-util-character",
2296 "micromark-util-symbol",
2297 "micromark-util-types"
2298 ]
2299 },
2300 "micromark-util-character@2.1.1": {
2301 "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==",
2302 "dependencies": [
2303 "micromark-util-symbol",
2304 "micromark-util-types"
2305 ]
2306 },
2307 "micromark-util-chunked@2.0.1": {
2308 "integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==",
2309 "dependencies": [
2310 "micromark-util-symbol"
2311 ]
2312 },
2313 "micromark-util-classify-character@2.0.1": {
2314 "integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==",
2315 "dependencies": [
2316 "micromark-util-character",
2317 "micromark-util-symbol",
2318 "micromark-util-types"
2319 ]
2320 },
2321 "micromark-util-combine-extensions@2.0.1": {
2322 "integrity": "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==",
2323 "dependencies": [
2324 "micromark-util-chunked",
2325 "micromark-util-types"
2326 ]
2327 },
2328 "micromark-util-decode-numeric-character-reference@2.0.2": {
2329 "integrity": "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==",
2330 "dependencies": [
2331 "micromark-util-symbol"
2332 ]
2333 },
2334 "micromark-util-decode-string@2.0.1": {
2335 "integrity": "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==",
2336 "dependencies": [
2337 "decode-named-character-reference",
2338 "micromark-util-character",
2339 "micromark-util-decode-numeric-character-reference",
2340 "micromark-util-symbol"
2341 ]
2342 },
2343 "micromark-util-encode@2.0.1": {
2344 "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw=="
2345 },
2346 "micromark-util-html-tag-name@2.0.1": {
2347 "integrity": "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA=="
2348 },
2349 "micromark-util-normalize-identifier@2.0.1": {
2350 "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==",
2351 "dependencies": [
2352 "micromark-util-symbol"
2353 ]
2354 },
2355 "micromark-util-resolve-all@2.0.1": {
2356 "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==",
2357 "dependencies": [
2358 "micromark-util-types"
2359 ]
2360 },
2361 "micromark-util-sanitize-uri@2.0.1": {
2362 "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==",
2363 "dependencies": [
2364 "micromark-util-character",
2365 "micromark-util-encode",
2366 "micromark-util-symbol"
2367 ]
2368 },
2369 "micromark-util-subtokenize@2.1.0": {
2370 "integrity": "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==",
2371 "dependencies": [
2372 "devlop",
2373 "micromark-util-chunked",
2374 "micromark-util-symbol",
2375 "micromark-util-types"
2376 ]
2377 },
2378 "micromark-util-symbol@2.0.1": {
2379 "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q=="
2380 },
2381 "micromark-util-types@2.0.2": {
2382 "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA=="
2383 },
2384 "micromark@4.0.2": {
2385 "integrity": "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==",
2386 "dependencies": [
2387 "@types/debug",
2388 "debug",
2389 "decode-named-character-reference",
2390 "devlop",
2391 "micromark-core-commonmark",
2392 "micromark-factory-space",
2393 "micromark-util-character",
2394 "micromark-util-chunked",
2395 "micromark-util-combine-extensions",
2396 "micromark-util-decode-numeric-character-reference",
2397 "micromark-util-encode",
2398 "micromark-util-normalize-identifier",
2399 "micromark-util-resolve-all",
2400 "micromark-util-sanitize-uri",
2401 "micromark-util-subtokenize",
2402 "micromark-util-symbol",
2403 "micromark-util-types"
2404 ]
2405 },
2406 "mlly@1.8.2": {
2407 "integrity": "sha512-d+ObxMQFmbt10sretNDytwt85VrbkhhUA/JBGm1MPaWJ65Cl4wOgLaB1NYvJSZ0Ef03MMEU/0xpPMXUIQ29UfA==",
2408 "dependencies": [
2409 "acorn",
2410 "pathe",
2411 "pkg-types",
2412 "ufo"
2413 ]
2414 },
2415 "ms@2.1.3": {
2416 "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
2417 },
2418 "nanoid@3.3.11": {
2419 "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
2420 "bin": true
2421 },
2422 "node-releases@2.0.36": {
2423 "integrity": "sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA=="
2424 },
2425 "obug@2.1.1": {
2426 "integrity": "sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ=="
2427 },
2428 "oxfmt@0.40.0": {
2429 "integrity": "sha512-g0C3I7xUj4b4DcagevM9kgH6+pUHytikxUcn3/VUkvzTNaaXBeyZqb7IBsHwojeXm4mTBEC/aBjBTMVUkZwWUQ==",
2430 "dependencies": [
2431 "tinypool"
2432 ],
2433 "optionalDependencies": [
2434 "@oxfmt/binding-android-arm-eabi",
2435 "@oxfmt/binding-android-arm64",
2436 "@oxfmt/binding-darwin-arm64",
2437 "@oxfmt/binding-darwin-x64",
2438 "@oxfmt/binding-freebsd-x64",
2439 "@oxfmt/binding-linux-arm-gnueabihf",
2440 "@oxfmt/binding-linux-arm-musleabihf",
2441 "@oxfmt/binding-linux-arm64-gnu",
2442 "@oxfmt/binding-linux-arm64-musl",
2443 "@oxfmt/binding-linux-ppc64-gnu",
2444 "@oxfmt/binding-linux-riscv64-gnu",
2445 "@oxfmt/binding-linux-riscv64-musl",
2446 "@oxfmt/binding-linux-s390x-gnu",
2447 "@oxfmt/binding-linux-x64-gnu",
2448 "@oxfmt/binding-linux-x64-musl",
2449 "@oxfmt/binding-openharmony-arm64",
2450 "@oxfmt/binding-win32-arm64-msvc",
2451 "@oxfmt/binding-win32-ia32-msvc",
2452 "@oxfmt/binding-win32-x64-msvc"
2453 ],
2454 "bin": true
2455 },
2456 "oxlint@1.56.0": {
2457 "integrity": "sha512-Q+5Mj5PVaH/R6/fhMMFzw4dT+KPB+kQW4kaL8FOIq7tfhlnEVp6+3lcWqFruuTNlUo9srZUW3qH7Id4pskeR6g==",
2458 "optionalDependencies": [
2459 "@oxlint/binding-android-arm-eabi",
2460 "@oxlint/binding-android-arm64",
2461 "@oxlint/binding-darwin-arm64",
2462 "@oxlint/binding-darwin-x64",
2463 "@oxlint/binding-freebsd-x64",
2464 "@oxlint/binding-linux-arm-gnueabihf",
2465 "@oxlint/binding-linux-arm-musleabihf",
2466 "@oxlint/binding-linux-arm64-gnu",
2467 "@oxlint/binding-linux-arm64-musl",
2468 "@oxlint/binding-linux-ppc64-gnu",
2469 "@oxlint/binding-linux-riscv64-gnu",
2470 "@oxlint/binding-linux-riscv64-musl",
2471 "@oxlint/binding-linux-s390x-gnu",
2472 "@oxlint/binding-linux-x64-gnu",
2473 "@oxlint/binding-linux-x64-musl",
2474 "@oxlint/binding-openharmony-arm64",
2475 "@oxlint/binding-win32-arm64-msvc",
2476 "@oxlint/binding-win32-ia32-msvc",
2477 "@oxlint/binding-win32-x64-msvc"
2478 ],
2479 "bin": true
2480 },
2481 "package-manager-detector@1.6.0": {
2482 "integrity": "sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA=="
2483 },
2484 "parse-entities@4.0.2": {
2485 "integrity": "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==",
2486 "dependencies": [
2487 "@types/unist@2.0.11",
2488 "character-entities-legacy",
2489 "character-reference-invalid",
2490 "decode-named-character-reference",
2491 "is-alphanumerical",
2492 "is-decimal",
2493 "is-hexadecimal"
2494 ]
2495 },
2496 "parse5@7.3.0": {
2497 "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==",
2498 "dependencies": [
2499 "entities@6.0.1"
2500 ]
2501 },
2502 "path-data-parser@0.1.0": {
2503 "integrity": "sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w=="
2504 },
2505 "pathe@2.0.3": {
2506 "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="
2507 },
2508 "picocolors@1.1.1": {
2509 "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="
2510 },
2511 "picomatch@4.0.3": {
2512 "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q=="
2513 },
2514 "pkg-types@1.3.1": {
2515 "integrity": "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==",
2516 "dependencies": [
2517 "confbox",
2518 "mlly",
2519 "pathe"
2520 ]
2521 },
2522 "points-on-curve@0.2.0": {
2523 "integrity": "sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A=="
2524 },
2525 "points-on-path@0.2.1": {
2526 "integrity": "sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g==",
2527 "dependencies": [
2528 "path-data-parser",
2529 "points-on-curve"
2530 ]
2531 },
2532 "postcss-selector-parser@6.0.10": {
2533 "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==",
2534 "dependencies": [
2535 "cssesc",
2536 "util-deprecate"
2537 ]
2538 },
2539 "postcss@8.5.8": {
2540 "integrity": "sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==",
2541 "dependencies": [
2542 "nanoid",
2543 "picocolors",
2544 "source-map-js"
2545 ]
2546 },
2547 "preact@10.29.0": {
2548 "integrity": "sha512-wSAGyk2bYR1c7t3SZ3jHcM6xy0lcBcDel6lODcs9ME6Th++Dx2KU+6D3HD8wMMKGA8Wpw7OMd3/4RGzYRpzwRg=="
2549 },
2550 "pretty-format@27.5.1": {
2551 "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==",
2552 "dependencies": [
2553 "ansi-regex",
2554 "ansi-styles",
2555 "react-is"
2556 ]
2557 },
2558 "prompts@2.4.2": {
2559 "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==",
2560 "dependencies": [
2561 "kleur",
2562 "sisteransi"
2563 ]
2564 },
2565 "property-information@7.1.0": {
2566 "integrity": "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ=="
2567 },
2568 "react-dom@19.2.4_react@19.2.4": {
2569 "integrity": "sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ==",
2570 "dependencies": [
2571 "react",
2572 "scheduler"
2573 ]
2574 },
2575 "react-is@17.0.2": {
2576 "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w=="
2577 },
2578 "react-markdown@10.1.0_@types+react@19.2.14_react@19.2.4": {
2579 "integrity": "sha512-qKxVopLT/TyA6BX3Ue5NwabOsAzm0Q7kAPwq6L+wWDwisYs7R8vZ0nRXqq6rkueboxpkjvLGU9fWifiX/ZZFxQ==",
2580 "dependencies": [
2581 "@types/hast",
2582 "@types/mdast",
2583 "@types/react",
2584 "devlop",
2585 "hast-util-to-jsx-runtime",
2586 "html-url-attributes",
2587 "mdast-util-to-hast",
2588 "react",
2589 "remark-parse",
2590 "remark-rehype",
2591 "unified",
2592 "unist-util-visit",
2593 "vfile"
2594 ]
2595 },
2596 "react-scan@0.5.3_react@19.2.4_react-dom@19.2.4__react@19.2.4_preact@10.29.0_@types+react@19.2.14": {
2597 "integrity": "sha512-qde9PupmUf0L3MU1H6bjmoukZNbCXdMyTEwP4Gh8RQ4rZPd2GGNBgEKWszwLm96E8k+sGtMpc0B9P0KyFDP6Bw==",
2598 "dependencies": [
2599 "@babel/core",
2600 "@babel/generator",
2601 "@babel/types",
2602 "@preact/signals",
2603 "@rollup/pluginutils",
2604 "@types/node@20.19.37",
2605 "bippy",
2606 "commander@14.0.3",
2607 "esbuild",
2608 "estree-walker@3.0.3",
2609 "picocolors",
2610 "preact",
2611 "prompts",
2612 "react",
2613 "react-dom"
2614 ],
2615 "optionalDependencies": [
2616 "unplugin"
2617 ],
2618 "bin": true
2619 },
2620 "react@19.2.4": {
2621 "integrity": "sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ=="
2622 },
2623 "rehype-harden@1.1.8": {
2624 "integrity": "sha512-Qn7vR1xrf6fZCrkm9TDWi/AB4ylrHy+jqsNm1EHOAmbARYA6gsnVJBq/sdBh6kmT4NEZxH5vgIjrscefJAOXcw==",
2625 "dependencies": [
2626 "unist-util-visit"
2627 ]
2628 },
2629 "rehype-raw@7.0.0": {
2630 "integrity": "sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==",
2631 "dependencies": [
2632 "@types/hast",
2633 "hast-util-raw",
2634 "vfile"
2635 ]
2636 },
2637 "rehype-react@8.0.0": {
2638 "integrity": "sha512-vzo0YxYbB2HE+36+9HWXVdxNoNDubx63r5LBzpxBGVWM8s9mdnMdbmuJBAX6TTyuGdZjZix6qU3GcSuKCIWivw==",
2639 "dependencies": [
2640 "@types/hast",
2641 "hast-util-to-jsx-runtime",
2642 "unified"
2643 ]
2644 },
2645 "rehype-sanitize@6.0.0": {
2646 "integrity": "sha512-CsnhKNsyI8Tub6L4sm5ZFsme4puGfc6pYylvXo1AeqaGbjOYyzNv3qZPwvs0oMJ39eryyeOdmxwUIo94IpEhqg==",
2647 "dependencies": [
2648 "@types/hast",
2649 "hast-util-sanitize"
2650 ]
2651 },
2652 "remark-gfm@4.0.1": {
2653 "integrity": "sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==",
2654 "dependencies": [
2655 "@types/mdast",
2656 "mdast-util-gfm",
2657 "micromark-extension-gfm",
2658 "remark-parse",
2659 "remark-stringify",
2660 "unified"
2661 ]
2662 },
2663 "remark-parse@11.0.0": {
2664 "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==",
2665 "dependencies": [
2666 "@types/mdast",
2667 "mdast-util-from-markdown",
2668 "micromark-util-types",
2669 "unified"
2670 ]
2671 },
2672 "remark-rehype@11.1.2": {
2673 "integrity": "sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==",
2674 "dependencies": [
2675 "@types/hast",
2676 "@types/mdast",
2677 "mdast-util-to-hast",
2678 "unified",
2679 "vfile"
2680 ]
2681 },
2682 "remark-stringify@11.0.0": {
2683 "integrity": "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==",
2684 "dependencies": [
2685 "@types/mdast",
2686 "mdast-util-to-markdown",
2687 "unified"
2688 ]
2689 },
2690 "remend@1.3.0": {
2691 "integrity": "sha512-iIhggPkhW3hFImKtB10w0dz4EZbs28mV/dmbcYVonWEJ6UGHHpP+bFZnTh6GNWJONg5m+U56JrL+8IxZRdgWjw=="
2692 },
2693 "robust-predicates@3.0.2": {
2694 "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg=="
2695 },
2696 "rolldown@1.0.0-rc.10": {
2697 "integrity": "sha512-q7j6vvarRFmKpgJUT8HCAUljkgzEp4LAhPlJUvQhA5LA1SUL36s5QCysMutErzL3EbNOZOkoziSx9iZC4FddKA==",
2698 "dependencies": [
2699 "@oxc-project/types",
2700 "@rolldown/pluginutils@1.0.0-rc.10"
2701 ],
2702 "optionalDependencies": [
2703 "@rolldown/binding-android-arm64",
2704 "@rolldown/binding-darwin-arm64",
2705 "@rolldown/binding-darwin-x64",
2706 "@rolldown/binding-freebsd-x64",
2707 "@rolldown/binding-linux-arm-gnueabihf",
2708 "@rolldown/binding-linux-arm64-gnu",
2709 "@rolldown/binding-linux-arm64-musl",
2710 "@rolldown/binding-linux-ppc64-gnu",
2711 "@rolldown/binding-linux-s390x-gnu",
2712 "@rolldown/binding-linux-x64-gnu",
2713 "@rolldown/binding-linux-x64-musl",
2714 "@rolldown/binding-openharmony-arm64",
2715 "@rolldown/binding-wasm32-wasi",
2716 "@rolldown/binding-win32-arm64-msvc",
2717 "@rolldown/binding-win32-x64-msvc"
2718 ],
2719 "bin": true
2720 },
2721 "roughjs@4.6.6": {
2722 "integrity": "sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ==",
2723 "dependencies": [
2724 "hachure-fill",
2725 "path-data-parser",
2726 "points-on-curve",
2727 "points-on-path"
2728 ]
2729 },
2730 "rw@1.3.3": {
2731 "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ=="
2732 },
2733 "safer-buffer@2.1.2": {
2734 "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
2735 },
2736 "scheduler@0.27.0": {
2737 "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q=="
2738 },
2739 "semver@6.3.1": {
2740 "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
2741 "bin": true
2742 },
2743 "siginfo@2.0.0": {
2744 "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g=="
2745 },
2746 "sisteransi@1.0.5": {
2747 "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg=="
2748 },
2749 "source-map-js@1.2.1": {
2750 "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="
2751 },
2752 "space-separated-tokens@2.0.2": {
2753 "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q=="
2754 },
2755 "stackback@0.0.2": {
2756 "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw=="
2757 },
2758 "std-env@4.0.0": {
2759 "integrity": "sha512-zUMPtQ/HBY3/50VbpkupYHbRroTRZJPRLvreamgErJVys0ceuzMkD44J/QjqhHjOzK42GQ3QZIeFG1OYfOtKqQ=="
2760 },
2761 "streamdown@2.5.0_react@19.2.4_react-dom@19.2.4__react@19.2.4": {
2762 "integrity": "sha512-/tTnURfIOxZK/pqJAxsfCvETG/XCJHoWnk3jq9xLcuz6CSpnjjuxSRBTTL4PKGhxiZQf0lqPxGhImdpwcZ2XwA==",
2763 "dependencies": [
2764 "clsx",
2765 "hast-util-to-jsx-runtime",
2766 "html-url-attributes",
2767 "marked@17.0.4",
2768 "mermaid",
2769 "react",
2770 "react-dom",
2771 "rehype-harden",
2772 "rehype-raw",
2773 "rehype-sanitize",
2774 "remark-gfm",
2775 "remark-parse",
2776 "remark-rehype",
2777 "remend",
2778 "tailwind-merge",
2779 "unified",
2780 "unist-util-visit",
2781 "unist-util-visit-parents"
2782 ]
2783 },
2784 "stringify-entities@4.0.4": {
2785 "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==",
2786 "dependencies": [
2787 "character-entities-html4",
2788 "character-entities-legacy"
2789 ]
2790 },
2791 "style-to-js@1.1.21": {
2792 "integrity": "sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==",
2793 "dependencies": [
2794 "style-to-object"
2795 ]
2796 },
2797 "style-to-object@1.0.14": {
2798 "integrity": "sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==",
2799 "dependencies": [
2800 "inline-style-parser"
2801 ]
2802 },
2803 "stylis@4.3.6": {
2804 "integrity": "sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ=="
2805 },
2806 "tailwind-merge@3.5.0": {
2807 "integrity": "sha512-I8K9wewnVDkL1NTGoqWmVEIlUcB9gFriAEkXkfCjX5ib8ezGxtR3xD7iZIxrfArjEsH7F1CHD4RFUtxefdqV/A=="
2808 },
2809 "tailwindcss@4.2.2": {
2810 "integrity": "sha512-KWBIxs1Xb6NoLdMVqhbhgwZf2PGBpPEiwOqgI4pFIYbNTfBXiKYyWoTsXgBQ9WFg/OlhnvHaY+AEpW7wSmFo2Q=="
2811 },
2812 "tapable@2.3.0": {
2813 "integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg=="
2814 },
2815 "tinybench@2.9.0": {
2816 "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg=="
2817 },
2818 "tinyexec@1.0.4": {
2819 "integrity": "sha512-u9r3uZC0bdpGOXtlxUIdwf9pkmvhqJdrVCH9fapQtgy/OeTTMZ1nqH7agtvEfmGui6e1XxjcdrlxvxJvc3sMqw=="
2820 },
2821 "tinyglobby@0.2.15_picomatch@4.0.3": {
2822 "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==",
2823 "dependencies": [
2824 "fdir",
2825 "picomatch"
2826 ]
2827 },
2828 "tinypool@2.1.0": {
2829 "integrity": "sha512-Pugqs6M0m7Lv1I7FtxN4aoyToKg1C4tu+/381vH35y8oENM/Ai7f7C4StcoK4/+BSw9ebcS8jRiVrORFKCALLw=="
2830 },
2831 "tinyrainbow@3.1.0": {
2832 "integrity": "sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw=="
2833 },
2834 "trim-lines@3.0.1": {
2835 "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg=="
2836 },
2837 "trough@2.2.0": {
2838 "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw=="
2839 },
2840 "ts-dedent@2.2.0": {
2841 "integrity": "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ=="
2842 },
2843 "tslib@2.8.1": {
2844 "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="
2845 },
2846 "typescript@5.9.3": {
2847 "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
2848 "bin": true
2849 },
2850 "ufo@1.6.3": {
2851 "integrity": "sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q=="
2852 },
2853 "undici-types@6.21.0": {
2854 "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ=="
2855 },
2856 "undici-types@7.18.2": {
2857 "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w=="
2858 },
2859 "unified@11.0.5": {
2860 "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==",
2861 "dependencies": [
2862 "@types/unist@3.0.3",
2863 "bail",
2864 "devlop",
2865 "extend",
2866 "is-plain-obj",
2867 "trough",
2868 "vfile"
2869 ]
2870 },
2871 "unist-util-is@6.0.1": {
2872 "integrity": "sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==",
2873 "dependencies": [
2874 "@types/unist@3.0.3"
2875 ]
2876 },
2877 "unist-util-position@5.0.0": {
2878 "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==",
2879 "dependencies": [
2880 "@types/unist@3.0.3"
2881 ]
2882 },
2883 "unist-util-stringify-position@4.0.0": {
2884 "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==",
2885 "dependencies": [
2886 "@types/unist@3.0.3"
2887 ]
2888 },
2889 "unist-util-visit-parents@6.0.2": {
2890 "integrity": "sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==",
2891 "dependencies": [
2892 "@types/unist@3.0.3",
2893 "unist-util-is"
2894 ]
2895 },
2896 "unist-util-visit@5.1.0": {
2897 "integrity": "sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==",
2898 "dependencies": [
2899 "@types/unist@3.0.3",
2900 "unist-util-is",
2901 "unist-util-visit-parents"
2902 ]
2903 },
2904 "unplugin@2.1.0": {
2905 "integrity": "sha512-us4j03/499KhbGP8BU7Hrzrgseo+KdfJYWcbcajCOqsAyb8Gk0Yn2kiUIcZISYCb1JFaZfIuG3b42HmguVOKCQ==",
2906 "dependencies": [
2907 "acorn",
2908 "webpack-virtual-modules"
2909 ]
2910 },
2911 "update-browserslist-db@1.2.3_browserslist@4.28.1": {
2912 "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==",
2913 "dependencies": [
2914 "browserslist",
2915 "escalade",
2916 "picocolors"
2917 ],
2918 "bin": true
2919 },
2920 "util-deprecate@1.0.2": {
2921 "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
2922 },
2923 "uuid@11.1.0": {
2924 "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==",
2925 "bin": true
2926 },
2927 "vfile-location@5.0.3": {
2928 "integrity": "sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==",
2929 "dependencies": [
2930 "@types/unist@3.0.3",
2931 "vfile"
2932 ]
2933 },
2934 "vfile-message@4.0.3": {
2935 "integrity": "sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==",
2936 "dependencies": [
2937 "@types/unist@3.0.3",
2938 "unist-util-stringify-position"
2939 ]
2940 },
2941 "vfile@6.0.3": {
2942 "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==",
2943 "dependencies": [
2944 "@types/unist@3.0.3",
2945 "vfile-message"
2946 ]
2947 },
2948 "vite@8.0.1_@types+node@25.5.0": {
2949 "integrity": "sha512-wt+Z2qIhfFt85uiyRt5LPU4oVEJBXj8hZNWKeqFG4gRG/0RaRGJ7njQCwzFVjO+v4+Ipmf5CY7VdmZRAYYBPHw==",
2950 "dependencies": [
2951 "@types/node@25.5.0",
2952 "lightningcss",
2953 "picomatch",
2954 "postcss",
2955 "rolldown",
2956 "tinyglobby"
2957 ],
2958 "optionalDependencies": [
2959 "fsevents"
2960 ],
2961 "optionalPeers": [
2962 "@types/node@25.5.0"
2963 ],
2964 "bin": true
2965 },
2966 "vitest@4.1.0_@types+node@25.5.0_happy-dom@20.8.4_vite@8.0.1__@types+node@25.5.0": {
2967 "integrity": "sha512-YbDrMF9jM2Lqc++2530UourxZHmkKLxrs4+mYhEwqWS97WJ7wOYEkcr+QfRgJ3PW9wz3odRijLZjHEaRLTNbqw==",
2968 "dependencies": [
2969 "@types/node@25.5.0",
2970 "@vitest/expect",
2971 "@vitest/mocker",
2972 "@vitest/pretty-format",
2973 "@vitest/runner",
2974 "@vitest/snapshot",
2975 "@vitest/spy",
2976 "@vitest/utils",
2977 "es-module-lexer",
2978 "expect-type",
2979 "happy-dom",
2980 "magic-string",
2981 "obug",
2982 "pathe",
2983 "picomatch",
2984 "std-env",
2985 "tinybench",
2986 "tinyexec",
2987 "tinyglobby",
2988 "tinyrainbow",
2989 "vite",
2990 "why-is-node-running"
2991 ],
2992 "optionalPeers": [
2993 "@types/node@25.5.0",
2994 "happy-dom"
2995 ],
2996 "bin": true
2997 },
2998 "vscode-jsonrpc@8.2.0": {
2999 "integrity": "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA=="
3000 },
3001 "vscode-languageserver-protocol@3.17.5": {
3002 "integrity": "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==",
3003 "dependencies": [
3004 "vscode-jsonrpc",
3005 "vscode-languageserver-types"
3006 ]
3007 },
3008 "vscode-languageserver-textdocument@1.0.12": {
3009 "integrity": "sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA=="
3010 },
3011 "vscode-languageserver-types@3.17.5": {
3012 "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg=="
3013 },
3014 "vscode-languageserver@9.0.1": {
3015 "integrity": "sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==",
3016 "dependencies": [
3017 "vscode-languageserver-protocol"
3018 ],
3019 "bin": true
3020 },
3021 "vscode-uri@3.1.0": {
3022 "integrity": "sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ=="
3023 },
3024 "web-namespaces@2.0.1": {
3025 "integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ=="
3026 },
3027 "webpack-virtual-modules@0.6.2": {
3028 "integrity": "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ=="
3029 },
3030 "whatwg-mimetype@3.0.0": {
3031 "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q=="
3032 },
3033 "why-is-node-running@2.3.0": {
3034 "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==",
3035 "dependencies": [
3036 "siginfo",
3037 "stackback"
3038 ],
3039 "bin": true
3040 },
3041 "ws@8.19.0": {
3042 "integrity": "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg=="
3043 },
3044 "yallist@3.1.1": {
3045 "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
3046 },
3047 "zwitch@2.0.4": {
3048 "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A=="
3049 }
3050 },
3051 "workspace": {
3052 "dependencies": [
3053 "jsr:@clo/lib@3",
3054 "npm:@testing-library/react@^16.3.2",
3055 "npm:@types/hast@^3.0.4",
3056 "npm:@types/unist@^3.0.3",
3057 "npm:dequal@^2.0.3",
3058 "npm:hast-util-to-jsx-runtime@2.3.6",
3059 "npm:react-dom@^19.2.4",
3060 "npm:react@^19.2.4",
3061 "npm:rehype-react@8",
3062 "npm:remark-parse@11",
3063 "npm:remark-rehype@^11.1.2",
3064 "npm:unified@^11.0.5",
3065 "npm:vitest@4"
3066 ],
3067 "packageJson": {
3068 "dependencies": [
3069 "npm:@jsr/clo__lib@3",
3070 "npm:@tailwindcss/typography@~0.5.19",
3071 "npm:@tailwindcss/vite@^4.2.2",
3072 "npm:@testing-library/react@^16.3.2",
3073 "npm:@types/hast@^3.0.4",
3074 "npm:@types/node@^25.5.0",
3075 "npm:@types/react-dom@^19.2.3",
3076 "npm:@types/react@^19.2.14",
3077 "npm:@types/unist@^3.0.3",
3078 "npm:@vitejs/plugin-react@^6.0.1",
3079 "npm:dequal@2",
3080 "npm:happy-dom@^20.8.4",
3081 "npm:hast-util-to-jsx-runtime@2",
3082 "npm:oxfmt@0.40",
3083 "npm:oxlint@^1.55.0",
3084 "npm:react-dom@^19.2.4",
3085 "npm:react-markdown@^10.1.0",
3086 "npm:react-scan@~0.5.3",
3087 "npm:react@^19.2.4",
3088 "npm:rehype-react@8",
3089 "npm:remark-gfm@^4.0.1",
3090 "npm:remark-parse@11",
3091 "npm:remark-rehype@11",
3092 "npm:streamdown@^2.5.0",
3093 "npm:tailwindcss@^4.2.2",
3094 "npm:typescript@^5.9.3",
3095 "npm:unified@11",
3096 "npm:vite@8",
3097 "npm:vitest@4"
3098 ]
3099 }
3100 }
3101}
example/App.tsx+6-9
...@@ -2,11 +2,7 @@ import { type ReactNode, useDeferredValue, useId, useState } from "react";...@@ -2,11 +2,7 @@ import { type ReactNode, useDeferredValue, useId, useState } from "react";
2import ReactMarkdown from "react-markdown";2import ReactMarkdown from "react-markdown";
3import { Streamdown } from "streamdown";3import { Streamdown } from "streamdown";
4import { Markdown } from "../src/Markdown.ts";4import { Markdown } from "../src/Markdown.ts";
5import {5import { components, reactMarkdownComponents, streamdownComponents } from "./markdown-components";
6 components,
7 reactMarkdownComponents,
8 streamdownComponents,
9} from "./markdown-components";
10import { initialMarkdown, processor, reactMarkdownRemarkPlugins } from "./markdown-demo";6import { initialMarkdown, processor, reactMarkdownRemarkPlugins } from "./markdown-demo";
117
12type Renderer = "memo" | "streamdown" | "react-markdown";8type Renderer = "memo" | "streamdown" | "react-markdown";
...@@ -36,7 +32,10 @@ function ToggleSwitch({ checked, label, onChange }: ToggleSwitchProps) {...@@ -36,7 +32,10 @@ function ToggleSwitch({ checked, label, onChange }: ToggleSwitchProps) {
36 const id = useId();32 const id = useId();
3733
38 return (34 return (
39 <label className="inline-flex items-center gap-3 text-xs font-medium text-stone-600" htmlFor={id}>35 <label
36 className="inline-flex items-center gap-3 text-xs font-medium text-stone-600"
37 htmlFor={id}
38 >
40 <span>{label}</span>39 <span>{label}</span>
41 <span className="relative inline-flex h-6 w-11 shrink-0">40 <span className="relative inline-flex h-6 w-11 shrink-0">
42 <input41 <input
...@@ -148,9 +147,7 @@ export function App() {...@@ -148,9 +147,7 @@ export function App() {
148 ))}147 ))}
149 </div>148 </div>
150 }149 }
151 toolbar={150 toolbar={previewToolbar}
152 previewToolbar
153 }
154 >151 >
155 {renderer === "memo" ? (152 {renderer === "memo" ? (
156 <div className="preview-prose">153 <div className="preview-prose">
package.json+26-41
...@@ -1,65 +1,50 @@...@@ -1,65 +1,50 @@
1{1{
2 "license": "ISC",2 "name": "@clo/react-markdown",
3 "files": [
4 "dist"
5 ],
6 "type": "module",3 "type": "module",
4 "scripts": {
5 "demo": "vite dev",
6 "all": "pnpm --parallel fmt && pnpm --stream '/check|test$/'",
7 "test": "vitest",
8 "check": "oxlint --react-plugin --vitest-plugin --type-aware --type-check .",
9 "check:publish": "deno publish --dry-run --allow-dirty",
10 "fmt": "oxfmt --write ."
11 },
7 "exports": {12 "exports": {
8 ".": "./src/Markdown.ts",13 ".": "./src/Markdown.ts",
9 "./Predict": "./src/Predict.ts"14 "./Predict": "./src/Predict.ts"
10 },15 },
11 "publishConfig": {
12 "access": "public"
13 },
14 "scripts": {
15 "build": "vp pack",
16 "dev": "vp dev",
17 "test": "vp test",
18 "check": "vp check",
19 "prepublishOnly": "vp run build"
20 },
21 "dependencies": {16 "dependencies": {
22 "@clo/lib": "jsr:^3.0.0",17 "@clo/lib": "npm:@jsr/clo__lib@3.0.0",
23 "@types/hast": "^3.0.4",18 "@types/react": "^19",
24 "dequal": "^2.0.3"19 "dequal": "^2",
20 "hast-util-to-jsx-runtime": "^2",
21 "react": "^19",
22 "rehype-react": "^8",
23 "remark-parse": "^11",
24 "remark-rehype": "^11",
25 "unified": "^11"
25 },26 },
26 "devDependencies": {27 "devDependencies": {
27 "@tailwindcss/typography": "^0.5.19",28 "@tailwindcss/typography": "^0.5.19",
28 "@tailwindcss/vite": "^4.2.2",29 "@tailwindcss/vite": "^4.2.2",
29 "@testing-library/react": "^16.3.2",30 "@testing-library/react": "^16.3.2",
31 "@types/hast": "^3.0.4",
30 "@types/node": "^25.5.0",32 "@types/node": "^25.5.0",
31 "@types/react": "^19.2.14",33 "@types/react-dom": "~19",
32 "@types/react-dom": "^19.2.3",
33 "@types/unist": "^3.0.3",34 "@types/unist": "^3.0.3",
34 "@typescript/native-preview": "7.0.0-dev.20260318.1",
35 "@vitejs/plugin-react": "^6.0.1",35 "@vitejs/plugin-react": "^6.0.1",
36 "hast-util-to-jsx-runtime": "2.3.6",36 "happy-dom": "^20.8.4",
37 "react": "^19.2.4",37 "oxfmt": "^0.40.0",
38 "oxlint": "^1.55.0",
38 "react-dom": "^19.2.4",39 "react-dom": "^19.2.4",
39 "react-markdown": "^10.1.0",40 "react-markdown": "^10.1.0",
40 "react-scan": "^0.5.3",41 "react-scan": "^0.5.3",
41 "rehype-react": "^8.0.0",
42 "remark-gfm": "^4.0.1",42 "remark-gfm": "^4.0.1",
43 "remark-parse": "^11.0.0",
44 "remark-rehype": "^11.1.2",
45 "streamdown": "^2.5.0",43 "streamdown": "^2.5.0",
46 "tailwindcss": "^4.2.2",44 "tailwindcss": "^4.2.2",
47 "typescript": "^5.9.3",45 "typescript": "^5.9.3",
48 "unified": "^11.0.5",46 "vite": "^8.0.0",
49 "vite-plus": "^0.1.11"47 "vitest": "^4.0.0"
50 },
51 "peerDependencies": {
52 "react": "*",
53 "rehype-react": "^8.0.0",
54 "remark-parse": "^11.0.0",
55 "remark-rehype": "^11.0.0",
56 "unified": "^11.0.0"
57 },48 },
58 "packageManager": "pnpm@10.26.1",49 "packageManager": "pnpm@10.26.1"
59 "pnpm": {
60 "overrides": {
61 "vite": "npm:@voidzero-dev/vite-plus-core@latest",
62 "vitest": "npm:@voidzero-dev/vite-plus-test@latest"
63 }
64 }
65}50}
pnpm-lock.yaml+381-620
...@@ -4,57 +4,71 @@ settings:...@@ -4,57 +4,71 @@ settings:
4 autoInstallPeers: true4 autoInstallPeers: true
5 excludeLinksFromLockfile: false5 excludeLinksFromLockfile: false
66
7overrides:
8 vite: npm:@voidzero-dev/vite-plus-core@latest
9 vitest: npm:@voidzero-dev/vite-plus-test@latest
10
11importers:7importers:
128
13 .:9 .:
14 dependencies:10 dependencies:
15 '@clo/lib':11 '@clo/lib':
16 specifier: jsr:^3.0.012 specifier: npm:@jsr/clo__lib@3.0.0
17 version: '@jsr/clo__lib@3.0.0'13 version: '@jsr/clo__lib@3.0.0'
18 '@types/hast':14 '@types/react':
19 specifier: ^3.0.415 specifier: ^19
20 version: 3.0.416 version: 19.2.14
21 dequal:17 dequal:
22 specifier: ^2.0.318 specifier: ^2
23 version: 2.0.319 version: 2.0.3
20 hast-util-to-jsx-runtime:
21 specifier: ^2
22 version: 2.3.6
23 react:
24 specifier: ^19
25 version: 19.2.4
26 rehype-react:
27 specifier: ^8
28 version: 8.0.0
29 remark-parse:
30 specifier: ^11
31 version: 11.0.0
32 remark-rehype:
33 specifier: ^11
34 version: 11.1.2
35 unified:
36 specifier: ^11
37 version: 11.0.5
24 devDependencies:38 devDependencies:
25 '@tailwindcss/typography':39 '@tailwindcss/typography':
26 specifier: ^0.5.1940 specifier: ^0.5.19
27 version: 0.5.19(tailwindcss@4.2.2)41 version: 0.5.19(tailwindcss@4.2.2)
28 '@tailwindcss/vite':42 '@tailwindcss/vite':
29 specifier: ^4.2.243 specifier: ^4.2.2
30 version: 4.2.2(vite@8.0.0(@types/node@25.5.0)(jiti@2.6.1)(yaml@2.8.2))44 version: 4.2.2(vite@8.0.1(@types/node@25.5.0)(jiti@2.6.1)(yaml@2.8.2))
31 '@testing-library/react':45 '@testing-library/react':
32 specifier: ^16.3.246 specifier: ^16.3.2
33 version: 16.3.2(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)47 version: 16.3.2(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
48 '@types/hast':
49 specifier: ^3.0.4
50 version: 3.0.4
34 '@types/node':51 '@types/node':
35 specifier: ^25.5.052 specifier: ^25.5.0
36 version: 25.5.053 version: 25.5.0
37 '@types/react':
38 specifier: ^19.2.14
39 version: 19.2.14
40 '@types/react-dom':54 '@types/react-dom':
41 specifier: ^19.2.355 specifier: ~19
42 version: 19.2.3(@types/react@19.2.14)56 version: 19.2.3(@types/react@19.2.14)
43 '@types/unist':57 '@types/unist':
44 specifier: ^3.0.358 specifier: ^3.0.3
45 version: 3.0.359 version: 3.0.3
46 '@typescript/native-preview':
47 specifier: 7.0.0-dev.20260318.1
48 version: 7.0.0-dev.20260318.1
49 '@vitejs/plugin-react':60 '@vitejs/plugin-react':
50 specifier: ^6.0.161 specifier: ^6.0.1
51 version: 6.0.1(vite@8.0.0(@types/node@25.5.0)(jiti@2.6.1)(yaml@2.8.2))62 version: 6.0.1(vite@8.0.1(@types/node@25.5.0)(jiti@2.6.1)(yaml@2.8.2))
52 hast-util-to-jsx-runtime:63 happy-dom:
53 specifier: 2.3.664 specifier: ^20.8.4
54 version: 2.3.665 version: 20.8.4
55 react:66 oxfmt:
56 specifier: ^19.2.467 specifier: ^0.40.0
57 version: 19.2.468 version: 0.40.0
69 oxlint:
70 specifier: ^1.55.0
71 version: 1.56.0(oxlint-tsgolint@0.17.0)
58 react-dom:72 react-dom:
59 specifier: ^19.2.473 specifier: ^19.2.4
60 version: 19.2.4(react@19.2.4)74 version: 19.2.4(react@19.2.4)
...@@ -64,18 +78,9 @@ importers:...@@ -64,18 +78,9 @@ importers:
64 react-scan:78 react-scan:
65 specifier: ^0.5.379 specifier: ^0.5.3
66 version: 0.5.3(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)80 version: 0.5.3(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
67 rehype-react:
68 specifier: ^8.0.0
69 version: 8.0.0
70 remark-gfm:81 remark-gfm:
71 specifier: ^4.0.182 specifier: ^4.0.1
72 version: 4.0.183 version: 4.0.1
73 remark-parse:
74 specifier: ^11.0.0
75 version: 11.0.0
76 remark-rehype:
77 specifier: ^11.1.2
78 version: 11.1.2
79 streamdown:84 streamdown:
80 specifier: ^2.5.085 specifier: ^2.5.0
81 version: 2.5.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4)86 version: 2.5.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
...@@ -85,12 +90,12 @@ importers:...@@ -85,12 +90,12 @@ importers:
85 typescript:90 typescript:
86 specifier: ^5.9.391 specifier: ^5.9.3
87 version: 5.9.392 version: 5.9.3
88 unified:93 vite:
89 specifier: ^11.0.594 specifier: ^8.0.0
90 version: 11.0.595 version: 8.0.1(@types/node@25.5.0)(jiti@2.6.1)(yaml@2.8.2)
91 vite-plus:96 vitest:
92 specifier: ^0.1.1197 specifier: ^4.0.0
93 version: 0.1.12(@types/node@25.5.0)(happy-dom@20.8.4)(jiti@2.6.1)(typescript@5.9.3)(vite@8.0.0(@types/node@25.5.0)(jiti@2.6.1)(yaml@2.8.2))(yaml@2.8.2)98 version: 4.1.0(@types/node@25.5.0)(happy-dom@20.8.4)(vite@8.0.1(@types/node@25.5.0)(jiti@2.6.1)(yaml@2.8.2))
9499
95packages:100packages:
96101
...@@ -186,11 +191,11 @@ packages:...@@ -186,11 +191,11 @@ packages:
186 '@chevrotain/utils@11.1.2':191 '@chevrotain/utils@11.1.2':
187 resolution: {integrity: sha512-4mudFAQ6H+MqBTfqLmU7G1ZwRzCLfJEooL/fsF6rCX5eePMbGhoy5n4g+G4vlh2muDcsCTJtL+uKbOzWxs5LHA==}192 resolution: {integrity: sha512-4mudFAQ6H+MqBTfqLmU7G1ZwRzCLfJEooL/fsF6rCX5eePMbGhoy5n4g+G4vlh2muDcsCTJtL+uKbOzWxs5LHA==}
188193
189 '@emnapi/core@1.9.0':194 '@emnapi/core@1.9.1':
190 resolution: {integrity: sha512-0DQ98G9ZQZOxfUcQn1waV2yS8aWdZ6kJMbYCJB3oUBecjWYO1fqJ+a1DRfPF3O5JEkwqwP1A9QEN/9mYm2Yd0w==}195 resolution: {integrity: sha512-mukuNALVsoix/w1BJwFzwXBN/dHeejQtuVzcDsfOEsdpCumXb/E9j8w11h5S54tT1xhifGfbbSm/ICrObRb3KA==}
191196
192 '@emnapi/runtime@1.9.0':197 '@emnapi/runtime@1.9.1':
193 resolution: {integrity: sha512-QN75eB0IH2ywSpRpNddCRfQIhmJYBCJ1x5Lb3IscKAL8bMnVAKnRg8dCoXbHzVLLH7P38N2Z3mtulB7W0J0FKw==}198 resolution: {integrity: sha512-VYi5+ZVLhpgK4hQ0TAjiQiZ6ol0oe4mBx7mVv7IflsiEp0OWoVsp/+f9Vc1hOhE0TtkORVrI1GvzyreqpgWtkA==}
194199
195 '@emnapi/wasi-threads@1.2.0':200 '@emnapi/wasi-threads@1.2.0':
196 resolution: {integrity: sha512-N10dEJNSsUx41Z6pZsXU8FjPjpBEplgH24sfkmITrBED1/U2Esum9F3lfLrMjKHHjmi557zQn7kR9R+XWXu5Rg==}201 resolution: {integrity: sha512-N10dEJNSsUx41Z6pZsXU8FjPjpBEplgH24sfkmITrBED1/U2Esum9F3lfLrMjKHHjmi557zQn7kR9R+XWXu5Rg==}
...@@ -382,12 +387,8 @@ packages:...@@ -382,12 +387,8 @@ packages:
382 '@napi-rs/wasm-runtime@1.1.1':387 '@napi-rs/wasm-runtime@1.1.1':
383 resolution: {integrity: sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A==}388 resolution: {integrity: sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A==}
384389
385 '@oxc-project/runtime@0.115.0':390 '@oxc-project/types@0.120.0':
386 resolution: {integrity: sha512-Rg8Wlt5dCbXhQnsXPrkOjL1DTSvXLgb2R/KYfnf1/K+R0k6UMLEmbQXPM+kwrWqSmWA2t0B1EtHy2/3zikQpvQ==}391 resolution: {integrity: sha512-k1YNu55DuvAip/MGE1FTsIuU3FUCn6v/ujG9V7Nq5Df/kX2CWb13hhwD0lmJGMGqE+bE1MXvv9SZVnMzEXlWcg==}
387 engines: {node: ^20.19.0 || >=22.12.0}
388
389 '@oxc-project/types@0.115.0':
390 resolution: {integrity: sha512-4n91DKnebUS4yjUHl2g3/b2T+IUdCfmoZGhmwsovZCDaJSs+QkVAM+0AqqTxHSsHfeiMuueT75cZaZcT/m0pSw==}
391392
392 '@oxfmt/binding-android-arm-eabi@0.40.0':393 '@oxfmt/binding-android-arm-eabi@0.40.0':
393 resolution: {integrity: sha512-S6zd5r1w/HmqR8t0CTnGjFTBLDq2QKORPwriCHxo4xFNuhmOTABGjPaNvCJJVnrKBLsohOeiDX3YqQfJPF+FXw==}394 resolution: {integrity: sha512-S6zd5r1w/HmqR8t0CTnGjFTBLDq2QKORPwriCHxo4xFNuhmOTABGjPaNvCJJVnrKBLsohOeiDX3YqQfJPF+FXw==}
...@@ -533,123 +534,120 @@ packages:...@@ -533,123 +534,120 @@ packages:
533 cpu: [x64]534 cpu: [x64]
534 os: [win32]535 os: [win32]
535536
536 '@oxlint/binding-android-arm-eabi@1.55.0':537 '@oxlint/binding-android-arm-eabi@1.56.0':
537 resolution: {integrity: sha512-NhvgAhncTSOhRahQSCnkK/4YIGPjTmhPurQQ2dwt2IvwCMTvZRW5vF2K10UBOxFve4GZDMw6LtXZdC2qeuYIVQ==}538 resolution: {integrity: sha512-IyfYPthZyiSKwAv/dLjeO18SaK8MxLI9Yss2JrRDyweQAkuL3LhEy7pwIwI7uA3KQc1Vdn20kdmj3q0oUIQL6A==}
538 engines: {node: ^20.19.0 || >=22.12.0}539 engines: {node: ^20.19.0 || >=22.12.0}
539 cpu: [arm]540 cpu: [arm]
540 os: [android]541 os: [android]
541542
542 '@oxlint/binding-android-arm64@1.55.0':543 '@oxlint/binding-android-arm64@1.56.0':
543 resolution: {integrity: sha512-P9iWRh+Ugqhg+D7rkc7boHX8o3H2h7YPcZHQIgvVBgnua5tk4LR2L+IBlreZs58/95cd2x3/004p5VsQM9z4SA==}544 resolution: {integrity: sha512-Ga5zYrzH6vc/VFxhn6MmyUnYEfy9vRpwTIks99mY3j6Nz30yYpIkWryI0QKPCgvGUtDSXVLEaMum5nA+WrNOSg==}
544 engines: {node: ^20.19.0 || >=22.12.0}545 engines: {node: ^20.19.0 || >=22.12.0}
545 cpu: [arm64]546 cpu: [arm64]
546 os: [android]547 os: [android]
547548
548 '@oxlint/binding-darwin-arm64@1.55.0':549 '@oxlint/binding-darwin-arm64@1.56.0':
549 resolution: {integrity: sha512-esakkJIt7WFAhT30P/Qzn96ehFpzdZ1mNuzpOb8SCW7lI4oB8VsyQnkSHREM671jfpuBb/o2ppzBCx5l0jpgMA==}550 resolution: {integrity: sha512-ogmbdJysnw/D4bDcpf1sPLpFThZ48lYp4aKYm10Z/6Nh1SON6NtnNhTNOlhEY296tDFItsZUz+2tgcSYqh8Eyw==}
550 engines: {node: ^20.19.0 || >=22.12.0}551 engines: {node: ^20.19.0 || >=22.12.0}
551 cpu: [arm64]552 cpu: [arm64]
552 os: [darwin]553 os: [darwin]
553554
554 '@oxlint/binding-darwin-x64@1.55.0':555 '@oxlint/binding-darwin-x64@1.56.0':
555 resolution: {integrity: sha512-xDMFRCCAEK9fOH6As2z8ELsC+VDGSFRHwIKVSilw+xhgLwTDFu37rtmRbmUlx8rRGS6cWKQPTc47AVxAZEVVPQ==}556 resolution: {integrity: sha512-x8QE1h+RAtQ2g+3KPsP6Fk/tdz6zJQUv5c7fTrJxXV3GHOo+Ry5p/PsogU4U+iUZg0rj6hS+E4xi+mnwwlDCWQ==}
556 engines: {node: ^20.19.0 || >=22.12.0}557 engines: {node: ^20.19.0 || >=22.12.0}
557 cpu: [x64]558 cpu: [x64]
558 os: [darwin]559 os: [darwin]
559560
560 '@oxlint/binding-freebsd-x64@1.55.0':561 '@oxlint/binding-freebsd-x64@1.56.0':
561 resolution: {integrity: sha512-mYZqnwUD7ALCRxGenyLd1uuG+rHCL+OTT6S8FcAbVm/ZT2AZMGjvibp3F6k1SKOb2aeqFATmwRykrE41Q0GWVw==}562 resolution: {integrity: sha512-6G+WMZvwJpMvY7my+/SHEjb7BTk/PFbePqLpmVmUJRIsJMy/UlyYqjpuh0RCgYYkPLcnXm1rUM04kbTk8yS1Yg==}
562 engines: {node: ^20.19.0 || >=22.12.0}563 engines: {node: ^20.19.0 || >=22.12.0}
563 cpu: [x64]564 cpu: [x64]
564 os: [freebsd]565 os: [freebsd]
565566
566 '@oxlint/binding-linux-arm-gnueabihf@1.55.0':567 '@oxlint/binding-linux-arm-gnueabihf@1.56.0':
567 resolution: {integrity: sha512-LcX6RYcF9vL9ESGwJW3yyIZ/d/ouzdOKXxCdey1q0XJOW1asrHsIg5MmyKdEBR4plQx+shvYeQne7AzW5f3T1w==}568 resolution: {integrity: sha512-YYHBsk/sl7fYwQOok+6W5lBPeUEvisznV/HZD2IfZmF3Bns6cPC3Z0vCtSEOaAWTjYWN3jVsdu55jMxKlsdlhg==}
568 engines: {node: ^20.19.0 || >=22.12.0}569 engines: {node: ^20.19.0 || >=22.12.0}
569 cpu: [arm]570 cpu: [arm]
570 os: [linux]571 os: [linux]
571572
572 '@oxlint/binding-linux-arm-musleabihf@1.55.0':573 '@oxlint/binding-linux-arm-musleabihf@1.56.0':
573 resolution: {integrity: sha512-C+8GS1rPtK+dI7mJFkqoRBkDuqbrNihnyYQsJPS9ez+8zF9JzfvU19lawqt4l/Y23o5uQswE/DORa8aiXUih3w==}574 resolution: {integrity: sha512-+AZK8rOUr78y8WT6XkDb04IbMRqauNV+vgT6f8ZLOH8wnpQ9i7Nol0XLxAu+Cq7Sb+J9wC0j6Km5hG8rj47/yQ==}
574 engines: {node: ^20.19.0 || >=22.12.0}575 engines: {node: ^20.19.0 || >=22.12.0}
575 cpu: [arm]576 cpu: [arm]
576 os: [linux]577 os: [linux]
577578
578 '@oxlint/binding-linux-arm64-gnu@1.55.0':579 '@oxlint/binding-linux-arm64-gnu@1.56.0':
579 resolution: {integrity: sha512-ErLE4XbmcCopA4/CIDiH6J1IAaDOMnf/KSx/aFObs4/OjAAM3sFKWGZ57pNOMxhhyBdcmcXwYymph9GwcpcqgQ==}580 resolution: {integrity: sha512-urse2SnugwJRojUkGSSeH2LPMaje5Q50yQtvtL9HFckiyeqXzoFwOAZqD5TR29R2lq7UHidfFDM9EGcchcbb8A==}
580 engines: {node: ^20.19.0 || >=22.12.0}581 engines: {node: ^20.19.0 || >=22.12.0}
581 cpu: [arm64]582 cpu: [arm64]
582 os: [linux]583 os: [linux]
583584
584 '@oxlint/binding-linux-arm64-musl@1.55.0':585 '@oxlint/binding-linux-arm64-musl@1.56.0':
585 resolution: {integrity: sha512-/kp65avi6zZfqEng56TTuhiy3P/3pgklKIdf38yvYeJ9/PgEeRA2A2AqKAKbZBNAqUzrzHhz9jF6j/PZvhJzTQ==}586 resolution: {integrity: sha512-rkTZkBfJ4TYLjansjSzL6mgZOdN5IvUnSq3oNJSLwBcNvy3dlgQtpHPrRxrCEbbcp7oQ6If0tkNaqfOsphYZ9g==}
586 engines: {node: ^20.19.0 || >=22.12.0}587 engines: {node: ^20.19.0 || >=22.12.0}
587 cpu: [arm64]588 cpu: [arm64]
588 os: [linux]589 os: [linux]
589590
590 '@oxlint/binding-linux-ppc64-gnu@1.55.0':591 '@oxlint/binding-linux-ppc64-gnu@1.56.0':
591 resolution: {integrity: sha512-A6pTdXwcEEwL/nmz0eUJ6WxmxcoIS+97GbH96gikAyre3s5deC7sts38ZVVowjS2QQFuSWkpA4ZmQC0jZSNvJQ==}592 resolution: {integrity: sha512-uqL1kMH3u69/e1CH2EJhP3CP28jw2ExLsku4o8RVAZ7fySo9zOyI2fy9pVlTAp4voBLVgzndXi3SgtdyCTa2aA==}
592 engines: {node: ^20.19.0 || >=22.12.0}593 engines: {node: ^20.19.0 || >=22.12.0}
593 cpu: [ppc64]594 cpu: [ppc64]
594 os: [linux]595 os: [linux]
595596
596 '@oxlint/binding-linux-riscv64-gnu@1.55.0':597 '@oxlint/binding-linux-riscv64-gnu@1.56.0':
597 resolution: {integrity: sha512-clj0lnIN+V52G9tdtZl0LbdTSurnZ1NZj92Je5X4lC7gP5jiCSW+Y/oiDiSauBAD4wrHt2S7nN3pA0zfKYK/6Q==}598 resolution: {integrity: sha512-j0CcMBOgV6KsRaBdsebIeiy7hCjEvq2KdEsiULf2LZqAq0v1M1lWjelhCV57LxsqaIGChXFuFJ0RiFrSRHPhSg==}
598 engines: {node: ^20.19.0 || >=22.12.0}599 engines: {node: ^20.19.0 || >=22.12.0}
599 cpu: [riscv64]600 cpu: [riscv64]
600 os: [linux]601 os: [linux]
601602
602 '@oxlint/binding-linux-riscv64-musl@1.55.0':603 '@oxlint/binding-linux-riscv64-musl@1.56.0':
603 resolution: {integrity: sha512-NNu08pllN5x/O94/sgR3DA8lbrGBnTHsINZZR0hcav1sj79ksTiKKm1mRzvZvacwQ0hUnGinFo+JO75ok2PxYg==}604 resolution: {integrity: sha512-7VDOiL8cDG3DQ/CY3yKjbV1c4YPvc4vH8qW09Vv+5ukq3l/Kcyr6XGCd5NvxUmxqDb2vjMpM+eW/4JrEEsUetA==}
604 engines: {node: ^20.19.0 || >=22.12.0}605 engines: {node: ^20.19.0 || >=22.12.0}
605 cpu: [riscv64]606 cpu: [riscv64]
606 os: [linux]607 os: [linux]
607608
608 '@oxlint/binding-linux-s390x-gnu@1.55.0':609 '@oxlint/binding-linux-s390x-gnu@1.56.0':
609 resolution: {integrity: sha512-BvfQz3PRlWZRoEZ17dZCqgQsMRdpzGZomJkVATwCIGhHVVeHJMQdmdXPSjcT1DCNUrOjXnVyj1RGDj5+/Je2+Q==}610 resolution: {integrity: sha512-JGRpX0M+ikD3WpwJ7vKcHKV6Kg0dT52BW2Eu2BupXotYeqGXBrbY+QPkAyKO6MNgKozyTNaRh3r7g+VWgyAQYQ==}
610 engines: {node: ^20.19.0 || >=22.12.0}611 engines: {node: ^20.19.0 || >=22.12.0}
611 cpu: [s390x]612 cpu: [s390x]
612 os: [linux]613 os: [linux]
613614
614 '@oxlint/binding-linux-x64-gnu@1.55.0':615 '@oxlint/binding-linux-x64-gnu@1.56.0':
615 resolution: {integrity: sha512-ngSOoFCSBMKVQd24H8zkbcBNc7EHhjnF1sv3mC9NNXQ/4rRjI/4Dj9+9XoDZeFEkF1SX1COSBXF1b2Pr9rqdEw==}616 resolution: {integrity: sha512-dNaICPvtmuxFP/VbqdofrLqdS3bM/AKJN3LMJD52si44ea7Be1cBk6NpfIahaysG9Uo+L98QKddU9CD5L8UHnQ==}
616 engines: {node: ^20.19.0 || >=22.12.0}617 engines: {node: ^20.19.0 || >=22.12.0}
617 cpu: [x64]618 cpu: [x64]
618 os: [linux]619 os: [linux]
619620
620 '@oxlint/binding-linux-x64-musl@1.55.0':621 '@oxlint/binding-linux-x64-musl@1.56.0':
621 resolution: {integrity: sha512-BDpP7W8GlaG7BR6QjGZAleYzxoyKc/D24spZIF2mB3XsfALQJJT/OBmP8YpeTb1rveFSBHzl8T7l0aqwkWNdGA==}622 resolution: {integrity: sha512-pF1vOtM+GuXmbklM1hV8WMsn6tCNPvkUzklj/Ej98JhlanbmA2RB1BILgOpwSuCTRTIYx2MXssmEyQQ90QF5aA==}
622 engines: {node: ^20.19.0 || >=22.12.0}623 engines: {node: ^20.19.0 || >=22.12.0}
623 cpu: [x64]624 cpu: [x64]
624 os: [linux]625 os: [linux]
625626
626 '@oxlint/binding-openharmony-arm64@1.55.0':627 '@oxlint/binding-openharmony-arm64@1.56.0':
627 resolution: {integrity: sha512-PS6GFvmde/pc3fCA2Srt51glr8Lcxhpf6WIBFfLphndjRrD34NEcses4TSxQrEcxYo6qVywGfylM0ZhSCF2gGA==}628 resolution: {integrity: sha512-bp8NQ4RE6fDIFLa4bdBiOA+TAvkNkg+rslR+AvvjlLTYXLy9/uKAYLQudaQouWihLD/hgkrXIKKzXi5IXOewwg==}
628 engines: {node: ^20.19.0 || >=22.12.0}629 engines: {node: ^20.19.0 || >=22.12.0}
629 cpu: [arm64]630 cpu: [arm64]
630 os: [openharmony]631 os: [openharmony]
631632
632 '@oxlint/binding-win32-arm64-msvc@1.55.0':633 '@oxlint/binding-win32-arm64-msvc@1.56.0':
633 resolution: {integrity: sha512-P6JcLJGs/q1UOvDLzN8otd9JsH4tsuuPDv+p7aHqHM3PrKmYdmUvkNj4K327PTd35AYcznOCN+l4ZOaq76QzSw==}634 resolution: {integrity: sha512-PxT4OJDfMOQBzo3OlzFb9gkoSD+n8qSBxyVq2wQSZIHFQYGEqIRTo9M0ZStvZm5fdhMqaVYpOnJvH2hUMEDk/g==}
634 engines: {node: ^20.19.0 || >=22.12.0}635 engines: {node: ^20.19.0 || >=22.12.0}
635 cpu: [arm64]636 cpu: [arm64]
636 os: [win32]637 os: [win32]
637638
638 '@oxlint/binding-win32-ia32-msvc@1.55.0':639 '@oxlint/binding-win32-ia32-msvc@1.56.0':
639 resolution: {integrity: sha512-gzkk4zE2zsE+WmRxFOiAZHpCpUNDFytEakqNXoNHW+PnYEOTPKDdW6nrzgSeTbGKVPXNAKQnRnMgrh7+n3Xueg==}640 resolution: {integrity: sha512-PTRy6sIEPqy2x8PTP1baBNReN/BNEFmde0L+mYeHmjXE1Vlcc9+I5nsqENsB2yAm5wLkzPoTNCMY/7AnabT4/A==}
640 engines: {node: ^20.19.0 || >=22.12.0}641 engines: {node: ^20.19.0 || >=22.12.0}
641 cpu: [ia32]642 cpu: [ia32]
642 os: [win32]643 os: [win32]
643644
644 '@oxlint/binding-win32-x64-msvc@1.55.0':645 '@oxlint/binding-win32-x64-msvc@1.56.0':
645 resolution: {integrity: sha512-ZFALNow2/og75gvYzNP7qe+rREQ5xunktwA+lgykoozHZ6hw9bqg4fn5j2UvG4gIn1FXqrZHkOAXuPf5+GOYTQ==}646 resolution: {integrity: sha512-ZHa0clocjLmIDr+1LwoWtxRcoYniAvERotvwKUYKhH41NVfl0Y4LNbyQkwMZzwDvKklKGvGZ5+DAG58/Ik47tQ==}
646 engines: {node: ^20.19.0 || >=22.12.0}647 engines: {node: ^20.19.0 || >=22.12.0}
647 cpu: [x64]648 cpu: [x64]
648 os: [win32]649 os: [win32]
649650
650 '@polka/url@1.0.0-next.29':
651 resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==}
652
653 '@preact/signals-core@1.14.0':651 '@preact/signals-core@1.14.0':
654 resolution: {integrity: sha512-AowtCcCU/33lFlh1zRFf/u+12rfrhtNakj7UpaGEsmMwUKpKWMVvcktOGcwBBNiB4lWrZWc01LhiyyzVklJyaQ==}652 resolution: {integrity: sha512-AowtCcCU/33lFlh1zRFf/u+12rfrhtNakj7UpaGEsmMwUKpKWMVvcktOGcwBBNiB4lWrZWc01LhiyyzVklJyaQ==}
655653
...@@ -658,101 +656,101 @@ packages:...@@ -658,101 +656,101 @@ packages:
658 peerDependencies:656 peerDependencies:
659 preact: 10.x657 preact: 10.x
660658
661 '@rolldown/binding-android-arm64@1.0.0-rc.9':659 '@rolldown/binding-android-arm64@1.0.0-rc.10':
662 resolution: {integrity: sha512-lcJL0bN5hpgJfSIz/8PIf02irmyL43P+j1pTCfbD1DbLkmGRuFIA4DD3B3ZOvGqG0XiVvRznbKtN0COQVaKUTg==}660 resolution: {integrity: sha512-jOHxwXhxmFKuXztiu1ORieJeTbx5vrTkcOkkkn2d35726+iwhrY1w/+nYY/AGgF12thg33qC3R1LMBF5tHTZHg==}
663 engines: {node: ^20.19.0 || >=22.12.0}661 engines: {node: ^20.19.0 || >=22.12.0}
664 cpu: [arm64]662 cpu: [arm64]
665 os: [android]663 os: [android]
666664
667 '@rolldown/binding-darwin-arm64@1.0.0-rc.9':665 '@rolldown/binding-darwin-arm64@1.0.0-rc.10':
668 resolution: {integrity: sha512-J7Zk3kLYFsLtuH6U+F4pS2sYVzac0qkjcO5QxHS7OS7yZu2LRs+IXo+uvJ/mvpyUljDJ3LROZPoQfgBIpCMhdQ==}666 resolution: {integrity: sha512-gED05Teg/vtTZbIJBc4VNMAxAFDUPkuO/rAIyyxZjTj1a1/s6z5TII/5yMGZ0uLRCifEtwUQn8OlYzuYc0m70w==}
669 engines: {node: ^20.19.0 || >=22.12.0}667 engines: {node: ^20.19.0 || >=22.12.0}
670 cpu: [arm64]668 cpu: [arm64]
671 os: [darwin]669 os: [darwin]
672670
673 '@rolldown/binding-darwin-x64@1.0.0-rc.9':671 '@rolldown/binding-darwin-x64@1.0.0-rc.10':
674 resolution: {integrity: sha512-iwtmmghy8nhfRGeNAIltcNXzD0QMNaaA5U/NyZc1Ia4bxrzFByNMDoppoC+hl7cDiUq5/1CnFthpT9n+UtfFyg==}672 resolution: {integrity: sha512-rI15NcM1mA48lqrIxVkHfAqcyFLcQwyXWThy+BQ5+mkKKPvSO26ir+ZDp36AgYoYVkqvMcdS8zOE6SeBsR9e8A==}
675 engines: {node: ^20.19.0 || >=22.12.0}673 engines: {node: ^20.19.0 || >=22.12.0}
676 cpu: [x64]674 cpu: [x64]
677 os: [darwin]675 os: [darwin]
678676
679 '@rolldown/binding-freebsd-x64@1.0.0-rc.9':677 '@rolldown/binding-freebsd-x64@1.0.0-rc.10':
680 resolution: {integrity: sha512-DLFYI78SCiZr5VvdEplsVC2Vx53lnA4/Ga5C65iyldMVaErr86aiqCoNBLl92PXPfDtUYjUh+xFFor40ueNs4Q==}678 resolution: {integrity: sha512-XZRXHdTa+4ME1MuDVp021+doQ+z6Ei4CCFmNc5/sKbqb8YmkiJdj8QKlV3rCI0AJtAeSB5n0WGPuJWNL9p/L2w==}
681 engines: {node: ^20.19.0 || >=22.12.0}679 engines: {node: ^20.19.0 || >=22.12.0}
682 cpu: [x64]680 cpu: [x64]
683 os: [freebsd]681 os: [freebsd]
684682
685 '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.9':683 '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.10':
686 resolution: {integrity: sha512-CsjTmTwd0Hri6iTw/DRMK7kOZ7FwAkrO4h8YWKoX/kcj833e4coqo2wzIFywtch/8Eb5enQ/lwLM7w6JX1W5RQ==}684 resolution: {integrity: sha512-R0SQMRluISSLzFE20sPWYHVmJdDQnRyc/FzSCN72BqQmh2SOZUFG+N3/vBZpR4C6WpEUVYJLrYUXaj43sJsNLA==}
687 engines: {node: ^20.19.0 || >=22.12.0}685 engines: {node: ^20.19.0 || >=22.12.0}
688 cpu: [arm]686 cpu: [arm]
689 os: [linux]687 os: [linux]
690688
691 '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.9':689 '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.10':
692 resolution: {integrity: sha512-2x9O2JbSPxpxMDhP9Z74mahAStibTlrBMW0520+epJH5sac7/LwZW5Bmg/E6CXuEF53JJFW509uP+lSedaUNxg==}690 resolution: {integrity: sha512-Y1reMrV/o+cwpduYhJuOE3OMKx32RMYCidf14y+HssARRmhDuWXJ4yVguDg2R/8SyyGNo+auzz64LnPK9Hq6jg==}
693 engines: {node: ^20.19.0 || >=22.12.0}691 engines: {node: ^20.19.0 || >=22.12.0}
694 cpu: [arm64]692 cpu: [arm64]
695 os: [linux]693 os: [linux]
696694
697 '@rolldown/binding-linux-arm64-musl@1.0.0-rc.9':695 '@rolldown/binding-linux-arm64-musl@1.0.0-rc.10':
698 resolution: {integrity: sha512-JA1QRW31ogheAIRhIg9tjMfsYbglXXYGNPLdPEYrwFxdbkQCAzvpSCSHCDWNl4hTtrol8WeboCSEpjdZK8qrCg==}696 resolution: {integrity: sha512-vELN+HNb2IzuzSBUOD4NHmP9yrGwl1DVM29wlQvx1OLSclL0NgVWnVDKl/8tEks79EFek/kebQKnNJkIAA4W2g==}
699 engines: {node: ^20.19.0 || >=22.12.0}697 engines: {node: ^20.19.0 || >=22.12.0}
700 cpu: [arm64]698 cpu: [arm64]
701 os: [linux]699 os: [linux]
702700
703 '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.9':701 '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.10':
704 resolution: {integrity: sha512-aOKU9dJheda8Kj8Y3w9gnt9QFOO+qKPAl8SWd7JPHP+Cu0EuDAE5wokQubLzIDQWg2myXq2XhTpOVS07qqvT+w==}702 resolution: {integrity: sha512-ZqrufYTgzxbHwpqOjzSsb0UV/aV2TFIY5rP8HdsiPTv/CuAgCRjM6s9cYFwQ4CNH+hf9Y4erHW1GjZuZ7WoI7w==}
705 engines: {node: ^20.19.0 || >=22.12.0}703 engines: {node: ^20.19.0 || >=22.12.0}
706 cpu: [ppc64]704 cpu: [ppc64]
707 os: [linux]705 os: [linux]
708706
709 '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.9':707 '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.10':
710 resolution: {integrity: sha512-OalO94fqj7IWRn3VdXWty75jC5dk4C197AWEuMhIpvVv2lw9fiPhud0+bW2ctCxb3YoBZor71QHbY+9/WToadA==}708 resolution: {integrity: sha512-gSlmVS1FZJSRicA6IyjoRoKAFK7IIHBs7xJuHRSmjImqk3mPPWbR7RhbnfH2G6bcmMEllCt2vQ/7u9e6bBnByg==}
711 engines: {node: ^20.19.0 || >=22.12.0}709 engines: {node: ^20.19.0 || >=22.12.0}
712 cpu: [s390x]710 cpu: [s390x]
713 os: [linux]711 os: [linux]
714712
715 '@rolldown/binding-linux-x64-gnu@1.0.0-rc.9':713 '@rolldown/binding-linux-x64-gnu@1.0.0-rc.10':
716 resolution: {integrity: sha512-cVEl1vZtBsBZna3YMjGXNvnYYrOJ7RzuWvZU0ffvJUexWkukMaDuGhUXn0rjnV0ptzGVkvc+vW9Yqy6h8YX4pg==}714 resolution: {integrity: sha512-eOCKUpluKgfObT2pHjztnaWEIbUabWzk3qPZ5PuacuPmr4+JtQG4k2vGTY0H15edaTnicgU428XW/IH6AimcQw==}
717 engines: {node: ^20.19.0 || >=22.12.0}715 engines: {node: ^20.19.0 || >=22.12.0}
718 cpu: [x64]716 cpu: [x64]
719 os: [linux]717 os: [linux]
720718
721 '@rolldown/binding-linux-x64-musl@1.0.0-rc.9':719 '@rolldown/binding-linux-x64-musl@1.0.0-rc.10':
722 resolution: {integrity: sha512-UzYnKCIIc4heAKgI4PZ3dfBGUZefGCJ1TPDuLHoCzgrMYPb5Rv6TLFuYtyM4rWyHM7hymNdsg5ik2C+UD9VDbA==}720 resolution: {integrity: sha512-Xdf2jQbfQowJnLcgYfD/m0Uu0Qj5OdxKallD78/IPPfzaiaI4KRAwZzHcKQ4ig1gtg1SuzC7jovNiM2TzQsBXA==}
723 engines: {node: ^20.19.0 || >=22.12.0}721 engines: {node: ^20.19.0 || >=22.12.0}
724 cpu: [x64]722 cpu: [x64]
725 os: [linux]723 os: [linux]
726724
727 '@rolldown/binding-openharmony-arm64@1.0.0-rc.9':725 '@rolldown/binding-openharmony-arm64@1.0.0-rc.10':
728 resolution: {integrity: sha512-+6zoiF+RRyf5cdlFQP7nm58mq7+/2PFaY2DNQeD4B87N36JzfF/l9mdBkkmTvSYcYPE8tMh/o3cRlsx1ldLfog==}726 resolution: {integrity: sha512-o1hYe8hLi1EY6jgPFyxQgQ1wcycX+qz8eEbVmot2hFkgUzPxy9+kF0u0NIQBeDq+Mko47AkaFFaChcvZa9UX9Q==}
729 engines: {node: ^20.19.0 || >=22.12.0}727 engines: {node: ^20.19.0 || >=22.12.0}
730 cpu: [arm64]728 cpu: [arm64]
731 os: [openharmony]729 os: [openharmony]
732730
733 '@rolldown/binding-wasm32-wasi@1.0.0-rc.9':731 '@rolldown/binding-wasm32-wasi@1.0.0-rc.10':
734 resolution: {integrity: sha512-rgFN6sA/dyebil3YTlL2evvi/M+ivhfnyxec7AccTpRPccno/rPoNlqybEZQBkcbZu8Hy+eqNJCqfBR8P7Pg8g==}732 resolution: {integrity: sha512-Ugv9o7qYJudqQO5Y5y2N2SOo6S4WiqiNOpuQyoPInnhVzCY+wi/GHltcLHypG9DEUYMB0iTB/huJrpadiAcNcA==}
735 engines: {node: '>=14.0.0'}733 engines: {node: '>=14.0.0'}
736 cpu: [wasm32]734 cpu: [wasm32]
737735
738 '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.9':736 '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.10':
739 resolution: {integrity: sha512-lHVNUG/8nlF1IQk1C0Ci574qKYyty2goMiPlRqkC5R+3LkXDkL5Dhx8ytbxq35m+pkHVIvIxviD+TWLdfeuadA==}737 resolution: {integrity: sha512-7UODQb4fQUNT/vmgDZBl3XOBAIOutP5R3O/rkxg0aLfEGQ4opbCgU5vOw/scPe4xOqBwL9fw7/RP1vAMZ6QlAQ==}
740 engines: {node: ^20.19.0 || >=22.12.0}738 engines: {node: ^20.19.0 || >=22.12.0}
741 cpu: [arm64]739 cpu: [arm64]
742 os: [win32]740 os: [win32]
743741
744 '@rolldown/binding-win32-x64-msvc@1.0.0-rc.9':742 '@rolldown/binding-win32-x64-msvc@1.0.0-rc.10':
745 resolution: {integrity: sha512-G0oA4+w1iY5AGi5HcDTxWsoxF509hrFIPB2rduV5aDqS9FtDg1CAfa7V34qImbjfhIcA8C+RekocJZA96EarwQ==}743 resolution: {integrity: sha512-PYxKHMVHOb5NJuDL53vBUl1VwUjymDcYI6rzpIni0C9+9mTiJedvUxSk7/RPp7OOAm3v+EjgMu9bIy3N6b408w==}
746 engines: {node: ^20.19.0 || >=22.12.0}744 engines: {node: ^20.19.0 || >=22.12.0}
747 cpu: [x64]745 cpu: [x64]
748 os: [win32]746 os: [win32]
749747
748 '@rolldown/pluginutils@1.0.0-rc.10':
749 resolution: {integrity: sha512-UkVDEFk1w3mveXeKgaTuYfKWtPbvgck1dT8TUG3bnccrH0XtLTuAyfCoks4Q/M5ZGToSVJTIQYCzy2g/atAOeg==}
750
750 '@rolldown/pluginutils@1.0.0-rc.7':751 '@rolldown/pluginutils@1.0.0-rc.7':
751 resolution: {integrity: sha512-qujRfC8sFVInYSPPMLQByRh7zhwkGFS4+tyMQ83srV1qrxL4g8E2tyxVVyxd0+8QeBM1mIk9KbWxkegRr76XzA==}752 resolution: {integrity: sha512-qujRfC8sFVInYSPPMLQByRh7zhwkGFS4+tyMQ83srV1qrxL4g8E2tyxVVyxd0+8QeBM1mIk9KbWxkegRr76XzA==}
752753
753 '@rolldown/pluginutils@1.0.0-rc.9':
754 resolution: {integrity: sha512-w6oiRWgEBl04QkFZgmW+jnU1EC9b57Oihi2ot3HNWIQRqgHp5PnYDia5iZ5FF7rpa4EQdiqMDXjlqKGXBhsoXw==}
755
756 '@rollup/pluginutils@5.3.0':754 '@rollup/pluginutils@5.3.0':
757 resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==}755 resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==}
758 engines: {node: '>=14.0.0'}756 engines: {node: '>=14.0.0'}
...@@ -981,8 +979,8 @@ packages:...@@ -981,8 +979,8 @@ packages:
981 '@types/d3@7.4.3':979 '@types/d3@7.4.3':
982 resolution: {integrity: sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==}980 resolution: {integrity: sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==}
983981
984 '@types/debug@4.1.12':982 '@types/debug@4.1.13':
985 resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==}983 resolution: {integrity: sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw==}
986984
987 '@types/deep-eql@4.0.2':985 '@types/deep-eql@4.0.2':
988 resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==}986 resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==}
...@@ -1039,45 +1037,6 @@ packages:...@@ -1039,45 +1037,6 @@ packages:
1039 '@types/ws@8.18.1':1037 '@types/ws@8.18.1':
1040 resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==}1038 resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==}
10411039
1042 '@typescript/native-preview-darwin-arm64@7.0.0-dev.20260318.1':
1043 resolution: {integrity: sha512-hsXZC0M5N2F/KdX/wjRywZPovdGBgWw9ARy0GWCw1dAynqdfDcuceKbUw+QwMSdvvsFbUjSomTlyFdT09p1mcA==}
1044 cpu: [arm64]
1045 os: [darwin]
1046
1047 '@typescript/native-preview-darwin-x64@7.0.0-dev.20260318.1':
1048 resolution: {integrity: sha512-lQl7DQkROqPZrx4C1MpFP0WNxdqv+9r4lErhd+57M2Kmxx1BmX3K5VMLJT9FZQFRtgntnYbwQAQ774Z17fv8rA==}
1049 cpu: [x64]
1050 os: [darwin]
1051
1052 '@typescript/native-preview-linux-arm64@7.0.0-dev.20260318.1':
1053 resolution: {integrity: sha512-1wv0qpJW4okKadShemVi4s7zGuiIRI7zTInRYDV/FfyQVyKrkTOzMtZXB6CF3Reus1HmRpGp5ADyc4MI7CCeJg==}
1054 cpu: [arm64]
1055 os: [linux]
1056
1057 '@typescript/native-preview-linux-arm@7.0.0-dev.20260318.1':
1058 resolution: {integrity: sha512-tE7uN00Po/oBg5VYaYM0C/QXroo6gdIRmFVZl543o46ihl0YKEZBMnyStRKKgPCI9oeYXyCNT6WR4MxSMz6ndA==}
1059 cpu: [arm]
1060 os: [linux]
1061
1062 '@typescript/native-preview-linux-x64@7.0.0-dev.20260318.1':
1063 resolution: {integrity: sha512-aSE7xAKYTOrxsFrIgmcaHjgXSSOnWrZ6ozNBeNxpGzd/gl2Ho3FCIwQb0NCXrDwF9AhpFRtHMWPpAPaJk24+rg==}
1064 cpu: [x64]
1065 os: [linux]
1066
1067 '@typescript/native-preview-win32-arm64@7.0.0-dev.20260318.1':
1068 resolution: {integrity: sha512-TV/Tn8cgWamb+6mvY45X2wF0vrTkQmRFCiN1pRRehEwxslDkqLVlpGAFpZndLaPlMb/wzwVpz1e/926xdAoO1w==}
1069 cpu: [arm64]
1070 os: [win32]
1071
1072 '@typescript/native-preview-win32-x64@7.0.0-dev.20260318.1':
1073 resolution: {integrity: sha512-AgOZODSYeTlQWVTioRG3AxHzIBSLbZZhyK19WPzjHW0LtxCcFi59G/Gn1uIshVL3sp1ESRg9SZ5mSiFdgvfK4g==}
1074 cpu: [x64]
1075 os: [win32]
1076
1077 '@typescript/native-preview@7.0.0-dev.20260318.1':
1078 resolution: {integrity: sha512-/7LF/2x29K++k147445omxNixPANTmwJl9p/IIzK8NbOeqVOFv1Gj1GQyOQqRdT4j/X6YDwO/p400/JKE+cBOw==}
1079 hasBin: true
1080
1081 '@ungap/structured-clone@1.3.0':1040 '@ungap/structured-clone@1.3.0':
1082 resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==}1041 resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==}
10831042
...@@ -1097,126 +1056,34 @@ packages:...@@ -1097,126 +1056,34 @@ packages:
1097 babel-plugin-react-compiler:1056 babel-plugin-react-compiler:
1098 optional: true1057 optional: true
10991058
1100 '@voidzero-dev/vite-plus-core@0.1.12':1059 '@vitest/expect@4.1.0':
1101 resolution: {integrity: sha512-j8YNe7A+8JcSoddztf5whvom/yJ7OKUO3Y5a3UoLIUmOL8YEKVv5nPANrxJ7eaFfHJoMnBEwzBpq1YVZ+H3uPA==}1060 resolution: {integrity: sha512-EIxG7k4wlWweuCLG9Y5InKFwpMEOyrMb6ZJ1ihYu02LVj/bzUwn2VMU+13PinsjRW75XnITeFrQBMH5+dLvCDA==}
1102 engines: {node: ^20.19.0 || >=22.12.0}1061
1062 '@vitest/mocker@4.1.0':
1063 resolution: {integrity: sha512-evxREh+Hork43+Y4IOhTo+h5lGmVRyjqI739Rz4RlUPqwrkFFDF6EMvOOYjTx4E8Tl6gyCLRL8Mu7Ry12a13Tw==}
1103 peerDependencies:1064 peerDependencies:
1104 '@arethetypeswrong/core': ^0.18.11065 msw: ^2.4.9
1105 '@tsdown/css': 0.21.31066 vite: ^6.0.0 || ^7.0.0 || ^8.0.0-0
1106 '@tsdown/exe': 0.21.3
1107 '@types/node': ^20.19.0 || >=22.12.0
1108 '@vitejs/devtools': ^0.0.0-alpha.31
1109 esbuild: ^0.27.0
1110 jiti: '>=1.21.0'
1111 less: ^4.0.0
1112 publint: ^0.3.0
1113 sass: ^1.70.0
1114 sass-embedded: ^1.70.0
1115 stylus: '>=0.54.8'
1116 sugarss: ^5.0.0
1117 terser: ^5.16.0
1118 tsx: ^4.8.1
1119 typescript: ^5.0.0
1120 unplugin-unused: ^0.5.0
1121 yaml: ^2.4.2
1122 peerDependenciesMeta:1067 peerDependenciesMeta:
1123 '@arethetypeswrong/core':1068 msw:
1124 optional: true
1125 '@tsdown/css':
1126 optional: true
1127 '@tsdown/exe':
1128 optional: true
1129 '@types/node':
1130 optional: true
1131 '@vitejs/devtools':
1132 optional: true
1133 esbuild:
1134 optional: true1069 optional: true
1135 jiti:1070 vite:
1136 optional: true
1137 less:
1138 optional: true
1139 publint:
1140 optional: true
1141 sass:
1142 optional: true
1143 sass-embedded:
1144 optional: true
1145 stylus:
1146 optional: true1071 optional: true
1147 sugarss:
1148 optional: true
1149 terser:
1150 optional: true
1151 tsx:
1152 optional: true
1153 typescript:
1154 optional: true
1155 unplugin-unused:
1156 optional: true
1157 yaml:
1158 optional: true
1159
1160 '@voidzero-dev/vite-plus-darwin-arm64@0.1.12':
1161 resolution: {integrity: sha512-tYQrfmcLxIqqr/de00oN7ayu+rYobEOjyR9AxoeJoNUqRyNQCdT0A5vg78kJNPaQCyL6ctgRRvpEKr0WHVmduQ==}
1162 engines: {node: ^20.19.0 || >=22.12.0}
1163 cpu: [arm64]
1164 os: [darwin]
1165
1166 '@voidzero-dev/vite-plus-darwin-x64@0.1.12':
1167 resolution: {integrity: sha512-852hO/Onx9Z5u0tOYOVEUVzYJUmWdlHeqYnNT6pj0IClgVp0+KSabxr7A2paTWEFWp6XbKWvqw5Y5cVwUV3A6Q==}
1168 engines: {node: ^20.19.0 || >=22.12.0}
1169 cpu: [x64]
1170 os: [darwin]
11711072
1172 '@voidzero-dev/vite-plus-linux-arm64-gnu@0.1.12':1073 '@vitest/pretty-format@4.1.0':
1173 resolution: {integrity: sha512-/gTh4tGyJKCNBn9SZUs3sq9QVRUmyuyseZefBgS223QRxdwFaxc7tIKaw91X59WXXYOzUYZOD5zsTcaIF4hc9A==}1074 resolution: {integrity: sha512-3RZLZlh88Ib0J7NQTRATfc/3ZPOnSUn2uDBUoGNn5T36+bALixmzphN26OUD3LRXWkJu4H0s5vvUeqBiw+kS0A==}
1174 engines: {node: ^20.19.0 || >=22.12.0}
1175 cpu: [arm64]
1176 os: [linux]
11771075
1178 '@voidzero-dev/vite-plus-linux-x64-gnu@0.1.12':1076 '@vitest/runner@4.1.0':
1179 resolution: {integrity: sha512-9oN9ITjK/Xq9Werx+6G6jnI3+F1S3g9lB36J1VAHyRlAEtuiCDV0E3YMoW2O7KzM/PlodZIZ8LStVkH7aA5ZCw==}1077 resolution: {integrity: sha512-Duvx2OzQ7d6OjchL+trw+aSrb9idh7pnNfxrklo14p3zmNL4qPCDeIJAK+eBKYjkIwG96Bc6vYuxhqDXQOWpoQ==}
1180 engines: {node: ^20.19.0 || >=22.12.0}
1181 cpu: [x64]
1182 os: [linux]
11831078
1184 '@voidzero-dev/vite-plus-test@0.1.12':1079 '@vitest/snapshot@4.1.0':
1185 resolution: {integrity: sha512-EE8Y2vQvqS4c/1qSa7qlhUY9koAG6wYev0NFAtDZsijQCHUqE7nYXGJYnyUInAE6GX4zlQDGg7tf2DAl+CISYw==}1080 resolution: {integrity: sha512-0Vy9euT1kgsnj1CHttwi9i9o+4rRLEaPRSOJ5gyv579GJkNpgJK+B4HSv/rAWixx2wdAFci1X4CEPjiu2bXIMg==}
1186 engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0}
1187 peerDependencies:
1188 '@edge-runtime/vm': '*'
1189 '@opentelemetry/api': ^1.9.0
1190 '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0
1191 '@vitest/ui': 4.1.0
1192 happy-dom: '*'
1193 jsdom: '*'
1194 vite: ^6.0.0 || ^7.0.0 || ^8.0.0-0
1195 peerDependenciesMeta:
1196 '@edge-runtime/vm':
1197 optional: true
1198 '@opentelemetry/api':
1199 optional: true
1200 '@types/node':
1201 optional: true
1202 '@vitest/ui':
1203 optional: true
1204 happy-dom:
1205 optional: true
1206 jsdom:
1207 optional: true
12081081
1209 '@voidzero-dev/vite-plus-win32-arm64-msvc@0.1.12':1082 '@vitest/spy@4.1.0':
1210 resolution: {integrity: sha512-JanAb6Y+6BmPhKNLvpZB/syeyY99bt7EPJCaLlbaCt3V0Y2Iw7c7dWBM4Sg4GZ7szGYdGw385fRz0n2M32f1rg==}1083 resolution: {integrity: sha512-pz77k+PgNpyMDv2FV6qmk5ZVau6c3R8HC8v342T2xlFxQKTrSeYw9waIJG8KgV9fFwAtTu4ceRzMivPTH6wSxw==}
1211 engines: {node: ^20.19.0 || >=22.12.0}
1212 cpu: [arm64]
1213 os: [win32]
12141084
1215 '@voidzero-dev/vite-plus-win32-x64-msvc@0.1.12':1085 '@vitest/utils@4.1.0':
1216 resolution: {integrity: sha512-Ei/UtTTp7UgeEGyV83jhDpSMXhwaZZzfS7Xiaj+zj80GGOwsBre0i+oHGZ7+TuVsZ7Im0sD8IZ9enCpKpV//AQ==}1086 resolution: {integrity: sha512-XfPXT6a8TZY3dcGY8EdwsBulFCIw+BeeX0RZn2x/BtiY/75YGh8FeWGG8QISN/WhaqSrE2OrlDgtF8q5uhOTmw==}
1217 engines: {node: ^20.19.0 || >=22.12.0}
1218 cpu: [x64]
1219 os: [win32]
12201087
1221 acorn@8.16.0:1088 acorn@8.16.0:
1222 resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==}1089 resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==}
...@@ -1241,8 +1108,8 @@ packages:...@@ -1241,8 +1108,8 @@ packages:
1241 bail@2.0.2:1108 bail@2.0.2:
1242 resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==}1109 resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==}
12431110
1244 baseline-browser-mapping@2.10.8:1111 baseline-browser-mapping@2.10.9:
1245 resolution: {integrity: sha512-PCLz/LXGBsNTErbtB6i5u4eLpHeMfi93aUv5duMmj6caNu6IphS4q6UevDnL36sZQv9lrP11dbPKGMaXPwMKfQ==}1112 resolution: {integrity: sha512-OZd0e2mU11ClX8+IdXe3r0dbqMEznRiT4TfbhYIbcRPZkqJ7Qwer8ij3GZAmLsRKa+II9V1v5czCkvmHH3XZBg==}
1246 engines: {node: '>=6.0.0'}1113 engines: {node: '>=6.0.0'}
1247 hasBin: true1114 hasBin: true
12481115
...@@ -1256,16 +1123,16 @@ packages:...@@ -1256,16 +1123,16 @@ packages:
1256 engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}1123 engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
1257 hasBin: true1124 hasBin: true
12581125
1259 cac@6.7.14:
1260 resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==}
1261 engines: {node: '>=8'}
1262
1263 caniuse-lite@1.0.30001780:1126 caniuse-lite@1.0.30001780:
1264 resolution: {integrity: sha512-llngX0E7nQci5BPJDqoZSbuZ5Bcs9F5db7EtgfwBerX9XGtkkiO4NwfDDIRzHTTwcYC8vC7bmeUEPGrKlR/TkQ==}1127 resolution: {integrity: sha512-llngX0E7nQci5BPJDqoZSbuZ5Bcs9F5db7EtgfwBerX9XGtkkiO4NwfDDIRzHTTwcYC8vC7bmeUEPGrKlR/TkQ==}
12651128
1266 ccount@2.0.1:1129 ccount@2.0.1:
1267 resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==}1130 resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==}
12681131
1132 chai@6.2.2:
1133 resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==}
1134 engines: {node: '>=18'}
1135
1269 character-entities-html4@2.1.0:1136 character-entities-html4@2.1.0:
1270 resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==}1137 resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==}
12711138
...@@ -1317,10 +1184,6 @@ packages:...@@ -1317,10 +1184,6 @@ packages:
1317 cose-base@2.2.0:1184 cose-base@2.2.0:
1318 resolution: {integrity: sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==}1185 resolution: {integrity: sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==}
13191186
1320 cross-spawn@7.0.6:
1321 resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
1322 engines: {node: '>= 8'}
1323
1324 cssesc@3.0.0:1187 cssesc@3.0.0:
1325 resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}1188 resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
1326 engines: {node: '>=4'}1189 engines: {node: '>=4'}
...@@ -1535,8 +1398,8 @@ packages:...@@ -1535,8 +1398,8 @@ packages:
1535 resolution: {integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==}1398 resolution: {integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==}
1536 engines: {node: '>=0.12'}1399 engines: {node: '>=0.12'}
15371400
1538 es-module-lexer@1.7.0:1401 es-module-lexer@2.0.0:
1539 resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==}1402 resolution: {integrity: sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==}
15401403
1541 esbuild@0.25.12:1404 esbuild@0.25.12:
1542 resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==}1405 resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==}
...@@ -1560,6 +1423,10 @@ packages:...@@ -1560,6 +1423,10 @@ packages:
1560 estree-walker@3.0.3:1423 estree-walker@3.0.3:
1561 resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==}1424 resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==}
15621425
1426 expect-type@1.3.0:
1427 resolution: {integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==}
1428 engines: {node: '>=12.0.0'}
1429
1563 extend@3.0.2:1430 extend@3.0.2:
1564 resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==}1431 resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==}
15651432
...@@ -1651,9 +1518,6 @@ packages:...@@ -1651,9 +1518,6 @@ packages:
1651 resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==}1518 resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==}
1652 engines: {node: '>=12'}1519 engines: {node: '>=12'}
16531520
1654 isexe@2.0.0:
1655 resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
1656
1657 jiti@2.6.1:1521 jiti@2.6.1:
1658 resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==}1522 resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==}
1659 hasBin: true1523 hasBin: true
...@@ -1671,8 +1535,8 @@ packages:...@@ -1671,8 +1535,8 @@ packages:
1671 engines: {node: '>=6'}1535 engines: {node: '>=6'}
1672 hasBin: true1536 hasBin: true
16731537
1674 katex@0.16.38:1538 katex@0.16.39:
1675 resolution: {integrity: sha512-cjHooZUmIAUmDsHBN+1n8LaZdpmbj03LtYeYPyuYB7OuloiaeaV6N4LcfjcnHVzGWjVQmKrxxTrpDcmSzEZQwQ==}1539 resolution: {integrity: sha512-FR2f6y85+81ZLO0GPhyQ+EJl/E5ILNWltJhpAeOTzRny952Z13x2867lTFDmvMZix//Ux3CuMQ2VkLXRbUwOFg==}
1676 hasBin: true1540 hasBin: true
16771541
1678 khroma@2.1.0:1542 khroma@2.1.0:
...@@ -1923,12 +1787,8 @@ packages:...@@ -1923,12 +1787,8 @@ packages:
1923 micromark@4.0.2:1787 micromark@4.0.2:
1924 resolution: {integrity: sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==}1788 resolution: {integrity: sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==}
19251789
1926 mlly@1.8.1:1790 mlly@1.8.2:
1927 resolution: {integrity: sha512-SnL6sNutTwRWWR/vcmCYHSADjiEesp5TGQQ0pXyLhW5IoeibRlF/CbSLailbB3CNqJUk9cVJ9dUDnbD7GrcHBQ==}1791 resolution: {integrity: sha512-d+ObxMQFmbt10sretNDytwt85VrbkhhUA/JBGm1MPaWJ65Cl4wOgLaB1NYvJSZ0Ef03MMEU/0xpPMXUIQ29UfA==}
1928
1929 mrmime@2.0.1:
1930 resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==}
1931 engines: {node: '>=10'}
19321792
1933 ms@2.1.3:1793 ms@2.1.3:
1934 resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}1794 resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
...@@ -1953,8 +1813,8 @@ packages:...@@ -1953,8 +1813,8 @@ packages:
1953 resolution: {integrity: sha512-TdrKhDZCgEYqONFo/j+KvGan7/k3tP5Ouz88wCqpOvJtI2QmcLfGsm1fcMvDnTik48Jj6z83IJBqlkmK9DnY1A==}1813 resolution: {integrity: sha512-TdrKhDZCgEYqONFo/j+KvGan7/k3tP5Ouz88wCqpOvJtI2QmcLfGsm1fcMvDnTik48Jj6z83IJBqlkmK9DnY1A==}
1954 hasBin: true1814 hasBin: true
19551815
1956 oxlint@1.55.0:1816 oxlint@1.56.0:
1957 resolution: {integrity: sha512-T+FjepiyWpaZMhekqRpH8Z3I4vNM610p6w+Vjfqgj5TZUxHXl7N8N5IPvmOU8U4XdTRxqtNNTh9Y4hLtr7yvFg==}1817 resolution: {integrity: sha512-Q+5Mj5PVaH/R6/fhMMFzw4dT+KPB+kQW4kaL8FOIq7tfhlnEVp6+3lcWqFruuTNlUo9srZUW3qH7Id4pskeR6g==}
1958 engines: {node: ^20.19.0 || >=22.12.0}1818 engines: {node: ^20.19.0 || >=22.12.0}
1959 hasBin: true1819 hasBin: true
1960 peerDependencies:1820 peerDependencies:
...@@ -1975,10 +1835,6 @@ packages:...@@ -1975,10 +1835,6 @@ packages:
1975 path-data-parser@0.1.0:1835 path-data-parser@0.1.0:
1976 resolution: {integrity: sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==}1836 resolution: {integrity: sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==}
19771837
1978 path-key@3.1.1:
1979 resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
1980 engines: {node: '>=8'}
1981
1982 pathe@2.0.3:1838 pathe@2.0.3:
1983 resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==}1839 resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==}
19841840
...@@ -1989,17 +1845,9 @@ packages:...@@ -1989,17 +1845,9 @@ packages:
1989 resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==}1845 resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==}
1990 engines: {node: '>=12'}1846 engines: {node: '>=12'}
19911847
1992 pixelmatch@7.1.0:
1993 resolution: {integrity: sha512-1wrVzJ2STrpmONHKBy228LM1b84msXDUoAzVEl0R8Mz4Ce6EPr+IVtxm8+yvrqLYMHswREkjYFaMxnyGnaY3Ng==}
1994 hasBin: true
1995
1996 pkg-types@1.3.1:1848 pkg-types@1.3.1:
1997 resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==}1849 resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==}
19981850
1999 pngjs@7.0.0:
2000 resolution: {integrity: sha512-LKWqWJRhstyYo9pGvgor/ivk2w94eSjE3RGVuzLGlr3NmD8bf7RcYGze1mNdEHRP6TRP6rMuDHk5t44hnTRyow==}
2001 engines: {node: '>=14.19.0'}
2002
2003 points-on-curve@0.2.0:1851 points-on-curve@0.2.0:
2004 resolution: {integrity: sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A==}1852 resolution: {integrity: sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A==}
20051853
...@@ -2083,8 +1931,8 @@ packages:...@@ -2083,8 +1931,8 @@ packages:
2083 robust-predicates@3.0.2:1931 robust-predicates@3.0.2:
2084 resolution: {integrity: sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==}1932 resolution: {integrity: sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==}
20851933
2086 rolldown@1.0.0-rc.9:1934 rolldown@1.0.0-rc.10:
2087 resolution: {integrity: sha512-9EbgWge7ZH+yqb4d2EnELAntgPTWbfL8ajiTW+SyhJEC4qhBbkCKbqFV4Ge4zmu5ziQuVbWxb/XwLZ+RIO7E8Q==}1935 resolution: {integrity: sha512-q7j6vvarRFmKpgJUT8HCAUljkgzEp4LAhPlJUvQhA5LA1SUL36s5QCysMutErzL3EbNOZOkoziSx9iZC4FddKA==}
2088 engines: {node: ^20.19.0 || >=22.12.0}1936 engines: {node: ^20.19.0 || >=22.12.0}
2089 hasBin: true1937 hasBin: true
20901938
...@@ -2104,17 +1952,8 @@ packages:...@@ -2104,17 +1952,8 @@ packages:
2104 resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}1952 resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
2105 hasBin: true1953 hasBin: true
21061954
2107 shebang-command@2.0.0:1955 siginfo@2.0.0:
2108 resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}1956 resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==}
2109 engines: {node: '>=8'}
2110
2111 shebang-regex@3.0.0:
2112 resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
2113 engines: {node: '>=8'}
2114
2115 sirv@3.0.2:
2116 resolution: {integrity: sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==}
2117 engines: {node: '>=18'}
21181957
2119 sisteransi@1.0.5:1958 sisteransi@1.0.5:
2120 resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==}1959 resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==}
...@@ -2126,6 +1965,9 @@ packages:...@@ -2126,6 +1965,9 @@ packages:
2126 space-separated-tokens@2.0.2:1965 space-separated-tokens@2.0.2:
2127 resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==}1966 resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==}
21281967
1968 stackback@0.0.2:
1969 resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==}
1970
2129 std-env@4.0.0:1971 std-env@4.0.0:
2130 resolution: {integrity: sha512-zUMPtQ/HBY3/50VbpkupYHbRroTRZJPRLvreamgErJVys0ceuzMkD44J/QjqhHjOzK42GQ3QZIeFG1OYfOtKqQ==}1972 resolution: {integrity: sha512-zUMPtQ/HBY3/50VbpkupYHbRroTRZJPRLvreamgErJVys0ceuzMkD44J/QjqhHjOzK42GQ3QZIeFG1OYfOtKqQ==}
21311973
...@@ -2172,9 +2014,9 @@ packages:...@@ -2172,9 +2014,9 @@ packages:
2172 resolution: {integrity: sha512-Pugqs6M0m7Lv1I7FtxN4aoyToKg1C4tu+/381vH35y8oENM/Ai7f7C4StcoK4/+BSw9ebcS8jRiVrORFKCALLw==}2014 resolution: {integrity: sha512-Pugqs6M0m7Lv1I7FtxN4aoyToKg1C4tu+/381vH35y8oENM/Ai7f7C4StcoK4/+BSw9ebcS8jRiVrORFKCALLw==}
2173 engines: {node: ^20.0.0 || >=22.0.0}2015 engines: {node: ^20.0.0 || >=22.0.0}
21742016
2175 totalist@3.0.1:2017 tinyrainbow@3.1.0:
2176 resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==}2018 resolution: {integrity: sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==}
2177 engines: {node: '>=6'}2019 engines: {node: '>=14.0.0'}
21782020
2179 trim-lines@3.0.1:2021 trim-lines@3.0.1:
2180 resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==}2022 resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==}
...@@ -2247,18 +2089,13 @@ packages:...@@ -2247,18 +2089,13 @@ packages:
2247 vfile@6.0.3:2089 vfile@6.0.3:
2248 resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==}2090 resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==}
22492091
2250 vite-plus@0.1.12:2092 vite@8.0.1:
2251 resolution: {integrity: sha512-8s1RzomZkgrJRiwiYWGq3R0txFPYfBBJGp73XNHQnme0KTTVH5dNm/E2GNyBSMFJbeeF7eh1OSgqWVc2FpR6eA==}2093 resolution: {integrity: sha512-wt+Z2qIhfFt85uiyRt5LPU4oVEJBXj8hZNWKeqFG4gRG/0RaRGJ7njQCwzFVjO+v4+Ipmf5CY7VdmZRAYYBPHw==}
2252 engines: {node: ^20.19.0 || >=22.12.0}
2253 hasBin: true
2254
2255 vite@8.0.0:
2256 resolution: {integrity: sha512-fPGaRNj9Zytaf8LEiBhY7Z6ijnFKdzU/+mL8EFBaKr7Vw1/FWcTBAMW0wLPJAGMPX38ZPVCVgLceWiEqeoqL2Q==}
2257 engines: {node: ^20.19.0 || >=22.12.0}2094 engines: {node: ^20.19.0 || >=22.12.0}
2258 hasBin: true2095 hasBin: true
2259 peerDependencies:2096 peerDependencies:
2260 '@types/node': ^20.19.0 || >=22.12.02097 '@types/node': ^20.19.0 || >=22.12.0
2261 '@vitejs/devtools': ^0.0.0-alpha.312098 '@vitejs/devtools': ^0.1.0
2262 esbuild: ^0.27.02099 esbuild: ^0.27.0
2263 jiti: '>=1.21.0'2100 jiti: '>=1.21.0'
2264 less: ^4.0.02101 less: ^4.0.0
...@@ -2295,6 +2132,41 @@ packages:...@@ -2295,6 +2132,41 @@ packages:
2295 yaml:2132 yaml:
2296 optional: true2133 optional: true
22972134
2135 vitest@4.1.0:
2136 resolution: {integrity: sha512-YbDrMF9jM2Lqc++2530UourxZHmkKLxrs4+mYhEwqWS97WJ7wOYEkcr+QfRgJ3PW9wz3odRijLZjHEaRLTNbqw==}
2137 engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0}
2138 hasBin: true
2139 peerDependencies:
2140 '@edge-runtime/vm': '*'
2141 '@opentelemetry/api': ^1.9.0
2142 '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0
2143 '@vitest/browser-playwright': 4.1.0
2144 '@vitest/browser-preview': 4.1.0
2145 '@vitest/browser-webdriverio': 4.1.0
2146 '@vitest/ui': 4.1.0
2147 happy-dom: '*'
2148 jsdom: '*'
2149 vite: ^6.0.0 || ^7.0.0 || ^8.0.0-0
2150 peerDependenciesMeta:
2151 '@edge-runtime/vm':
2152 optional: true
2153 '@opentelemetry/api':
2154 optional: true
2155 '@types/node':
2156 optional: true
2157 '@vitest/browser-playwright':
2158 optional: true
2159 '@vitest/browser-preview':
2160 optional: true
2161 '@vitest/browser-webdriverio':
2162 optional: true
2163 '@vitest/ui':
2164 optional: true
2165 happy-dom:
2166 optional: true
2167 jsdom:
2168 optional: true
2169
2298 vscode-jsonrpc@8.2.0:2170 vscode-jsonrpc@8.2.0:
2299 resolution: {integrity: sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==}2171 resolution: {integrity: sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==}
2300 engines: {node: '>=14.0.0'}2172 engines: {node: '>=14.0.0'}
...@@ -2325,9 +2197,9 @@ packages:...@@ -2325,9 +2197,9 @@ packages:
2325 resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==}2197 resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==}
2326 engines: {node: '>=12'}2198 engines: {node: '>=12'}
23272199
2328 which@2.0.2:2200 why-is-node-running@2.3.0:
2329 resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}2201 resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==}
2330 engines: {node: '>= 8'}2202 engines: {node: '>=8'}
2331 hasBin: true2203 hasBin: true
23322204
2333 ws@8.19.0:2205 ws@8.19.0:
...@@ -2481,13 +2353,13 @@ snapshots:...@@ -2481,13 +2353,13 @@ snapshots:
24812353
2482 '@chevrotain/utils@11.1.2': {}2354 '@chevrotain/utils@11.1.2': {}
24832355
2484 '@emnapi/core@1.9.0':2356 '@emnapi/core@1.9.1':
2485 dependencies:2357 dependencies:
2486 '@emnapi/wasi-threads': 1.2.02358 '@emnapi/wasi-threads': 1.2.0
2487 tslib: 2.8.12359 tslib: 2.8.1
2488 optional: true2360 optional: true
24892361
2490 '@emnapi/runtime@1.9.0':2362 '@emnapi/runtime@1.9.1':
2491 dependencies:2363 dependencies:
2492 tslib: 2.8.12364 tslib: 2.8.1
2493 optional: true2365 optional: true
...@@ -2581,7 +2453,7 @@ snapshots:...@@ -2581,7 +2453,7 @@ snapshots:
2581 dependencies:2453 dependencies:
2582 '@antfu/install-pkg': 1.1.02454 '@antfu/install-pkg': 1.1.0
2583 '@iconify/types': 2.0.02455 '@iconify/types': 2.0.0
2584 mlly: 1.8.12456 mlly: 1.8.2
25852457
2586 '@jridgewell/gen-mapping@0.3.13':2458 '@jridgewell/gen-mapping@0.3.13':
2587 dependencies:2459 dependencies:
...@@ -2610,14 +2482,12 @@ snapshots:...@@ -2610,14 +2482,12 @@ snapshots:
26102482
2611 '@napi-rs/wasm-runtime@1.1.1':2483 '@napi-rs/wasm-runtime@1.1.1':
2612 dependencies:2484 dependencies:
2613 '@emnapi/core': 1.9.02485 '@emnapi/core': 1.9.1
2614 '@emnapi/runtime': 1.9.02486 '@emnapi/runtime': 1.9.1
2615 '@tybys/wasm-util': 0.10.12487 '@tybys/wasm-util': 0.10.1
2616 optional: true2488 optional: true
26172489
2618 '@oxc-project/runtime@0.115.0': {}2490 '@oxc-project/types@0.120.0': {}
2619
2620 '@oxc-project/types@0.115.0': {}
26212491
2622 '@oxfmt/binding-android-arm-eabi@0.40.0':2492 '@oxfmt/binding-android-arm-eabi@0.40.0':
2623 optional: true2493 optional: true
...@@ -2694,65 +2564,63 @@ snapshots:...@@ -2694,65 +2564,63 @@ snapshots:
2694 '@oxlint-tsgolint/win32-x64@0.17.0':2564 '@oxlint-tsgolint/win32-x64@0.17.0':
2695 optional: true2565 optional: true
26962566
2697 '@oxlint/binding-android-arm-eabi@1.55.0':2567 '@oxlint/binding-android-arm-eabi@1.56.0':
2698 optional: true2568 optional: true
26992569
2700 '@oxlint/binding-android-arm64@1.55.0':2570 '@oxlint/binding-android-arm64@1.56.0':
2701 optional: true2571 optional: true
27022572
2703 '@oxlint/binding-darwin-arm64@1.55.0':2573 '@oxlint/binding-darwin-arm64@1.56.0':
2704 optional: true2574 optional: true
27052575
2706 '@oxlint/binding-darwin-x64@1.55.0':2576 '@oxlint/binding-darwin-x64@1.56.0':
2707 optional: true2577 optional: true
27082578
2709 '@oxlint/binding-freebsd-x64@1.55.0':2579 '@oxlint/binding-freebsd-x64@1.56.0':
2710 optional: true2580 optional: true
27112581
2712 '@oxlint/binding-linux-arm-gnueabihf@1.55.0':2582 '@oxlint/binding-linux-arm-gnueabihf@1.56.0':
2713 optional: true2583 optional: true
27142584
2715 '@oxlint/binding-linux-arm-musleabihf@1.55.0':2585 '@oxlint/binding-linux-arm-musleabihf@1.56.0':
2716 optional: true2586 optional: true
27172587
2718 '@oxlint/binding-linux-arm64-gnu@1.55.0':2588 '@oxlint/binding-linux-arm64-gnu@1.56.0':
2719 optional: true2589 optional: true
27202590
2721 '@oxlint/binding-linux-arm64-musl@1.55.0':2591 '@oxlint/binding-linux-arm64-musl@1.56.0':
2722 optional: true2592 optional: true
27232593
2724 '@oxlint/binding-linux-ppc64-gnu@1.55.0':2594 '@oxlint/binding-linux-ppc64-gnu@1.56.0':
2725 optional: true2595 optional: true
27262596
2727 '@oxlint/binding-linux-riscv64-gnu@1.55.0':2597 '@oxlint/binding-linux-riscv64-gnu@1.56.0':
2728 optional: true2598 optional: true
27292599
2730 '@oxlint/binding-linux-riscv64-musl@1.55.0':2600 '@oxlint/binding-linux-riscv64-musl@1.56.0':
2731 optional: true2601 optional: true
27322602
2733 '@oxlint/binding-linux-s390x-gnu@1.55.0':2603 '@oxlint/binding-linux-s390x-gnu@1.56.0':
2734 optional: true2604 optional: true
27352605
2736 '@oxlint/binding-linux-x64-gnu@1.55.0':2606 '@oxlint/binding-linux-x64-gnu@1.56.0':
2737 optional: true2607 optional: true
27382608
2739 '@oxlint/binding-linux-x64-musl@1.55.0':2609 '@oxlint/binding-linux-x64-musl@1.56.0':
2740 optional: true2610 optional: true
27412611
2742 '@oxlint/binding-openharmony-arm64@1.55.0':2612 '@oxlint/binding-openharmony-arm64@1.56.0':
2743 optional: true2613 optional: true
27442614
2745 '@oxlint/binding-win32-arm64-msvc@1.55.0':2615 '@oxlint/binding-win32-arm64-msvc@1.56.0':
2746 optional: true2616 optional: true
27472617
2748 '@oxlint/binding-win32-ia32-msvc@1.55.0':2618 '@oxlint/binding-win32-ia32-msvc@1.56.0':
2749 optional: true2619 optional: true
27502620
2751 '@oxlint/binding-win32-x64-msvc@1.55.0':2621 '@oxlint/binding-win32-x64-msvc@1.56.0':
2752 optional: true2622 optional: true
27532623
2754 '@polka/url@1.0.0-next.29': {}
2755
2756 '@preact/signals-core@1.14.0': {}2624 '@preact/signals-core@1.14.0': {}
27572625
2758 '@preact/signals@1.3.4(preact@10.29.0)':2626 '@preact/signals@1.3.4(preact@10.29.0)':
...@@ -2760,56 +2628,56 @@ snapshots:...@@ -2760,56 +2628,56 @@ snapshots:
2760 '@preact/signals-core': 1.14.02628 '@preact/signals-core': 1.14.0
2761 preact: 10.29.02629 preact: 10.29.0
27622630
2763 '@rolldown/binding-android-arm64@1.0.0-rc.9':2631 '@rolldown/binding-android-arm64@1.0.0-rc.10':
2764 optional: true2632 optional: true
27652633
2766 '@rolldown/binding-darwin-arm64@1.0.0-rc.9':2634 '@rolldown/binding-darwin-arm64@1.0.0-rc.10':
2767 optional: true2635 optional: true
27682636
2769 '@rolldown/binding-darwin-x64@1.0.0-rc.9':2637 '@rolldown/binding-darwin-x64@1.0.0-rc.10':
2770 optional: true2638 optional: true
27712639
2772 '@rolldown/binding-freebsd-x64@1.0.0-rc.9':2640 '@rolldown/binding-freebsd-x64@1.0.0-rc.10':
2773 optional: true2641 optional: true
27742642
2775 '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.9':2643 '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.10':
2776 optional: true2644 optional: true
27772645
2778 '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.9':2646 '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.10':
2779 optional: true2647 optional: true
27802648
2781 '@rolldown/binding-linux-arm64-musl@1.0.0-rc.9':2649 '@rolldown/binding-linux-arm64-musl@1.0.0-rc.10':
2782 optional: true2650 optional: true
27832651
2784 '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.9':2652 '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.10':
2785 optional: true2653 optional: true
27862654
2787 '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.9':2655 '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.10':
2788 optional: true2656 optional: true
27892657
2790 '@rolldown/binding-linux-x64-gnu@1.0.0-rc.9':2658 '@rolldown/binding-linux-x64-gnu@1.0.0-rc.10':
2791 optional: true2659 optional: true
27922660
2793 '@rolldown/binding-linux-x64-musl@1.0.0-rc.9':2661 '@rolldown/binding-linux-x64-musl@1.0.0-rc.10':
2794 optional: true2662 optional: true
27952663
2796 '@rolldown/binding-openharmony-arm64@1.0.0-rc.9':2664 '@rolldown/binding-openharmony-arm64@1.0.0-rc.10':
2797 optional: true2665 optional: true
27982666
2799 '@rolldown/binding-wasm32-wasi@1.0.0-rc.9':2667 '@rolldown/binding-wasm32-wasi@1.0.0-rc.10':
2800 dependencies:2668 dependencies:
2801 '@napi-rs/wasm-runtime': 1.1.12669 '@napi-rs/wasm-runtime': 1.1.1
2802 optional: true2670 optional: true
28032671
2804 '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.9':2672 '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.10':
2805 optional: true2673 optional: true
28062674
2807 '@rolldown/binding-win32-x64-msvc@1.0.0-rc.9':2675 '@rolldown/binding-win32-x64-msvc@1.0.0-rc.10':
2808 optional: true2676 optional: true
28092677
2810 '@rolldown/pluginutils@1.0.0-rc.7': {}2678 '@rolldown/pluginutils@1.0.0-rc.10': {}
28112679
2812 '@rolldown/pluginutils@1.0.0-rc.9': {}2680 '@rolldown/pluginutils@1.0.0-rc.7': {}
28132681
2814 '@rollup/pluginutils@5.3.0':2682 '@rollup/pluginutils@5.3.0':
2815 dependencies:2683 dependencies:
...@@ -2885,12 +2753,12 @@ snapshots:...@@ -2885,12 +2753,12 @@ snapshots:
2885 postcss-selector-parser: 6.0.102753 postcss-selector-parser: 6.0.10
2886 tailwindcss: 4.2.22754 tailwindcss: 4.2.2
28872755
2888 '@tailwindcss/vite@4.2.2(vite@8.0.0(@types/node@25.5.0)(jiti@2.6.1)(yaml@2.8.2))':2756 '@tailwindcss/vite@4.2.2(vite@8.0.1(@types/node@25.5.0)(jiti@2.6.1)(yaml@2.8.2))':
2889 dependencies:2757 dependencies:
2890 '@tailwindcss/node': 4.2.22758 '@tailwindcss/node': 4.2.2
2891 '@tailwindcss/oxide': 4.2.22759 '@tailwindcss/oxide': 4.2.2
2892 tailwindcss: 4.2.22760 tailwindcss: 4.2.2
2893 vite: 8.0.0(@types/node@25.5.0)(jiti@2.6.1)(yaml@2.8.2)2761 vite: 8.0.1(@types/node@25.5.0)(jiti@2.6.1)(yaml@2.8.2)
28942762
2895 '@testing-library/dom@10.4.1':2763 '@testing-library/dom@10.4.1':
2896 dependencies:2764 dependencies:
...@@ -3042,7 +2910,7 @@ snapshots:...@@ -3042,7 +2910,7 @@ snapshots:
3042 '@types/d3-transition': 3.0.92910 '@types/d3-transition': 3.0.9
3043 '@types/d3-zoom': 3.0.82911 '@types/d3-zoom': 3.0.8
30442912
3045 '@types/debug@4.1.12':2913 '@types/debug@4.1.13':
3046 dependencies:2914 dependencies:
3047 '@types/ms': 2.1.02915 '@types/ms': 2.1.0
30482916
...@@ -3093,44 +2961,11 @@ snapshots:...@@ -3093,44 +2961,11 @@ snapshots:
30932961
3094 '@types/unist@3.0.3': {}2962 '@types/unist@3.0.3': {}
30952963
3096 '@types/whatwg-mimetype@3.0.2':2964 '@types/whatwg-mimetype@3.0.2': {}
3097 optional: true
30982965
3099 '@types/ws@8.18.1':2966 '@types/ws@8.18.1':
3100 dependencies:2967 dependencies:
3101 '@types/node': 25.5.02968 '@types/node': 25.5.0
3102 optional: true
3103
3104 '@typescript/native-preview-darwin-arm64@7.0.0-dev.20260318.1':
3105 optional: true
3106
3107 '@typescript/native-preview-darwin-x64@7.0.0-dev.20260318.1':
3108 optional: true
3109
3110 '@typescript/native-preview-linux-arm64@7.0.0-dev.20260318.1':
3111 optional: true
3112
3113 '@typescript/native-preview-linux-arm@7.0.0-dev.20260318.1':
3114 optional: true
3115
3116 '@typescript/native-preview-linux-x64@7.0.0-dev.20260318.1':
3117 optional: true
3118
3119 '@typescript/native-preview-win32-arm64@7.0.0-dev.20260318.1':
3120 optional: true
3121
3122 '@typescript/native-preview-win32-x64@7.0.0-dev.20260318.1':
3123 optional: true
3124
3125 '@typescript/native-preview@7.0.0-dev.20260318.1':
3126 optionalDependencies:
3127 '@typescript/native-preview-darwin-arm64': 7.0.0-dev.20260318.1
3128 '@typescript/native-preview-darwin-x64': 7.0.0-dev.20260318.1
3129 '@typescript/native-preview-linux-arm': 7.0.0-dev.20260318.1
3130 '@typescript/native-preview-linux-arm64': 7.0.0-dev.20260318.1
3131 '@typescript/native-preview-linux-x64': 7.0.0-dev.20260318.1
3132 '@typescript/native-preview-win32-arm64': 7.0.0-dev.20260318.1
3133 '@typescript/native-preview-win32-x64': 7.0.0-dev.20260318.1
31342969
3135 '@ungap/structured-clone@1.3.0': {}2970 '@ungap/structured-clone@1.3.0': {}
31362971
...@@ -3139,81 +2974,51 @@ snapshots:...@@ -3139,81 +2974,51 @@ snapshots:
3139 d3-selection: 3.0.02974 d3-selection: 3.0.0
3140 d3-transition: 3.0.1(d3-selection@3.0.0)2975 d3-transition: 3.0.1(d3-selection@3.0.0)
31412976
3142 '@vitejs/plugin-react@6.0.1(vite@8.0.0(@types/node@25.5.0)(jiti@2.6.1)(yaml@2.8.2))':2977 '@vitejs/plugin-react@6.0.1(vite@8.0.1(@types/node@25.5.0)(jiti@2.6.1)(yaml@2.8.2))':
3143 dependencies:2978 dependencies:
3144 '@rolldown/pluginutils': 1.0.0-rc.72979 '@rolldown/pluginutils': 1.0.0-rc.7
3145 vite: 8.0.0(@types/node@25.5.0)(jiti@2.6.1)(yaml@2.8.2)2980 vite: 8.0.1(@types/node@25.5.0)(jiti@2.6.1)(yaml@2.8.2)
31462981
3147 '@voidzero-dev/vite-plus-core@0.1.12(@types/node@25.5.0)(jiti@2.6.1)(typescript@5.9.3)(yaml@2.8.2)':2982 '@vitest/expect@4.1.0':
3148 dependencies:2983 dependencies:
3149 '@oxc-project/runtime': 0.115.02984 '@standard-schema/spec': 1.1.0
3150 '@oxc-project/types': 0.115.02985 '@types/chai': 5.2.3
3151 lightningcss: 1.32.02986 '@vitest/spy': 4.1.0
3152 postcss: 8.5.82987 '@vitest/utils': 4.1.0
3153 optionalDependencies:2988 chai: 6.2.2
3154 '@types/node': 25.5.02989 tinyrainbow: 3.1.0
3155 fsevents: 2.3.3
3156 jiti: 2.6.1
3157 typescript: 5.9.3
3158 yaml: 2.8.2
3159
3160 '@voidzero-dev/vite-plus-darwin-arm64@0.1.12':
3161 optional: true
31622990
3163 '@voidzero-dev/vite-plus-darwin-x64@0.1.12':2991 '@vitest/mocker@4.1.0(vite@8.0.1(@types/node@25.5.0)(jiti@2.6.1)(yaml@2.8.2))':
3164 optional: true2992 dependencies:
2993 '@vitest/spy': 4.1.0
2994 estree-walker: 3.0.3
2995 magic-string: 0.30.21
2996 optionalDependencies:
2997 vite: 8.0.1(@types/node@25.5.0)(jiti@2.6.1)(yaml@2.8.2)
31652998
3166 '@voidzero-dev/vite-plus-linux-arm64-gnu@0.1.12':2999 '@vitest/pretty-format@4.1.0':
3167 optional: true3000 dependencies:
3001 tinyrainbow: 3.1.0
31683002
3169 '@voidzero-dev/vite-plus-linux-x64-gnu@0.1.12':3003 '@vitest/runner@4.1.0':
3170 optional: true3004 dependencies:
3005 '@vitest/utils': 4.1.0
3006 pathe: 2.0.3
31713007
3172 '@voidzero-dev/vite-plus-test@0.1.12(@types/node@25.5.0)(happy-dom@20.8.4)(jiti@2.6.1)(typescript@5.9.3)(vite@8.0.0(@types/node@25.5.0)(jiti@2.6.1)(yaml@2.8.2))(yaml@2.8.2)':3008 '@vitest/snapshot@4.1.0':
3173 dependencies:3009 dependencies:
3174 '@standard-schema/spec': 1.1.03010 '@vitest/pretty-format': 4.1.0
3175 '@types/chai': 5.2.33011 '@vitest/utils': 4.1.0
3176 '@voidzero-dev/vite-plus-core': 0.1.12(@types/node@25.5.0)(jiti@2.6.1)(typescript@5.9.3)(yaml@2.8.2)3012 magic-string: 0.30.21
3177 es-module-lexer: 1.7.03013 pathe: 2.0.3
3178 obug: 2.1.1
3179 pixelmatch: 7.1.0
3180 pngjs: 7.0.0
3181 sirv: 3.0.2
3182 std-env: 4.0.0
3183 tinybench: 2.9.0
3184 tinyexec: 1.0.4
3185 tinyglobby: 0.2.15
3186 vite: 8.0.0(@types/node@25.5.0)(jiti@2.6.1)(yaml@2.8.2)
3187 ws: 8.19.0
3188 optionalDependencies:
3189 '@types/node': 25.5.0
3190 happy-dom: 20.8.4
3191 transitivePeerDependencies:
3192 - '@arethetypeswrong/core'
3193 - '@tsdown/css'
3194 - '@tsdown/exe'
3195 - '@vitejs/devtools'
3196 - bufferutil
3197 - esbuild
3198 - jiti
3199 - less
3200 - publint
3201 - sass
3202 - sass-embedded
3203 - stylus
3204 - sugarss
3205 - terser
3206 - tsx
3207 - typescript
3208 - unplugin-unused
3209 - utf-8-validate
3210 - yaml
32113014
3212 '@voidzero-dev/vite-plus-win32-arm64-msvc@0.1.12':3015 '@vitest/spy@4.1.0': {}
3213 optional: true
32143016
3215 '@voidzero-dev/vite-plus-win32-x64-msvc@0.1.12':3017 '@vitest/utils@4.1.0':
3216 optional: true3018 dependencies:
3019 '@vitest/pretty-format': 4.1.0
3020 convert-source-map: 2.0.0
3021 tinyrainbow: 3.1.0
32173022
3218 acorn@8.16.0: {}3023 acorn@8.16.0: {}
32193024
...@@ -3229,7 +3034,7 @@ snapshots:...@@ -3229,7 +3034,7 @@ snapshots:
32293034
3230 bail@2.0.2: {}3035 bail@2.0.2: {}
32313036
3232 baseline-browser-mapping@2.10.8: {}3037 baseline-browser-mapping@2.10.9: {}
32333038
3234 bippy@0.5.32(@types/react@19.2.14)(react@19.2.4):3039 bippy@0.5.32(@types/react@19.2.14)(react@19.2.4):
3235 dependencies:3040 dependencies:
...@@ -3240,18 +3045,18 @@ snapshots:...@@ -3240,18 +3045,18 @@ snapshots:
32403045
3241 browserslist@4.28.1:3046 browserslist@4.28.1:
3242 dependencies:3047 dependencies:
3243 baseline-browser-mapping: 2.10.83048 baseline-browser-mapping: 2.10.9
3244 caniuse-lite: 1.0.300017803049 caniuse-lite: 1.0.30001780
3245 electron-to-chromium: 1.5.3213050 electron-to-chromium: 1.5.321
3246 node-releases: 2.0.363051 node-releases: 2.0.36
3247 update-browserslist-db: 1.2.3(browserslist@4.28.1)3052 update-browserslist-db: 1.2.3(browserslist@4.28.1)
32483053
3249 cac@6.7.14: {}
3250
3251 caniuse-lite@1.0.30001780: {}3054 caniuse-lite@1.0.30001780: {}
32523055
3253 ccount@2.0.1: {}3056 ccount@2.0.1: {}
32543057
3058 chai@6.2.2: {}
3059
3255 character-entities-html4@2.1.0: {}3060 character-entities-html4@2.1.0: {}
32563061
3257 character-entities-legacy@3.0.0: {}3062 character-entities-legacy@3.0.0: {}
...@@ -3296,12 +3101,6 @@ snapshots:...@@ -3296,12 +3101,6 @@ snapshots:
3296 dependencies:3101 dependencies:
3297 layout-base: 2.0.13102 layout-base: 2.0.1
32983103
3299 cross-spawn@7.0.6:
3300 dependencies:
3301 path-key: 3.1.1
3302 shebang-command: 2.0.0
3303 which: 2.0.2
3304
3305 cssesc@3.0.0: {}3104 cssesc@3.0.0: {}
33063105
3307 csstype@3.2.3: {}3106 csstype@3.2.3: {}
...@@ -3527,10 +3326,9 @@ snapshots:...@@ -3527,10 +3326,9 @@ snapshots:
35273326
3528 entities@6.0.1: {}3327 entities@6.0.1: {}
35293328
3530 entities@7.0.1:3329 entities@7.0.1: {}
3531 optional: true
35323330
3533 es-module-lexer@1.7.0: {}3331 es-module-lexer@2.0.0: {}
35343332
3535 esbuild@0.25.12:3333 esbuild@0.25.12:
3536 optionalDependencies:3334 optionalDependencies:
...@@ -3573,6 +3371,8 @@ snapshots:...@@ -3573,6 +3371,8 @@ snapshots:
3573 dependencies:3371 dependencies:
3574 '@types/estree': 1.0.83372 '@types/estree': 1.0.8
35753373
3374 expect-type@1.3.0: {}
3375
3576 extend@3.0.2: {}3376 extend@3.0.2: {}
35773377
3578 fdir@6.5.0(picomatch@4.0.3):3378 fdir@6.5.0(picomatch@4.0.3):
...@@ -3599,7 +3399,6 @@ snapshots:...@@ -3599,7 +3399,6 @@ snapshots:
3599 transitivePeerDependencies:3399 transitivePeerDependencies:
3600 - bufferutil3400 - bufferutil
3601 - utf-8-validate3401 - utf-8-validate
3602 optional: true
36033402
3604 hast-util-from-parse5@8.0.3:3403 hast-util-from-parse5@8.0.3:
3605 dependencies:3404 dependencies:
...@@ -3707,8 +3506,6 @@ snapshots:...@@ -3707,8 +3506,6 @@ snapshots:
37073506
3708 is-plain-obj@4.1.0: {}3507 is-plain-obj@4.1.0: {}
37093508
3710 isexe@2.0.0: {}
3711
3712 jiti@2.6.1: {}3509 jiti@2.6.1: {}
37133510
3714 js-tokens@4.0.0: {}3511 js-tokens@4.0.0: {}
...@@ -3717,7 +3514,7 @@ snapshots:...@@ -3717,7 +3514,7 @@ snapshots:
37173514
3718 json5@2.2.3: {}3515 json5@2.2.3: {}
37193516
3720 katex@0.16.38:3517 katex@0.16.39:
3721 dependencies:3518 dependencies:
3722 commander: 8.3.03519 commander: 8.3.0
37233520
...@@ -3974,7 +3771,7 @@ snapshots:...@@ -3974,7 +3771,7 @@ snapshots:
3974 dagre-d3-es: 7.0.143771 dagre-d3-es: 7.0.14
3975 dayjs: 1.11.203772 dayjs: 1.11.20
3976 dompurify: 3.3.33773 dompurify: 3.3.3
3977 katex: 0.16.383774 katex: 0.16.39
3978 khroma: 2.1.03775 khroma: 2.1.0
3979 lodash-es: 4.17.233776 lodash-es: 4.17.23
3980 marked: 16.4.23777 marked: 16.4.2
...@@ -4154,7 +3951,7 @@ snapshots:...@@ -4154,7 +3951,7 @@ snapshots:
41543951
4155 micromark@4.0.2:3952 micromark@4.0.2:
4156 dependencies:3953 dependencies:
4157 '@types/debug': 4.1.123954 '@types/debug': 4.1.13
4158 debug: 4.4.33955 debug: 4.4.3
4159 decode-named-character-reference: 1.3.03956 decode-named-character-reference: 1.3.0
4160 devlop: 1.1.03957 devlop: 1.1.0
...@@ -4174,15 +3971,13 @@ snapshots:...@@ -4174,15 +3971,13 @@ snapshots:
4174 transitivePeerDependencies:3971 transitivePeerDependencies:
4175 - supports-color3972 - supports-color
41763973
4177 mlly@1.8.1:3974 mlly@1.8.2:
4178 dependencies:3975 dependencies:
4179 acorn: 8.16.03976 acorn: 8.16.0
4180 pathe: 2.0.33977 pathe: 2.0.3
4181 pkg-types: 1.3.13978 pkg-types: 1.3.1
4182 ufo: 1.6.33979 ufo: 1.6.3
41833980
4184 mrmime@2.0.1: {}
4185
4186 ms@2.1.3: {}3981 ms@2.1.3: {}
41873982
4188 nanoid@3.3.11: {}3983 nanoid@3.3.11: {}
...@@ -4223,28 +4018,29 @@ snapshots:...@@ -4223,28 +4018,29 @@ snapshots:
4223 '@oxlint-tsgolint/linux-x64': 0.17.04018 '@oxlint-tsgolint/linux-x64': 0.17.0
4224 '@oxlint-tsgolint/win32-arm64': 0.17.04019 '@oxlint-tsgolint/win32-arm64': 0.17.0
4225 '@oxlint-tsgolint/win32-x64': 0.17.04020 '@oxlint-tsgolint/win32-x64': 0.17.0
4021 optional: true
42264022
4227 oxlint@1.55.0(oxlint-tsgolint@0.17.0):4023 oxlint@1.56.0(oxlint-tsgolint@0.17.0):
4228 optionalDependencies:4024 optionalDependencies:
4229 '@oxlint/binding-android-arm-eabi': 1.55.04025 '@oxlint/binding-android-arm-eabi': 1.56.0
4230 '@oxlint/binding-android-arm64': 1.55.04026 '@oxlint/binding-android-arm64': 1.56.0
4231 '@oxlint/binding-darwin-arm64': 1.55.04027 '@oxlint/binding-darwin-arm64': 1.56.0
4232 '@oxlint/binding-darwin-x64': 1.55.04028 '@oxlint/binding-darwin-x64': 1.56.0
4233 '@oxlint/binding-freebsd-x64': 1.55.04029 '@oxlint/binding-freebsd-x64': 1.56.0
4234 '@oxlint/binding-linux-arm-gnueabihf': 1.55.04030 '@oxlint/binding-linux-arm-gnueabihf': 1.56.0
4235 '@oxlint/binding-linux-arm-musleabihf': 1.55.04031 '@oxlint/binding-linux-arm-musleabihf': 1.56.0
4236 '@oxlint/binding-linux-arm64-gnu': 1.55.04032 '@oxlint/binding-linux-arm64-gnu': 1.56.0
4237 '@oxlint/binding-linux-arm64-musl': 1.55.04033 '@oxlint/binding-linux-arm64-musl': 1.56.0
4238 '@oxlint/binding-linux-ppc64-gnu': 1.55.04034 '@oxlint/binding-linux-ppc64-gnu': 1.56.0
4239 '@oxlint/binding-linux-riscv64-gnu': 1.55.04035 '@oxlint/binding-linux-riscv64-gnu': 1.56.0
4240 '@oxlint/binding-linux-riscv64-musl': 1.55.04036 '@oxlint/binding-linux-riscv64-musl': 1.56.0
4241 '@oxlint/binding-linux-s390x-gnu': 1.55.04037 '@oxlint/binding-linux-s390x-gnu': 1.56.0
4242 '@oxlint/binding-linux-x64-gnu': 1.55.04038 '@oxlint/binding-linux-x64-gnu': 1.56.0
4243 '@oxlint/binding-linux-x64-musl': 1.55.04039 '@oxlint/binding-linux-x64-musl': 1.56.0
4244 '@oxlint/binding-openharmony-arm64': 1.55.04040 '@oxlint/binding-openharmony-arm64': 1.56.0
4245 '@oxlint/binding-win32-arm64-msvc': 1.55.04041 '@oxlint/binding-win32-arm64-msvc': 1.56.0
4246 '@oxlint/binding-win32-ia32-msvc': 1.55.04042 '@oxlint/binding-win32-ia32-msvc': 1.56.0
4247 '@oxlint/binding-win32-x64-msvc': 1.55.04043 '@oxlint/binding-win32-x64-msvc': 1.56.0
4248 oxlint-tsgolint: 0.17.04044 oxlint-tsgolint: 0.17.0
42494045
4250 package-manager-detector@1.6.0: {}4046 package-manager-detector@1.6.0: {}
...@@ -4265,26 +4061,18 @@ snapshots:...@@ -4265,26 +4061,18 @@ snapshots:
42654061
4266 path-data-parser@0.1.0: {}4062 path-data-parser@0.1.0: {}
42674063
4268 path-key@3.1.1: {}
4269
4270 pathe@2.0.3: {}4064 pathe@2.0.3: {}
42714065
4272 picocolors@1.1.1: {}4066 picocolors@1.1.1: {}
42734067
4274 picomatch@4.0.3: {}4068 picomatch@4.0.3: {}
42754069
4276 pixelmatch@7.1.0:
4277 dependencies:
4278 pngjs: 7.0.0
4279
4280 pkg-types@1.3.1:4070 pkg-types@1.3.1:
4281 dependencies:4071 dependencies:
4282 confbox: 0.1.84072 confbox: 0.1.8
4283 mlly: 1.8.14073 mlly: 1.8.2
4284 pathe: 2.0.34074 pathe: 2.0.3
42854075
4286 pngjs@7.0.0: {}
4287
4288 points-on-curve@0.2.0: {}4076 points-on-curve@0.2.0: {}
42894077
4290 points-on-path@0.2.1:4078 points-on-path@0.2.1:
...@@ -4430,26 +4218,26 @@ snapshots:...@@ -4430,26 +4218,26 @@ snapshots:
44304218
4431 robust-predicates@3.0.2: {}4219 robust-predicates@3.0.2: {}
44324220
4433 rolldown@1.0.0-rc.9:4221 rolldown@1.0.0-rc.10:
4434 dependencies:4222 dependencies:
4435 '@oxc-project/types': 0.115.04223 '@oxc-project/types': 0.120.0
4436 '@rolldown/pluginutils': 1.0.0-rc.94224 '@rolldown/pluginutils': 1.0.0-rc.10
4437 optionalDependencies:4225 optionalDependencies:
4438 '@rolldown/binding-android-arm64': 1.0.0-rc.94226 '@rolldown/binding-android-arm64': 1.0.0-rc.10
4439 '@rolldown/binding-darwin-arm64': 1.0.0-rc.94227 '@rolldown/binding-darwin-arm64': 1.0.0-rc.10
4440 '@rolldown/binding-darwin-x64': 1.0.0-rc.94228 '@rolldown/binding-darwin-x64': 1.0.0-rc.10
4441 '@rolldown/binding-freebsd-x64': 1.0.0-rc.94229 '@rolldown/binding-freebsd-x64': 1.0.0-rc.10
4442 '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-rc.94230 '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-rc.10
4443 '@rolldown/binding-linux-arm64-gnu': 1.0.0-rc.94231 '@rolldown/binding-linux-arm64-gnu': 1.0.0-rc.10
4444 '@rolldown/binding-linux-arm64-musl': 1.0.0-rc.94232 '@rolldown/binding-linux-arm64-musl': 1.0.0-rc.10
4445 '@rolldown/binding-linux-ppc64-gnu': 1.0.0-rc.94233 '@rolldown/binding-linux-ppc64-gnu': 1.0.0-rc.10
4446 '@rolldown/binding-linux-s390x-gnu': 1.0.0-rc.94234 '@rolldown/binding-linux-s390x-gnu': 1.0.0-rc.10
4447 '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.94235 '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.10
4448 '@rolldown/binding-linux-x64-musl': 1.0.0-rc.94236 '@rolldown/binding-linux-x64-musl': 1.0.0-rc.10
4449 '@rolldown/binding-openharmony-arm64': 1.0.0-rc.94237 '@rolldown/binding-openharmony-arm64': 1.0.0-rc.10
4450 '@rolldown/binding-wasm32-wasi': 1.0.0-rc.94238 '@rolldown/binding-wasm32-wasi': 1.0.0-rc.10
4451 '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.94239 '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.10
4452 '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.94240 '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.10
44534241
4454 roughjs@4.6.6:4242 roughjs@4.6.6:
4455 dependencies:4243 dependencies:
...@@ -4466,17 +4254,7 @@ snapshots:...@@ -4466,17 +4254,7 @@ snapshots:
44664254
4467 semver@6.3.1: {}4255 semver@6.3.1: {}
44684256
4469 shebang-command@2.0.0:4257 siginfo@2.0.0: {}
4470 dependencies:
4471 shebang-regex: 3.0.0
4472
4473 shebang-regex@3.0.0: {}
4474
4475 sirv@3.0.2:
4476 dependencies:
4477 '@polka/url': 1.0.0-next.29
4478 mrmime: 2.0.1
4479 totalist: 3.0.1
44804258
4481 sisteransi@1.0.5: {}4259 sisteransi@1.0.5: {}
44824260
...@@ -4484,6 +4262,8 @@ snapshots:...@@ -4484,6 +4262,8 @@ snapshots:
44844262
4485 space-separated-tokens@2.0.2: {}4263 space-separated-tokens@2.0.2: {}
44864264
4265 stackback@0.0.2: {}
4266
4487 std-env@4.0.0: {}4267 std-env@4.0.0: {}
44884268
4489 streamdown@2.5.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4):4269 streamdown@2.5.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4):
...@@ -4541,7 +4321,7 @@ snapshots:...@@ -4541,7 +4321,7 @@ snapshots:
45414321
4542 tinypool@2.1.0: {}4322 tinypool@2.1.0: {}
45434323
4544 totalist@3.0.1: {}4324 tinyrainbow@3.1.0: {}
45454325
4546 trim-lines@3.0.1: {}4326 trim-lines@3.0.1: {}
45474327
...@@ -4624,59 +4404,12 @@ snapshots:...@@ -4624,59 +4404,12 @@ snapshots:
4624 '@types/unist': 3.0.34404 '@types/unist': 3.0.3
4625 vfile-message: 4.0.34405 vfile-message: 4.0.3
46264406
4627 vite-plus@0.1.12(@types/node@25.5.0)(happy-dom@20.8.4)(jiti@2.6.1)(typescript@5.9.3)(vite@8.0.0(@types/node@25.5.0)(jiti@2.6.1)(yaml@2.8.2))(yaml@2.8.2):4407 vite@8.0.1(@types/node@25.5.0)(jiti@2.6.1)(yaml@2.8.2):
4628 dependencies:4408 dependencies:
4629 '@oxc-project/types': 0.115.0
4630 '@voidzero-dev/vite-plus-core': 0.1.12(@types/node@25.5.0)(jiti@2.6.1)(typescript@5.9.3)(yaml@2.8.2)
4631 '@voidzero-dev/vite-plus-test': 0.1.12(@types/node@25.5.0)(happy-dom@20.8.4)(jiti@2.6.1)(typescript@5.9.3)(vite@8.0.0(@types/node@25.5.0)(jiti@2.6.1)(yaml@2.8.2))(yaml@2.8.2)
4632 cac: 6.7.14
4633 cross-spawn: 7.0.6
4634 oxfmt: 0.40.0
4635 oxlint: 1.55.0(oxlint-tsgolint@0.17.0)
4636 oxlint-tsgolint: 0.17.0
4637 picocolors: 1.1.1
4638 optionalDependencies:
4639 '@voidzero-dev/vite-plus-darwin-arm64': 0.1.12
4640 '@voidzero-dev/vite-plus-darwin-x64': 0.1.12
4641 '@voidzero-dev/vite-plus-linux-arm64-gnu': 0.1.12
4642 '@voidzero-dev/vite-plus-linux-x64-gnu': 0.1.12
4643 '@voidzero-dev/vite-plus-win32-arm64-msvc': 0.1.12
4644 '@voidzero-dev/vite-plus-win32-x64-msvc': 0.1.12
4645 transitivePeerDependencies:
4646 - '@arethetypeswrong/core'
4647 - '@edge-runtime/vm'
4648 - '@opentelemetry/api'
4649 - '@tsdown/css'
4650 - '@tsdown/exe'
4651 - '@types/node'
4652 - '@vitejs/devtools'
4653 - '@vitest/ui'
4654 - bufferutil
4655 - esbuild
4656 - happy-dom
4657 - jiti
4658 - jsdom
4659 - less
4660 - publint
4661 - sass
4662 - sass-embedded
4663 - stylus
4664 - sugarss
4665 - terser
4666 - tsx
4667 - typescript
4668 - unplugin-unused
4669 - utf-8-validate
4670 - vite
4671 - yaml
4672
4673 vite@8.0.0(@types/node@25.5.0)(jiti@2.6.1)(yaml@2.8.2):
4674 dependencies:
4675 '@oxc-project/runtime': 0.115.0
4676 lightningcss: 1.32.04409 lightningcss: 1.32.0
4677 picomatch: 4.0.34410 picomatch: 4.0.3
4678 postcss: 8.5.84411 postcss: 8.5.8
4679 rolldown: 1.0.0-rc.94412 rolldown: 1.0.0-rc.10
4680 tinyglobby: 0.2.154413 tinyglobby: 0.2.15
4681 optionalDependencies:4414 optionalDependencies:
4682 '@types/node': 25.5.04415 '@types/node': 25.5.0
...@@ -4684,6 +4417,34 @@ snapshots:...@@ -4684,6 +4417,34 @@ snapshots:
4684 jiti: 2.6.14417 jiti: 2.6.1
4685 yaml: 2.8.24418 yaml: 2.8.2
46864419
4420 vitest@4.1.0(@types/node@25.5.0)(happy-dom@20.8.4)(vite@8.0.1(@types/node@25.5.0)(jiti@2.6.1)(yaml@2.8.2)):
4421 dependencies:
4422 '@vitest/expect': 4.1.0
4423 '@vitest/mocker': 4.1.0(vite@8.0.1(@types/node@25.5.0)(jiti@2.6.1)(yaml@2.8.2))
4424 '@vitest/pretty-format': 4.1.0
4425 '@vitest/runner': 4.1.0
4426 '@vitest/snapshot': 4.1.0
4427 '@vitest/spy': 4.1.0
4428 '@vitest/utils': 4.1.0
4429 es-module-lexer: 2.0.0
4430 expect-type: 1.3.0
4431 magic-string: 0.30.21
4432 obug: 2.1.1
4433 pathe: 2.0.3
4434 picomatch: 4.0.3
4435 std-env: 4.0.0
4436 tinybench: 2.9.0
4437 tinyexec: 1.0.4
4438 tinyglobby: 0.2.15
4439 tinyrainbow: 3.1.0
4440 vite: 8.0.1(@types/node@25.5.0)(jiti@2.6.1)(yaml@2.8.2)
4441 why-is-node-running: 2.3.0
4442 optionalDependencies:
4443 '@types/node': 25.5.0
4444 happy-dom: 20.8.4
4445 transitivePeerDependencies:
4446 - msw
4447
4687 vscode-jsonrpc@8.2.0: {}4448 vscode-jsonrpc@8.2.0: {}
46884449
4689 vscode-languageserver-protocol@3.17.5:4450 vscode-languageserver-protocol@3.17.5:
...@@ -4706,12 +4467,12 @@ snapshots:...@@ -4706,12 +4467,12 @@ snapshots:
4706 webpack-virtual-modules@0.6.2:4467 webpack-virtual-modules@0.6.2:
4707 optional: true4468 optional: true
47084469
4709 whatwg-mimetype@3.0.0:4470 whatwg-mimetype@3.0.0: {}
4710 optional: true
47114471
4712 which@2.0.2:4472 why-is-node-running@2.3.0:
4713 dependencies:4473 dependencies:
4714 isexe: 2.0.04474 siginfo: 2.0.0
4475 stackback: 0.0.2
47154476
4716 ws@8.19.0: {}4477 ws@8.19.0: {}
47174478
pnpm-workspace.yaml created+2
...@@ -0,0 +1,2 @@
1ignoredBuiltDependencies:
2 - esbuild
src/Markdown.ts+41-28
...@@ -1,6 +1,12 @@...@@ -1,6 +1,12 @@
1import { createContext, memo, type PropsWithChildren, useContext, useMemo, useRef } from "react";1import {
2import { componentsAreEqual, defaultProcessor, Memoizer } from "./Memoizer";2 createContext,
3import { type Processor } from "unified";3 type ExoticComponent,
4 memo,
5 type PropsWithChildren,
6 useContext,
7 useRef,
8} from "react";
9import { componentsAreEqual, defaultProcessor, Memoizer, type BaseProcessor } from "./Memoizer";
4import { type Components } from "rehype-react";10import { type Components } from "rehype-react";
5import { jsx } from "react/jsx-runtime";11import { jsx } from "react/jsx-runtime";
612
...@@ -9,7 +15,7 @@ export interface MarkdownOptions {...@@ -9,7 +15,7 @@ export interface MarkdownOptions {
9 /** Markdown source content. */15 /** Markdown source content. */
10 content: string;16 content: string;
11 /** Add any other markdown processors. */17 /** Add any other markdown processors. */
12 processor?: Processor<import("unist").Node> | null | undefined;18 processor?: BaseProcessor | null | undefined;
13 /** Customize component rendering. */19 /** Customize component rendering. */
14 components?: Partial<Components> | null | undefined;20 components?: Partial<Components> | null | undefined;
15 /** Automatically predict closing tags, useful for LLM streaming. */21 /** Automatically predict closing tags, useful for LLM streaming. */
...@@ -22,48 +28,55 @@ export interface MarkdownOptions {...@@ -22,48 +28,55 @@ export interface MarkdownOptions {
22 * processor pipeline through the `processor` prop or a28 * processor pipeline through the `processor` prop or a
23 * {@linkcode MarkdownOptionsProvider}.29 * {@linkcode MarkdownOptionsProvider}.
24 */30 */
25export const Markdown = memo(function Markdown({31export const Markdown: ExoticComponent<MarkdownOptions> = memo(function Markdown({
26 content,32 content,
27 processor,33 processor,
28 components,34 components,
29 predict,35 predict,
30}: MarkdownOptions) {36}: MarkdownOptions) {
31 const context = useContext(Context);37 const context = useContext(OptionsContext);
32 const ref = useRef<Memoizer | null>(null);38 const ref = useRef<Memoizer | null>(null);
33 const memoizer = (ref.current ??= new Memoizer());39 const memoizer = (ref.current ??= new Memoizer());
34 memoizer.reconfigure(40 memoizer.reconfigure(
35 processor ?? context.processor ?? defaultProcessor,41 processor ?? context.processor ?? defaultProcessor,
36 predict ?? context.predict ?? false,42 predict ?? context.predict ?? false,
37 {43 { ...context.components, ...components },
38 ...components,
39 ...context.components,
40 },
41 );44 );
42 return memoizer.update(content);45 return memoizer.update(content);
43}, propsAreEqual);46}, markdownPropsAreEqual);
44
45// @ts-expect-error vite integration
46!import.meta.env.PROD && (Markdown.displayName = "Markdown");
4747
48type Context = Omit<MarkdownOptions, "content">;48type Context = Omit<MarkdownOptions, "content">;
49const Context = createContext<Context>({});49const OptionsContext = createContext<Context>({});
5050
51/** Configure default options for {@linkcode Markdown} */51/** Configure default options for {@linkcode Markdown} */
52export const MarkdownOptionsProvider = memo(function MarkdownOptionsProvider({52export const MarkdownOptionsProvider: ExoticComponent<PropsWithChildren<Context>> = memo(
53 processor,53 function MarkdownOptionsProvider({
54 components,54 processor,
55 children,55 components,
56 predict,56 children,
57}: PropsWithChildren<Context>) {57 predict,
58 const value = useMemo(58 }: PropsWithChildren<Context>) {
59 () => ({ processor, components, predict }),59 const valueRef = useRef<Context | null>(null);
60 [processor, components, predict],60 const nextValue: Context = { processor, components, predict };
61 );61 if (!valueRef.current || !contextIsEqual(valueRef.current, nextValue)) {
62 return jsx(Context.Provider, { value, children });62 valueRef.current = nextValue;
63}, propsAreEqual);63 }
64 return jsx(OptionsContext.Provider, { value: valueRef.current, children });
65 },
66 providerPropsAreEqual,
67);
6468
65function propsAreEqual<T extends Context & { content?: string }>(prev: T, next: T) {69function markdownPropsAreEqual(prev: MarkdownOptions, next: MarkdownOptions) {
66 if (prev.content !== next.content) return false;70 if (prev.content !== next.content) return false;
71 return contextIsEqual(prev, next);
72}
73
74function providerPropsAreEqual(prev: PropsWithChildren<Context>, next: PropsWithChildren<Context>) {
75 if (prev.children !== next.children) return false;
76 return contextIsEqual(prev, next);
77}
78
79function contextIsEqual(prev: Context, next: Context) {
67 if (prev.processor !== next.processor) return false;80 if (prev.processor !== next.processor) return false;
68 if (prev.predict !== next.predict) return false;81 if (prev.predict !== next.predict) return false;
69 if (prev.components === next.components) return true;82 if (prev.components === next.components) return true;
src/Memoizer.ts+2-2
...@@ -8,7 +8,7 @@ import type { Root as HastRoot } from "hast";...@@ -8,7 +8,7 @@ import type { Root as HastRoot } from "hast";
8import type { Literal, Node, Parent } from "unist";8import type { Literal, Node, Parent } from "unist";
9import { memoizedHastToReact, type RenderState } from "./hast.ts";9import { memoizedHastToReact, type RenderState } from "./hast.ts";
10import remarkParse from "remark-parse";10import remarkParse from "remark-parse";
11import { Predict } from "./Prediction.ts";11import { Predict } from "./Predict.ts";
1212
13export const defaultProcessor = unified().use(remarkParse);13export const defaultProcessor = unified().use(remarkParse);
1414
...@@ -29,7 +29,7 @@ type AstProcessor = Processor<Parent, Parent, Parent, Parent, Parent>;...@@ -29,7 +29,7 @@ type AstProcessor = Processor<Parent, Parent, Parent, Parent, Parent>;
29 */29 */
30export class Memoizer {30export class Memoizer {
31 // options incrementally updated via `reconfigure`31 // options incrementally updated via `reconfigure`
32 #baseProcessor: BaseProcessor = defaultProcessor;32 #baseProcessor: BaseProcessor = defaultProcessor as BaseProcessor;
33 #astProcessor: AstProcessor | null = null;33 #astProcessor: AstProcessor | null = null;
34 #components: Partial<Components> = {};34 #components: Partial<Components> = {};
35 #previousComponents: Partial<Components> = {};35 #previousComponents: Partial<Components> = {};
src/Predict.ts created+379
...@@ -0,0 +1,379 @@
1/**
2 * Incremental parser for predicting closing tags in Markdown text. Works best
3 * when continuously appending text to the end of the string; this behavior
4 * specifically triggers a fast parsing path.
5 */
6export class Predict {
7 #stable = "";
8
9 /** Incrementally reparses the tail. */
10 update(text: string): string {
11 if (!text.startsWith(this.#stable)) this.#stable = "";
12 let tail = text.slice(this.#stable.length);
13 let state = parseTail(tail);
14 if (state.commitIndex > 0) {
15 this.#stable += tail.slice(0, state.commitIndex);
16 tail = tail.slice(state.commitIndex);
17 state = parseTail(tail);
18 }
19 return this.#stable + renderTail(tail, state);
20 }
21}
22
23type DelimToken = "***" | "**" | "__" | "~~" | "*" | "_";
24type DelimState = { start: number; token: DelimToken };
25type LinkState =
26 | { phase: "text"; start: number }
27 | { phase: "url_wait"; start: number; textEnd: number }
28 | { phase: "url"; start: number; textEnd: number; parenDepth: number };
29type ExclusiveState =
30 | { kind: "code"; start: number; token: string }
31 | { kind: "fence"; start: number; token: string }
32 | { kind: "math"; start: number; token: "$" | "$$" };
33interface TailState {
34 commitIndex: number;
35 delims: DelimState[];
36 exclusive: ExclusiveState | null;
37 links: LinkState[];
38}
39
40const NESTABLE_DELIMS = new Set<DelimToken>(["*", "**", "_", "__"]);
41
42function parseTail(tail: string): TailState {
43 const state: TailState = {
44 commitIndex: 0,
45 delims: [],
46 exclusive: null,
47 links: [],
48 };
49
50 for (let i = 0; i < tail.length; i++) {
51 const char = tail[i]!;
52
53 if (char === "\n" && tail[i - 1] === "\n") {
54 resetParagraphState(state);
55 if (!state.exclusive) state.commitIndex = i + 1;
56 continue;
57 }
58
59 const exclusiveEnd = consumeExclusive(state, tail, i);
60 if (exclusiveEnd > i) {
61 i = exclusiveEnd - 1;
62 continue;
63 }
64
65 if (state.exclusive) continue;
66
67 if (inLinkUrlMode(state)) {
68 updateLink(state, i, char);
69 continue;
70 }
71
72 const delimEnd = consumeDelim(state, tail, i);
73 if (delimEnd > i) {
74 i = delimEnd - 1;
75 continue;
76 }
77
78 if (isEscapedAt(tail, i)) continue;
79
80 updateLink(state, i, char);
81 }
82
83 return state;
84}
85
86function consumeExclusive(state: TailState, tail: string, start: number) {
87 const char = tail[start];
88 if (char === "`") return consumeBackticks(state, tail, start);
89 if (char === "$") return consumeMath(state, tail, start);
90 if (char === "~") return consumeTildes(state, tail, start);
91 return start;
92}
93
94function consumeBackticks(state: TailState, tail: string, start: number) {
95 const length = runLengthAt(tail, start);
96 const token = "`".repeat(length);
97 const exclusive = state.exclusive;
98
99 if (exclusive?.kind === "fence") {
100 if (
101 exclusive.token[0] === "`" &&
102 isLineStart(tail, start) &&
103 !isEscapedAt(tail, start) &&
104 length >= exclusive.token.length
105 ) {
106 state.exclusive = null;
107 }
108 return start + length;
109 }
110
111 if (exclusive?.kind === "code") {
112 if (!isEscapedAt(tail, start) && length >= exclusive.token.length) {
113 state.exclusive = null;
114 }
115 return start + length;
116 }
117
118 if (exclusive) return start + length;
119 if (isEscapedAt(tail, start)) return start + length;
120
121 if (length >= 3 && isLineStart(tail, start)) {
122 state.exclusive = { kind: "fence", start, token };
123 return start + length;
124 }
125
126 state.exclusive = { kind: "code", start, token };
127 return start + length;
128}
129
130function consumeMath(state: TailState, tail: string, start: number) {
131 const length = runLengthAt(tail, start);
132 const exclusive = state.exclusive;
133
134 if (exclusive?.kind === "math") {
135 if (!isEscapedAt(tail, start) && length >= exclusive.token.length) {
136 state.exclusive = null;
137 }
138 return start + length;
139 }
140
141 if (exclusive) return start + length;
142 if (isEscapedAt(tail, start)) return start + length;
143
144 state.exclusive = {
145 kind: "math",
146 start,
147 token: length >= 2 ? "$$" : "$",
148 };
149 return start + length;
150}
151
152function consumeTildes(state: TailState, tail: string, start: number) {
153 const length = runLengthAt(tail, start);
154 const exclusive = state.exclusive;
155
156 if (exclusive?.kind === "fence" && exclusive.token[0] === "~") {
157 if (isLineStart(tail, start) && !isEscapedAt(tail, start) && length >= exclusive.token.length) {
158 state.exclusive = null;
159 }
160 return start + length;
161 }
162
163 if (exclusive) return start;
164 if (length < 3 || !isLineStart(tail, start) || isEscapedAt(tail, start)) return start;
165
166 state.exclusive = { kind: "fence", start, token: "~".repeat(length) };
167 return start + length;
168}
169
170function consumeDelim(state: TailState, tail: string, start: number) {
171 const token = matchDelim(tail, start);
172 if (!token) return start;
173
174 if (isEscapedAt(tail, start)) return start + token.length;
175
176 const existingIndex = state.delims.findLastIndex((delim) => delim.token === token);
177 if (existingIndex !== -1) {
178 state.delims.splice(existingIndex, 1);
179 return start + token.length;
180 }
181
182 if (!canOpenDelim(tail, start, token)) return start + token.length;
183
184 state.delims.push({ start, token });
185 return start + token.length;
186}
187
188function matchDelim(tail: string, start: number): DelimToken | undefined {
189 const char = tail[start];
190
191 if (char === "*") {
192 if (tail.startsWith("***", start)) return "***";
193 if (tail.startsWith("**", start)) return "**";
194 return "*";
195 }
196
197 if (char === "_") {
198 if (tail.startsWith("__", start)) return "__";
199 return "_";
200 }
201
202 if (char === "~" && tail.startsWith("~~", start)) {
203 return "~~";
204 }
205}
206
207function canOpenDelim(tail: string, start: number, token: DelimToken) {
208 const next = tail[start + token.length];
209 if (!next || /\s/.test(next)) return false;
210
211 const prev = tail[start - 1];
212 return !isWordChar(prev) || !isWordChar(next);
213}
214
215function updateLink(state: TailState, index: number, char: string) {
216 const top = state.links.at(-1);
217
218 if (char === "[") {
219 state.links.push({ phase: "text", start: index });
220 return;
221 }
222
223 if (char === "]" && top?.phase === "text") {
224 state.links[state.links.length - 1] = {
225 phase: "url_wait",
226 start: top.start,
227 textEnd: index,
228 };
229 return;
230 }
231
232 if (char === "(" && top?.phase === "url_wait") {
233 state.links[state.links.length - 1] = {
234 phase: "url",
235 start: top.start,
236 textEnd: top.textEnd,
237 parenDepth: 0,
238 };
239 return;
240 }
241
242 if (char === "(" && top?.phase === "url") {
243 top.parenDepth += 1;
244 return;
245 }
246
247 if (char === ")" && top?.phase === "url") {
248 if (top.parenDepth > 0) {
249 top.parenDepth -= 1;
250 return;
251 }
252
253 state.links.pop();
254 }
255}
256
257function resetParagraphState(state: TailState) {
258 state.delims.length = 0;
259 state.links.length = 0;
260
261 if (state.exclusive?.kind === "fence") return;
262 if (state.exclusive?.kind === "math" && state.exclusive.token === "$$") return;
263
264 state.exclusive = null;
265}
266
267function inLinkUrlMode(state: TailState) {
268 const phase = state.links.at(-1)?.phase;
269 return phase === "url_wait" || phase === "url";
270}
271
272function renderTail(tail: string, state: TailState) {
273 const link = state.links.at(-1);
274 if (link) return renderOpenLink(tail, link);
275
276 const nestedClosers = renderNestedClosers(state);
277 if (nestedClosers) return appendCloser(tail, nestedClosers);
278
279 const open = findLastOpen(state);
280 if (!open) return tail;
281
282 if (open.kind === "delim") {
283 if (!hasContentAfter(tail, open.start, open.token.length)) return tail;
284 return appendCloserBeforeTrailingInlineWhitespace(tail, open.token);
285 }
286
287 if (!hasContentAfter(tail, open.start, open.token.length)) return tail;
288 if (open.kind === "fence") return tail;
289 if (open.kind === "code") return appendCloser(tail, open.token);
290 if (open.token === "$$") return appendCloser(tail, (tail.endsWith("\n") ? "" : "\n") + "$$");
291 if (/\s/.test(tail[tail.length - 1] ?? "")) return tail;
292 return appendCloser(tail, "$");
293}
294
295function renderOpenLink(tail: string, state: LinkState) {
296 const before = tail.slice(0, state.start);
297
298 if (state.phase === "text") {
299 if (!hasContentAfter(tail, state.start, 1)) return tail;
300 return before + tail.slice(state.start + 1);
301 }
302
303 const text = tail.slice(state.start + 1, state.textEnd);
304 if (state.phase === "url_wait") return before + text + tail.slice(state.textEnd + 1);
305 return before + text;
306}
307
308function renderNestedClosers(state: TailState) {
309 const closers: string[] = [];
310
311 if (state.exclusive) {
312 if (state.exclusive.kind !== "code") return undefined;
313 closers.push(state.exclusive.token);
314 }
315
316 for (let i = state.delims.length - 1; i >= 0; i--) {
317 const token = state.delims[i]!.token;
318 if (!NESTABLE_DELIMS.has(token)) return undefined;
319 closers.push(token);
320 }
321
322 if (closers.length < 2) return undefined;
323 return closers.join("");
324}
325
326function appendCloser(tail: string, closer: string) {
327 return tail + closer.slice(overlapLength(tail, closer));
328}
329
330function appendCloserBeforeTrailingInlineWhitespace(tail: string, closer: string) {
331 const trailingWhitespace = tail.match(/[^\S\n]+$/)?.[0];
332 if (!trailingWhitespace) return appendCloser(tail, closer);
333
334 const body = tail.slice(0, -trailingWhitespace.length);
335 return appendCloser(body, closer) + trailingWhitespace;
336}
337
338function overlapLength(tail: string, closer: string) {
339 for (let length = Math.min(tail.length, closer.length); length > 0; length -= 1) {
340 if (tail.endsWith(closer.slice(0, length))) return length;
341 }
342 return 0;
343}
344
345function findLastOpen(state: TailState) {
346 const delim = state.delims.at(-1);
347 if (state.exclusive && (!delim || state.exclusive.start > delim.start)) return state.exclusive;
348 if (delim) return { kind: "delim" as const, start: delim.start, token: delim.token };
349 return state.exclusive;
350}
351
352function runLengthAt(text: string, start: number) {
353 let end = start + 1;
354 while (end < text.length && text[end] === text[start]) end += 1;
355 return end - start;
356}
357
358function hasContentAfter(text: string, start: number, tokenLength: number) {
359 return text.length > start + tokenLength;
360}
361
362function isLineStart(text: string, index: number) {
363 return index === 0 || text[index - 1] === "\n";
364}
365
366function isEscapedAt(text: string, index: number) {
367 let count = 0;
368
369 for (let i = index - 1; i >= 0; i--) {
370 if (text[i] !== "\\") break;
371 count += 1;
372 }
373
374 return count % 2 === 1;
375}
376
377function isWordChar(char?: string) {
378 return !!char && /[A-Za-z0-9]/.test(char);
379}
src/Prediction.ts deleted-376
...@@ -1,376 +0,0 @@
1/**
2 * Incremental parser for predicting closing tags in Markdown text. Works best
3 * when continuously appending text to the end of the string; this behavior
4 * specifically triggers a fast parsing path.
5 */
6export class Predict {
7 #stable = "";
8
9 /** Incrementally reparses the tail. */
10 update(text: string) {
11 if (!text.startsWith(this.#stable)) this.#stable = "";
12 let tail = text.slice(this.#stable.length);
13 let state = parseTail(tail);
14 if (state.commitIndex > 0) {
15 this.#stable += tail.slice(0, state.commitIndex);
16 tail = tail.slice(state.commitIndex);
17 state = parseTail(tail);
18 }
19 return this.#stable + renderTail(tail, state);
20 }
21}
22
23type DelimToken = "***" | "**" | "__" | "~~" | "*" | "_";
24type DelimState = { start: number; token: DelimToken };
25type LinkState =
26 | { phase: "text"; start: number }
27 | { phase: "url_wait"; start: number; textEnd: number }
28 | { phase: "url"; start: number; textEnd: number; parenDepth: number };
29type ExclusiveState =
30 | { kind: "code"; start: number; token: string }
31 | { kind: "fence"; start: number; token: string }
32 | { kind: "math"; start: number; token: "$" | "$$" };
33interface TailState {
34 commitIndex: number;
35 delims: DelimState[];
36 exclusive: ExclusiveState | null;
37 links: LinkState[];
38};
39
40const NESTABLE_DELIMS = new Set<DelimToken>(["*", "**", "_", "__"]);
41
42function parseTail(tail: string): TailState {
43 const state: TailState = {
44 commitIndex: 0,
45 delims: [],
46 exclusive: null,
47 links: [],
48 };
49
50 for (let i = 0; i < tail.length; i++) {
51 const char = tail[i]!;
52
53 if (char === "\n" && tail[i - 1] === "\n") {
54 resetParagraphState(state);
55 if (!state.exclusive) state.commitIndex = i + 1;
56 continue;
57 }
58
59 const exclusiveEnd = consumeExclusive(state, tail, i);
60 if (exclusiveEnd > i) {
61 i = exclusiveEnd - 1;
62 continue;
63 }
64
65 if (state.exclusive) continue;
66
67 if (inLinkUrlMode(state)) {
68 updateLink(state, i, char);
69 continue;
70 }
71
72 const delimEnd = consumeDelim(state, tail, i);
73 if (delimEnd > i) {
74 i = delimEnd - 1;
75 continue;
76 }
77
78 if (isEscapedAt(tail, i)) continue;
79
80 updateLink(state, i, char);
81 }
82
83 return state;
84}
85
86function consumeExclusive(state: TailState, tail: string, start: number) {
87 const char = tail[start];
88 if (char === "`") return consumeBackticks(state, tail, start);
89 if (char === "$") return consumeMath(state, tail, start);
90 if (char === "~") return consumeTildes(state, tail, start);
91 return start;
92}
93
94function consumeBackticks(state: TailState, tail: string, start: number) {
95 const length = runLengthAt(tail, start);
96 const token = "`".repeat(length);
97 const exclusive = state.exclusive;
98
99 if (exclusive?.kind === "fence") {
100 if (
101 exclusive.token[0] === "`" &&
102 isLineStart(tail, start) &&
103 !isEscapedAt(tail, start) &&
104 length >= exclusive.token.length
105 ) {
106 state.exclusive = null;
107 }
108 return start + length;
109 }
110
111 if (exclusive?.kind === "code") {
112 if (!isEscapedAt(tail, start) && length >= exclusive.token.length) {
113 state.exclusive = null;
114 }
115 return start + length;
116 }
117
118 if (exclusive) return start + length;
119 if (isEscapedAt(tail, start)) return start + length;
120
121 if (length >= 3 && isLineStart(tail, start)) {
122 state.exclusive = { kind: "fence", start, token };
123 return start + length;
124 }
125
126 state.exclusive = { kind: "code", start, token };
127 return start + length;
128}
129
130function consumeMath(state: TailState, tail: string, start: number) {
131 const length = runLengthAt(tail, start);
132 const exclusive = state.exclusive;
133
134 if (exclusive?.kind === "math") {
135 if (!isEscapedAt(tail, start) && length >= exclusive.token.length) {
136 state.exclusive = null;
137 }
138 return start + length;
139 }
140
141 if (exclusive) return start + length;
142 if (isEscapedAt(tail, start)) return start + length;
143
144 state.exclusive = {
145 kind: "math",
146 start,
147 token: length >= 2 ? "$$" : "$",
148 };
149 return start + length;
150}
151
152function consumeTildes(state: TailState, tail: string, start: number) {
153 const length = runLengthAt(tail, start);
154 const exclusive = state.exclusive;
155
156 if (exclusive?.kind === "fence" && exclusive.token[0] === "~") {
157 if (
158 isLineStart(tail, start) &&
159 !isEscapedAt(tail, start) &&
160 length >= exclusive.token.length
161 ) {
162 state.exclusive = null;
163 }
164 return start + length;
165 }
166
167 if (exclusive) return start;
168 if (length < 3 || !isLineStart(tail, start) || isEscapedAt(tail, start)) return start;
169
170 state.exclusive = { kind: "fence", start, token: "~".repeat(length) };
171 return start + length;
172}
173
174function consumeDelim(state: TailState, tail: string, start: number) {
175 const token = matchDelim(tail, start);
176 if (!token) return start;
177
178 if (isEscapedAt(tail, start)) return start + token.length;
179
180 const existingIndex = state.delims.findLastIndex((delim) => delim.token === token);
181 if (existingIndex !== -1) {
182 state.delims.splice(existingIndex, 1);
183 return start + token.length;
184 }
185
186 if (!canOpenDelim(tail, start, token)) return start + token.length;
187
188 state.delims.push({ start, token });
189 return start + token.length;
190}
191
192function matchDelim(tail: string, start: number): DelimToken | undefined {
193 const char = tail[start];
194
195 if (char === "*") {
196 if (tail.startsWith("***", start)) return "***";
197 if (tail.startsWith("**", start)) return "**";
198 return "*";
199 }
200
201 if (char === "_") {
202 if (tail.startsWith("__", start)) return "__";
203 return "_";
204 }
205
206 if (char === "~" && tail.startsWith("~~", start)) {
207 return "~~";
208 }
209}
210
211function canOpenDelim(tail: string, start: number, token: DelimToken) {
212 const next = tail[start + token.length];
213 if (!next || /\s/.test(next)) return false;
214
215 const prev = tail[start - 1];
216 return !isWordChar(prev) || !isWordChar(next);
217}
218
219function updateLink(state: TailState, index: number, char: string) {
220 const top = state.links.at(-1);
221
222 if (char === "[") {
223 state.links.push({ phase: "text", start: index });
224 return;
225 }
226
227 if (char === "]" && top?.phase === "text") {
228 state.links[state.links.length - 1] = {
229 phase: "url_wait",
230 start: top.start,
231 textEnd: index,
232 };
233 return;
234 }
235
236 if (char === "(" && top?.phase === "url_wait") {
237 state.links[state.links.length - 1] = {
238 phase: "url",
239 start: top.start,
240 textEnd: top.textEnd,
241 parenDepth: 0,
242 };
243 return;
244 }
245
246 if (char === "(" && top?.phase === "url") {
247 top.parenDepth += 1;
248 return;
249 }
250
251 if (char === ")" && top?.phase === "url") {
252 if (top.parenDepth > 0) {
253 top.parenDepth -= 1;
254 return;
255 }
256
257 state.links.pop();
258 }
259}
260
261function resetParagraphState(state: TailState) {
262 state.delims.length = 0;
263 state.links.length = 0;
264
265 if (state.exclusive?.kind === "fence") return;
266 if (state.exclusive?.kind === "math" && state.exclusive.token === "$$") return;
267
268 state.exclusive = null;
269}
270
271function inLinkUrlMode(state: TailState) {
272 const phase = state.links.at(-1)?.phase;
273 return phase === "url_wait" || phase === "url";
274}
275
276function renderTail(tail: string, state: TailState) {
277 const link = state.links.at(-1);
278 if (link) return renderOpenLink(tail, link);
279
280 const nestedClosers = renderNestedClosers(state);
281 if (nestedClosers) return appendCloser(tail, nestedClosers);
282
283 const open = findLastOpen(state);
284 if (!open) return tail;
285
286 if (open.kind === "delim") {
287 if (!hasContentAfter(tail, open.start, open.token.length)) return tail;
288 if (/\s/.test(tail[tail.length - 1] ?? "")) return tail;
289 return appendCloser(tail, open.token);
290 }
291
292 if (!hasContentAfter(tail, open.start, open.token.length)) return tail;
293 if (open.kind === "fence") return tail;
294 if (open.kind === "code") return appendCloser(tail, open.token);
295 if (open.token === "$$") return appendCloser(tail, (tail.endsWith("\n") ? "" : "\n") + "$$");
296 if (/\s/.test(tail[tail.length - 1] ?? "")) return tail;
297 return appendCloser(tail, "$");
298}
299
300function renderOpenLink(tail: string, state: LinkState) {
301 const before = tail.slice(0, state.start);
302
303 if (state.phase === "text") {
304 if (!hasContentAfter(tail, state.start, 1)) return tail;
305 return before + tail.slice(state.start + 1);
306 }
307
308 const text = tail.slice(state.start + 1, state.textEnd);
309 if (state.phase === "url_wait") return before + text + tail.slice(state.textEnd + 1);
310 return before + text;
311}
312
313function renderNestedClosers(state: TailState) {
314 const closers: string[] = [];
315
316 if (state.exclusive) {
317 if (state.exclusive.kind !== "code") return undefined;
318 closers.push(state.exclusive.token);
319 }
320
321 for (let i = state.delims.length - 1; i >= 0; i--) {
322 const token = state.delims[i]!.token;
323 if (!NESTABLE_DELIMS.has(token)) return undefined;
324 closers.push(token);
325 }
326
327 if (closers.length < 2) return undefined;
328 return closers.join("");
329}
330
331function appendCloser(tail: string, closer: string) {
332 return tail + closer.slice(overlapLength(tail, closer));
333}
334
335function overlapLength(tail: string, closer: string) {
336 for (let length = Math.min(tail.length, closer.length); length > 0; length -= 1) {
337 if (tail.endsWith(closer.slice(0, length))) return length;
338 }
339 return 0;
340}
341
342function findLastOpen(state: TailState) {
343 const delim = state.delims.at(-1);
344 if (state.exclusive && (!delim || state.exclusive.start > delim.start)) return state.exclusive;
345 if (delim) return { kind: "delim" as const, start: delim.start, token: delim.token };
346 return state.exclusive;
347}
348
349function runLengthAt(text: string, start: number) {
350 let end = start + 1;
351 while (end < text.length && text[end] === text[start]) end += 1;
352 return end - start;
353}
354
355function hasContentAfter(text: string, start: number, tokenLength: number) {
356 return text.length > start + tokenLength;
357}
358
359function isLineStart(text: string, index: number) {
360 return index === 0 || text[index - 1] === "\n";
361}
362
363function isEscapedAt(text: string, index: number) {
364 let count = 0;
365
366 for (let i = index - 1; i >= 0; i--) {
367 if (text[i] !== "\\") break;
368 count += 1;
369 }
370
371 return count % 2 === 1;
372}
373
374function isWordChar(char?: string) {
375 return !!char && /[A-Za-z0-9]/.test(char);
376}
tests/Markdown.memoization.test.tsx+1-1
...@@ -1,7 +1,7 @@...@@ -1,7 +1,7 @@
1import { cleanup, render, screen } from "@testing-library/react";1import { cleanup, render, screen } from "@testing-library/react";
2import type { Components } from "rehype-react";2import type { Components } from "rehype-react";
3import type { ComponentPropsWithoutRef, JSX } from "react";3import type { ComponentPropsWithoutRef, JSX } from "react";
4import { afterEach, expect, it, vi } from "vite-plus/test";4import { afterEach, expect, it, vi } from "vitest";
5import { Markdown, MarkdownOptionsProvider } from "../src/Markdown.ts";5import { Markdown, MarkdownOptionsProvider } from "../src/Markdown.ts";
6import { Memoizer } from "../src/Memoizer.ts";6import { Memoizer } from "../src/Memoizer.ts";
77
tests/memoizedHastToReact.test.tsx+11-4
...@@ -5,10 +5,16 @@ import remarkParse from "remark-parse";...@@ -5,10 +5,16 @@ import remarkParse from "remark-parse";
5import remarkRehype from "remark-rehype";5import remarkRehype from "remark-rehype";
6import { unified } from "unified";6import { unified } from "unified";
7import type { Position } from "unist";7import type { Position } from "unist";
8import { describe, expect, it } from "vite-plus/test";8import { expect, it } from "vitest";
9import { memoizedHastToReact, type RenderState } from "../src/hast.ts";9import { memoizedHastToReact, type RenderState } from "../src/hast.ts";
1010
11const markdownProcessor = unified().use(remarkParse).use(remarkRehype);11const markdownProcessor = unified().use(remarkParse).use(remarkRehype);
12type TestElementProps = Record<string, unknown> & {
13 children?: ReactNode;
14 className?: string;
15 href?: string;
16 style?: Record<string, unknown>;
17};
1218
13it("bails out before rereading children when given the same parent node object", () => {19it("bails out before rereading children when given the same parent node object", () => {
14 const children = [element("p", [text("hello")])];20 const children = [element("p", [text("hello")])];
...@@ -340,7 +346,8 @@ function parseMarkdown(markdown: string) {...@@ -340,7 +346,8 @@ function parseMarkdown(markdown: string) {
340 return markdownProcessor.runSync(markdownProcessor.parse(markdown)) as Root;346 return markdownProcessor.runSync(markdownProcessor.parse(markdown)) as Root;
341}347}
342348
343function getElement(node: RootContent | ElementContent) {349function getElement(node: RootContent | ElementContent | undefined) {
350 if (!node) throw new TypeError("Expected element, got `undefined`");
344 if (node.type !== "element") throw new TypeError(`Expected element, got \`${node.type}\``);351 if (node.type !== "element") throw new TypeError(`Expected element, got \`${node.type}\``);
345 return node;352 return node;
346}353}
...@@ -357,9 +364,9 @@ function childrenOf(node: ReactNode) {...@@ -357,9 +364,9 @@ function childrenOf(node: ReactNode) {
357 return Array.isArray(children) ? children : [children];364 return Array.isArray(children) ? children : [children];
358}365}
359366
360function asElement(node: ReactNode): ReactElement {367function asElement(node: ReactNode): ReactElement<TestElementProps> {
361 if (!node || typeof node !== "object" || !("props" in node)) {368 if (!node || typeof node !== "object" || !("props" in node)) {
362 throw new TypeError("Expected a React element");369 throw new TypeError("Expected a React element");
363 }370 }
364 return node as ReactElement;371 return node as ReactElement<TestElementProps>;
365}372}
tests/prediction.test.ts+11-7
...@@ -1,5 +1,6 @@...@@ -1,5 +1,6 @@
1import { test, describe, expect } from "vite-plus/test";1/* oxlint-disable jest/expect-expect, jest/no-conditional-expect */
2import { Predict } from "../src/Prediction.ts";2import { describe, expect, test } from "vitest";
3import { Predict } from "../src/Predict.ts";
34
4describe.each(["stateless", "stateful"] as const)("%s processing", (mode) => {5describe.each(["stateless", "stateful"] as const)("%s processing", (mode) => {
5 function stateless(text: string) {6 function stateless(text: string) {
...@@ -145,7 +146,6 @@ describe.each(["stateless", "stateful"] as const)("%s processing", (mode) => {...@@ -145,7 +146,6 @@ describe.each(["stateless", "stateful"] as const)("%s processing", (mode) => {
145 ["strike", "a ~~hello world", "a ~~hello world~~"],146 ["strike", "a ~~hello world", "a ~~hello world~~"],
146 ["katex", "something\n\n$$\nE =", "something\n\n$$\nE =\n$$"],147 ["katex", "something\n\n$$\nE =", "something\n\n$$\nE =\n$$"],
147148
148
149 ["bold partial close", "a **hello world*", "a **hello world**"],149 ["bold partial close", "a **hello world*", "a **hello world**"],
150 ["bold italic partial close 1", "a ***hello world*", "a ***hello world***"],150 ["bold italic partial close 1", "a ***hello world*", "a ***hello world***"],
151 ["bold italic partial close 2", "a ***hello world**", "a ***hello world***"],151 ["bold italic partial close 2", "a ***hello world**", "a ***hello world***"],
...@@ -202,10 +202,14 @@ describe.each(["stateless", "stateful"] as const)("%s processing", (mode) => {...@@ -202,10 +202,14 @@ describe.each(["stateless", "stateful"] as const)("%s processing", (mode) => {
202 (input) => check(input, input),202 (input) => check(input, input),
203 );203 );
204204
205 // TODO: these are dubious205 test.each([
206 test.each(["hello *world ", "hello **world ", "hello _world ", "hello __world "])(206 ["hello *world ", "hello *world* "],
207 "does not add a closer after trailing whitespace for %j",207 ["hello **world ", "hello **world** "],
208 (input) => check(input, input),208 ["hello _world ", "hello _world_ "],
209 ["hello __world ", "hello __world__ "],
210 ])(
211 "closes before trailing whitespace for %j",
212 (input, expected) => check(input, expected),
209 );213 );
210 });214 });
211215
tsconfig.json+1-2
...@@ -12,7 +12,6 @@...@@ -12,7 +12,6 @@
12 "allowImportingTsExtensions": true,12 "allowImportingTsExtensions": true,
13 "noUncheckedIndexedAccess": true,13 "noUncheckedIndexedAccess": true,
14 "noUnusedLocals": true,14 "noUnusedLocals": true,
15 "declaration": true,
16 "noEmit": true,15 "noEmit": true,
17 "esModuleInterop": true,16 "esModuleInterop": true,
18 "isolatedModules": true,17 "isolatedModules": true,
...@@ -20,5 +19,5 @@...@@ -20,5 +19,5 @@
20 "skipLibCheck": true,19 "skipLibCheck": true,
21 "jsx": "react-jsx"20 "jsx": "react-jsx"
22 },21 },
23 "include": ["src"]22 "include": ["src", "tests", "example", "vite.config.ts"]
24}23}
vite.config.ts+1-14
...@@ -1,23 +1,10 @@...@@ -1,23 +1,10 @@
1import react from "@vitejs/plugin-react";1import react from "@vitejs/plugin-react";
2import tailwindcss from "@tailwindcss/vite";2import tailwindcss from "@tailwindcss/vite";
3import { defineConfig } from "vite-plus";3import { defineConfig } from "vitest/config";
44
5export default defineConfig({5export default defineConfig({
6 plugins: [react(), tailwindcss()],6 plugins: [react(), tailwindcss()],
7 pack: {
8 dts: {
9 tsgo: true,
10 },
11 exports: true,
12 },
13 lint: {
14 options: {
15 typeAware: true,
16 typeCheck: true,
17 },
18 },
19 test: {7 test: {
20 environment: "happy-dom",8 environment: "happy-dom",
21 },9 },
22 fmt: {},
23});10});