Thomas G. Lopes
commited on
update hf libs & update code snippets (#87)
Browse files- package.json +17 -6
- pnpm-lock.yaml +1067 -144
- src/lib/components/inference-playground/code-snippets.svelte +8 -21
- src/lib/components/inference-playground/snippets/curl.svelte.ts +0 -191
- src/lib/components/inference-playground/snippets/index.svelte.ts +0 -5
- src/lib/components/inference-playground/snippets/js.svelte.ts +0 -489
- src/lib/components/inference-playground/snippets/python.svelte.ts +0 -534
- src/lib/components/inference-playground/utils.svelte.ts +72 -57
- src/lib/state/conversations.svelte.ts +12 -2
- src/lib/types.ts +1 -1
- src/lib/utils/snippets.spec.ts +399 -0
- src/lib/utils/snippets.ts +294 -0
- vite.config.ts +28 -10
- vitest-setup-client.ts +18 -0
package.json
CHANGED
@@ -12,16 +12,18 @@
|
|
12 |
"lint": "prettier . --check . && eslint src/",
|
13 |
"format": "prettier . --write .",
|
14 |
"clean": "rm -rf ./node_modules/ && rm -rf ./.svelte-kit/ && ni && echo 'Project cleaned!'",
|
15 |
-
"update-ctx-length": "jiti scripts/update-ctx-length.ts"
|
|
|
|
|
16 |
},
|
17 |
"devDependencies": {
|
18 |
"@eslint/eslintrc": "^3.3.0",
|
19 |
"@eslint/js": "^9.22.0",
|
20 |
"@floating-ui/dom": "^1.6.13",
|
21 |
-
"@huggingface/hub": "^1.0
|
22 |
-
"@huggingface/inference": "^3.
|
23 |
-
"@huggingface/tasks": "^0.
|
24 |
-
"@huggingface/transformers": "^3.
|
25 |
"@iconify-json/carbon": "^1.2.8",
|
26 |
"@iconify-json/material-symbols": "^1.2.15",
|
27 |
"@ryoppippi/unplugin-typia": "^1.0.0",
|
@@ -32,6 +34,8 @@
|
|
32 |
"@sveltejs/vite-plugin-svelte": "^4.0.0",
|
33 |
"@tailwindcss/container-queries": "^0.1.1",
|
34 |
"@tailwindcss/postcss": "^4.0.9",
|
|
|
|
|
35 |
"@types/node": "^22.14.1",
|
36 |
"clsx": "^2.1.1",
|
37 |
"dotenv": "^16.5.0",
|
@@ -41,6 +45,7 @@
|
|
41 |
"globals": "^16.0.0",
|
42 |
"highlight.js": "^11.10.0",
|
43 |
"jiti": "^2.4.2",
|
|
|
44 |
"melt": "^0.30.1",
|
45 |
"openai": "^4.90.0",
|
46 |
"postcss": "^8.4.38",
|
@@ -58,7 +63,8 @@
|
|
58 |
"typescript": "^5.8.2",
|
59 |
"typescript-eslint": "^8.26.1",
|
60 |
"unplugin-icons": "^22.1.0",
|
61 |
-
"vite": "^5.4.4"
|
|
|
62 |
},
|
63 |
"type": "module",
|
64 |
"dependencies": {
|
@@ -66,5 +72,10 @@
|
|
66 |
"eslint-plugin-svelte": "^3.6.0",
|
67 |
"remult": "^3.0.2",
|
68 |
"typia": "^8.0.0"
|
|
|
|
|
|
|
|
|
|
|
69 |
}
|
70 |
}
|
|
|
12 |
"lint": "prettier . --check . && eslint src/",
|
13 |
"format": "prettier . --write .",
|
14 |
"clean": "rm -rf ./node_modules/ && rm -rf ./.svelte-kit/ && ni && echo 'Project cleaned!'",
|
15 |
+
"update-ctx-length": "jiti scripts/update-ctx-length.ts",
|
16 |
+
"test:unit": "vitest",
|
17 |
+
"test": "npm run test:unit -- --run"
|
18 |
},
|
19 |
"devDependencies": {
|
20 |
"@eslint/eslintrc": "^3.3.0",
|
21 |
"@eslint/js": "^9.22.0",
|
22 |
"@floating-ui/dom": "^1.6.13",
|
23 |
+
"@huggingface/hub": "^2.1.0",
|
24 |
+
"@huggingface/inference": "^3.13.2",
|
25 |
+
"@huggingface/tasks": "^0.19.8",
|
26 |
+
"@huggingface/transformers": "^3.5.1",
|
27 |
"@iconify-json/carbon": "^1.2.8",
|
28 |
"@iconify-json/material-symbols": "^1.2.15",
|
29 |
"@ryoppippi/unplugin-typia": "^1.0.0",
|
|
|
34 |
"@sveltejs/vite-plugin-svelte": "^4.0.0",
|
35 |
"@tailwindcss/container-queries": "^0.1.1",
|
36 |
"@tailwindcss/postcss": "^4.0.9",
|
37 |
+
"@testing-library/jest-dom": "^6.6.3",
|
38 |
+
"@testing-library/svelte": "^5.2.4",
|
39 |
"@types/node": "^22.14.1",
|
40 |
"clsx": "^2.1.1",
|
41 |
"dotenv": "^16.5.0",
|
|
|
45 |
"globals": "^16.0.0",
|
46 |
"highlight.js": "^11.10.0",
|
47 |
"jiti": "^2.4.2",
|
48 |
+
"jsdom": "^26.0.0",
|
49 |
"melt": "^0.30.1",
|
50 |
"openai": "^4.90.0",
|
51 |
"postcss": "^8.4.38",
|
|
|
63 |
"typescript": "^5.8.2",
|
64 |
"typescript-eslint": "^8.26.1",
|
65 |
"unplugin-icons": "^22.1.0",
|
66 |
+
"vite": "^5.4.4",
|
67 |
+
"vitest": "^3.0.0"
|
68 |
},
|
69 |
"type": "module",
|
70 |
"dependencies": {
|
|
|
72 |
"eslint-plugin-svelte": "^3.6.0",
|
73 |
"remult": "^3.0.2",
|
74 |
"typia": "^8.0.0"
|
75 |
+
},
|
76 |
+
"pnpm": {
|
77 |
+
"onlyBuiltDependencies": [
|
78 |
+
"esbuild"
|
79 |
+
]
|
80 |
}
|
81 |
}
|
pnpm-lock.yaml
CHANGED
@@ -31,17 +31,17 @@ importers:
|
|
31 |
specifier: ^1.6.13
|
32 |
version: 1.6.13
|
33 |
'@huggingface/hub':
|
34 |
-
specifier: ^1.0
|
35 |
-
version: 1.0
|
36 |
'@huggingface/inference':
|
37 |
-
specifier: ^3.
|
38 |
-
version: 3.
|
39 |
'@huggingface/tasks':
|
40 |
-
specifier: ^0.
|
41 |
-
version: 0.
|
42 |
'@huggingface/transformers':
|
43 |
-
specifier: ^3.
|
44 |
-
version: 3.
|
45 |
'@iconify-json/carbon':
|
46 |
specifier: ^1.2.8
|
47 |
version: 1.2.8
|
@@ -72,6 +72,12 @@ importers:
|
|
72 |
'@tailwindcss/postcss':
|
73 |
specifier: ^4.0.9
|
74 |
version: 4.0.9
|
|
|
|
|
|
|
|
|
|
|
|
|
75 |
'@types/node':
|
76 |
specifier: ^22.14.1
|
77 |
version: 22.14.1
|
@@ -99,12 +105,15 @@ importers:
|
|
99 |
jiti:
|
100 |
specifier: ^2.4.2
|
101 |
version: 2.4.2
|
|
|
|
|
|
|
102 |
melt:
|
103 |
specifier: ^0.30.1
|
104 |
version: 0.30.1(@floating-ui/dom@1.6.13)(svelte@5.30.1)
|
105 |
openai:
|
106 |
specifier: ^4.90.0
|
107 |
-
version: 4.90.0
|
108 |
postcss:
|
109 |
specifier: ^8.4.38
|
110 |
version: 8.5.3
|
@@ -153,9 +162,15 @@ importers:
|
|
153 |
vite:
|
154 |
specifier: ^5.4.4
|
155 |
version: 5.4.14(@types/node@22.14.1)(lightningcss@1.29.1)
|
|
|
|
|
|
|
156 |
|
157 |
packages:
|
158 |
|
|
|
|
|
|
|
159 |
'@alloc/quick-lru@5.2.0':
|
160 |
resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==}
|
161 |
engines: {node: '>=10'}
|
@@ -170,8 +185,51 @@ packages:
|
|
170 |
'@antfu/utils@8.1.1':
|
171 |
resolution: {integrity: sha512-Mex9nXf9vR6AhcXmMrlz/HVgYYZpVGJ6YlPgwl7UnaFpnshXs6EK/oa5Gpf3CzENMjkvEx2tQtntGnb7UtSTOQ==}
|
172 |
|
173 |
-
'@
|
174 |
-
resolution: {integrity: sha512-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
175 |
|
176 |
'@esbuild/aix-ppc64@0.21.5':
|
177 |
resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==}
|
@@ -508,26 +566,28 @@ packages:
|
|
508 |
'@floating-ui/utils@0.2.9':
|
509 |
resolution: {integrity: sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==}
|
510 |
|
511 |
-
'@huggingface/hub@1.0
|
512 |
-
resolution: {integrity: sha512-
|
513 |
engines: {node: '>=18'}
|
|
|
514 |
|
515 |
-
'@huggingface/inference@3.
|
516 |
-
resolution: {integrity: sha512-
|
517 |
engines: {node: '>=18'}
|
518 |
|
519 |
-
'@huggingface/jinja@0.
|
520 |
-
resolution: {integrity: sha512-
|
521 |
engines: {node: '>=18'}
|
522 |
|
523 |
-
'@huggingface/
|
524 |
-
resolution: {integrity: sha512-
|
|
|
525 |
|
526 |
-
'@huggingface/tasks@0.
|
527 |
-
resolution: {integrity: sha512-
|
528 |
|
529 |
-
'@huggingface/transformers@3.
|
530 |
-
resolution: {integrity: sha512-
|
531 |
|
532 |
'@humanfs/core@0.19.1':
|
533 |
resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==}
|
@@ -561,107 +621,118 @@ packages:
|
|
561 |
'@iconify/utils@2.3.0':
|
562 |
resolution: {integrity: sha512-GmQ78prtwYW6EtzXRU1rY+KwOKfz32PD7iJh6Iyqw68GiKuoZ2A6pRtzWONz5VQJbp50mEjXh/7NkumtrAgRKA==}
|
563 |
|
564 |
-
'@img/sharp-darwin-arm64@0.
|
565 |
-
resolution: {integrity: sha512-
|
566 |
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
567 |
cpu: [arm64]
|
568 |
os: [darwin]
|
569 |
|
570 |
-
'@img/sharp-darwin-x64@0.
|
571 |
-
resolution: {integrity: sha512-
|
572 |
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
573 |
cpu: [x64]
|
574 |
os: [darwin]
|
575 |
|
576 |
-
'@img/sharp-libvips-darwin-arm64@1.0
|
577 |
-
resolution: {integrity: sha512-
|
578 |
cpu: [arm64]
|
579 |
os: [darwin]
|
580 |
|
581 |
-
'@img/sharp-libvips-darwin-x64@1.0
|
582 |
-
resolution: {integrity: sha512-
|
583 |
cpu: [x64]
|
584 |
os: [darwin]
|
585 |
|
586 |
-
'@img/sharp-libvips-linux-arm64@1.0
|
587 |
-
resolution: {integrity: sha512-
|
588 |
cpu: [arm64]
|
589 |
os: [linux]
|
590 |
|
591 |
-
'@img/sharp-libvips-linux-arm@1.0
|
592 |
-
resolution: {integrity: sha512-
|
593 |
cpu: [arm]
|
594 |
os: [linux]
|
595 |
|
596 |
-
'@img/sharp-libvips-linux-
|
597 |
-
resolution: {integrity: sha512-
|
|
|
|
|
|
|
|
|
|
|
598 |
cpu: [s390x]
|
599 |
os: [linux]
|
600 |
|
601 |
-
'@img/sharp-libvips-linux-x64@1.0
|
602 |
-
resolution: {integrity: sha512-
|
603 |
cpu: [x64]
|
604 |
os: [linux]
|
605 |
|
606 |
-
'@img/sharp-libvips-linuxmusl-arm64@1.0
|
607 |
-
resolution: {integrity: sha512-
|
608 |
cpu: [arm64]
|
609 |
os: [linux]
|
610 |
|
611 |
-
'@img/sharp-libvips-linuxmusl-x64@1.0
|
612 |
-
resolution: {integrity: sha512-
|
613 |
cpu: [x64]
|
614 |
os: [linux]
|
615 |
|
616 |
-
'@img/sharp-linux-arm64@0.
|
617 |
-
resolution: {integrity: sha512-
|
618 |
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
619 |
cpu: [arm64]
|
620 |
os: [linux]
|
621 |
|
622 |
-
'@img/sharp-linux-arm@0.
|
623 |
-
resolution: {integrity: sha512-
|
624 |
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
625 |
cpu: [arm]
|
626 |
os: [linux]
|
627 |
|
628 |
-
'@img/sharp-linux-s390x@0.
|
629 |
-
resolution: {integrity: sha512-
|
630 |
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
631 |
cpu: [s390x]
|
632 |
os: [linux]
|
633 |
|
634 |
-
'@img/sharp-linux-x64@0.
|
635 |
-
resolution: {integrity: sha512-
|
636 |
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
637 |
cpu: [x64]
|
638 |
os: [linux]
|
639 |
|
640 |
-
'@img/sharp-linuxmusl-arm64@0.
|
641 |
-
resolution: {integrity: sha512-
|
642 |
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
643 |
cpu: [arm64]
|
644 |
os: [linux]
|
645 |
|
646 |
-
'@img/sharp-linuxmusl-x64@0.
|
647 |
-
resolution: {integrity: sha512-
|
648 |
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
649 |
cpu: [x64]
|
650 |
os: [linux]
|
651 |
|
652 |
-
'@img/sharp-wasm32@0.
|
653 |
-
resolution: {integrity: sha512
|
654 |
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
655 |
cpu: [wasm32]
|
656 |
|
657 |
-
'@img/sharp-win32-
|
658 |
-
resolution: {integrity: sha512-
|
|
|
|
|
|
|
|
|
|
|
|
|
659 |
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
660 |
cpu: [ia32]
|
661 |
os: [win32]
|
662 |
|
663 |
-
'@img/sharp-win32-x64@0.
|
664 |
-
resolution: {integrity: sha512-
|
665 |
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
666 |
cpu: [x64]
|
667 |
os: [win32]
|
@@ -1029,6 +1100,30 @@ packages:
|
|
1029 |
'@tailwindcss/postcss@4.0.9':
|
1030 |
resolution: {integrity: sha512-BT/E+pdMqulavEAVM5NCpxmGEwHiLDPpkmg/c/X25ZBW+izTe+aZ+v1gf/HXTrihRoCxrUp5U4YyHsBTzspQKQ==}
|
1031 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1032 |
'@types/cookie@0.6.0':
|
1033 |
resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==}
|
1034 |
|
@@ -1109,6 +1204,35 @@ packages:
|
|
1109 |
'@ungap/structured-clone@1.3.0':
|
1110 |
resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==}
|
1111 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1112 |
abort-controller@3.0.0:
|
1113 |
resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==}
|
1114 |
engines: {node: '>=6.5'}
|
@@ -1123,6 +1247,10 @@ packages:
|
|
1123 |
engines: {node: '>=0.4.0'}
|
1124 |
hasBin: true
|
1125 |
|
|
|
|
|
|
|
|
|
1126 |
agentkeepalive@4.6.0:
|
1127 |
resolution: {integrity: sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==}
|
1128 |
engines: {node: '>= 8.0.0'}
|
@@ -1149,6 +1277,9 @@ packages:
|
|
1149 |
argparse@2.0.1:
|
1150 |
resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
|
1151 |
|
|
|
|
|
|
|
1152 |
aria-query@5.3.2:
|
1153 |
resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==}
|
1154 |
engines: {node: '>= 0.4'}
|
@@ -1156,6 +1287,10 @@ packages:
|
|
1156 |
array-timsort@1.0.3:
|
1157 |
resolution: {integrity: sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==}
|
1158 |
|
|
|
|
|
|
|
|
|
1159 |
asynckit@0.4.0:
|
1160 |
resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
|
1161 |
|
@@ -1176,6 +1311,10 @@ packages:
|
|
1176 |
bl@4.1.0:
|
1177 |
resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==}
|
1178 |
|
|
|
|
|
|
|
|
|
1179 |
brace-expansion@1.1.11:
|
1180 |
resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
|
1181 |
|
@@ -1189,6 +1328,10 @@ packages:
|
|
1189 |
buffer@5.7.1:
|
1190 |
resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==}
|
1191 |
|
|
|
|
|
|
|
|
|
1192 |
call-bind-apply-helpers@1.0.2:
|
1193 |
resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==}
|
1194 |
engines: {node: '>= 0.4'}
|
@@ -1200,6 +1343,14 @@ packages:
|
|
1200 |
ccount@2.0.1:
|
1201 |
resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==}
|
1202 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1203 |
chalk@4.1.2:
|
1204 |
resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
|
1205 |
engines: {node: '>=10'}
|
@@ -1213,6 +1364,10 @@ packages:
|
|
1213 |
chardet@0.7.0:
|
1214 |
resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==}
|
1215 |
|
|
|
|
|
|
|
|
|
1216 |
chokidar@4.0.3:
|
1217 |
resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==}
|
1218 |
engines: {node: '>= 14.16.0'}
|
@@ -1300,11 +1455,22 @@ packages:
|
|
1300 |
resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
|
1301 |
engines: {node: '>= 8'}
|
1302 |
|
|
|
|
|
|
|
1303 |
cssesc@3.0.0:
|
1304 |
resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
|
1305 |
engines: {node: '>=4'}
|
1306 |
hasBin: true
|
1307 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1308 |
debug@4.4.0:
|
1309 |
resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==}
|
1310 |
engines: {node: '>=6.0'}
|
@@ -1314,6 +1480,13 @@ packages:
|
|
1314 |
supports-color:
|
1315 |
optional: true
|
1316 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1317 |
deep-is@0.1.4:
|
1318 |
resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
|
1319 |
|
@@ -1324,6 +1497,14 @@ packages:
|
|
1324 |
defaults@1.0.4:
|
1325 |
resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==}
|
1326 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1327 |
defu@6.1.4:
|
1328 |
resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==}
|
1329 |
|
@@ -1340,10 +1521,13 @@ packages:
|
|
1340 |
engines: {node: '>=0.10'}
|
1341 |
hasBin: true
|
1342 |
|
1343 |
-
detect-libc@2.0.
|
1344 |
-
resolution: {integrity: sha512-
|
1345 |
engines: {node: '>=8'}
|
1346 |
|
|
|
|
|
|
|
1347 |
devalue@5.1.1:
|
1348 |
resolution: {integrity: sha512-maua5KUiapvEwiEAe+XnlZ3Rh0GD+qI1J/nb9vrJc3muPXvcF/8gXYTWF76+5DAqHyDUtOIImEuo0YKE9mshVw==}
|
1349 |
|
@@ -1357,6 +1541,12 @@ packages:
|
|
1357 |
resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==}
|
1358 |
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
|
1359 |
|
|
|
|
|
|
|
|
|
|
|
|
|
1360 |
dotenv@16.5.0:
|
1361 |
resolution: {integrity: sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==}
|
1362 |
engines: {node: '>=12'}
|
@@ -1376,6 +1566,10 @@ packages:
|
|
1376 |
resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==}
|
1377 |
engines: {node: '>=10.13.0'}
|
1378 |
|
|
|
|
|
|
|
|
|
1379 |
es-define-property@1.0.1:
|
1380 |
resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==}
|
1381 |
engines: {node: '>= 0.4'}
|
@@ -1384,6 +1578,9 @@ packages:
|
|
1384 |
resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
|
1385 |
engines: {node: '>= 0.4'}
|
1386 |
|
|
|
|
|
|
|
1387 |
es-object-atoms@1.1.1:
|
1388 |
resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==}
|
1389 |
engines: {node: '>= 0.4'}
|
@@ -1392,6 +1589,9 @@ packages:
|
|
1392 |
resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==}
|
1393 |
engines: {node: '>= 0.4'}
|
1394 |
|
|
|
|
|
|
|
1395 |
esbuild@0.21.5:
|
1396 |
resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==}
|
1397 |
engines: {node: '>=12'}
|
@@ -1492,6 +1692,9 @@ packages:
|
|
1492 |
estree-walker@2.0.2:
|
1493 |
resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
|
1494 |
|
|
|
|
|
|
|
1495 |
esutils@2.0.3:
|
1496 |
resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
|
1497 |
engines: {node: '>=0.10.0'}
|
@@ -1500,6 +1703,10 @@ packages:
|
|
1500 |
resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==}
|
1501 |
engines: {node: '>=6'}
|
1502 |
|
|
|
|
|
|
|
|
|
1503 |
exsolve@1.0.4:
|
1504 |
resolution: {integrity: sha512-xsZH6PXaER4XoV+NiT7JHp1bJodJVT+cxeSH1G0f0tlT0lJqYuHUP3bUx2HtfTDvOagMINYp8rsqusxud3RXhw==}
|
1505 |
|
@@ -1534,6 +1741,14 @@ packages:
|
|
1534 |
picomatch:
|
1535 |
optional: true
|
1536 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1537 |
figures@3.2.0:
|
1538 |
resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==}
|
1539 |
engines: {node: '>=8'}
|
@@ -1603,6 +1818,10 @@ packages:
|
|
1603 |
resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
|
1604 |
engines: {node: '>=10.13.0'}
|
1605 |
|
|
|
|
|
|
|
|
|
1606 |
global-prefix@4.0.0:
|
1607 |
resolution: {integrity: sha512-w0Uf9Y9/nyHinEk5vMJKRie+wa4kR5hmDbEhGGds/kG1PwGLLHKRoNMeJOyCQjjBkANlnScqgzcFwGHgmgLkVA==}
|
1608 |
engines: {node: '>=16'}
|
@@ -1619,6 +1838,10 @@ packages:
|
|
1619 |
resolution: {integrity: sha512-iInW14XItCXET01CQFqudPOWP2jYMl7T+QRQT+UNcR/iQncN/F0UNpgd76iFkBPgNQb4+X3LV9tLJYzwh+Gl3A==}
|
1620 |
engines: {node: '>=18'}
|
1621 |
|
|
|
|
|
|
|
|
|
1622 |
gopd@1.2.0:
|
1623 |
resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==}
|
1624 |
engines: {node: '>= 0.4'}
|
@@ -1640,6 +1863,9 @@ packages:
|
|
1640 |
resolution: {integrity: sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ==}
|
1641 |
engines: {node: '>=8'}
|
1642 |
|
|
|
|
|
|
|
1643 |
has-symbols@1.1.0:
|
1644 |
resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==}
|
1645 |
engines: {node: '>= 0.4'}
|
@@ -1662,9 +1888,21 @@ packages:
|
|
1662 |
resolution: {integrity: sha512-Xwwo44whKBVCYoliBQwaPvtd/2tYFkRQtXDWj1nackaV2JPXx3L0+Jvd8/qCJ2p+ML0/XVkJ2q+Mr+UVdpJK5w==}
|
1663 |
engines: {node: '>=12.0.0'}
|
1664 |
|
|
|
|
|
|
|
|
|
1665 |
html-void-elements@3.0.0:
|
1666 |
resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==}
|
1667 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1668 |
humanize-ms@1.2.1:
|
1669 |
resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==}
|
1670 |
|
@@ -1672,6 +1910,10 @@ packages:
|
|
1672 |
resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==}
|
1673 |
engines: {node: '>=0.10.0'}
|
1674 |
|
|
|
|
|
|
|
|
|
1675 |
ieee754@1.2.1:
|
1676 |
resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
|
1677 |
|
@@ -1690,6 +1932,10 @@ packages:
|
|
1690 |
resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
|
1691 |
engines: {node: '>=0.8.19'}
|
1692 |
|
|
|
|
|
|
|
|
|
1693 |
inherits@2.0.4:
|
1694 |
resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
|
1695 |
|
@@ -1731,6 +1977,9 @@ packages:
|
|
1731 |
resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
|
1732 |
engines: {node: '>=0.12.0'}
|
1733 |
|
|
|
|
|
|
|
1734 |
is-reference@1.2.1:
|
1735 |
resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==}
|
1736 |
|
@@ -1768,10 +2017,22 @@ packages:
|
|
1768 |
resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==}
|
1769 |
hasBin: true
|
1770 |
|
|
|
|
|
|
|
1771 |
js-yaml@4.1.0:
|
1772 |
resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
|
1773 |
hasBin: true
|
1774 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1775 |
json-buffer@3.0.1:
|
1776 |
resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
|
1777 |
|
@@ -1781,6 +2042,9 @@ packages:
|
|
1781 |
json-stable-stringify-without-jsonify@1.0.1:
|
1782 |
resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
|
1783 |
|
|
|
|
|
|
|
1784 |
keyv@4.5.4:
|
1785 |
resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
|
1786 |
|
@@ -1898,9 +2162,23 @@ packages:
|
|
1898 |
long@5.3.1:
|
1899 |
resolution: {integrity: sha512-ka87Jz3gcx/I7Hal94xaN2tZEOPoUOEVftkQqZx2EeQRN7LGdfLlI3FvZ+7WDplm+vK2Urx9ULrvSowtdCieng==}
|
1900 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1901 |
magic-string@0.30.17:
|
1902 |
resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==}
|
1903 |
|
|
|
|
|
|
|
|
|
1904 |
math-intrinsics@1.1.0:
|
1905 |
resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==}
|
1906 |
engines: {node: '>= 0.4'}
|
@@ -1949,6 +2227,10 @@ packages:
|
|
1949 |
resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
|
1950 |
engines: {node: '>=6'}
|
1951 |
|
|
|
|
|
|
|
|
|
1952 |
minimatch@3.1.2:
|
1953 |
resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
|
1954 |
|
@@ -2015,6 +2297,13 @@ packages:
|
|
2015 |
encoding:
|
2016 |
optional: true
|
2017 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2018 |
onetime@5.1.2:
|
2019 |
resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
|
2020 |
engines: {node: '>=6'}
|
@@ -2025,18 +2314,18 @@ packages:
|
|
2025 |
oniguruma-to-es@4.3.3:
|
2026 |
resolution: {integrity: sha512-rPiZhzC3wXwE59YQMRDodUwwT9FZ9nNBwQQfsd1wfdtlKEyCdRV0avrTcSZ5xlIvGRVPd/cx6ZN45ECmS39xvg==}
|
2027 |
|
2028 |
-
onnxruntime-common@1.
|
2029 |
-
resolution: {integrity: sha512-
|
2030 |
|
2031 |
-
onnxruntime-common@1.22.0-dev.
|
2032 |
-
resolution: {integrity: sha512-
|
2033 |
|
2034 |
-
onnxruntime-node@1.
|
2035 |
-
resolution: {integrity: sha512-
|
2036 |
os: [win32, darwin, linux]
|
2037 |
|
2038 |
-
onnxruntime-web@1.22.0-dev.
|
2039 |
-
resolution: {integrity: sha512-
|
2040 |
|
2041 |
openai@4.90.0:
|
2042 |
resolution: {integrity: sha512-YCuHMMycqtCg1B8G9ezkOF0j8UnBWD3Al/zYaelpuXwU1yhCEv+Y4n9G20MnyGy6cH4GsFwOMrgstQ+bgG1PtA==}
|
@@ -2085,6 +2374,9 @@ packages:
|
|
2085 |
resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
|
2086 |
engines: {node: '>=6'}
|
2087 |
|
|
|
|
|
|
|
2088 |
path-exists@4.0.0:
|
2089 |
resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
|
2090 |
engines: {node: '>=8'}
|
@@ -2106,6 +2398,10 @@ packages:
|
|
2106 |
pathe@2.0.3:
|
2107 |
resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==}
|
2108 |
|
|
|
|
|
|
|
|
|
2109 |
picocolors@1.1.1:
|
2110 |
resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
|
2111 |
|
@@ -2236,6 +2532,10 @@ packages:
|
|
2236 |
engines: {node: '>=14'}
|
2237 |
hasBin: true
|
2238 |
|
|
|
|
|
|
|
|
|
2239 |
pretty-format@29.7.0:
|
2240 |
resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==}
|
2241 |
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
|
@@ -2261,6 +2561,9 @@ packages:
|
|
2261 |
resolution: {integrity: sha512-U+5l2KrcMNOUPYvazA3h5ekF80FHTUG+87SEAmHZmolh1M+i/WyTCxVzmi+tidIa1tM4BSe8g2Y/D3loWDjj+w==}
|
2262 |
engines: {node: '>=4'}
|
2263 |
|
|
|
|
|
|
|
2264 |
react-is@18.3.1:
|
2265 |
resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==}
|
2266 |
|
@@ -2272,6 +2575,10 @@ packages:
|
|
2272 |
resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==}
|
2273 |
engines: {node: '>= 14.18.0'}
|
2274 |
|
|
|
|
|
|
|
|
|
2275 |
reflect-metadata@0.1.14:
|
2276 |
resolution: {integrity: sha512-ZhYeb6nRaXCfhnndflDK8qI6ZQ/YcWZCISRAWICW9XYqMUwjZM9Z0DveWX/ABN01oxSHwVxKQmxeYZSsm0jh5A==}
|
2277 |
|
@@ -2312,11 +2619,18 @@ packages:
|
|
2312 |
resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==}
|
2313 |
engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
|
2314 |
|
|
|
|
|
|
|
|
|
2315 |
rollup@4.34.9:
|
2316 |
resolution: {integrity: sha512-nF5XYqWWp9hx/LrpC8sZvvvmq0TeTjQgaZHYmAgwysT9nh8sWnZhBnM8ZyVbbJFIQBLwHDNoMqsBZBbUo4U8sQ==}
|
2317 |
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
|
2318 |
hasBin: true
|
2319 |
|
|
|
|
|
|
|
2320 |
run-async@2.4.1:
|
2321 |
resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==}
|
2322 |
engines: {node: '>=0.12.0'}
|
@@ -2347,16 +2661,32 @@ packages:
|
|
2347 |
safer-buffer@2.1.2:
|
2348 |
resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
|
2349 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2350 |
semver@7.7.1:
|
2351 |
resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==}
|
2352 |
engines: {node: '>=10'}
|
2353 |
hasBin: true
|
2354 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2355 |
set-cookie-parser@2.7.1:
|
2356 |
resolution: {integrity: sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==}
|
2357 |
|
2358 |
-
sharp@0.
|
2359 |
-
resolution: {integrity: sha512-
|
2360 |
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
2361 |
|
2362 |
shebang-command@2.0.0:
|
@@ -2370,6 +2700,9 @@ packages:
|
|
2370 |
shiki@3.4.0:
|
2371 |
resolution: {integrity: sha512-Ni80XHcqhOEXv5mmDAvf5p6PAJqbUc/RzFeaOqk+zP5DLvTPS3j0ckvA+MI87qoxTQ5RGJDVTbdl/ENLSyyAnQ==}
|
2372 |
|
|
|
|
|
|
|
2373 |
signal-exit@3.0.7:
|
2374 |
resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
|
2375 |
|
@@ -2387,6 +2720,15 @@ packages:
|
|
2387 |
space-separated-tokens@2.0.2:
|
2388 |
resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==}
|
2389 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2390 |
string-width@4.2.3:
|
2391 |
resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
|
2392 |
engines: {node: '>=8'}
|
@@ -2401,6 +2743,10 @@ packages:
|
|
2401 |
resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
|
2402 |
engines: {node: '>=8'}
|
2403 |
|
|
|
|
|
|
|
|
|
2404 |
strip-json-comments@3.1.1:
|
2405 |
resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
|
2406 |
engines: {node: '>=8'}
|
@@ -2434,6 +2780,9 @@ packages:
|
|
2434 |
resolution: {integrity: sha512-QIYtKnJGkubWXtNkrUBKVCvyo9gjcccdbnvXfwsGNhvbeNNdQjRDTa/BiQcJ2kWXbXPQbWKyT7CUu53KIj1rfw==}
|
2435 |
engines: {node: '>=18'}
|
2436 |
|
|
|
|
|
|
|
2437 |
synckit@0.9.2:
|
2438 |
resolution: {integrity: sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==}
|
2439 |
engines: {node: ^14.18.0 || >=16.0.0}
|
@@ -2455,9 +2804,35 @@ packages:
|
|
2455 |
through@2.3.8:
|
2456 |
resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==}
|
2457 |
|
|
|
|
|
|
|
2458 |
tinyexec@0.3.2:
|
2459 |
resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==}
|
2460 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2461 |
tmp@0.0.33:
|
2462 |
resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==}
|
2463 |
engines: {node: '>=0.6.0'}
|
@@ -2470,9 +2845,17 @@ packages:
|
|
2470 |
resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==}
|
2471 |
engines: {node: '>=6'}
|
2472 |
|
|
|
|
|
|
|
|
|
2473 |
tr46@0.0.3:
|
2474 |
resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
|
2475 |
|
|
|
|
|
|
|
|
|
2476 |
trim-lines@3.0.1:
|
2477 |
resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==}
|
2478 |
|
@@ -2493,6 +2876,10 @@ packages:
|
|
2493 |
resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
|
2494 |
engines: {node: '>= 0.8.0'}
|
2495 |
|
|
|
|
|
|
|
|
|
2496 |
type-fest@0.21.3:
|
2497 |
resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==}
|
2498 |
engines: {node: '>=10'}
|
@@ -2603,6 +2990,11 @@ packages:
|
|
2603 |
vfile@6.0.3:
|
2604 |
resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==}
|
2605 |
|
|
|
|
|
|
|
|
|
|
|
2606 |
vite@5.4.14:
|
2607 |
resolution: {integrity: sha512-EK5cY7Q1D8JNhSaPKVK4pwBFvaTmZxEnoKXLG/U9gmdDcihQGNzFlgIvaxezFR4glP1LsuiedwMBqCXH3wZccA==}
|
2608 |
engines: {node: ^18.0.0 || >=20.0.0}
|
@@ -2682,6 +3074,38 @@ packages:
|
|
2682 |
vite:
|
2683 |
optional: true
|
2684 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2685 |
wcwidth@1.0.1:
|
2686 |
resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==}
|
2687 |
|
@@ -2692,9 +3116,25 @@ packages:
|
|
2692 |
webidl-conversions@3.0.1:
|
2693 |
resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
|
2694 |
|
|
|
|
|
|
|
|
|
2695 |
webpack-virtual-modules@0.6.2:
|
2696 |
resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==}
|
2697 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2698 |
whatwg-url@5.0.0:
|
2699 |
resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==}
|
2700 |
|
@@ -2708,6 +3148,11 @@ packages:
|
|
2708 |
engines: {node: ^16.13.0 || >=18.0.0}
|
2709 |
hasBin: true
|
2710 |
|
|
|
|
|
|
|
|
|
|
|
2711 |
word-wrap@1.2.5:
|
2712 |
resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
|
2713 |
engines: {node: '>=0.10.0'}
|
@@ -2716,6 +3161,25 @@ packages:
|
|
2716 |
resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==}
|
2717 |
engines: {node: '>=8'}
|
2718 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2719 |
yallist@5.0.0:
|
2720 |
resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==}
|
2721 |
engines: {node: '>=18'}
|
@@ -2745,6 +3209,8 @@ packages:
|
|
2745 |
|
2746 |
snapshots:
|
2747 |
|
|
|
|
|
2748 |
'@alloc/quick-lru@5.2.0': {}
|
2749 |
|
2750 |
'@ampproject/remapping@2.3.0':
|
@@ -2759,7 +3225,45 @@ snapshots:
|
|
2759 |
|
2760 |
'@antfu/utils@8.1.1': {}
|
2761 |
|
2762 |
-
'@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2763 |
dependencies:
|
2764 |
tslib: 2.8.1
|
2765 |
optional: true
|
@@ -2963,26 +3467,27 @@ snapshots:
|
|
2963 |
|
2964 |
'@floating-ui/utils@0.2.9': {}
|
2965 |
|
2966 |
-
'@huggingface/hub@1.0
|
2967 |
dependencies:
|
2968 |
-
'@huggingface/tasks': 0.
|
2969 |
|
2970 |
-
'@huggingface/inference@3.
|
2971 |
dependencies:
|
2972 |
-
'@huggingface/
|
|
|
2973 |
|
2974 |
-
'@huggingface/jinja@0.
|
2975 |
|
2976 |
-
'@huggingface/
|
2977 |
|
2978 |
-
'@huggingface/tasks@0.
|
2979 |
|
2980 |
-
'@huggingface/transformers@3.
|
2981 |
dependencies:
|
2982 |
-
'@huggingface/jinja': 0.
|
2983 |
-
onnxruntime-node: 1.
|
2984 |
-
onnxruntime-web: 1.22.0-dev.
|
2985 |
-
sharp: 0.
|
2986 |
|
2987 |
'@humanfs/core@0.19.1': {}
|
2988 |
|
@@ -3020,79 +3525,85 @@ snapshots:
|
|
3020 |
transitivePeerDependencies:
|
3021 |
- supports-color
|
3022 |
|
3023 |
-
'@img/sharp-darwin-arm64@0.
|
3024 |
optionalDependencies:
|
3025 |
-
'@img/sharp-libvips-darwin-arm64': 1.0
|
3026 |
optional: true
|
3027 |
|
3028 |
-
'@img/sharp-darwin-x64@0.
|
3029 |
optionalDependencies:
|
3030 |
-
'@img/sharp-libvips-darwin-x64': 1.0
|
3031 |
optional: true
|
3032 |
|
3033 |
-
'@img/sharp-libvips-darwin-arm64@1.0
|
3034 |
optional: true
|
3035 |
|
3036 |
-
'@img/sharp-libvips-darwin-x64@1.0
|
3037 |
optional: true
|
3038 |
|
3039 |
-
'@img/sharp-libvips-linux-arm64@1.0
|
3040 |
optional: true
|
3041 |
|
3042 |
-
'@img/sharp-libvips-linux-arm@1.0
|
3043 |
optional: true
|
3044 |
|
3045 |
-
'@img/sharp-libvips-linux-
|
3046 |
optional: true
|
3047 |
|
3048 |
-
'@img/sharp-libvips-linux-
|
3049 |
optional: true
|
3050 |
|
3051 |
-
'@img/sharp-libvips-
|
3052 |
optional: true
|
3053 |
|
3054 |
-
'@img/sharp-libvips-linuxmusl-
|
3055 |
optional: true
|
3056 |
|
3057 |
-
'@img/sharp-
|
|
|
|
|
|
|
3058 |
optionalDependencies:
|
3059 |
-
'@img/sharp-libvips-linux-arm64': 1.0
|
3060 |
optional: true
|
3061 |
|
3062 |
-
'@img/sharp-linux-arm@0.
|
3063 |
optionalDependencies:
|
3064 |
-
'@img/sharp-libvips-linux-arm': 1.0
|
3065 |
optional: true
|
3066 |
|
3067 |
-
'@img/sharp-linux-s390x@0.
|
3068 |
optionalDependencies:
|
3069 |
-
'@img/sharp-libvips-linux-s390x': 1.0
|
3070 |
optional: true
|
3071 |
|
3072 |
-
'@img/sharp-linux-x64@0.
|
3073 |
optionalDependencies:
|
3074 |
-
'@img/sharp-libvips-linux-x64': 1.0
|
3075 |
optional: true
|
3076 |
|
3077 |
-
'@img/sharp-linuxmusl-arm64@0.
|
3078 |
optionalDependencies:
|
3079 |
-
'@img/sharp-libvips-linuxmusl-arm64': 1.0
|
3080 |
optional: true
|
3081 |
|
3082 |
-
'@img/sharp-linuxmusl-x64@0.
|
3083 |
optionalDependencies:
|
3084 |
-
'@img/sharp-libvips-linuxmusl-x64': 1.0
|
3085 |
optional: true
|
3086 |
|
3087 |
-
'@img/sharp-wasm32@0.
|
3088 |
dependencies:
|
3089 |
-
'@emnapi/runtime': 1.4.
|
|
|
|
|
|
|
3090 |
optional: true
|
3091 |
|
3092 |
-
'@img/sharp-win32-ia32@0.
|
3093 |
optional: true
|
3094 |
|
3095 |
-
'@img/sharp-win32-x64@0.
|
3096 |
optional: true
|
3097 |
|
3098 |
'@isaacs/fs-minipass@4.0.1':
|
@@ -3447,6 +3958,37 @@ snapshots:
|
|
3447 |
postcss: 8.5.3
|
3448 |
tailwindcss: 4.0.9
|
3449 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3450 |
'@types/cookie@0.6.0': {}
|
3451 |
|
3452 |
'@types/estree@1.0.6': {}
|
@@ -3557,6 +4099,46 @@ snapshots:
|
|
3557 |
|
3558 |
'@ungap/structured-clone@1.3.0': {}
|
3559 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3560 |
abort-controller@3.0.0:
|
3561 |
dependencies:
|
3562 |
event-target-shim: 5.0.1
|
@@ -3567,6 +4149,8 @@ snapshots:
|
|
3567 |
|
3568 |
acorn@8.14.0: {}
|
3569 |
|
|
|
|
|
3570 |
agentkeepalive@4.6.0:
|
3571 |
dependencies:
|
3572 |
humanize-ms: 1.2.1
|
@@ -3592,10 +4176,16 @@ snapshots:
|
|
3592 |
|
3593 |
argparse@2.0.1: {}
|
3594 |
|
|
|
|
|
|
|
|
|
3595 |
aria-query@5.3.2: {}
|
3596 |
|
3597 |
array-timsort@1.0.3: {}
|
3598 |
|
|
|
|
|
3599 |
asynckit@0.4.0: {}
|
3600 |
|
3601 |
axe-core@4.9.1: {}
|
@@ -3612,6 +4202,8 @@ snapshots:
|
|
3612 |
inherits: 2.0.4
|
3613 |
readable-stream: 3.6.2
|
3614 |
|
|
|
|
|
3615 |
brace-expansion@1.1.11:
|
3616 |
dependencies:
|
3617 |
balanced-match: 1.0.2
|
@@ -3630,6 +4222,8 @@ snapshots:
|
|
3630 |
base64-js: 1.5.1
|
3631 |
ieee754: 1.2.1
|
3632 |
|
|
|
|
|
3633 |
call-bind-apply-helpers@1.0.2:
|
3634 |
dependencies:
|
3635 |
es-errors: 1.3.0
|
@@ -3639,6 +4233,19 @@ snapshots:
|
|
3639 |
|
3640 |
ccount@2.0.1: {}
|
3641 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3642 |
chalk@4.1.2:
|
3643 |
dependencies:
|
3644 |
ansi-styles: 4.3.0
|
@@ -3650,6 +4257,8 @@ snapshots:
|
|
3650 |
|
3651 |
chardet@0.7.0: {}
|
3652 |
|
|
|
|
|
3653 |
chokidar@4.0.3:
|
3654 |
dependencies:
|
3655 |
readdirp: 4.1.2
|
@@ -3722,12 +4331,28 @@ snapshots:
|
|
3722 |
shebang-command: 2.0.0
|
3723 |
which: 2.0.2
|
3724 |
|
|
|
|
|
3725 |
cssesc@3.0.0: {}
|
3726 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3727 |
debug@4.4.0:
|
3728 |
dependencies:
|
3729 |
ms: 2.1.3
|
3730 |
|
|
|
|
|
|
|
|
|
3731 |
deep-is@0.1.4: {}
|
3732 |
|
3733 |
deepmerge@4.3.1: {}
|
@@ -3736,6 +4361,18 @@ snapshots:
|
|
3736 |
dependencies:
|
3737 |
clone: 1.0.4
|
3738 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3739 |
defu@6.1.4: {}
|
3740 |
|
3741 |
delayed-stream@1.0.0: {}
|
@@ -3744,7 +4381,9 @@ snapshots:
|
|
3744 |
|
3745 |
detect-libc@1.0.3: {}
|
3746 |
|
3747 |
-
detect-libc@2.0.
|
|
|
|
|
3748 |
|
3749 |
devalue@5.1.1: {}
|
3750 |
|
@@ -3756,6 +4395,10 @@ snapshots:
|
|
3756 |
|
3757 |
diff-sequences@29.6.3: {}
|
3758 |
|
|
|
|
|
|
|
|
|
3759 |
dotenv@16.5.0: {}
|
3760 |
|
3761 |
drange@1.1.1: {}
|
@@ -3773,10 +4416,14 @@ snapshots:
|
|
3773 |
graceful-fs: 4.2.11
|
3774 |
tapable: 2.2.1
|
3775 |
|
|
|
|
|
3776 |
es-define-property@1.0.1: {}
|
3777 |
|
3778 |
es-errors@1.3.0: {}
|
3779 |
|
|
|
|
|
3780 |
es-object-atoms@1.1.1:
|
3781 |
dependencies:
|
3782 |
es-errors: 1.3.0
|
@@ -3788,6 +4435,8 @@ snapshots:
|
|
3788 |
has-tostringtag: 1.0.2
|
3789 |
hasown: 2.0.2
|
3790 |
|
|
|
|
|
3791 |
esbuild@0.21.5:
|
3792 |
optionalDependencies:
|
3793 |
'@esbuild/aix-ppc64': 0.21.5
|
@@ -3953,10 +4602,16 @@ snapshots:
|
|
3953 |
|
3954 |
estree-walker@2.0.2: {}
|
3955 |
|
|
|
|
|
|
|
|
|
3956 |
esutils@2.0.3: {}
|
3957 |
|
3958 |
event-target-shim@5.0.1: {}
|
3959 |
|
|
|
|
|
3960 |
exsolve@1.0.4: {}
|
3961 |
|
3962 |
external-editor@3.1.0:
|
@@ -3989,6 +4644,10 @@ snapshots:
|
|
3989 |
optionalDependencies:
|
3990 |
picomatch: 4.0.2
|
3991 |
|
|
|
|
|
|
|
|
|
3992 |
figures@3.2.0:
|
3993 |
dependencies:
|
3994 |
escape-string-regexp: 1.0.5
|
@@ -4070,6 +4729,15 @@ snapshots:
|
|
4070 |
dependencies:
|
4071 |
is-glob: 4.0.3
|
4072 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4073 |
global-prefix@4.0.0:
|
4074 |
dependencies:
|
4075 |
ini: 4.1.3
|
@@ -4082,6 +4750,11 @@ snapshots:
|
|
4082 |
|
4083 |
globals@16.0.0: {}
|
4084 |
|
|
|
|
|
|
|
|
|
|
|
4085 |
gopd@1.2.0: {}
|
4086 |
|
4087 |
graceful-fs@4.2.11: {}
|
@@ -4094,6 +4767,10 @@ snapshots:
|
|
4094 |
|
4095 |
has-own-prop@2.0.0: {}
|
4096 |
|
|
|
|
|
|
|
|
|
4097 |
has-symbols@1.1.0: {}
|
4098 |
|
4099 |
has-tostringtag@1.0.2:
|
@@ -4124,8 +4801,26 @@ snapshots:
|
|
4124 |
|
4125 |
highlight.js@11.11.1: {}
|
4126 |
|
|
|
|
|
|
|
|
|
4127 |
html-void-elements@3.0.0: {}
|
4128 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4129 |
humanize-ms@1.2.1:
|
4130 |
dependencies:
|
4131 |
ms: 2.1.3
|
@@ -4134,6 +4829,10 @@ snapshots:
|
|
4134 |
dependencies:
|
4135 |
safer-buffer: 2.1.2
|
4136 |
|
|
|
|
|
|
|
|
|
4137 |
ieee754@1.2.1: {}
|
4138 |
|
4139 |
ignore@5.3.2: {}
|
@@ -4147,6 +4846,8 @@ snapshots:
|
|
4147 |
|
4148 |
imurmurhash@0.1.4: {}
|
4149 |
|
|
|
|
|
4150 |
inherits@2.0.4: {}
|
4151 |
|
4152 |
ini@4.1.3: {}
|
@@ -4189,6 +4890,8 @@ snapshots:
|
|
4189 |
|
4190 |
is-number@7.0.0: {}
|
4191 |
|
|
|
|
|
4192 |
is-reference@1.2.1:
|
4193 |
dependencies:
|
4194 |
'@types/estree': 1.0.6
|
@@ -4228,16 +4931,47 @@ snapshots:
|
|
4228 |
|
4229 |
jiti@2.4.2: {}
|
4230 |
|
|
|
|
|
4231 |
js-yaml@4.1.0:
|
4232 |
dependencies:
|
4233 |
argparse: 2.0.1
|
4234 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4235 |
json-buffer@3.0.1: {}
|
4236 |
|
4237 |
json-schema-traverse@0.4.1: {}
|
4238 |
|
4239 |
json-stable-stringify-without-jsonify@1.0.1: {}
|
4240 |
|
|
|
|
|
4241 |
keyv@4.5.4:
|
4242 |
dependencies:
|
4243 |
json-buffer: 3.0.1
|
@@ -4329,10 +5063,20 @@ snapshots:
|
|
4329 |
|
4330 |
long@5.3.1: {}
|
4331 |
|
|
|
|
|
|
|
|
|
|
|
|
|
4332 |
magic-string@0.30.17:
|
4333 |
dependencies:
|
4334 |
'@jridgewell/sourcemap-codec': 1.5.0
|
4335 |
|
|
|
|
|
|
|
|
|
4336 |
math-intrinsics@1.1.0: {}
|
4337 |
|
4338 |
mdast-util-to-hast@13.2.0:
|
@@ -4388,6 +5132,8 @@ snapshots:
|
|
4388 |
|
4389 |
mimic-fn@2.1.0: {}
|
4390 |
|
|
|
|
|
4391 |
minimatch@3.1.2:
|
4392 |
dependencies:
|
4393 |
brace-expansion: 1.1.11
|
@@ -4433,6 +5179,10 @@ snapshots:
|
|
4433 |
dependencies:
|
4434 |
whatwg-url: 5.0.0
|
4435 |
|
|
|
|
|
|
|
|
|
4436 |
onetime@5.1.2:
|
4437 |
dependencies:
|
4438 |
mimic-fn: 2.1.0
|
@@ -4445,25 +5195,26 @@ snapshots:
|
|
4445 |
regex: 6.0.1
|
4446 |
regex-recursion: 6.0.2
|
4447 |
|
4448 |
-
onnxruntime-common@1.
|
4449 |
|
4450 |
-
onnxruntime-common@1.22.0-dev.
|
4451 |
|
4452 |
-
onnxruntime-node@1.
|
4453 |
dependencies:
|
4454 |
-
|
|
|
4455 |
tar: 7.4.3
|
4456 |
|
4457 |
-
onnxruntime-web@1.22.0-dev.
|
4458 |
dependencies:
|
4459 |
flatbuffers: 25.2.10
|
4460 |
guid-typescript: 1.0.9
|
4461 |
long: 5.3.1
|
4462 |
-
onnxruntime-common: 1.22.0-dev.
|
4463 |
platform: 1.3.6
|
4464 |
protobufjs: 7.4.0
|
4465 |
|
4466 |
-
openai@4.90.0:
|
4467 |
dependencies:
|
4468 |
'@types/node': 18.19.84
|
4469 |
'@types/node-fetch': 2.6.12
|
@@ -4472,6 +5223,8 @@ snapshots:
|
|
4472 |
form-data-encoder: 1.7.2
|
4473 |
formdata-node: 4.4.1
|
4474 |
node-fetch: 2.7.0
|
|
|
|
|
4475 |
transitivePeerDependencies:
|
4476 |
- encoding
|
4477 |
|
@@ -4522,6 +5275,10 @@ snapshots:
|
|
4522 |
dependencies:
|
4523 |
callsites: 3.1.0
|
4524 |
|
|
|
|
|
|
|
|
|
4525 |
path-exists@4.0.0: {}
|
4526 |
|
4527 |
path-exists@5.0.0: {}
|
@@ -4534,6 +5291,8 @@ snapshots:
|
|
4534 |
|
4535 |
pathe@2.0.3: {}
|
4536 |
|
|
|
|
|
4537 |
picocolors@1.1.1: {}
|
4538 |
|
4539 |
picomatch@2.3.1: {}
|
@@ -4603,6 +5362,12 @@ snapshots:
|
|
4603 |
|
4604 |
prettier@3.5.3: {}
|
4605 |
|
|
|
|
|
|
|
|
|
|
|
|
|
4606 |
pretty-format@29.7.0:
|
4607 |
dependencies:
|
4608 |
'@jest/schemas': 29.6.3
|
@@ -4637,6 +5402,8 @@ snapshots:
|
|
4637 |
drange: 1.1.1
|
4638 |
ret: 0.2.2
|
4639 |
|
|
|
|
|
4640 |
react-is@18.3.1: {}
|
4641 |
|
4642 |
readable-stream@3.6.2:
|
@@ -4647,6 +5414,11 @@ snapshots:
|
|
4647 |
|
4648 |
readdirp@4.1.2: {}
|
4649 |
|
|
|
|
|
|
|
|
|
|
|
4650 |
reflect-metadata@0.1.14: {}
|
4651 |
|
4652 |
regex-recursion@6.0.2:
|
@@ -4685,6 +5457,15 @@ snapshots:
|
|
4685 |
|
4686 |
reusify@1.1.0: {}
|
4687 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4688 |
rollup@4.34.9:
|
4689 |
dependencies:
|
4690 |
'@types/estree': 1.0.6
|
@@ -4710,6 +5491,8 @@ snapshots:
|
|
4710 |
'@rollup/rollup-win32-x64-msvc': 4.34.9
|
4711 |
fsevents: 2.3.3
|
4712 |
|
|
|
|
|
4713 |
run-async@2.4.1: {}
|
4714 |
|
4715 |
run-parallel@1.2.0:
|
@@ -4738,35 +5521,49 @@ snapshots:
|
|
4738 |
|
4739 |
safer-buffer@2.1.2: {}
|
4740 |
|
|
|
|
|
|
|
|
|
|
|
|
|
4741 |
semver@7.7.1: {}
|
4742 |
|
|
|
|
|
|
|
|
|
|
|
|
|
4743 |
set-cookie-parser@2.7.1: {}
|
4744 |
|
4745 |
-
sharp@0.
|
4746 |
dependencies:
|
4747 |
color: 4.2.3
|
4748 |
-
detect-libc: 2.0.
|
4749 |
-
semver: 7.7.
|
4750 |
optionalDependencies:
|
4751 |
-
'@img/sharp-darwin-arm64': 0.
|
4752 |
-
'@img/sharp-darwin-x64': 0.
|
4753 |
-
'@img/sharp-libvips-darwin-arm64': 1.0
|
4754 |
-
'@img/sharp-libvips-darwin-x64': 1.0
|
4755 |
-
'@img/sharp-libvips-linux-arm': 1.0
|
4756 |
-
'@img/sharp-libvips-linux-arm64': 1.0
|
4757 |
-
'@img/sharp-libvips-linux-
|
4758 |
-
'@img/sharp-libvips-linux-
|
4759 |
-
'@img/sharp-libvips-
|
4760 |
-
'@img/sharp-libvips-linuxmusl-
|
4761 |
-
'@img/sharp-
|
4762 |
-
'@img/sharp-linux-
|
4763 |
-
'@img/sharp-linux-
|
4764 |
-
'@img/sharp-linux-
|
4765 |
-
'@img/sharp-
|
4766 |
-
'@img/sharp-linuxmusl-
|
4767 |
-
'@img/sharp-
|
4768 |
-
'@img/sharp-
|
4769 |
-
'@img/sharp-win32-
|
|
|
|
|
4770 |
|
4771 |
shebang-command@2.0.0:
|
4772 |
dependencies:
|
@@ -4785,6 +5582,8 @@ snapshots:
|
|
4785 |
'@shikijs/vscode-textmate': 10.0.2
|
4786 |
'@types/hast': 3.0.4
|
4787 |
|
|
|
|
|
4788 |
signal-exit@3.0.7: {}
|
4789 |
|
4790 |
simple-swizzle@0.2.2:
|
@@ -4801,6 +5600,12 @@ snapshots:
|
|
4801 |
|
4802 |
space-separated-tokens@2.0.2: {}
|
4803 |
|
|
|
|
|
|
|
|
|
|
|
|
|
4804 |
string-width@4.2.3:
|
4805 |
dependencies:
|
4806 |
emoji-regex: 8.0.0
|
@@ -4820,6 +5625,10 @@ snapshots:
|
|
4820 |
dependencies:
|
4821 |
ansi-regex: 5.0.1
|
4822 |
|
|
|
|
|
|
|
|
|
4823 |
strip-json-comments@3.1.1: {}
|
4824 |
|
4825 |
supports-color@7.2.0:
|
@@ -4868,6 +5677,8 @@ snapshots:
|
|
4868 |
magic-string: 0.30.17
|
4869 |
zimmerframe: 1.1.2
|
4870 |
|
|
|
|
|
4871 |
synckit@0.9.2:
|
4872 |
dependencies:
|
4873 |
'@pkgr/core': 0.1.1
|
@@ -4890,8 +5701,27 @@ snapshots:
|
|
4890 |
|
4891 |
through@2.3.8: {}
|
4892 |
|
|
|
|
|
4893 |
tinyexec@0.3.2: {}
|
4894 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4895 |
tmp@0.0.33:
|
4896 |
dependencies:
|
4897 |
os-tmpdir: 1.0.2
|
@@ -4902,8 +5732,16 @@ snapshots:
|
|
4902 |
|
4903 |
totalist@3.0.1: {}
|
4904 |
|
|
|
|
|
|
|
|
|
4905 |
tr46@0.0.3: {}
|
4906 |
|
|
|
|
|
|
|
|
|
4907 |
trim-lines@3.0.1: {}
|
4908 |
|
4909 |
ts-api-utils@2.0.1(typescript@5.8.2):
|
@@ -4925,6 +5763,8 @@ snapshots:
|
|
4925 |
dependencies:
|
4926 |
prelude-ls: 1.2.1
|
4927 |
|
|
|
|
|
4928 |
type-fest@0.21.3: {}
|
4929 |
|
4930 |
type-fest@4.37.0: {}
|
@@ -5032,6 +5872,24 @@ snapshots:
|
|
5032 |
'@types/unist': 3.0.3
|
5033 |
vfile-message: 4.0.2
|
5034 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5035 |
vite@5.4.14(@types/node@22.14.1)(lightningcss@1.29.1):
|
5036 |
dependencies:
|
5037 |
esbuild: 0.21.5
|
@@ -5058,6 +5916,47 @@ snapshots:
|
|
5058 |
optionalDependencies:
|
5059 |
vite: 5.4.14(@types/node@22.14.1)(lightningcss@1.29.1)
|
5060 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5061 |
wcwidth@1.0.1:
|
5062 |
dependencies:
|
5063 |
defaults: 1.0.4
|
@@ -5066,8 +5965,21 @@ snapshots:
|
|
5066 |
|
5067 |
webidl-conversions@3.0.1: {}
|
5068 |
|
|
|
|
|
5069 |
webpack-virtual-modules@0.6.2: {}
|
5070 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5071 |
whatwg-url@5.0.0:
|
5072 |
dependencies:
|
5073 |
tr46: 0.0.3
|
@@ -5081,6 +5993,11 @@ snapshots:
|
|
5081 |
dependencies:
|
5082 |
isexe: 3.1.1
|
5083 |
|
|
|
|
|
|
|
|
|
|
|
5084 |
word-wrap@1.2.5: {}
|
5085 |
|
5086 |
wrap-ansi@6.2.0:
|
@@ -5089,6 +6006,12 @@ snapshots:
|
|
5089 |
string-width: 4.2.3
|
5090 |
strip-ansi: 6.0.1
|
5091 |
|
|
|
|
|
|
|
|
|
|
|
|
|
5092 |
yallist@5.0.0: {}
|
5093 |
|
5094 |
yaml@1.10.2: {}
|
|
|
31 |
specifier: ^1.6.13
|
32 |
version: 1.6.13
|
33 |
'@huggingface/hub':
|
34 |
+
specifier: ^2.1.0
|
35 |
+
version: 2.1.0
|
36 |
'@huggingface/inference':
|
37 |
+
specifier: ^3.13.2
|
38 |
+
version: 3.13.2
|
39 |
'@huggingface/tasks':
|
40 |
+
specifier: ^0.19.8
|
41 |
+
version: 0.19.8
|
42 |
'@huggingface/transformers':
|
43 |
+
specifier: ^3.5.1
|
44 |
+
version: 3.5.1
|
45 |
'@iconify-json/carbon':
|
46 |
specifier: ^1.2.8
|
47 |
version: 1.2.8
|
|
|
72 |
'@tailwindcss/postcss':
|
73 |
specifier: ^4.0.9
|
74 |
version: 4.0.9
|
75 |
+
'@testing-library/jest-dom':
|
76 |
+
specifier: ^6.6.3
|
77 |
+
version: 6.6.3
|
78 |
+
'@testing-library/svelte':
|
79 |
+
specifier: ^5.2.4
|
80 |
+
version: 5.2.8(svelte@5.30.1)(vite@5.4.14(@types/node@22.14.1)(lightningcss@1.29.1))(vitest@3.1.4(@types/node@22.14.1)(jsdom@26.1.0)(lightningcss@1.29.1))
|
81 |
'@types/node':
|
82 |
specifier: ^22.14.1
|
83 |
version: 22.14.1
|
|
|
105 |
jiti:
|
106 |
specifier: ^2.4.2
|
107 |
version: 2.4.2
|
108 |
+
jsdom:
|
109 |
+
specifier: ^26.0.0
|
110 |
+
version: 26.1.0
|
111 |
melt:
|
112 |
specifier: ^0.30.1
|
113 |
version: 0.30.1(@floating-ui/dom@1.6.13)(svelte@5.30.1)
|
114 |
openai:
|
115 |
specifier: ^4.90.0
|
116 |
+
version: 4.90.0(ws@8.18.2)
|
117 |
postcss:
|
118 |
specifier: ^8.4.38
|
119 |
version: 8.5.3
|
|
|
162 |
vite:
|
163 |
specifier: ^5.4.4
|
164 |
version: 5.4.14(@types/node@22.14.1)(lightningcss@1.29.1)
|
165 |
+
vitest:
|
166 |
+
specifier: ^3.0.0
|
167 |
+
version: 3.1.4(@types/node@22.14.1)(jsdom@26.1.0)(lightningcss@1.29.1)
|
168 |
|
169 |
packages:
|
170 |
|
171 |
+
'@adobe/css-tools@4.4.3':
|
172 |
+
resolution: {integrity: sha512-VQKMkwriZbaOgVCby1UDY/LDk5fIjhQicCvVPFqfe+69fWaPWydbWJ3wRt59/YzIwda1I81loas3oCoHxnqvdA==}
|
173 |
+
|
174 |
'@alloc/quick-lru@5.2.0':
|
175 |
resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==}
|
176 |
engines: {node: '>=10'}
|
|
|
185 |
'@antfu/utils@8.1.1':
|
186 |
resolution: {integrity: sha512-Mex9nXf9vR6AhcXmMrlz/HVgYYZpVGJ6YlPgwl7UnaFpnshXs6EK/oa5Gpf3CzENMjkvEx2tQtntGnb7UtSTOQ==}
|
187 |
|
188 |
+
'@asamuzakjp/css-color@3.2.0':
|
189 |
+
resolution: {integrity: sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==}
|
190 |
+
|
191 |
+
'@babel/code-frame@7.27.1':
|
192 |
+
resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==}
|
193 |
+
engines: {node: '>=6.9.0'}
|
194 |
+
|
195 |
+
'@babel/helper-validator-identifier@7.27.1':
|
196 |
+
resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==}
|
197 |
+
engines: {node: '>=6.9.0'}
|
198 |
+
|
199 |
+
'@babel/runtime@7.27.1':
|
200 |
+
resolution: {integrity: sha512-1x3D2xEk2fRo3PAhwQwu5UubzgiVWSXTBfWpVd2Mx2AzRqJuDJCsgaDVZ7HB5iGzDW1Hl1sWN2mFyKjmR9uAog==}
|
201 |
+
engines: {node: '>=6.9.0'}
|
202 |
+
|
203 |
+
'@csstools/color-helpers@5.0.2':
|
204 |
+
resolution: {integrity: sha512-JqWH1vsgdGcw2RR6VliXXdA0/59LttzlU8UlRT/iUUsEeWfYq8I+K0yhihEUTTHLRm1EXvpsCx3083EU15ecsA==}
|
205 |
+
engines: {node: '>=18'}
|
206 |
+
|
207 |
+
'@csstools/css-calc@2.1.3':
|
208 |
+
resolution: {integrity: sha512-XBG3talrhid44BY1x3MHzUx/aTG8+x/Zi57M4aTKK9RFB4aLlF3TTSzfzn8nWVHWL3FgAXAxmupmDd6VWww+pw==}
|
209 |
+
engines: {node: '>=18'}
|
210 |
+
peerDependencies:
|
211 |
+
'@csstools/css-parser-algorithms': ^3.0.4
|
212 |
+
'@csstools/css-tokenizer': ^3.0.3
|
213 |
+
|
214 |
+
'@csstools/css-color-parser@3.0.9':
|
215 |
+
resolution: {integrity: sha512-wILs5Zk7BU86UArYBJTPy/FMPPKVKHMj1ycCEyf3VUptol0JNRLFU/BZsJ4aiIHJEbSLiizzRrw8Pc1uAEDrXw==}
|
216 |
+
engines: {node: '>=18'}
|
217 |
+
peerDependencies:
|
218 |
+
'@csstools/css-parser-algorithms': ^3.0.4
|
219 |
+
'@csstools/css-tokenizer': ^3.0.3
|
220 |
+
|
221 |
+
'@csstools/css-parser-algorithms@3.0.4':
|
222 |
+
resolution: {integrity: sha512-Up7rBoV77rv29d3uKHUIVubz1BTcgyUK72IvCQAbfbMv584xHcGKCKbWh7i8hPrRJ7qU4Y8IO3IY9m+iTB7P3A==}
|
223 |
+
engines: {node: '>=18'}
|
224 |
+
peerDependencies:
|
225 |
+
'@csstools/css-tokenizer': ^3.0.3
|
226 |
+
|
227 |
+
'@csstools/css-tokenizer@3.0.3':
|
228 |
+
resolution: {integrity: sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw==}
|
229 |
+
engines: {node: '>=18'}
|
230 |
+
|
231 |
+
'@emnapi/runtime@1.4.3':
|
232 |
+
resolution: {integrity: sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==}
|
233 |
|
234 |
'@esbuild/aix-ppc64@0.21.5':
|
235 |
resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==}
|
|
|
566 |
'@floating-ui/utils@0.2.9':
|
567 |
resolution: {integrity: sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==}
|
568 |
|
569 |
+
'@huggingface/hub@2.1.0':
|
570 |
+
resolution: {integrity: sha512-L+125tAXwCOwVd8n4qQlT20ZJP7I5sEXOLNrIzpgkUG6eMIsGlxT+9hmmiCH/LGmjbXjlcRHoPB8GGT3zCws4A==}
|
571 |
engines: {node: '>=18'}
|
572 |
+
hasBin: true
|
573 |
|
574 |
+
'@huggingface/inference@3.13.2':
|
575 |
+
resolution: {integrity: sha512-s9grNTO33FeBIvKg4KjnG3sTQWppGDTdQxtpaVqKtn2Hl24yKwc59TfwNAKDzW12aZrc9njYBPwA/Y/mxX/kew==}
|
576 |
engines: {node: '>=18'}
|
577 |
|
578 |
+
'@huggingface/jinja@0.4.1':
|
579 |
+
resolution: {integrity: sha512-3WXbMFaPkk03LRCM0z0sylmn8ddDm4ubjU7X+Hg4M2GOuMklwoGAFXp9V2keq7vltoB/c7McE5aHUVVddAewsw==}
|
580 |
engines: {node: '>=18'}
|
581 |
|
582 |
+
'@huggingface/jinja@0.5.0':
|
583 |
+
resolution: {integrity: sha512-Ptc03/jGRiYRoi0bUYKZ14MkDslsBRT24oxmsvUlfYrvQMldrxCevhPnT+hfX8awKTT8/f/0ZBBWldoeAcMHdQ==}
|
584 |
+
engines: {node: '>=18'}
|
585 |
|
586 |
+
'@huggingface/tasks@0.19.8':
|
587 |
+
resolution: {integrity: sha512-gR88OvYQQ2zu1Dt/tfFRVWJRfsKCdssxJBb8bz3tVd9fh3rneNE/pjkaGyG3oT1VlHv7wEmrqrnkmMcXy8O0rg==}
|
588 |
|
589 |
+
'@huggingface/transformers@3.5.1':
|
590 |
+
resolution: {integrity: sha512-qWsPoJMBPYcrGuzRMVL//3dwcLXED9r+j+Hzw+hZpBfrMPdyq57ehNs7lew0D34Paj0DO0E0kZQjOZcIVN17hQ==}
|
591 |
|
592 |
'@humanfs/core@0.19.1':
|
593 |
resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==}
|
|
|
621 |
'@iconify/utils@2.3.0':
|
622 |
resolution: {integrity: sha512-GmQ78prtwYW6EtzXRU1rY+KwOKfz32PD7iJh6Iyqw68GiKuoZ2A6pRtzWONz5VQJbp50mEjXh/7NkumtrAgRKA==}
|
623 |
|
624 |
+
'@img/sharp-darwin-arm64@0.34.2':
|
625 |
+
resolution: {integrity: sha512-OfXHZPppddivUJnqyKoi5YVeHRkkNE2zUFT2gbpKxp/JZCFYEYubnMg+gOp6lWfasPrTS+KPosKqdI+ELYVDtg==}
|
626 |
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
627 |
cpu: [arm64]
|
628 |
os: [darwin]
|
629 |
|
630 |
+
'@img/sharp-darwin-x64@0.34.2':
|
631 |
+
resolution: {integrity: sha512-dYvWqmjU9VxqXmjEtjmvHnGqF8GrVjM2Epj9rJ6BUIXvk8slvNDJbhGFvIoXzkDhrJC2jUxNLz/GUjjvSzfw+g==}
|
632 |
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
633 |
cpu: [x64]
|
634 |
os: [darwin]
|
635 |
|
636 |
+
'@img/sharp-libvips-darwin-arm64@1.1.0':
|
637 |
+
resolution: {integrity: sha512-HZ/JUmPwrJSoM4DIQPv/BfNh9yrOA8tlBbqbLz4JZ5uew2+o22Ik+tHQJcih7QJuSa0zo5coHTfD5J8inqj9DA==}
|
638 |
cpu: [arm64]
|
639 |
os: [darwin]
|
640 |
|
641 |
+
'@img/sharp-libvips-darwin-x64@1.1.0':
|
642 |
+
resolution: {integrity: sha512-Xzc2ToEmHN+hfvsl9wja0RlnXEgpKNmftriQp6XzY/RaSfwD9th+MSh0WQKzUreLKKINb3afirxW7A0fz2YWuQ==}
|
643 |
cpu: [x64]
|
644 |
os: [darwin]
|
645 |
|
646 |
+
'@img/sharp-libvips-linux-arm64@1.1.0':
|
647 |
+
resolution: {integrity: sha512-IVfGJa7gjChDET1dK9SekxFFdflarnUB8PwW8aGwEoF3oAsSDuNUTYS+SKDOyOJxQyDC1aPFMuRYLoDInyV9Ew==}
|
648 |
cpu: [arm64]
|
649 |
os: [linux]
|
650 |
|
651 |
+
'@img/sharp-libvips-linux-arm@1.1.0':
|
652 |
+
resolution: {integrity: sha512-s8BAd0lwUIvYCJyRdFqvsj+BJIpDBSxs6ivrOPm/R7piTs5UIwY5OjXrP2bqXC9/moGsyRa37eYWYCOGVXxVrA==}
|
653 |
cpu: [arm]
|
654 |
os: [linux]
|
655 |
|
656 |
+
'@img/sharp-libvips-linux-ppc64@1.1.0':
|
657 |
+
resolution: {integrity: sha512-tiXxFZFbhnkWE2LA8oQj7KYR+bWBkiV2nilRldT7bqoEZ4HiDOcePr9wVDAZPi/Id5fT1oY9iGnDq20cwUz8lQ==}
|
658 |
+
cpu: [ppc64]
|
659 |
+
os: [linux]
|
660 |
+
|
661 |
+
'@img/sharp-libvips-linux-s390x@1.1.0':
|
662 |
+
resolution: {integrity: sha512-xukSwvhguw7COyzvmjydRb3x/09+21HykyapcZchiCUkTThEQEOMtBj9UhkaBRLuBrgLFzQ2wbxdeCCJW/jgJA==}
|
663 |
cpu: [s390x]
|
664 |
os: [linux]
|
665 |
|
666 |
+
'@img/sharp-libvips-linux-x64@1.1.0':
|
667 |
+
resolution: {integrity: sha512-yRj2+reB8iMg9W5sULM3S74jVS7zqSzHG3Ol/twnAAkAhnGQnpjj6e4ayUz7V+FpKypwgs82xbRdYtchTTUB+Q==}
|
668 |
cpu: [x64]
|
669 |
os: [linux]
|
670 |
|
671 |
+
'@img/sharp-libvips-linuxmusl-arm64@1.1.0':
|
672 |
+
resolution: {integrity: sha512-jYZdG+whg0MDK+q2COKbYidaqW/WTz0cc1E+tMAusiDygrM4ypmSCjOJPmFTvHHJ8j/6cAGyeDWZOsK06tP33w==}
|
673 |
cpu: [arm64]
|
674 |
os: [linux]
|
675 |
|
676 |
+
'@img/sharp-libvips-linuxmusl-x64@1.1.0':
|
677 |
+
resolution: {integrity: sha512-wK7SBdwrAiycjXdkPnGCPLjYb9lD4l6Ze2gSdAGVZrEL05AOUJESWU2lhlC+Ffn5/G+VKuSm6zzbQSzFX/P65A==}
|
678 |
cpu: [x64]
|
679 |
os: [linux]
|
680 |
|
681 |
+
'@img/sharp-linux-arm64@0.34.2':
|
682 |
+
resolution: {integrity: sha512-D8n8wgWmPDakc83LORcfJepdOSN6MvWNzzz2ux0MnIbOqdieRZwVYY32zxVx+IFUT8er5KPcyU3XXsn+GzG/0Q==}
|
683 |
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
684 |
cpu: [arm64]
|
685 |
os: [linux]
|
686 |
|
687 |
+
'@img/sharp-linux-arm@0.34.2':
|
688 |
+
resolution: {integrity: sha512-0DZzkvuEOqQUP9mo2kjjKNok5AmnOr1jB2XYjkaoNRwpAYMDzRmAqUIa1nRi58S2WswqSfPOWLNOr0FDT3H5RQ==}
|
689 |
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
690 |
cpu: [arm]
|
691 |
os: [linux]
|
692 |
|
693 |
+
'@img/sharp-linux-s390x@0.34.2':
|
694 |
+
resolution: {integrity: sha512-EGZ1xwhBI7dNISwxjChqBGELCWMGDvmxZXKjQRuqMrakhO8QoMgqCrdjnAqJq/CScxfRn+Bb7suXBElKQpPDiw==}
|
695 |
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
696 |
cpu: [s390x]
|
697 |
os: [linux]
|
698 |
|
699 |
+
'@img/sharp-linux-x64@0.34.2':
|
700 |
+
resolution: {integrity: sha512-sD7J+h5nFLMMmOXYH4DD9UtSNBD05tWSSdWAcEyzqW8Cn5UxXvsHAxmxSesYUsTOBmUnjtxghKDl15EvfqLFbQ==}
|
701 |
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
702 |
cpu: [x64]
|
703 |
os: [linux]
|
704 |
|
705 |
+
'@img/sharp-linuxmusl-arm64@0.34.2':
|
706 |
+
resolution: {integrity: sha512-NEE2vQ6wcxYav1/A22OOxoSOGiKnNmDzCYFOZ949xFmrWZOVII1Bp3NqVVpvj+3UeHMFyN5eP/V5hzViQ5CZNA==}
|
707 |
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
708 |
cpu: [arm64]
|
709 |
os: [linux]
|
710 |
|
711 |
+
'@img/sharp-linuxmusl-x64@0.34.2':
|
712 |
+
resolution: {integrity: sha512-DOYMrDm5E6/8bm/yQLCWyuDJwUnlevR8xtF8bs+gjZ7cyUNYXiSf/E8Kp0Ss5xasIaXSHzb888V1BE4i1hFhAA==}
|
713 |
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
714 |
cpu: [x64]
|
715 |
os: [linux]
|
716 |
|
717 |
+
'@img/sharp-wasm32@0.34.2':
|
718 |
+
resolution: {integrity: sha512-/VI4mdlJ9zkaq53MbIG6rZY+QRN3MLbR6usYlgITEzi4Rpx5S6LFKsycOQjkOGmqTNmkIdLjEvooFKwww6OpdQ==}
|
719 |
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
720 |
cpu: [wasm32]
|
721 |
|
722 |
+
'@img/sharp-win32-arm64@0.34.2':
|
723 |
+
resolution: {integrity: sha512-cfP/r9FdS63VA5k0xiqaNaEoGxBg9k7uE+RQGzuK9fHt7jib4zAVVseR9LsE4gJcNWgT6APKMNnCcnyOtmSEUQ==}
|
724 |
+
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
725 |
+
cpu: [arm64]
|
726 |
+
os: [win32]
|
727 |
+
|
728 |
+
'@img/sharp-win32-ia32@0.34.2':
|
729 |
+
resolution: {integrity: sha512-QLjGGvAbj0X/FXl8n1WbtQ6iVBpWU7JO94u/P2M4a8CFYsvQi4GW2mRy/JqkRx0qpBzaOdKJKw8uc930EX2AHw==}
|
730 |
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
731 |
cpu: [ia32]
|
732 |
os: [win32]
|
733 |
|
734 |
+
'@img/sharp-win32-x64@0.34.2':
|
735 |
+
resolution: {integrity: sha512-aUdT6zEYtDKCaxkofmmJDJYGCf0+pJg3eU9/oBuqvEeoB9dKI6ZLc/1iLJCTuJQDO4ptntAlkUmHgGjyuobZbw==}
|
736 |
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
737 |
cpu: [x64]
|
738 |
os: [win32]
|
|
|
1100 |
'@tailwindcss/postcss@4.0.9':
|
1101 |
resolution: {integrity: sha512-BT/E+pdMqulavEAVM5NCpxmGEwHiLDPpkmg/c/X25ZBW+izTe+aZ+v1gf/HXTrihRoCxrUp5U4YyHsBTzspQKQ==}
|
1102 |
|
1103 |
+
'@testing-library/dom@10.4.0':
|
1104 |
+
resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==}
|
1105 |
+
engines: {node: '>=18'}
|
1106 |
+
|
1107 |
+
'@testing-library/jest-dom@6.6.3':
|
1108 |
+
resolution: {integrity: sha512-IteBhl4XqYNkM54f4ejhLRJiZNqcSCoXUOG2CPK7qbD322KjQozM4kHQOfkG2oln9b9HTYqs+Sae8vBATubxxA==}
|
1109 |
+
engines: {node: '>=14', npm: '>=6', yarn: '>=1'}
|
1110 |
+
|
1111 |
+
'@testing-library/svelte@5.2.8':
|
1112 |
+
resolution: {integrity: sha512-ucQOtGsJhtawOEtUmbR4rRh53e6RbM1KUluJIXRmh6D4UzxR847iIqqjRtg9mHNFmGQ8Vkam9yVcR5d1mhIHKA==}
|
1113 |
+
engines: {node: '>= 10'}
|
1114 |
+
peerDependencies:
|
1115 |
+
svelte: ^3 || ^4 || ^5 || ^5.0.0-next.0
|
1116 |
+
vite: '*'
|
1117 |
+
vitest: '*'
|
1118 |
+
peerDependenciesMeta:
|
1119 |
+
vite:
|
1120 |
+
optional: true
|
1121 |
+
vitest:
|
1122 |
+
optional: true
|
1123 |
+
|
1124 |
+
'@types/aria-query@5.0.4':
|
1125 |
+
resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==}
|
1126 |
+
|
1127 |
'@types/cookie@0.6.0':
|
1128 |
resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==}
|
1129 |
|
|
|
1204 |
'@ungap/structured-clone@1.3.0':
|
1205 |
resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==}
|
1206 |
|
1207 |
+
'@vitest/expect@3.1.4':
|
1208 |
+
resolution: {integrity: sha512-xkD/ljeliyaClDYqHPNCiJ0plY5YIcM0OlRiZizLhlPmpXWpxnGMyTZXOHFhFeG7w9P5PBeL4IdtJ/HeQwTbQA==}
|
1209 |
+
|
1210 |
+
'@vitest/mocker@3.1.4':
|
1211 |
+
resolution: {integrity: sha512-8IJ3CvwtSw/EFXqWFL8aCMu+YyYXG2WUSrQbViOZkWTKTVicVwZ/YiEZDSqD00kX+v/+W+OnxhNWoeVKorHygA==}
|
1212 |
+
peerDependencies:
|
1213 |
+
msw: ^2.4.9
|
1214 |
+
vite: ^5.0.0 || ^6.0.0
|
1215 |
+
peerDependenciesMeta:
|
1216 |
+
msw:
|
1217 |
+
optional: true
|
1218 |
+
vite:
|
1219 |
+
optional: true
|
1220 |
+
|
1221 |
+
'@vitest/pretty-format@3.1.4':
|
1222 |
+
resolution: {integrity: sha512-cqv9H9GvAEoTaoq+cYqUTCGscUjKqlJZC7PRwY5FMySVj5J+xOm1KQcCiYHJOEzOKRUhLH4R2pTwvFlWCEScsg==}
|
1223 |
+
|
1224 |
+
'@vitest/runner@3.1.4':
|
1225 |
+
resolution: {integrity: sha512-djTeF1/vt985I/wpKVFBMWUlk/I7mb5hmD5oP8K9ACRmVXgKTae3TUOtXAEBfslNKPzUQvnKhNd34nnRSYgLNQ==}
|
1226 |
+
|
1227 |
+
'@vitest/snapshot@3.1.4':
|
1228 |
+
resolution: {integrity: sha512-JPHf68DvuO7vilmvwdPr9TS0SuuIzHvxeaCkxYcCD4jTk67XwL45ZhEHFKIuCm8CYstgI6LZ4XbwD6ANrwMpFg==}
|
1229 |
+
|
1230 |
+
'@vitest/spy@3.1.4':
|
1231 |
+
resolution: {integrity: sha512-Xg1bXhu+vtPXIodYN369M86K8shGLouNjoVI78g8iAq2rFoHFdajNvJJ5A/9bPMFcfQqdaCpOgWKEoMQg/s0Yg==}
|
1232 |
+
|
1233 |
+
'@vitest/utils@3.1.4':
|
1234 |
+
resolution: {integrity: sha512-yriMuO1cfFhmiGc8ataN51+9ooHRuURdfAZfwFd3usWynjzpLslZdYnRegTv32qdgtJTsj15FoeZe2g15fY1gg==}
|
1235 |
+
|
1236 |
abort-controller@3.0.0:
|
1237 |
resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==}
|
1238 |
engines: {node: '>=6.5'}
|
|
|
1247 |
engines: {node: '>=0.4.0'}
|
1248 |
hasBin: true
|
1249 |
|
1250 |
+
agent-base@7.1.3:
|
1251 |
+
resolution: {integrity: sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==}
|
1252 |
+
engines: {node: '>= 14'}
|
1253 |
+
|
1254 |
agentkeepalive@4.6.0:
|
1255 |
resolution: {integrity: sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==}
|
1256 |
engines: {node: '>= 8.0.0'}
|
|
|
1277 |
argparse@2.0.1:
|
1278 |
resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
|
1279 |
|
1280 |
+
aria-query@5.3.0:
|
1281 |
+
resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==}
|
1282 |
+
|
1283 |
aria-query@5.3.2:
|
1284 |
resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==}
|
1285 |
engines: {node: '>= 0.4'}
|
|
|
1287 |
array-timsort@1.0.3:
|
1288 |
resolution: {integrity: sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==}
|
1289 |
|
1290 |
+
assertion-error@2.0.1:
|
1291 |
+
resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==}
|
1292 |
+
engines: {node: '>=12'}
|
1293 |
+
|
1294 |
asynckit@0.4.0:
|
1295 |
resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
|
1296 |
|
|
|
1311 |
bl@4.1.0:
|
1312 |
resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==}
|
1313 |
|
1314 |
+
boolean@3.2.0:
|
1315 |
+
resolution: {integrity: sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==}
|
1316 |
+
deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
|
1317 |
+
|
1318 |
brace-expansion@1.1.11:
|
1319 |
resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
|
1320 |
|
|
|
1328 |
buffer@5.7.1:
|
1329 |
resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==}
|
1330 |
|
1331 |
+
cac@6.7.14:
|
1332 |
+
resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==}
|
1333 |
+
engines: {node: '>=8'}
|
1334 |
+
|
1335 |
call-bind-apply-helpers@1.0.2:
|
1336 |
resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==}
|
1337 |
engines: {node: '>= 0.4'}
|
|
|
1343 |
ccount@2.0.1:
|
1344 |
resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==}
|
1345 |
|
1346 |
+
chai@5.2.0:
|
1347 |
+
resolution: {integrity: sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==}
|
1348 |
+
engines: {node: '>=12'}
|
1349 |
+
|
1350 |
+
chalk@3.0.0:
|
1351 |
+
resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==}
|
1352 |
+
engines: {node: '>=8'}
|
1353 |
+
|
1354 |
chalk@4.1.2:
|
1355 |
resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
|
1356 |
engines: {node: '>=10'}
|
|
|
1364 |
chardet@0.7.0:
|
1365 |
resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==}
|
1366 |
|
1367 |
+
check-error@2.1.1:
|
1368 |
+
resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==}
|
1369 |
+
engines: {node: '>= 16'}
|
1370 |
+
|
1371 |
chokidar@4.0.3:
|
1372 |
resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==}
|
1373 |
engines: {node: '>= 14.16.0'}
|
|
|
1455 |
resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
|
1456 |
engines: {node: '>= 8'}
|
1457 |
|
1458 |
+
css.escape@1.5.1:
|
1459 |
+
resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==}
|
1460 |
+
|
1461 |
cssesc@3.0.0:
|
1462 |
resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
|
1463 |
engines: {node: '>=4'}
|
1464 |
hasBin: true
|
1465 |
|
1466 |
+
cssstyle@4.3.1:
|
1467 |
+
resolution: {integrity: sha512-ZgW+Jgdd7i52AaLYCriF8Mxqft0gD/R9i9wi6RWBhs1pqdPEzPjym7rvRKi397WmQFf3SlyUsszhw+VVCbx79Q==}
|
1468 |
+
engines: {node: '>=18'}
|
1469 |
+
|
1470 |
+
data-urls@5.0.0:
|
1471 |
+
resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==}
|
1472 |
+
engines: {node: '>=18'}
|
1473 |
+
|
1474 |
debug@4.4.0:
|
1475 |
resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==}
|
1476 |
engines: {node: '>=6.0'}
|
|
|
1480 |
supports-color:
|
1481 |
optional: true
|
1482 |
|
1483 |
+
decimal.js@10.5.0:
|
1484 |
+
resolution: {integrity: sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==}
|
1485 |
+
|
1486 |
+
deep-eql@5.0.2:
|
1487 |
+
resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==}
|
1488 |
+
engines: {node: '>=6'}
|
1489 |
+
|
1490 |
deep-is@0.1.4:
|
1491 |
resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
|
1492 |
|
|
|
1497 |
defaults@1.0.4:
|
1498 |
resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==}
|
1499 |
|
1500 |
+
define-data-property@1.1.4:
|
1501 |
+
resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==}
|
1502 |
+
engines: {node: '>= 0.4'}
|
1503 |
+
|
1504 |
+
define-properties@1.2.1:
|
1505 |
+
resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==}
|
1506 |
+
engines: {node: '>= 0.4'}
|
1507 |
+
|
1508 |
defu@6.1.4:
|
1509 |
resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==}
|
1510 |
|
|
|
1521 |
engines: {node: '>=0.10'}
|
1522 |
hasBin: true
|
1523 |
|
1524 |
+
detect-libc@2.0.4:
|
1525 |
+
resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==}
|
1526 |
engines: {node: '>=8'}
|
1527 |
|
1528 |
+
detect-node@2.1.0:
|
1529 |
+
resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==}
|
1530 |
+
|
1531 |
devalue@5.1.1:
|
1532 |
resolution: {integrity: sha512-maua5KUiapvEwiEAe+XnlZ3Rh0GD+qI1J/nb9vrJc3muPXvcF/8gXYTWF76+5DAqHyDUtOIImEuo0YKE9mshVw==}
|
1533 |
|
|
|
1541 |
resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==}
|
1542 |
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
|
1543 |
|
1544 |
+
dom-accessibility-api@0.5.16:
|
1545 |
+
resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==}
|
1546 |
+
|
1547 |
+
dom-accessibility-api@0.6.3:
|
1548 |
+
resolution: {integrity: sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==}
|
1549 |
+
|
1550 |
dotenv@16.5.0:
|
1551 |
resolution: {integrity: sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==}
|
1552 |
engines: {node: '>=12'}
|
|
|
1566 |
resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==}
|
1567 |
engines: {node: '>=10.13.0'}
|
1568 |
|
1569 |
+
entities@6.0.0:
|
1570 |
+
resolution: {integrity: sha512-aKstq2TDOndCn4diEyp9Uq/Flu2i1GlLkc6XIDQSDMuaFE3OPW5OphLCyQ5SpSJZTb4reN+kTcYru5yIfXoRPw==}
|
1571 |
+
engines: {node: '>=0.12'}
|
1572 |
+
|
1573 |
es-define-property@1.0.1:
|
1574 |
resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==}
|
1575 |
engines: {node: '>= 0.4'}
|
|
|
1578 |
resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
|
1579 |
engines: {node: '>= 0.4'}
|
1580 |
|
1581 |
+
es-module-lexer@1.7.0:
|
1582 |
+
resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==}
|
1583 |
+
|
1584 |
es-object-atoms@1.1.1:
|
1585 |
resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==}
|
1586 |
engines: {node: '>= 0.4'}
|
|
|
1589 |
resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==}
|
1590 |
engines: {node: '>= 0.4'}
|
1591 |
|
1592 |
+
es6-error@4.1.1:
|
1593 |
+
resolution: {integrity: sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==}
|
1594 |
+
|
1595 |
esbuild@0.21.5:
|
1596 |
resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==}
|
1597 |
engines: {node: '>=12'}
|
|
|
1692 |
estree-walker@2.0.2:
|
1693 |
resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
|
1694 |
|
1695 |
+
estree-walker@3.0.3:
|
1696 |
+
resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==}
|
1697 |
+
|
1698 |
esutils@2.0.3:
|
1699 |
resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
|
1700 |
engines: {node: '>=0.10.0'}
|
|
|
1703 |
resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==}
|
1704 |
engines: {node: '>=6'}
|
1705 |
|
1706 |
+
expect-type@1.2.1:
|
1707 |
+
resolution: {integrity: sha512-/kP8CAwxzLVEeFrMm4kMmy4CCDlpipyA7MYLVrdJIkV0fYF0UaigQHRsxHiuY/GEea+bh4KSv3TIlgr+2UL6bw==}
|
1708 |
+
engines: {node: '>=12.0.0'}
|
1709 |
+
|
1710 |
exsolve@1.0.4:
|
1711 |
resolution: {integrity: sha512-xsZH6PXaER4XoV+NiT7JHp1bJodJVT+cxeSH1G0f0tlT0lJqYuHUP3bUx2HtfTDvOagMINYp8rsqusxud3RXhw==}
|
1712 |
|
|
|
1741 |
picomatch:
|
1742 |
optional: true
|
1743 |
|
1744 |
+
fdir@6.4.4:
|
1745 |
+
resolution: {integrity: sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==}
|
1746 |
+
peerDependencies:
|
1747 |
+
picomatch: ^3 || ^4
|
1748 |
+
peerDependenciesMeta:
|
1749 |
+
picomatch:
|
1750 |
+
optional: true
|
1751 |
+
|
1752 |
figures@3.2.0:
|
1753 |
resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==}
|
1754 |
engines: {node: '>=8'}
|
|
|
1818 |
resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
|
1819 |
engines: {node: '>=10.13.0'}
|
1820 |
|
1821 |
+
global-agent@3.0.0:
|
1822 |
+
resolution: {integrity: sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==}
|
1823 |
+
engines: {node: '>=10.0'}
|
1824 |
+
|
1825 |
global-prefix@4.0.0:
|
1826 |
resolution: {integrity: sha512-w0Uf9Y9/nyHinEk5vMJKRie+wa4kR5hmDbEhGGds/kG1PwGLLHKRoNMeJOyCQjjBkANlnScqgzcFwGHgmgLkVA==}
|
1827 |
engines: {node: '>=16'}
|
|
|
1838 |
resolution: {integrity: sha512-iInW14XItCXET01CQFqudPOWP2jYMl7T+QRQT+UNcR/iQncN/F0UNpgd76iFkBPgNQb4+X3LV9tLJYzwh+Gl3A==}
|
1839 |
engines: {node: '>=18'}
|
1840 |
|
1841 |
+
globalthis@1.0.4:
|
1842 |
+
resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==}
|
1843 |
+
engines: {node: '>= 0.4'}
|
1844 |
+
|
1845 |
gopd@1.2.0:
|
1846 |
resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==}
|
1847 |
engines: {node: '>= 0.4'}
|
|
|
1863 |
resolution: {integrity: sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ==}
|
1864 |
engines: {node: '>=8'}
|
1865 |
|
1866 |
+
has-property-descriptors@1.0.2:
|
1867 |
+
resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==}
|
1868 |
+
|
1869 |
has-symbols@1.1.0:
|
1870 |
resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==}
|
1871 |
engines: {node: '>= 0.4'}
|
|
|
1888 |
resolution: {integrity: sha512-Xwwo44whKBVCYoliBQwaPvtd/2tYFkRQtXDWj1nackaV2JPXx3L0+Jvd8/qCJ2p+ML0/XVkJ2q+Mr+UVdpJK5w==}
|
1889 |
engines: {node: '>=12.0.0'}
|
1890 |
|
1891 |
+
html-encoding-sniffer@4.0.0:
|
1892 |
+
resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==}
|
1893 |
+
engines: {node: '>=18'}
|
1894 |
+
|
1895 |
html-void-elements@3.0.0:
|
1896 |
resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==}
|
1897 |
|
1898 |
+
http-proxy-agent@7.0.2:
|
1899 |
+
resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==}
|
1900 |
+
engines: {node: '>= 14'}
|
1901 |
+
|
1902 |
+
https-proxy-agent@7.0.6:
|
1903 |
+
resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==}
|
1904 |
+
engines: {node: '>= 14'}
|
1905 |
+
|
1906 |
humanize-ms@1.2.1:
|
1907 |
resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==}
|
1908 |
|
|
|
1910 |
resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==}
|
1911 |
engines: {node: '>=0.10.0'}
|
1912 |
|
1913 |
+
iconv-lite@0.6.3:
|
1914 |
+
resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==}
|
1915 |
+
engines: {node: '>=0.10.0'}
|
1916 |
+
|
1917 |
ieee754@1.2.1:
|
1918 |
resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
|
1919 |
|
|
|
1932 |
resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
|
1933 |
engines: {node: '>=0.8.19'}
|
1934 |
|
1935 |
+
indent-string@4.0.0:
|
1936 |
+
resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==}
|
1937 |
+
engines: {node: '>=8'}
|
1938 |
+
|
1939 |
inherits@2.0.4:
|
1940 |
resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
|
1941 |
|
|
|
1977 |
resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
|
1978 |
engines: {node: '>=0.12.0'}
|
1979 |
|
1980 |
+
is-potential-custom-element-name@1.0.1:
|
1981 |
+
resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==}
|
1982 |
+
|
1983 |
is-reference@1.2.1:
|
1984 |
resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==}
|
1985 |
|
|
|
2017 |
resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==}
|
2018 |
hasBin: true
|
2019 |
|
2020 |
+
js-tokens@4.0.0:
|
2021 |
+
resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
|
2022 |
+
|
2023 |
js-yaml@4.1.0:
|
2024 |
resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
|
2025 |
hasBin: true
|
2026 |
|
2027 |
+
jsdom@26.1.0:
|
2028 |
+
resolution: {integrity: sha512-Cvc9WUhxSMEo4McES3P7oK3QaXldCfNWp7pl2NNeiIFlCoLr3kfq9kb1fxftiwk1FLV7CvpvDfonxtzUDeSOPg==}
|
2029 |
+
engines: {node: '>=18'}
|
2030 |
+
peerDependencies:
|
2031 |
+
canvas: ^3.0.0
|
2032 |
+
peerDependenciesMeta:
|
2033 |
+
canvas:
|
2034 |
+
optional: true
|
2035 |
+
|
2036 |
json-buffer@3.0.1:
|
2037 |
resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
|
2038 |
|
|
|
2042 |
json-stable-stringify-without-jsonify@1.0.1:
|
2043 |
resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
|
2044 |
|
2045 |
+
json-stringify-safe@5.0.1:
|
2046 |
+
resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==}
|
2047 |
+
|
2048 |
keyv@4.5.4:
|
2049 |
resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
|
2050 |
|
|
|
2162 |
long@5.3.1:
|
2163 |
resolution: {integrity: sha512-ka87Jz3gcx/I7Hal94xaN2tZEOPoUOEVftkQqZx2EeQRN7LGdfLlI3FvZ+7WDplm+vK2Urx9ULrvSowtdCieng==}
|
2164 |
|
2165 |
+
loupe@3.1.3:
|
2166 |
+
resolution: {integrity: sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==}
|
2167 |
+
|
2168 |
+
lru-cache@10.4.3:
|
2169 |
+
resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==}
|
2170 |
+
|
2171 |
+
lz-string@1.5.0:
|
2172 |
+
resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==}
|
2173 |
+
hasBin: true
|
2174 |
+
|
2175 |
magic-string@0.30.17:
|
2176 |
resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==}
|
2177 |
|
2178 |
+
matcher@3.0.0:
|
2179 |
+
resolution: {integrity: sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==}
|
2180 |
+
engines: {node: '>=10'}
|
2181 |
+
|
2182 |
math-intrinsics@1.1.0:
|
2183 |
resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==}
|
2184 |
engines: {node: '>= 0.4'}
|
|
|
2227 |
resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
|
2228 |
engines: {node: '>=6'}
|
2229 |
|
2230 |
+
min-indent@1.0.1:
|
2231 |
+
resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==}
|
2232 |
+
engines: {node: '>=4'}
|
2233 |
+
|
2234 |
minimatch@3.1.2:
|
2235 |
resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
|
2236 |
|
|
|
2297 |
encoding:
|
2298 |
optional: true
|
2299 |
|
2300 |
+
nwsapi@2.2.20:
|
2301 |
+
resolution: {integrity: sha512-/ieB+mDe4MrrKMT8z+mQL8klXydZWGR5Dowt4RAGKbJ3kIGEx3X4ljUo+6V73IXtUPWgfOlU5B9MlGxFO5T+cA==}
|
2302 |
+
|
2303 |
+
object-keys@1.1.1:
|
2304 |
+
resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
|
2305 |
+
engines: {node: '>= 0.4'}
|
2306 |
+
|
2307 |
onetime@5.1.2:
|
2308 |
resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
|
2309 |
engines: {node: '>=6'}
|
|
|
2314 |
oniguruma-to-es@4.3.3:
|
2315 |
resolution: {integrity: sha512-rPiZhzC3wXwE59YQMRDodUwwT9FZ9nNBwQQfsd1wfdtlKEyCdRV0avrTcSZ5xlIvGRVPd/cx6ZN45ECmS39xvg==}
|
2316 |
|
2317 |
+
onnxruntime-common@1.21.0:
|
2318 |
+
resolution: {integrity: sha512-Q632iLLrtCAVOTO65dh2+mNbQir/QNTVBG3h/QdZBpns7mZ0RYbLRBgGABPbpU9351AgYy7SJf1WaeVwMrBFPQ==}
|
2319 |
|
2320 |
+
onnxruntime-common@1.22.0-dev.20250409-89f8206ba4:
|
2321 |
+
resolution: {integrity: sha512-vDJMkfCfb0b1A836rgHj+ORuZf4B4+cc2bASQtpeoJLueuFc5DuYwjIZUBrSvx/fO5IrLjLz+oTrB3pcGlhovQ==}
|
2322 |
|
2323 |
+
onnxruntime-node@1.21.0:
|
2324 |
+
resolution: {integrity: sha512-NeaCX6WW2L8cRCSqy3bInlo5ojjQqu2fD3D+9W5qb5irwxhEyWKXeH2vZ8W9r6VxaMPUan+4/7NDwZMtouZxEw==}
|
2325 |
os: [win32, darwin, linux]
|
2326 |
|
2327 |
+
onnxruntime-web@1.22.0-dev.20250409-89f8206ba4:
|
2328 |
+
resolution: {integrity: sha512-0uS76OPgH0hWCPrFKlL8kYVV7ckM7t/36HfbgoFw6Nd0CZVVbQC4PkrR8mBX8LtNUFZO25IQBqV2Hx2ho3FlbQ==}
|
2329 |
|
2330 |
openai@4.90.0:
|
2331 |
resolution: {integrity: sha512-YCuHMMycqtCg1B8G9ezkOF0j8UnBWD3Al/zYaelpuXwU1yhCEv+Y4n9G20MnyGy6cH4GsFwOMrgstQ+bgG1PtA==}
|
|
|
2374 |
resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
|
2375 |
engines: {node: '>=6'}
|
2376 |
|
2377 |
+
parse5@7.3.0:
|
2378 |
+
resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==}
|
2379 |
+
|
2380 |
path-exists@4.0.0:
|
2381 |
resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
|
2382 |
engines: {node: '>=8'}
|
|
|
2398 |
pathe@2.0.3:
|
2399 |
resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==}
|
2400 |
|
2401 |
+
pathval@2.0.0:
|
2402 |
+
resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==}
|
2403 |
+
engines: {node: '>= 14.16'}
|
2404 |
+
|
2405 |
picocolors@1.1.1:
|
2406 |
resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
|
2407 |
|
|
|
2532 |
engines: {node: '>=14'}
|
2533 |
hasBin: true
|
2534 |
|
2535 |
+
pretty-format@27.5.1:
|
2536 |
+
resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==}
|
2537 |
+
engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
|
2538 |
+
|
2539 |
pretty-format@29.7.0:
|
2540 |
resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==}
|
2541 |
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
|
|
|
2561 |
resolution: {integrity: sha512-U+5l2KrcMNOUPYvazA3h5ekF80FHTUG+87SEAmHZmolh1M+i/WyTCxVzmi+tidIa1tM4BSe8g2Y/D3loWDjj+w==}
|
2562 |
engines: {node: '>=4'}
|
2563 |
|
2564 |
+
react-is@17.0.2:
|
2565 |
+
resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==}
|
2566 |
+
|
2567 |
react-is@18.3.1:
|
2568 |
resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==}
|
2569 |
|
|
|
2575 |
resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==}
|
2576 |
engines: {node: '>= 14.18.0'}
|
2577 |
|
2578 |
+
redent@3.0.0:
|
2579 |
+
resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==}
|
2580 |
+
engines: {node: '>=8'}
|
2581 |
+
|
2582 |
reflect-metadata@0.1.14:
|
2583 |
resolution: {integrity: sha512-ZhYeb6nRaXCfhnndflDK8qI6ZQ/YcWZCISRAWICW9XYqMUwjZM9Z0DveWX/ABN01oxSHwVxKQmxeYZSsm0jh5A==}
|
2584 |
|
|
|
2619 |
resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==}
|
2620 |
engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
|
2621 |
|
2622 |
+
roarr@2.15.4:
|
2623 |
+
resolution: {integrity: sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==}
|
2624 |
+
engines: {node: '>=8.0'}
|
2625 |
+
|
2626 |
rollup@4.34.9:
|
2627 |
resolution: {integrity: sha512-nF5XYqWWp9hx/LrpC8sZvvvmq0TeTjQgaZHYmAgwysT9nh8sWnZhBnM8ZyVbbJFIQBLwHDNoMqsBZBbUo4U8sQ==}
|
2628 |
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
|
2629 |
hasBin: true
|
2630 |
|
2631 |
+
rrweb-cssom@0.8.0:
|
2632 |
+
resolution: {integrity: sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==}
|
2633 |
+
|
2634 |
run-async@2.4.1:
|
2635 |
resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==}
|
2636 |
engines: {node: '>=0.12.0'}
|
|
|
2661 |
safer-buffer@2.1.2:
|
2662 |
resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
|
2663 |
|
2664 |
+
saxes@6.0.0:
|
2665 |
+
resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==}
|
2666 |
+
engines: {node: '>=v12.22.7'}
|
2667 |
+
|
2668 |
+
semver-compare@1.0.0:
|
2669 |
+
resolution: {integrity: sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==}
|
2670 |
+
|
2671 |
semver@7.7.1:
|
2672 |
resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==}
|
2673 |
engines: {node: '>=10'}
|
2674 |
hasBin: true
|
2675 |
|
2676 |
+
semver@7.7.2:
|
2677 |
+
resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==}
|
2678 |
+
engines: {node: '>=10'}
|
2679 |
+
hasBin: true
|
2680 |
+
|
2681 |
+
serialize-error@7.0.1:
|
2682 |
+
resolution: {integrity: sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==}
|
2683 |
+
engines: {node: '>=10'}
|
2684 |
+
|
2685 |
set-cookie-parser@2.7.1:
|
2686 |
resolution: {integrity: sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==}
|
2687 |
|
2688 |
+
sharp@0.34.2:
|
2689 |
+
resolution: {integrity: sha512-lszvBmB9QURERtyKT2bNmsgxXK0ShJrL/fvqlonCo7e6xBF8nT8xU6pW+PMIbLsz0RxQk3rgH9kd8UmvOzlMJg==}
|
2690 |
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
2691 |
|
2692 |
shebang-command@2.0.0:
|
|
|
2700 |
shiki@3.4.0:
|
2701 |
resolution: {integrity: sha512-Ni80XHcqhOEXv5mmDAvf5p6PAJqbUc/RzFeaOqk+zP5DLvTPS3j0ckvA+MI87qoxTQ5RGJDVTbdl/ENLSyyAnQ==}
|
2702 |
|
2703 |
+
siginfo@2.0.0:
|
2704 |
+
resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==}
|
2705 |
+
|
2706 |
signal-exit@3.0.7:
|
2707 |
resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
|
2708 |
|
|
|
2720 |
space-separated-tokens@2.0.2:
|
2721 |
resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==}
|
2722 |
|
2723 |
+
sprintf-js@1.1.3:
|
2724 |
+
resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==}
|
2725 |
+
|
2726 |
+
stackback@0.0.2:
|
2727 |
+
resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==}
|
2728 |
+
|
2729 |
+
std-env@3.9.0:
|
2730 |
+
resolution: {integrity: sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==}
|
2731 |
+
|
2732 |
string-width@4.2.3:
|
2733 |
resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
|
2734 |
engines: {node: '>=8'}
|
|
|
2743 |
resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
|
2744 |
engines: {node: '>=8'}
|
2745 |
|
2746 |
+
strip-indent@3.0.0:
|
2747 |
+
resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==}
|
2748 |
+
engines: {node: '>=8'}
|
2749 |
+
|
2750 |
strip-json-comments@3.1.1:
|
2751 |
resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
|
2752 |
engines: {node: '>=8'}
|
|
|
2780 |
resolution: {integrity: sha512-QIYtKnJGkubWXtNkrUBKVCvyo9gjcccdbnvXfwsGNhvbeNNdQjRDTa/BiQcJ2kWXbXPQbWKyT7CUu53KIj1rfw==}
|
2781 |
engines: {node: '>=18'}
|
2782 |
|
2783 |
+
symbol-tree@3.2.4:
|
2784 |
+
resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==}
|
2785 |
+
|
2786 |
synckit@0.9.2:
|
2787 |
resolution: {integrity: sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==}
|
2788 |
engines: {node: ^14.18.0 || >=16.0.0}
|
|
|
2804 |
through@2.3.8:
|
2805 |
resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==}
|
2806 |
|
2807 |
+
tinybench@2.9.0:
|
2808 |
+
resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==}
|
2809 |
+
|
2810 |
tinyexec@0.3.2:
|
2811 |
resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==}
|
2812 |
|
2813 |
+
tinyglobby@0.2.13:
|
2814 |
+
resolution: {integrity: sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==}
|
2815 |
+
engines: {node: '>=12.0.0'}
|
2816 |
+
|
2817 |
+
tinypool@1.0.2:
|
2818 |
+
resolution: {integrity: sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==}
|
2819 |
+
engines: {node: ^18.0.0 || >=20.0.0}
|
2820 |
+
|
2821 |
+
tinyrainbow@2.0.0:
|
2822 |
+
resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==}
|
2823 |
+
engines: {node: '>=14.0.0'}
|
2824 |
+
|
2825 |
+
tinyspy@3.0.2:
|
2826 |
+
resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==}
|
2827 |
+
engines: {node: '>=14.0.0'}
|
2828 |
+
|
2829 |
+
tldts-core@6.1.86:
|
2830 |
+
resolution: {integrity: sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA==}
|
2831 |
+
|
2832 |
+
tldts@6.1.86:
|
2833 |
+
resolution: {integrity: sha512-WMi/OQ2axVTf/ykqCQgXiIct+mSQDFdH2fkwhPwgEwvJ1kSzZRiinb0zF2Xb8u4+OqPChmyI6MEu4EezNJz+FQ==}
|
2834 |
+
hasBin: true
|
2835 |
+
|
2836 |
tmp@0.0.33:
|
2837 |
resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==}
|
2838 |
engines: {node: '>=0.6.0'}
|
|
|
2845 |
resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==}
|
2846 |
engines: {node: '>=6'}
|
2847 |
|
2848 |
+
tough-cookie@5.1.2:
|
2849 |
+
resolution: {integrity: sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==}
|
2850 |
+
engines: {node: '>=16'}
|
2851 |
+
|
2852 |
tr46@0.0.3:
|
2853 |
resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
|
2854 |
|
2855 |
+
tr46@5.1.1:
|
2856 |
+
resolution: {integrity: sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==}
|
2857 |
+
engines: {node: '>=18'}
|
2858 |
+
|
2859 |
trim-lines@3.0.1:
|
2860 |
resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==}
|
2861 |
|
|
|
2876 |
resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
|
2877 |
engines: {node: '>= 0.8.0'}
|
2878 |
|
2879 |
+
type-fest@0.13.1:
|
2880 |
+
resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==}
|
2881 |
+
engines: {node: '>=10'}
|
2882 |
+
|
2883 |
type-fest@0.21.3:
|
2884 |
resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==}
|
2885 |
engines: {node: '>=10'}
|
|
|
2990 |
vfile@6.0.3:
|
2991 |
resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==}
|
2992 |
|
2993 |
+
vite-node@3.1.4:
|
2994 |
+
resolution: {integrity: sha512-6enNwYnpyDo4hEgytbmc6mYWHXDHYEn0D1/rw4Q+tnHUGtKTJsn8T1YkX6Q18wI5LCrS8CTYlBaiCqxOy2kvUA==}
|
2995 |
+
engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
|
2996 |
+
hasBin: true
|
2997 |
+
|
2998 |
vite@5.4.14:
|
2999 |
resolution: {integrity: sha512-EK5cY7Q1D8JNhSaPKVK4pwBFvaTmZxEnoKXLG/U9gmdDcihQGNzFlgIvaxezFR4glP1LsuiedwMBqCXH3wZccA==}
|
3000 |
engines: {node: ^18.0.0 || >=20.0.0}
|
|
|
3074 |
vite:
|
3075 |
optional: true
|
3076 |
|
3077 |
+
vitest@3.1.4:
|
3078 |
+
resolution: {integrity: sha512-Ta56rT7uWxCSJXlBtKgIlApJnT6e6IGmTYxYcmxjJ4ujuZDI59GUQgVDObXXJujOmPDBYXHK1qmaGtneu6TNIQ==}
|
3079 |
+
engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
|
3080 |
+
hasBin: true
|
3081 |
+
peerDependencies:
|
3082 |
+
'@edge-runtime/vm': '*'
|
3083 |
+
'@types/debug': ^4.1.12
|
3084 |
+
'@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0
|
3085 |
+
'@vitest/browser': 3.1.4
|
3086 |
+
'@vitest/ui': 3.1.4
|
3087 |
+
happy-dom: '*'
|
3088 |
+
jsdom: '*'
|
3089 |
+
peerDependenciesMeta:
|
3090 |
+
'@edge-runtime/vm':
|
3091 |
+
optional: true
|
3092 |
+
'@types/debug':
|
3093 |
+
optional: true
|
3094 |
+
'@types/node':
|
3095 |
+
optional: true
|
3096 |
+
'@vitest/browser':
|
3097 |
+
optional: true
|
3098 |
+
'@vitest/ui':
|
3099 |
+
optional: true
|
3100 |
+
happy-dom:
|
3101 |
+
optional: true
|
3102 |
+
jsdom:
|
3103 |
+
optional: true
|
3104 |
+
|
3105 |
+
w3c-xmlserializer@5.0.0:
|
3106 |
+
resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==}
|
3107 |
+
engines: {node: '>=18'}
|
3108 |
+
|
3109 |
wcwidth@1.0.1:
|
3110 |
resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==}
|
3111 |
|
|
|
3116 |
webidl-conversions@3.0.1:
|
3117 |
resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
|
3118 |
|
3119 |
+
webidl-conversions@7.0.0:
|
3120 |
+
resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==}
|
3121 |
+
engines: {node: '>=12'}
|
3122 |
+
|
3123 |
webpack-virtual-modules@0.6.2:
|
3124 |
resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==}
|
3125 |
|
3126 |
+
whatwg-encoding@3.1.1:
|
3127 |
+
resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==}
|
3128 |
+
engines: {node: '>=18'}
|
3129 |
+
|
3130 |
+
whatwg-mimetype@4.0.0:
|
3131 |
+
resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==}
|
3132 |
+
engines: {node: '>=18'}
|
3133 |
+
|
3134 |
+
whatwg-url@14.2.0:
|
3135 |
+
resolution: {integrity: sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==}
|
3136 |
+
engines: {node: '>=18'}
|
3137 |
+
|
3138 |
whatwg-url@5.0.0:
|
3139 |
resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==}
|
3140 |
|
|
|
3148 |
engines: {node: ^16.13.0 || >=18.0.0}
|
3149 |
hasBin: true
|
3150 |
|
3151 |
+
why-is-node-running@2.3.0:
|
3152 |
+
resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==}
|
3153 |
+
engines: {node: '>=8'}
|
3154 |
+
hasBin: true
|
3155 |
+
|
3156 |
word-wrap@1.2.5:
|
3157 |
resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
|
3158 |
engines: {node: '>=0.10.0'}
|
|
|
3161 |
resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==}
|
3162 |
engines: {node: '>=8'}
|
3163 |
|
3164 |
+
ws@8.18.2:
|
3165 |
+
resolution: {integrity: sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==}
|
3166 |
+
engines: {node: '>=10.0.0'}
|
3167 |
+
peerDependencies:
|
3168 |
+
bufferutil: ^4.0.1
|
3169 |
+
utf-8-validate: '>=5.0.2'
|
3170 |
+
peerDependenciesMeta:
|
3171 |
+
bufferutil:
|
3172 |
+
optional: true
|
3173 |
+
utf-8-validate:
|
3174 |
+
optional: true
|
3175 |
+
|
3176 |
+
xml-name-validator@5.0.0:
|
3177 |
+
resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==}
|
3178 |
+
engines: {node: '>=18'}
|
3179 |
+
|
3180 |
+
xmlchars@2.2.0:
|
3181 |
+
resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==}
|
3182 |
+
|
3183 |
yallist@5.0.0:
|
3184 |
resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==}
|
3185 |
engines: {node: '>=18'}
|
|
|
3209 |
|
3210 |
snapshots:
|
3211 |
|
3212 |
+
'@adobe/css-tools@4.4.3': {}
|
3213 |
+
|
3214 |
'@alloc/quick-lru@5.2.0': {}
|
3215 |
|
3216 |
'@ampproject/remapping@2.3.0':
|
|
|
3225 |
|
3226 |
'@antfu/utils@8.1.1': {}
|
3227 |
|
3228 |
+
'@asamuzakjp/css-color@3.2.0':
|
3229 |
+
dependencies:
|
3230 |
+
'@csstools/css-calc': 2.1.3(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)
|
3231 |
+
'@csstools/css-color-parser': 3.0.9(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)
|
3232 |
+
'@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3)
|
3233 |
+
'@csstools/css-tokenizer': 3.0.3
|
3234 |
+
lru-cache: 10.4.3
|
3235 |
+
|
3236 |
+
'@babel/code-frame@7.27.1':
|
3237 |
+
dependencies:
|
3238 |
+
'@babel/helper-validator-identifier': 7.27.1
|
3239 |
+
js-tokens: 4.0.0
|
3240 |
+
picocolors: 1.1.1
|
3241 |
+
|
3242 |
+
'@babel/helper-validator-identifier@7.27.1': {}
|
3243 |
+
|
3244 |
+
'@babel/runtime@7.27.1': {}
|
3245 |
+
|
3246 |
+
'@csstools/color-helpers@5.0.2': {}
|
3247 |
+
|
3248 |
+
'@csstools/css-calc@2.1.3(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)':
|
3249 |
+
dependencies:
|
3250 |
+
'@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3)
|
3251 |
+
'@csstools/css-tokenizer': 3.0.3
|
3252 |
+
|
3253 |
+
'@csstools/css-color-parser@3.0.9(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)':
|
3254 |
+
dependencies:
|
3255 |
+
'@csstools/color-helpers': 5.0.2
|
3256 |
+
'@csstools/css-calc': 2.1.3(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)
|
3257 |
+
'@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3)
|
3258 |
+
'@csstools/css-tokenizer': 3.0.3
|
3259 |
+
|
3260 |
+
'@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3)':
|
3261 |
+
dependencies:
|
3262 |
+
'@csstools/css-tokenizer': 3.0.3
|
3263 |
+
|
3264 |
+
'@csstools/css-tokenizer@3.0.3': {}
|
3265 |
+
|
3266 |
+
'@emnapi/runtime@1.4.3':
|
3267 |
dependencies:
|
3268 |
tslib: 2.8.1
|
3269 |
optional: true
|
|
|
3467 |
|
3468 |
'@floating-ui/utils@0.2.9': {}
|
3469 |
|
3470 |
+
'@huggingface/hub@2.1.0':
|
3471 |
dependencies:
|
3472 |
+
'@huggingface/tasks': 0.19.8
|
3473 |
|
3474 |
+
'@huggingface/inference@3.13.2':
|
3475 |
dependencies:
|
3476 |
+
'@huggingface/jinja': 0.5.0
|
3477 |
+
'@huggingface/tasks': 0.19.8
|
3478 |
|
3479 |
+
'@huggingface/jinja@0.4.1': {}
|
3480 |
|
3481 |
+
'@huggingface/jinja@0.5.0': {}
|
3482 |
|
3483 |
+
'@huggingface/tasks@0.19.8': {}
|
3484 |
|
3485 |
+
'@huggingface/transformers@3.5.1':
|
3486 |
dependencies:
|
3487 |
+
'@huggingface/jinja': 0.4.1
|
3488 |
+
onnxruntime-node: 1.21.0
|
3489 |
+
onnxruntime-web: 1.22.0-dev.20250409-89f8206ba4
|
3490 |
+
sharp: 0.34.2
|
3491 |
|
3492 |
'@humanfs/core@0.19.1': {}
|
3493 |
|
|
|
3525 |
transitivePeerDependencies:
|
3526 |
- supports-color
|
3527 |
|
3528 |
+
'@img/sharp-darwin-arm64@0.34.2':
|
3529 |
optionalDependencies:
|
3530 |
+
'@img/sharp-libvips-darwin-arm64': 1.1.0
|
3531 |
optional: true
|
3532 |
|
3533 |
+
'@img/sharp-darwin-x64@0.34.2':
|
3534 |
optionalDependencies:
|
3535 |
+
'@img/sharp-libvips-darwin-x64': 1.1.0
|
3536 |
optional: true
|
3537 |
|
3538 |
+
'@img/sharp-libvips-darwin-arm64@1.1.0':
|
3539 |
optional: true
|
3540 |
|
3541 |
+
'@img/sharp-libvips-darwin-x64@1.1.0':
|
3542 |
optional: true
|
3543 |
|
3544 |
+
'@img/sharp-libvips-linux-arm64@1.1.0':
|
3545 |
optional: true
|
3546 |
|
3547 |
+
'@img/sharp-libvips-linux-arm@1.1.0':
|
3548 |
optional: true
|
3549 |
|
3550 |
+
'@img/sharp-libvips-linux-ppc64@1.1.0':
|
3551 |
optional: true
|
3552 |
|
3553 |
+
'@img/sharp-libvips-linux-s390x@1.1.0':
|
3554 |
optional: true
|
3555 |
|
3556 |
+
'@img/sharp-libvips-linux-x64@1.1.0':
|
3557 |
optional: true
|
3558 |
|
3559 |
+
'@img/sharp-libvips-linuxmusl-arm64@1.1.0':
|
3560 |
optional: true
|
3561 |
|
3562 |
+
'@img/sharp-libvips-linuxmusl-x64@1.1.0':
|
3563 |
+
optional: true
|
3564 |
+
|
3565 |
+
'@img/sharp-linux-arm64@0.34.2':
|
3566 |
optionalDependencies:
|
3567 |
+
'@img/sharp-libvips-linux-arm64': 1.1.0
|
3568 |
optional: true
|
3569 |
|
3570 |
+
'@img/sharp-linux-arm@0.34.2':
|
3571 |
optionalDependencies:
|
3572 |
+
'@img/sharp-libvips-linux-arm': 1.1.0
|
3573 |
optional: true
|
3574 |
|
3575 |
+
'@img/sharp-linux-s390x@0.34.2':
|
3576 |
optionalDependencies:
|
3577 |
+
'@img/sharp-libvips-linux-s390x': 1.1.0
|
3578 |
optional: true
|
3579 |
|
3580 |
+
'@img/sharp-linux-x64@0.34.2':
|
3581 |
optionalDependencies:
|
3582 |
+
'@img/sharp-libvips-linux-x64': 1.1.0
|
3583 |
optional: true
|
3584 |
|
3585 |
+
'@img/sharp-linuxmusl-arm64@0.34.2':
|
3586 |
optionalDependencies:
|
3587 |
+
'@img/sharp-libvips-linuxmusl-arm64': 1.1.0
|
3588 |
optional: true
|
3589 |
|
3590 |
+
'@img/sharp-linuxmusl-x64@0.34.2':
|
3591 |
optionalDependencies:
|
3592 |
+
'@img/sharp-libvips-linuxmusl-x64': 1.1.0
|
3593 |
optional: true
|
3594 |
|
3595 |
+
'@img/sharp-wasm32@0.34.2':
|
3596 |
dependencies:
|
3597 |
+
'@emnapi/runtime': 1.4.3
|
3598 |
+
optional: true
|
3599 |
+
|
3600 |
+
'@img/sharp-win32-arm64@0.34.2':
|
3601 |
optional: true
|
3602 |
|
3603 |
+
'@img/sharp-win32-ia32@0.34.2':
|
3604 |
optional: true
|
3605 |
|
3606 |
+
'@img/sharp-win32-x64@0.34.2':
|
3607 |
optional: true
|
3608 |
|
3609 |
'@isaacs/fs-minipass@4.0.1':
|
|
|
3958 |
postcss: 8.5.3
|
3959 |
tailwindcss: 4.0.9
|
3960 |
|
3961 |
+
'@testing-library/dom@10.4.0':
|
3962 |
+
dependencies:
|
3963 |
+
'@babel/code-frame': 7.27.1
|
3964 |
+
'@babel/runtime': 7.27.1
|
3965 |
+
'@types/aria-query': 5.0.4
|
3966 |
+
aria-query: 5.3.0
|
3967 |
+
chalk: 4.1.2
|
3968 |
+
dom-accessibility-api: 0.5.16
|
3969 |
+
lz-string: 1.5.0
|
3970 |
+
pretty-format: 27.5.1
|
3971 |
+
|
3972 |
+
'@testing-library/jest-dom@6.6.3':
|
3973 |
+
dependencies:
|
3974 |
+
'@adobe/css-tools': 4.4.3
|
3975 |
+
aria-query: 5.3.2
|
3976 |
+
chalk: 3.0.0
|
3977 |
+
css.escape: 1.5.1
|
3978 |
+
dom-accessibility-api: 0.6.3
|
3979 |
+
lodash: 4.17.21
|
3980 |
+
redent: 3.0.0
|
3981 |
+
|
3982 |
+
'@testing-library/svelte@5.2.8(svelte@5.30.1)(vite@5.4.14(@types/node@22.14.1)(lightningcss@1.29.1))(vitest@3.1.4(@types/node@22.14.1)(jsdom@26.1.0)(lightningcss@1.29.1))':
|
3983 |
+
dependencies:
|
3984 |
+
'@testing-library/dom': 10.4.0
|
3985 |
+
svelte: 5.30.1
|
3986 |
+
optionalDependencies:
|
3987 |
+
vite: 5.4.14(@types/node@22.14.1)(lightningcss@1.29.1)
|
3988 |
+
vitest: 3.1.4(@types/node@22.14.1)(jsdom@26.1.0)(lightningcss@1.29.1)
|
3989 |
+
|
3990 |
+
'@types/aria-query@5.0.4': {}
|
3991 |
+
|
3992 |
'@types/cookie@0.6.0': {}
|
3993 |
|
3994 |
'@types/estree@1.0.6': {}
|
|
|
4099 |
|
4100 |
'@ungap/structured-clone@1.3.0': {}
|
4101 |
|
4102 |
+
'@vitest/expect@3.1.4':
|
4103 |
+
dependencies:
|
4104 |
+
'@vitest/spy': 3.1.4
|
4105 |
+
'@vitest/utils': 3.1.4
|
4106 |
+
chai: 5.2.0
|
4107 |
+
tinyrainbow: 2.0.0
|
4108 |
+
|
4109 |
+
'@vitest/mocker@3.1.4(vite@5.4.14(@types/node@22.14.1)(lightningcss@1.29.1))':
|
4110 |
+
dependencies:
|
4111 |
+
'@vitest/spy': 3.1.4
|
4112 |
+
estree-walker: 3.0.3
|
4113 |
+
magic-string: 0.30.17
|
4114 |
+
optionalDependencies:
|
4115 |
+
vite: 5.4.14(@types/node@22.14.1)(lightningcss@1.29.1)
|
4116 |
+
|
4117 |
+
'@vitest/pretty-format@3.1.4':
|
4118 |
+
dependencies:
|
4119 |
+
tinyrainbow: 2.0.0
|
4120 |
+
|
4121 |
+
'@vitest/runner@3.1.4':
|
4122 |
+
dependencies:
|
4123 |
+
'@vitest/utils': 3.1.4
|
4124 |
+
pathe: 2.0.3
|
4125 |
+
|
4126 |
+
'@vitest/snapshot@3.1.4':
|
4127 |
+
dependencies:
|
4128 |
+
'@vitest/pretty-format': 3.1.4
|
4129 |
+
magic-string: 0.30.17
|
4130 |
+
pathe: 2.0.3
|
4131 |
+
|
4132 |
+
'@vitest/spy@3.1.4':
|
4133 |
+
dependencies:
|
4134 |
+
tinyspy: 3.0.2
|
4135 |
+
|
4136 |
+
'@vitest/utils@3.1.4':
|
4137 |
+
dependencies:
|
4138 |
+
'@vitest/pretty-format': 3.1.4
|
4139 |
+
loupe: 3.1.3
|
4140 |
+
tinyrainbow: 2.0.0
|
4141 |
+
|
4142 |
abort-controller@3.0.0:
|
4143 |
dependencies:
|
4144 |
event-target-shim: 5.0.1
|
|
|
4149 |
|
4150 |
acorn@8.14.0: {}
|
4151 |
|
4152 |
+
agent-base@7.1.3: {}
|
4153 |
+
|
4154 |
agentkeepalive@4.6.0:
|
4155 |
dependencies:
|
4156 |
humanize-ms: 1.2.1
|
|
|
4176 |
|
4177 |
argparse@2.0.1: {}
|
4178 |
|
4179 |
+
aria-query@5.3.0:
|
4180 |
+
dependencies:
|
4181 |
+
dequal: 2.0.3
|
4182 |
+
|
4183 |
aria-query@5.3.2: {}
|
4184 |
|
4185 |
array-timsort@1.0.3: {}
|
4186 |
|
4187 |
+
assertion-error@2.0.1: {}
|
4188 |
+
|
4189 |
asynckit@0.4.0: {}
|
4190 |
|
4191 |
axe-core@4.9.1: {}
|
|
|
4202 |
inherits: 2.0.4
|
4203 |
readable-stream: 3.6.2
|
4204 |
|
4205 |
+
boolean@3.2.0: {}
|
4206 |
+
|
4207 |
brace-expansion@1.1.11:
|
4208 |
dependencies:
|
4209 |
balanced-match: 1.0.2
|
|
|
4222 |
base64-js: 1.5.1
|
4223 |
ieee754: 1.2.1
|
4224 |
|
4225 |
+
cac@6.7.14: {}
|
4226 |
+
|
4227 |
call-bind-apply-helpers@1.0.2:
|
4228 |
dependencies:
|
4229 |
es-errors: 1.3.0
|
|
|
4233 |
|
4234 |
ccount@2.0.1: {}
|
4235 |
|
4236 |
+
chai@5.2.0:
|
4237 |
+
dependencies:
|
4238 |
+
assertion-error: 2.0.1
|
4239 |
+
check-error: 2.1.1
|
4240 |
+
deep-eql: 5.0.2
|
4241 |
+
loupe: 3.1.3
|
4242 |
+
pathval: 2.0.0
|
4243 |
+
|
4244 |
+
chalk@3.0.0:
|
4245 |
+
dependencies:
|
4246 |
+
ansi-styles: 4.3.0
|
4247 |
+
supports-color: 7.2.0
|
4248 |
+
|
4249 |
chalk@4.1.2:
|
4250 |
dependencies:
|
4251 |
ansi-styles: 4.3.0
|
|
|
4257 |
|
4258 |
chardet@0.7.0: {}
|
4259 |
|
4260 |
+
check-error@2.1.1: {}
|
4261 |
+
|
4262 |
chokidar@4.0.3:
|
4263 |
dependencies:
|
4264 |
readdirp: 4.1.2
|
|
|
4331 |
shebang-command: 2.0.0
|
4332 |
which: 2.0.2
|
4333 |
|
4334 |
+
css.escape@1.5.1: {}
|
4335 |
+
|
4336 |
cssesc@3.0.0: {}
|
4337 |
|
4338 |
+
cssstyle@4.3.1:
|
4339 |
+
dependencies:
|
4340 |
+
'@asamuzakjp/css-color': 3.2.0
|
4341 |
+
rrweb-cssom: 0.8.0
|
4342 |
+
|
4343 |
+
data-urls@5.0.0:
|
4344 |
+
dependencies:
|
4345 |
+
whatwg-mimetype: 4.0.0
|
4346 |
+
whatwg-url: 14.2.0
|
4347 |
+
|
4348 |
debug@4.4.0:
|
4349 |
dependencies:
|
4350 |
ms: 2.1.3
|
4351 |
|
4352 |
+
decimal.js@10.5.0: {}
|
4353 |
+
|
4354 |
+
deep-eql@5.0.2: {}
|
4355 |
+
|
4356 |
deep-is@0.1.4: {}
|
4357 |
|
4358 |
deepmerge@4.3.1: {}
|
|
|
4361 |
dependencies:
|
4362 |
clone: 1.0.4
|
4363 |
|
4364 |
+
define-data-property@1.1.4:
|
4365 |
+
dependencies:
|
4366 |
+
es-define-property: 1.0.1
|
4367 |
+
es-errors: 1.3.0
|
4368 |
+
gopd: 1.2.0
|
4369 |
+
|
4370 |
+
define-properties@1.2.1:
|
4371 |
+
dependencies:
|
4372 |
+
define-data-property: 1.1.4
|
4373 |
+
has-property-descriptors: 1.0.2
|
4374 |
+
object-keys: 1.1.1
|
4375 |
+
|
4376 |
defu@6.1.4: {}
|
4377 |
|
4378 |
delayed-stream@1.0.0: {}
|
|
|
4381 |
|
4382 |
detect-libc@1.0.3: {}
|
4383 |
|
4384 |
+
detect-libc@2.0.4: {}
|
4385 |
+
|
4386 |
+
detect-node@2.1.0: {}
|
4387 |
|
4388 |
devalue@5.1.1: {}
|
4389 |
|
|
|
4395 |
|
4396 |
diff-sequences@29.6.3: {}
|
4397 |
|
4398 |
+
dom-accessibility-api@0.5.16: {}
|
4399 |
+
|
4400 |
+
dom-accessibility-api@0.6.3: {}
|
4401 |
+
|
4402 |
dotenv@16.5.0: {}
|
4403 |
|
4404 |
drange@1.1.1: {}
|
|
|
4416 |
graceful-fs: 4.2.11
|
4417 |
tapable: 2.2.1
|
4418 |
|
4419 |
+
entities@6.0.0: {}
|
4420 |
+
|
4421 |
es-define-property@1.0.1: {}
|
4422 |
|
4423 |
es-errors@1.3.0: {}
|
4424 |
|
4425 |
+
es-module-lexer@1.7.0: {}
|
4426 |
+
|
4427 |
es-object-atoms@1.1.1:
|
4428 |
dependencies:
|
4429 |
es-errors: 1.3.0
|
|
|
4435 |
has-tostringtag: 1.0.2
|
4436 |
hasown: 2.0.2
|
4437 |
|
4438 |
+
es6-error@4.1.1: {}
|
4439 |
+
|
4440 |
esbuild@0.21.5:
|
4441 |
optionalDependencies:
|
4442 |
'@esbuild/aix-ppc64': 0.21.5
|
|
|
4602 |
|
4603 |
estree-walker@2.0.2: {}
|
4604 |
|
4605 |
+
estree-walker@3.0.3:
|
4606 |
+
dependencies:
|
4607 |
+
'@types/estree': 1.0.6
|
4608 |
+
|
4609 |
esutils@2.0.3: {}
|
4610 |
|
4611 |
event-target-shim@5.0.1: {}
|
4612 |
|
4613 |
+
expect-type@1.2.1: {}
|
4614 |
+
|
4615 |
exsolve@1.0.4: {}
|
4616 |
|
4617 |
external-editor@3.1.0:
|
|
|
4644 |
optionalDependencies:
|
4645 |
picomatch: 4.0.2
|
4646 |
|
4647 |
+
fdir@6.4.4(picomatch@4.0.2):
|
4648 |
+
optionalDependencies:
|
4649 |
+
picomatch: 4.0.2
|
4650 |
+
|
4651 |
figures@3.2.0:
|
4652 |
dependencies:
|
4653 |
escape-string-regexp: 1.0.5
|
|
|
4729 |
dependencies:
|
4730 |
is-glob: 4.0.3
|
4731 |
|
4732 |
+
global-agent@3.0.0:
|
4733 |
+
dependencies:
|
4734 |
+
boolean: 3.2.0
|
4735 |
+
es6-error: 4.1.1
|
4736 |
+
matcher: 3.0.0
|
4737 |
+
roarr: 2.15.4
|
4738 |
+
semver: 7.7.1
|
4739 |
+
serialize-error: 7.0.1
|
4740 |
+
|
4741 |
global-prefix@4.0.0:
|
4742 |
dependencies:
|
4743 |
ini: 4.1.3
|
|
|
4750 |
|
4751 |
globals@16.0.0: {}
|
4752 |
|
4753 |
+
globalthis@1.0.4:
|
4754 |
+
dependencies:
|
4755 |
+
define-properties: 1.2.1
|
4756 |
+
gopd: 1.2.0
|
4757 |
+
|
4758 |
gopd@1.2.0: {}
|
4759 |
|
4760 |
graceful-fs@4.2.11: {}
|
|
|
4767 |
|
4768 |
has-own-prop@2.0.0: {}
|
4769 |
|
4770 |
+
has-property-descriptors@1.0.2:
|
4771 |
+
dependencies:
|
4772 |
+
es-define-property: 1.0.1
|
4773 |
+
|
4774 |
has-symbols@1.1.0: {}
|
4775 |
|
4776 |
has-tostringtag@1.0.2:
|
|
|
4801 |
|
4802 |
highlight.js@11.11.1: {}
|
4803 |
|
4804 |
+
html-encoding-sniffer@4.0.0:
|
4805 |
+
dependencies:
|
4806 |
+
whatwg-encoding: 3.1.1
|
4807 |
+
|
4808 |
html-void-elements@3.0.0: {}
|
4809 |
|
4810 |
+
http-proxy-agent@7.0.2:
|
4811 |
+
dependencies:
|
4812 |
+
agent-base: 7.1.3
|
4813 |
+
debug: 4.4.0
|
4814 |
+
transitivePeerDependencies:
|
4815 |
+
- supports-color
|
4816 |
+
|
4817 |
+
https-proxy-agent@7.0.6:
|
4818 |
+
dependencies:
|
4819 |
+
agent-base: 7.1.3
|
4820 |
+
debug: 4.4.0
|
4821 |
+
transitivePeerDependencies:
|
4822 |
+
- supports-color
|
4823 |
+
|
4824 |
humanize-ms@1.2.1:
|
4825 |
dependencies:
|
4826 |
ms: 2.1.3
|
|
|
4829 |
dependencies:
|
4830 |
safer-buffer: 2.1.2
|
4831 |
|
4832 |
+
iconv-lite@0.6.3:
|
4833 |
+
dependencies:
|
4834 |
+
safer-buffer: 2.1.2
|
4835 |
+
|
4836 |
ieee754@1.2.1: {}
|
4837 |
|
4838 |
ignore@5.3.2: {}
|
|
|
4846 |
|
4847 |
imurmurhash@0.1.4: {}
|
4848 |
|
4849 |
+
indent-string@4.0.0: {}
|
4850 |
+
|
4851 |
inherits@2.0.4: {}
|
4852 |
|
4853 |
ini@4.1.3: {}
|
|
|
4890 |
|
4891 |
is-number@7.0.0: {}
|
4892 |
|
4893 |
+
is-potential-custom-element-name@1.0.1: {}
|
4894 |
+
|
4895 |
is-reference@1.2.1:
|
4896 |
dependencies:
|
4897 |
'@types/estree': 1.0.6
|
|
|
4931 |
|
4932 |
jiti@2.4.2: {}
|
4933 |
|
4934 |
+
js-tokens@4.0.0: {}
|
4935 |
+
|
4936 |
js-yaml@4.1.0:
|
4937 |
dependencies:
|
4938 |
argparse: 2.0.1
|
4939 |
|
4940 |
+
jsdom@26.1.0:
|
4941 |
+
dependencies:
|
4942 |
+
cssstyle: 4.3.1
|
4943 |
+
data-urls: 5.0.0
|
4944 |
+
decimal.js: 10.5.0
|
4945 |
+
html-encoding-sniffer: 4.0.0
|
4946 |
+
http-proxy-agent: 7.0.2
|
4947 |
+
https-proxy-agent: 7.0.6
|
4948 |
+
is-potential-custom-element-name: 1.0.1
|
4949 |
+
nwsapi: 2.2.20
|
4950 |
+
parse5: 7.3.0
|
4951 |
+
rrweb-cssom: 0.8.0
|
4952 |
+
saxes: 6.0.0
|
4953 |
+
symbol-tree: 3.2.4
|
4954 |
+
tough-cookie: 5.1.2
|
4955 |
+
w3c-xmlserializer: 5.0.0
|
4956 |
+
webidl-conversions: 7.0.0
|
4957 |
+
whatwg-encoding: 3.1.1
|
4958 |
+
whatwg-mimetype: 4.0.0
|
4959 |
+
whatwg-url: 14.2.0
|
4960 |
+
ws: 8.18.2
|
4961 |
+
xml-name-validator: 5.0.0
|
4962 |
+
transitivePeerDependencies:
|
4963 |
+
- bufferutil
|
4964 |
+
- supports-color
|
4965 |
+
- utf-8-validate
|
4966 |
+
|
4967 |
json-buffer@3.0.1: {}
|
4968 |
|
4969 |
json-schema-traverse@0.4.1: {}
|
4970 |
|
4971 |
json-stable-stringify-without-jsonify@1.0.1: {}
|
4972 |
|
4973 |
+
json-stringify-safe@5.0.1: {}
|
4974 |
+
|
4975 |
keyv@4.5.4:
|
4976 |
dependencies:
|
4977 |
json-buffer: 3.0.1
|
|
|
5063 |
|
5064 |
long@5.3.1: {}
|
5065 |
|
5066 |
+
loupe@3.1.3: {}
|
5067 |
+
|
5068 |
+
lru-cache@10.4.3: {}
|
5069 |
+
|
5070 |
+
lz-string@1.5.0: {}
|
5071 |
+
|
5072 |
magic-string@0.30.17:
|
5073 |
dependencies:
|
5074 |
'@jridgewell/sourcemap-codec': 1.5.0
|
5075 |
|
5076 |
+
matcher@3.0.0:
|
5077 |
+
dependencies:
|
5078 |
+
escape-string-regexp: 4.0.0
|
5079 |
+
|
5080 |
math-intrinsics@1.1.0: {}
|
5081 |
|
5082 |
mdast-util-to-hast@13.2.0:
|
|
|
5132 |
|
5133 |
mimic-fn@2.1.0: {}
|
5134 |
|
5135 |
+
min-indent@1.0.1: {}
|
5136 |
+
|
5137 |
minimatch@3.1.2:
|
5138 |
dependencies:
|
5139 |
brace-expansion: 1.1.11
|
|
|
5179 |
dependencies:
|
5180 |
whatwg-url: 5.0.0
|
5181 |
|
5182 |
+
nwsapi@2.2.20: {}
|
5183 |
+
|
5184 |
+
object-keys@1.1.1: {}
|
5185 |
+
|
5186 |
onetime@5.1.2:
|
5187 |
dependencies:
|
5188 |
mimic-fn: 2.1.0
|
|
|
5195 |
regex: 6.0.1
|
5196 |
regex-recursion: 6.0.2
|
5197 |
|
5198 |
+
onnxruntime-common@1.21.0: {}
|
5199 |
|
5200 |
+
onnxruntime-common@1.22.0-dev.20250409-89f8206ba4: {}
|
5201 |
|
5202 |
+
onnxruntime-node@1.21.0:
|
5203 |
dependencies:
|
5204 |
+
global-agent: 3.0.0
|
5205 |
+
onnxruntime-common: 1.21.0
|
5206 |
tar: 7.4.3
|
5207 |
|
5208 |
+
onnxruntime-web@1.22.0-dev.20250409-89f8206ba4:
|
5209 |
dependencies:
|
5210 |
flatbuffers: 25.2.10
|
5211 |
guid-typescript: 1.0.9
|
5212 |
long: 5.3.1
|
5213 |
+
onnxruntime-common: 1.22.0-dev.20250409-89f8206ba4
|
5214 |
platform: 1.3.6
|
5215 |
protobufjs: 7.4.0
|
5216 |
|
5217 |
+
openai@4.90.0(ws@8.18.2):
|
5218 |
dependencies:
|
5219 |
'@types/node': 18.19.84
|
5220 |
'@types/node-fetch': 2.6.12
|
|
|
5223 |
form-data-encoder: 1.7.2
|
5224 |
formdata-node: 4.4.1
|
5225 |
node-fetch: 2.7.0
|
5226 |
+
optionalDependencies:
|
5227 |
+
ws: 8.18.2
|
5228 |
transitivePeerDependencies:
|
5229 |
- encoding
|
5230 |
|
|
|
5275 |
dependencies:
|
5276 |
callsites: 3.1.0
|
5277 |
|
5278 |
+
parse5@7.3.0:
|
5279 |
+
dependencies:
|
5280 |
+
entities: 6.0.0
|
5281 |
+
|
5282 |
path-exists@4.0.0: {}
|
5283 |
|
5284 |
path-exists@5.0.0: {}
|
|
|
5291 |
|
5292 |
pathe@2.0.3: {}
|
5293 |
|
5294 |
+
pathval@2.0.0: {}
|
5295 |
+
|
5296 |
picocolors@1.1.1: {}
|
5297 |
|
5298 |
picomatch@2.3.1: {}
|
|
|
5362 |
|
5363 |
prettier@3.5.3: {}
|
5364 |
|
5365 |
+
pretty-format@27.5.1:
|
5366 |
+
dependencies:
|
5367 |
+
ansi-regex: 5.0.1
|
5368 |
+
ansi-styles: 5.2.0
|
5369 |
+
react-is: 17.0.2
|
5370 |
+
|
5371 |
pretty-format@29.7.0:
|
5372 |
dependencies:
|
5373 |
'@jest/schemas': 29.6.3
|
|
|
5402 |
drange: 1.1.1
|
5403 |
ret: 0.2.2
|
5404 |
|
5405 |
+
react-is@17.0.2: {}
|
5406 |
+
|
5407 |
react-is@18.3.1: {}
|
5408 |
|
5409 |
readable-stream@3.6.2:
|
|
|
5414 |
|
5415 |
readdirp@4.1.2: {}
|
5416 |
|
5417 |
+
redent@3.0.0:
|
5418 |
+
dependencies:
|
5419 |
+
indent-string: 4.0.0
|
5420 |
+
strip-indent: 3.0.0
|
5421 |
+
|
5422 |
reflect-metadata@0.1.14: {}
|
5423 |
|
5424 |
regex-recursion@6.0.2:
|
|
|
5457 |
|
5458 |
reusify@1.1.0: {}
|
5459 |
|
5460 |
+
roarr@2.15.4:
|
5461 |
+
dependencies:
|
5462 |
+
boolean: 3.2.0
|
5463 |
+
detect-node: 2.1.0
|
5464 |
+
globalthis: 1.0.4
|
5465 |
+
json-stringify-safe: 5.0.1
|
5466 |
+
semver-compare: 1.0.0
|
5467 |
+
sprintf-js: 1.1.3
|
5468 |
+
|
5469 |
rollup@4.34.9:
|
5470 |
dependencies:
|
5471 |
'@types/estree': 1.0.6
|
|
|
5491 |
'@rollup/rollup-win32-x64-msvc': 4.34.9
|
5492 |
fsevents: 2.3.3
|
5493 |
|
5494 |
+
rrweb-cssom@0.8.0: {}
|
5495 |
+
|
5496 |
run-async@2.4.1: {}
|
5497 |
|
5498 |
run-parallel@1.2.0:
|
|
|
5521 |
|
5522 |
safer-buffer@2.1.2: {}
|
5523 |
|
5524 |
+
saxes@6.0.0:
|
5525 |
+
dependencies:
|
5526 |
+
xmlchars: 2.2.0
|
5527 |
+
|
5528 |
+
semver-compare@1.0.0: {}
|
5529 |
+
|
5530 |
semver@7.7.1: {}
|
5531 |
|
5532 |
+
semver@7.7.2: {}
|
5533 |
+
|
5534 |
+
serialize-error@7.0.1:
|
5535 |
+
dependencies:
|
5536 |
+
type-fest: 0.13.1
|
5537 |
+
|
5538 |
set-cookie-parser@2.7.1: {}
|
5539 |
|
5540 |
+
sharp@0.34.2:
|
5541 |
dependencies:
|
5542 |
color: 4.2.3
|
5543 |
+
detect-libc: 2.0.4
|
5544 |
+
semver: 7.7.2
|
5545 |
optionalDependencies:
|
5546 |
+
'@img/sharp-darwin-arm64': 0.34.2
|
5547 |
+
'@img/sharp-darwin-x64': 0.34.2
|
5548 |
+
'@img/sharp-libvips-darwin-arm64': 1.1.0
|
5549 |
+
'@img/sharp-libvips-darwin-x64': 1.1.0
|
5550 |
+
'@img/sharp-libvips-linux-arm': 1.1.0
|
5551 |
+
'@img/sharp-libvips-linux-arm64': 1.1.0
|
5552 |
+
'@img/sharp-libvips-linux-ppc64': 1.1.0
|
5553 |
+
'@img/sharp-libvips-linux-s390x': 1.1.0
|
5554 |
+
'@img/sharp-libvips-linux-x64': 1.1.0
|
5555 |
+
'@img/sharp-libvips-linuxmusl-arm64': 1.1.0
|
5556 |
+
'@img/sharp-libvips-linuxmusl-x64': 1.1.0
|
5557 |
+
'@img/sharp-linux-arm': 0.34.2
|
5558 |
+
'@img/sharp-linux-arm64': 0.34.2
|
5559 |
+
'@img/sharp-linux-s390x': 0.34.2
|
5560 |
+
'@img/sharp-linux-x64': 0.34.2
|
5561 |
+
'@img/sharp-linuxmusl-arm64': 0.34.2
|
5562 |
+
'@img/sharp-linuxmusl-x64': 0.34.2
|
5563 |
+
'@img/sharp-wasm32': 0.34.2
|
5564 |
+
'@img/sharp-win32-arm64': 0.34.2
|
5565 |
+
'@img/sharp-win32-ia32': 0.34.2
|
5566 |
+
'@img/sharp-win32-x64': 0.34.2
|
5567 |
|
5568 |
shebang-command@2.0.0:
|
5569 |
dependencies:
|
|
|
5582 |
'@shikijs/vscode-textmate': 10.0.2
|
5583 |
'@types/hast': 3.0.4
|
5584 |
|
5585 |
+
siginfo@2.0.0: {}
|
5586 |
+
|
5587 |
signal-exit@3.0.7: {}
|
5588 |
|
5589 |
simple-swizzle@0.2.2:
|
|
|
5600 |
|
5601 |
space-separated-tokens@2.0.2: {}
|
5602 |
|
5603 |
+
sprintf-js@1.1.3: {}
|
5604 |
+
|
5605 |
+
stackback@0.0.2: {}
|
5606 |
+
|
5607 |
+
std-env@3.9.0: {}
|
5608 |
+
|
5609 |
string-width@4.2.3:
|
5610 |
dependencies:
|
5611 |
emoji-regex: 8.0.0
|
|
|
5625 |
dependencies:
|
5626 |
ansi-regex: 5.0.1
|
5627 |
|
5628 |
+
strip-indent@3.0.0:
|
5629 |
+
dependencies:
|
5630 |
+
min-indent: 1.0.1
|
5631 |
+
|
5632 |
strip-json-comments@3.1.1: {}
|
5633 |
|
5634 |
supports-color@7.2.0:
|
|
|
5677 |
magic-string: 0.30.17
|
5678 |
zimmerframe: 1.1.2
|
5679 |
|
5680 |
+
symbol-tree@3.2.4: {}
|
5681 |
+
|
5682 |
synckit@0.9.2:
|
5683 |
dependencies:
|
5684 |
'@pkgr/core': 0.1.1
|
|
|
5701 |
|
5702 |
through@2.3.8: {}
|
5703 |
|
5704 |
+
tinybench@2.9.0: {}
|
5705 |
+
|
5706 |
tinyexec@0.3.2: {}
|
5707 |
|
5708 |
+
tinyglobby@0.2.13:
|
5709 |
+
dependencies:
|
5710 |
+
fdir: 6.4.4(picomatch@4.0.2)
|
5711 |
+
picomatch: 4.0.2
|
5712 |
+
|
5713 |
+
tinypool@1.0.2: {}
|
5714 |
+
|
5715 |
+
tinyrainbow@2.0.0: {}
|
5716 |
+
|
5717 |
+
tinyspy@3.0.2: {}
|
5718 |
+
|
5719 |
+
tldts-core@6.1.86: {}
|
5720 |
+
|
5721 |
+
tldts@6.1.86:
|
5722 |
+
dependencies:
|
5723 |
+
tldts-core: 6.1.86
|
5724 |
+
|
5725 |
tmp@0.0.33:
|
5726 |
dependencies:
|
5727 |
os-tmpdir: 1.0.2
|
|
|
5732 |
|
5733 |
totalist@3.0.1: {}
|
5734 |
|
5735 |
+
tough-cookie@5.1.2:
|
5736 |
+
dependencies:
|
5737 |
+
tldts: 6.1.86
|
5738 |
+
|
5739 |
tr46@0.0.3: {}
|
5740 |
|
5741 |
+
tr46@5.1.1:
|
5742 |
+
dependencies:
|
5743 |
+
punycode: 2.3.1
|
5744 |
+
|
5745 |
trim-lines@3.0.1: {}
|
5746 |
|
5747 |
ts-api-utils@2.0.1(typescript@5.8.2):
|
|
|
5763 |
dependencies:
|
5764 |
prelude-ls: 1.2.1
|
5765 |
|
5766 |
+
type-fest@0.13.1: {}
|
5767 |
+
|
5768 |
type-fest@0.21.3: {}
|
5769 |
|
5770 |
type-fest@4.37.0: {}
|
|
|
5872 |
'@types/unist': 3.0.3
|
5873 |
vfile-message: 4.0.2
|
5874 |
|
5875 |
+
vite-node@3.1.4(@types/node@22.14.1)(lightningcss@1.29.1):
|
5876 |
+
dependencies:
|
5877 |
+
cac: 6.7.14
|
5878 |
+
debug: 4.4.0
|
5879 |
+
es-module-lexer: 1.7.0
|
5880 |
+
pathe: 2.0.3
|
5881 |
+
vite: 5.4.14(@types/node@22.14.1)(lightningcss@1.29.1)
|
5882 |
+
transitivePeerDependencies:
|
5883 |
+
- '@types/node'
|
5884 |
+
- less
|
5885 |
+
- lightningcss
|
5886 |
+
- sass
|
5887 |
+
- sass-embedded
|
5888 |
+
- stylus
|
5889 |
+
- sugarss
|
5890 |
+
- supports-color
|
5891 |
+
- terser
|
5892 |
+
|
5893 |
vite@5.4.14(@types/node@22.14.1)(lightningcss@1.29.1):
|
5894 |
dependencies:
|
5895 |
esbuild: 0.21.5
|
|
|
5916 |
optionalDependencies:
|
5917 |
vite: 5.4.14(@types/node@22.14.1)(lightningcss@1.29.1)
|
5918 |
|
5919 |
+
vitest@3.1.4(@types/node@22.14.1)(jsdom@26.1.0)(lightningcss@1.29.1):
|
5920 |
+
dependencies:
|
5921 |
+
'@vitest/expect': 3.1.4
|
5922 |
+
'@vitest/mocker': 3.1.4(vite@5.4.14(@types/node@22.14.1)(lightningcss@1.29.1))
|
5923 |
+
'@vitest/pretty-format': 3.1.4
|
5924 |
+
'@vitest/runner': 3.1.4
|
5925 |
+
'@vitest/snapshot': 3.1.4
|
5926 |
+
'@vitest/spy': 3.1.4
|
5927 |
+
'@vitest/utils': 3.1.4
|
5928 |
+
chai: 5.2.0
|
5929 |
+
debug: 4.4.0
|
5930 |
+
expect-type: 1.2.1
|
5931 |
+
magic-string: 0.30.17
|
5932 |
+
pathe: 2.0.3
|
5933 |
+
std-env: 3.9.0
|
5934 |
+
tinybench: 2.9.0
|
5935 |
+
tinyexec: 0.3.2
|
5936 |
+
tinyglobby: 0.2.13
|
5937 |
+
tinypool: 1.0.2
|
5938 |
+
tinyrainbow: 2.0.0
|
5939 |
+
vite: 5.4.14(@types/node@22.14.1)(lightningcss@1.29.1)
|
5940 |
+
vite-node: 3.1.4(@types/node@22.14.1)(lightningcss@1.29.1)
|
5941 |
+
why-is-node-running: 2.3.0
|
5942 |
+
optionalDependencies:
|
5943 |
+
'@types/node': 22.14.1
|
5944 |
+
jsdom: 26.1.0
|
5945 |
+
transitivePeerDependencies:
|
5946 |
+
- less
|
5947 |
+
- lightningcss
|
5948 |
+
- msw
|
5949 |
+
- sass
|
5950 |
+
- sass-embedded
|
5951 |
+
- stylus
|
5952 |
+
- sugarss
|
5953 |
+
- supports-color
|
5954 |
+
- terser
|
5955 |
+
|
5956 |
+
w3c-xmlserializer@5.0.0:
|
5957 |
+
dependencies:
|
5958 |
+
xml-name-validator: 5.0.0
|
5959 |
+
|
5960 |
wcwidth@1.0.1:
|
5961 |
dependencies:
|
5962 |
defaults: 1.0.4
|
|
|
5965 |
|
5966 |
webidl-conversions@3.0.1: {}
|
5967 |
|
5968 |
+
webidl-conversions@7.0.0: {}
|
5969 |
+
|
5970 |
webpack-virtual-modules@0.6.2: {}
|
5971 |
|
5972 |
+
whatwg-encoding@3.1.1:
|
5973 |
+
dependencies:
|
5974 |
+
iconv-lite: 0.6.3
|
5975 |
+
|
5976 |
+
whatwg-mimetype@4.0.0: {}
|
5977 |
+
|
5978 |
+
whatwg-url@14.2.0:
|
5979 |
+
dependencies:
|
5980 |
+
tr46: 5.1.1
|
5981 |
+
webidl-conversions: 7.0.0
|
5982 |
+
|
5983 |
whatwg-url@5.0.0:
|
5984 |
dependencies:
|
5985 |
tr46: 0.0.3
|
|
|
5993 |
dependencies:
|
5994 |
isexe: 3.1.1
|
5995 |
|
5996 |
+
why-is-node-running@2.3.0:
|
5997 |
+
dependencies:
|
5998 |
+
siginfo: 2.0.0
|
5999 |
+
stackback: 0.0.2
|
6000 |
+
|
6001 |
word-wrap@1.2.5: {}
|
6002 |
|
6003 |
wrap-ansi@6.2.0:
|
|
|
6006 |
string-width: 4.2.3
|
6007 |
strip-ansi: 6.0.1
|
6008 |
|
6009 |
+
ws@8.18.2: {}
|
6010 |
+
|
6011 |
+
xml-name-validator@5.0.0: {}
|
6012 |
+
|
6013 |
+
xmlchars@2.2.0: {}
|
6014 |
+
|
6015 |
yallist@5.0.0: {}
|
6016 |
|
6017 |
yaml@1.10.2: {}
|
src/lib/components/inference-playground/code-snippets.svelte
CHANGED
@@ -1,10 +1,10 @@
|
|
1 |
<script lang="ts">
|
2 |
-
import {
|
|
|
3 |
import { token } from "$lib/state/token.svelte.js";
|
4 |
-
import { isCustomModel
|
5 |
import { copyToClipboard } from "$lib/utils/copy.js";
|
6 |
import { entries, fromEntries, keys } from "$lib/utils/object.svelte.js";
|
7 |
-
import type { InferenceProvider } from "@huggingface/inference";
|
8 |
import hljs from "highlight.js/lib/core";
|
9 |
import http from "highlight.js/lib/languages/http";
|
10 |
import javascript from "highlight.js/lib/languages/javascript";
|
@@ -17,7 +17,6 @@
|
|
17 |
type GetInferenceSnippetReturn,
|
18 |
type InferenceSnippetLanguage,
|
19 |
} from "./utils.svelte.js";
|
20 |
-
import { structuredForbiddenProviders } from "$lib/state/models.svelte";
|
21 |
|
22 |
hljs.registerLanguage("javascript", javascript);
|
23 |
hljs.registerLanguage("python", python);
|
@@ -62,21 +61,9 @@
|
|
62 |
}
|
63 |
|
64 |
if (isCustomModel(model)) {
|
65 |
-
const snippets = getInferenceSnippet(
|
66 |
-
{
|
67 |
-
...emptyModel,
|
68 |
-
_id: model._id,
|
69 |
-
id: model.id,
|
70 |
-
pipeline_tag: PipelineTag.TextGeneration,
|
71 |
-
tags: ["conversational"],
|
72 |
-
},
|
73 |
-
"hf-inference",
|
74 |
-
lang,
|
75 |
-
tokenStr,
|
76 |
-
opts
|
77 |
-
);
|
78 |
return snippets
|
79 |
-
.filter(s => s.client.startsWith("open") || lang === "
|
80 |
.map(s => {
|
81 |
return {
|
82 |
...s,
|
@@ -87,7 +74,7 @@
|
|
87 |
});
|
88 |
}
|
89 |
|
90 |
-
return getInferenceSnippet(
|
91 |
}
|
92 |
|
93 |
// { javascript: 0, python: 0, http: 0 } at first
|
@@ -107,7 +94,7 @@
|
|
107 |
|
108 |
function highlight(code?: string, language?: InferenceSnippetLanguage) {
|
109 |
if (!code || !language) return "";
|
110 |
-
return hljs.highlight(code, { language: language === "
|
111 |
}
|
112 |
|
113 |
const tokenStr = $derived.by(() => {
|
@@ -123,7 +110,7 @@
|
|
123 |
const snippetsByLang = $derived({
|
124 |
javascript: getSnippet({ lang: "js", tokenStr, conversation }),
|
125 |
python: getSnippet({ lang: "python", tokenStr, conversation }),
|
126 |
-
http: getSnippet({ lang: "
|
127 |
} as Record<Language, GetInferenceSnippetReturn>);
|
128 |
|
129 |
const selectedSnippet = $derived(snippetsByLang[lang][selectedSnippetIdxByLang[lang]]);
|
|
|
1 |
<script lang="ts">
|
2 |
+
import { type ConversationClass } from "$lib/state/conversations.svelte";
|
3 |
+
import { structuredForbiddenProviders } from "$lib/state/models.svelte";
|
4 |
import { token } from "$lib/state/token.svelte.js";
|
5 |
+
import { isCustomModel } from "$lib/types.js";
|
6 |
import { copyToClipboard } from "$lib/utils/copy.js";
|
7 |
import { entries, fromEntries, keys } from "$lib/utils/object.svelte.js";
|
|
|
8 |
import hljs from "highlight.js/lib/core";
|
9 |
import http from "highlight.js/lib/languages/http";
|
10 |
import javascript from "highlight.js/lib/languages/javascript";
|
|
|
17 |
type GetInferenceSnippetReturn,
|
18 |
type InferenceSnippetLanguage,
|
19 |
} from "./utils.svelte.js";
|
|
|
20 |
|
21 |
hljs.registerLanguage("javascript", javascript);
|
22 |
hljs.registerLanguage("python", python);
|
|
|
61 |
}
|
62 |
|
63 |
if (isCustomModel(model)) {
|
64 |
+
const snippets = getInferenceSnippet(conversation, lang, tokenStr, opts);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
65 |
return snippets
|
66 |
+
.filter(s => s.client.startsWith("open") || lang === "sh")
|
67 |
.map(s => {
|
68 |
return {
|
69 |
...s,
|
|
|
74 |
});
|
75 |
}
|
76 |
|
77 |
+
return getInferenceSnippet(conversation, lang, tokenStr, opts);
|
78 |
}
|
79 |
|
80 |
// { javascript: 0, python: 0, http: 0 } at first
|
|
|
94 |
|
95 |
function highlight(code?: string, language?: InferenceSnippetLanguage) {
|
96 |
if (!code || !language) return "";
|
97 |
+
return hljs.highlight(code, { language: language === "sh" ? "http" : language }).value;
|
98 |
}
|
99 |
|
100 |
const tokenStr = $derived.by(() => {
|
|
|
110 |
const snippetsByLang = $derived({
|
111 |
javascript: getSnippet({ lang: "js", tokenStr, conversation }),
|
112 |
python: getSnippet({ lang: "python", tokenStr, conversation }),
|
113 |
+
http: getSnippet({ lang: "sh", tokenStr, conversation }),
|
114 |
} as Record<Language, GetInferenceSnippetReturn>);
|
115 |
|
116 |
const selectedSnippet = $derived(snippetsByLang[lang][selectedSnippetIdxByLang[lang]]);
|
src/lib/components/inference-playground/snippets/curl.svelte.ts
DELETED
@@ -1,191 +0,0 @@
|
|
1 |
-
import type { ConversationEntityMembers } from "$lib/state/conversations.svelte";
|
2 |
-
import type { ChatCompletionInputMessage, GenerationParameters, PipelineType } from "@huggingface/tasks";
|
3 |
-
import {
|
4 |
-
HF_HUB_INFERENCE_PROXY_TEMPLATE,
|
5 |
-
type InferenceSnippet,
|
6 |
-
type ModelDataMinimal,
|
7 |
-
type SnippetInferenceProvider,
|
8 |
-
getModelInputSnippet,
|
9 |
-
stringifyGenerationConfig,
|
10 |
-
stringifyMessages,
|
11 |
-
} from "@huggingface/tasks";
|
12 |
-
|
13 |
-
export const snippetBasic = (
|
14 |
-
model: ModelDataMinimal,
|
15 |
-
accessToken: string,
|
16 |
-
provider: SnippetInferenceProvider
|
17 |
-
): InferenceSnippet[] => {
|
18 |
-
if (provider !== "hf-inference") {
|
19 |
-
return [];
|
20 |
-
}
|
21 |
-
return [
|
22 |
-
{
|
23 |
-
client: "curl",
|
24 |
-
content: `\
|
25 |
-
curl https://router.huggingface.co/hf-inference/models/${model.id} \\
|
26 |
-
-X POST \\
|
27 |
-
-d '{"inputs": ${getModelInputSnippet(model, true)}}' \\
|
28 |
-
-H 'Content-Type: application/json' \\
|
29 |
-
-H 'Authorization: Bearer ${accessToken || `{API_TOKEN}`}'`,
|
30 |
-
},
|
31 |
-
];
|
32 |
-
};
|
33 |
-
|
34 |
-
export const snippetTextGeneration = (
|
35 |
-
model: ModelDataMinimal,
|
36 |
-
accessToken: string,
|
37 |
-
provider: SnippetInferenceProvider,
|
38 |
-
providerModelId?: string,
|
39 |
-
opts?: {
|
40 |
-
streaming?: boolean;
|
41 |
-
messages?: ChatCompletionInputMessage[];
|
42 |
-
temperature?: GenerationParameters["temperature"];
|
43 |
-
max_tokens?: GenerationParameters["max_tokens"];
|
44 |
-
top_p?: GenerationParameters["top_p"];
|
45 |
-
structured_output?: ConversationEntityMembers["structuredOutput"];
|
46 |
-
}
|
47 |
-
): InferenceSnippet[] => {
|
48 |
-
if (model.tags.includes("conversational")) {
|
49 |
-
const baseUrl =
|
50 |
-
provider === "hf-inference"
|
51 |
-
? `https://router.huggingface.co/hf-inference/models/${model.id}/v1/chat/completions`
|
52 |
-
: HF_HUB_INFERENCE_PROXY_TEMPLATE.replace("{{PROVIDER}}", provider) + "/v1/chat/completions";
|
53 |
-
const modelId = providerModelId ?? model.id;
|
54 |
-
|
55 |
-
// Conversational model detected, so we display a code snippet that features the Messages API
|
56 |
-
const streaming = opts?.streaming ?? true;
|
57 |
-
const exampleMessages = getModelInputSnippet(model) as ChatCompletionInputMessage[];
|
58 |
-
const messages = opts?.messages ?? exampleMessages;
|
59 |
-
|
60 |
-
const config = {
|
61 |
-
...(opts?.temperature ? { temperature: opts.temperature } : undefined),
|
62 |
-
max_tokens: opts?.max_tokens ?? 500,
|
63 |
-
...(opts?.top_p ? { top_p: opts.top_p } : undefined),
|
64 |
-
...(opts?.structured_output?.enabled
|
65 |
-
? {
|
66 |
-
response_format: JSON.stringify(
|
67 |
-
{
|
68 |
-
type: "json_schema",
|
69 |
-
json_schema: JSON.parse(opts.structured_output.schema ?? ""),
|
70 |
-
},
|
71 |
-
null,
|
72 |
-
6
|
73 |
-
),
|
74 |
-
}
|
75 |
-
: undefined),
|
76 |
-
};
|
77 |
-
return [
|
78 |
-
{
|
79 |
-
client: "curl",
|
80 |
-
content: `curl '${baseUrl}' \\
|
81 |
-
-H 'Authorization: Bearer ${accessToken || `{API_TOKEN}`}' \\
|
82 |
-
-H 'Content-Type: application/json' \\
|
83 |
-
--data '{
|
84 |
-
"model": "${modelId}",
|
85 |
-
"messages": ${stringifyMessages(messages, {
|
86 |
-
indent: "\t",
|
87 |
-
attributeKeyQuotes: true,
|
88 |
-
customContentEscaper: str => str.replace(/'/g, "'\\''"),
|
89 |
-
})},
|
90 |
-
${stringifyGenerationConfig(config, {
|
91 |
-
indent: "\n ",
|
92 |
-
attributeKeyQuotes: true,
|
93 |
-
attributeValueConnector: ": ",
|
94 |
-
})}
|
95 |
-
"stream": ${!!streaming}
|
96 |
-
}'`,
|
97 |
-
},
|
98 |
-
];
|
99 |
-
} else {
|
100 |
-
return snippetBasic(model, accessToken, provider);
|
101 |
-
}
|
102 |
-
};
|
103 |
-
|
104 |
-
export const snippetZeroShotClassification = (
|
105 |
-
model: ModelDataMinimal,
|
106 |
-
accessToken: string,
|
107 |
-
provider: SnippetInferenceProvider
|
108 |
-
): InferenceSnippet[] => {
|
109 |
-
if (provider !== "hf-inference") {
|
110 |
-
return [];
|
111 |
-
}
|
112 |
-
return [
|
113 |
-
{
|
114 |
-
client: "curl",
|
115 |
-
content: `curl https://router.huggingface.co/hf-inference/models/${model.id} \\
|
116 |
-
-X POST \\
|
117 |
-
-d '{"inputs": ${getModelInputSnippet(model, true)}, "parameters": {"candidate_labels": ["refund", "legal", "faq"]}}' \\
|
118 |
-
-H 'Content-Type: application/json' \\
|
119 |
-
-H 'Authorization: Bearer ${accessToken || `{API_TOKEN}`}'`,
|
120 |
-
},
|
121 |
-
];
|
122 |
-
};
|
123 |
-
|
124 |
-
export const snippetFile = (
|
125 |
-
model: ModelDataMinimal,
|
126 |
-
accessToken: string,
|
127 |
-
provider: SnippetInferenceProvider
|
128 |
-
): InferenceSnippet[] => {
|
129 |
-
if (provider !== "hf-inference") {
|
130 |
-
return [];
|
131 |
-
}
|
132 |
-
return [
|
133 |
-
{
|
134 |
-
client: "curl",
|
135 |
-
content: `curl https://router.huggingface.co/hf-inference/models/${model.id} \\
|
136 |
-
-X POST \\
|
137 |
-
--data-binary '@${getModelInputSnippet(model, true, true)}' \\
|
138 |
-
-H 'Authorization: Bearer ${accessToken || `{API_TOKEN}`}'`,
|
139 |
-
},
|
140 |
-
];
|
141 |
-
};
|
142 |
-
|
143 |
-
export const curlSnippets: Partial<
|
144 |
-
Record<
|
145 |
-
PipelineType,
|
146 |
-
(
|
147 |
-
model: ModelDataMinimal,
|
148 |
-
accessToken: string,
|
149 |
-
provider: SnippetInferenceProvider,
|
150 |
-
providerModelId?: string,
|
151 |
-
opts?: Record<string, unknown>
|
152 |
-
) => InferenceSnippet[]
|
153 |
-
>
|
154 |
-
> = {
|
155 |
-
// Same order as in tasks/src/pipelines.ts
|
156 |
-
"text-classification": snippetBasic,
|
157 |
-
"token-classification": snippetBasic,
|
158 |
-
"table-question-answering": snippetBasic,
|
159 |
-
"question-answering": snippetBasic,
|
160 |
-
"zero-shot-classification": snippetZeroShotClassification,
|
161 |
-
"translation": snippetBasic,
|
162 |
-
"summarization": snippetBasic,
|
163 |
-
"feature-extraction": snippetBasic,
|
164 |
-
"text-generation": snippetTextGeneration,
|
165 |
-
"image-text-to-text": snippetTextGeneration,
|
166 |
-
"text2text-generation": snippetBasic,
|
167 |
-
"fill-mask": snippetBasic,
|
168 |
-
"sentence-similarity": snippetBasic,
|
169 |
-
"automatic-speech-recognition": snippetFile,
|
170 |
-
"text-to-image": snippetBasic,
|
171 |
-
"text-to-speech": snippetBasic,
|
172 |
-
"text-to-audio": snippetBasic,
|
173 |
-
"audio-to-audio": snippetFile,
|
174 |
-
"audio-classification": snippetFile,
|
175 |
-
"image-classification": snippetFile,
|
176 |
-
"image-to-text": snippetFile,
|
177 |
-
"object-detection": snippetFile,
|
178 |
-
"image-segmentation": snippetFile,
|
179 |
-
};
|
180 |
-
|
181 |
-
export function getCurlInferenceSnippet(
|
182 |
-
model: ModelDataMinimal,
|
183 |
-
accessToken: string,
|
184 |
-
provider: SnippetInferenceProvider,
|
185 |
-
providerModelId?: string,
|
186 |
-
opts?: Record<string, unknown>
|
187 |
-
): InferenceSnippet[] {
|
188 |
-
return model.pipeline_tag && model.pipeline_tag in curlSnippets
|
189 |
-
? (curlSnippets[model.pipeline_tag]?.(model, accessToken, provider, providerModelId, opts) ?? [])
|
190 |
-
: [];
|
191 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/lib/components/inference-playground/snippets/index.svelte.ts
DELETED
@@ -1,5 +0,0 @@
|
|
1 |
-
import * as curl from "./curl.svelte.js";
|
2 |
-
import * as python from "./python.svelte.js";
|
3 |
-
import * as js from "./js.svelte.js";
|
4 |
-
|
5 |
-
export const snippets = { curl, python, js };
|
|
|
|
|
|
|
|
|
|
|
|
src/lib/components/inference-playground/snippets/js.svelte.ts
DELETED
@@ -1,489 +0,0 @@
|
|
1 |
-
import type { ConversationEntityMembers } from "$lib/state/conversations.svelte";
|
2 |
-
import type { ChatCompletionInputMessage, GenerationParameters, PipelineType, WidgetType } from "@huggingface/tasks";
|
3 |
-
import {
|
4 |
-
getModelInputSnippet,
|
5 |
-
openAIbaseUrl,
|
6 |
-
stringifyGenerationConfig,
|
7 |
-
stringifyMessages,
|
8 |
-
type InferenceSnippet,
|
9 |
-
type ModelDataMinimal,
|
10 |
-
type SnippetInferenceProvider,
|
11 |
-
} from "@huggingface/tasks";
|
12 |
-
|
13 |
-
const HFJS_METHODS: Partial<Record<WidgetType, string>> = {
|
14 |
-
"text-classification": "textClassification",
|
15 |
-
"token-classification": "tokenClassification",
|
16 |
-
"table-question-answering": "tableQuestionAnswering",
|
17 |
-
"question-answering": "questionAnswering",
|
18 |
-
"translation": "translation",
|
19 |
-
"summarization": "summarization",
|
20 |
-
"feature-extraction": "featureExtraction",
|
21 |
-
"text-generation": "textGeneration",
|
22 |
-
"text2text-generation": "textGeneration",
|
23 |
-
"fill-mask": "fillMask",
|
24 |
-
"sentence-similarity": "sentenceSimilarity",
|
25 |
-
};
|
26 |
-
|
27 |
-
export const snippetBasic = (
|
28 |
-
model: ModelDataMinimal,
|
29 |
-
accessToken: string,
|
30 |
-
provider: SnippetInferenceProvider
|
31 |
-
): InferenceSnippet[] => {
|
32 |
-
return [
|
33 |
-
...(model.pipeline_tag && model.pipeline_tag in HFJS_METHODS
|
34 |
-
? [
|
35 |
-
{
|
36 |
-
client: "huggingface.js",
|
37 |
-
content: `\
|
38 |
-
import { HfInference } from "@huggingface/inference";
|
39 |
-
|
40 |
-
const client = new HfInference("${accessToken || `{API_TOKEN}`}");
|
41 |
-
|
42 |
-
const output = await client.${HFJS_METHODS[model.pipeline_tag]}({
|
43 |
-
model: "${model.id}",
|
44 |
-
inputs: ${getModelInputSnippet(model)},
|
45 |
-
provider: "${provider}",
|
46 |
-
});
|
47 |
-
|
48 |
-
console.log(output);
|
49 |
-
`,
|
50 |
-
},
|
51 |
-
]
|
52 |
-
: []),
|
53 |
-
{
|
54 |
-
client: "fetch",
|
55 |
-
content: `\
|
56 |
-
async function query(data) {
|
57 |
-
const response = await fetch(
|
58 |
-
"https://router.huggingface.co/hf-inference/models/${model.id}",
|
59 |
-
{
|
60 |
-
headers: {
|
61 |
-
Authorization: "Bearer ${accessToken || `{API_TOKEN}`}",
|
62 |
-
"Content-Type": "application/json",
|
63 |
-
},
|
64 |
-
method: "POST",
|
65 |
-
body: JSON.stringify(data),
|
66 |
-
}
|
67 |
-
);
|
68 |
-
const result = await response.json();
|
69 |
-
return result;
|
70 |
-
}
|
71 |
-
|
72 |
-
query({"inputs": ${getModelInputSnippet(model)}}).then((response) => {
|
73 |
-
console.log(JSON.stringify(response));
|
74 |
-
});`,
|
75 |
-
},
|
76 |
-
];
|
77 |
-
};
|
78 |
-
|
79 |
-
export const snippetTextGeneration = (
|
80 |
-
model: ModelDataMinimal,
|
81 |
-
accessToken: string,
|
82 |
-
provider: SnippetInferenceProvider,
|
83 |
-
providerModelId?: string,
|
84 |
-
opts?: {
|
85 |
-
streaming?: boolean;
|
86 |
-
messages?: ChatCompletionInputMessage[];
|
87 |
-
temperature?: GenerationParameters["temperature"];
|
88 |
-
max_tokens?: GenerationParameters["max_tokens"];
|
89 |
-
top_p?: GenerationParameters["top_p"];
|
90 |
-
structured_output?: ConversationEntityMembers["structuredOutput"];
|
91 |
-
}
|
92 |
-
): InferenceSnippet[] => {
|
93 |
-
if (model.tags.includes("conversational")) {
|
94 |
-
// Conversational model detected, so we display a code snippet that features the Messages API
|
95 |
-
const streaming = opts?.streaming ?? true;
|
96 |
-
const exampleMessages = getModelInputSnippet(model) as ChatCompletionInputMessage[];
|
97 |
-
const messages = opts?.messages ?? exampleMessages;
|
98 |
-
const messagesStr = stringifyMessages(messages, { indent: "\t" });
|
99 |
-
|
100 |
-
const config = {
|
101 |
-
...(opts?.temperature ? { temperature: opts.temperature } : undefined),
|
102 |
-
max_tokens: opts?.max_tokens ?? 500,
|
103 |
-
...(opts?.top_p ? { top_p: opts.top_p } : undefined),
|
104 |
-
...(opts?.structured_output?.enabled
|
105 |
-
? {
|
106 |
-
response_format: JSON.stringify(
|
107 |
-
{
|
108 |
-
type: "json_schema",
|
109 |
-
json_schema: JSON.parse(opts.structured_output.schema ?? ""),
|
110 |
-
},
|
111 |
-
null,
|
112 |
-
6
|
113 |
-
),
|
114 |
-
}
|
115 |
-
: undefined),
|
116 |
-
};
|
117 |
-
const configStr = stringifyGenerationConfig(config, {
|
118 |
-
indent: "\n\t",
|
119 |
-
attributeValueConnector: ": ",
|
120 |
-
});
|
121 |
-
|
122 |
-
if (streaming) {
|
123 |
-
return [
|
124 |
-
{
|
125 |
-
client: "huggingface.js",
|
126 |
-
content: `import { HfInference } from "@huggingface/inference";
|
127 |
-
|
128 |
-
const client = new HfInference("${accessToken || `{API_TOKEN}`}");
|
129 |
-
|
130 |
-
let out = "";
|
131 |
-
|
132 |
-
const stream = client.chatCompletionStream({
|
133 |
-
model: "${model.id}",
|
134 |
-
messages: ${messagesStr},
|
135 |
-
provider: "${provider}",
|
136 |
-
${configStr}
|
137 |
-
});
|
138 |
-
|
139 |
-
for await (const chunk of stream) {
|
140 |
-
if (chunk.choices && chunk.choices.length > 0) {
|
141 |
-
const newContent = chunk.choices[0].delta.content;
|
142 |
-
out += newContent;
|
143 |
-
console.log(newContent);
|
144 |
-
}
|
145 |
-
}`,
|
146 |
-
},
|
147 |
-
{
|
148 |
-
client: "openai",
|
149 |
-
content: `import { OpenAI } from "openai";
|
150 |
-
|
151 |
-
const client = new OpenAI({
|
152 |
-
baseURL: "${openAIbaseUrl(provider)}",
|
153 |
-
apiKey: "${accessToken || `{API_TOKEN}`}"
|
154 |
-
});
|
155 |
-
data.
|
156 |
-
let out = "";
|
157 |
-
|
158 |
-
const stream = await client.chat.completions.create({
|
159 |
-
model: "${providerModelId ?? model.id}",
|
160 |
-
messages: ${messagesStr},
|
161 |
-
${configStr}
|
162 |
-
stream: true,
|
163 |
-
});
|
164 |
-
|
165 |
-
for await (const chunk of stream) {
|
166 |
-
if (chunk.choices && chunk.choices.length > 0) {
|
167 |
-
const newContent = chunk.choices[0].delta.content;
|
168 |
-
out += newContent;
|
169 |
-
console.log(newContent);
|
170 |
-
}
|
171 |
-
}`,
|
172 |
-
},
|
173 |
-
];
|
174 |
-
} else {
|
175 |
-
return [
|
176 |
-
{
|
177 |
-
client: "huggingface.js",
|
178 |
-
content: `import { HfInference } from "@huggingface/inference";
|
179 |
-
|
180 |
-
const client = new HfInference("${accessToken || `{API_TOKEN}`}");
|
181 |
-
|
182 |
-
const chatCompletion = await client.chatCompletion({
|
183 |
-
model: "${model.id}",
|
184 |
-
messages: ${messagesStr},
|
185 |
-
provider: "${provider}",
|
186 |
-
${configStr}
|
187 |
-
});
|
188 |
-
|
189 |
-
console.log(chatCompletion.choices[0].message);
|
190 |
-
`,
|
191 |
-
},
|
192 |
-
{
|
193 |
-
client: "openai",
|
194 |
-
content: `import { OpenAI } from "openai";
|
195 |
-
|
196 |
-
const client = new OpenAI({
|
197 |
-
baseURL: "${openAIbaseUrl(provider)}",
|
198 |
-
apiKey: "${accessToken || `{API_TOKEN}`}"
|
199 |
-
});
|
200 |
-
|
201 |
-
const chatCompletion = await client.chat.completions.create({
|
202 |
-
model: "${providerModelId ?? model.id}",
|
203 |
-
messages: ${messagesStr},
|
204 |
-
${configStr}
|
205 |
-
});
|
206 |
-
|
207 |
-
console.log(chatCompletion.choices[0].message);
|
208 |
-
`,
|
209 |
-
},
|
210 |
-
];
|
211 |
-
}
|
212 |
-
} else {
|
213 |
-
return snippetBasic(model, accessToken, provider);
|
214 |
-
}
|
215 |
-
};
|
216 |
-
|
217 |
-
export const snippetZeroShotClassification = (model: ModelDataMinimal, accessToken: string): InferenceSnippet[] => {
|
218 |
-
return [
|
219 |
-
{
|
220 |
-
client: "fetch",
|
221 |
-
content: `async function query(data) {
|
222 |
-
const response = await fetch(
|
223 |
-
"https://router.huggingface.co/hf-inference/models/${model.id}",
|
224 |
-
{
|
225 |
-
headers: {
|
226 |
-
Authorization: "Bearer ${accessToken || `{API_TOKEN}`}",
|
227 |
-
"Content-Type": "application/json",
|
228 |
-
},
|
229 |
-
method: "POST",
|
230 |
-
body: JSON.stringify(data),
|
231 |
-
}
|
232 |
-
);
|
233 |
-
const result = await response.json();
|
234 |
-
return result;
|
235 |
-
}
|
236 |
-
|
237 |
-
query({"inputs": ${getModelInputSnippet(
|
238 |
-
model
|
239 |
-
)}, "parameters": {"candidate_labels": ["refund", "legal", "faq"]}}).then((response) => {
|
240 |
-
console.log(JSON.stringify(response));
|
241 |
-
});`,
|
242 |
-
},
|
243 |
-
];
|
244 |
-
};
|
245 |
-
|
246 |
-
export const snippetTextToImage = (
|
247 |
-
model: ModelDataMinimal,
|
248 |
-
accessToken: string,
|
249 |
-
provider: SnippetInferenceProvider
|
250 |
-
): InferenceSnippet[] => {
|
251 |
-
return [
|
252 |
-
{
|
253 |
-
client: "huggingface.js",
|
254 |
-
content: `\
|
255 |
-
import { HfInference } from "@huggingface/inference";
|
256 |
-
|
257 |
-
const client = new HfInference("${accessToken || `{API_TOKEN}`}");
|
258 |
-
|
259 |
-
const image = await client.textToImage({
|
260 |
-
model: "${model.id}",
|
261 |
-
inputs: ${getModelInputSnippet(model)},
|
262 |
-
parameters: { num_inference_steps: 5 },
|
263 |
-
provider: "${provider}",
|
264 |
-
});
|
265 |
-
/// Use the generated image (it's a Blob)
|
266 |
-
`,
|
267 |
-
},
|
268 |
-
...(provider === "hf-inference"
|
269 |
-
? [
|
270 |
-
{
|
271 |
-
client: "fetch",
|
272 |
-
content: `async function query(data) {
|
273 |
-
const response = await fetch(
|
274 |
-
"https://router.huggingface.co/hf-inference/models/${model.id}",
|
275 |
-
{
|
276 |
-
headers: {
|
277 |
-
Authorization: "Bearer ${accessToken || `{API_TOKEN}`}",
|
278 |
-
"Content-Type": "application/json",
|
279 |
-
},
|
280 |
-
method: "POST",
|
281 |
-
body: JSON.stringify(data),
|
282 |
-
}
|
283 |
-
);
|
284 |
-
const result = await response.blob();
|
285 |
-
return result;
|
286 |
-
}
|
287 |
-
query({"inputs": ${getModelInputSnippet(model)}}).then((response) => {
|
288 |
-
// Use image
|
289 |
-
});`,
|
290 |
-
},
|
291 |
-
]
|
292 |
-
: []),
|
293 |
-
];
|
294 |
-
};
|
295 |
-
|
296 |
-
export const snippetTextToVideo = (
|
297 |
-
model: ModelDataMinimal,
|
298 |
-
accessToken: string,
|
299 |
-
provider: SnippetInferenceProvider
|
300 |
-
): InferenceSnippet[] => {
|
301 |
-
return ["fal-ai", "replicate"].includes(provider)
|
302 |
-
? [
|
303 |
-
{
|
304 |
-
client: "huggingface.js",
|
305 |
-
content: `\
|
306 |
-
import { HfInference } from "@huggingface/inference";
|
307 |
-
|
308 |
-
const client = new HfInference("${accessToken || `{API_TOKEN}`}");
|
309 |
-
|
310 |
-
const video = await client.textToVideo({
|
311 |
-
model: "${model.id}",
|
312 |
-
provider: "${provider}",
|
313 |
-
inputs: ${getModelInputSnippet(model)},
|
314 |
-
parameters: { num_inference_steps: 5 },
|
315 |
-
});
|
316 |
-
// Use the generated video (it's a Blob)
|
317 |
-
`,
|
318 |
-
},
|
319 |
-
]
|
320 |
-
: [];
|
321 |
-
};
|
322 |
-
|
323 |
-
export const snippetTextToAudio = (
|
324 |
-
model: ModelDataMinimal,
|
325 |
-
accessToken: string,
|
326 |
-
provider: SnippetInferenceProvider
|
327 |
-
): InferenceSnippet[] => {
|
328 |
-
if (provider !== "hf-inference") {
|
329 |
-
return [];
|
330 |
-
}
|
331 |
-
const commonSnippet = `async function query(data) {
|
332 |
-
const response = await fetch(
|
333 |
-
"https://router.huggingface.co/hf-inference/models/${model.id}",
|
334 |
-
{
|
335 |
-
headers: {
|
336 |
-
Authorization: "Bearer ${accessToken || `{API_TOKEN}`}",
|
337 |
-
"Content-Type": "application/json",
|
338 |
-
},
|
339 |
-
method: "POST",
|
340 |
-
body: JSON.stringify(data),
|
341 |
-
}
|
342 |
-
);`;
|
343 |
-
if (model.library_name === "transformers") {
|
344 |
-
return [
|
345 |
-
{
|
346 |
-
client: "fetch",
|
347 |
-
content:
|
348 |
-
commonSnippet +
|
349 |
-
`
|
350 |
-
const result = await response.blob();
|
351 |
-
return result;
|
352 |
-
}
|
353 |
-
query({"inputs": ${getModelInputSnippet(model)}}).then((response) => {
|
354 |
-
// Returns a byte object of the Audio wavform. Use it directly!
|
355 |
-
});`,
|
356 |
-
},
|
357 |
-
];
|
358 |
-
} else {
|
359 |
-
return [
|
360 |
-
{
|
361 |
-
client: "fetch",
|
362 |
-
content:
|
363 |
-
commonSnippet +
|
364 |
-
`
|
365 |
-
const result = await response.json();
|
366 |
-
return result;
|
367 |
-
}
|
368 |
-
|
369 |
-
query({"inputs": ${getModelInputSnippet(model)}}).then((response) => {
|
370 |
-
console.log(JSON.stringify(response));
|
371 |
-
});`,
|
372 |
-
},
|
373 |
-
];
|
374 |
-
}
|
375 |
-
};
|
376 |
-
|
377 |
-
export const snippetAutomaticSpeechRecognition = (
|
378 |
-
model: ModelDataMinimal,
|
379 |
-
accessToken: string,
|
380 |
-
provider: SnippetInferenceProvider
|
381 |
-
): InferenceSnippet[] => {
|
382 |
-
return [
|
383 |
-
{
|
384 |
-
client: "huggingface.js",
|
385 |
-
content: `\
|
386 |
-
import { HfInference } from "@huggingface/inference";
|
387 |
-
|
388 |
-
const client = new HfInference("${accessToken || `{API_TOKEN}`}");
|
389 |
-
|
390 |
-
const data = fs.readFileSync(${getModelInputSnippet(model)});
|
391 |
-
|
392 |
-
const output = await client.automaticSpeechRecognition({
|
393 |
-
data,
|
394 |
-
model: "${model.id}",
|
395 |
-
provider: "${provider}",
|
396 |
-
});
|
397 |
-
|
398 |
-
console.log(output);
|
399 |
-
`,
|
400 |
-
},
|
401 |
-
...(provider === "hf-inference" ? snippetFile(model, accessToken, provider) : []),
|
402 |
-
];
|
403 |
-
};
|
404 |
-
|
405 |
-
export const snippetFile = (
|
406 |
-
model: ModelDataMinimal,
|
407 |
-
accessToken: string,
|
408 |
-
provider: SnippetInferenceProvider
|
409 |
-
): InferenceSnippet[] => {
|
410 |
-
if (provider !== "hf-inference") {
|
411 |
-
return [];
|
412 |
-
}
|
413 |
-
return [
|
414 |
-
{
|
415 |
-
client: "fetch",
|
416 |
-
content: `async function query(filename) {
|
417 |
-
const data = fs.readFileSync(filename);
|
418 |
-
const response = await fetch(
|
419 |
-
"https://router.huggingface.co/hf-inference/models/${model.id}",
|
420 |
-
{
|
421 |
-
headers: {
|
422 |
-
Authorization: "Bearer ${accessToken || `{API_TOKEN}`}",
|
423 |
-
"Content-Type": "application/json",
|
424 |
-
},
|
425 |
-
method: "POST",
|
426 |
-
body: data,
|
427 |
-
}
|
428 |
-
);
|
429 |
-
const result = await response.json();
|
430 |
-
return result;
|
431 |
-
}
|
432 |
-
|
433 |
-
query(${getModelInputSnippet(model)}).then((response) => {
|
434 |
-
console.log(JSON.stringify(response));
|
435 |
-
});`,
|
436 |
-
},
|
437 |
-
];
|
438 |
-
};
|
439 |
-
|
440 |
-
export const jsSnippets: Partial<
|
441 |
-
Record<
|
442 |
-
PipelineType,
|
443 |
-
(
|
444 |
-
model: ModelDataMinimal,
|
445 |
-
accessToken: string,
|
446 |
-
provider: SnippetInferenceProvider,
|
447 |
-
providerModelId?: string,
|
448 |
-
opts?: Record<string, unknown>
|
449 |
-
) => InferenceSnippet[]
|
450 |
-
>
|
451 |
-
> = {
|
452 |
-
// Same order as in tasks/src/pipelines.ts
|
453 |
-
"text-classification": snippetBasic,
|
454 |
-
"token-classification": snippetBasic,
|
455 |
-
"table-question-answering": snippetBasic,
|
456 |
-
"question-answering": snippetBasic,
|
457 |
-
"zero-shot-classification": snippetZeroShotClassification,
|
458 |
-
"translation": snippetBasic,
|
459 |
-
"summarization": snippetBasic,
|
460 |
-
"feature-extraction": snippetBasic,
|
461 |
-
"text-generation": snippetTextGeneration,
|
462 |
-
"image-text-to-text": snippetTextGeneration,
|
463 |
-
"text2text-generation": snippetBasic,
|
464 |
-
"fill-mask": snippetBasic,
|
465 |
-
"sentence-similarity": snippetBasic,
|
466 |
-
"automatic-speech-recognition": snippetAutomaticSpeechRecognition,
|
467 |
-
"text-to-image": snippetTextToImage,
|
468 |
-
"text-to-video": snippetTextToVideo,
|
469 |
-
"text-to-speech": snippetTextToAudio,
|
470 |
-
"text-to-audio": snippetTextToAudio,
|
471 |
-
"audio-to-audio": snippetFile,
|
472 |
-
"audio-classification": snippetFile,
|
473 |
-
"image-classification": snippetFile,
|
474 |
-
"image-to-text": snippetFile,
|
475 |
-
"object-detection": snippetFile,
|
476 |
-
"image-segmentation": snippetFile,
|
477 |
-
};
|
478 |
-
|
479 |
-
export function getJsInferenceSnippet(
|
480 |
-
model: ModelDataMinimal,
|
481 |
-
accessToken: string,
|
482 |
-
provider: SnippetInferenceProvider,
|
483 |
-
providerModelId?: string,
|
484 |
-
opts?: Record<string, unknown>
|
485 |
-
): InferenceSnippet[] {
|
486 |
-
return model.pipeline_tag && model.pipeline_tag in jsSnippets
|
487 |
-
? (jsSnippets[model.pipeline_tag]?.(model, accessToken, provider, providerModelId, opts) ?? [])
|
488 |
-
: [];
|
489 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/lib/components/inference-playground/snippets/python.svelte.ts
DELETED
@@ -1,534 +0,0 @@
|
|
1 |
-
import type { ConversationEntityMembers } from "$lib/state/conversations.svelte";
|
2 |
-
import type { ChatCompletionInputMessage, GenerationParameters, PipelineType, WidgetType } from "@huggingface/tasks";
|
3 |
-
import {
|
4 |
-
getModelInputSnippet,
|
5 |
-
openAIbaseUrl,
|
6 |
-
stringifyGenerationConfig,
|
7 |
-
stringifyMessages,
|
8 |
-
type InferenceSnippet,
|
9 |
-
type ModelDataMinimal,
|
10 |
-
type SnippetInferenceProvider,
|
11 |
-
} from "@huggingface/tasks";
|
12 |
-
|
13 |
-
const HFH_INFERENCE_CLIENT_METHODS: Partial<Record<WidgetType, string>> = {
|
14 |
-
"audio-classification": "audio_classification",
|
15 |
-
"audio-to-audio": "audio_to_audio",
|
16 |
-
"automatic-speech-recognition": "automatic_speech_recognition",
|
17 |
-
"text-to-speech": "text_to_speech",
|
18 |
-
"image-classification": "image_classification",
|
19 |
-
"image-segmentation": "image_segmentation",
|
20 |
-
"image-to-image": "image_to_image",
|
21 |
-
"image-to-text": "image_to_text",
|
22 |
-
"object-detection": "object_detection",
|
23 |
-
"text-to-image": "text_to_image",
|
24 |
-
"text-to-video": "text_to_video",
|
25 |
-
"zero-shot-image-classification": "zero_shot_image_classification",
|
26 |
-
"document-question-answering": "document_question_answering",
|
27 |
-
"visual-question-answering": "visual_question_answering",
|
28 |
-
"feature-extraction": "feature_extraction",
|
29 |
-
"fill-mask": "fill_mask",
|
30 |
-
"question-answering": "question_answering",
|
31 |
-
"sentence-similarity": "sentence_similarity",
|
32 |
-
"summarization": "summarization",
|
33 |
-
"table-question-answering": "table_question_answering",
|
34 |
-
"text-classification": "text_classification",
|
35 |
-
"text-generation": "text_generation",
|
36 |
-
"token-classification": "token_classification",
|
37 |
-
"translation": "translation",
|
38 |
-
"zero-shot-classification": "zero_shot_classification",
|
39 |
-
"tabular-classification": "tabular_classification",
|
40 |
-
"tabular-regression": "tabular_regression",
|
41 |
-
};
|
42 |
-
|
43 |
-
const snippetImportInferenceClient = (accessToken: string, provider: SnippetInferenceProvider): string =>
|
44 |
-
`\
|
45 |
-
from huggingface_hub import InferenceClient
|
46 |
-
|
47 |
-
client = InferenceClient(
|
48 |
-
provider="${provider}",
|
49 |
-
api_key="${accessToken || "{API_TOKEN}"}"
|
50 |
-
)`;
|
51 |
-
|
52 |
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
53 |
-
function toPythonDict(obj: any, indent: number = 6, level: number = 0): string {
|
54 |
-
const pad = (lvl: number) => " ".repeat(indent * lvl);
|
55 |
-
|
56 |
-
if (obj === null) {
|
57 |
-
return "None";
|
58 |
-
}
|
59 |
-
if (typeof obj === "string") {
|
60 |
-
// Escape single quotes and backslashes
|
61 |
-
return `'${obj.replace(/\\/g, "\\\\").replace(/'/g, "\\'")}'`;
|
62 |
-
}
|
63 |
-
if (typeof obj === "number" || typeof obj === "bigint") {
|
64 |
-
return obj.toString();
|
65 |
-
}
|
66 |
-
if (typeof obj === "boolean") {
|
67 |
-
return obj ? "True" : "False";
|
68 |
-
}
|
69 |
-
if (Array.isArray(obj)) {
|
70 |
-
if (obj.length === 0) return "[]";
|
71 |
-
const items = obj.map(item => `${pad(level + 1)}${toPythonDict(item, indent, level + 1)}`).join(",\n");
|
72 |
-
return `[\n${items}\n${pad(level)}]`;
|
73 |
-
}
|
74 |
-
if (typeof obj === "object") {
|
75 |
-
const keys = Object.keys(obj);
|
76 |
-
if (keys.length === 0) return "{}";
|
77 |
-
const items = keys
|
78 |
-
.map(key => `${pad(level + 1)}'${key}': ${toPythonDict(obj[key], indent, level + 1)}`)
|
79 |
-
.join(",\n");
|
80 |
-
return `{\n${items}\n${pad(level)}}`;
|
81 |
-
}
|
82 |
-
// Fallback for undefined or functions
|
83 |
-
return "None";
|
84 |
-
}
|
85 |
-
|
86 |
-
export const snippetConversational = (
|
87 |
-
model: ModelDataMinimal,
|
88 |
-
accessToken: string,
|
89 |
-
provider: SnippetInferenceProvider,
|
90 |
-
providerModelId?: string,
|
91 |
-
opts?: {
|
92 |
-
streaming?: boolean;
|
93 |
-
messages?: ChatCompletionInputMessage[];
|
94 |
-
temperature?: GenerationParameters["temperature"];
|
95 |
-
max_tokens?: GenerationParameters["max_tokens"];
|
96 |
-
top_p?: GenerationParameters["top_p"];
|
97 |
-
structured_output?: ConversationEntityMembers["structuredOutput"];
|
98 |
-
}
|
99 |
-
): InferenceSnippet[] => {
|
100 |
-
const streaming = opts?.streaming ?? true;
|
101 |
-
const exampleMessages = getModelInputSnippet(model) as ChatCompletionInputMessage[];
|
102 |
-
const messages = opts?.messages ?? exampleMessages;
|
103 |
-
const messagesStr = stringifyMessages(messages, { attributeKeyQuotes: true });
|
104 |
-
|
105 |
-
const config = {
|
106 |
-
...(opts?.temperature ? { temperature: opts.temperature } : undefined),
|
107 |
-
max_tokens: opts?.max_tokens ?? 500,
|
108 |
-
...(opts?.top_p ? { top_p: opts.top_p } : undefined),
|
109 |
-
...(opts?.structured_output?.enabled
|
110 |
-
? {
|
111 |
-
response_format: toPythonDict(
|
112 |
-
{
|
113 |
-
type: "json_schema",
|
114 |
-
json_schema: JSON.parse(opts.structured_output.schema ?? ""),
|
115 |
-
},
|
116 |
-
6
|
117 |
-
),
|
118 |
-
}
|
119 |
-
: undefined),
|
120 |
-
};
|
121 |
-
const configStr = stringifyGenerationConfig(config, {
|
122 |
-
indent: "\n\t",
|
123 |
-
attributeValueConnector: "=",
|
124 |
-
});
|
125 |
-
|
126 |
-
if (streaming) {
|
127 |
-
return [
|
128 |
-
{
|
129 |
-
client: "huggingface_hub",
|
130 |
-
content: `\
|
131 |
-
${snippetImportInferenceClient(accessToken, provider)}
|
132 |
-
|
133 |
-
messages = ${messagesStr}
|
134 |
-
|
135 |
-
stream = client.chat.completions.create(
|
136 |
-
model="${model.id}",
|
137 |
-
messages=messages,
|
138 |
-
${configStr}
|
139 |
-
stream=True
|
140 |
-
)
|
141 |
-
|
142 |
-
for chunk in stream:
|
143 |
-
print(chunk.choices[0].delta.content, end="")`,
|
144 |
-
},
|
145 |
-
{
|
146 |
-
client: "openai",
|
147 |
-
content: `\
|
148 |
-
from openai import OpenAI
|
149 |
-
|
150 |
-
client = OpenAI(
|
151 |
-
base_url="${openAIbaseUrl(provider)}",
|
152 |
-
api_key="${accessToken || "{API_TOKEN}"}"
|
153 |
-
)
|
154 |
-
|
155 |
-
messages = ${messagesStr}
|
156 |
-
|
157 |
-
stream = client.chat.completions.create(
|
158 |
-
model="${providerModelId ?? model.id}",
|
159 |
-
messages=messages,
|
160 |
-
${configStr}
|
161 |
-
stream=True
|
162 |
-
)
|
163 |
-
|
164 |
-
for chunk in stream:
|
165 |
-
print(chunk.choices[0].delta.content, end="")`,
|
166 |
-
},
|
167 |
-
];
|
168 |
-
} else {
|
169 |
-
return [
|
170 |
-
{
|
171 |
-
client: "huggingface_hub",
|
172 |
-
content: `\
|
173 |
-
${snippetImportInferenceClient(accessToken, provider)}
|
174 |
-
|
175 |
-
messages = ${messagesStr}
|
176 |
-
|
177 |
-
completion = client.chat.completions.create(
|
178 |
-
model="${model.id}",
|
179 |
-
messages=messages,
|
180 |
-
${configStr}
|
181 |
-
)
|
182 |
-
|
183 |
-
print(completion.choices[0].message)`,
|
184 |
-
},
|
185 |
-
{
|
186 |
-
client: "openai",
|
187 |
-
content: `\
|
188 |
-
from openai import OpenAI
|
189 |
-
|
190 |
-
client = OpenAI(
|
191 |
-
base_url="${openAIbaseUrl(provider)}",
|
192 |
-
api_key="${accessToken || "{API_TOKEN}"}"
|
193 |
-
)
|
194 |
-
|
195 |
-
messages = ${messagesStr}
|
196 |
-
|
197 |
-
completion = client.chat.completions.create(
|
198 |
-
model="${providerModelId ?? model.id}",
|
199 |
-
messages=messages,
|
200 |
-
${configStr}
|
201 |
-
)
|
202 |
-
|
203 |
-
print(completion.choices[0].message)`,
|
204 |
-
},
|
205 |
-
];
|
206 |
-
}
|
207 |
-
};
|
208 |
-
|
209 |
-
export const snippetZeroShotClassification = (model: ModelDataMinimal): InferenceSnippet[] => {
|
210 |
-
return [
|
211 |
-
{
|
212 |
-
client: "requests",
|
213 |
-
content: `\
|
214 |
-
def query(payload):
|
215 |
-
response = requests.post(API_URL, headers=headers, json=payload)
|
216 |
-
return response.json()
|
217 |
-
|
218 |
-
output = query({
|
219 |
-
"inputs": ${getModelInputSnippet(model)},
|
220 |
-
"parameters": {"candidate_labels": ["refund", "legal", "faq"]},
|
221 |
-
})`,
|
222 |
-
},
|
223 |
-
];
|
224 |
-
};
|
225 |
-
|
226 |
-
export const snippetZeroShotImageClassification = (model: ModelDataMinimal): InferenceSnippet[] => {
|
227 |
-
return [
|
228 |
-
{
|
229 |
-
client: "requests",
|
230 |
-
content: `\
|
231 |
-
def query(data):
|
232 |
-
with open(data["image_path"], "rb") as f:
|
233 |
-
img = f.read()
|
234 |
-
payload={
|
235 |
-
"parameters": data["parameters"],
|
236 |
-
"inputs": base64.b64encode(img).decode("utf-8")
|
237 |
-
}
|
238 |
-
response = requests.post(API_URL, headers=headers, json=payload)
|
239 |
-
return response.json()
|
240 |
-
|
241 |
-
output = query({
|
242 |
-
"image_path": ${getModelInputSnippet(model)},
|
243 |
-
"parameters": {"candidate_labels": ["cat", "dog", "llama"]},
|
244 |
-
})`,
|
245 |
-
},
|
246 |
-
];
|
247 |
-
};
|
248 |
-
|
249 |
-
export const snippetBasic = (
|
250 |
-
model: ModelDataMinimal,
|
251 |
-
accessToken: string,
|
252 |
-
provider: SnippetInferenceProvider
|
253 |
-
): InferenceSnippet[] => {
|
254 |
-
return [
|
255 |
-
...(model.pipeline_tag && model.pipeline_tag in HFH_INFERENCE_CLIENT_METHODS
|
256 |
-
? [
|
257 |
-
{
|
258 |
-
client: "huggingface_hub",
|
259 |
-
content: `\
|
260 |
-
${snippetImportInferenceClient(accessToken, provider)}
|
261 |
-
|
262 |
-
result = client.${HFH_INFERENCE_CLIENT_METHODS[model.pipeline_tag]}(
|
263 |
-
model="${model.id}",
|
264 |
-
inputs=${getModelInputSnippet(model)},
|
265 |
-
provider="${provider}",
|
266 |
-
)
|
267 |
-
|
268 |
-
print(result)
|
269 |
-
`,
|
270 |
-
},
|
271 |
-
]
|
272 |
-
: []),
|
273 |
-
{
|
274 |
-
client: "requests",
|
275 |
-
content: `\
|
276 |
-
def query(payload):
|
277 |
-
response = requests.post(API_URL, headers=headers, json=payload)
|
278 |
-
return response.json()
|
279 |
-
|
280 |
-
output = query({
|
281 |
-
"inputs": ${getModelInputSnippet(model)},
|
282 |
-
})`,
|
283 |
-
},
|
284 |
-
];
|
285 |
-
};
|
286 |
-
|
287 |
-
export const snippetFile = (model: ModelDataMinimal): InferenceSnippet[] => {
|
288 |
-
return [
|
289 |
-
{
|
290 |
-
client: "requests",
|
291 |
-
content: `\
|
292 |
-
def query(filename):
|
293 |
-
with open(filename, "rb") as f:
|
294 |
-
data = f.read()
|
295 |
-
response = requests.post(API_URL, headers=headers, data=data)
|
296 |
-
return response.json()
|
297 |
-
|
298 |
-
output = query(${getModelInputSnippet(model)})`,
|
299 |
-
},
|
300 |
-
];
|
301 |
-
};
|
302 |
-
|
303 |
-
export const snippetTextToImage = (
|
304 |
-
model: ModelDataMinimal,
|
305 |
-
accessToken: string,
|
306 |
-
provider: SnippetInferenceProvider,
|
307 |
-
providerModelId?: string
|
308 |
-
): InferenceSnippet[] => {
|
309 |
-
return [
|
310 |
-
{
|
311 |
-
client: "huggingface_hub",
|
312 |
-
content: `\
|
313 |
-
${snippetImportInferenceClient(accessToken, provider)}
|
314 |
-
|
315 |
-
# output is a PIL.Image object
|
316 |
-
image = client.text_to_image(
|
317 |
-
${getModelInputSnippet(model)},
|
318 |
-
model="${model.id}"
|
319 |
-
)`,
|
320 |
-
},
|
321 |
-
...(provider === "fal-ai"
|
322 |
-
? [
|
323 |
-
{
|
324 |
-
client: "fal-client",
|
325 |
-
content: `\
|
326 |
-
import fal_client
|
327 |
-
|
328 |
-
result = fal_client.subscribe(
|
329 |
-
"${providerModelId ?? model.id}",
|
330 |
-
arguments={
|
331 |
-
"prompt": ${getModelInputSnippet(model)},
|
332 |
-
},
|
333 |
-
)
|
334 |
-
print(result)
|
335 |
-
`,
|
336 |
-
},
|
337 |
-
]
|
338 |
-
: []),
|
339 |
-
...(provider === "hf-inference"
|
340 |
-
? [
|
341 |
-
{
|
342 |
-
client: "requests",
|
343 |
-
content: `\
|
344 |
-
def query(payload):
|
345 |
-
response = requests.post(API_URL, headers=headers, json=payload)
|
346 |
-
return response.content
|
347 |
-
|
348 |
-
image_bytes = query({
|
349 |
-
"inputs": ${getModelInputSnippet(model)},
|
350 |
-
})
|
351 |
-
|
352 |
-
# You can access the image with PIL.Image for example
|
353 |
-
import io
|
354 |
-
from PIL import Image
|
355 |
-
image = Image.open(io.BytesIO(image_bytes))`,
|
356 |
-
},
|
357 |
-
]
|
358 |
-
: []),
|
359 |
-
];
|
360 |
-
};
|
361 |
-
|
362 |
-
export const snippetTextToVideo = (
|
363 |
-
model: ModelDataMinimal,
|
364 |
-
accessToken: string,
|
365 |
-
provider: SnippetInferenceProvider
|
366 |
-
): InferenceSnippet[] => {
|
367 |
-
return ["fal-ai", "replicate"].includes(provider)
|
368 |
-
? [
|
369 |
-
{
|
370 |
-
client: "huggingface_hub",
|
371 |
-
content: `\
|
372 |
-
${snippetImportInferenceClient(accessToken, provider)}
|
373 |
-
|
374 |
-
video = client.text_to_video(
|
375 |
-
${getModelInputSnippet(model)},
|
376 |
-
model="${model.id}"
|
377 |
-
)`,
|
378 |
-
},
|
379 |
-
]
|
380 |
-
: [];
|
381 |
-
};
|
382 |
-
|
383 |
-
export const snippetTabular = (model: ModelDataMinimal): InferenceSnippet[] => {
|
384 |
-
return [
|
385 |
-
{
|
386 |
-
client: "requests",
|
387 |
-
content: `\
|
388 |
-
def query(payload):
|
389 |
-
response = requests.post(API_URL, headers=headers, json=payload)
|
390 |
-
return response.content
|
391 |
-
|
392 |
-
response = query({
|
393 |
-
"inputs": {"data": ${getModelInputSnippet(model)}},
|
394 |
-
})`,
|
395 |
-
},
|
396 |
-
];
|
397 |
-
};
|
398 |
-
|
399 |
-
export const snippetTextToAudio = (model: ModelDataMinimal): InferenceSnippet[] => {
|
400 |
-
// Transformers TTS pipeline and api-inference-community (AIC) pipeline outputs are diverged
|
401 |
-
// with the latest update to inference-api (IA).
|
402 |
-
// Transformers IA returns a byte object (wav file), whereas AIC returns wav and sampling_rate.
|
403 |
-
if (model.library_name === "transformers") {
|
404 |
-
return [
|
405 |
-
{
|
406 |
-
client: "requests",
|
407 |
-
content: `\
|
408 |
-
def query(payload):
|
409 |
-
response = requests.post(API_URL, headers=headers, json=payload)
|
410 |
-
return response.content
|
411 |
-
|
412 |
-
audio_bytes = query({
|
413 |
-
"inputs": ${getModelInputSnippet(model)},
|
414 |
-
})
|
415 |
-
# You can access the audio with IPython.display for example
|
416 |
-
from IPython.display import Audio
|
417 |
-
Audio(audio_bytes)`,
|
418 |
-
},
|
419 |
-
];
|
420 |
-
} else {
|
421 |
-
return [
|
422 |
-
{
|
423 |
-
client: "requests",
|
424 |
-
content: `\
|
425 |
-
def query(payload):
|
426 |
-
response = requests.post(API_URL, headers=headers, json=payload)
|
427 |
-
return response.json()
|
428 |
-
|
429 |
-
audio, sampling_rate = query({
|
430 |
-
"inputs": ${getModelInputSnippet(model)},
|
431 |
-
})
|
432 |
-
# You can access the audio with IPython.display for example
|
433 |
-
from IPython.display import Audio
|
434 |
-
Audio(audio, rate=sampling_rate)`,
|
435 |
-
},
|
436 |
-
];
|
437 |
-
}
|
438 |
-
};
|
439 |
-
|
440 |
-
export const snippetDocumentQuestionAnswering = (model: ModelDataMinimal): InferenceSnippet[] => {
|
441 |
-
return [
|
442 |
-
{
|
443 |
-
client: "requests",
|
444 |
-
content: `\
|
445 |
-
def query(payload):
|
446 |
-
with open(payload["image"], "rb") as f:
|
447 |
-
img = f.read()
|
448 |
-
payload["image"] = base64.b64encode(img).decode("utf-8")
|
449 |
-
response = requests.post(API_URL, headers=headers, json=payload)
|
450 |
-
return response.json()
|
451 |
-
|
452 |
-
output = query({
|
453 |
-
"inputs": ${getModelInputSnippet(model)},
|
454 |
-
})`,
|
455 |
-
},
|
456 |
-
];
|
457 |
-
};
|
458 |
-
|
459 |
-
export const pythonSnippets: Partial<
|
460 |
-
Record<
|
461 |
-
PipelineType,
|
462 |
-
(
|
463 |
-
model: ModelDataMinimal,
|
464 |
-
accessToken: string,
|
465 |
-
provider: SnippetInferenceProvider,
|
466 |
-
providerModelId?: string,
|
467 |
-
opts?: Record<string, unknown>
|
468 |
-
) => InferenceSnippet[]
|
469 |
-
>
|
470 |
-
> = {
|
471 |
-
// Same order as in tasks/src/pipelines.ts
|
472 |
-
"text-classification": snippetBasic,
|
473 |
-
"token-classification": snippetBasic,
|
474 |
-
"table-question-answering": snippetBasic,
|
475 |
-
"question-answering": snippetBasic,
|
476 |
-
"zero-shot-classification": snippetZeroShotClassification,
|
477 |
-
"translation": snippetBasic,
|
478 |
-
"summarization": snippetBasic,
|
479 |
-
"feature-extraction": snippetBasic,
|
480 |
-
"text-generation": snippetBasic,
|
481 |
-
"text2text-generation": snippetBasic,
|
482 |
-
"image-text-to-text": snippetConversational,
|
483 |
-
"fill-mask": snippetBasic,
|
484 |
-
"sentence-similarity": snippetBasic,
|
485 |
-
"automatic-speech-recognition": snippetFile,
|
486 |
-
"text-to-image": snippetTextToImage,
|
487 |
-
"text-to-video": snippetTextToVideo,
|
488 |
-
"text-to-speech": snippetTextToAudio,
|
489 |
-
"text-to-audio": snippetTextToAudio,
|
490 |
-
"audio-to-audio": snippetFile,
|
491 |
-
"audio-classification": snippetFile,
|
492 |
-
"image-classification": snippetFile,
|
493 |
-
"tabular-regression": snippetTabular,
|
494 |
-
"tabular-classification": snippetTabular,
|
495 |
-
"object-detection": snippetFile,
|
496 |
-
"image-segmentation": snippetFile,
|
497 |
-
"document-question-answering": snippetDocumentQuestionAnswering,
|
498 |
-
"image-to-text": snippetFile,
|
499 |
-
"zero-shot-image-classification": snippetZeroShotImageClassification,
|
500 |
-
};
|
501 |
-
|
502 |
-
export function getPythonInferenceSnippet(
|
503 |
-
model: ModelDataMinimal,
|
504 |
-
accessToken: string,
|
505 |
-
provider: SnippetInferenceProvider,
|
506 |
-
providerModelId?: string,
|
507 |
-
opts?: Record<string, unknown>
|
508 |
-
): InferenceSnippet[] {
|
509 |
-
if (model.tags.includes("conversational")) {
|
510 |
-
// Conversational model detected, so we display a code snippet that features the Messages API
|
511 |
-
return snippetConversational(model, accessToken, provider, providerModelId, opts);
|
512 |
-
} else {
|
513 |
-
const snippets =
|
514 |
-
model.pipeline_tag && model.pipeline_tag in pythonSnippets
|
515 |
-
? (pythonSnippets[model.pipeline_tag]?.(model, accessToken, provider, providerModelId) ?? [])
|
516 |
-
: [];
|
517 |
-
|
518 |
-
return snippets.map(snippet => {
|
519 |
-
return {
|
520 |
-
...snippet,
|
521 |
-
content:
|
522 |
-
snippet.client === "requests"
|
523 |
-
? `\
|
524 |
-
import requests
|
525 |
-
|
526 |
-
API_URL = "${openAIbaseUrl(provider)}"
|
527 |
-
headers = {"Authorization": ${accessToken ? `"Bearer ${accessToken}"` : `f"Bearer {API_TOKEN}"`}}
|
528 |
-
|
529 |
-
${snippet.content}`
|
530 |
-
: snippet.content,
|
531 |
-
};
|
532 |
-
});
|
533 |
-
}
|
534 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/lib/components/inference-playground/utils.svelte.ts
CHANGED
@@ -1,4 +1,5 @@
|
|
1 |
import ctxLengthData from "$lib/data/context_length.json";
|
|
|
2 |
import { ConversationClass, type ConversationEntityMembers } from "$lib/state/conversations.svelte";
|
3 |
import { token } from "$lib/state/token.svelte";
|
4 |
import {
|
@@ -12,8 +13,7 @@ import {
|
|
12 |
} from "$lib/types.js";
|
13 |
import { safeParse } from "$lib/utils/json.js";
|
14 |
import { omit, tryGet } from "$lib/utils/object.svelte.js";
|
15 |
-
import {
|
16 |
-
import { snippets } from "./snippets/index.svelte.js";
|
17 |
import type { ChatCompletionInputMessage, InferenceSnippet } from "@huggingface/tasks";
|
18 |
import { type ChatCompletionOutputMessage } from "@huggingface/tasks";
|
19 |
import { AutoTokenizer, PreTrainedTokenizer } from "@huggingface/transformers";
|
@@ -21,6 +21,7 @@ import OpenAI from "openai";
|
|
21 |
import { images } from "$lib/state/images.svelte.js";
|
22 |
import { projects } from "$lib/state/projects.svelte.js";
|
23 |
import { structuredForbiddenProviders } from "$lib/state/models.svelte.js";
|
|
|
24 |
|
25 |
type ChatCompletionInputMessageChunk =
|
26 |
NonNullable<ChatCompletionInputMessage["content"]> extends string | (infer U)[] ? U : never;
|
@@ -49,8 +50,8 @@ async function parseMessage(message: ConversationMessage): Promise<ChatCompletio
|
|
49 |
|
50 |
type HFCompletionMetadata = {
|
51 |
type: "huggingface";
|
52 |
-
client:
|
53 |
-
args: Parameters<
|
54 |
};
|
55 |
|
56 |
type OpenAICompletionMetadata = {
|
@@ -81,55 +82,55 @@ export function maxAllowedTokens(conversation: ConversationClass) {
|
|
81 |
return ctxLength;
|
82 |
}
|
83 |
|
84 |
-
|
85 |
-
conversation: ConversationClass | Conversation,
|
86 |
-
signal?: AbortSignal
|
87 |
-
): Promise<CompletionMetadata> {
|
88 |
const data = conversation instanceof ConversationClass ? conversation.data : conversation;
|
89 |
-
const model = conversation.model;
|
90 |
-
const systemMessage = projects.current?.systemMessage;
|
91 |
-
|
92 |
-
const messages: ConversationMessage[] = [
|
93 |
-
...(isSystemPromptSupported(model) && systemMessage?.length ? [{ role: "system", content: systemMessage }] : []),
|
94 |
-
...data.messages,
|
95 |
-
];
|
96 |
-
const parsed = await Promise.all(messages.map(parseMessage));
|
97 |
-
|
98 |
-
const baseArgs = {
|
99 |
-
...data.config,
|
100 |
-
messages: parsed,
|
101 |
-
model: model.id,
|
102 |
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
103 |
-
} as any;
|
104 |
-
|
105 |
const json = safeParse(data.structuredOutput?.schema ?? "");
|
106 |
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
107 |
if (json && data.structuredOutput?.enabled && !structuredForbiddenProviders.includes(data.provider as any)) {
|
108 |
switch (data.provider) {
|
109 |
case "cohere": {
|
110 |
-
|
111 |
type: "json_object",
|
112 |
...json,
|
113 |
};
|
114 |
-
break;
|
115 |
}
|
116 |
case Provider.Cerebras: {
|
117 |
-
|
118 |
type: "json_schema",
|
119 |
json_schema: { ...json, name: "schema" },
|
120 |
};
|
121 |
-
break;
|
122 |
}
|
123 |
default: {
|
124 |
-
|
125 |
type: "json_schema",
|
126 |
json_schema: json,
|
127 |
};
|
128 |
-
|
129 |
-
break;
|
130 |
}
|
131 |
}
|
132 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
133 |
|
134 |
// Handle OpenAI-compatible models
|
135 |
if (isCustomModel(model)) {
|
@@ -163,7 +164,7 @@ async function getCompletionMetadata(
|
|
163 |
// Handle HuggingFace models
|
164 |
return {
|
165 |
type: "huggingface",
|
166 |
-
client: new
|
167 |
args,
|
168 |
};
|
169 |
}
|
@@ -299,21 +300,14 @@ export const customMaxTokens: { [key: string]: number } = {
|
|
299 |
} as const;
|
300 |
|
301 |
// Order of the elements in InferenceModal.svelte is determined by this const
|
302 |
-
export const inferenceSnippetLanguages = ["python", "js", "
|
303 |
|
304 |
export type InferenceSnippetLanguage = (typeof inferenceSnippetLanguages)[number];
|
305 |
|
306 |
-
|
307 |
-
curl: snippets.curl.getCurlInferenceSnippet,
|
308 |
-
js: snippets.js.getJsInferenceSnippet,
|
309 |
-
python: snippets.python.getPythonInferenceSnippet,
|
310 |
-
} as const;
|
311 |
-
|
312 |
-
export type GetInferenceSnippetReturn = (InferenceSnippet & { language: InferenceSnippetLanguage })[];
|
313 |
|
314 |
export function getInferenceSnippet(
|
315 |
-
|
316 |
-
provider: InferenceProvider,
|
317 |
language: InferenceSnippetLanguage,
|
318 |
accessToken: string,
|
319 |
opts?: {
|
@@ -325,32 +319,53 @@ export function getInferenceSnippet(
|
|
325 |
structured_output?: ConversationEntityMembers["structuredOutput"];
|
326 |
}
|
327 |
): GetInferenceSnippetReturn {
|
|
|
|
|
|
|
|
|
328 |
// If it's a custom model, we don't generate inference snippets
|
329 |
if (isCustomModel(model)) {
|
330 |
return [];
|
331 |
}
|
332 |
|
333 |
-
const
|
334 |
-
|
|
|
335 |
{ ...model, inference: "" },
|
336 |
accessToken,
|
337 |
provider,
|
338 |
-
|
339 |
opts
|
340 |
);
|
341 |
-
return snippetsByClient.map(snippetByClient => ({ ...snippetByClient, language }));
|
342 |
-
}
|
343 |
|
344 |
-
|
345 |
-
|
346 |
-
|
347 |
-
|
348 |
-
|
349 |
-
|
350 |
-
|
351 |
-
)
|
352 |
-
|
353 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
354 |
}
|
355 |
|
356 |
const tokenizers = new Map<string, PreTrainedTokenizer | null>();
|
|
|
1 |
import ctxLengthData from "$lib/data/context_length.json";
|
2 |
+
import { InferenceClient, snippets } from "@huggingface/inference";
|
3 |
import { ConversationClass, type ConversationEntityMembers } from "$lib/state/conversations.svelte";
|
4 |
import { token } from "$lib/state/token.svelte";
|
5 |
import {
|
|
|
13 |
} from "$lib/types.js";
|
14 |
import { safeParse } from "$lib/utils/json.js";
|
15 |
import { omit, tryGet } from "$lib/utils/object.svelte.js";
|
16 |
+
import { type InferenceProvider } from "@huggingface/inference";
|
|
|
17 |
import type { ChatCompletionInputMessage, InferenceSnippet } from "@huggingface/tasks";
|
18 |
import { type ChatCompletionOutputMessage } from "@huggingface/tasks";
|
19 |
import { AutoTokenizer, PreTrainedTokenizer } from "@huggingface/transformers";
|
|
|
21 |
import { images } from "$lib/state/images.svelte.js";
|
22 |
import { projects } from "$lib/state/projects.svelte.js";
|
23 |
import { structuredForbiddenProviders } from "$lib/state/models.svelte.js";
|
24 |
+
import { modifySnippet } from "$lib/utils/snippets.js";
|
25 |
|
26 |
type ChatCompletionInputMessageChunk =
|
27 |
NonNullable<ChatCompletionInputMessage["content"]> extends string | (infer U)[] ? U : never;
|
|
|
50 |
|
51 |
type HFCompletionMetadata = {
|
52 |
type: "huggingface";
|
53 |
+
client: InferenceClient;
|
54 |
+
args: Parameters<InferenceClient["chatCompletion"]>[0];
|
55 |
};
|
56 |
|
57 |
type OpenAICompletionMetadata = {
|
|
|
82 |
return ctxLength;
|
83 |
}
|
84 |
|
85 |
+
function getResponseFormatObj(conversation: ConversationClass | Conversation) {
|
|
|
|
|
|
|
86 |
const data = conversation instanceof ConversationClass ? conversation.data : conversation;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
87 |
const json = safeParse(data.structuredOutput?.schema ?? "");
|
88 |
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
89 |
if (json && data.structuredOutput?.enabled && !structuredForbiddenProviders.includes(data.provider as any)) {
|
90 |
switch (data.provider) {
|
91 |
case "cohere": {
|
92 |
+
return {
|
93 |
type: "json_object",
|
94 |
...json,
|
95 |
};
|
|
|
96 |
}
|
97 |
case Provider.Cerebras: {
|
98 |
+
return {
|
99 |
type: "json_schema",
|
100 |
json_schema: { ...json, name: "schema" },
|
101 |
};
|
|
|
102 |
}
|
103 |
default: {
|
104 |
+
return {
|
105 |
type: "json_schema",
|
106 |
json_schema: json,
|
107 |
};
|
|
|
|
|
108 |
}
|
109 |
}
|
110 |
}
|
111 |
+
}
|
112 |
+
|
113 |
+
async function getCompletionMetadata(
|
114 |
+
conversation: ConversationClass | Conversation,
|
115 |
+
signal?: AbortSignal
|
116 |
+
): Promise<CompletionMetadata> {
|
117 |
+
const data = conversation instanceof ConversationClass ? conversation.data : conversation;
|
118 |
+
const model = conversation.model;
|
119 |
+
const systemMessage = projects.current?.systemMessage;
|
120 |
+
|
121 |
+
const messages: ConversationMessage[] = [
|
122 |
+
...(isSystemPromptSupported(model) && systemMessage?.length ? [{ role: "system", content: systemMessage }] : []),
|
123 |
+
...data.messages,
|
124 |
+
];
|
125 |
+
const parsed = await Promise.all(messages.map(parseMessage));
|
126 |
+
|
127 |
+
const baseArgs = {
|
128 |
+
...data.config,
|
129 |
+
messages: parsed,
|
130 |
+
model: model.id,
|
131 |
+
response_format: getResponseFormatObj(conversation),
|
132 |
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
133 |
+
} as any;
|
134 |
|
135 |
// Handle OpenAI-compatible models
|
136 |
if (isCustomModel(model)) {
|
|
|
164 |
// Handle HuggingFace models
|
165 |
return {
|
166 |
type: "huggingface",
|
167 |
+
client: new InferenceClient(token.value),
|
168 |
args,
|
169 |
};
|
170 |
}
|
|
|
300 |
} as const;
|
301 |
|
302 |
// Order of the elements in InferenceModal.svelte is determined by this const
|
303 |
+
export const inferenceSnippetLanguages = ["python", "js", "sh"] as const;
|
304 |
|
305 |
export type InferenceSnippetLanguage = (typeof inferenceSnippetLanguages)[number];
|
306 |
|
307 |
+
export type GetInferenceSnippetReturn = InferenceSnippet[];
|
|
|
|
|
|
|
|
|
|
|
|
|
308 |
|
309 |
export function getInferenceSnippet(
|
310 |
+
conversation: ConversationClass,
|
|
|
311 |
language: InferenceSnippetLanguage,
|
312 |
accessToken: string,
|
313 |
opts?: {
|
|
|
319 |
structured_output?: ConversationEntityMembers["structuredOutput"];
|
320 |
}
|
321 |
): GetInferenceSnippetReturn {
|
322 |
+
const model = conversation.model;
|
323 |
+
const data = conversation.data;
|
324 |
+
const provider = (isCustomModel(model) ? "hf-inference" : data.provider) as InferenceProvider;
|
325 |
+
|
326 |
// If it's a custom model, we don't generate inference snippets
|
327 |
if (isCustomModel(model)) {
|
328 |
return [];
|
329 |
}
|
330 |
|
331 |
+
const providerMapping = model.inferenceProviderMapping.find(p => p.provider === provider);
|
332 |
+
if (!providerMapping) return [];
|
333 |
+
const allSnippets = snippets.getInferenceSnippets(
|
334 |
{ ...model, inference: "" },
|
335 |
accessToken,
|
336 |
provider,
|
337 |
+
{ ...providerMapping, hfModelId: model.id },
|
338 |
opts
|
339 |
);
|
|
|
|
|
340 |
|
341 |
+
if (opts?.structured_output && !structuredForbiddenProviders.includes(provider as Provider)) {
|
342 |
+
allSnippets.forEach(s => {
|
343 |
+
const modified = modifySnippet(s.content, { prop: "hi" });
|
344 |
+
if (s.content === modified) {
|
345 |
+
console.log("Failed for", s.language, "\n");
|
346 |
+
} else {
|
347 |
+
console.log("Original snippet");
|
348 |
+
console.log(s.content);
|
349 |
+
console.log("\nModified");
|
350 |
+
console.log(modified);
|
351 |
+
console.log();
|
352 |
+
}
|
353 |
+
});
|
354 |
+
}
|
355 |
+
|
356 |
+
return allSnippets
|
357 |
+
.filter(s => s.language === language)
|
358 |
+
.map(s => {
|
359 |
+
if (opts?.structured_output && !structuredForbiddenProviders.includes(provider as Provider)) {
|
360 |
+
return {
|
361 |
+
...s,
|
362 |
+
content: modifySnippet(s.content, {
|
363 |
+
response_format: getResponseFormatObj(conversation),
|
364 |
+
}),
|
365 |
+
};
|
366 |
+
}
|
367 |
+
return s;
|
368 |
+
});
|
369 |
}
|
370 |
|
371 |
const tokenizers = new Map<string, PreTrainedTokenizer | null>();
|
src/lib/state/conversations.svelte.ts
CHANGED
@@ -8,9 +8,9 @@ import {
|
|
8 |
} from "$lib/components/inference-playground/utils.svelte.js";
|
9 |
import { addToast } from "$lib/components/toaster.svelte.js";
|
10 |
import { AbortManager } from "$lib/spells/abort-manager.svelte";
|
11 |
-
import { PipelineTag, type ConversationMessage, type GenerationStatistics, type Model } from "$lib/types.js";
|
12 |
import { omit, snapshot } from "$lib/utils/object.svelte";
|
13 |
-
import { models } from "./models.svelte";
|
14 |
import { DEFAULT_PROJECT_ID, ProjectEntity, projects } from "./projects.svelte";
|
15 |
import { token } from "./token.svelte";
|
16 |
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
@@ -103,6 +103,16 @@ export class ConversationClass {
|
|
103 |
return this.#data;
|
104 |
}
|
105 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
106 |
async update(data: Partial<ConversationEntityMembers>) {
|
107 |
if (this.data.id === -1) return;
|
108 |
// if (this.data.id === undefined) return;
|
|
|
8 |
} from "$lib/components/inference-playground/utils.svelte.js";
|
9 |
import { addToast } from "$lib/components/toaster.svelte.js";
|
10 |
import { AbortManager } from "$lib/spells/abort-manager.svelte";
|
11 |
+
import { PipelineTag, Provider, type ConversationMessage, type GenerationStatistics, type Model } from "$lib/types.js";
|
12 |
import { omit, snapshot } from "$lib/utils/object.svelte";
|
13 |
+
import { models, structuredForbiddenProviders } from "./models.svelte";
|
14 |
import { DEFAULT_PROJECT_ID, ProjectEntity, projects } from "./projects.svelte";
|
15 |
import { token } from "./token.svelte";
|
16 |
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
|
103 |
return this.#data;
|
104 |
}
|
105 |
|
106 |
+
get isStructuredOutputAllowed() {
|
107 |
+
const forbiddenProvider =
|
108 |
+
this.data.provider && structuredForbiddenProviders.includes(this.data.provider as Provider);
|
109 |
+
return !forbiddenProvider;
|
110 |
+
}
|
111 |
+
|
112 |
+
get isStructuredOutputEnabled() {
|
113 |
+
return this.isStructuredOutputAllowed && this.data.structuredOutput?.enabled;
|
114 |
+
}
|
115 |
+
|
116 |
async update(data: Partial<ConversationEntityMembers>) {
|
117 |
if (this.data.id === -1) return;
|
118 |
// if (this.data.id === undefined) return;
|
src/lib/types.ts
CHANGED
@@ -3,7 +3,7 @@ import type { ChatCompletionInputMessage } from "@huggingface/tasks";
|
|
3 |
import typia from "typia";
|
4 |
import type { ConversationEntityMembers } from "./state/conversations.svelte";
|
5 |
|
6 |
-
export type ConversationMessage = Pick<ChatCompletionInputMessage, "name" | "role"
|
7 |
content?: string;
|
8 |
images?: string[];
|
9 |
};
|
|
|
3 |
import typia from "typia";
|
4 |
import type { ConversationEntityMembers } from "./state/conversations.svelte";
|
5 |
|
6 |
+
export type ConversationMessage = Pick<ChatCompletionInputMessage, "name" | "role"> & {
|
7 |
content?: string;
|
8 |
images?: string[];
|
9 |
};
|
src/lib/utils/snippets.spec.ts
ADDED
@@ -0,0 +1,399 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/* eslint-disable no-useless-escape */
|
2 |
+
import { describe, it, expect } from "vitest";
|
3 |
+
import { modifySnippet } from "./snippets.js";
|
4 |
+
|
5 |
+
// Shared object to add, including various types
|
6 |
+
const SHARED_OBJ_TO_ADD = {
|
7 |
+
maxTokens: 200,
|
8 |
+
frequencyPenalty: 0.3,
|
9 |
+
presencePenalty: null,
|
10 |
+
stopSequences: ["stop1", "stop2"],
|
11 |
+
complexObject: {
|
12 |
+
nestedKey: "nestedValue",
|
13 |
+
nestedNum: 123,
|
14 |
+
nestedBool: false,
|
15 |
+
nestedArr: ["a", 1, true, null],
|
16 |
+
},
|
17 |
+
anotherString: "test string",
|
18 |
+
isStreaming: true,
|
19 |
+
};
|
20 |
+
|
21 |
+
// Helper to create regex for matching stringified values (JS/JSON and Python)
|
22 |
+
// This version is updated to handle multi-line, indented ("pretty-printed") structures.
|
23 |
+
function createValueRegex(value: unknown, language: "js" | "python" | "json"): string {
|
24 |
+
// Flexible whitespace: matches any number of spaces, tabs, or newlines.
|
25 |
+
const ws = "(?:\\s|\\n)*";
|
26 |
+
|
27 |
+
if (typeof value === "string") {
|
28 |
+
return `"${value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")}"`; // Escape special regex chars in string
|
29 |
+
}
|
30 |
+
if (value === null) {
|
31 |
+
return language === "python" ? "None" : "null";
|
32 |
+
}
|
33 |
+
if (typeof value === "boolean") {
|
34 |
+
return language === "python" ? (value ? "True" : "False") : String(value);
|
35 |
+
}
|
36 |
+
if (typeof value === "number") {
|
37 |
+
return String(value);
|
38 |
+
}
|
39 |
+
if (Array.isArray(value)) {
|
40 |
+
if (value.length === 0) {
|
41 |
+
return `\\[${ws}\\]`; // Matches "[]" or "[ \n ]" etc.
|
42 |
+
}
|
43 |
+
const itemRegexes = value.map(item => createValueRegex(item, language)).join(`${ws},${ws}`);
|
44 |
+
return `\\[${ws}${itemRegexes}${ws}\\]`;
|
45 |
+
}
|
46 |
+
if (typeof value === "object" && value !== null) {
|
47 |
+
const entries = Object.entries(value);
|
48 |
+
if (entries.length === 0) {
|
49 |
+
return `\\{${ws}\\}`; // Matches "{}" or "{ \n }" etc.
|
50 |
+
}
|
51 |
+
const entriesRegex = entries
|
52 |
+
.map(([k, v]) => {
|
53 |
+
// In Python kwargs, keys are not quoted. This regex builder is for values that look like JSON/Python dicts.
|
54 |
+
// The main test loops handle Python kwarg key formatting separately.
|
55 |
+
const keyRegex = `"${k.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")}"`;
|
56 |
+
const valueRegexPart = createValueRegex(v, language);
|
57 |
+
return `${keyRegex}${ws}:${ws}${valueRegexPart}`;
|
58 |
+
})
|
59 |
+
.join(`${ws},${ws}`); // Join key-value pairs with a comma and flexible whitespace
|
60 |
+
return `\\{${ws}${entriesRegex}${ws}\\}`;
|
61 |
+
}
|
62 |
+
return String(value).replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); // Fallback for other primitive types
|
63 |
+
}
|
64 |
+
|
65 |
+
type TestCase = {
|
66 |
+
snippet: string;
|
67 |
+
objToAdd: Record<string, unknown>;
|
68 |
+
description: string; // Optional description for the test
|
69 |
+
pythonSyntax?: "kwargs" | "dict"; // Add this field
|
70 |
+
};
|
71 |
+
|
72 |
+
// JavaScript/TypeScript test cases
|
73 |
+
const jsTestCases: TestCase[] = [
|
74 |
+
{
|
75 |
+
description: "JavaScript InferenceClient with chatCompletionStream",
|
76 |
+
snippet: `
|
77 |
+
import { InferenceClient } from "@huggingface/inference";
|
78 |
+
|
79 |
+
const client = new InferenceClient("YOUR_HF_TOKEN");
|
80 |
+
|
81 |
+
let out = "";
|
82 |
+
|
83 |
+
const stream = client.chatCompletionStream({
|
84 |
+
provider: "cerebras",
|
85 |
+
model: "Qwen/Qwen3-32B",
|
86 |
+
messages: [
|
87 |
+
{
|
88 |
+
role: "user",
|
89 |
+
content: "What is the capital of Brazil?",
|
90 |
+
},
|
91 |
+
{
|
92 |
+
content: "{\"answer_the_question\": 5, \"how_many_legs_does_a_dog_have\": true, \"answer_the_question_HERE\": \"elderberry\"}",
|
93 |
+
role: "assistant",
|
94 |
+
},
|
95 |
+
],
|
96 |
+
temperature: 0.5,
|
97 |
+
top_p: 0.7,
|
98 |
+
});
|
99 |
+
|
100 |
+
for await (const chunk of stream) {
|
101 |
+
if (chunk.choices && chunk.choices.length > 0) {
|
102 |
+
const newContent = chunk.choices[0].delta.content;
|
103 |
+
out += newContent;
|
104 |
+
console.log(newContent);
|
105 |
+
}
|
106 |
+
}
|
107 |
+
`,
|
108 |
+
objToAdd: SHARED_OBJ_TO_ADD,
|
109 |
+
},
|
110 |
+
{
|
111 |
+
description: "JavaScript InferenceClient without streaming",
|
112 |
+
snippet: `import { InferenceClient } from "@huggingface/inference";
|
113 |
+
|
114 |
+
const client = new InferenceClient("YOUR_HF_TOKEN");
|
115 |
+
|
116 |
+
const chatCompletion = await client.chatCompletion({
|
117 |
+
provider: "cohere",
|
118 |
+
model: "CohereLabs/c4ai-command-r-plus",
|
119 |
+
messages: [
|
120 |
+
{
|
121 |
+
role: "user",
|
122 |
+
content: "hey, how are you???",
|
123 |
+
},
|
124 |
+
{
|
125 |
+
role: "assistant",
|
126 |
+
content: "{ \"answer_the_question\": \n\n\n\n \n \n\n-1.175\n\n\n\n, \n \"how_many_legs_does_a_dog_have\": \nfalse, \n\n\"answer_the_question_HERE\": \n\n\"A\"\n\n\n}",
|
127 |
+
},
|
128 |
+
],
|
129 |
+
temperature: 0.5,
|
130 |
+
top_p: 0.7,
|
131 |
+
});
|
132 |
+
|
133 |
+
console.log(chatCompletion.choices[0].message);`,
|
134 |
+
objToAdd: SHARED_OBJ_TO_ADD,
|
135 |
+
},
|
136 |
+
{
|
137 |
+
description: "JavaScript with OpenAI library",
|
138 |
+
snippet: `import { OpenAI } from "openai";
|
139 |
+
|
140 |
+
const client = new OpenAI({
|
141 |
+
baseURL: "https://api.cerebras.ai/v1",
|
142 |
+
apiKey: "YOUR_HF_TOKEN",
|
143 |
+
});
|
144 |
+
|
145 |
+
const stream = await client.chat.completions.create({
|
146 |
+
model: "qwen-3-32b",
|
147 |
+
messages: [
|
148 |
+
{
|
149 |
+
role: "user",
|
150 |
+
content: "What is the capital of Brazil?",
|
151 |
+
},
|
152 |
+
{
|
153 |
+
content: "{\"answer_the_question\": 5, \"how_many_legs_does_a_dog_have\": true, \"answer_the_question_HERE\": \"elderberry\"}",
|
154 |
+
role: "assistant",
|
155 |
+
},
|
156 |
+
],
|
157 |
+
temperature: 0.5,
|
158 |
+
top_p: 0.7,
|
159 |
+
stream: true,
|
160 |
+
});
|
161 |
+
|
162 |
+
for await (const chunk of stream) {
|
163 |
+
process.stdout.write(chunk.choices[0]?.delta?.content || "");
|
164 |
+
}`,
|
165 |
+
objToAdd: SHARED_OBJ_TO_ADD,
|
166 |
+
},
|
167 |
+
];
|
168 |
+
|
169 |
+
// Python test cases
|
170 |
+
const pythonTestCases: TestCase[] = [
|
171 |
+
{
|
172 |
+
description: "Python HuggingFace client",
|
173 |
+
snippet: `from huggingface_hub import InferenceClient
|
174 |
+
|
175 |
+
client = InferenceClient(
|
176 |
+
provider="cerebras",
|
177 |
+
api_key="YOUR_HF_TOKEN",
|
178 |
+
)
|
179 |
+
|
180 |
+
stream = client.chat.completions.create(
|
181 |
+
model="Qwen/Qwen3-32B",
|
182 |
+
messages=[
|
183 |
+
{
|
184 |
+
"role": "user",
|
185 |
+
"content": "What is the capital of Brazil?"
|
186 |
+
},
|
187 |
+
{
|
188 |
+
"content": "{\"answer_the_question\": 5, \"how_many_legs_does_a_dog_have\": true, \"answer_the_question_HERE\": \"elderberry\"}",
|
189 |
+
"role": "assistant"
|
190 |
+
}
|
191 |
+
],
|
192 |
+
temperature=0.5,
|
193 |
+
top_p=0.7,
|
194 |
+
stream=True,
|
195 |
+
)
|
196 |
+
|
197 |
+
for chunk in stream:
|
198 |
+
print(chunk.choices[0].delta.content, end="")`,
|
199 |
+
objToAdd: SHARED_OBJ_TO_ADD, // Use shared object
|
200 |
+
pythonSyntax: "kwargs",
|
201 |
+
},
|
202 |
+
{
|
203 |
+
description: "Python with Requests",
|
204 |
+
snippet: `import json
|
205 |
+
import requests
|
206 |
+
|
207 |
+
API_URL = "https://api.cerebras.ai/v1/chat/completions"
|
208 |
+
headers = {
|
209 |
+
"Authorization": "Bearer YOUR_HF_TOKEN",
|
210 |
+
}
|
211 |
+
|
212 |
+
def query(payload):
|
213 |
+
response = requests.post(API_URL, headers=headers, json=payload, stream=True)
|
214 |
+
for line in response.iter_lines():
|
215 |
+
if not line.startswith(b"data:"):
|
216 |
+
continue
|
217 |
+
if line.strip() == b"data: [DONE]":
|
218 |
+
return
|
219 |
+
yield json.loads(line.decode("utf-8").lstrip("data:").rstrip("/n"))
|
220 |
+
|
221 |
+
chunks = query({
|
222 |
+
"messages": [
|
223 |
+
{
|
224 |
+
"role": "user",
|
225 |
+
"content": "What is the capital of Brazil?"
|
226 |
+
},
|
227 |
+
{
|
228 |
+
"content": "{\"answer_the_question\": 5, \"how_many_legs_does_a_dog_have\": true, \"answer_the_question_HERE\": \"elderberry\"}",
|
229 |
+
"role": "assistant"
|
230 |
+
}
|
231 |
+
],
|
232 |
+
"temperature": 0.5,
|
233 |
+
"top_p": 0.7,
|
234 |
+
"model": "qwen-3-32b",
|
235 |
+
"stream": True,
|
236 |
+
})
|
237 |
+
|
238 |
+
for chunk in chunks:
|
239 |
+
print(chunk["choices"][0]["delta"]["content"], end="")`,
|
240 |
+
objToAdd: SHARED_OBJ_TO_ADD, // Use shared object
|
241 |
+
pythonSyntax: "dict",
|
242 |
+
},
|
243 |
+
{
|
244 |
+
description: "Python OpenAI client",
|
245 |
+
snippet: `from openai import OpenAI
|
246 |
+
|
247 |
+
client = OpenAI(
|
248 |
+
base_url="https://api.cerebras.ai/v1",
|
249 |
+
api_key="YOUR_HF_TOKEN",
|
250 |
+
)
|
251 |
+
|
252 |
+
stream = client.chat.completions.create(
|
253 |
+
model="qwen-3-32b",
|
254 |
+
messages=[
|
255 |
+
{
|
256 |
+
"role": "user",
|
257 |
+
"content": "What is the capital of Brazil?"
|
258 |
+
},
|
259 |
+
{
|
260 |
+
"content": "{\"answer_the_question\": 5, \"how_many_legs_does_a_dog_have\": true, \"answer_the_question_HERE\": \"elderberry\"}",
|
261 |
+
"role": "assistant"
|
262 |
+
}
|
263 |
+
],
|
264 |
+
temperature=0.5,
|
265 |
+
top_p=0.7,
|
266 |
+
stream=True,
|
267 |
+
)
|
268 |
+
|
269 |
+
for chunk in stream:
|
270 |
+
print(chunk.choices[0].delta.content, end="")`,
|
271 |
+
objToAdd: SHARED_OBJ_TO_ADD, // Use shared object
|
272 |
+
pythonSyntax: "kwargs",
|
273 |
+
},
|
274 |
+
// Add more Python test cases as needed
|
275 |
+
];
|
276 |
+
|
277 |
+
// Shell/curl test cases
|
278 |
+
const shellTestCases: TestCase[] = [
|
279 |
+
{
|
280 |
+
description: "curl request to Cerebras API",
|
281 |
+
snippet: `
|
282 |
+
curl https://api.cerebras.ai/v1/chat/completions \\
|
283 |
+
-H 'Authorization: Bearer YOUR_HF_TOKEN' \\
|
284 |
+
-H 'Content-Type: application/json' \\
|
285 |
+
-d '{
|
286 |
+
"messages": [
|
287 |
+
{
|
288 |
+
"role": "user",
|
289 |
+
"content": "What is the capital of Brazil?"
|
290 |
+
},
|
291 |
+
{
|
292 |
+
"content": "{\"answer_the_question\": 5, \"how_many_legs_does_a_dog_have\": true, \"answer_the_question_HERE\": \"elderberry\"}",
|
293 |
+
"role": "assistant"
|
294 |
+
}
|
295 |
+
],
|
296 |
+
"temperature": 0.5,
|
297 |
+
"top_p": 0.7,
|
298 |
+
"model": "qwen-3-32b",
|
299 |
+
"stream": false
|
300 |
+
}'
|
301 |
+
`,
|
302 |
+
objToAdd: SHARED_OBJ_TO_ADD, // Use shared object
|
303 |
+
},
|
304 |
+
// Add more shell test cases as needed
|
305 |
+
];
|
306 |
+
|
307 |
+
describe("modifySnippet", () => {
|
308 |
+
// Test JavaScript/TypeScript snippets
|
309 |
+
describe("JavaScript/TypeScript", () => {
|
310 |
+
jsTestCases.forEach((testCase, index) => {
|
311 |
+
it(`should add properties to JS snippet #${index + 1}: ${testCase.description}`, () => {
|
312 |
+
const result = modifySnippet(testCase.snippet, testCase.objToAdd);
|
313 |
+
|
314 |
+
// Check that all new properties are added with correct JS syntax
|
315 |
+
Object.entries(testCase.objToAdd).forEach(([key, value]) => {
|
316 |
+
// For JS, keys are typically camelCase or as-is from the object.
|
317 |
+
// The value needs to be regex-matched due to potential complex structures.
|
318 |
+
const valueRegexStr = createValueRegex(value, "js");
|
319 |
+
// Regex to match 'key: value' or '"key": value' (for keys that might be quoted if they have special chars, though not in SHARED_OBJ_TO_ADD)
|
320 |
+
// Allowing for flexible spacing around colon.
|
321 |
+
const propertyPattern = new RegExp(`"${key}"\\s*:\\s*${valueRegexStr}|${key}\\s*:\\s*${valueRegexStr}`);
|
322 |
+
expect(result).toMatch(propertyPattern);
|
323 |
+
});
|
324 |
+
|
325 |
+
// Check that original properties are preserved
|
326 |
+
expect(result).toContain("temperature: 0.5");
|
327 |
+
expect(result).toContain("top_p: 0.7");
|
328 |
+
|
329 |
+
// Check that the structure is maintained
|
330 |
+
expect(result.includes("{") && result.includes("}")).toBeTruthy();
|
331 |
+
});
|
332 |
+
});
|
333 |
+
});
|
334 |
+
|
335 |
+
// Test Python snippets
|
336 |
+
describe("Python", () => {
|
337 |
+
pythonTestCases.forEach((testCase, index) => {
|
338 |
+
it(`should add properties to Python snippet #${index + 1}: ${testCase.description}`, () => {
|
339 |
+
const result = modifySnippet(testCase.snippet, testCase.objToAdd);
|
340 |
+
|
341 |
+
// Check that all new properties are added with correct Python syntax
|
342 |
+
Object.entries(testCase.objToAdd).forEach(([key, value]) => {
|
343 |
+
const valueRegexStr = createValueRegex(value, "python");
|
344 |
+
let propertyPattern;
|
345 |
+
|
346 |
+
if (testCase.pythonSyntax === "dict") {
|
347 |
+
// Python dict: "key": value
|
348 |
+
propertyPattern = new RegExp(`"${key}"\\s*:\\s*${valueRegexStr}`);
|
349 |
+
} else {
|
350 |
+
// Python kwargs: key=value
|
351 |
+
// Convert camelCase keys from SHARED_OBJ_TO_ADD to snake_case for Python kwargs
|
352 |
+
const snakeKey = key.replace(/([A-Z])/g, "_$1").toLowerCase();
|
353 |
+
propertyPattern = new RegExp(`${snakeKey}\\s*=\\s*${valueRegexStr}`);
|
354 |
+
}
|
355 |
+
expect(result).toMatch(propertyPattern);
|
356 |
+
});
|
357 |
+
|
358 |
+
// Check that original properties are preserved
|
359 |
+
if (testCase.pythonSyntax === "dict") {
|
360 |
+
expect(result).toContain('"temperature": 0.5');
|
361 |
+
expect(result).toContain('"top_p": 0.7');
|
362 |
+
expect(result.includes("{") && result.includes("}")).toBeTruthy();
|
363 |
+
} else {
|
364 |
+
// kwargs
|
365 |
+
expect(result).toContain("temperature=0.5");
|
366 |
+
expect(result).toContain("top_p=0.7");
|
367 |
+
expect(result.includes("(") && result.includes(")")).toBeTruthy();
|
368 |
+
}
|
369 |
+
});
|
370 |
+
});
|
371 |
+
});
|
372 |
+
|
373 |
+
// Test Shell/curl snippets
|
374 |
+
describe("Shell/curl", () => {
|
375 |
+
shellTestCases.forEach((testCase, index) => {
|
376 |
+
it(`should add properties to shell snippet #${index + 1}: ${testCase.description}`, () => {
|
377 |
+
const result = modifySnippet(testCase.snippet, testCase.objToAdd);
|
378 |
+
|
379 |
+
// Check that all new properties are added with correct JSON syntax
|
380 |
+
Object.entries(testCase.objToAdd).forEach(([key, value]) => {
|
381 |
+
// For shell/JSON, keys are typically snake_case or as-is.
|
382 |
+
// Values need to be regex-matched.
|
383 |
+
// Convert camelCase keys from SHARED_OBJ_TO_ADD to snake_case for JSON
|
384 |
+
const snakeKey = key.replace(/([A-Z])/g, "_$1").toLowerCase();
|
385 |
+
const valueRegexStr = createValueRegex(value, "json");
|
386 |
+
const propertyPattern = new RegExp(`"${snakeKey}"\\s*:\\s*${valueRegexStr}`);
|
387 |
+
expect(result).toMatch(propertyPattern);
|
388 |
+
});
|
389 |
+
|
390 |
+
// Check that original properties are preserved
|
391 |
+
expect(result).toContain(`"temperature": 0.5`);
|
392 |
+
expect(result).toContain(`"top_p": 0.7`);
|
393 |
+
|
394 |
+
// Check that the structure is maintained
|
395 |
+
expect(result.includes("{") && result.includes("}")).toBeTruthy();
|
396 |
+
});
|
397 |
+
});
|
398 |
+
});
|
399 |
+
});
|
src/lib/utils/snippets.ts
ADDED
@@ -0,0 +1,294 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
const INDENT_STEP = " "; // 4 spaces for indentation
|
2 |
+
|
3 |
+
function stringifyJsJsonRecursive(value: unknown, currentIndent: string): string {
|
4 |
+
if (typeof value === "string") return `"${value}"`;
|
5 |
+
if (value === null) return "null";
|
6 |
+
if (typeof value === "boolean" || typeof value === "number") return String(value);
|
7 |
+
|
8 |
+
if (typeof value === "object" && value !== null) {
|
9 |
+
const nextIndent = currentIndent + INDENT_STEP;
|
10 |
+
if (Array.isArray(value)) {
|
11 |
+
if (value.length === 0) return "[]";
|
12 |
+
const items = value.map(v => stringifyJsJsonRecursive(v, nextIndent));
|
13 |
+
return "[\n" + items.map(item => nextIndent + item).join(",\n") + "\n" + currentIndent + "]";
|
14 |
+
}
|
15 |
+
|
16 |
+
const entries = Object.entries(value);
|
17 |
+
if (entries.length === 0) return "{}";
|
18 |
+
const properties = entries.map(([k, v]) => `${nextIndent}"${k}": ${stringifyJsJsonRecursive(v, nextIndent)}`);
|
19 |
+
|
20 |
+
return "{\n" + properties.join(",\n") + "\n" + currentIndent + "}";
|
21 |
+
}
|
22 |
+
return String(value); // Fallback for other types
|
23 |
+
}
|
24 |
+
|
25 |
+
function formatJsJsonValue(value: unknown, baseIndent: string): string {
|
26 |
+
return stringifyJsJsonRecursive(value, baseIndent);
|
27 |
+
}
|
28 |
+
|
29 |
+
function stringifyPythonRecursive(value: unknown, currentIndent: string): string {
|
30 |
+
if (typeof value === "string") return `"${value}"`;
|
31 |
+
if (typeof value === "boolean") return value ? "True" : "False";
|
32 |
+
if (value === null) return "None";
|
33 |
+
if (typeof value === "number") return String(value);
|
34 |
+
|
35 |
+
if (typeof value === "object" && value !== null) {
|
36 |
+
const nextIndent = currentIndent + INDENT_STEP;
|
37 |
+
if (Array.isArray(value)) {
|
38 |
+
if (value.length === 0) return "[]";
|
39 |
+
const items = value.map(v => stringifyPythonRecursive(v, nextIndent));
|
40 |
+
return "[\n" + items.map(item => nextIndent + item).join(",\n") + "\n" + currentIndent + "]";
|
41 |
+
}
|
42 |
+
|
43 |
+
const entries = Object.entries(value);
|
44 |
+
if (entries.length === 0) return "{}";
|
45 |
+
// In Python, dictionary keys are typically strings.
|
46 |
+
const properties = entries.map(([k, v]) => `${nextIndent}"${k}": ${stringifyPythonRecursive(v, nextIndent)}`);
|
47 |
+
|
48 |
+
return "{\n" + properties.join(",\n") + "\n" + currentIndent + "}";
|
49 |
+
}
|
50 |
+
return String(value); // Fallback
|
51 |
+
}
|
52 |
+
|
53 |
+
function formatPythonValue(value: unknown, baseIndent: string): string {
|
54 |
+
return stringifyPythonRecursive(value, baseIndent);
|
55 |
+
}
|
56 |
+
|
57 |
+
/**
|
58 |
+
* Inserts new properties into a code snippet block (like a JS object or Python dict).
|
59 |
+
*/
|
60 |
+
function insertPropertiesInternal(
|
61 |
+
snippet: string,
|
62 |
+
newProperties: Record<string, unknown>,
|
63 |
+
blockStartMarker: RegExp, // Regex to find the character *opening* the block (e.g., '{' or '(')
|
64 |
+
openChar: string, // The opening character, e.g., '{' or '('
|
65 |
+
closeChar: string, // The closing character, e.g., '}' or ')'
|
66 |
+
propFormatter: (key: string, formattedValue: string, indent: string) => string,
|
67 |
+
valueFormatter: (value: unknown, baseIndent: string) => string
|
68 |
+
): string {
|
69 |
+
if (Object.keys(newProperties).length === 0) {
|
70 |
+
return snippet;
|
71 |
+
}
|
72 |
+
|
73 |
+
const match = snippet.match(blockStartMarker);
|
74 |
+
// match.index is the start of the whole marker, e.g. "client.chatCompletionStream("
|
75 |
+
// We need the index of the openChar itself.
|
76 |
+
if (!match || typeof match.index !== "number") {
|
77 |
+
return snippet;
|
78 |
+
}
|
79 |
+
|
80 |
+
const openCharIndex = snippet.indexOf(openChar, match.index + match[0].length - 1);
|
81 |
+
if (openCharIndex === -1) {
|
82 |
+
return snippet;
|
83 |
+
}
|
84 |
+
|
85 |
+
let balance = 1;
|
86 |
+
let closeCharIndex = -1;
|
87 |
+
for (let i = openCharIndex + 1; i < snippet.length; i++) {
|
88 |
+
if (snippet[i] === openChar) {
|
89 |
+
balance++;
|
90 |
+
} else if (snippet[i] === closeChar) {
|
91 |
+
balance--;
|
92 |
+
}
|
93 |
+
if (balance === 0) {
|
94 |
+
closeCharIndex = i;
|
95 |
+
break;
|
96 |
+
}
|
97 |
+
}
|
98 |
+
|
99 |
+
if (closeCharIndex === -1) {
|
100 |
+
return snippet; // Malformed or not found
|
101 |
+
}
|
102 |
+
|
103 |
+
const contentBeforeBlock = snippet.substring(0, openCharIndex + 1);
|
104 |
+
const currentContent = snippet.substring(openCharIndex + 1, closeCharIndex);
|
105 |
+
const contentAfterBlock = snippet.substring(closeCharIndex);
|
106 |
+
|
107 |
+
// Determine indentation
|
108 |
+
let indent = "";
|
109 |
+
const lines = currentContent.split("\n");
|
110 |
+
if (lines.length > 1) {
|
111 |
+
for (const line of lines) {
|
112 |
+
const lineIndentMatch = line.match(/^(\s+)\S/);
|
113 |
+
if (lineIndentMatch) {
|
114 |
+
indent = lineIndentMatch[1] ?? "";
|
115 |
+
break;
|
116 |
+
}
|
117 |
+
}
|
118 |
+
}
|
119 |
+
if (!indent) {
|
120 |
+
// If no indent found, or content is empty/single line, derive from openChar line
|
121 |
+
const lineOfOpenCharStart = snippet.lastIndexOf("\n", openCharIndex) + 1;
|
122 |
+
const lineOfOpenChar = snippet.substring(lineOfOpenCharStart, openCharIndex);
|
123 |
+
const openCharLineIndentMatch = lineOfOpenChar.match(/^(\s*)/);
|
124 |
+
indent = (openCharLineIndentMatch ? openCharLineIndentMatch[1] : "") + " "; // Default to 4 spaces more
|
125 |
+
}
|
126 |
+
|
127 |
+
let newPropsStr = "";
|
128 |
+
Object.entries(newProperties).forEach(([key, value]) => {
|
129 |
+
newPropsStr += propFormatter(key, valueFormatter(value, indent), indent);
|
130 |
+
});
|
131 |
+
|
132 |
+
const trimmedOriginalContent = currentContent.trim();
|
133 |
+
let combinedContent;
|
134 |
+
|
135 |
+
if (trimmedOriginalContent) {
|
136 |
+
// There was actual non-whitespace content.
|
137 |
+
// Preserve original currentContent structure as much as possible.
|
138 |
+
// Find the end of the textual part of currentContent (before any pure trailing whitespace).
|
139 |
+
let endOfTextualPart = currentContent.length;
|
140 |
+
while (endOfTextualPart > 0 && /\s/.test(currentContent.charAt(endOfTextualPart - 1))) {
|
141 |
+
endOfTextualPart--;
|
142 |
+
}
|
143 |
+
const textualPartOfCurrentContent = currentContent.substring(0, endOfTextualPart);
|
144 |
+
const trailingWhitespaceOfCurrentContent = currentContent.substring(endOfTextualPart);
|
145 |
+
|
146 |
+
let processedTextualPart = textualPartOfCurrentContent;
|
147 |
+
if (processedTextualPart && !processedTextualPart.endsWith(",")) {
|
148 |
+
processedTextualPart += ",";
|
149 |
+
}
|
150 |
+
|
151 |
+
// Add a newline separator if the original trailing whitespace doesn't end with one.
|
152 |
+
const separator =
|
153 |
+
trailingWhitespaceOfCurrentContent.endsWith("\n") || trailingWhitespaceOfCurrentContent.endsWith("\r")
|
154 |
+
? ""
|
155 |
+
: "\n";
|
156 |
+
combinedContent = processedTextualPart + trailingWhitespaceOfCurrentContent + separator + newPropsStr;
|
157 |
+
} else {
|
158 |
+
// currentContent was empty or contained only whitespace.
|
159 |
+
// Check if the original block opening (e.g., '{' or '(') was immediately followed by a newline.
|
160 |
+
const openCharFollowedByNewline =
|
161 |
+
snippet[openCharIndex + 1] === "\n" ||
|
162 |
+
(snippet[openCharIndex + 1] === "\r" && snippet[openCharIndex + 2] === "\n");
|
163 |
+
if (openCharFollowedByNewline) {
|
164 |
+
combinedContent = newPropsStr; // newPropsStr already starts with indent
|
165 |
+
} else {
|
166 |
+
combinedContent = "\n" + newPropsStr; // Add a newline first, then newPropsStr
|
167 |
+
}
|
168 |
+
}
|
169 |
+
|
170 |
+
// Remove the trailing comma (and its trailing whitespace/newline) from the last property added.
|
171 |
+
combinedContent = combinedContent.replace(/,\s*$/, "");
|
172 |
+
|
173 |
+
// Ensure the block content ends with a newline, and the closing character is on its own line, indented.
|
174 |
+
if (combinedContent.trim()) {
|
175 |
+
// If there's any actual content in the block
|
176 |
+
if (!combinedContent.endsWith("\n")) {
|
177 |
+
combinedContent += "\n";
|
178 |
+
}
|
179 |
+
// Determine the base indent for the closing character's line
|
180 |
+
const lineOfOpenCharStart = snippet.lastIndexOf("\n", openCharIndex) + 1;
|
181 |
+
const openCharLine = snippet.substring(lineOfOpenCharStart, openCharIndex);
|
182 |
+
const baseIndentMatch = openCharLine.match(/^(\s*)/);
|
183 |
+
const baseIndent = baseIndentMatch ? baseIndentMatch[1] : "";
|
184 |
+
combinedContent += baseIndent;
|
185 |
+
} else {
|
186 |
+
// Block is effectively empty (e.g., was {} and no properties added, or newPropsStr was empty - though current logic prevents this if newProperties is not empty).
|
187 |
+
// Format as an empty block with the closing char on a new, indented line.
|
188 |
+
const lineOfOpenCharStart = snippet.lastIndexOf("\n", openCharIndex) + 1;
|
189 |
+
const openCharLine = snippet.substring(lineOfOpenCharStart, openCharIndex);
|
190 |
+
const baseIndentMatch = openCharLine.match(/^(\s*)/);
|
191 |
+
const baseIndent = baseIndentMatch ? baseIndentMatch[1] : "";
|
192 |
+
|
193 |
+
const openCharFollowedByNewline =
|
194 |
+
snippet[openCharIndex + 1] === "\n" ||
|
195 |
+
(snippet[openCharIndex + 1] === "\r" && snippet[openCharIndex + 2] === "\n");
|
196 |
+
if (openCharFollowedByNewline) {
|
197 |
+
// Original was like {\n}
|
198 |
+
combinedContent = baseIndent; // Just the indent for the closing char
|
199 |
+
} else {
|
200 |
+
// Original was like {}
|
201 |
+
combinedContent = "\n" + baseIndent; // Newline, then indent for closing char
|
202 |
+
}
|
203 |
+
}
|
204 |
+
|
205 |
+
return contentBeforeBlock + combinedContent + contentAfterBlock;
|
206 |
+
}
|
207 |
+
|
208 |
+
export function modifySnippet(snippet: string, newProperties: Record<string, unknown>): string {
|
209 |
+
// JS: HuggingFace InferenceClient (streaming)
|
210 |
+
if (snippet.includes("client.chatCompletionStream")) {
|
211 |
+
return insertPropertiesInternal(
|
212 |
+
snippet,
|
213 |
+
newProperties,
|
214 |
+
/client\.chatCompletionStream\s*\(\s*/, // Finds "client.chatCompletionStream("
|
215 |
+
"{", // The parameters are in an object literal
|
216 |
+
"}",
|
217 |
+
(key, value, indent) => `${indent}${key}: ${value},\n`, // JS object literal style
|
218 |
+
formatJsJsonValue
|
219 |
+
);
|
220 |
+
}
|
221 |
+
// JS: HuggingFace InferenceClient (non-streaming)
|
222 |
+
else if (snippet.includes("client.chatCompletion") && snippet.includes("InferenceClient")) {
|
223 |
+
// Ensure it's not the OpenAI client by also checking for InferenceClient
|
224 |
+
return insertPropertiesInternal(
|
225 |
+
snippet,
|
226 |
+
newProperties,
|
227 |
+
/client\.chatCompletion\s*\(\s*/, // Finds "client.chatCompletion("
|
228 |
+
"{", // The parameters are in an object literal
|
229 |
+
"}",
|
230 |
+
(key, value, indent) => `${indent}${key}: ${value},\n`, // JS object literal style
|
231 |
+
formatJsJsonValue
|
232 |
+
);
|
233 |
+
}
|
234 |
+
// JS: OpenAI Client
|
235 |
+
// Check for client.chat.completions.create and a common JS import pattern
|
236 |
+
else if (
|
237 |
+
snippet.includes("client.chat.completions.create") &&
|
238 |
+
(snippet.includes('import { OpenAI } from "openai"') || snippet.includes("new OpenAI("))
|
239 |
+
) {
|
240 |
+
return insertPropertiesInternal(
|
241 |
+
snippet,
|
242 |
+
newProperties,
|
243 |
+
/client\.chat\.completions\.create\s*\(\s*/, // Finds "client.chat.completions.create("
|
244 |
+
"{", // The parameters are in an object literal
|
245 |
+
"}",
|
246 |
+
(key, value, indent) => `${indent}${key}: ${value},\n`,
|
247 |
+
formatJsJsonValue
|
248 |
+
);
|
249 |
+
}
|
250 |
+
// Python: OpenAI or HuggingFace Client using client.chat.completions.create
|
251 |
+
else if (snippet.includes("client.chat.completions.create")) {
|
252 |
+
return insertPropertiesInternal(
|
253 |
+
snippet,
|
254 |
+
newProperties,
|
255 |
+
/client\.chat\.completions\.create\s*\(/, // Finds "client.chat.completions.create("
|
256 |
+
"(", // The parameters are directly in the function call tuple
|
257 |
+
")",
|
258 |
+
(key, value, indent) => {
|
259 |
+
const snakeKey = key.replace(/([A-Z])/g, "_$1").toLowerCase();
|
260 |
+
return `${indent}${snakeKey}=${value},\n`;
|
261 |
+
},
|
262 |
+
formatPythonValue
|
263 |
+
);
|
264 |
+
}
|
265 |
+
// Python: requests example with query({...})
|
266 |
+
else if (snippet.includes("def query(payload):") && snippet.includes("query({")) {
|
267 |
+
return insertPropertiesInternal(
|
268 |
+
snippet,
|
269 |
+
newProperties,
|
270 |
+
/query\s*\(\s*/, // Finds "query(" and expects a dictionary literal next
|
271 |
+
"{", // The parameters are in a dictionary literal
|
272 |
+
"}",
|
273 |
+
// Python dict keys are strings, values formatted for Python
|
274 |
+
(key, formattedValue, indent) => `${indent}"${key}": ${formattedValue},\n`,
|
275 |
+
formatPythonValue // Use formatPythonValue for the values themselves
|
276 |
+
);
|
277 |
+
}
|
278 |
+
// Shell/curl (JSON content)
|
279 |
+
else if (snippet.includes("curl") && snippet.includes("-d")) {
|
280 |
+
return insertPropertiesInternal(
|
281 |
+
snippet,
|
282 |
+
newProperties,
|
283 |
+
/-d\s*'(?:\\n)?\s*/,
|
284 |
+
"{",
|
285 |
+
"}",
|
286 |
+
(key, value, indent) => {
|
287 |
+
const snakeKey = key.replace(/([A-Z])/g, "_$1").toLowerCase();
|
288 |
+
return `${indent}"${snakeKey}": ${value},\n`;
|
289 |
+
},
|
290 |
+
formatJsJsonValue
|
291 |
+
);
|
292 |
+
}
|
293 |
+
return snippet;
|
294 |
+
}
|
vite.config.ts
CHANGED
@@ -1,3 +1,4 @@
|
|
|
|
1 |
import { sveltekit } from "@sveltejs/kit/vite";
|
2 |
import { defineConfig } from "vite";
|
3 |
import UnpluginTypia from "@ryoppippi/unplugin-typia/vite";
|
@@ -7,17 +8,34 @@ export const isDev = process.env.NODE_ENV === "development";
|
|
7 |
|
8 |
export default defineConfig({
|
9 |
plugins: [
|
10 |
-
UnpluginTypia({
|
11 |
-
log: "verbose",
|
12 |
-
cache: false,
|
13 |
-
}),
|
14 |
sveltekit(),
|
15 |
-
Icons({
|
16 |
-
compiler: "svelte",
|
17 |
-
autoInstall: true,
|
18 |
-
}),
|
19 |
],
|
20 |
-
server: {
|
21 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
22 |
},
|
23 |
});
|
|
|
1 |
+
import { svelteTesting } from "@testing-library/svelte/vite";
|
2 |
import { sveltekit } from "@sveltejs/kit/vite";
|
3 |
import { defineConfig } from "vite";
|
4 |
import UnpluginTypia from "@ryoppippi/unplugin-typia/vite";
|
|
|
8 |
|
9 |
export default defineConfig({
|
10 |
plugins: [
|
11 |
+
UnpluginTypia({ log: "verbose", cache: false }),
|
|
|
|
|
|
|
12 |
sveltekit(),
|
13 |
+
Icons({ compiler: "svelte", autoInstall: true }),
|
|
|
|
|
|
|
14 |
],
|
15 |
+
server: { allowedHosts: isDev ? true : undefined },
|
16 |
+
test: {
|
17 |
+
workspace: [
|
18 |
+
{
|
19 |
+
extends: "./vite.config.ts",
|
20 |
+
plugins: [svelteTesting()],
|
21 |
+
test: {
|
22 |
+
name: "client",
|
23 |
+
environment: "jsdom",
|
24 |
+
clearMocks: true,
|
25 |
+
include: ["src/**/*.svelte.{test,spec}.{js,ts}"],
|
26 |
+
exclude: ["src/lib/server/**"],
|
27 |
+
setupFiles: ["./vitest-setup-client.ts"],
|
28 |
+
},
|
29 |
+
},
|
30 |
+
{
|
31 |
+
extends: "./vite.config.ts",
|
32 |
+
test: {
|
33 |
+
name: "server",
|
34 |
+
environment: "node",
|
35 |
+
include: ["src/**/*.{test,spec}.{js,ts}"],
|
36 |
+
exclude: ["src/**/*.svelte.{test,spec}.{js,ts}"],
|
37 |
+
},
|
38 |
+
},
|
39 |
+
],
|
40 |
},
|
41 |
});
|
vitest-setup-client.ts
ADDED
@@ -0,0 +1,18 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import "@testing-library/jest-dom/vitest";
|
2 |
+
import { vi } from "vitest";
|
3 |
+
|
4 |
+
// required for svelte5 + jsdom as jsdom does not support matchMedia
|
5 |
+
Object.defineProperty(window, "matchMedia", {
|
6 |
+
writable: true,
|
7 |
+
enumerable: true,
|
8 |
+
value: vi.fn().mockImplementation(query => ({
|
9 |
+
matches: false,
|
10 |
+
media: query,
|
11 |
+
onchange: null,
|
12 |
+
addEventListener: vi.fn(),
|
13 |
+
removeEventListener: vi.fn(),
|
14 |
+
dispatchEvent: vi.fn(),
|
15 |
+
})),
|
16 |
+
});
|
17 |
+
|
18 |
+
// add more mocks here if you need them
|