sohei1l commited on
Commit
01570e1
·
1 Parent(s): 7e27968

Add audio upload interface with drag-drop and recording

Browse files
Files changed (4) hide show
  1. package-lock.json +835 -2
  2. package.json +1 -0
  3. src/App.css +113 -26
  4. src/App.jsx +140 -26
package-lock.json CHANGED
@@ -8,6 +8,7 @@
8
  "name": "clip-tagger",
9
  "version": "0.0.0",
10
  "dependencies": {
 
11
  "react": "^19.1.0",
12
  "react-dom": "^19.1.0"
13
  },
@@ -898,6 +899,15 @@
898
  "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
899
  }
900
  },
 
 
 
 
 
 
 
 
 
901
  "node_modules/@humanfs/core": {
902
  "version": "0.19.1",
903
  "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz",
@@ -1017,6 +1027,70 @@
1017
  "@jridgewell/sourcemap-codec": "^1.4.14"
1018
  }
1019
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1020
  "node_modules/@rolldown/pluginutils": {
1021
  "version": "1.0.0-beta.9",
1022
  "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.9.tgz",
@@ -1363,6 +1437,21 @@
1363
  "dev": true,
1364
  "license": "MIT"
1365
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1366
  "node_modules/@types/react": {
1367
  "version": "19.1.6",
1368
  "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.6.tgz",
@@ -1404,6 +1493,20 @@
1404
  "vite": "^4.2.0 || ^5.0.0 || ^6.0.0"
1405
  }
1406
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1407
  "node_modules/acorn": {
1408
  "version": "8.14.1",
1409
  "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz",
@@ -1467,6 +1570,12 @@
1467
  "dev": true,
1468
  "license": "Python-2.0"
1469
  },
 
 
 
 
 
 
1470
  "node_modules/balanced-match": {
1471
  "version": "1.0.2",
1472
  "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
@@ -1474,6 +1583,109 @@
1474
  "dev": true,
1475
  "license": "MIT"
1476
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1477
  "node_modules/brace-expansion": {
1478
  "version": "1.1.11",
1479
  "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
@@ -1518,6 +1730,30 @@
1518
  "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
1519
  }
1520
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1521
  "node_modules/callsites": {
1522
  "version": "3.1.0",
1523
  "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
@@ -1566,11 +1802,29 @@
1566
  "url": "https://github.com/chalk/chalk?sponsor=1"
1567
  }
1568
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1569
  "node_modules/color-convert": {
1570
  "version": "2.0.1",
1571
  "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
1572
  "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
1573
- "dev": true,
1574
  "license": "MIT",
1575
  "dependencies": {
1576
  "color-name": "~1.1.4"
@@ -1583,9 +1837,18 @@
1583
  "version": "1.1.4",
1584
  "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
1585
  "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
1586
- "dev": true,
1587
  "license": "MIT"
1588
  },
 
 
 
 
 
 
 
 
 
 
1589
  "node_modules/concat-map": {
1590
  "version": "0.0.1",
1591
  "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
@@ -1640,6 +1903,30 @@
1640
  }
1641
  }
1642
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1643
  "node_modules/deep-is": {
1644
  "version": "0.1.4",
1645
  "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
@@ -1647,6 +1934,15 @@
1647
  "dev": true,
1648
  "license": "MIT"
1649
  },
 
 
 
 
 
 
 
 
 
1650
  "node_modules/electron-to-chromium": {
1651
  "version": "1.5.159",
1652
  "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.159.tgz",
@@ -1654,6 +1950,15 @@
1654
  "dev": true,
1655
  "license": "ISC"
1656
  },
 
 
 
 
 
 
 
 
 
1657
  "node_modules/esbuild": {
1658
  "version": "0.25.5",
1659
  "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.5.tgz",
@@ -1896,6 +2201,15 @@
1896
  "node": ">=0.10.0"
1897
  }
1898
  },
 
 
 
 
 
 
 
 
 
1899
  "node_modules/fast-deep-equal": {
1900
  "version": "3.1.3",
1901
  "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
@@ -1903,6 +2217,12 @@
1903
  "dev": true,
1904
  "license": "MIT"
1905
  },
 
 
 
 
 
 
1906
  "node_modules/fast-json-stable-stringify": {
1907
  "version": "2.1.0",
1908
  "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
@@ -1976,6 +2296,12 @@
1976
  "node": ">=16"
1977
  }
1978
  },
 
 
 
 
 
 
1979
  "node_modules/flatted": {
1980
  "version": "3.3.3",
1981
  "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz",
@@ -1983,6 +2309,12 @@
1983
  "dev": true,
1984
  "license": "ISC"
1985
  },
 
 
 
 
 
 
1986
  "node_modules/fsevents": {
1987
  "version": "2.3.3",
1988
  "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
@@ -2008,6 +2340,12 @@
2008
  "node": ">=6.9.0"
2009
  }
2010
  },
 
 
 
 
 
 
2011
  "node_modules/glob-parent": {
2012
  "version": "6.0.2",
2013
  "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
@@ -2034,6 +2372,12 @@
2034
  "url": "https://github.com/sponsors/sindresorhus"
2035
  }
2036
  },
 
 
 
 
 
 
2037
  "node_modules/has-flag": {
2038
  "version": "4.0.0",
2039
  "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
@@ -2044,6 +2388,26 @@
2044
  "node": ">=8"
2045
  }
2046
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2047
  "node_modules/ignore": {
2048
  "version": "5.3.2",
2049
  "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
@@ -2081,6 +2445,24 @@
2081
  "node": ">=0.8.19"
2082
  }
2083
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2084
  "node_modules/is-extglob": {
2085
  "version": "2.1.1",
2086
  "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
@@ -2225,6 +2607,12 @@
2225
  "dev": true,
2226
  "license": "MIT"
2227
  },
 
 
 
 
 
 
2228
  "node_modules/lru-cache": {
2229
  "version": "5.1.1",
2230
  "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
@@ -2235,6 +2623,18 @@
2235
  "yallist": "^3.0.2"
2236
  }
2237
  },
 
 
 
 
 
 
 
 
 
 
 
 
2238
  "node_modules/minimatch": {
2239
  "version": "3.1.2",
2240
  "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
@@ -2248,6 +2648,21 @@
2248
  "node": "*"
2249
  }
2250
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2251
  "node_modules/ms": {
2252
  "version": "2.1.3",
2253
  "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
@@ -2274,6 +2689,12 @@
2274
  "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
2275
  }
2276
  },
 
 
 
 
 
 
2277
  "node_modules/natural-compare": {
2278
  "version": "1.4.0",
2279
  "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
@@ -2281,6 +2702,36 @@
2281
  "dev": true,
2282
  "license": "MIT"
2283
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2284
  "node_modules/node-releases": {
2285
  "version": "2.0.19",
2286
  "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz",
@@ -2288,6 +2739,59 @@
2288
  "dev": true,
2289
  "license": "MIT"
2290
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2291
  "node_modules/optionator": {
2292
  "version": "0.9.4",
2293
  "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz",
@@ -2391,6 +2895,12 @@
2391
  "url": "https://github.com/sponsors/jonschlinkert"
2392
  }
2393
  },
 
 
 
 
 
 
2394
  "node_modules/postcss": {
2395
  "version": "8.5.3",
2396
  "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz",
@@ -2420,6 +2930,60 @@
2420
  "node": "^10 || ^12 || >=14"
2421
  }
2422
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2423
  "node_modules/prelude-ls": {
2424
  "version": "1.2.1",
2425
  "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
@@ -2430,6 +2994,42 @@
2430
  "node": ">= 0.8.0"
2431
  }
2432
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2433
  "node_modules/punycode": {
2434
  "version": "2.3.1",
2435
  "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
@@ -2440,6 +3040,30 @@
2440
  "node": ">=6"
2441
  }
2442
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2443
  "node_modules/react": {
2444
  "version": "19.1.0",
2445
  "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz",
@@ -2471,6 +3095,20 @@
2471
  "node": ">=0.10.0"
2472
  }
2473
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2474
  "node_modules/resolve-from": {
2475
  "version": "4.0.0",
2476
  "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
@@ -2521,6 +3159,26 @@
2521
  "fsevents": "~2.3.2"
2522
  }
2523
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2524
  "node_modules/scheduler": {
2525
  "version": "0.26.0",
2526
  "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz",
@@ -2537,6 +3195,41 @@
2537
  "semver": "bin/semver.js"
2538
  }
2539
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2540
  "node_modules/shebang-command": {
2541
  "version": "2.0.0",
2542
  "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
@@ -2560,6 +3253,60 @@
2560
  "node": ">=8"
2561
  }
2562
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2563
  "node_modules/source-map-js": {
2564
  "version": "1.2.1",
2565
  "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
@@ -2570,6 +3317,28 @@
2570
  "node": ">=0.10.0"
2571
  }
2572
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2573
  "node_modules/strip-json-comments": {
2574
  "version": "3.1.1",
2575
  "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
@@ -2596,6 +3365,40 @@
2596
  "node": ">=8"
2597
  }
2598
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2599
  "node_modules/tinyglobby": {
2600
  "version": "0.2.14",
2601
  "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz",
@@ -2613,6 +3416,18 @@
2613
  "url": "https://github.com/sponsors/SuperchupuDev"
2614
  }
2615
  },
 
 
 
 
 
 
 
 
 
 
 
 
2616
  "node_modules/type-check": {
2617
  "version": "0.4.0",
2618
  "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
@@ -2626,6 +3441,12 @@
2626
  "node": ">= 0.8.0"
2627
  }
2628
  },
 
 
 
 
 
 
2629
  "node_modules/update-browserslist-db": {
2630
  "version": "1.1.3",
2631
  "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz",
@@ -2667,6 +3488,12 @@
2667
  "punycode": "^2.1.0"
2668
  }
2669
  },
 
 
 
 
 
 
2670
  "node_modules/vite": {
2671
  "version": "6.3.5",
2672
  "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.5.tgz",
@@ -2768,6 +3595,12 @@
2768
  "node": ">=0.10.0"
2769
  }
2770
  },
 
 
 
 
 
 
2771
  "node_modules/yallist": {
2772
  "version": "3.1.1",
2773
  "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
 
8
  "name": "clip-tagger",
9
  "version": "0.0.0",
10
  "dependencies": {
11
+ "@xenova/transformers": "^2.17.2",
12
  "react": "^19.1.0",
13
  "react-dom": "^19.1.0"
14
  },
 
899
  "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
900
  }
901
  },
902
+ "node_modules/@huggingface/jinja": {
903
+ "version": "0.2.2",
904
+ "resolved": "https://registry.npmjs.org/@huggingface/jinja/-/jinja-0.2.2.tgz",
905
+ "integrity": "sha512-/KPde26khDUIPkTGU82jdtTW9UAuvUTumCAbFs/7giR0SxsvZC4hru51PBvpijH6BVkHcROcvZM/lpy5h1jRRA==",
906
+ "license": "MIT",
907
+ "engines": {
908
+ "node": ">=18"
909
+ }
910
+ },
911
  "node_modules/@humanfs/core": {
912
  "version": "0.19.1",
913
  "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz",
 
1027
  "@jridgewell/sourcemap-codec": "^1.4.14"
1028
  }
1029
  },
1030
+ "node_modules/@protobufjs/aspromise": {
1031
+ "version": "1.1.2",
1032
+ "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz",
1033
+ "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==",
1034
+ "license": "BSD-3-Clause"
1035
+ },
1036
+ "node_modules/@protobufjs/base64": {
1037
+ "version": "1.1.2",
1038
+ "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz",
1039
+ "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==",
1040
+ "license": "BSD-3-Clause"
1041
+ },
1042
+ "node_modules/@protobufjs/codegen": {
1043
+ "version": "2.0.4",
1044
+ "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz",
1045
+ "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==",
1046
+ "license": "BSD-3-Clause"
1047
+ },
1048
+ "node_modules/@protobufjs/eventemitter": {
1049
+ "version": "1.1.0",
1050
+ "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz",
1051
+ "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==",
1052
+ "license": "BSD-3-Clause"
1053
+ },
1054
+ "node_modules/@protobufjs/fetch": {
1055
+ "version": "1.1.0",
1056
+ "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz",
1057
+ "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==",
1058
+ "license": "BSD-3-Clause",
1059
+ "dependencies": {
1060
+ "@protobufjs/aspromise": "^1.1.1",
1061
+ "@protobufjs/inquire": "^1.1.0"
1062
+ }
1063
+ },
1064
+ "node_modules/@protobufjs/float": {
1065
+ "version": "1.0.2",
1066
+ "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz",
1067
+ "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==",
1068
+ "license": "BSD-3-Clause"
1069
+ },
1070
+ "node_modules/@protobufjs/inquire": {
1071
+ "version": "1.1.0",
1072
+ "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz",
1073
+ "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==",
1074
+ "license": "BSD-3-Clause"
1075
+ },
1076
+ "node_modules/@protobufjs/path": {
1077
+ "version": "1.1.2",
1078
+ "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz",
1079
+ "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==",
1080
+ "license": "BSD-3-Clause"
1081
+ },
1082
+ "node_modules/@protobufjs/pool": {
1083
+ "version": "1.1.0",
1084
+ "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz",
1085
+ "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==",
1086
+ "license": "BSD-3-Clause"
1087
+ },
1088
+ "node_modules/@protobufjs/utf8": {
1089
+ "version": "1.1.0",
1090
+ "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz",
1091
+ "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==",
1092
+ "license": "BSD-3-Clause"
1093
+ },
1094
  "node_modules/@rolldown/pluginutils": {
1095
  "version": "1.0.0-beta.9",
1096
  "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.9.tgz",
 
1437
  "dev": true,
1438
  "license": "MIT"
1439
  },
1440
+ "node_modules/@types/long": {
1441
+ "version": "4.0.2",
1442
+ "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz",
1443
+ "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==",
1444
+ "license": "MIT"
1445
+ },
1446
+ "node_modules/@types/node": {
1447
+ "version": "22.15.24",
1448
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.24.tgz",
1449
+ "integrity": "sha512-w9CZGm9RDjzTh/D+hFwlBJ3ziUaVw7oufKA3vOFSOZlzmW9AkZnfjPb+DLnrV6qtgL/LNmP0/2zBNCFHL3F0ng==",
1450
+ "license": "MIT",
1451
+ "dependencies": {
1452
+ "undici-types": "~6.21.0"
1453
+ }
1454
+ },
1455
  "node_modules/@types/react": {
1456
  "version": "19.1.6",
1457
  "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.6.tgz",
 
1493
  "vite": "^4.2.0 || ^5.0.0 || ^6.0.0"
1494
  }
1495
  },
1496
+ "node_modules/@xenova/transformers": {
1497
+ "version": "2.17.2",
1498
+ "resolved": "https://registry.npmjs.org/@xenova/transformers/-/transformers-2.17.2.tgz",
1499
+ "integrity": "sha512-lZmHqzrVIkSvZdKZEx7IYY51TK0WDrC8eR0c5IMnBsO8di8are1zzw8BlLhyO2TklZKLN5UffNGs1IJwT6oOqQ==",
1500
+ "license": "Apache-2.0",
1501
+ "dependencies": {
1502
+ "@huggingface/jinja": "^0.2.2",
1503
+ "onnxruntime-web": "1.14.0",
1504
+ "sharp": "^0.32.0"
1505
+ },
1506
+ "optionalDependencies": {
1507
+ "onnxruntime-node": "1.14.0"
1508
+ }
1509
+ },
1510
  "node_modules/acorn": {
1511
  "version": "8.14.1",
1512
  "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz",
 
1570
  "dev": true,
1571
  "license": "Python-2.0"
1572
  },
1573
+ "node_modules/b4a": {
1574
+ "version": "1.6.7",
1575
+ "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.7.tgz",
1576
+ "integrity": "sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==",
1577
+ "license": "Apache-2.0"
1578
+ },
1579
  "node_modules/balanced-match": {
1580
  "version": "1.0.2",
1581
  "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
 
1583
  "dev": true,
1584
  "license": "MIT"
1585
  },
1586
+ "node_modules/bare-events": {
1587
+ "version": "2.5.4",
1588
+ "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.5.4.tgz",
1589
+ "integrity": "sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA==",
1590
+ "license": "Apache-2.0",
1591
+ "optional": true
1592
+ },
1593
+ "node_modules/bare-fs": {
1594
+ "version": "4.1.5",
1595
+ "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.1.5.tgz",
1596
+ "integrity": "sha512-1zccWBMypln0jEE05LzZt+V/8y8AQsQQqxtklqaIyg5nu6OAYFhZxPXinJTSG+kU5qyNmeLgcn9AW7eHiCHVLA==",
1597
+ "license": "Apache-2.0",
1598
+ "optional": true,
1599
+ "dependencies": {
1600
+ "bare-events": "^2.5.4",
1601
+ "bare-path": "^3.0.0",
1602
+ "bare-stream": "^2.6.4"
1603
+ },
1604
+ "engines": {
1605
+ "bare": ">=1.16.0"
1606
+ },
1607
+ "peerDependencies": {
1608
+ "bare-buffer": "*"
1609
+ },
1610
+ "peerDependenciesMeta": {
1611
+ "bare-buffer": {
1612
+ "optional": true
1613
+ }
1614
+ }
1615
+ },
1616
+ "node_modules/bare-os": {
1617
+ "version": "3.6.1",
1618
+ "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.6.1.tgz",
1619
+ "integrity": "sha512-uaIjxokhFidJP+bmmvKSgiMzj2sV5GPHaZVAIktcxcpCyBFFWO+YlikVAdhmUo2vYFvFhOXIAlldqV29L8126g==",
1620
+ "license": "Apache-2.0",
1621
+ "optional": true,
1622
+ "engines": {
1623
+ "bare": ">=1.14.0"
1624
+ }
1625
+ },
1626
+ "node_modules/bare-path": {
1627
+ "version": "3.0.0",
1628
+ "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-3.0.0.tgz",
1629
+ "integrity": "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==",
1630
+ "license": "Apache-2.0",
1631
+ "optional": true,
1632
+ "dependencies": {
1633
+ "bare-os": "^3.0.1"
1634
+ }
1635
+ },
1636
+ "node_modules/bare-stream": {
1637
+ "version": "2.6.5",
1638
+ "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.6.5.tgz",
1639
+ "integrity": "sha512-jSmxKJNJmHySi6hC42zlZnq00rga4jjxcgNZjY9N5WlOe/iOoGRtdwGsHzQv2RlH2KOYMwGUXhf2zXd32BA9RA==",
1640
+ "license": "Apache-2.0",
1641
+ "optional": true,
1642
+ "dependencies": {
1643
+ "streamx": "^2.21.0"
1644
+ },
1645
+ "peerDependencies": {
1646
+ "bare-buffer": "*",
1647
+ "bare-events": "*"
1648
+ },
1649
+ "peerDependenciesMeta": {
1650
+ "bare-buffer": {
1651
+ "optional": true
1652
+ },
1653
+ "bare-events": {
1654
+ "optional": true
1655
+ }
1656
+ }
1657
+ },
1658
+ "node_modules/base64-js": {
1659
+ "version": "1.5.1",
1660
+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
1661
+ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
1662
+ "funding": [
1663
+ {
1664
+ "type": "github",
1665
+ "url": "https://github.com/sponsors/feross"
1666
+ },
1667
+ {
1668
+ "type": "patreon",
1669
+ "url": "https://www.patreon.com/feross"
1670
+ },
1671
+ {
1672
+ "type": "consulting",
1673
+ "url": "https://feross.org/support"
1674
+ }
1675
+ ],
1676
+ "license": "MIT"
1677
+ },
1678
+ "node_modules/bl": {
1679
+ "version": "4.1.0",
1680
+ "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
1681
+ "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
1682
+ "license": "MIT",
1683
+ "dependencies": {
1684
+ "buffer": "^5.5.0",
1685
+ "inherits": "^2.0.4",
1686
+ "readable-stream": "^3.4.0"
1687
+ }
1688
+ },
1689
  "node_modules/brace-expansion": {
1690
  "version": "1.1.11",
1691
  "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
 
1730
  "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
1731
  }
1732
  },
1733
+ "node_modules/buffer": {
1734
+ "version": "5.7.1",
1735
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
1736
+ "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
1737
+ "funding": [
1738
+ {
1739
+ "type": "github",
1740
+ "url": "https://github.com/sponsors/feross"
1741
+ },
1742
+ {
1743
+ "type": "patreon",
1744
+ "url": "https://www.patreon.com/feross"
1745
+ },
1746
+ {
1747
+ "type": "consulting",
1748
+ "url": "https://feross.org/support"
1749
+ }
1750
+ ],
1751
+ "license": "MIT",
1752
+ "dependencies": {
1753
+ "base64-js": "^1.3.1",
1754
+ "ieee754": "^1.1.13"
1755
+ }
1756
+ },
1757
  "node_modules/callsites": {
1758
  "version": "3.1.0",
1759
  "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
 
1802
  "url": "https://github.com/chalk/chalk?sponsor=1"
1803
  }
1804
  },
1805
+ "node_modules/chownr": {
1806
+ "version": "1.1.4",
1807
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
1808
+ "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==",
1809
+ "license": "ISC"
1810
+ },
1811
+ "node_modules/color": {
1812
+ "version": "4.2.3",
1813
+ "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz",
1814
+ "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==",
1815
+ "license": "MIT",
1816
+ "dependencies": {
1817
+ "color-convert": "^2.0.1",
1818
+ "color-string": "^1.9.0"
1819
+ },
1820
+ "engines": {
1821
+ "node": ">=12.5.0"
1822
+ }
1823
+ },
1824
  "node_modules/color-convert": {
1825
  "version": "2.0.1",
1826
  "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
1827
  "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
 
1828
  "license": "MIT",
1829
  "dependencies": {
1830
  "color-name": "~1.1.4"
 
1837
  "version": "1.1.4",
1838
  "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
1839
  "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
 
1840
  "license": "MIT"
1841
  },
1842
+ "node_modules/color-string": {
1843
+ "version": "1.9.1",
1844
+ "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz",
1845
+ "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==",
1846
+ "license": "MIT",
1847
+ "dependencies": {
1848
+ "color-name": "^1.0.0",
1849
+ "simple-swizzle": "^0.2.2"
1850
+ }
1851
+ },
1852
  "node_modules/concat-map": {
1853
  "version": "0.0.1",
1854
  "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
 
1903
  }
1904
  }
1905
  },
1906
+ "node_modules/decompress-response": {
1907
+ "version": "6.0.0",
1908
+ "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz",
1909
+ "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==",
1910
+ "license": "MIT",
1911
+ "dependencies": {
1912
+ "mimic-response": "^3.1.0"
1913
+ },
1914
+ "engines": {
1915
+ "node": ">=10"
1916
+ },
1917
+ "funding": {
1918
+ "url": "https://github.com/sponsors/sindresorhus"
1919
+ }
1920
+ },
1921
+ "node_modules/deep-extend": {
1922
+ "version": "0.6.0",
1923
+ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
1924
+ "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
1925
+ "license": "MIT",
1926
+ "engines": {
1927
+ "node": ">=4.0.0"
1928
+ }
1929
+ },
1930
  "node_modules/deep-is": {
1931
  "version": "0.1.4",
1932
  "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
 
1934
  "dev": true,
1935
  "license": "MIT"
1936
  },
1937
+ "node_modules/detect-libc": {
1938
+ "version": "2.0.4",
1939
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz",
1940
+ "integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==",
1941
+ "license": "Apache-2.0",
1942
+ "engines": {
1943
+ "node": ">=8"
1944
+ }
1945
+ },
1946
  "node_modules/electron-to-chromium": {
1947
  "version": "1.5.159",
1948
  "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.159.tgz",
 
1950
  "dev": true,
1951
  "license": "ISC"
1952
  },
1953
+ "node_modules/end-of-stream": {
1954
+ "version": "1.4.4",
1955
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
1956
+ "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
1957
+ "license": "MIT",
1958
+ "dependencies": {
1959
+ "once": "^1.4.0"
1960
+ }
1961
+ },
1962
  "node_modules/esbuild": {
1963
  "version": "0.25.5",
1964
  "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.5.tgz",
 
2201
  "node": ">=0.10.0"
2202
  }
2203
  },
2204
+ "node_modules/expand-template": {
2205
+ "version": "2.0.3",
2206
+ "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz",
2207
+ "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==",
2208
+ "license": "(MIT OR WTFPL)",
2209
+ "engines": {
2210
+ "node": ">=6"
2211
+ }
2212
+ },
2213
  "node_modules/fast-deep-equal": {
2214
  "version": "3.1.3",
2215
  "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
 
2217
  "dev": true,
2218
  "license": "MIT"
2219
  },
2220
+ "node_modules/fast-fifo": {
2221
+ "version": "1.3.2",
2222
+ "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz",
2223
+ "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==",
2224
+ "license": "MIT"
2225
+ },
2226
  "node_modules/fast-json-stable-stringify": {
2227
  "version": "2.1.0",
2228
  "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
 
2296
  "node": ">=16"
2297
  }
2298
  },
2299
+ "node_modules/flatbuffers": {
2300
+ "version": "1.12.0",
2301
+ "resolved": "https://registry.npmjs.org/flatbuffers/-/flatbuffers-1.12.0.tgz",
2302
+ "integrity": "sha512-c7CZADjRcl6j0PlvFy0ZqXQ67qSEZfrVPynmnL+2zPc+NtMvrF8Y0QceMo7QqnSPc7+uWjUIAbvCQ5WIKlMVdQ==",
2303
+ "license": "SEE LICENSE IN LICENSE.txt"
2304
+ },
2305
  "node_modules/flatted": {
2306
  "version": "3.3.3",
2307
  "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz",
 
2309
  "dev": true,
2310
  "license": "ISC"
2311
  },
2312
+ "node_modules/fs-constants": {
2313
+ "version": "1.0.0",
2314
+ "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
2315
+ "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==",
2316
+ "license": "MIT"
2317
+ },
2318
  "node_modules/fsevents": {
2319
  "version": "2.3.3",
2320
  "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
 
2340
  "node": ">=6.9.0"
2341
  }
2342
  },
2343
+ "node_modules/github-from-package": {
2344
+ "version": "0.0.0",
2345
+ "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz",
2346
+ "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==",
2347
+ "license": "MIT"
2348
+ },
2349
  "node_modules/glob-parent": {
2350
  "version": "6.0.2",
2351
  "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
 
2372
  "url": "https://github.com/sponsors/sindresorhus"
2373
  }
2374
  },
2375
+ "node_modules/guid-typescript": {
2376
+ "version": "1.0.9",
2377
+ "resolved": "https://registry.npmjs.org/guid-typescript/-/guid-typescript-1.0.9.tgz",
2378
+ "integrity": "sha512-Y8T4vYhEfwJOTbouREvG+3XDsjr8E3kIr7uf+JZ0BYloFsttiHU0WfvANVsR7TxNUJa/WpCnw/Ino/p+DeBhBQ==",
2379
+ "license": "ISC"
2380
+ },
2381
  "node_modules/has-flag": {
2382
  "version": "4.0.0",
2383
  "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
 
2388
  "node": ">=8"
2389
  }
2390
  },
2391
+ "node_modules/ieee754": {
2392
+ "version": "1.2.1",
2393
+ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
2394
+ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
2395
+ "funding": [
2396
+ {
2397
+ "type": "github",
2398
+ "url": "https://github.com/sponsors/feross"
2399
+ },
2400
+ {
2401
+ "type": "patreon",
2402
+ "url": "https://www.patreon.com/feross"
2403
+ },
2404
+ {
2405
+ "type": "consulting",
2406
+ "url": "https://feross.org/support"
2407
+ }
2408
+ ],
2409
+ "license": "BSD-3-Clause"
2410
+ },
2411
  "node_modules/ignore": {
2412
  "version": "5.3.2",
2413
  "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
 
2445
  "node": ">=0.8.19"
2446
  }
2447
  },
2448
+ "node_modules/inherits": {
2449
+ "version": "2.0.4",
2450
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
2451
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
2452
+ "license": "ISC"
2453
+ },
2454
+ "node_modules/ini": {
2455
+ "version": "1.3.8",
2456
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
2457
+ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
2458
+ "license": "ISC"
2459
+ },
2460
+ "node_modules/is-arrayish": {
2461
+ "version": "0.3.2",
2462
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
2463
+ "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==",
2464
+ "license": "MIT"
2465
+ },
2466
  "node_modules/is-extglob": {
2467
  "version": "2.1.1",
2468
  "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
 
2607
  "dev": true,
2608
  "license": "MIT"
2609
  },
2610
+ "node_modules/long": {
2611
+ "version": "4.0.0",
2612
+ "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz",
2613
+ "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==",
2614
+ "license": "Apache-2.0"
2615
+ },
2616
  "node_modules/lru-cache": {
2617
  "version": "5.1.1",
2618
  "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
 
2623
  "yallist": "^3.0.2"
2624
  }
2625
  },
2626
+ "node_modules/mimic-response": {
2627
+ "version": "3.1.0",
2628
+ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz",
2629
+ "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==",
2630
+ "license": "MIT",
2631
+ "engines": {
2632
+ "node": ">=10"
2633
+ },
2634
+ "funding": {
2635
+ "url": "https://github.com/sponsors/sindresorhus"
2636
+ }
2637
+ },
2638
  "node_modules/minimatch": {
2639
  "version": "3.1.2",
2640
  "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
 
2648
  "node": "*"
2649
  }
2650
  },
2651
+ "node_modules/minimist": {
2652
+ "version": "1.2.8",
2653
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
2654
+ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
2655
+ "license": "MIT",
2656
+ "funding": {
2657
+ "url": "https://github.com/sponsors/ljharb"
2658
+ }
2659
+ },
2660
+ "node_modules/mkdirp-classic": {
2661
+ "version": "0.5.3",
2662
+ "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz",
2663
+ "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==",
2664
+ "license": "MIT"
2665
+ },
2666
  "node_modules/ms": {
2667
  "version": "2.1.3",
2668
  "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
 
2689
  "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
2690
  }
2691
  },
2692
+ "node_modules/napi-build-utils": {
2693
+ "version": "2.0.0",
2694
+ "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-2.0.0.tgz",
2695
+ "integrity": "sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==",
2696
+ "license": "MIT"
2697
+ },
2698
  "node_modules/natural-compare": {
2699
  "version": "1.4.0",
2700
  "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
 
2702
  "dev": true,
2703
  "license": "MIT"
2704
  },
2705
+ "node_modules/node-abi": {
2706
+ "version": "3.75.0",
2707
+ "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.75.0.tgz",
2708
+ "integrity": "sha512-OhYaY5sDsIka7H7AtijtI9jwGYLyl29eQn/W623DiN/MIv5sUqc4g7BIDThX+gb7di9f6xK02nkp8sdfFWZLTg==",
2709
+ "license": "MIT",
2710
+ "dependencies": {
2711
+ "semver": "^7.3.5"
2712
+ },
2713
+ "engines": {
2714
+ "node": ">=10"
2715
+ }
2716
+ },
2717
+ "node_modules/node-abi/node_modules/semver": {
2718
+ "version": "7.7.2",
2719
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz",
2720
+ "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
2721
+ "license": "ISC",
2722
+ "bin": {
2723
+ "semver": "bin/semver.js"
2724
+ },
2725
+ "engines": {
2726
+ "node": ">=10"
2727
+ }
2728
+ },
2729
+ "node_modules/node-addon-api": {
2730
+ "version": "6.1.0",
2731
+ "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz",
2732
+ "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==",
2733
+ "license": "MIT"
2734
+ },
2735
  "node_modules/node-releases": {
2736
  "version": "2.0.19",
2737
  "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz",
 
2739
  "dev": true,
2740
  "license": "MIT"
2741
  },
2742
+ "node_modules/once": {
2743
+ "version": "1.4.0",
2744
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
2745
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
2746
+ "license": "ISC",
2747
+ "dependencies": {
2748
+ "wrappy": "1"
2749
+ }
2750
+ },
2751
+ "node_modules/onnx-proto": {
2752
+ "version": "4.0.4",
2753
+ "resolved": "https://registry.npmjs.org/onnx-proto/-/onnx-proto-4.0.4.tgz",
2754
+ "integrity": "sha512-aldMOB3HRoo6q/phyB6QRQxSt895HNNw82BNyZ2CMh4bjeKv7g/c+VpAFtJuEMVfYLMbRx61hbuqnKceLeDcDA==",
2755
+ "license": "MIT",
2756
+ "dependencies": {
2757
+ "protobufjs": "^6.8.8"
2758
+ }
2759
+ },
2760
+ "node_modules/onnxruntime-common": {
2761
+ "version": "1.14.0",
2762
+ "resolved": "https://registry.npmjs.org/onnxruntime-common/-/onnxruntime-common-1.14.0.tgz",
2763
+ "integrity": "sha512-3LJpegM2iMNRX2wUmtYfeX/ytfOzNwAWKSq1HbRrKc9+uqG/FsEA0bbKZl1btQeZaXhC26l44NWpNUeXPII7Ew==",
2764
+ "license": "MIT"
2765
+ },
2766
+ "node_modules/onnxruntime-node": {
2767
+ "version": "1.14.0",
2768
+ "resolved": "https://registry.npmjs.org/onnxruntime-node/-/onnxruntime-node-1.14.0.tgz",
2769
+ "integrity": "sha512-5ba7TWomIV/9b6NH/1x/8QEeowsb+jBEvFzU6z0T4mNsFwdPqXeFUM7uxC6QeSRkEbWu3qEB0VMjrvzN/0S9+w==",
2770
+ "license": "MIT",
2771
+ "optional": true,
2772
+ "os": [
2773
+ "win32",
2774
+ "darwin",
2775
+ "linux"
2776
+ ],
2777
+ "dependencies": {
2778
+ "onnxruntime-common": "~1.14.0"
2779
+ }
2780
+ },
2781
+ "node_modules/onnxruntime-web": {
2782
+ "version": "1.14.0",
2783
+ "resolved": "https://registry.npmjs.org/onnxruntime-web/-/onnxruntime-web-1.14.0.tgz",
2784
+ "integrity": "sha512-Kcqf43UMfW8mCydVGcX9OMXI2VN17c0p6XvR7IPSZzBf/6lteBzXHvcEVWDPmCKuGombl997HgLqj91F11DzXw==",
2785
+ "license": "MIT",
2786
+ "dependencies": {
2787
+ "flatbuffers": "^1.12.0",
2788
+ "guid-typescript": "^1.0.9",
2789
+ "long": "^4.0.0",
2790
+ "onnx-proto": "^4.0.4",
2791
+ "onnxruntime-common": "~1.14.0",
2792
+ "platform": "^1.3.6"
2793
+ }
2794
+ },
2795
  "node_modules/optionator": {
2796
  "version": "0.9.4",
2797
  "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz",
 
2895
  "url": "https://github.com/sponsors/jonschlinkert"
2896
  }
2897
  },
2898
+ "node_modules/platform": {
2899
+ "version": "1.3.6",
2900
+ "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.6.tgz",
2901
+ "integrity": "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==",
2902
+ "license": "MIT"
2903
+ },
2904
  "node_modules/postcss": {
2905
  "version": "8.5.3",
2906
  "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz",
 
2930
  "node": "^10 || ^12 || >=14"
2931
  }
2932
  },
2933
+ "node_modules/prebuild-install": {
2934
+ "version": "7.1.3",
2935
+ "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.3.tgz",
2936
+ "integrity": "sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==",
2937
+ "license": "MIT",
2938
+ "dependencies": {
2939
+ "detect-libc": "^2.0.0",
2940
+ "expand-template": "^2.0.3",
2941
+ "github-from-package": "0.0.0",
2942
+ "minimist": "^1.2.3",
2943
+ "mkdirp-classic": "^0.5.3",
2944
+ "napi-build-utils": "^2.0.0",
2945
+ "node-abi": "^3.3.0",
2946
+ "pump": "^3.0.0",
2947
+ "rc": "^1.2.7",
2948
+ "simple-get": "^4.0.0",
2949
+ "tar-fs": "^2.0.0",
2950
+ "tunnel-agent": "^0.6.0"
2951
+ },
2952
+ "bin": {
2953
+ "prebuild-install": "bin.js"
2954
+ },
2955
+ "engines": {
2956
+ "node": ">=10"
2957
+ }
2958
+ },
2959
+ "node_modules/prebuild-install/node_modules/tar-fs": {
2960
+ "version": "2.1.3",
2961
+ "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.3.tgz",
2962
+ "integrity": "sha512-090nwYJDmlhwFwEW3QQl+vaNnxsO2yVsd45eTKRBzSzu+hlb1w2K9inVq5b0ngXuLVqQ4ApvsUHHnu/zQNkWAg==",
2963
+ "license": "MIT",
2964
+ "dependencies": {
2965
+ "chownr": "^1.1.1",
2966
+ "mkdirp-classic": "^0.5.2",
2967
+ "pump": "^3.0.0",
2968
+ "tar-stream": "^2.1.4"
2969
+ }
2970
+ },
2971
+ "node_modules/prebuild-install/node_modules/tar-stream": {
2972
+ "version": "2.2.0",
2973
+ "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz",
2974
+ "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==",
2975
+ "license": "MIT",
2976
+ "dependencies": {
2977
+ "bl": "^4.0.3",
2978
+ "end-of-stream": "^1.4.1",
2979
+ "fs-constants": "^1.0.0",
2980
+ "inherits": "^2.0.3",
2981
+ "readable-stream": "^3.1.1"
2982
+ },
2983
+ "engines": {
2984
+ "node": ">=6"
2985
+ }
2986
+ },
2987
  "node_modules/prelude-ls": {
2988
  "version": "1.2.1",
2989
  "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
 
2994
  "node": ">= 0.8.0"
2995
  }
2996
  },
2997
+ "node_modules/protobufjs": {
2998
+ "version": "6.11.4",
2999
+ "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.4.tgz",
3000
+ "integrity": "sha512-5kQWPaJHi1WoCpjTGszzQ32PG2F4+wRY6BmAT4Vfw56Q2FZ4YZzK20xUYQH4YkfehY1e6QSICrJquM6xXZNcrw==",
3001
+ "hasInstallScript": true,
3002
+ "license": "BSD-3-Clause",
3003
+ "dependencies": {
3004
+ "@protobufjs/aspromise": "^1.1.2",
3005
+ "@protobufjs/base64": "^1.1.2",
3006
+ "@protobufjs/codegen": "^2.0.4",
3007
+ "@protobufjs/eventemitter": "^1.1.0",
3008
+ "@protobufjs/fetch": "^1.1.0",
3009
+ "@protobufjs/float": "^1.0.2",
3010
+ "@protobufjs/inquire": "^1.1.0",
3011
+ "@protobufjs/path": "^1.1.2",
3012
+ "@protobufjs/pool": "^1.1.0",
3013
+ "@protobufjs/utf8": "^1.1.0",
3014
+ "@types/long": "^4.0.1",
3015
+ "@types/node": ">=13.7.0",
3016
+ "long": "^4.0.0"
3017
+ },
3018
+ "bin": {
3019
+ "pbjs": "bin/pbjs",
3020
+ "pbts": "bin/pbts"
3021
+ }
3022
+ },
3023
+ "node_modules/pump": {
3024
+ "version": "3.0.2",
3025
+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz",
3026
+ "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==",
3027
+ "license": "MIT",
3028
+ "dependencies": {
3029
+ "end-of-stream": "^1.1.0",
3030
+ "once": "^1.3.1"
3031
+ }
3032
+ },
3033
  "node_modules/punycode": {
3034
  "version": "2.3.1",
3035
  "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
 
3040
  "node": ">=6"
3041
  }
3042
  },
3043
+ "node_modules/rc": {
3044
+ "version": "1.2.8",
3045
+ "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
3046
+ "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
3047
+ "license": "(BSD-2-Clause OR MIT OR Apache-2.0)",
3048
+ "dependencies": {
3049
+ "deep-extend": "^0.6.0",
3050
+ "ini": "~1.3.0",
3051
+ "minimist": "^1.2.0",
3052
+ "strip-json-comments": "~2.0.1"
3053
+ },
3054
+ "bin": {
3055
+ "rc": "cli.js"
3056
+ }
3057
+ },
3058
+ "node_modules/rc/node_modules/strip-json-comments": {
3059
+ "version": "2.0.1",
3060
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
3061
+ "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==",
3062
+ "license": "MIT",
3063
+ "engines": {
3064
+ "node": ">=0.10.0"
3065
+ }
3066
+ },
3067
  "node_modules/react": {
3068
  "version": "19.1.0",
3069
  "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz",
 
3095
  "node": ">=0.10.0"
3096
  }
3097
  },
3098
+ "node_modules/readable-stream": {
3099
+ "version": "3.6.2",
3100
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
3101
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
3102
+ "license": "MIT",
3103
+ "dependencies": {
3104
+ "inherits": "^2.0.3",
3105
+ "string_decoder": "^1.1.1",
3106
+ "util-deprecate": "^1.0.1"
3107
+ },
3108
+ "engines": {
3109
+ "node": ">= 6"
3110
+ }
3111
+ },
3112
  "node_modules/resolve-from": {
3113
  "version": "4.0.0",
3114
  "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
 
3159
  "fsevents": "~2.3.2"
3160
  }
3161
  },
3162
+ "node_modules/safe-buffer": {
3163
+ "version": "5.2.1",
3164
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
3165
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
3166
+ "funding": [
3167
+ {
3168
+ "type": "github",
3169
+ "url": "https://github.com/sponsors/feross"
3170
+ },
3171
+ {
3172
+ "type": "patreon",
3173
+ "url": "https://www.patreon.com/feross"
3174
+ },
3175
+ {
3176
+ "type": "consulting",
3177
+ "url": "https://feross.org/support"
3178
+ }
3179
+ ],
3180
+ "license": "MIT"
3181
+ },
3182
  "node_modules/scheduler": {
3183
  "version": "0.26.0",
3184
  "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz",
 
3195
  "semver": "bin/semver.js"
3196
  }
3197
  },
3198
+ "node_modules/sharp": {
3199
+ "version": "0.32.6",
3200
+ "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.32.6.tgz",
3201
+ "integrity": "sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==",
3202
+ "hasInstallScript": true,
3203
+ "license": "Apache-2.0",
3204
+ "dependencies": {
3205
+ "color": "^4.2.3",
3206
+ "detect-libc": "^2.0.2",
3207
+ "node-addon-api": "^6.1.0",
3208
+ "prebuild-install": "^7.1.1",
3209
+ "semver": "^7.5.4",
3210
+ "simple-get": "^4.0.1",
3211
+ "tar-fs": "^3.0.4",
3212
+ "tunnel-agent": "^0.6.0"
3213
+ },
3214
+ "engines": {
3215
+ "node": ">=14.15.0"
3216
+ },
3217
+ "funding": {
3218
+ "url": "https://opencollective.com/libvips"
3219
+ }
3220
+ },
3221
+ "node_modules/sharp/node_modules/semver": {
3222
+ "version": "7.7.2",
3223
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz",
3224
+ "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
3225
+ "license": "ISC",
3226
+ "bin": {
3227
+ "semver": "bin/semver.js"
3228
+ },
3229
+ "engines": {
3230
+ "node": ">=10"
3231
+ }
3232
+ },
3233
  "node_modules/shebang-command": {
3234
  "version": "2.0.0",
3235
  "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
 
3253
  "node": ">=8"
3254
  }
3255
  },
3256
+ "node_modules/simple-concat": {
3257
+ "version": "1.0.1",
3258
+ "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz",
3259
+ "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==",
3260
+ "funding": [
3261
+ {
3262
+ "type": "github",
3263
+ "url": "https://github.com/sponsors/feross"
3264
+ },
3265
+ {
3266
+ "type": "patreon",
3267
+ "url": "https://www.patreon.com/feross"
3268
+ },
3269
+ {
3270
+ "type": "consulting",
3271
+ "url": "https://feross.org/support"
3272
+ }
3273
+ ],
3274
+ "license": "MIT"
3275
+ },
3276
+ "node_modules/simple-get": {
3277
+ "version": "4.0.1",
3278
+ "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz",
3279
+ "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==",
3280
+ "funding": [
3281
+ {
3282
+ "type": "github",
3283
+ "url": "https://github.com/sponsors/feross"
3284
+ },
3285
+ {
3286
+ "type": "patreon",
3287
+ "url": "https://www.patreon.com/feross"
3288
+ },
3289
+ {
3290
+ "type": "consulting",
3291
+ "url": "https://feross.org/support"
3292
+ }
3293
+ ],
3294
+ "license": "MIT",
3295
+ "dependencies": {
3296
+ "decompress-response": "^6.0.0",
3297
+ "once": "^1.3.1",
3298
+ "simple-concat": "^1.0.0"
3299
+ }
3300
+ },
3301
+ "node_modules/simple-swizzle": {
3302
+ "version": "0.2.2",
3303
+ "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
3304
+ "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==",
3305
+ "license": "MIT",
3306
+ "dependencies": {
3307
+ "is-arrayish": "^0.3.1"
3308
+ }
3309
+ },
3310
  "node_modules/source-map-js": {
3311
  "version": "1.2.1",
3312
  "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
 
3317
  "node": ">=0.10.0"
3318
  }
3319
  },
3320
+ "node_modules/streamx": {
3321
+ "version": "2.22.0",
3322
+ "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.22.0.tgz",
3323
+ "integrity": "sha512-sLh1evHOzBy/iWRiR6d1zRcLao4gGZr3C1kzNz4fopCOKJb6xD9ub8Mpi9Mr1R6id5o43S+d93fI48UC5uM9aw==",
3324
+ "license": "MIT",
3325
+ "dependencies": {
3326
+ "fast-fifo": "^1.3.2",
3327
+ "text-decoder": "^1.1.0"
3328
+ },
3329
+ "optionalDependencies": {
3330
+ "bare-events": "^2.2.0"
3331
+ }
3332
+ },
3333
+ "node_modules/string_decoder": {
3334
+ "version": "1.3.0",
3335
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
3336
+ "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
3337
+ "license": "MIT",
3338
+ "dependencies": {
3339
+ "safe-buffer": "~5.2.0"
3340
+ }
3341
+ },
3342
  "node_modules/strip-json-comments": {
3343
  "version": "3.1.1",
3344
  "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
 
3365
  "node": ">=8"
3366
  }
3367
  },
3368
+ "node_modules/tar-fs": {
3369
+ "version": "3.0.9",
3370
+ "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.9.tgz",
3371
+ "integrity": "sha512-XF4w9Xp+ZQgifKakjZYmFdkLoSWd34VGKcsTCwlNWM7QG3ZbaxnTsaBwnjFZqHRf/rROxaR8rXnbtwdvaDI+lA==",
3372
+ "license": "MIT",
3373
+ "dependencies": {
3374
+ "pump": "^3.0.0",
3375
+ "tar-stream": "^3.1.5"
3376
+ },
3377
+ "optionalDependencies": {
3378
+ "bare-fs": "^4.0.1",
3379
+ "bare-path": "^3.0.0"
3380
+ }
3381
+ },
3382
+ "node_modules/tar-stream": {
3383
+ "version": "3.1.7",
3384
+ "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz",
3385
+ "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==",
3386
+ "license": "MIT",
3387
+ "dependencies": {
3388
+ "b4a": "^1.6.4",
3389
+ "fast-fifo": "^1.2.0",
3390
+ "streamx": "^2.15.0"
3391
+ }
3392
+ },
3393
+ "node_modules/text-decoder": {
3394
+ "version": "1.2.3",
3395
+ "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.3.tgz",
3396
+ "integrity": "sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==",
3397
+ "license": "Apache-2.0",
3398
+ "dependencies": {
3399
+ "b4a": "^1.6.4"
3400
+ }
3401
+ },
3402
  "node_modules/tinyglobby": {
3403
  "version": "0.2.14",
3404
  "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz",
 
3416
  "url": "https://github.com/sponsors/SuperchupuDev"
3417
  }
3418
  },
3419
+ "node_modules/tunnel-agent": {
3420
+ "version": "0.6.0",
3421
+ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
3422
+ "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==",
3423
+ "license": "Apache-2.0",
3424
+ "dependencies": {
3425
+ "safe-buffer": "^5.0.1"
3426
+ },
3427
+ "engines": {
3428
+ "node": "*"
3429
+ }
3430
+ },
3431
  "node_modules/type-check": {
3432
  "version": "0.4.0",
3433
  "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
 
3441
  "node": ">= 0.8.0"
3442
  }
3443
  },
3444
+ "node_modules/undici-types": {
3445
+ "version": "6.21.0",
3446
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz",
3447
+ "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==",
3448
+ "license": "MIT"
3449
+ },
3450
  "node_modules/update-browserslist-db": {
3451
  "version": "1.1.3",
3452
  "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz",
 
3488
  "punycode": "^2.1.0"
3489
  }
3490
  },
3491
+ "node_modules/util-deprecate": {
3492
+ "version": "1.0.2",
3493
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
3494
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
3495
+ "license": "MIT"
3496
+ },
3497
  "node_modules/vite": {
3498
  "version": "6.3.5",
3499
  "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.5.tgz",
 
3595
  "node": ">=0.10.0"
3596
  }
3597
  },
3598
+ "node_modules/wrappy": {
3599
+ "version": "1.0.2",
3600
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
3601
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
3602
+ "license": "ISC"
3603
+ },
3604
  "node_modules/yallist": {
3605
  "version": "3.1.1",
3606
  "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
package.json CHANGED
@@ -10,6 +10,7 @@
10
  "preview": "vite preview"
11
  },
12
  "dependencies": {
 
13
  "react": "^19.1.0",
14
  "react-dom": "^19.1.0"
15
  },
 
10
  "preview": "vite preview"
11
  },
12
  "dependencies": {
13
+ "@xenova/transformers": "^2.17.2",
14
  "react": "^19.1.0",
15
  "react-dom": "^19.1.0"
16
  },
src/App.css CHANGED
@@ -1,42 +1,129 @@
1
- #root {
2
- max-width: 1280px;
3
  margin: 0 auto;
4
  padding: 2rem;
5
  text-align: center;
6
  }
7
 
8
- .logo {
9
- height: 6em;
10
- padding: 1.5em;
11
- will-change: filter;
12
- transition: filter 300ms;
13
  }
14
- .logo:hover {
15
- filter: drop-shadow(0 0 2em #646cffaa);
 
 
 
 
 
 
16
  }
17
- .logo.react:hover {
18
- filter: drop-shadow(0 0 2em #61dafbaa);
 
 
19
  }
20
 
21
- @keyframes logo-spin {
22
- from {
23
- transform: rotate(0deg);
24
- }
25
- to {
26
- transform: rotate(360deg);
27
- }
 
28
  }
29
 
30
- @media (prefers-reduced-motion: no-preference) {
31
- a:nth-of-type(2) .logo {
32
- animation: logo-spin infinite 20s linear;
33
- }
34
  }
35
 
36
- .card {
37
- padding: 2em;
 
38
  }
39
 
40
- .read-the-docs {
41
- color: #888;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
42
  }
 
1
+ .app {
2
+ max-width: 800px;
3
  margin: 0 auto;
4
  padding: 2rem;
5
  text-align: center;
6
  }
7
 
8
+ header {
9
+ margin-bottom: 3rem;
 
 
 
10
  }
11
+
12
+ header h1 {
13
+ font-size: 2.5rem;
14
+ margin-bottom: 0.5rem;
15
+ background: linear-gradient(45deg, #646cff, #61dafb);
16
+ -webkit-background-clip: text;
17
+ -webkit-text-fill-color: transparent;
18
+ background-clip: text;
19
  }
20
+
21
+ header p {
22
+ color: #888;
23
+ font-size: 1.1rem;
24
  }
25
 
26
+ .upload-area {
27
+ border: 2px dashed #646cff;
28
+ border-radius: 12px;
29
+ padding: 3rem;
30
+ margin: 2rem 0;
31
+ cursor: pointer;
32
+ transition: all 0.3s ease;
33
+ background: rgba(100, 108, 255, 0.05);
34
  }
35
 
36
+ .upload-area:hover {
37
+ border-color: #61dafb;
38
+ background: rgba(97, 218, 251, 0.05);
 
39
  }
40
 
41
+ .upload-content p {
42
+ margin: 0.5rem 0;
43
+ font-size: 1.1rem;
44
  }
45
 
46
+ .upload-content audio {
47
+ margin-top: 1rem;
48
+ width: 100%;
49
+ max-width: 400px;
50
+ }
51
+
52
+ .controls {
53
+ margin: 2rem 0;
54
+ }
55
+
56
+ .controls button {
57
+ background: #646cff;
58
+ color: white;
59
+ border: none;
60
+ padding: 1rem 2rem;
61
+ border-radius: 8px;
62
+ font-size: 1rem;
63
+ cursor: pointer;
64
+ transition: all 0.3s ease;
65
+ }
66
+
67
+ .controls button:hover {
68
+ background: #5a54d6;
69
+ transform: translateY(-2px);
70
+ }
71
+
72
+ .controls button.recording {
73
+ background: #ff4757;
74
+ animation: pulse 2s infinite;
75
+ }
76
+
77
+ @keyframes pulse {
78
+ 0% { transform: scale(1); }
79
+ 50% { transform: scale(1.05); }
80
+ 100% { transform: scale(1); }
81
+ }
82
+
83
+ .loading {
84
+ margin: 2rem 0;
85
+ padding: 1rem;
86
+ background: rgba(100, 108, 255, 0.1);
87
+ border-radius: 8px;
88
+ color: #646cff;
89
+ font-weight: 500;
90
+ }
91
+
92
+ .tags-section {
93
+ margin: 2rem 0;
94
+ text-align: left;
95
+ }
96
+
97
+ .tags-section h3 {
98
+ margin-bottom: 1rem;
99
+ color: #333;
100
+ }
101
+
102
+ .tags {
103
+ display: flex;
104
+ flex-wrap: wrap;
105
+ gap: 0.5rem;
106
+ }
107
+
108
+ .tag {
109
+ background: linear-gradient(45deg, #646cff, #61dafb);
110
+ color: white;
111
+ padding: 0.5rem 1rem;
112
+ border-radius: 20px;
113
+ font-size: 0.9rem;
114
+ font-weight: 500;
115
+ }
116
+
117
+ @media (max-width: 768px) {
118
+ .app {
119
+ padding: 1rem;
120
+ }
121
+
122
+ .upload-area {
123
+ padding: 2rem 1rem;
124
+ }
125
+
126
+ header h1 {
127
+ font-size: 2rem;
128
+ }
129
  }
src/App.jsx CHANGED
@@ -1,34 +1,148 @@
1
- import { useState } from 'react'
2
- import reactLogo from './assets/react.svg'
3
- import viteLogo from '/vite.svg'
4
  import './App.css'
5
 
6
  function App() {
7
- const [count, setCount] = useState(0)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8
 
9
  return (
10
- <>
11
- <div>
12
- <a href="https://vite.dev" target="_blank">
13
- <img src={viteLogo} className="logo" alt="Vite logo" />
14
- </a>
15
- <a href="https://react.dev" target="_blank">
16
- <img src={reactLogo} className="logo react" alt="React logo" />
17
- </a>
18
- </div>
19
- <h1>Vite + React</h1>
20
- <div className="card">
21
- <button onClick={() => setCount((count) => count + 1)}>
22
- count is {count}
23
- </button>
24
- <p>
25
- Edit <code>src/App.jsx</code> and save to test HMR
26
- </p>
27
- </div>
28
- <p className="read-the-docs">
29
- Click on the Vite and React logos to learn more
30
- </p>
31
- </>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
32
  )
33
  }
34
 
 
1
+ import { useState, useRef } from 'react'
 
 
2
  import './App.css'
3
 
4
  function App() {
5
+ const [audioFile, setAudioFile] = useState(null)
6
+ const [isRecording, setIsRecording] = useState(false)
7
+ const [isLoading, setIsLoading] = useState(false)
8
+ const [tags, setTags] = useState([])
9
+ const fileInputRef = useRef(null)
10
+ const mediaRecorderRef = useRef(null)
11
+ const chunksRef = useRef([])
12
+
13
+ const handleFileUpload = (event) => {
14
+ const file = event.target.files[0]
15
+ if (file && file.type.startsWith('audio/')) {
16
+ setAudioFile(file)
17
+ processAudio(file)
18
+ }
19
+ }
20
+
21
+ const handleDrop = (event) => {
22
+ event.preventDefault()
23
+ const file = event.dataTransfer.files[0]
24
+ if (file && file.type.startsWith('audio/')) {
25
+ setAudioFile(file)
26
+ processAudio(file)
27
+ }
28
+ }
29
+
30
+ const handleDragOver = (event) => {
31
+ event.preventDefault()
32
+ }
33
+
34
+ const startRecording = async () => {
35
+ try {
36
+ const stream = await navigator.mediaDevices.getUserMedia({ audio: true })
37
+ mediaRecorderRef.current = new MediaRecorder(stream)
38
+ chunksRef.current = []
39
+
40
+ mediaRecorderRef.current.ondataavailable = (event) => {
41
+ chunksRef.current.push(event.data)
42
+ }
43
+
44
+ mediaRecorderRef.current.onstop = () => {
45
+ const blob = new Blob(chunksRef.current, { type: 'audio/wav' })
46
+ const file = new File([blob], 'recording.wav', { type: 'audio/wav' })
47
+ setAudioFile(file)
48
+ processAudio(file)
49
+ stream.getTracks().forEach(track => track.stop())
50
+ }
51
+
52
+ mediaRecorderRef.current.start()
53
+ setIsRecording(true)
54
+ } catch (error) {
55
+ console.error('Error accessing microphone:', error)
56
+ }
57
+ }
58
+
59
+ const stopRecording = () => {
60
+ if (mediaRecorderRef.current && isRecording) {
61
+ mediaRecorderRef.current.stop()
62
+ setIsRecording(false)
63
+ }
64
+ }
65
+
66
+ const processAudio = async (file) => {
67
+ setIsLoading(true)
68
+ setTags([])
69
+
70
+ // Placeholder for CLAP processing
71
+ setTimeout(() => {
72
+ setTags([
73
+ { label: 'speech', confidence: 0.85 },
74
+ { label: 'human voice', confidence: 0.78 },
75
+ { label: 'conversation', confidence: 0.62 }
76
+ ])
77
+ setIsLoading(false)
78
+ }, 2000)
79
+ }
80
 
81
  return (
82
+ <div className="app">
83
+ <header>
84
+ <h1>🎵 clip-tagger</h1>
85
+ <p>Custom audio tagging in the browser</p>
86
+ </header>
87
+
88
+ <main>
89
+ <div
90
+ className="upload-area"
91
+ onDrop={handleDrop}
92
+ onDragOver={handleDragOver}
93
+ onClick={() => fileInputRef.current?.click()}
94
+ >
95
+ <input
96
+ ref={fileInputRef}
97
+ type="file"
98
+ accept="audio/*"
99
+ onChange={handleFileUpload}
100
+ hidden
101
+ />
102
+ <div className="upload-content">
103
+ {audioFile ? (
104
+ <div>
105
+ <p>📁 {audioFile.name}</p>
106
+ <audio controls src={URL.createObjectURL(audioFile)} />
107
+ </div>
108
+ ) : (
109
+ <div>
110
+ <p>🎵 Drop an audio file here or click to upload</p>
111
+ <p>Supports WAV, MP3, and other audio formats</p>
112
+ </div>
113
+ )}
114
+ </div>
115
+ </div>
116
+
117
+ <div className="controls">
118
+ <button
119
+ onClick={isRecording ? stopRecording : startRecording}
120
+ className={isRecording ? 'recording' : ''}
121
+ >
122
+ {isRecording ? '⏹️ Stop Recording' : '🎤 Record Audio'}
123
+ </button>
124
+ </div>
125
+
126
+ {isLoading && (
127
+ <div className="loading">
128
+ <p>🧠 Analyzing audio with CLAP model...</p>
129
+ </div>
130
+ )}
131
+
132
+ {tags.length > 0 && (
133
+ <div className="tags-section">
134
+ <h3>Generated Tags</h3>
135
+ <div className="tags">
136
+ {tags.map((tag, index) => (
137
+ <span key={index} className="tag">
138
+ {tag.label} ({Math.round(tag.confidence * 100)}%)
139
+ </span>
140
+ ))}
141
+ </div>
142
+ </div>
143
+ )}
144
+ </main>
145
+ </div>
146
  )
147
  }
148