From 1f1c645aca5cf7ba7d4f342c55cf985371852e55 Mon Sep 17 00:00:00 2001 From: Joshua Lochner Date: Mon, 23 Dec 2024 14:10:52 +0000 Subject: [PATCH 01/23] Move adaptive retrieval demo --- examples/adaptive-retrieval/.eslintrc.cjs | 20 - examples/adaptive-retrieval/.gitignore | 24 - examples/adaptive-retrieval/index.html | 13 - examples/adaptive-retrieval/package-lock.json | 5895 ----------------- examples/adaptive-retrieval/package.json | 30 - examples/adaptive-retrieval/postcss.config.js | 6 - examples/adaptive-retrieval/src/App.css | 5 - examples/adaptive-retrieval/src/App.jsx | 173 - examples/adaptive-retrieval/src/index.css | 3 - examples/adaptive-retrieval/src/main.jsx | 10 - examples/adaptive-retrieval/src/worker.js | 47 - .../adaptive-retrieval/tailwind.config.js | 12 - examples/adaptive-retrieval/vite.config.js | 7 - 13 files changed, 6245 deletions(-) delete mode 100644 examples/adaptive-retrieval/.eslintrc.cjs delete mode 100644 examples/adaptive-retrieval/.gitignore delete mode 100644 examples/adaptive-retrieval/index.html delete mode 100644 examples/adaptive-retrieval/package-lock.json delete mode 100644 examples/adaptive-retrieval/package.json delete mode 100644 examples/adaptive-retrieval/postcss.config.js delete mode 100644 examples/adaptive-retrieval/src/App.css delete mode 100644 examples/adaptive-retrieval/src/App.jsx delete mode 100644 examples/adaptive-retrieval/src/index.css delete mode 100644 examples/adaptive-retrieval/src/main.jsx delete mode 100644 examples/adaptive-retrieval/src/worker.js delete mode 100644 examples/adaptive-retrieval/tailwind.config.js delete mode 100644 examples/adaptive-retrieval/vite.config.js diff --git a/examples/adaptive-retrieval/.eslintrc.cjs b/examples/adaptive-retrieval/.eslintrc.cjs deleted file mode 100644 index 4dcb43901..000000000 --- a/examples/adaptive-retrieval/.eslintrc.cjs +++ /dev/null @@ -1,20 +0,0 @@ -module.exports = { - root: true, - env: { browser: true, es2020: true }, - extends: [ - 'eslint:recommended', - 'plugin:react/recommended', - 'plugin:react/jsx-runtime', - 'plugin:react-hooks/recommended', - ], - ignorePatterns: ['dist', '.eslintrc.cjs'], - parserOptions: { ecmaVersion: 'latest', sourceType: 'module' }, - settings: { react: { version: '18.2' } }, - plugins: ['react-refresh'], - rules: { - 'react-refresh/only-export-components': [ - 'warn', - { allowConstantExport: true }, - ], - }, -} diff --git a/examples/adaptive-retrieval/.gitignore b/examples/adaptive-retrieval/.gitignore deleted file mode 100644 index a547bf36d..000000000 --- a/examples/adaptive-retrieval/.gitignore +++ /dev/null @@ -1,24 +0,0 @@ -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -pnpm-debug.log* -lerna-debug.log* - -node_modules -dist -dist-ssr -*.local - -# Editor directories and files -.vscode/* -!.vscode/extensions.json -.idea -.DS_Store -*.suo -*.ntvs* -*.njsproj -*.sln -*.sw? diff --git a/examples/adaptive-retrieval/index.html b/examples/adaptive-retrieval/index.html deleted file mode 100644 index 4dbcf54ff..000000000 --- a/examples/adaptive-retrieval/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - Adaptive Retrieval w/ Transformers.js - - -
- - - diff --git a/examples/adaptive-retrieval/package-lock.json b/examples/adaptive-retrieval/package-lock.json deleted file mode 100644 index 0acdc4309..000000000 --- a/examples/adaptive-retrieval/package-lock.json +++ /dev/null @@ -1,5895 +0,0 @@ -{ - "name": "adaptive-retrieval", - "version": "0.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "adaptive-retrieval", - "version": "0.0.0", - "dependencies": { - "@xenova/transformers": "^2.15.0", - "react": "^18.2.0", - "react-dom": "^18.2.0" - }, - "devDependencies": { - "@types/react": "^18.2.43", - "@types/react-dom": "^18.2.17", - "@vitejs/plugin-react": "^4.2.1", - "autoprefixer": "^10.4.16", - "eslint": "^8.55.0", - "eslint-plugin-react": "^7.33.2", - "eslint-plugin-react-hooks": "^4.6.0", - "eslint-plugin-react-refresh": "^0.4.5", - "postcss": "^8.4.33", - "tailwindcss": "^3.4.1", - "vite": "^5.1.7" - } - }, - "node_modules/@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@alloc/quick-lru": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", - "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@ampproject/remapping": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", - "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", - "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", - "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.9.tgz", - "integrity": "sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw==", - "dev": true, - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.6", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.23.9", - "@babel/parser": "^7.23.9", - "@babel/template": "^7.23.9", - "@babel/traverse": "^7.23.9", - "@babel/types": "^7.23.9", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/generator": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", - "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.23.6", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", - "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.23.5", - "@babel/helper-validator-option": "^7.23.5", - "browserslist": "^4.22.2", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", - "dev": true, - "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", - "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.15" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", - "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.20" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", - "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", - "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", - "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", - "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.9.tgz", - "integrity": "sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ==", - "dev": true, - "dependencies": { - "@babel/template": "^7.23.9", - "@babel/traverse": "^7.23.9", - "@babel/types": "^7.23.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", - "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.9.tgz", - "integrity": "sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-transform-react-jsx-self": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.23.3.tgz", - "integrity": "sha512-qXRvbeKDSfwnlJnanVRp0SfuWE5DQhwQr5xtLBzp56Wabyo+4CMosF6Kfp+eOD/4FYpql64XVJ2W0pVLlJZxOQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-jsx-source": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.23.3.tgz", - "integrity": "sha512-91RS0MDnAWDNvGC6Wio5XYkyWI39FMFO+JK9+4AlgaTH+yWwVTsw7/sn6LK0lH7c5F+TFkpv/3LfCJ1Ydwof/g==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/template": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.23.9.tgz", - "integrity": "sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.23.5", - "@babel/parser": "^7.23.9", - "@babel/types": "^7.23.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.9.tgz", - "integrity": "sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.6", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.9", - "@babel/types": "^7.23.9", - "debug": "^4.3.1", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.9.tgz", - "integrity": "sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==", - "dev": true, - "dependencies": { - "@babel/helper-string-parser": "^7.23.4", - "@babel/helper-validator-identifier": "^7.22.20", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz", - "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz", - "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz", - "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz", - "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz", - "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz", - "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz", - "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz", - "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz", - "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz", - "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz", - "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz", - "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz", - "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz", - "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz", - "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz", - "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz", - "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz", - "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz", - "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz", - "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz", - "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz", - "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz", - "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", - "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", - "dev": true, - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@eslint/js": { - "version": "8.56.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", - "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@huggingface/jinja": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@huggingface/jinja/-/jinja-0.1.2.tgz", - "integrity": "sha512-x5mpbfJt1nKmVep5WNP5VjNsjWApWNj8pPYI+uYMkBWH9bWUJmQmHt2lbf0VCoQd54Oq3XuFEh/UyoVh7rPxmg==", - "engines": { - "node": ">=18" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.14", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", - "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^2.0.2", - "debug": "^4.3.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", - "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", - "dev": true - }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "dev": true, - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.22", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz", - "integrity": "sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "dev": true, - "optional": true, - "engines": { - "node": ">=14" - } - }, - "node_modules/@protobufjs/aspromise": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", - "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" - }, - "node_modules/@protobufjs/base64": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", - "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" - }, - "node_modules/@protobufjs/codegen": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", - "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" - }, - "node_modules/@protobufjs/eventemitter": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", - "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" - }, - "node_modules/@protobufjs/fetch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", - "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", - "dependencies": { - "@protobufjs/aspromise": "^1.1.1", - "@protobufjs/inquire": "^1.1.0" - } - }, - "node_modules/@protobufjs/float": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", - "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" - }, - "node_modules/@protobufjs/inquire": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", - "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" - }, - "node_modules/@protobufjs/path": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", - "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" - }, - "node_modules/@protobufjs/pool": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", - "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" - }, - "node_modules/@protobufjs/utf8": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", - "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" - }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.10.0.tgz", - "integrity": "sha512-/MeDQmcD96nVoRumKUljsYOLqfv1YFJps+0pTrb2Z9Nl/w5qNUysMaWQsrd1mvAlNT4yza1iVyIu4Q4AgF6V3A==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.10.0.tgz", - "integrity": "sha512-lvu0jK97mZDJdpZKDnZI93I0Om8lSDaiPx3OiCk0RXn3E8CMPJNS/wxjAvSJJzhhZpfjXsjLWL8LnS6qET4VNQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.10.0.tgz", - "integrity": "sha512-uFpayx8I8tyOvDkD7X6n0PriDRWxcqEjqgtlxnUA/G9oS93ur9aZ8c8BEpzFmsed1TH5WZNG5IONB8IiW90TQg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.10.0.tgz", - "integrity": "sha512-nIdCX03qFKoR/MwQegQBK+qZoSpO3LESurVAC6s6jazLA1Mpmgzo3Nj3H1vydXp/JM29bkCiuF7tDuToj4+U9Q==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.10.0.tgz", - "integrity": "sha512-Fz7a+y5sYhYZMQFRkOyCs4PLhICAnxRX/GnWYReaAoruUzuRtcf+Qnw+T0CoAWbHCuz2gBUwmWnUgQ67fb3FYw==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.10.0.tgz", - "integrity": "sha512-yPtF9jIix88orwfTi0lJiqINnlWo6p93MtZEoaehZnmCzEmLL0eqjA3eGVeyQhMtxdV+Mlsgfwhh0+M/k1/V7Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.10.0.tgz", - "integrity": "sha512-9GW9yA30ib+vfFiwjX+N7PnjTnCMiUffhWj4vkG4ukYv1kJ4T9gHNg8zw+ChsOccM27G9yXrEtMScf1LaCuoWQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.10.0.tgz", - "integrity": "sha512-X1ES+V4bMq2ws5fF4zHornxebNxMXye0ZZjUrzOrf7UMx1d6wMQtfcchZ8SqUnQPPHdOyOLW6fTcUiFgHFadRA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.10.0.tgz", - "integrity": "sha512-w/5OpT2EnI/Xvypw4FIhV34jmNqU5PZjZue2l2Y3ty1Ootm3SqhI+AmfhlUYGBTd9JnpneZCDnt3uNOiOBkMyw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.10.0.tgz", - "integrity": "sha512-q/meftEe3QlwQiGYxD9rWwB21DoKQ9Q8wA40of/of6yGHhZuGfZO0c3WYkN9dNlopHlNT3mf5BPsUSxoPuVQaw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.10.0.tgz", - "integrity": "sha512-NrR6667wlUfP0BHaEIKgYM/2va+Oj+RjZSASbBMnszM9k+1AmliRjHc3lJIiOehtSSjqYiO7R6KLNrWOX+YNSQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.10.0.tgz", - "integrity": "sha512-FV0Tpt84LPYDduIDcXvEC7HKtyXxdvhdAOvOeWMWbQNulxViH2O07QXkT/FffX4FqEI02jEbCJbr+YcuKdyyMg==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.10.0.tgz", - "integrity": "sha512-OZoJd+o5TaTSQeFFQ6WjFCiltiYVjIdsXxwu/XZ8qRpsvMQr4UsVrE5UyT9RIvsnuF47DqkJKhhVZ2Q9YW9IpQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@types/babel__core": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", - "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "node_modules/@types/babel__generator": { - "version": "7.6.8", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", - "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__template": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", - "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__traverse": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.5.tgz", - "integrity": "sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==", - "dev": true, - "dependencies": { - "@babel/types": "^7.20.7" - } - }, - "node_modules/@types/estree": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", - "dev": true - }, - "node_modules/@types/long": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", - "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==" - }, - "node_modules/@types/node": { - "version": "20.11.17", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.17.tgz", - "integrity": "sha512-QmgQZGWu1Yw9TDyAP9ZzpFJKynYNeOvwMJmaxABfieQoVoiVOS6MN1WSpqpRcbeA5+RW82kraAVxCCJg+780Qw==", - "dependencies": { - "undici-types": "~5.26.4" - } - }, - "node_modules/@types/prop-types": { - "version": "15.7.11", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz", - "integrity": "sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==", - "dev": true - }, - "node_modules/@types/react": { - "version": "18.2.55", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.55.tgz", - "integrity": "sha512-Y2Tz5P4yz23brwm2d7jNon39qoAtMMmalOQv6+fEFt1mT+FcM3D841wDpoUvFXhaYenuROCy3FZYqdTjM7qVyA==", - "dev": true, - "dependencies": { - "@types/prop-types": "*", - "@types/scheduler": "*", - "csstype": "^3.0.2" - } - }, - "node_modules/@types/react-dom": { - "version": "18.2.19", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.19.tgz", - "integrity": "sha512-aZvQL6uUbIJpjZk4U8JZGbau9KDeAwMfmhyWorxgBkqDIEf6ROjRozcmPIicqsUwPUjbkDfHKgGee1Lq65APcA==", - "dev": true, - "dependencies": { - "@types/react": "*" - } - }, - "node_modules/@types/scheduler": { - "version": "0.16.8", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz", - "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==", - "dev": true - }, - "node_modules/@ungap/structured-clone": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", - "dev": true - }, - "node_modules/@vitejs/plugin-react": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.2.1.tgz", - "integrity": "sha512-oojO9IDc4nCUUi8qIR11KoQm0XFFLIwsRBwHRR4d/88IWghn1y6ckz/bJ8GHDCsYEJee8mDzqtJxh15/cisJNQ==", - "dev": true, - "dependencies": { - "@babel/core": "^7.23.5", - "@babel/plugin-transform-react-jsx-self": "^7.23.3", - "@babel/plugin-transform-react-jsx-source": "^7.23.3", - "@types/babel__core": "^7.20.5", - "react-refresh": "^0.14.0" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "peerDependencies": { - "vite": "^4.2.0 || ^5.0.0" - } - }, - "node_modules/@xenova/transformers": { - "version": "2.15.0", - "resolved": "https://registry.npmjs.org/@xenova/transformers/-/transformers-2.15.0.tgz", - "integrity": "sha512-e8pt+yLGSmwZnQR5Q/fq1NJ6fPr3+WKqxh/jF2PzfXFZ2KZsDdFQeCVlk8AnOADP4Aimlqy+Wp/xuws96/pX9A==", - "dependencies": { - "@huggingface/jinja": "^0.1.0", - "onnxruntime-web": "1.14.0", - "sharp": "^0.32.0" - }, - "optionalDependencies": { - "onnxruntime-node": "1.14.0" - } - }, - "node_modules/acorn": { - "version": "8.11.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", - "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", - "dev": true - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/arg": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", - "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", - "dev": true - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", - "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.5", - "is-array-buffer": "^3.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-includes": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz", - "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flat": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", - "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", - "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.tosorted": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.3.tgz", - "integrity": "sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", - "es-errors": "^1.1.0", - "es-shim-unscopables": "^1.0.2" - } - }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", - "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", - "dev": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", - "es-errors": "^1.2.1", - "get-intrinsic": "^1.2.3", - "is-array-buffer": "^3.0.4", - "is-shared-array-buffer": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/asynciterator.prototype": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz", - "integrity": "sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.3" - } - }, - "node_modules/autoprefixer": { - "version": "10.4.17", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.17.tgz", - "integrity": "sha512-/cpVNRLSfhOtcGflT13P2794gVSgmPgTR+erw5ifnMLZb0UnSlkK4tquLmkd3BhA+nLo5tX8Cu0upUsGKvKbmg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "browserslist": "^4.22.2", - "caniuse-lite": "^1.0.30001578", - "fraction.js": "^4.3.7", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", - "postcss-value-parser": "^4.2.0" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" - }, - "engines": { - "node": "^10 || ^12 || >=14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/available-typed-arrays": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.6.tgz", - "integrity": "sha512-j1QzY8iPNPG4o4xmO3ptzpRxTciqD3MgEHtifP/YnJpIo58Xu+ne4BejlbkuaLfXn/nz6HFiw29bLpj2PNMdGg==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/b4a": { - "version": "1.6.6", - "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.6.tgz", - "integrity": "sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==" - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/bare-events": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.2.0.tgz", - "integrity": "sha512-Yyyqff4PIFfSuthCZqLlPISTWHmnQxoPuAvkmgzsJEmG3CesdIv6Xweayl0JkCZJSB2yYIdJyEz97tpxNhgjbg==", - "optional": true - }, - "node_modules/bare-fs": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-2.1.5.tgz", - "integrity": "sha512-5t0nlecX+N2uJqdxe9d18A98cp2u9BETelbjKpiVgQqzzmVNFYWEAjQHqS+2Khgto1vcwhik9cXucaj5ve2WWA==", - "optional": true, - "dependencies": { - "bare-events": "^2.0.0", - "bare-os": "^2.0.0", - "bare-path": "^2.0.0", - "streamx": "^2.13.0" - } - }, - "node_modules/bare-os": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-2.1.3.tgz", - "integrity": "sha512-YMKOQzoMouGCrYgJ0rassKvmbTz+TYDOKKmu4JkfNXS/qKn+If1ODCMEXnmknQXfnB1PS8bR+uHu6xBgwAQXew==", - "optional": true - }, - "node_modules/bare-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-2.1.0.tgz", - "integrity": "sha512-DIIg7ts8bdRKwJRJrUMy/PICEaQZaPGZ26lsSx9MJSwIhSrcdHn7/C8W+XmnG/rKi6BaRcz+JO00CjZteybDtw==", - "optional": true, - "dependencies": { - "bare-os": "^2.1.0" - } - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.22.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.3.tgz", - "integrity": "sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001580", - "electron-to-chromium": "^1.4.648", - "node-releases": "^2.0.14", - "update-browserslist-db": "^1.0.13" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", - "dev": true, - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase-css": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", - "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001587", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001587.tgz", - "integrity": "sha512-HMFNotUmLXn71BQxg8cijvqxnIAofforZOwGsxyXJ0qugTdspUF4sPSJ2vhgprHCB996tIDzEq1ubumPDV8ULA==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ] - }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "dev": true, - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chokidar/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" - }, - "node_modules/color": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", - "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", - "dependencies": { - "color-convert": "^2.0.1", - "color-string": "^1.9.0" - }, - "engines": { - "node": ">=12.5.0" - } - }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "node_modules/color-string": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", - "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", - "dependencies": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "node_modules/color/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true, - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/csstype": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", - "dev": true - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "dependencies": { - "mimic-response": "^3.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dev": true, - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dev": true, - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/detect-libc": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", - "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/didyoumean": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", - "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", - "dev": true - }, - "node_modules/dlv": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", - "dev": true - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true - }, - "node_modules/electron-to-chromium": { - "version": "1.4.668", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.668.tgz", - "integrity": "sha512-ZOBocMYCehr9W31+GpMclR+KBaDZOoAEabLdhpZ8oU1JFDwIaFY0UDbpXVEUFc0BIP2O2Qn3rkfCjQmMR4T/bQ==", - "dev": true - }, - "node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true - }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/es-abstract": { - "version": "1.22.4", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.4.tgz", - "integrity": "sha512-vZYJlk2u6qHYxBOTjAeg7qUxHdNfih64Uu2J8QqWgXZ2cri0ZpJAkzDUK/q593+mvKwlxyaxr6F1Q+3LKoQRgg==", - "dev": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "arraybuffer.prototype.slice": "^1.0.3", - "available-typed-arrays": "^1.0.6", - "call-bind": "^1.0.7", - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "es-set-tostringtag": "^2.0.2", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.4", - "get-symbol-description": "^1.0.2", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.1", - "internal-slot": "^1.0.7", - "is-array-buffer": "^3.0.4", - "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.13", - "is-weakref": "^1.0.2", - "object-inspect": "^1.13.1", - "object-keys": "^1.1.1", - "object.assign": "^4.1.5", - "regexp.prototype.flags": "^1.5.2", - "safe-array-concat": "^1.1.0", - "safe-regex-test": "^1.0.3", - "string.prototype.trim": "^1.2.8", - "string.prototype.trimend": "^1.0.7", - "string.prototype.trimstart": "^1.0.7", - "typed-array-buffer": "^1.0.1", - "typed-array-byte-length": "^1.0.0", - "typed-array-byte-offset": "^1.0.0", - "typed-array-length": "^1.0.4", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.2.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-iterator-helpers": { - "version": "1.0.17", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.17.tgz", - "integrity": "sha512-lh7BsUqelv4KUbR5a/ZTaGGIMLCjPGPqJ6q+Oq24YP0RdyptX1uzm4vvaqzk7Zx3bpl/76YLTTDj9L7uYQ92oQ==", - "dev": true, - "dependencies": { - "asynciterator.prototype": "^1.0.0", - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.22.4", - "es-errors": "^1.3.0", - "es-set-tostringtag": "^2.0.2", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "globalthis": "^1.0.3", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.7", - "iterator.prototype": "^1.1.2", - "safe-array-concat": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", - "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.2.2", - "has-tostringtag": "^1.0.0", - "hasown": "^2.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-shim-unscopables": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", - "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", - "dev": true, - "dependencies": { - "hasown": "^2.0.0" - } - }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/esbuild": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz", - "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==", - "dev": true, - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.19.12", - "@esbuild/android-arm": "0.19.12", - "@esbuild/android-arm64": "0.19.12", - "@esbuild/android-x64": "0.19.12", - "@esbuild/darwin-arm64": "0.19.12", - "@esbuild/darwin-x64": "0.19.12", - "@esbuild/freebsd-arm64": "0.19.12", - "@esbuild/freebsd-x64": "0.19.12", - "@esbuild/linux-arm": "0.19.12", - "@esbuild/linux-arm64": "0.19.12", - "@esbuild/linux-ia32": "0.19.12", - "@esbuild/linux-loong64": "0.19.12", - "@esbuild/linux-mips64el": "0.19.12", - "@esbuild/linux-ppc64": "0.19.12", - "@esbuild/linux-riscv64": "0.19.12", - "@esbuild/linux-s390x": "0.19.12", - "@esbuild/linux-x64": "0.19.12", - "@esbuild/netbsd-x64": "0.19.12", - "@esbuild/openbsd-x64": "0.19.12", - "@esbuild/sunos-x64": "0.19.12", - "@esbuild/win32-arm64": "0.19.12", - "@esbuild/win32-ia32": "0.19.12", - "@esbuild/win32-x64": "0.19.12" - } - }, - "node_modules/escalade": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", - "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/eslint": { - "version": "8.56.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", - "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.56.0", - "@humanwhocodes/config-array": "^0.11.13", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-plugin-react": { - "version": "7.33.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz", - "integrity": "sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==", - "dev": true, - "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flatmap": "^1.3.1", - "array.prototype.tosorted": "^1.1.1", - "doctrine": "^2.1.0", - "es-iterator-helpers": "^1.0.12", - "estraverse": "^5.3.0", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.1.2", - "object.entries": "^1.1.6", - "object.fromentries": "^2.0.6", - "object.hasown": "^1.1.2", - "object.values": "^1.1.6", - "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.4", - "semver": "^6.3.1", - "string.prototype.matchall": "^4.0.8" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" - } - }, - "node_modules/eslint-plugin-react-hooks": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", - "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", - "dev": true, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" - } - }, - "node_modules/eslint-plugin-react-refresh": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.5.tgz", - "integrity": "sha512-D53FYKJa+fDmZMtriODxvhwrO+IOqrxoEo21gMA0sjHdU6dPVH4OhyFip9ypl8HOF5RV5KdTo+rBQLvnY2cO8w==", - "dev": true, - "peerDependencies": { - "eslint": ">=7" - } - }, - "node_modules/eslint-plugin-react/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/eslint/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/eslint/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/eslint/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/eslint/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dev": true, - "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", - "dev": true, - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-template": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", - "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-fifo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", - "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==" - }, - "node_modules/fast-glob": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "node_modules/fastq": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", - "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat-cache": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", - "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", - "dev": true, - "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatbuffers": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/flatbuffers/-/flatbuffers-1.12.0.tgz", - "integrity": "sha512-c7CZADjRcl6j0PlvFy0ZqXQ67qSEZfrVPynmnL+2zPc+NtMvrF8Y0QceMo7QqnSPc7+uWjUIAbvCQ5WIKlMVdQ==" - }, - "node_modules/flatted": { - "version": "3.2.9", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", - "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", - "dev": true - }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.3" - } - }, - "node_modules/foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/fraction.js": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", - "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", - "dev": true, - "engines": { - "node": "*" - }, - "funding": { - "type": "patreon", - "url": "https://github.com/sponsors/rawify" - } - }, - "node_modules/fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/function.prototype.name": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", - "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "functions-have-names": "^1.2.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", - "dev": true, - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-symbol-description": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", - "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/github-from-package": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", - "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==" - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", - "dev": true, - "dependencies": { - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true - }, - "node_modules/guid-typescript": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/guid-typescript/-/guid-typescript-1.0.9.tgz", - "integrity": "sha512-Y8T4vYhEfwJOTbouREvG+3XDsjr8E3kIr7uf+JZ0BYloFsttiHU0WfvANVsR7TxNUJa/WpCnw/Ino/p+DeBhBQ==" - }, - "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dev": true, - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.1.tgz", - "integrity": "sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/ignore": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", - "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" - }, - "node_modules/internal-slot": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", - "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", - "dev": true, - "dependencies": { - "es-errors": "^1.3.0", - "hasown": "^2.0.0", - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/is-array-buffer": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", - "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" - }, - "node_modules/is-async-function": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", - "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dev": true, - "dependencies": { - "has-bigints": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", - "dev": true, - "dependencies": { - "hasown": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-finalizationregistry": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", - "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-generator-function": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", - "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", - "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-set": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", - "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", - "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", - "dev": true, - "dependencies": { - "which-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakmap": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", - "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakset": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", - "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "node_modules/iterator.prototype": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", - "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", - "dev": true, - "dependencies": { - "define-properties": "^1.2.1", - "get-intrinsic": "^1.2.1", - "has-symbols": "^1.0.3", - "reflect.getprototypeof": "^1.0.4", - "set-function-name": "^2.0.1" - } - }, - "node_modules/jackspeak": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", - "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", - "dev": true, - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, - "node_modules/jiti": { - "version": "1.21.0", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz", - "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==", - "dev": true, - "bin": { - "jiti": "bin/jiti.js" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsx-ast-utils": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", - "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", - "dev": true, - "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flat": "^1.3.1", - "object.assign": "^4.1.4", - "object.values": "^1.1.6" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "dev": true, - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/lilconfig": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", - "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "node_modules/long": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", - "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", - "dev": true, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/mz": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", - "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", - "dev": true, - "dependencies": { - "any-promise": "^1.0.0", - "object-assign": "^4.0.1", - "thenify-all": "^1.0.0" - } - }, - "node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/napi-build-utils": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", - "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==" - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "node_modules/node-abi": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.54.0.tgz", - "integrity": "sha512-p7eGEiQil0YUV3ItH4/tBb781L5impVmmx2E9FRKF7d18XXzp4PGT2tdYMFY6wQqgxD0IwNZOiSJ0/K0fSi/OA==", - "dependencies": { - "semver": "^7.3.5" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/node-abi/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/node-abi/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/node-abi/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "node_modules/node-addon-api": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz", - "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==" - }, - "node_modules/node-releases": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", - "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", - "dev": true - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-hash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", - "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/object-inspect": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", - "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.entries": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.7.tgz", - "integrity": "sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.fromentries": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz", - "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.hasown": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.3.tgz", - "integrity": "sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==", - "dev": true, - "dependencies": { - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.values": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz", - "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onnx-proto": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/onnx-proto/-/onnx-proto-4.0.4.tgz", - "integrity": "sha512-aldMOB3HRoo6q/phyB6QRQxSt895HNNw82BNyZ2CMh4bjeKv7g/c+VpAFtJuEMVfYLMbRx61hbuqnKceLeDcDA==", - "dependencies": { - "protobufjs": "^6.8.8" - } - }, - "node_modules/onnxruntime-common": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/onnxruntime-common/-/onnxruntime-common-1.14.0.tgz", - "integrity": "sha512-3LJpegM2iMNRX2wUmtYfeX/ytfOzNwAWKSq1HbRrKc9+uqG/FsEA0bbKZl1btQeZaXhC26l44NWpNUeXPII7Ew==" - }, - "node_modules/onnxruntime-node": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/onnxruntime-node/-/onnxruntime-node-1.14.0.tgz", - "integrity": "sha512-5ba7TWomIV/9b6NH/1x/8QEeowsb+jBEvFzU6z0T4mNsFwdPqXeFUM7uxC6QeSRkEbWu3qEB0VMjrvzN/0S9+w==", - "optional": true, - "os": [ - "win32", - "darwin", - "linux" - ], - "dependencies": { - "onnxruntime-common": "~1.14.0" - } - }, - "node_modules/onnxruntime-web": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/onnxruntime-web/-/onnxruntime-web-1.14.0.tgz", - "integrity": "sha512-Kcqf43UMfW8mCydVGcX9OMXI2VN17c0p6XvR7IPSZzBf/6lteBzXHvcEVWDPmCKuGombl997HgLqj91F11DzXw==", - "dependencies": { - "flatbuffers": "^1.12.0", - "guid-typescript": "^1.0.9", - "long": "^4.0.0", - "onnx-proto": "^4.0.4", - "onnxruntime-common": "~1.14.0", - "platform": "^1.3.6" - } - }, - "node_modules/optionator": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", - "dev": true, - "dependencies": { - "@aashutoshrathi/word-wrap": "^1.2.3", - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/path-scurry": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", - "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", - "dev": true, - "dependencies": { - "lru-cache": "^9.1.1 || ^10.0.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", - "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", - "dev": true, - "engines": { - "node": "14 || >=16.14" - } - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pirates": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", - "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/platform": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.6.tgz", - "integrity": "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==" - }, - "node_modules/postcss": { - "version": "8.4.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", - "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "nanoid": "^3.3.7", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/postcss-import": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", - "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.0.0", - "read-cache": "^1.0.0", - "resolve": "^1.1.7" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "postcss": "^8.0.0" - } - }, - "node_modules/postcss-import/node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/postcss-js": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", - "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", - "dev": true, - "dependencies": { - "camelcase-css": "^2.0.1" - }, - "engines": { - "node": "^12 || ^14 || >= 16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": "^8.4.21" - } - }, - "node_modules/postcss-load-config": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", - "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "lilconfig": "^3.0.0", - "yaml": "^2.3.4" - }, - "engines": { - "node": ">= 14" - }, - "peerDependencies": { - "postcss": ">=8.0.9", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "postcss": { - "optional": true - }, - "ts-node": { - "optional": true - } - } - }, - "node_modules/postcss-load-config/node_modules/lilconfig": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.0.0.tgz", - "integrity": "sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==", - "dev": true, - "engines": { - "node": ">=14" - } - }, - "node_modules/postcss-nested": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz", - "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.11" - }, - "engines": { - "node": ">=12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": "^8.2.14" - } - }, - "node_modules/postcss-selector-parser": { - "version": "6.0.15", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz", - "integrity": "sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==", - "dev": true, - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true - }, - "node_modules/prebuild-install": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz", - "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==", - "dependencies": { - "detect-libc": "^2.0.0", - "expand-template": "^2.0.3", - "github-from-package": "0.0.0", - "minimist": "^1.2.3", - "mkdirp-classic": "^0.5.3", - "napi-build-utils": "^1.0.1", - "node-abi": "^3.3.0", - "pump": "^3.0.0", - "rc": "^1.2.7", - "simple-get": "^4.0.0", - "tar-fs": "^2.0.0", - "tunnel-agent": "^0.6.0" - }, - "bin": { - "prebuild-install": "bin.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/prebuild-install/node_modules/tar-fs": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", - "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", - "dependencies": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^2.1.4" - } - }, - "node_modules/prebuild-install/node_modules/tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "dev": true, - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" - } - }, - "node_modules/protobufjs": { - "version": "6.11.4", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.4.tgz", - "integrity": "sha512-5kQWPaJHi1WoCpjTGszzQ32PG2F4+wRY6BmAT4Vfw56Q2FZ4YZzK20xUYQH4YkfehY1e6QSICrJquM6xXZNcrw==", - "hasInstallScript": true, - "dependencies": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", - "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", - "@types/long": "^4.0.1", - "@types/node": ">=13.7.0", - "long": "^4.0.0" - }, - "bin": { - "pbjs": "bin/pbjs", - "pbts": "bin/pbts" - } - }, - "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/queue-tick": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", - "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==" - }, - "node_modules/rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "bin": { - "rc": "cli.js" - } - }, - "node_modules/rc/node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", - "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", - "dependencies": { - "loose-envify": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-dom": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", - "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", - "dependencies": { - "loose-envify": "^1.1.0", - "scheduler": "^0.23.0" - }, - "peerDependencies": { - "react": "^18.2.0" - } - }, - "node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "dev": true - }, - "node_modules/react-refresh": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", - "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/read-cache": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", - "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", - "dev": true, - "dependencies": { - "pify": "^2.3.0" - } - }, - "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/reflect.getprototypeof": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.5.tgz", - "integrity": "sha512-62wgfC8dJWrmxv44CA36pLDnP6KKl3Vhxb7PL+8+qrrFMMoJij4vgiMP8zV4O8+CBMXY1mHxI5fITGHXFHVmQQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", - "es-errors": "^1.0.0", - "get-intrinsic": "^1.2.3", - "globalthis": "^1.0.3", - "which-builtin-type": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", - "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.6", - "define-properties": "^1.2.1", - "es-errors": "^1.3.0", - "set-function-name": "^2.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve": { - "version": "2.0.0-next.5", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", - "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", - "dev": true, - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rollup": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.10.0.tgz", - "integrity": "sha512-t2v9G2AKxcQ8yrG+WGxctBes1AomT0M4ND7jTFBCVPXQ/WFTvNSefIrNSmLKhIKBrvN8SG+CZslimJcT3W2u2g==", - "dev": true, - "dependencies": { - "@types/estree": "1.0.5" - }, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.10.0", - "@rollup/rollup-android-arm64": "4.10.0", - "@rollup/rollup-darwin-arm64": "4.10.0", - "@rollup/rollup-darwin-x64": "4.10.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.10.0", - "@rollup/rollup-linux-arm64-gnu": "4.10.0", - "@rollup/rollup-linux-arm64-musl": "4.10.0", - "@rollup/rollup-linux-riscv64-gnu": "4.10.0", - "@rollup/rollup-linux-x64-gnu": "4.10.0", - "@rollup/rollup-linux-x64-musl": "4.10.0", - "@rollup/rollup-win32-arm64-msvc": "4.10.0", - "@rollup/rollup-win32-ia32-msvc": "4.10.0", - "@rollup/rollup-win32-x64-msvc": "4.10.0", - "fsevents": "~2.3.2" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/safe-array-concat": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.0.tgz", - "integrity": "sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.5", - "get-intrinsic": "^1.2.2", - "has-symbols": "^1.0.3", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/safe-regex-test": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", - "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-regex": "^1.1.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/scheduler": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", - "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", - "dependencies": { - "loose-envify": "^1.1.0" - } - }, - "node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/set-function-length": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.1.tgz", - "integrity": "sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==", - "dev": true, - "dependencies": { - "define-data-property": "^1.1.2", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.3", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-function-name": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", - "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", - "dev": true, - "dependencies": { - "define-data-property": "^1.0.1", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/sharp": { - "version": "0.32.6", - "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.32.6.tgz", - "integrity": "sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==", - "hasInstallScript": true, - "dependencies": { - "color": "^4.2.3", - "detect-libc": "^2.0.2", - "node-addon-api": "^6.1.0", - "prebuild-install": "^7.1.1", - "semver": "^7.5.4", - "simple-get": "^4.0.1", - "tar-fs": "^3.0.4", - "tunnel-agent": "^0.6.0" - }, - "engines": { - "node": ">=14.15.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/sharp/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/sharp/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/sharp/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/side-channel": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.5.tgz", - "integrity": "sha512-QcgiIWV4WV7qWExbN5llt6frQB/lBven9pqliLXfGPB+K9ZYXxDozp0wLkHS24kWCm+6YXH/f0HhnObZnZOBnQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "object-inspect": "^1.13.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/simple-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/simple-get": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", - "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "decompress-response": "^6.0.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } - }, - "node_modules/simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", - "dependencies": { - "is-arrayish": "^0.3.1" - } - }, - "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/streamx": { - "version": "2.15.8", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.15.8.tgz", - "integrity": "sha512-6pwMeMY/SuISiRsuS8TeIrAzyFbG5gGPHFQsYjUr/pbBadaL1PCWmzKw+CHZSwainfvcF6Si6cVLq4XTEwswFQ==", - "dependencies": { - "fast-fifo": "^1.1.0", - "queue-tick": "^1.0.1" - }, - "optionalDependencies": { - "bare-events": "^2.2.0" - } - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/string-width-cjs": { - "name": "string-width", - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/string-width/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/string-width/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/string.prototype.matchall": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz", - "integrity": "sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", - "regexp.prototype.flags": "^1.5.0", - "set-function-name": "^2.0.0", - "side-channel": "^1.0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trim": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", - "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", - "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", - "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/sucrase": { - "version": "3.35.0", - "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", - "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.2", - "commander": "^4.0.0", - "glob": "^10.3.10", - "lines-and-columns": "^1.1.6", - "mz": "^2.7.0", - "pirates": "^4.0.1", - "ts-interface-checker": "^0.1.9" - }, - "bin": { - "sucrase": "bin/sucrase", - "sucrase-node": "bin/sucrase-node" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/sucrase/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/sucrase/node_modules/glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", - "dev": true, - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/sucrase/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/tailwindcss": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.1.tgz", - "integrity": "sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA==", - "dev": true, - "dependencies": { - "@alloc/quick-lru": "^5.2.0", - "arg": "^5.0.2", - "chokidar": "^3.5.3", - "didyoumean": "^1.2.2", - "dlv": "^1.1.3", - "fast-glob": "^3.3.0", - "glob-parent": "^6.0.2", - "is-glob": "^4.0.3", - "jiti": "^1.19.1", - "lilconfig": "^2.1.0", - "micromatch": "^4.0.5", - "normalize-path": "^3.0.0", - "object-hash": "^3.0.0", - "picocolors": "^1.0.0", - "postcss": "^8.4.23", - "postcss-import": "^15.1.0", - "postcss-js": "^4.0.1", - "postcss-load-config": "^4.0.1", - "postcss-nested": "^6.0.1", - "postcss-selector-parser": "^6.0.11", - "resolve": "^1.22.2", - "sucrase": "^3.32.0" - }, - "bin": { - "tailwind": "lib/cli.js", - "tailwindcss": "lib/cli.js" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/tailwindcss/node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/tar-fs": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.5.tgz", - "integrity": "sha512-JOgGAmZyMgbqpLwct7ZV8VzkEB6pxXFBVErLtb+XCOqzc6w1xiWKI9GVd6bwk68EX7eJ4DWmfXVmq8K2ziZTGg==", - "dependencies": { - "pump": "^3.0.0", - "tar-stream": "^3.1.5" - }, - "optionalDependencies": { - "bare-fs": "^2.1.1", - "bare-path": "^2.1.0" - } - }, - "node_modules/tar-stream": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", - "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", - "dependencies": { - "b4a": "^1.6.4", - "fast-fifo": "^1.2.0", - "streamx": "^2.15.0" - } - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "node_modules/thenify": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", - "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", - "dev": true, - "dependencies": { - "any-promise": "^1.0.0" - } - }, - "node_modules/thenify-all": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", - "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", - "dev": true, - "dependencies": { - "thenify": ">= 3.1.0 < 4" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/ts-interface-checker": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", - "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", - "dev": true - }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typed-array-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.1.tgz", - "integrity": "sha512-RSqu1UEuSlrBhHTWC8O9FnPjOduNs4M7rJ4pRKoEjtx1zUNOPN2sSXHLDX+Y2WPbHIxbvg4JFo2DNAEfPIKWoQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/typed-array-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", - "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", - "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", - "dev": true, - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" - }, - "node_modules/update-browserslist-db": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", - "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "node_modules/vite": { - "version": "5.1.7", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.1.7.tgz", - "integrity": "sha512-sgnEEFTZYMui/sTlH1/XEnVNHMujOahPLGMxn1+5sIT45Xjng1Ec1K78jRP15dSmVgg5WBin9yO81j3o9OxofA==", - "dev": true, - "dependencies": { - "esbuild": "^0.19.3", - "postcss": "^8.4.35", - "rollup": "^4.2.0" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^18.0.0 || >=20.0.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - }, - "peerDependencies": { - "@types/node": "^18.0.0 || >=20.0.0", - "less": "*", - "lightningcss": "^1.21.0", - "sass": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.4.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - } - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, - "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-builtin-type": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz", - "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==", - "dev": true, - "dependencies": { - "function.prototype.name": "^1.1.5", - "has-tostringtag": "^1.0.0", - "is-async-function": "^2.0.0", - "is-date-object": "^1.0.5", - "is-finalizationregistry": "^1.0.2", - "is-generator-function": "^1.0.10", - "is-regex": "^1.1.4", - "is-weakref": "^1.0.2", - "isarray": "^2.0.5", - "which-boxed-primitive": "^1.0.2", - "which-collection": "^1.0.1", - "which-typed-array": "^1.1.9" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-collection": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", - "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", - "dev": true, - "dependencies": { - "is-map": "^2.0.1", - "is-set": "^2.0.1", - "is-weakmap": "^2.0.1", - "is-weakset": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-typed-array": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.14.tgz", - "integrity": "sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg==", - "dev": true, - "dependencies": { - "available-typed-arrays": "^1.0.6", - "call-bind": "^1.0.5", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs": { - "name": "wrap-ansi", - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/wrap-ansi-cjs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, - "node_modules/yaml": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz", - "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==", - "dev": true, - "engines": { - "node": ">= 14" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - } -} diff --git a/examples/adaptive-retrieval/package.json b/examples/adaptive-retrieval/package.json deleted file mode 100644 index 3b7310338..000000000 --- a/examples/adaptive-retrieval/package.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "name": "adaptive-retrieval", - "private": true, - "version": "0.0.0", - "type": "module", - "scripts": { - "dev": "vite", - "build": "vite build", - "lint": "eslint . --ext js,jsx --report-unused-disable-directives --max-warnings 0", - "preview": "vite preview" - }, - "dependencies": { - "@xenova/transformers": "^2.15.0", - "react": "^18.2.0", - "react-dom": "^18.2.0" - }, - "devDependencies": { - "@types/react": "^18.2.43", - "@types/react-dom": "^18.2.17", - "@vitejs/plugin-react": "^4.2.1", - "autoprefixer": "^10.4.16", - "eslint": "^8.55.0", - "eslint-plugin-react": "^7.33.2", - "eslint-plugin-react-hooks": "^4.6.0", - "eslint-plugin-react-refresh": "^0.4.5", - "postcss": "^8.4.33", - "tailwindcss": "^3.4.1", - "vite": "^5.1.7" - } -} diff --git a/examples/adaptive-retrieval/postcss.config.js b/examples/adaptive-retrieval/postcss.config.js deleted file mode 100644 index 2e7af2b7f..000000000 --- a/examples/adaptive-retrieval/postcss.config.js +++ /dev/null @@ -1,6 +0,0 @@ -export default { - plugins: { - tailwindcss: {}, - autoprefixer: {}, - }, -} diff --git a/examples/adaptive-retrieval/src/App.css b/examples/adaptive-retrieval/src/App.css deleted file mode 100644 index c3951888c..000000000 --- a/examples/adaptive-retrieval/src/App.css +++ /dev/null @@ -1,5 +0,0 @@ -#root { - height: 100vh; - width: 100vw; - padding: 1rem; -} diff --git a/examples/adaptive-retrieval/src/App.jsx b/examples/adaptive-retrieval/src/App.jsx deleted file mode 100644 index 9fc130e0d..000000000 --- a/examples/adaptive-retrieval/src/App.jsx +++ /dev/null @@ -1,173 +0,0 @@ -import { useState, useRef, useEffect, useCallback } from 'react' -import './App.css' - -const PLACEHOLDER_TEXTS = [ - "A panda is a large black-and-white bear native to China.", - "The typical life span of a panda is 20 years in the wild.", - "A panda's diet consists almost entirely of bamboo.", - "Ailuropoda melanoleuca is a bear species endemic to China.", - "I love pandas so much!", - "Bamboo is a fast-growing, woody grass.", - "My favorite movie is Kung Fu Panda.", - "I love the color blue.", - "Once upon a time, in a land far, far away...", - "Hello world.", - "This is an example sentence.", -].sort(() => Math.random() - 0.5); - -function normalize(embedding) { - const magnitude = Math.sqrt(embedding.reduce((sum, val) => sum + val * val, 0)); - return embedding.map((val) => val / magnitude); -} - -function dot(a, b) { - return a.reduce((acc, val, i) => acc + val * b[i], 0); -} - -function App() { - const [status, setStatus] = useState('idle'); - - const [source, setSource] = useState('What is a panda?'); - const [text, setText] = useState(PLACEHOLDER_TEXTS.join('\n')); - - const [dimensions, setDimensions] = useState(768); - - const [embeddings, setEmbeddings] = useState([]); - const [results, setResults] = useState([]); - - // Create a reference to the worker object. - const worker = useRef(null); - - // We use the `useEffect` hook to setup the worker as soon as the `App` component is mounted. - useEffect(() => { - if (!worker.current) { - // Create the worker if it does not yet exist. - worker.current = new Worker(new URL('./worker.js', import.meta.url), { - type: 'module' - }); - } - - // Create a callback function for messages from the worker thread. - const onMessageReceived = (e) => { - const status = e.data.status; - if (status === 'initiate') { - setStatus('loading'); - } else if (status === 'ready') { - setStatus('ready'); - } else if (status === 'complete') { - const embeddings = e.data.embeddings; - setDimensions(embeddings[0].length); - setEmbeddings(embeddings); - setStatus('idle'); - } - }; - - // Attach the callback function as an event listener. - worker.current.addEventListener('message', onMessageReceived); - - // Define a cleanup function for when the component is unmounted. - return () => worker.current.removeEventListener('message', onMessageReceived); - }, []); - - const run = useCallback(() => { - setStatus('processing'); - worker.current.postMessage({ - source, - text, - }); - }, [source, text]) - - useEffect(() => { - if (embeddings.length === 0) return; - const slicedEmbeddings = embeddings.map(x => normalize(x.slice(0, dimensions))); - - const sourceEmbedding = slicedEmbeddings[0]; - const sentenceEmbeddings = slicedEmbeddings.slice(1); - - // Compute the cosine similarity between the source sentence and the other sentences. - // NOTE: Since vectors are normalized, we use the dot product. - const similarities = sentenceEmbeddings.map((embedding) => dot(sourceEmbedding, embedding)); - - setResults(text.trim().split('\n').map((sentence, i) => ({ - sentence, - similarity: similarities[i] - })).sort((a, b) => b.similarity - a.similarity)); - }, [text, embeddings, dimensions]) - - const busy = status !== 'idle'; - - return ( -
-

Adaptive Retrieval w/ Matryoshka Embeddings

-

Powered by Nomic Embed v1.5 and 🤗 Transformers.js

-
-
- - - - - - -
-
- {embeddings.length > 0 && (<> - - { - setDimensions(e.target.value); - }} - className="w-[98%] h-[10px]" - /> -

{dimensions}

-
- -
- {results.map((result, i) => ( -
- {result.similarity.toFixed(3)} - {result.sentence} -
- ))} -
-
- ) - } -
-
-
- ) -} - -export default App diff --git a/examples/adaptive-retrieval/src/index.css b/examples/adaptive-retrieval/src/index.css deleted file mode 100644 index b5c61c956..000000000 --- a/examples/adaptive-retrieval/src/index.css +++ /dev/null @@ -1,3 +0,0 @@ -@tailwind base; -@tailwind components; -@tailwind utilities; diff --git a/examples/adaptive-retrieval/src/main.jsx b/examples/adaptive-retrieval/src/main.jsx deleted file mode 100644 index 54b39dd1d..000000000 --- a/examples/adaptive-retrieval/src/main.jsx +++ /dev/null @@ -1,10 +0,0 @@ -import React from 'react' -import ReactDOM from 'react-dom/client' -import App from './App.jsx' -import './index.css' - -ReactDOM.createRoot(document.getElementById('root')).render( - - - , -) diff --git a/examples/adaptive-retrieval/src/worker.js b/examples/adaptive-retrieval/src/worker.js deleted file mode 100644 index 23c9e7a39..000000000 --- a/examples/adaptive-retrieval/src/worker.js +++ /dev/null @@ -1,47 +0,0 @@ -import { env, pipeline } from '@xenova/transformers'; - -// Skip local model check since we are downloading the model from the Hugging Face Hub. -env.allowLocalModels = false; - -class MyFeatureExtractionPipeline { - static task = 'feature-extraction'; - static model = 'nomic-ai/nomic-embed-text-v1.5'; - static instance = null; - - static async getInstance(progress_callback = null) { - if (this.instance === null) { - this.instance = pipeline(this.task, this.model, { - quantized: true, - progress_callback, - }); - } - - return this.instance; - } -} - -// https://huggingface.co/nomic-ai/nomic-embed-text-v1.5#usage -const SEARCH_PREFIX = 'search_query: '; -const DOCUMENT_PREFIX = 'search_document: '; - -// Listen for messages from the main thread -self.addEventListener('message', async (event) => { - // Retrieve the pipeline. When called for the first time, - // this will load the pipeline and save it for future use. - const extractor = await MyFeatureExtractionPipeline.getInstance(x => { - // We also add a progress callback to the pipeline so that we can - // track model loading. - self.postMessage(x); - }); - - const { source, text } = event.data; - - const split = [ - SEARCH_PREFIX + source, - ...text.trim().split('\n').map(x => DOCUMENT_PREFIX + x), - ]; - const embeddings = await extractor(split, { pooling: 'mean', normalize: true }); - - // Send the output back to the main thread - self.postMessage({ status: 'complete', embeddings: embeddings.tolist() }); -}); diff --git a/examples/adaptive-retrieval/tailwind.config.js b/examples/adaptive-retrieval/tailwind.config.js deleted file mode 100644 index d37737fc0..000000000 --- a/examples/adaptive-retrieval/tailwind.config.js +++ /dev/null @@ -1,12 +0,0 @@ -/** @type {import('tailwindcss').Config} */ -export default { - content: [ - "./index.html", - "./src/**/*.{js,ts,jsx,tsx}", - ], - theme: { - extend: {}, - }, - plugins: [], -} - diff --git a/examples/adaptive-retrieval/vite.config.js b/examples/adaptive-retrieval/vite.config.js deleted file mode 100644 index 5a33944a9..000000000 --- a/examples/adaptive-retrieval/vite.config.js +++ /dev/null @@ -1,7 +0,0 @@ -import { defineConfig } from 'vite' -import react from '@vitejs/plugin-react' - -// https://vitejs.dev/config/ -export default defineConfig({ - plugins: [react()], -}) From 363aefa3be883739fa4d0d23ed6828a7f0cd256d Mon Sep 17 00:00:00 2001 From: Joshua Lochner Date: Mon, 23 Dec 2024 14:11:38 +0000 Subject: [PATCH 02/23] Move code completion demo --- examples/code-completion/.eslintrc.cjs | 16 - examples/code-completion/.gitignore | 24 - examples/code-completion/index.html | 12 - examples/code-completion/package-lock.json | 4823 ----------------- examples/code-completion/package.json | 34 - examples/code-completion/postcss.config.js | 6 - examples/code-completion/src/App.css | 34 - examples/code-completion/src/App.jsx | 251 - examples/code-completion/src/assets/react.svg | 1 - .../src/components/Progress.jsx | 20 - examples/code-completion/src/index.css | 72 - examples/code-completion/src/main.jsx | 10 - examples/code-completion/src/worker.js | 73 - examples/code-completion/tailwind.config.js | 12 - examples/code-completion/vite.config.js | 7 - 15 files changed, 5395 deletions(-) delete mode 100644 examples/code-completion/.eslintrc.cjs delete mode 100644 examples/code-completion/.gitignore delete mode 100644 examples/code-completion/index.html delete mode 100644 examples/code-completion/package-lock.json delete mode 100644 examples/code-completion/package.json delete mode 100644 examples/code-completion/postcss.config.js delete mode 100644 examples/code-completion/src/App.css delete mode 100644 examples/code-completion/src/App.jsx delete mode 100644 examples/code-completion/src/assets/react.svg delete mode 100644 examples/code-completion/src/components/Progress.jsx delete mode 100644 examples/code-completion/src/index.css delete mode 100644 examples/code-completion/src/main.jsx delete mode 100644 examples/code-completion/src/worker.js delete mode 100644 examples/code-completion/tailwind.config.js delete mode 100644 examples/code-completion/vite.config.js diff --git a/examples/code-completion/.eslintrc.cjs b/examples/code-completion/.eslintrc.cjs deleted file mode 100644 index c12e55cec..000000000 --- a/examples/code-completion/.eslintrc.cjs +++ /dev/null @@ -1,16 +0,0 @@ -module.exports = { - env: { browser: true, es2020: true, 'node': true }, - extends: [ - 'eslint:recommended', - 'plugin:react/recommended', - 'plugin:react/jsx-runtime', - 'plugin:react-hooks/recommended', - ], - parserOptions: { ecmaVersion: 'latest', sourceType: 'module' }, - settings: { react: { version: '18.2' } }, - plugins: ['react-refresh'], - rules: { - 'react-refresh/only-export-components': 'warn', - 'react/prop-types': 'off', - }, -} diff --git a/examples/code-completion/.gitignore b/examples/code-completion/.gitignore deleted file mode 100644 index a547bf36d..000000000 --- a/examples/code-completion/.gitignore +++ /dev/null @@ -1,24 +0,0 @@ -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -pnpm-debug.log* -lerna-debug.log* - -node_modules -dist -dist-ssr -*.local - -# Editor directories and files -.vscode/* -!.vscode/extensions.json -.idea -.DS_Store -*.suo -*.ntvs* -*.njsproj -*.sln -*.sw? diff --git a/examples/code-completion/index.html b/examples/code-completion/index.html deleted file mode 100644 index b23c61fb3..000000000 --- a/examples/code-completion/index.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - Transformers.js - Code completion playground - - -
- - - diff --git a/examples/code-completion/package-lock.json b/examples/code-completion/package-lock.json deleted file mode 100644 index d6832028b..000000000 --- a/examples/code-completion/package-lock.json +++ /dev/null @@ -1,4823 +0,0 @@ -{ - "name": "code-completion", - "version": "0.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "code-completion", - "version": "0.0.0", - "dependencies": { - "@monaco-editor/react": "^4.5.1", - "@xenova/transformers": "^2.4.4", - "react": "^18.2.0", - "react-dom": "^18.2.0" - }, - "devDependencies": { - "@types/react": "^18.2.15", - "@types/react-dom": "^18.2.7", - "@vitejs/plugin-react": "^4.0.3", - "autoprefixer": "^10.4.14", - "eslint": "^8.45.0", - "eslint-plugin-react": "^7.32.2", - "eslint-plugin-react-hooks": "^4.6.0", - "eslint-plugin-react-refresh": "^0.4.3", - "postcss": "^8.4.31", - "tailwindcss": "^3.3.3", - "vite": "^4.5.3" - } - }, - "node_modules/@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@alloc/quick-lru": { - "version": "5.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@ampproject/remapping": { - "version": "2.2.1", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.22.13", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/highlight": "^7.22.13", - "chalk": "^2.4.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.22.20", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.23.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.0", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-module-transforms": "^7.23.0", - "@babel/helpers": "^7.23.0", - "@babel/parser": "^7.23.0", - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.0", - "@babel/types": "^7.23.0", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/generator": { - "version": "7.23.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.23.0", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.22.15", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-validator-option": "^7.22.15", - "browserslist": "^4.21.9", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.23.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.22.15", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.22.15" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.23.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.20" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.22.15", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.23.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.0", - "@babel/types": "^7.23.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.22.20", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.23.0", - "dev": true, - "license": "MIT", - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-transform-react-jsx-self": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-jsx-source": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/template": { - "version": "7.22.15", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", - "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.0", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.0", - "@babel/types": "^7.23.0", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.23.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.20", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.18.20", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.9.1", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "2.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.22.0", - "dev": true, - "license": "MIT", - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@eslint/js": { - "version": "8.50.0", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.11", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "dev": true, - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.19", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@monaco-editor/loader": { - "version": "1.4.0", - "license": "MIT", - "dependencies": { - "state-local": "^1.0.6" - }, - "peerDependencies": { - "monaco-editor": ">= 0.21.0 < 1" - } - }, - "node_modules/@monaco-editor/react": { - "version": "4.5.2", - "license": "MIT", - "dependencies": { - "@monaco-editor/loader": "^1.3.3" - }, - "peerDependencies": { - "monaco-editor": ">= 0.25.0 < 1", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@protobufjs/aspromise": { - "version": "1.1.2", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/base64": { - "version": "1.1.2", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/codegen": { - "version": "2.0.4", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/eventemitter": { - "version": "1.1.0", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/fetch": { - "version": "1.1.0", - "license": "BSD-3-Clause", - "dependencies": { - "@protobufjs/aspromise": "^1.1.1", - "@protobufjs/inquire": "^1.1.0" - } - }, - "node_modules/@protobufjs/float": { - "version": "1.0.2", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/inquire": { - "version": "1.1.0", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/path": { - "version": "1.1.2", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/pool": { - "version": "1.1.0", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/utf8": { - "version": "1.1.0", - "license": "BSD-3-Clause" - }, - "node_modules/@types/babel__core": { - "version": "7.20.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "node_modules/@types/babel__generator": { - "version": "7.6.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__template": { - "version": "7.4.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__traverse": { - "version": "7.20.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.20.7" - } - }, - "node_modules/@types/node": { - "version": "20.8.2", - "license": "MIT" - }, - "node_modules/@types/prop-types": { - "version": "15.7.8", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/react": { - "version": "18.2.24", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/prop-types": "*", - "@types/scheduler": "*", - "csstype": "^3.0.2" - } - }, - "node_modules/@types/react-dom": { - "version": "18.2.9", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/react": "*" - } - }, - "node_modules/@types/scheduler": { - "version": "0.16.4", - "dev": true, - "license": "MIT" - }, - "node_modules/@vitejs/plugin-react": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.22.20", - "@babel/plugin-transform-react-jsx-self": "^7.22.5", - "@babel/plugin-transform-react-jsx-source": "^7.22.5", - "@types/babel__core": "^7.20.2", - "react-refresh": "^0.14.0" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "peerDependencies": { - "vite": "^4.2.0" - } - }, - "node_modules/@xenova/transformers": { - "version": "2.6.2", - "license": "Apache-2.0", - "dependencies": { - "onnxruntime-web": "1.14.0", - "sharp": "^0.32.0" - }, - "optionalDependencies": { - "onnxruntime-node": "1.14.0" - } - }, - "node_modules/acorn": { - "version": "8.10.0", - "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "dev": true, - "license": "MIT", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/any-promise": { - "version": "1.3.0", - "dev": true, - "license": "MIT" - }, - "node_modules/anymatch": { - "version": "3.1.3", - "dev": true, - "license": "ISC", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/arg": { - "version": "5.0.2", - "dev": true, - "license": "MIT" - }, - "node_modules/argparse": { - "version": "2.0.1", - "dev": true, - "license": "Python-2.0" - }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "is-array-buffer": "^3.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-includes": { - "version": "3.1.7", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flat": { - "version": "1.3.2", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.2", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.tosorted": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0", - "get-intrinsic": "^1.2.1" - } - }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", - "is-array-buffer": "^3.0.2", - "is-shared-array-buffer": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/asynciterator.prototype": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.3" - } - }, - "node_modules/autoprefixer": { - "version": "10.4.16", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "browserslist": "^4.21.10", - "caniuse-lite": "^1.0.30001538", - "fraction.js": "^4.3.6", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", - "postcss-value-parser": "^4.2.0" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" - }, - "engines": { - "node": "^10 || ^12 || >=14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/available-typed-arrays": { - "version": "1.0.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/b4a": { - "version": "1.6.4", - "license": "ISC" - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "dev": true, - "license": "MIT" - }, - "node_modules/base64-js": { - "version": "1.5.1", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/bl": { - "version": "4.1.0", - "license": "MIT", - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.22.1", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "caniuse-lite": "^1.0.30001541", - "electron-to-chromium": "^1.4.535", - "node-releases": "^2.0.13", - "update-browserslist-db": "^1.0.13" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/buffer": { - "version": "5.7.1", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/call-bind": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase-css": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001543", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "CC-BY-4.0" - }, - "node_modules/chalk": { - "version": "2.4.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/chokidar": { - "version": "3.5.3", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "license": "MIT", - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chokidar/node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/chokidar/node_modules/glob-parent": { - "version": "5.1.2", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/chownr": { - "version": "1.1.4", - "license": "ISC" - }, - "node_modules/color": { - "version": "4.2.3", - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1", - "color-string": "^1.9.0" - }, - "engines": { - "node": ">=12.5.0" - } - }, - "node_modules/color-convert": { - "version": "1.9.3", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-name": { - "version": "1.1.3", - "license": "MIT" - }, - "node_modules/color-string": { - "version": "1.9.1", - "license": "MIT", - "dependencies": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "node_modules/color/node_modules/color-convert": { - "version": "2.0.1", - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color/node_modules/color-name": { - "version": "1.1.4", - "license": "MIT" - }, - "node_modules/commander": { - "version": "4.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/cssesc": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/csstype": { - "version": "3.1.2", - "dev": true, - "license": "MIT" - }, - "node_modules/debug": { - "version": "4.3.4", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decompress-response": { - "version": "6.0.0", - "license": "MIT", - "dependencies": { - "mimic-response": "^3.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/deep-extend": { - "version": "0.6.0", - "license": "MIT", - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "dev": true, - "license": "MIT" - }, - "node_modules/define-data-property": { - "version": "1.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.2.1", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/define-properties": { - "version": "1.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/detect-libc": { - "version": "2.0.2", - "license": "Apache-2.0", - "engines": { - "node": ">=8" - } - }, - "node_modules/didyoumean": { - "version": "1.2.2", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/dlv": { - "version": "1.1.3", - "dev": true, - "license": "MIT" - }, - "node_modules/doctrine": { - "version": "3.0.0", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.4.540", - "dev": true, - "license": "ISC" - }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "license": "MIT", - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/es-abstract": { - "version": "1.22.2", - "dev": true, - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "arraybuffer.prototype.slice": "^1.0.2", - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-set-tostringtag": "^2.0.1", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.1", - "get-symbol-description": "^1.0.0", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", - "is-array-buffer": "^3.0.2", - "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.12", - "is-weakref": "^1.0.2", - "object-inspect": "^1.12.3", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.1", - "safe-array-concat": "^1.0.1", - "safe-regex-test": "^1.0.0", - "string.prototype.trim": "^1.2.8", - "string.prototype.trimend": "^1.0.7", - "string.prototype.trimstart": "^1.0.7", - "typed-array-buffer": "^1.0.0", - "typed-array-byte-length": "^1.0.0", - "typed-array-byte-offset": "^1.0.0", - "typed-array-length": "^1.0.4", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.11" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-iterator-helpers": { - "version": "1.0.15", - "dev": true, - "license": "MIT", - "dependencies": { - "asynciterator.prototype": "^1.0.0", - "call-bind": "^1.0.2", - "define-properties": "^1.2.1", - "es-abstract": "^1.22.1", - "es-set-tostringtag": "^2.0.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.2.1", - "globalthis": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", - "iterator.prototype": "^1.1.2", - "safe-array-concat": "^1.0.1" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-shim-unscopables": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has": "^1.0.3" - } - }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/esbuild": { - "version": "0.18.20", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/android-arm": "0.18.20", - "@esbuild/android-arm64": "0.18.20", - "@esbuild/android-x64": "0.18.20", - "@esbuild/darwin-arm64": "0.18.20", - "@esbuild/darwin-x64": "0.18.20", - "@esbuild/freebsd-arm64": "0.18.20", - "@esbuild/freebsd-x64": "0.18.20", - "@esbuild/linux-arm": "0.18.20", - "@esbuild/linux-arm64": "0.18.20", - "@esbuild/linux-ia32": "0.18.20", - "@esbuild/linux-loong64": "0.18.20", - "@esbuild/linux-mips64el": "0.18.20", - "@esbuild/linux-ppc64": "0.18.20", - "@esbuild/linux-riscv64": "0.18.20", - "@esbuild/linux-s390x": "0.18.20", - "@esbuild/linux-x64": "0.18.20", - "@esbuild/netbsd-x64": "0.18.20", - "@esbuild/openbsd-x64": "0.18.20", - "@esbuild/sunos-x64": "0.18.20", - "@esbuild/win32-arm64": "0.18.20", - "@esbuild/win32-ia32": "0.18.20", - "@esbuild/win32-x64": "0.18.20" - } - }, - "node_modules/esbuild/node_modules/@esbuild/android-arm": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", - "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild/node_modules/@esbuild/android-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", - "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild/node_modules/@esbuild/android-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", - "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild/node_modules/@esbuild/darwin-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", - "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild/node_modules/@esbuild/darwin-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", - "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild/node_modules/@esbuild/freebsd-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", - "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild/node_modules/@esbuild/freebsd-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", - "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild/node_modules/@esbuild/linux-arm": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", - "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild/node_modules/@esbuild/linux-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", - "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild/node_modules/@esbuild/linux-ia32": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", - "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild/node_modules/@esbuild/linux-loong64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", - "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild/node_modules/@esbuild/linux-mips64el": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", - "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild/node_modules/@esbuild/linux-ppc64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", - "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild/node_modules/@esbuild/linux-riscv64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", - "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild/node_modules/@esbuild/linux-s390x": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", - "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild/node_modules/@esbuild/linux-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", - "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild/node_modules/@esbuild/netbsd-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", - "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild/node_modules/@esbuild/openbsd-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", - "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild/node_modules/@esbuild/sunos-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", - "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild/node_modules/@esbuild/win32-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", - "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild/node_modules/@esbuild/win32-ia32": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", - "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/eslint": { - "version": "8.50.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.2", - "@eslint/js": "8.50.0", - "@humanwhocodes/config-array": "^0.11.11", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-plugin-react": { - "version": "7.33.2", - "dev": true, - "license": "MIT", - "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flatmap": "^1.3.1", - "array.prototype.tosorted": "^1.1.1", - "doctrine": "^2.1.0", - "es-iterator-helpers": "^1.0.12", - "estraverse": "^5.3.0", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.1.2", - "object.entries": "^1.1.6", - "object.fromentries": "^2.0.6", - "object.hasown": "^1.1.2", - "object.values": "^1.1.6", - "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.4", - "semver": "^6.3.1", - "string.prototype.matchall": "^4.0.8" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" - } - }, - "node_modules/eslint-plugin-react-hooks": { - "version": "4.6.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" - } - }, - "node_modules/eslint-plugin-react-refresh": { - "version": "0.4.3", - "dev": true, - "license": "MIT", - "peerDependencies": { - "eslint": ">=7" - } - }, - "node_modules/eslint-plugin-react/node_modules/doctrine": { - "version": "2.1.0", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-scope": { - "version": "7.2.2", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/eslint/node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/eslint/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/eslint/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "license": "MIT" - }, - "node_modules/eslint/node_modules/escape-string-regexp": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/globals": { - "version": "13.22.0", - "dev": true, - "license": "MIT", - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/espree": { - "version": "9.6.1", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esquery": { - "version": "1.5.0", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-template": { - "version": "2.0.3", - "license": "(MIT OR WTFPL)", - "engines": { - "node": ">=6" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-fifo": { - "version": "1.3.2", - "license": "MIT" - }, - "node_modules/fast-glob": { - "version": "3.3.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "dev": true, - "license": "MIT" - }, - "node_modules/fastq": { - "version": "1.15.0", - "dev": true, - "license": "ISC", - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-up": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat-cache": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "flatted": "^3.2.7", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/flatbuffers": { - "version": "1.12.0", - "license": "SEE LICENSE IN LICENSE.txt" - }, - "node_modules/flatted": { - "version": "3.2.9", - "dev": true, - "license": "ISC" - }, - "node_modules/for-each": { - "version": "0.3.3", - "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.1.3" - } - }, - "node_modules/fraction.js": { - "version": "4.3.6", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - }, - "funding": { - "type": "patreon", - "url": "https://github.com/sponsors/rawify" - } - }, - "node_modules/fs-constants": { - "version": "1.0.0", - "license": "MIT" - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "dev": true, - "license": "ISC" - }, - "node_modules/function-bind": { - "version": "1.1.1", - "dev": true, - "license": "MIT" - }, - "node_modules/function.prototype.name": { - "version": "1.1.6", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "functions-have-names": "^1.2.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-intrinsic": { - "version": "1.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-symbol-description": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/github-from-package": { - "version": "0.0.0", - "license": "MIT" - }, - "node_modules/glob": { - "version": "7.2.3", - "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/globals": { - "version": "11.12.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/globalthis": { - "version": "1.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gopd": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graphemer": { - "version": "1.4.0", - "dev": true, - "license": "MIT" - }, - "node_modules/guid-typescript": { - "version": "1.0.9", - "license": "ISC" - }, - "node_modules/has": { - "version": "1.0.4", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-bigints": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-flag": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "BSD-3-Clause" - }, - "node_modules/ignore": { - "version": "5.2.4", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "dev": true, - "license": "ISC", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "license": "ISC" - }, - "node_modules/ini": { - "version": "1.3.8", - "license": "ISC" - }, - "node_modules/internal-slot": { - "version": "1.0.5", - "dev": true, - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/is-array-buffer": { - "version": "3.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "is-typed-array": "^1.1.10" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-arrayish": { - "version": "0.3.2", - "license": "MIT" - }, - "node_modules/is-async-function": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-bigint": { - "version": "1.0.4", - "dev": true, - "license": "MIT", - "dependencies": { - "has-bigints": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-callable": { - "version": "1.2.7", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.13.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.0.5", - "dev": true, - "license": "MIT", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-finalizationregistry": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-generator-function": { - "version": "1.0.10", - "dev": true, - "license": "MIT", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-map": { - "version": "2.0.2", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-negative-zero": { - "version": "2.0.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-number-object": { - "version": "1.0.7", - "dev": true, - "license": "MIT", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-regex": { - "version": "1.1.4", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-set": { - "version": "2.0.2", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-string": { - "version": "1.0.7", - "dev": true, - "license": "MIT", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.0.4", - "dev": true, - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.12", - "dev": true, - "license": "MIT", - "dependencies": { - "which-typed-array": "^1.1.11" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakmap": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakref": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakset": { - "version": "2.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/isarray": { - "version": "2.0.5", - "dev": true, - "license": "MIT" - }, - "node_modules/isexe": { - "version": "2.0.0", - "dev": true, - "license": "ISC" - }, - "node_modules/iterator.prototype": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "define-properties": "^1.2.1", - "get-intrinsic": "^1.2.1", - "has-symbols": "^1.0.3", - "reflect.getprototypeof": "^1.0.4", - "set-function-name": "^2.0.1" - } - }, - "node_modules/jiti": { - "version": "1.20.0", - "dev": true, - "license": "MIT", - "bin": { - "jiti": "bin/jiti.js" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "license": "MIT" - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsesc": { - "version": "2.5.2", - "dev": true, - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json-buffer": { - "version": "3.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "dev": true, - "license": "MIT" - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/json5": { - "version": "2.2.3", - "dev": true, - "license": "MIT", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsx-ast-utils": { - "version": "3.3.5", - "dev": true, - "license": "MIT", - "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flat": "^1.3.1", - "object.assign": "^4.1.4", - "object.values": "^1.1.6" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/keyv": { - "version": "4.5.3", - "dev": true, - "license": "MIT", - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/lilconfig": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "dev": true, - "license": "MIT" - }, - "node_modules/locate-path": { - "version": "6.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "dev": true, - "license": "MIT" - }, - "node_modules/long": { - "version": "4.0.0", - "license": "Apache-2.0" - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "license": "MIT", - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/lru-cache": { - "version": "5.1.1", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/merge2": { - "version": "1.4.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.5", - "dev": true, - "license": "MIT", - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mimic-response": { - "version": "3.1.0", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/mkdirp-classic": { - "version": "0.5.3", - "license": "MIT" - }, - "node_modules/monaco-editor": { - "version": "0.43.0", - "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.43.0.tgz", - "integrity": "sha512-cnoqwQi/9fml2Szamv1XbSJieGJ1Dc8tENVMD26Kcfl7xGQWp7OBKMjlwKVGYFJ3/AXJjSOGvcqK7Ry/j9BM1Q==", - "peer": true - }, - "node_modules/ms": { - "version": "2.1.2", - "dev": true, - "license": "MIT" - }, - "node_modules/mz": { - "version": "2.7.0", - "dev": true, - "license": "MIT", - "dependencies": { - "any-promise": "^1.0.0", - "object-assign": "^4.0.1", - "thenify-all": "^1.0.0" - } - }, - "node_modules/nanoid": { - "version": "3.3.6", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/napi-build-utils": { - "version": "1.0.2", - "license": "MIT" - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "dev": true, - "license": "MIT" - }, - "node_modules/node-abi": { - "version": "3.47.0", - "license": "MIT", - "dependencies": { - "semver": "^7.3.5" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/node-abi/node_modules/lru-cache": { - "version": "6.0.0", - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/node-abi/node_modules/semver": { - "version": "7.5.4", - "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/node-abi/node_modules/yallist": { - "version": "4.0.0", - "license": "ISC" - }, - "node_modules/node-addon-api": { - "version": "6.1.0", - "license": "MIT" - }, - "node_modules/node-releases": { - "version": "2.0.13", - "dev": true, - "license": "MIT" - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-range": { - "version": "0.1.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-hash": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/object-inspect": { - "version": "1.12.3", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.4", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.entries": { - "version": "1.1.7", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.fromentries": { - "version": "2.0.7", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.hasown": { - "version": "1.1.3", - "dev": true, - "license": "MIT", - "dependencies": { - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.values": { - "version": "1.1.7", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/once": { - "version": "1.4.0", - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onnx-proto": { - "version": "4.0.4", - "license": "MIT", - "dependencies": { - "protobufjs": "^6.8.8" - } - }, - "node_modules/onnxruntime-common": { - "version": "1.14.0", - "license": "MIT" - }, - "node_modules/onnxruntime-node": { - "version": "1.14.0", - "license": "MIT", - "optional": true, - "os": [ - "win32", - "darwin", - "linux" - ], - "dependencies": { - "onnxruntime-common": "~1.14.0" - } - }, - "node_modules/onnxruntime-web": { - "version": "1.14.0", - "license": "MIT", - "dependencies": { - "flatbuffers": "^1.12.0", - "guid-typescript": "^1.0.9", - "long": "^4.0.0", - "onnx-proto": "^4.0.4", - "onnxruntime-common": "~1.14.0", - "platform": "^1.3.6" - } - }, - "node_modules/optionator": { - "version": "0.9.3", - "dev": true, - "license": "MIT", - "dependencies": { - "@aashutoshrathi/word-wrap": "^1.2.3", - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "dev": true, - "license": "MIT" - }, - "node_modules/picocolors": { - "version": "1.0.0", - "dev": true, - "license": "ISC" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "2.3.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pirates": { - "version": "4.0.6", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/platform": { - "version": "1.3.6", - "license": "MIT" - }, - "node_modules/postcss": { - "version": "8.4.31", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/postcss-import": { - "version": "15.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.0.0", - "read-cache": "^1.0.0", - "resolve": "^1.1.7" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "postcss": "^8.0.0" - } - }, - "node_modules/postcss-import/node_modules/resolve": { - "version": "1.22.6", - "dev": true, - "license": "MIT", - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/postcss-js": { - "version": "4.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "camelcase-css": "^2.0.1" - }, - "engines": { - "node": "^12 || ^14 || >= 16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": "^8.4.21" - } - }, - "node_modules/postcss-load-config": { - "version": "4.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "lilconfig": "^2.0.5", - "yaml": "^2.1.1" - }, - "engines": { - "node": ">= 14" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": ">=8.0.9", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "postcss": { - "optional": true - }, - "ts-node": { - "optional": true - } - } - }, - "node_modules/postcss-nested": { - "version": "6.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss-selector-parser": "^6.0.11" - }, - "engines": { - "node": ">=12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": "^8.2.14" - } - }, - "node_modules/postcss-selector-parser": { - "version": "6.0.13", - "dev": true, - "license": "MIT", - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-value-parser": { - "version": "4.2.0", - "dev": true, - "license": "MIT" - }, - "node_modules/prebuild-install": { - "version": "7.1.1", - "license": "MIT", - "dependencies": { - "detect-libc": "^2.0.0", - "expand-template": "^2.0.3", - "github-from-package": "0.0.0", - "minimist": "^1.2.3", - "mkdirp-classic": "^0.5.3", - "napi-build-utils": "^1.0.1", - "node-abi": "^3.3.0", - "pump": "^3.0.0", - "rc": "^1.2.7", - "simple-get": "^4.0.0", - "tar-fs": "^2.0.0", - "tunnel-agent": "^0.6.0" - }, - "bin": { - "prebuild-install": "bin.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/prebuild-install/node_modules/tar-fs": { - "version": "2.1.1", - "license": "MIT", - "dependencies": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^2.1.4" - } - }, - "node_modules/prebuild-install/node_modules/tar-stream": { - "version": "2.2.0", - "license": "MIT", - "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prop-types": { - "version": "15.8.1", - "dev": true, - "license": "MIT", - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" - } - }, - "node_modules/protobufjs": { - "version": "7.2.5", - "hasInstallScript": true, - "license": "BSD-3-Clause", - "dependencies": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", - "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", - "@types/node": ">=13.7.0", - "long": "^5.0.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/protobufjs/node_modules/long": { - "version": "5.2.3", - "license": "Apache-2.0" - }, - "node_modules/pump": { - "version": "3.0.0", - "license": "MIT", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/punycode": { - "version": "2.3.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/queue-tick": { - "version": "1.0.1", - "license": "MIT" - }, - "node_modules/rc": { - "version": "1.2.8", - "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", - "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "bin": { - "rc": "cli.js" - } - }, - "node_modules/rc/node_modules/strip-json-comments": { - "version": "2.0.1", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react": { - "version": "18.2.0", - "license": "MIT", - "dependencies": { - "loose-envify": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-dom": { - "version": "18.2.0", - "license": "MIT", - "dependencies": { - "loose-envify": "^1.1.0", - "scheduler": "^0.23.0" - }, - "peerDependencies": { - "react": "^18.2.0" - } - }, - "node_modules/react-is": { - "version": "16.13.1", - "dev": true, - "license": "MIT" - }, - "node_modules/react-refresh": { - "version": "0.14.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/read-cache": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "pify": "^2.3.0" - } - }, - "node_modules/readable-stream": { - "version": "3.6.2", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "dev": true, - "license": "MIT", - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/reflect.getprototypeof": { - "version": "1.0.4", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", - "globalthis": "^1.0.3", - "which-builtin-type": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.1", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "set-function-name": "^2.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve": { - "version": "2.0.0-next.4", - "dev": true, - "license": "MIT", - "dependencies": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "dev": true, - "license": "MIT", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rollup": { - "version": "3.29.4", - "dev": true, - "license": "MIT", - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=14.18.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/rollup/node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/safe-array-concat": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", - "has-symbols": "^1.0.3", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/safe-regex-test": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "is-regex": "^1.1.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/scheduler": { - "version": "0.23.0", - "license": "MIT", - "dependencies": { - "loose-envify": "^1.1.0" - } - }, - "node_modules/semver": { - "version": "6.3.1", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/set-function-name": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.0.1", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/sharp": { - "version": "0.32.6", - "hasInstallScript": true, - "license": "Apache-2.0", - "dependencies": { - "color": "^4.2.3", - "detect-libc": "^2.0.2", - "node-addon-api": "^6.1.0", - "prebuild-install": "^7.1.1", - "semver": "^7.5.4", - "simple-get": "^4.0.1", - "tar-fs": "^3.0.4", - "tunnel-agent": "^0.6.0" - }, - "engines": { - "node": ">=14.15.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/sharp/node_modules/lru-cache": { - "version": "6.0.0", - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/sharp/node_modules/semver": { - "version": "7.5.4", - "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/sharp/node_modules/yallist": { - "version": "4.0.0", - "license": "ISC" - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/side-channel": { - "version": "1.0.4", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/simple-concat": { - "version": "1.0.1", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/simple-get": { - "version": "4.0.1", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "decompress-response": "^6.0.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } - }, - "node_modules/simple-swizzle": { - "version": "0.2.2", - "license": "MIT", - "dependencies": { - "is-arrayish": "^0.3.1" - } - }, - "node_modules/source-map-js": { - "version": "1.0.2", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/state-local": { - "version": "1.0.7", - "license": "MIT" - }, - "node_modules/streamx": { - "version": "2.15.1", - "license": "MIT", - "dependencies": { - "fast-fifo": "^1.1.0", - "queue-tick": "^1.0.1" - } - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string.prototype.matchall": { - "version": "4.0.10", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", - "regexp.prototype.flags": "^1.5.0", - "set-function-name": "^2.0.0", - "side-channel": "^1.0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trim": { - "version": "1.2.8", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.7", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.7", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/sucrase": { - "version": "3.34.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.2", - "commander": "^4.0.0", - "glob": "7.1.6", - "lines-and-columns": "^1.1.6", - "mz": "^2.7.0", - "pirates": "^4.0.1", - "ts-interface-checker": "^0.1.9" - }, - "bin": { - "sucrase": "bin/sucrase", - "sucrase-node": "bin/sucrase-node" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/sucrase/node_modules/glob": { - "version": "7.1.6", - "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/supports-color": { - "version": "5.5.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/tailwindcss": { - "version": "3.3.3", - "dev": true, - "license": "MIT", - "dependencies": { - "@alloc/quick-lru": "^5.2.0", - "arg": "^5.0.2", - "chokidar": "^3.5.3", - "didyoumean": "^1.2.2", - "dlv": "^1.1.3", - "fast-glob": "^3.2.12", - "glob-parent": "^6.0.2", - "is-glob": "^4.0.3", - "jiti": "^1.18.2", - "lilconfig": "^2.1.0", - "micromatch": "^4.0.5", - "normalize-path": "^3.0.0", - "object-hash": "^3.0.0", - "picocolors": "^1.0.0", - "postcss": "^8.4.23", - "postcss-import": "^15.1.0", - "postcss-js": "^4.0.1", - "postcss-load-config": "^4.0.1", - "postcss-nested": "^6.0.1", - "postcss-selector-parser": "^6.0.11", - "resolve": "^1.22.2", - "sucrase": "^3.32.0" - }, - "bin": { - "tailwind": "lib/cli.js", - "tailwindcss": "lib/cli.js" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/tailwindcss/node_modules/resolve": { - "version": "1.22.6", - "dev": true, - "license": "MIT", - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/tar-fs": { - "version": "3.0.4", - "license": "MIT", - "dependencies": { - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^3.1.5" - } - }, - "node_modules/tar-stream": { - "version": "3.1.6", - "license": "MIT", - "dependencies": { - "b4a": "^1.6.4", - "fast-fifo": "^1.2.0", - "streamx": "^2.15.0" - } - }, - "node_modules/text-table": { - "version": "0.2.0", - "dev": true, - "license": "MIT" - }, - "node_modules/thenify": { - "version": "3.3.1", - "dev": true, - "license": "MIT", - "dependencies": { - "any-promise": "^1.0.0" - } - }, - "node_modules/thenify-all": { - "version": "1.6.0", - "dev": true, - "license": "MIT", - "dependencies": { - "thenify": ">= 3.1.0 < 4" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/ts-interface-checker": { - "version": "0.1.13", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "license": "Apache-2.0", - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/type-check": { - "version": "0.4.0", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typed-array-buffer": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/typed-array-byte-length": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-byte-offset": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-length": { - "version": "1.0.4", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/unbox-primitive": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.0.13", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "license": "MIT" - }, - "node_modules/vite": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.3.tgz", - "integrity": "sha512-kQL23kMeX92v3ph7IauVkXkikdDRsYMGTVl5KY2E9OY4ONLvkHf04MDTbnfo6NKxZiDLWzVpP5oTa8hQD8U3dg==", - "dev": true, - "dependencies": { - "esbuild": "^0.18.10", - "postcss": "^8.4.27", - "rollup": "^3.27.1" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - }, - "peerDependencies": { - "@types/node": ">= 14", - "less": "*", - "lightningcss": "^1.21.0", - "sass": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.4.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - } - } - }, - "node_modules/vite/node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/which": { - "version": "2.0.2", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-builtin-type": { - "version": "1.1.3", - "dev": true, - "license": "MIT", - "dependencies": { - "function.prototype.name": "^1.1.5", - "has-tostringtag": "^1.0.0", - "is-async-function": "^2.0.0", - "is-date-object": "^1.0.5", - "is-finalizationregistry": "^1.0.2", - "is-generator-function": "^1.0.10", - "is-regex": "^1.1.4", - "is-weakref": "^1.0.2", - "isarray": "^2.0.5", - "which-boxed-primitive": "^1.0.2", - "which-collection": "^1.0.1", - "which-typed-array": "^1.1.9" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-collection": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "is-map": "^2.0.1", - "is-set": "^2.0.1", - "is-weakmap": "^2.0.1", - "is-weakset": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-typed-array": { - "version": "1.1.11", - "dev": true, - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "license": "ISC" - }, - "node_modules/yallist": { - "version": "3.1.1", - "dev": true, - "license": "ISC" - }, - "node_modules/yaml": { - "version": "2.3.2", - "dev": true, - "license": "ISC", - "engines": { - "node": ">= 14" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - } -} diff --git a/examples/code-completion/package.json b/examples/code-completion/package.json deleted file mode 100644 index 05f94b5b5..000000000 --- a/examples/code-completion/package.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "name": "code-completion", - "private": true, - "version": "0.0.0", - "type": "module", - "scripts": { - "dev": "vite", - "build": "vite build", - "lint": "eslint src --ext js,jsx --report-unused-disable-directives --max-warnings 0", - "preview": "vite preview" - }, - "dependencies": { - "@xenova/transformers": "^2.4.4", - "@monaco-editor/react": "^4.5.1", - "react": "^18.2.0", - "react-dom": "^18.2.0" - }, - "devDependencies": { - "@types/react": "^18.2.15", - "@types/react-dom": "^18.2.7", - "@vitejs/plugin-react": "^4.0.3", - "autoprefixer": "^10.4.14", - "eslint": "^8.45.0", - "eslint-plugin-react": "^7.32.2", - "eslint-plugin-react-hooks": "^4.6.0", - "eslint-plugin-react-refresh": "^0.4.3", - "postcss": "^8.4.31", - "tailwindcss": "^3.3.3", - "vite": "^4.5.3" - }, - "overrides": { - "protobufjs": "^7.2.4" - } -} diff --git a/examples/code-completion/postcss.config.js b/examples/code-completion/postcss.config.js deleted file mode 100644 index 2e7af2b7f..000000000 --- a/examples/code-completion/postcss.config.js +++ /dev/null @@ -1,6 +0,0 @@ -export default { - plugins: { - tailwindcss: {}, - autoprefixer: {}, - }, -} diff --git a/examples/code-completion/src/App.css b/examples/code-completion/src/App.css deleted file mode 100644 index 749e884f3..000000000 --- a/examples/code-completion/src/App.css +++ /dev/null @@ -1,34 +0,0 @@ -.sidebar { - background-color: #181818; - color: #CCCCCC; -} - -body{ - background-color: #1F1F1F; - color: white; -} - -.progress-container { - position: relative; - font-size: 16px; - color: white; - /* background-color: #e9ecef; */ - border-radius: 8px; - text-align: left; - overflow: hidden; -} - -.progress-bar { - padding: 2px 4px; - z-index: 0; - top: 0; - width: 1%; - height: 100%; - overflow: hidden; - background-color: #007bff; - white-space: nowrap; -} - -.progress-text { - z-index: 2; -} diff --git a/examples/code-completion/src/App.jsx b/examples/code-completion/src/App.jsx deleted file mode 100644 index 7fc84f538..000000000 --- a/examples/code-completion/src/App.jsx +++ /dev/null @@ -1,251 +0,0 @@ -import { useState, useRef, useEffect } from "react"; - -import Editor from "@monaco-editor/react"; -import Progress from './components/Progress'; - -import './App.css' - - -const MODELS = [ - 'Xenova/tiny_starcoder_py', - 'Xenova/codegen-350M-mono', - // 'Xenova/starcoderbase-1b', -] -function App() { - // Editor setup - const monaco = useRef(null); - const [monacoReady, setMonacoReady] = useState(false); - const [language, setLanguage] = useState('python'); // Only allow python for now - - // Model loading - const [ready, setReady] = useState(null); - const [disabled, setDisabled] = useState(false); - const [progressItems, setProgressItems] = useState([]); - - // Inputs and outputs - const [model, setModel] = useState(MODELS[0]); - const [maxNewTokens, setMaxNewTokens] = useState(45); - const [code, setCode] = useState('\ndef fib(n):\n """Calculates the nth Fibonacci number"""\n'); - - // Generation parameters - const [temperature, setTemperature] = useState(0.5); - const [topK, setTopK] = useState(5); - const [doSample, setDoSample] = useState(false); - - // Create a reference to the worker object. - const worker = useRef(null); - - // We use the `useEffect` hook to setup the worker as soon as the `App` component is mounted. - useEffect(() => { - if (!worker.current) { - // Create the worker if it does not yet exist. - worker.current = new Worker(new URL('./worker.js', import.meta.url), { - type: 'module' - }); - } - - // Create a callback function for messages from the worker thread. - const onMessageReceived = (e) => { - switch (e.data.status) { - case 'initiate': - // Model file start load: add a new progress item to the list. - setReady(false); - setProgressItems(prev => [...prev, e.data]); - break; - - case 'progress': - // Model file progress: update one of the progress items. - setProgressItems( - prev => prev.map(item => { - if (item.file === e.data.file) { - return { ...item, ...e.data } - } - return item; - }) - ); - break; - - case 'done': - // Model file loaded: remove the progress item from the list. - setProgressItems( - prev => prev.filter(item => item.file !== e.data.file) - ); - break; - - case 'ready': - // Pipeline ready: the worker is ready to accept messages. - setReady(true); - break; - - case 'update': - // Generation update: update the output text. - setCode(e.data.output); - break; - - case 'complete': - // Generation complete: re-enable the "Generate" button - setDisabled(false); - break; - } - }; - - // Attach the callback function as an event listener. - worker.current.addEventListener('message', onMessageReceived); - - // Define a cleanup function for when the component is unmounted. - return () => worker.current.removeEventListener('message', onMessageReceived); - }); - - - useEffect(() => { - const m = monaco.current; - if (!m) return; - - let actionRegistration = m.addAction({ - id: "generate", - label: "Generate", - contextMenuGroupId: "0_custom", - run: () => { - const val = m.getValue(); - if (!val) return; - - worker.current.postMessage({ - model, - text: val, - max_new_tokens: maxNewTokens, - temperature, - top_k: topK, - do_sample: doSample - }); - } - }); - - // Define a cleanup function for when the component is unmounted. - return () => actionRegistration.dispose(); - }, [monacoReady, model, maxNewTokens, temperature, topK, doSample]); - - const showLoading = ready === false || progressItems.length > 0 - - return ( -
-
- - {ready === false && ( - - )} - {progressItems.map(data => ( -
- -
- ))} -
-
- { - monaco.current = m; - setMonacoReady(true); - }} - options={{ - fontSize: 24 - }} - /> -
-
-

In-browser code completion

-
- Made with 🤗 Transformers.js -
- - - - -
- - -
- { - const newValue = parseInt(event.target.value); - setMaxNewTokens(newValue); - }} - /> - -
- - -
- { - const newValue = Number(event.target.value); - setTemperature(newValue); - }} - /> -
- { - setDoSample(event.target.checked); - }} - className="w-4 h-4 text-blue-600 rounded focus:ring-blue-600 ring-offset-gray-800 focus:ring-2 bg-gray-700 border-gray-600" - /> - -
- -
- - -
- { - const newValue = parseInt(event.target.value); - setTopK(newValue); - }} - /> - -
- -
- - - - Source code -
-
-
- ); -} - -export default App; diff --git a/examples/code-completion/src/assets/react.svg b/examples/code-completion/src/assets/react.svg deleted file mode 100644 index 6c87de9bb..000000000 --- a/examples/code-completion/src/assets/react.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/examples/code-completion/src/components/Progress.jsx b/examples/code-completion/src/components/Progress.jsx deleted file mode 100644 index 28491df43..000000000 --- a/examples/code-completion/src/components/Progress.jsx +++ /dev/null @@ -1,20 +0,0 @@ -function formatBytes(bytes, decimals = 0) { - const sizes = ["Bytes", "KB", "MB", "GB", "TB"]; - if (bytes === 0) return "0 Bytes"; - const i = parseInt(Math.floor(Math.log(bytes) / Math.log(1000)), 10); - const rounded = (bytes / Math.pow(1000, i)).toFixed(decimals); - return rounded + " " + sizes[i]; -} - -export default function Progress({ data }) { - const progress = data.progress ?? 0; - const text = data.file; - - const a = formatBytes(data.loaded); - const b = formatBytes(data.total); - return ( -
-
{text} ({`${a} / ${b}`})
-
- ); -} \ No newline at end of file diff --git a/examples/code-completion/src/index.css b/examples/code-completion/src/index.css deleted file mode 100644 index b90bf2853..000000000 --- a/examples/code-completion/src/index.css +++ /dev/null @@ -1,72 +0,0 @@ -@tailwind base; -@tailwind components; -@tailwind utilities; - -:root { - font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; - line-height: 1.5; - font-weight: 400; - - color-scheme: light dark; - color: rgba(255, 255, 255, 0.87); - background-color: #242424; - - font-synthesis: none; - text-rendering: optimizeLegibility; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - -webkit-text-size-adjust: 100%; -} - - -a { - font-weight: 500; - color: #646cff; - text-decoration: inherit; -} -a:hover { - color: #535bf2; -} - -body { - margin: 0; - display: flex; - place-items: center; -} - -h1 { - font-size: 3.2em; - line-height: 1.1; -} - -button { - border-radius: 8px; - border: 1px solid transparent; - padding: 0.6em 1.2em; - font-size: 1em; - font-weight: 500; - font-family: inherit; - background-color: #1a1a1a; - cursor: pointer; - transition: border-color 0.25s; -} -button:hover { - border-color: #646cff; -} -button:focus, -button:focus-visible { - outline: 4px auto -webkit-focus-ring-color; -} - -@media (prefers-color-scheme: light) { - :root { - color: #213547; - background-color: #ffffff; - } - a:hover { - color: #747bff; - } - button { - background-color: #f9f9f9; - } -} diff --git a/examples/code-completion/src/main.jsx b/examples/code-completion/src/main.jsx deleted file mode 100644 index 54b39dd1d..000000000 --- a/examples/code-completion/src/main.jsx +++ /dev/null @@ -1,10 +0,0 @@ -import React from 'react' -import ReactDOM from 'react-dom/client' -import App from './App.jsx' -import './index.css' - -ReactDOM.createRoot(document.getElementById('root')).render( - - - , -) diff --git a/examples/code-completion/src/worker.js b/examples/code-completion/src/worker.js deleted file mode 100644 index 31ceed610..000000000 --- a/examples/code-completion/src/worker.js +++ /dev/null @@ -1,73 +0,0 @@ - -import { pipeline, env } from '@xenova/transformers'; - -env.allowLocalModels = false; - -/** - * This class uses the Singleton pattern to ensure that only one instance of the pipeline is loaded. - */ -class CodeCompletionPipeline { - static task = 'text-generation'; - static model = null; - static instance = null; - - static async getInstance(progress_callback = null) { - if (this.instance === null) { - this.instance = pipeline(this.task, this.model, { progress_callback }); - } - - return this.instance; - } -} - -// Listen for messages from the main thread -self.addEventListener('message', async (event) => { - const { - model, text, max_new_tokens, - - // Generation parameters - temperature, - top_k, - do_sample, - } = event.data; - - if (CodeCompletionPipeline.model !== model) { - // Invalidate model if different - CodeCompletionPipeline.model = model; - - if (CodeCompletionPipeline.instance !== null) { - (await CodeCompletionPipeline.getInstance()).dispose(); - CodeCompletionPipeline.instance = null; - } - } - - // Retrieve the code-completion pipeline. When called for the first time, - // this will load the pipeline and save it for future use. - let generator = await CodeCompletionPipeline.getInstance(x => { - // We also add a progress callback to the pipeline so that we can - // track model loading. - self.postMessage(x); - }); - - // Actually perform the code-completion - let output = await generator(text, { - max_new_tokens, - temperature, - top_k, - do_sample, - - // Allows for partial output - callback_function: x => { - self.postMessage({ - status: 'update', - output: generator.tokenizer.decode(x[0].output_token_ids, { skip_special_tokens: true }) - }); - } - }); - - // Send the output back to the main thread - self.postMessage({ - status: 'complete', - output: output, - }); -}); diff --git a/examples/code-completion/tailwind.config.js b/examples/code-completion/tailwind.config.js deleted file mode 100644 index d37737fc0..000000000 --- a/examples/code-completion/tailwind.config.js +++ /dev/null @@ -1,12 +0,0 @@ -/** @type {import('tailwindcss').Config} */ -export default { - content: [ - "./index.html", - "./src/**/*.{js,ts,jsx,tsx}", - ], - theme: { - extend: {}, - }, - plugins: [], -} - diff --git a/examples/code-completion/vite.config.js b/examples/code-completion/vite.config.js deleted file mode 100644 index 5a33944a9..000000000 --- a/examples/code-completion/vite.config.js +++ /dev/null @@ -1,7 +0,0 @@ -import { defineConfig } from 'vite' -import react from '@vitejs/plugin-react' - -// https://vitejs.dev/config/ -export default defineConfig({ - plugins: [react()], -}) From 6c966001a0ba04a415d88aaf89809fff37d2d3ab Mon Sep 17 00:00:00 2001 From: Joshua Lochner Date: Mon, 23 Dec 2024 14:12:17 +0000 Subject: [PATCH 03/23] Move florence-2 demo --- examples/florence2-webgpu/.eslintrc.cjs | 21 -- examples/florence2-webgpu/.gitignore | 24 -- examples/florence2-webgpu/README.md | 8 - examples/florence2-webgpu/index.html | 12 - examples/florence2-webgpu/package.json | 30 --- examples/florence2-webgpu/postcss.config.js | 6 - examples/florence2-webgpu/src/App.jsx | 218 ------------------ .../src/components/ImageInput.jsx | 68 ------ .../src/components/Progress.jsx | 15 -- examples/florence2-webgpu/src/index.css | 21 -- examples/florence2-webgpu/src/main.jsx | 10 - examples/florence2-webgpu/src/worker.js | 140 ----------- examples/florence2-webgpu/tailwind.config.js | 12 - examples/florence2-webgpu/vite.config.js | 7 - 14 files changed, 592 deletions(-) delete mode 100644 examples/florence2-webgpu/.eslintrc.cjs delete mode 100644 examples/florence2-webgpu/.gitignore delete mode 100644 examples/florence2-webgpu/README.md delete mode 100644 examples/florence2-webgpu/index.html delete mode 100644 examples/florence2-webgpu/package.json delete mode 100644 examples/florence2-webgpu/postcss.config.js delete mode 100644 examples/florence2-webgpu/src/App.jsx delete mode 100644 examples/florence2-webgpu/src/components/ImageInput.jsx delete mode 100644 examples/florence2-webgpu/src/components/Progress.jsx delete mode 100644 examples/florence2-webgpu/src/index.css delete mode 100644 examples/florence2-webgpu/src/main.jsx delete mode 100644 examples/florence2-webgpu/src/worker.js delete mode 100644 examples/florence2-webgpu/tailwind.config.js delete mode 100644 examples/florence2-webgpu/vite.config.js diff --git a/examples/florence2-webgpu/.eslintrc.cjs b/examples/florence2-webgpu/.eslintrc.cjs deleted file mode 100644 index 3e212e1d4..000000000 --- a/examples/florence2-webgpu/.eslintrc.cjs +++ /dev/null @@ -1,21 +0,0 @@ -module.exports = { - root: true, - env: { browser: true, es2020: true }, - extends: [ - 'eslint:recommended', - 'plugin:react/recommended', - 'plugin:react/jsx-runtime', - 'plugin:react-hooks/recommended', - ], - ignorePatterns: ['dist', '.eslintrc.cjs'], - parserOptions: { ecmaVersion: 'latest', sourceType: 'module' }, - settings: { react: { version: '18.2' } }, - plugins: ['react-refresh'], - rules: { - 'react/jsx-no-target-blank': 'off', - 'react-refresh/only-export-components': [ - 'warn', - { allowConstantExport: true }, - ], - }, -} diff --git a/examples/florence2-webgpu/.gitignore b/examples/florence2-webgpu/.gitignore deleted file mode 100644 index a547bf36d..000000000 --- a/examples/florence2-webgpu/.gitignore +++ /dev/null @@ -1,24 +0,0 @@ -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -pnpm-debug.log* -lerna-debug.log* - -node_modules -dist -dist-ssr -*.local - -# Editor directories and files -.vscode/* -!.vscode/extensions.json -.idea -.DS_Store -*.suo -*.ntvs* -*.njsproj -*.sln -*.sw? diff --git a/examples/florence2-webgpu/README.md b/examples/florence2-webgpu/README.md deleted file mode 100644 index f768e33fc..000000000 --- a/examples/florence2-webgpu/README.md +++ /dev/null @@ -1,8 +0,0 @@ -# React + Vite - -This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. - -Currently, two official plugins are available: - -- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh -- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh diff --git a/examples/florence2-webgpu/index.html b/examples/florence2-webgpu/index.html deleted file mode 100644 index 77f8f0a0c..000000000 --- a/examples/florence2-webgpu/index.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - Florence2 WebGPU - - -
- - - diff --git a/examples/florence2-webgpu/package.json b/examples/florence2-webgpu/package.json deleted file mode 100644 index 490ad589f..000000000 --- a/examples/florence2-webgpu/package.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "name": "florence2-webgpu", - "private": true, - "version": "0.0.0", - "type": "module", - "scripts": { - "dev": "vite", - "build": "vite build", - "lint": "eslint . --ext js,jsx --report-unused-disable-directives --max-warnings 0", - "preview": "vite preview" - }, - "dependencies": { - "@xenova/transformers": "github:xenova/transformers.js#v3", - "react": "^18.3.1", - "react-dom": "^18.3.1" - }, - "devDependencies": { - "@types/react": "^18.3.3", - "@types/react-dom": "^18.3.0", - "@vitejs/plugin-react": "^4.3.1", - "autoprefixer": "^10.4.19", - "eslint": "^8.57.0", - "eslint-plugin-react": "^7.34.2", - "eslint-plugin-react-hooks": "^4.6.2", - "eslint-plugin-react-refresh": "^0.4.7", - "postcss": "^8.4.38", - "tailwindcss": "^3.4.4", - "vite": "^5.3.1" - } -} diff --git a/examples/florence2-webgpu/postcss.config.js b/examples/florence2-webgpu/postcss.config.js deleted file mode 100644 index 2e7af2b7f..000000000 --- a/examples/florence2-webgpu/postcss.config.js +++ /dev/null @@ -1,6 +0,0 @@ -export default { - plugins: { - tailwindcss: {}, - autoprefixer: {}, - }, -} diff --git a/examples/florence2-webgpu/src/App.jsx b/examples/florence2-webgpu/src/App.jsx deleted file mode 100644 index 36ac67e0f..000000000 --- a/examples/florence2-webgpu/src/App.jsx +++ /dev/null @@ -1,218 +0,0 @@ -import { useEffect, useState, useRef, useCallback } from 'react'; - -import Progress from './components/Progress'; -import ImageInput from './components/ImageInput'; - -const IS_WEBGPU_AVAILABLE = !!navigator.gpu; - -function App() { - - // Create a reference to the worker object. - const worker = useRef(null); - - // Model loading and progress - const [status, setStatus] = useState(null); - const [loadingMessage, setLoadingMessage] = useState(''); - const [progressItems, setProgressItems] = useState([]); - - const [task, setTask] = useState(''); - const [text, setText] = useState(''); - const [image, setImage] = useState(null); - const [result, setResult] = useState(null); - const [time, setTime] = useState(null); - - // We use the `useEffect` hook to setup the worker as soon as the `App` component is mounted. - useEffect(() => { - if (!worker.current) { - // Create the worker if it does not yet exist. - worker.current = new Worker(new URL('./worker.js', import.meta.url), { - type: 'module' - }); - } - - // Create a callback function for messages from the worker thread. - const onMessageReceived = (e) => { - switch (e.data.status) { - case 'loading': - // Model file start load: add a new progress item to the list. - setStatus('loading'); - setLoadingMessage(e.data.data); - break; - - case 'initiate': - setProgressItems(prev => [...prev, e.data]); - break; - - case 'progress': - // Model file progress: update one of the progress items. - setProgressItems( - prev => prev.map(item => { - if (item.file === e.data.file) { - return { ...item, ...e.data } - } - return item; - }) - ); - break; - - case 'done': - // Model file loaded: remove the progress item from the list. - setProgressItems( - prev => prev.filter(item => item.file !== e.data.file) - ); - break; - - case 'ready': - // Pipeline ready: the worker is ready to accept messages. - setStatus('ready'); - break; - - case 'complete': - setResult(e.data.result); - setTime(e.data.time); - setStatus('ready'); - break; - } - }; - - // Attach the callback function as an event listener. - worker.current.addEventListener('message', onMessageReceived); - - // Define a cleanup function for when the component is unmounted. - return () => { - worker.current.removeEventListener('message', onMessageReceived); - }; - }, []); - - const handleClick = useCallback(() => { - if (status === null) { - setStatus('loading'); - worker.current.postMessage({ type: 'load' }); - } else { - setStatus('running'); - worker.current.postMessage({ - type: 'run', data: { text, url: image, task } - }); - } - }, [status, task, image, text]); - - return ( - IS_WEBGPU_AVAILABLE - ? (
- - {status === 'loading' && ( -
-
-

{loadingMessage}

- {progressItems.map(({ file, progress, total }, i) => ( - - ))} -
-
- )} -
-
-

Florence2 WebGPU

-

Powerful vision foundation model running locally in your browser.

-
- -
- -

- You are about to download Florence-2-base-ft, - a 230 million parameter vision foundation model that uses a prompt-based approach to handle a wide range of vision and vision-language tasks like captioning, object detection, and segmentation. - Once loaded, the model (340 MB) will be cached and reused when you revisit the page.
-
- Everything runs locally in your browser using 🤗 Transformers.js and ONNX Runtime Web, - meaning no API calls are made to a server for inference. You can even disconnect from the internet after the model has loaded! -

- -
-
-
- Task - -
-
- Input Image - { - worker.current.postMessage({ type: 'reset' }); // Reset image cache - setResult(null); - setImage(result); - }} /> -
-
-
- { - task === '' - && (
- Text input - setText(e.target.value)} - /> -
) - } - -
- Output -
- {result?.[task] && (<> - { - typeof result[task] === 'string' - ?

{result[task]}

- :
-                            {JSON.stringify(result[task], null, 2)}
-                          
- } - { - time &&

Execution time: {time.toFixed(2)} ms

- } - ) - } -
- -
-
-
- - -
-
- -
) - : (
WebGPU is not supported
by this browser :(
) - ) -} - -export default App diff --git a/examples/florence2-webgpu/src/components/ImageInput.jsx b/examples/florence2-webgpu/src/components/ImageInput.jsx deleted file mode 100644 index 9f24d9d5b..000000000 --- a/examples/florence2-webgpu/src/components/ImageInput.jsx +++ /dev/null @@ -1,68 +0,0 @@ -import { useState, useRef } from 'react'; - -const EXAMPLE_URL = 'https://huggingface.co/datasets/Xenova/transformers.js-docs/resolve/main/beetle.png'; - -const ImageInput = ({ onImageChange, ...props }) => { - const [imagePreview, setImagePreview] = useState(null); - const fileInputRef = useRef(null); - - const readFile = (file) => { - if (!file) return; - const reader = new FileReader(); - reader.onloadend = () => { - setImagePreview(reader.result); - if (onImageChange) { - onImageChange(file, reader.result); - } - }; - reader.readAsDataURL(file); - } - - const handleImageChange = (event) => { - readFile(event.target.files[0]); - }; - - const handleDragOver = (event) => { - event.preventDefault(); - }; - - const handleDrop = (event) => { - event.preventDefault(); - readFile(event.dataTransfer.files[0]); - }; - - const handleClick = () => { - fileInputRef.current.click(); - }; - - return ( -
- - {imagePreview ? ( - Selected - ) : ( -
- Drag & drop or click
to select an image
- { - e.stopPropagation(); - setImagePreview(EXAMPLE_URL); - onImageChange(null, EXAMPLE_URL); - }}>(or try an example) -
- )} -
- ); -}; - -export default ImageInput; diff --git a/examples/florence2-webgpu/src/components/Progress.jsx b/examples/florence2-webgpu/src/components/Progress.jsx deleted file mode 100644 index 9ce024cc8..000000000 --- a/examples/florence2-webgpu/src/components/Progress.jsx +++ /dev/null @@ -1,15 +0,0 @@ -function formatBytes(size) { - const i = size == 0 ? 0 : Math.floor(Math.log(size) / Math.log(1024)); - return +((size / Math.pow(1024, i)).toFixed(2)) * 1 + ['B', 'kB', 'MB', 'GB', 'TB'][i]; -} - -export default function Progress({ text, percentage, total }) { - percentage ??= 0; - return ( -
-
- {text} ({percentage.toFixed(2)}%{isNaN(total) ? '' : ` of ${formatBytes(total)}`}) -
-
- ); -} diff --git a/examples/florence2-webgpu/src/index.css b/examples/florence2-webgpu/src/index.css deleted file mode 100644 index c4a1285e0..000000000 --- a/examples/florence2-webgpu/src/index.css +++ /dev/null @@ -1,21 +0,0 @@ -@tailwind base; -@tailwind components; -@tailwind utilities; - -@layer utilities { - .scrollbar-thin::-webkit-scrollbar { - @apply w-2; - } - - .scrollbar-thin::-webkit-scrollbar-track { - @apply rounded-full bg-gray-100 dark:bg-gray-700; - } - - .scrollbar-thin::-webkit-scrollbar-thumb { - @apply rounded-full bg-gray-300 dark:bg-gray-600; - } - - .scrollbar-thin::-webkit-scrollbar-thumb:hover { - @apply bg-gray-500; - } -} diff --git a/examples/florence2-webgpu/src/main.jsx b/examples/florence2-webgpu/src/main.jsx deleted file mode 100644 index 54b39dd1d..000000000 --- a/examples/florence2-webgpu/src/main.jsx +++ /dev/null @@ -1,10 +0,0 @@ -import React from 'react' -import ReactDOM from 'react-dom/client' -import App from './App.jsx' -import './index.css' - -ReactDOM.createRoot(document.getElementById('root')).render( - - - , -) diff --git a/examples/florence2-webgpu/src/worker.js b/examples/florence2-webgpu/src/worker.js deleted file mode 100644 index 92c1732f4..000000000 --- a/examples/florence2-webgpu/src/worker.js +++ /dev/null @@ -1,140 +0,0 @@ - -import { - Florence2ForConditionalGeneration, - AutoProcessor, - AutoTokenizer, - RawImage, - full, -} from '@xenova/transformers'; - -async function hasFp16() { - try { - const adapter = await navigator.gpu.requestAdapter(); - return adapter.features.has('shader-f16'); - } catch (e) { - return false; - } -} - -/** - * This class uses the Singleton pattern to ensure that only one instance of the model is loaded. - */ -class Florence2Singleton { - static model_id = 'onnx-community/Florence-2-base-ft'; - - static async getInstance(progress_callback = null) { - this.processor ??= AutoProcessor.from_pretrained(this.model_id); - this.tokenizer ??= AutoTokenizer.from_pretrained(this.model_id); - - this.supports_fp16 ??= await hasFp16(); - this.model ??= Florence2ForConditionalGeneration.from_pretrained(this.model_id, { - dtype: { - embed_tokens: this.supports_fp16 ? 'fp16' : 'fp32', - vision_encoder: this.supports_fp16 ? 'fp16' : 'fp32', - encoder_model: 'q4', // or 'fp16' or 'fp32' - decoder_model_merged: 'q4', // or 'fp16' or 'fp32' - }, - device: 'webgpu', - progress_callback, - }); - - return Promise.all([this.model, this.tokenizer, this.processor]); - } -} - - -async function load() { - self.postMessage({ - status: 'loading', - data: 'Loading model...' - }); - - // Load the pipeline and save it for future use. - const [model, tokenizer, processor] = await Florence2Singleton.getInstance(x => { - // We also add a progress callback to the pipeline so that we can - // track model loading. - self.postMessage(x); - }); - - self.postMessage({ - status: 'loading', - data: 'Compiling shaders and warming up model...' - }); - - // Dummy text and vision inputs - const text_inputs = tokenizer('a'); - const pixel_values = full([1, 3, 768, 768], 0.0); - - // Run model with dummy input to compile shaders - await model.generate({ - ...text_inputs, - pixel_values, - max_new_tokens: 1, - }); - - self.postMessage({ status: 'ready' }); -} - -const TASKS_WITH_INPUTS = [ - '', -] - -let vision_inputs; -let image_size; -async function run({ text, url, task }) { - const [model, tokenizer, processor] = await Florence2Singleton.getInstance(); - - // Read and preprocess image - const start = performance.now(); - if (!vision_inputs) { - // Cache vision inputs when possible - const image = await RawImage.fromURL(url); - image_size = image.size; - vision_inputs = await processor(image); - } - - let user_input = task; - if (TASKS_WITH_INPUTS.includes(task) && text) { - user_input += text; - } - const prompts = processor.construct_prompts(user_input); - const text_inputs = tokenizer(prompts); - - // Generate text - const generated_ids = await model.generate({ - ...text_inputs, - ...vision_inputs, - max_new_tokens: 128, - num_beams: 1, - do_sample: false, - }); - - // Decode generated text - const generated_text = tokenizer.batch_decode(generated_ids, { skip_special_tokens: false })[0]; - - // Post-process the generated text - const result = processor.post_process_generation(generated_text, task, image_size); - - const end = performance.now(); - - self.postMessage({ status: 'complete', result, time: end - start }); -} - -// Listen for messages from the main thread -self.addEventListener('message', async (e) => { - const { type, data } = e.data; - - switch (type) { - case 'load': - load(); - break; - - case 'run': - run(data); - break; - - case 'reset': - vision_inputs = image_size = null; - break; - } -}); diff --git a/examples/florence2-webgpu/tailwind.config.js b/examples/florence2-webgpu/tailwind.config.js deleted file mode 100644 index d37737fc0..000000000 --- a/examples/florence2-webgpu/tailwind.config.js +++ /dev/null @@ -1,12 +0,0 @@ -/** @type {import('tailwindcss').Config} */ -export default { - content: [ - "./index.html", - "./src/**/*.{js,ts,jsx,tsx}", - ], - theme: { - extend: {}, - }, - plugins: [], -} - diff --git a/examples/florence2-webgpu/vite.config.js b/examples/florence2-webgpu/vite.config.js deleted file mode 100644 index 5a33944a9..000000000 --- a/examples/florence2-webgpu/vite.config.js +++ /dev/null @@ -1,7 +0,0 @@ -import { defineConfig } from 'vite' -import react from '@vitejs/plugin-react' - -// https://vitejs.dev/config/ -export default defineConfig({ - plugins: [react()], -}) From c4b3a7676a602f4a0f59a956127f3a50eb32b354 Mon Sep 17 00:00:00 2001 From: Joshua Lochner Date: Mon, 23 Dec 2024 14:13:23 +0000 Subject: [PATCH 04/23] Move depth anything demo --- examples/depth-anything-client/.gitignore | 24 - examples/depth-anything-client/index.html | 29 - examples/depth-anything-client/main.js | 150 -- .../depth-anything-client/package-lock.json | 1472 ----------------- examples/depth-anything-client/package.json | 18 - examples/depth-anything-client/style.css | 92 -- examples/depth-anything-client/vite.config.js | 6 - 7 files changed, 1791 deletions(-) delete mode 100644 examples/depth-anything-client/.gitignore delete mode 100644 examples/depth-anything-client/index.html delete mode 100644 examples/depth-anything-client/main.js delete mode 100644 examples/depth-anything-client/package-lock.json delete mode 100644 examples/depth-anything-client/package.json delete mode 100644 examples/depth-anything-client/style.css delete mode 100644 examples/depth-anything-client/vite.config.js diff --git a/examples/depth-anything-client/.gitignore b/examples/depth-anything-client/.gitignore deleted file mode 100644 index a547bf36d..000000000 --- a/examples/depth-anything-client/.gitignore +++ /dev/null @@ -1,24 +0,0 @@ -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -pnpm-debug.log* -lerna-debug.log* - -node_modules -dist -dist-ssr -*.local - -# Editor directories and files -.vscode/* -!.vscode/extensions.json -.idea -.DS_Store -*.suo -*.ntvs* -*.njsproj -*.sln -*.sw? diff --git a/examples/depth-anything-client/index.html b/examples/depth-anything-client/index.html deleted file mode 100644 index 92c3fe079..000000000 --- a/examples/depth-anything-client/index.html +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - Transformers.js - Depth Anything - - - -

Depth Anything w/ 🤗 Transformers.js

-
- -
- - - - - - - \ No newline at end of file diff --git a/examples/depth-anything-client/main.js b/examples/depth-anything-client/main.js deleted file mode 100644 index 253468aca..000000000 --- a/examples/depth-anything-client/main.js +++ /dev/null @@ -1,150 +0,0 @@ -import './style.css'; - -import * as THREE from 'three'; -import { OrbitControls } from 'three/addons/controls/OrbitControls.js'; - -import { pipeline, env, RawImage } from '@xenova/transformers'; - -// Since we will download the model from the Hugging Face Hub, we can skip the local model check -env.allowLocalModels = false; - -// Proxy the WASM backend to prevent the UI from freezing -env.backends.onnx.wasm.proxy = true; - -// Constants -const EXAMPLE_URL = 'https://huggingface.co/datasets/Xenova/transformers.js-docs/resolve/main/bread_small.png'; -const DEFAULT_SCALE = 0.75; - -// Reference the elements that we will need -const status = document.getElementById('status'); -const fileUpload = document.getElementById('upload'); -const imageContainer = document.getElementById('container'); -const example = document.getElementById('example'); - -// Create a new depth-estimation pipeline -status.textContent = 'Loading model...'; -const depth_estimator = await pipeline('depth-estimation', 'Xenova/depth-anything-small-hf'); -status.textContent = 'Ready'; - -example.addEventListener('click', (e) => { - e.preventDefault(); - predict(EXAMPLE_URL); -}); - -fileUpload.addEventListener('change', function (e) { - const file = e.target.files[0]; - if (!file) { - return; - } - - const reader = new FileReader(); - - // Set up a callback when the file is loaded - reader.onload = e2 => predict(e2.target.result); - - reader.readAsDataURL(file); -}); - -let onSliderChange; - -// Predict depth map for the given image -async function predict(url) { - imageContainer.innerHTML = ''; - const image = await RawImage.fromURL(url); - - // Set up scene and slider controls - const { canvas, setDisplacementMap } = setupScene(url, image.width, image.height); - - imageContainer.append(canvas); - - status.textContent = 'Analysing...'; - const { depth } = await depth_estimator(image); - - setDisplacementMap(depth.toCanvas()); - status.textContent = ''; - - // Add slider control - const slider = document.createElement('input'); - slider.type = 'range'; - slider.min = 0; - slider.max = 1; - slider.step = 0.01; - slider.addEventListener('input', (e) => { - onSliderChange(parseFloat(e.target.value)); - }); - slider.defaultValue = DEFAULT_SCALE; - imageContainer.append(slider); -} - -function setupScene(url, w, h) { - - // Create new scene - const canvas = document.createElement('canvas'); - const width = canvas.width = imageContainer.offsetWidth; - const height = canvas.height = imageContainer.offsetHeight; - - const scene = new THREE.Scene(); - - // Create camera and add it to the scene - const camera = new THREE.PerspectiveCamera(30, width / height, 0.01, 10); - camera.position.z = 2; - scene.add(camera); - - const renderer = new THREE.WebGLRenderer({ canvas, antialias: true }); - renderer.setSize(width, height); - renderer.setPixelRatio(window.devicePixelRatio); - - // Add ambient light - const light = new THREE.AmbientLight(0xffffff, 2); - scene.add(light); - - // Load depth texture - const image = new THREE.TextureLoader().load(url); - image.colorSpace = THREE.SRGBColorSpace; - const material = new THREE.MeshStandardMaterial({ - map: image, - side: THREE.DoubleSide, - }); - material.displacementScale = DEFAULT_SCALE; - - const setDisplacementMap = (canvas) => { - material.displacementMap = new THREE.CanvasTexture(canvas); - material.needsUpdate = true; - } - - const setDisplacementScale = (scale) => { - material.displacementScale = scale; - material.needsUpdate = true; - } - onSliderChange = setDisplacementScale; - - // Create plane and rescale it so that max(w, h) = 1 - const [pw, ph] = w > h ? [1, h / w] : [w / h, 1]; - const geometry = new THREE.PlaneGeometry(pw, ph, w, h); - const plane = new THREE.Mesh(geometry, material); - scene.add(plane); - - // Add orbit controls - const controls = new OrbitControls(camera, renderer.domElement); - controls.enableDamping = true; - - renderer.setAnimationLoop(() => { - renderer.render(scene, camera); - controls.update(); - }); - - window.addEventListener('resize', () => { - const width = imageContainer.offsetWidth; - const height = imageContainer.offsetHeight; - - camera.aspect = width / height; - camera.updateProjectionMatrix(); - - renderer.setSize(width, height); - }, false); - - return { - canvas: renderer.domElement, - setDisplacementMap, - }; -} diff --git a/examples/depth-anything-client/package-lock.json b/examples/depth-anything-client/package-lock.json deleted file mode 100644 index c24c4db67..000000000 --- a/examples/depth-anything-client/package-lock.json +++ /dev/null @@ -1,1472 +0,0 @@ -{ - "name": "depth-anything-client", - "version": "0.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "depth-anything-client", - "version": "0.0.0", - "dependencies": { - "@xenova/transformers": "^2.14.1", - "three": "^0.160.1" - }, - "devDependencies": { - "vite": "^5.0.13" - } - }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.11.tgz", - "integrity": "sha512-FnzU0LyE3ySQk7UntJO4+qIiQgI7KoODnZg5xzXIrFJlKd2P2gwHsHY4927xj9y5PJmJSzULiUCWmv7iWnNa7g==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.11.tgz", - "integrity": "sha512-5OVapq0ClabvKvQ58Bws8+wkLCV+Rxg7tUVbo9xu034Nm536QTII4YzhaFriQ7rMrorfnFKUsArD2lqKbFY4vw==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.11.tgz", - "integrity": "sha512-aiu7K/5JnLj//KOnOfEZ0D90obUkRzDMyqd/wNAUQ34m4YUPVhRZpnqKV9uqDGxT7cToSDnIHsGooyIczu9T+Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.11.tgz", - "integrity": "sha512-eccxjlfGw43WYoY9QgB82SgGgDbibcqyDTlk3l3C0jOVHKxrjdc9CTwDUQd0vkvYg5um0OH+GpxYvp39r+IPOg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.11.tgz", - "integrity": "sha512-ETp87DRWuSt9KdDVkqSoKoLFHYTrkyz2+65fj9nfXsaV3bMhTCjtQfw3y+um88vGRKRiF7erPrh/ZuIdLUIVxQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.11.tgz", - "integrity": "sha512-fkFUiS6IUK9WYUO/+22omwetaSNl5/A8giXvQlcinLIjVkxwTLSktbF5f/kJMftM2MJp9+fXqZ5ezS7+SALp4g==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.11.tgz", - "integrity": "sha512-lhoSp5K6bxKRNdXUtHoNc5HhbXVCS8V0iZmDvyWvYq9S5WSfTIHU2UGjcGt7UeS6iEYp9eeymIl5mJBn0yiuxA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.11.tgz", - "integrity": "sha512-JkUqn44AffGXitVI6/AbQdoYAq0TEullFdqcMY/PCUZ36xJ9ZJRtQabzMA+Vi7r78+25ZIBosLTOKnUXBSi1Kw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.11.tgz", - "integrity": "sha512-3CRkr9+vCV2XJbjwgzjPtO8T0SZUmRZla+UL1jw+XqHZPkPgZiyWvbDvl9rqAN8Zl7qJF0O/9ycMtjU67HN9/Q==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.11.tgz", - "integrity": "sha512-LneLg3ypEeveBSMuoa0kwMpCGmpu8XQUh+mL8XXwoYZ6Be2qBnVtcDI5azSvh7vioMDhoJFZzp9GWp9IWpYoUg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.11.tgz", - "integrity": "sha512-caHy++CsD8Bgq2V5CodbJjFPEiDPq8JJmBdeyZ8GWVQMjRD0sU548nNdwPNvKjVpamYYVL40AORekgfIubwHoA==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.11.tgz", - "integrity": "sha512-ppZSSLVpPrwHccvC6nQVZaSHlFsvCQyjnvirnVjbKSHuE5N24Yl8F3UwYUUR1UEPaFObGD2tSvVKbvR+uT1Nrg==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.11.tgz", - "integrity": "sha512-B5x9j0OgjG+v1dF2DkH34lr+7Gmv0kzX6/V0afF41FkPMMqaQ77pH7CrhWeR22aEeHKaeZVtZ6yFwlxOKPVFyg==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.11.tgz", - "integrity": "sha512-MHrZYLeCG8vXblMetWyttkdVRjQlQUb/oMgBNurVEnhj4YWOr4G5lmBfZjHYQHHN0g6yDmCAQRR8MUHldvvRDA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.11.tgz", - "integrity": "sha512-f3DY++t94uVg141dozDu4CCUkYW+09rWtaWfnb3bqe4w5NqmZd6nPVBm+qbz7WaHZCoqXqHz5p6CM6qv3qnSSQ==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.11.tgz", - "integrity": "sha512-A5xdUoyWJHMMlcSMcPGVLzYzpcY8QP1RtYzX5/bS4dvjBGVxdhuiYyFwp7z74ocV7WDc0n1harxmpq2ePOjI0Q==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.11.tgz", - "integrity": "sha512-grbyMlVCvJSfxFQUndw5mCtWs5LO1gUlwP4CDi4iJBbVpZcqLVT29FxgGuBJGSzyOxotFG4LoO5X+M1350zmPA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.11.tgz", - "integrity": "sha512-13jvrQZJc3P230OhU8xgwUnDeuC/9egsjTkXN49b3GcS5BKvJqZn86aGM8W9pd14Kd+u7HuFBMVtrNGhh6fHEQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.11.tgz", - "integrity": "sha512-ysyOGZuTp6SNKPE11INDUeFVVQFrhcNDVUgSQVDzqsqX38DjhPEPATpid04LCoUr2WXhQTEZ8ct/EgJCUDpyNw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.11.tgz", - "integrity": "sha512-Hf+Sad9nVwvtxy4DXCZQqLpgmRTQqyFyhT3bZ4F2XlJCjxGmRFF0Shwn9rzhOYRB61w9VMXUkxlBy56dk9JJiQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.11.tgz", - "integrity": "sha512-0P58Sbi0LctOMOQbpEOvOL44Ne0sqbS0XWHMvvrg6NE5jQ1xguCSSw9jQeUk2lfrXYsKDdOe6K+oZiwKPilYPQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.11.tgz", - "integrity": "sha512-6YOrWS+sDJDmshdBIQU+Uoyh7pQKrdykdefC1avn76ss5c+RN6gut3LZA4E2cH5xUEp5/cA0+YxRaVtRAb0xBg==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.11.tgz", - "integrity": "sha512-vfkhltrjCAb603XaFhqhAF4LGDi2M4OrCRrFusyQ+iTLQ/o60QQXxc9cZC/FFpihBI9N1Grn6SMKVJ4KP7Fuiw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@huggingface/jinja": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@huggingface/jinja/-/jinja-0.1.2.tgz", - "integrity": "sha512-x5mpbfJt1nKmVep5WNP5VjNsjWApWNj8pPYI+uYMkBWH9bWUJmQmHt2lbf0VCoQd54Oq3XuFEh/UyoVh7rPxmg==", - "engines": { - "node": ">=18" - } - }, - "node_modules/@protobufjs/aspromise": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", - "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" - }, - "node_modules/@protobufjs/base64": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", - "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" - }, - "node_modules/@protobufjs/codegen": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", - "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" - }, - "node_modules/@protobufjs/eventemitter": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", - "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" - }, - "node_modules/@protobufjs/fetch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", - "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", - "dependencies": { - "@protobufjs/aspromise": "^1.1.1", - "@protobufjs/inquire": "^1.1.0" - } - }, - "node_modules/@protobufjs/float": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", - "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" - }, - "node_modules/@protobufjs/inquire": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", - "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" - }, - "node_modules/@protobufjs/path": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", - "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" - }, - "node_modules/@protobufjs/pool": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", - "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" - }, - "node_modules/@protobufjs/utf8": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", - "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" - }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.6.tgz", - "integrity": "sha512-MVNXSSYN6QXOulbHpLMKYi60ppyO13W9my1qogeiAqtjb2yR4LSmfU2+POvDkLzhjYLXz9Rf9+9a3zFHW1Lecg==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.9.6.tgz", - "integrity": "sha512-T14aNLpqJ5wzKNf5jEDpv5zgyIqcpn1MlwCrUXLrwoADr2RkWA0vOWP4XxbO9aiO3dvMCQICZdKeDrFl7UMClw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.9.6.tgz", - "integrity": "sha512-CqNNAyhRkTbo8VVZ5R85X73H3R5NX9ONnKbXuHisGWC0qRbTTxnF1U4V9NafzJbgGM0sHZpdO83pLPzq8uOZFw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.9.6.tgz", - "integrity": "sha512-zRDtdJuRvA1dc9Mp6BWYqAsU5oeLixdfUvkTHuiYOHwqYuQ4YgSmi6+/lPvSsqc/I0Omw3DdICx4Tfacdzmhog==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.9.6.tgz", - "integrity": "sha512-oNk8YXDDnNyG4qlNb6is1ojTOGL/tRhbbKeE/YuccItzerEZT68Z9gHrY3ROh7axDc974+zYAPxK5SH0j/G+QQ==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.9.6.tgz", - "integrity": "sha512-Z3O60yxPtuCYobrtzjo0wlmvDdx2qZfeAWTyfOjEDqd08kthDKexLpV97KfAeUXPosENKd8uyJMRDfFMxcYkDQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.9.6.tgz", - "integrity": "sha512-gpiG0qQJNdYEVad+1iAsGAbgAnZ8j07FapmnIAQgODKcOTjLEWM9sRb+MbQyVsYCnA0Im6M6QIq6ax7liws6eQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.9.6.tgz", - "integrity": "sha512-+uCOcvVmFUYvVDr27aiyun9WgZk0tXe7ThuzoUTAukZJOwS5MrGbmSlNOhx1j80GdpqbOty05XqSl5w4dQvcOA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.9.6.tgz", - "integrity": "sha512-HUNqM32dGzfBKuaDUBqFB7tP6VMN74eLZ33Q9Y1TBqRDn+qDonkAUyKWwF9BR9unV7QUzffLnz9GrnKvMqC/fw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.9.6.tgz", - "integrity": "sha512-ch7M+9Tr5R4FK40FHQk8VnML0Szi2KRujUgHXd/HjuH9ifH72GUmw6lStZBo3c3GB82vHa0ZoUfjfcM7JiiMrQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.9.6.tgz", - "integrity": "sha512-VD6qnR99dhmTQ1mJhIzXsRcTBvTjbfbGGwKAHcu+52cVl15AC/kplkhxzW/uT0Xl62Y/meBKDZvoJSJN+vTeGA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.9.6.tgz", - "integrity": "sha512-J9AFDq/xiRI58eR2NIDfyVmTYGyIZmRcvcAoJ48oDld/NTR8wyiPUu2X/v1navJ+N/FGg68LEbX3Ejd6l8B7MQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.9.6.tgz", - "integrity": "sha512-jqzNLhNDvIZOrt69Ce4UjGRpXJBzhUBzawMwnaDAwyHriki3XollsewxWzOzz+4yOFDkuJHtTsZFwMxhYJWmLQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@types/estree": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", - "dev": true - }, - "node_modules/@types/long": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", - "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==" - }, - "node_modules/@types/node": { - "version": "20.11.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.5.tgz", - "integrity": "sha512-g557vgQjUUfN76MZAN/dt1z3dzcUsimuysco0KeluHgrPdJXkP/XdAURgyO2W9fZWHRtRBiVKzKn8vyOAwlG+w==", - "dependencies": { - "undici-types": "~5.26.4" - } - }, - "node_modules/@xenova/transformers": { - "version": "2.14.1", - "resolved": "https://registry.npmjs.org/@xenova/transformers/-/transformers-2.14.1.tgz", - "integrity": "sha512-aj4aXxci3pTf6BEavm8ASu4doGPQP3l5KPXTnem4jMTWuXV2ZFhea0L5MWrYWgSWqtptwN6UqHzW6npKExsaQQ==", - "dependencies": { - "@huggingface/jinja": "^0.1.0", - "onnxruntime-web": "1.14.0", - "sharp": "^0.32.0" - }, - "optionalDependencies": { - "onnxruntime-node": "1.14.0" - } - }, - "node_modules/b4a": { - "version": "1.6.4", - "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.4.tgz", - "integrity": "sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==" - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" - }, - "node_modules/color": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", - "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", - "dependencies": { - "color-convert": "^2.0.1", - "color-string": "^1.9.0" - }, - "engines": { - "node": ">=12.5.0" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/color-string": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", - "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", - "dependencies": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "node_modules/decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "dependencies": { - "mimic-response": "^3.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/detect-libc": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", - "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/esbuild": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.11.tgz", - "integrity": "sha512-HJ96Hev2hX/6i5cDVwcqiJBBtuo9+FeIJOtZ9W1kA5M6AMJRHUZlpYZ1/SbEwtO0ioNAW8rUooVpC/WehY2SfA==", - "dev": true, - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.19.11", - "@esbuild/android-arm": "0.19.11", - "@esbuild/android-arm64": "0.19.11", - "@esbuild/android-x64": "0.19.11", - "@esbuild/darwin-arm64": "0.19.11", - "@esbuild/darwin-x64": "0.19.11", - "@esbuild/freebsd-arm64": "0.19.11", - "@esbuild/freebsd-x64": "0.19.11", - "@esbuild/linux-arm": "0.19.11", - "@esbuild/linux-arm64": "0.19.11", - "@esbuild/linux-ia32": "0.19.11", - "@esbuild/linux-loong64": "0.19.11", - "@esbuild/linux-mips64el": "0.19.11", - "@esbuild/linux-ppc64": "0.19.11", - "@esbuild/linux-riscv64": "0.19.11", - "@esbuild/linux-s390x": "0.19.11", - "@esbuild/linux-x64": "0.19.11", - "@esbuild/netbsd-x64": "0.19.11", - "@esbuild/openbsd-x64": "0.19.11", - "@esbuild/sunos-x64": "0.19.11", - "@esbuild/win32-arm64": "0.19.11", - "@esbuild/win32-ia32": "0.19.11", - "@esbuild/win32-x64": "0.19.11" - } - }, - "node_modules/expand-template": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", - "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/fast-fifo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", - "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==" - }, - "node_modules/flatbuffers": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/flatbuffers/-/flatbuffers-1.12.0.tgz", - "integrity": "sha512-c7CZADjRcl6j0PlvFy0ZqXQ67qSEZfrVPynmnL+2zPc+NtMvrF8Y0QceMo7QqnSPc7+uWjUIAbvCQ5WIKlMVdQ==" - }, - "node_modules/fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/github-from-package": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", - "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==" - }, - "node_modules/guid-typescript": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/guid-typescript/-/guid-typescript-1.0.9.tgz", - "integrity": "sha512-Y8T4vYhEfwJOTbouREvG+3XDsjr8E3kIr7uf+JZ0BYloFsttiHU0WfvANVsR7TxNUJa/WpCnw/Ino/p+DeBhBQ==" - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" - }, - "node_modules/is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" - }, - "node_modules/long": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", - "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" - }, - "node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/napi-build-utils": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", - "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==" - }, - "node_modules/node-abi": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.54.0.tgz", - "integrity": "sha512-p7eGEiQil0YUV3ItH4/tBb781L5impVmmx2E9FRKF7d18XXzp4PGT2tdYMFY6wQqgxD0IwNZOiSJ0/K0fSi/OA==", - "dependencies": { - "semver": "^7.3.5" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/node-addon-api": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz", - "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==" - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onnx-proto": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/onnx-proto/-/onnx-proto-4.0.4.tgz", - "integrity": "sha512-aldMOB3HRoo6q/phyB6QRQxSt895HNNw82BNyZ2CMh4bjeKv7g/c+VpAFtJuEMVfYLMbRx61hbuqnKceLeDcDA==", - "dependencies": { - "protobufjs": "^6.8.8" - } - }, - "node_modules/onnxruntime-common": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/onnxruntime-common/-/onnxruntime-common-1.14.0.tgz", - "integrity": "sha512-3LJpegM2iMNRX2wUmtYfeX/ytfOzNwAWKSq1HbRrKc9+uqG/FsEA0bbKZl1btQeZaXhC26l44NWpNUeXPII7Ew==" - }, - "node_modules/onnxruntime-node": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/onnxruntime-node/-/onnxruntime-node-1.14.0.tgz", - "integrity": "sha512-5ba7TWomIV/9b6NH/1x/8QEeowsb+jBEvFzU6z0T4mNsFwdPqXeFUM7uxC6QeSRkEbWu3qEB0VMjrvzN/0S9+w==", - "optional": true, - "os": [ - "win32", - "darwin", - "linux" - ], - "dependencies": { - "onnxruntime-common": "~1.14.0" - } - }, - "node_modules/onnxruntime-web": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/onnxruntime-web/-/onnxruntime-web-1.14.0.tgz", - "integrity": "sha512-Kcqf43UMfW8mCydVGcX9OMXI2VN17c0p6XvR7IPSZzBf/6lteBzXHvcEVWDPmCKuGombl997HgLqj91F11DzXw==", - "dependencies": { - "flatbuffers": "^1.12.0", - "guid-typescript": "^1.0.9", - "long": "^4.0.0", - "onnx-proto": "^4.0.4", - "onnxruntime-common": "~1.14.0", - "platform": "^1.3.6" - } - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "node_modules/platform": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.6.tgz", - "integrity": "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==" - }, - "node_modules/postcss": { - "version": "8.4.33", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.33.tgz", - "integrity": "sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "nanoid": "^3.3.7", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/prebuild-install": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz", - "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==", - "dependencies": { - "detect-libc": "^2.0.0", - "expand-template": "^2.0.3", - "github-from-package": "0.0.0", - "minimist": "^1.2.3", - "mkdirp-classic": "^0.5.3", - "napi-build-utils": "^1.0.1", - "node-abi": "^3.3.0", - "pump": "^3.0.0", - "rc": "^1.2.7", - "simple-get": "^4.0.0", - "tar-fs": "^2.0.0", - "tunnel-agent": "^0.6.0" - }, - "bin": { - "prebuild-install": "bin.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/prebuild-install/node_modules/tar-fs": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", - "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", - "dependencies": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^2.1.4" - } - }, - "node_modules/prebuild-install/node_modules/tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/protobufjs": { - "version": "6.11.4", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.4.tgz", - "integrity": "sha512-5kQWPaJHi1WoCpjTGszzQ32PG2F4+wRY6BmAT4Vfw56Q2FZ4YZzK20xUYQH4YkfehY1e6QSICrJquM6xXZNcrw==", - "hasInstallScript": true, - "dependencies": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", - "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", - "@types/long": "^4.0.1", - "@types/node": ">=13.7.0", - "long": "^4.0.0" - }, - "bin": { - "pbjs": "bin/pbjs", - "pbts": "bin/pbts" - } - }, - "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/queue-tick": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", - "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==" - }, - "node_modules/rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "bin": { - "rc": "cli.js" - } - }, - "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/rollup": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.9.6.tgz", - "integrity": "sha512-05lzkCS2uASX0CiLFybYfVkwNbKZG5NFQ6Go0VWyogFTXXbR039UVsegViTntkk4OglHBdF54ccApXRRuXRbsg==", - "dev": true, - "dependencies": { - "@types/estree": "1.0.5" - }, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.9.6", - "@rollup/rollup-android-arm64": "4.9.6", - "@rollup/rollup-darwin-arm64": "4.9.6", - "@rollup/rollup-darwin-x64": "4.9.6", - "@rollup/rollup-linux-arm-gnueabihf": "4.9.6", - "@rollup/rollup-linux-arm64-gnu": "4.9.6", - "@rollup/rollup-linux-arm64-musl": "4.9.6", - "@rollup/rollup-linux-riscv64-gnu": "4.9.6", - "@rollup/rollup-linux-x64-gnu": "4.9.6", - "@rollup/rollup-linux-x64-musl": "4.9.6", - "@rollup/rollup-win32-arm64-msvc": "4.9.6", - "@rollup/rollup-win32-ia32-msvc": "4.9.6", - "@rollup/rollup-win32-x64-msvc": "4.9.6", - "fsevents": "~2.3.2" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/sharp": { - "version": "0.32.6", - "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.32.6.tgz", - "integrity": "sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==", - "hasInstallScript": true, - "dependencies": { - "color": "^4.2.3", - "detect-libc": "^2.0.2", - "node-addon-api": "^6.1.0", - "prebuild-install": "^7.1.1", - "semver": "^7.5.4", - "simple-get": "^4.0.1", - "tar-fs": "^3.0.4", - "tunnel-agent": "^0.6.0" - }, - "engines": { - "node": ">=14.15.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/simple-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/simple-get": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", - "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "decompress-response": "^6.0.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } - }, - "node_modules/simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", - "dependencies": { - "is-arrayish": "^0.3.1" - } - }, - "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/streamx": { - "version": "2.15.6", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.15.6.tgz", - "integrity": "sha512-q+vQL4AAz+FdfT137VF69Cc/APqUbxy+MDOImRrMvchJpigHj9GksgDU2LYbO9rx7RX6osWgxJB2WxhYv4SZAw==", - "dependencies": { - "fast-fifo": "^1.1.0", - "queue-tick": "^1.0.1" - } - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/tar-fs": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.4.tgz", - "integrity": "sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==", - "dependencies": { - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^3.1.5" - } - }, - "node_modules/tar-stream": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", - "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", - "dependencies": { - "b4a": "^1.6.4", - "fast-fifo": "^1.2.0", - "streamx": "^2.15.0" - } - }, - "node_modules/three": { - "version": "0.160.1", - "resolved": "https://registry.npmjs.org/three/-/three-0.160.1.tgz", - "integrity": "sha512-Bgl2wPJypDOZ1stAxwfWAcJ0WQf7QzlptsxkjYiURPz+n5k4RBDLsq+6f9Y75TYxn6aHLcWz+JNmwTOXWrQTBQ==" - }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "node_modules/vite": { - "version": "5.0.13", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.0.13.tgz", - "integrity": "sha512-/9ovhv2M2dGTuA+dY93B9trfyWMDRQw2jdVBhHNP6wr0oF34wG2i/N55801iZIpgUpnHDm4F/FabGQLyc+eOgg==", - "dev": true, - "dependencies": { - "esbuild": "^0.19.3", - "postcss": "^8.4.32", - "rollup": "^4.2.0" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^18.0.0 || >=20.0.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - }, - "peerDependencies": { - "@types/node": "^18.0.0 || >=20.0.0", - "less": "*", - "lightningcss": "^1.21.0", - "sass": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.4.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - } - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - } - } -} diff --git a/examples/depth-anything-client/package.json b/examples/depth-anything-client/package.json deleted file mode 100644 index 0adf621a0..000000000 --- a/examples/depth-anything-client/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "depth-anything-client", - "private": true, - "version": "0.0.0", - "type": "module", - "scripts": { - "dev": "vite", - "build": "vite build", - "preview": "vite preview" - }, - "devDependencies": { - "vite": "^5.0.13" - }, - "dependencies": { - "@xenova/transformers": "^2.14.1", - "three": "^0.160.1" - } -} diff --git a/examples/depth-anything-client/style.css b/examples/depth-anything-client/style.css deleted file mode 100644 index 1b0fb3f23..000000000 --- a/examples/depth-anything-client/style.css +++ /dev/null @@ -1,92 +0,0 @@ -* { - box-sizing: border-box; - padding: 0; - margin: 0; - font-family: sans-serif; -} - -html, -body { - height: 100%; -} - -body { - padding: 16px 32px; -} - -body, -#container, -#upload-button { - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; -} - -h1 { - text-align: center; -} - -#container { - position: relative; - width: 640px; - height: 420px; - max-width: 100%; - max-height: 100%; - border: 2px dashed #D1D5DB; - border-radius: 0.75rem; - overflow: hidden; - margin-top: 1rem; - background-size: 100% 100%; - background-position: center; - background-repeat: no-repeat; -} - -#mask-output { - position: absolute; - width: 100%; - height: 100%; - pointer-events: none; -} - -#upload-button { - gap: 0.4rem; - font-size: 18px; - cursor: pointer; -} - -#upload { - display: none; -} - -svg { - pointer-events: none; -} - -#example { - font-size: 14px; - text-decoration: underline; - cursor: pointer; -} - -#example:hover { - color: #2563EB; -} - -canvas { - position: absolute; - width: 100%; - height: 100%; -} - -#status { - min-height: 16px; - margin: 8px 0; -} - -input[type="range"] { - position: absolute; - top: 10px; - right: 10px; - z-index: 1; -} \ No newline at end of file diff --git a/examples/depth-anything-client/vite.config.js b/examples/depth-anything-client/vite.config.js deleted file mode 100644 index 6c32f52df..000000000 --- a/examples/depth-anything-client/vite.config.js +++ /dev/null @@ -1,6 +0,0 @@ -import { defineConfig } from 'vite'; -export default defineConfig({ - build: { - target: 'esnext' - } -}); From 29bdc5bf95a8f954539019d8e65c2bf703ad0ba6 Mon Sep 17 00:00:00 2001 From: Joshua Lochner Date: Mon, 23 Dec 2024 14:14:58 +0000 Subject: [PATCH 05/23] Move tokenizer playground demo --- examples/tokenizer-playground/.eslintrc.cjs | 20 - examples/tokenizer-playground/.gitignore | 24 - examples/tokenizer-playground/README.md | 8 - examples/tokenizer-playground/index.html | 15 - .../tokenizer-playground/package-lock.json | 5154 ----------------- examples/tokenizer-playground/package.json | 33 - .../tokenizer-playground/postcss.config.js | 6 - examples/tokenizer-playground/src/App.css | 11 - examples/tokenizer-playground/src/App.jsx | 177 - .../src/components/Token.jsx | 23 - examples/tokenizer-playground/src/index.css | 40 - examples/tokenizer-playground/src/main.jsx | 10 - examples/tokenizer-playground/src/worker.js | 68 - .../tokenizer-playground/tailwind.config.js | 12 - examples/tokenizer-playground/vite.config.js | 7 - 15 files changed, 5608 deletions(-) delete mode 100644 examples/tokenizer-playground/.eslintrc.cjs delete mode 100644 examples/tokenizer-playground/.gitignore delete mode 100644 examples/tokenizer-playground/README.md delete mode 100644 examples/tokenizer-playground/index.html delete mode 100644 examples/tokenizer-playground/package-lock.json delete mode 100644 examples/tokenizer-playground/package.json delete mode 100644 examples/tokenizer-playground/postcss.config.js delete mode 100644 examples/tokenizer-playground/src/App.css delete mode 100644 examples/tokenizer-playground/src/App.jsx delete mode 100644 examples/tokenizer-playground/src/components/Token.jsx delete mode 100644 examples/tokenizer-playground/src/index.css delete mode 100644 examples/tokenizer-playground/src/main.jsx delete mode 100644 examples/tokenizer-playground/src/worker.js delete mode 100644 examples/tokenizer-playground/tailwind.config.js delete mode 100644 examples/tokenizer-playground/vite.config.js diff --git a/examples/tokenizer-playground/.eslintrc.cjs b/examples/tokenizer-playground/.eslintrc.cjs deleted file mode 100644 index 4dcb43901..000000000 --- a/examples/tokenizer-playground/.eslintrc.cjs +++ /dev/null @@ -1,20 +0,0 @@ -module.exports = { - root: true, - env: { browser: true, es2020: true }, - extends: [ - 'eslint:recommended', - 'plugin:react/recommended', - 'plugin:react/jsx-runtime', - 'plugin:react-hooks/recommended', - ], - ignorePatterns: ['dist', '.eslintrc.cjs'], - parserOptions: { ecmaVersion: 'latest', sourceType: 'module' }, - settings: { react: { version: '18.2' } }, - plugins: ['react-refresh'], - rules: { - 'react-refresh/only-export-components': [ - 'warn', - { allowConstantExport: true }, - ], - }, -} diff --git a/examples/tokenizer-playground/.gitignore b/examples/tokenizer-playground/.gitignore deleted file mode 100644 index a547bf36d..000000000 --- a/examples/tokenizer-playground/.gitignore +++ /dev/null @@ -1,24 +0,0 @@ -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -pnpm-debug.log* -lerna-debug.log* - -node_modules -dist -dist-ssr -*.local - -# Editor directories and files -.vscode/* -!.vscode/extensions.json -.idea -.DS_Store -*.suo -*.ntvs* -*.njsproj -*.sln -*.sw? diff --git a/examples/tokenizer-playground/README.md b/examples/tokenizer-playground/README.md deleted file mode 100644 index f768e33fc..000000000 --- a/examples/tokenizer-playground/README.md +++ /dev/null @@ -1,8 +0,0 @@ -# React + Vite - -This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. - -Currently, two official plugins are available: - -- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh -- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh diff --git a/examples/tokenizer-playground/index.html b/examples/tokenizer-playground/index.html deleted file mode 100644 index 3a73d9a50..000000000 --- a/examples/tokenizer-playground/index.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - The Tokenizer Playground - - - -
- - - - \ No newline at end of file diff --git a/examples/tokenizer-playground/package-lock.json b/examples/tokenizer-playground/package-lock.json deleted file mode 100644 index b4abc613b..000000000 --- a/examples/tokenizer-playground/package-lock.json +++ /dev/null @@ -1,5154 +0,0 @@ -{ - "name": "tokenizer-playground", - "version": "0.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "tokenizer-playground", - "version": "0.0.0", - "dependencies": { - "@xenova/transformers": "^2.17.1", - "react": "^18.2.0", - "react-dom": "^18.2.0" - }, - "devDependencies": { - "@types/react": "^18.2.15", - "@types/react-dom": "^18.2.7", - "@vitejs/plugin-react": "^4.0.3", - "autoprefixer": "^10.4.14", - "eslint": "^8.45.0", - "eslint-plugin-react": "^7.32.2", - "eslint-plugin-react-hooks": "^4.6.0", - "eslint-plugin-react-refresh": "^0.4.3", - "postcss": "^8.4.31", - "tailwindcss": "^3.3.3", - "vite": "^4.5.3" - } - }, - "node_modules/@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@alloc/quick-lru": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", - "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@ampproject/remapping": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", - "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.22.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", - "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.22.13", - "chalk": "^2.4.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.20.tgz", - "integrity": "sha512-BQYjKbpXjoXwFW5jGqiizJQQT/aC7pFm9Ok1OWssonuguICi264lbgMzRp2ZMmRSlfkX6DsWDDcsrctK8Rwfiw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.0.tgz", - "integrity": "sha512-97z/ju/Jy1rZmDxybphrBuI+jtJjFVoz7Mr9yUQVVVi+DNZE333uFQeMOqcCIy1x3WYBIbWftUSLmbNXNT7qFQ==", - "dev": true, - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.0", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-module-transforms": "^7.23.0", - "@babel/helpers": "^7.23.0", - "@babel/parser": "^7.23.0", - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.0", - "@babel/types": "^7.23.0", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/generator": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", - "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", - "dev": true, - "dependencies": { - "@babel/types": "^7.23.0", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", - "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-validator-option": "^7.22.15", - "browserslist": "^4.21.9", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", - "dev": true, - "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", - "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.15" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz", - "integrity": "sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.20" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", - "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", - "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", - "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.23.1", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.1.tgz", - "integrity": "sha512-chNpneuK18yW5Oxsr+t553UZzzAs3aZnFm4bxhebsNTeshrC95yA7l5yl7GBAG+JG1rF0F7zzD2EixK9mWSDoA==", - "dev": true, - "dependencies": { - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.0", - "@babel/types": "^7.23.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", - "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", - "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-transform-react-jsx-self": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.22.5.tgz", - "integrity": "sha512-nTh2ogNUtxbiSbxaT4Ds6aXnXEipHweN9YRgOX/oNXdf0cCrGn/+2LozFa3lnPV5D90MkjhgckCPBrsoSc1a7g==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-jsx-source": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.22.5.tgz", - "integrity": "sha512-yIiRO6yobeEIaI0RTbIr8iAK9FcBHLtZq0S89ZPjDLQXBA4xvghaKqI0etp/tF3htTM0sazJKKLz9oEiGRtu7w==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", - "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.0", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.0", - "@babel/types": "^7.23.0", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", - "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", - "dev": true, - "dependencies": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.20", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", - "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", - "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", - "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", - "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", - "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", - "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", - "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", - "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", - "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", - "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", - "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", - "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", - "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", - "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", - "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", - "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", - "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", - "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", - "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", - "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", - "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", - "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.9.1.tgz", - "integrity": "sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA==", - "dev": true, - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz", - "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.22.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.22.0.tgz", - "integrity": "sha512-H1Ddc/PbZHTDVJSnj8kWptIRSD6AM3pK+mKytuIVF4uoBV7rshFlhhvA58ceJ5wp3Er58w6zj7bykMpYXt3ETw==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@eslint/js": { - "version": "8.50.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.50.0.tgz", - "integrity": "sha512-NCC3zz2+nvYd+Ckfh87rA47zfu2QsQpvc6k1yzTk+b9KzRj0wkGa8LSoGOXN6Zv4lRf/EIoZ80biDh9HOI+RNQ==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@huggingface/jinja": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/@huggingface/jinja/-/jinja-0.2.2.tgz", - "integrity": "sha512-/KPde26khDUIPkTGU82jdtTW9UAuvUTumCAbFs/7giR0SxsvZC4hru51PBvpijH6BVkHcROcvZM/lpy5h1jRRA==", - "engines": { - "node": ">=18" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.11", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", - "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.19", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", - "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@protobufjs/aspromise": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", - "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" - }, - "node_modules/@protobufjs/base64": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", - "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" - }, - "node_modules/@protobufjs/codegen": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", - "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" - }, - "node_modules/@protobufjs/eventemitter": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", - "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" - }, - "node_modules/@protobufjs/fetch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", - "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", - "dependencies": { - "@protobufjs/aspromise": "^1.1.1", - "@protobufjs/inquire": "^1.1.0" - } - }, - "node_modules/@protobufjs/float": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", - "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" - }, - "node_modules/@protobufjs/inquire": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", - "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" - }, - "node_modules/@protobufjs/path": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", - "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" - }, - "node_modules/@protobufjs/pool": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", - "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" - }, - "node_modules/@protobufjs/utf8": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", - "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" - }, - "node_modules/@types/babel__core": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.2.tgz", - "integrity": "sha512-pNpr1T1xLUc2l3xJKuPtsEky3ybxN3m4fJkknfIpTCTfIZCDW57oAg+EfCgIIp2rvCe0Wn++/FfodDS4YXxBwA==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "node_modules/@types/babel__generator": { - "version": "7.6.5", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.5.tgz", - "integrity": "sha512-h9yIuWbJKdOPLJTbmSpPzkF67e659PbQDba7ifWm5BJ8xTv+sDmS7rFmywkWOvXedGTivCdeGSIIX8WLcRTz8w==", - "dev": true, - "dependencies": { - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__template": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.2.tgz", - "integrity": "sha512-/AVzPICMhMOMYoSx9MoKpGDKdBRsIXMNByh1PXSZoa+v6ZoLa8xxtsT/uLQ/NJm0XVAWl/BvId4MlDeXJaeIZQ==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__traverse": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.2.tgz", - "integrity": "sha512-ojlGK1Hsfce93J0+kn3H5R73elidKUaZonirN33GSmgTUMpzI/MIFfSpF3haANe3G1bEBS9/9/QEqwTzwqFsKw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.20.7" - } - }, - "node_modules/@types/node": { - "version": "20.8.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.2.tgz", - "integrity": "sha512-Vvycsc9FQdwhxE3y3DzeIxuEJbWGDsnrxvMADzTDF/lcdR9/K+AQIeAghTQsHtotg/q0j3WEOYS/jQgSdWue3w==" - }, - "node_modules/@types/prop-types": { - "version": "15.7.8", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.8.tgz", - "integrity": "sha512-kMpQpfZKSCBqltAJwskgePRaYRFukDkm1oItcAbC3gNELR20XIBcN9VRgg4+m8DKsTfkWeA4m4Imp4DDuWy7FQ==", - "dev": true - }, - "node_modules/@types/react": { - "version": "18.2.24", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.24.tgz", - "integrity": "sha512-Ee0Jt4sbJxMu1iDcetZEIKQr99J1Zfb6D4F3qfUWoR1JpInkY1Wdg4WwCyBjL257D0+jGqSl1twBjV8iCaC0Aw==", - "dev": true, - "dependencies": { - "@types/prop-types": "*", - "@types/scheduler": "*", - "csstype": "^3.0.2" - } - }, - "node_modules/@types/react-dom": { - "version": "18.2.9", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.9.tgz", - "integrity": "sha512-6nNhVzZ9joQ6F7lozrASuQKC0Kf6ArYMU+DqA2ZrUbB+d+9lC6ZLn1GxiEBI1edmAwvTULtuJ6uPZpv3XudwUg==", - "dev": true, - "dependencies": { - "@types/react": "*" - } - }, - "node_modules/@types/scheduler": { - "version": "0.16.4", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.4.tgz", - "integrity": "sha512-2L9ifAGl7wmXwP4v3pN4p2FLhD0O1qsJpvKmNin5VA8+UvNVb447UDaAEV6UdrkA+m/Xs58U1RFps44x6TFsVQ==", - "dev": true - }, - "node_modules/@vitejs/plugin-react": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.1.0.tgz", - "integrity": "sha512-rM0SqazU9iqPUraQ2JlIvReeaxOoRj6n+PzB1C0cBzIbd8qP336nC39/R9yPi3wVcah7E7j/kdU1uCUqMEU4OQ==", - "dev": true, - "dependencies": { - "@babel/core": "^7.22.20", - "@babel/plugin-transform-react-jsx-self": "^7.22.5", - "@babel/plugin-transform-react-jsx-source": "^7.22.5", - "@types/babel__core": "^7.20.2", - "react-refresh": "^0.14.0" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "peerDependencies": { - "vite": "^4.2.0" - } - }, - "node_modules/@xenova/transformers": { - "version": "2.17.1", - "resolved": "https://registry.npmjs.org/@xenova/transformers/-/transformers-2.17.1.tgz", - "integrity": "sha512-zo702tQAFZXhzeD2GCYUNUqeqkoueOdiSbQWa4s0q7ZE4z8WBIwIsMMPGobpgdqjQ2u0Qulo08wuqVEUrBXjkQ==", - "dependencies": { - "@huggingface/jinja": "^0.2.2", - "onnxruntime-web": "1.14.0", - "sharp": "^0.32.0" - }, - "optionalDependencies": { - "onnxruntime-node": "1.14.0" - } - }, - "node_modules/acorn": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", - "dev": true - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/arg": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", - "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", - "dev": true - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", - "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "is-array-buffer": "^3.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-includes": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz", - "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flat": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", - "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", - "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.tosorted": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.2.tgz", - "integrity": "sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0", - "get-intrinsic": "^1.2.1" - } - }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", - "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", - "dev": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", - "is-array-buffer": "^3.0.2", - "is-shared-array-buffer": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/asynciterator.prototype": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz", - "integrity": "sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.3" - } - }, - "node_modules/autoprefixer": { - "version": "10.4.16", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.16.tgz", - "integrity": "sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "browserslist": "^4.21.10", - "caniuse-lite": "^1.0.30001538", - "fraction.js": "^4.3.6", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", - "postcss-value-parser": "^4.2.0" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" - }, - "engines": { - "node": "^10 || ^12 || >=14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/b4a": { - "version": "1.6.4", - "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.4.tgz", - "integrity": "sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==" - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz", - "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001541", - "electron-to-chromium": "^1.4.535", - "node-releases": "^2.0.13", - "update-browserslist-db": "^1.0.13" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase-css": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", - "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001543", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001543.tgz", - "integrity": "sha512-qxdO8KPWPQ+Zk6bvNpPeQIOH47qZSYdFZd6dXQzb2KzhnSXju4Kd7H1PkSJx6NICSMgo/IhRZRhhfPTHYpJUCA==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ] - }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chokidar/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" - }, - "node_modules/color": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", - "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", - "dependencies": { - "color-convert": "^2.0.1", - "color-string": "^1.9.0" - }, - "engines": { - "node": ">=12.5.0" - } - }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "node_modules/color-string": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", - "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", - "dependencies": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "node_modules/color/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true, - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/csstype": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", - "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==", - "dev": true - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "dependencies": { - "mimic-response": "^3.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "node_modules/define-data-property": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz", - "integrity": "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.2.1", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dev": true, - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/detect-libc": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", - "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/didyoumean": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", - "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", - "dev": true - }, - "node_modules/dlv": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", - "dev": true - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.4.540", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.540.tgz", - "integrity": "sha512-aoCqgU6r9+o9/S7wkcSbmPRFi7OWZWiXS9rtjEd+Ouyu/Xyw5RSq2XN8s5Qp8IaFOLiRrhQCphCIjAxgG3eCAg==", - "dev": true - }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/es-abstract": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.2.tgz", - "integrity": "sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==", - "dev": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "arraybuffer.prototype.slice": "^1.0.2", - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-set-tostringtag": "^2.0.1", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.1", - "get-symbol-description": "^1.0.0", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", - "is-array-buffer": "^3.0.2", - "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.12", - "is-weakref": "^1.0.2", - "object-inspect": "^1.12.3", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.1", - "safe-array-concat": "^1.0.1", - "safe-regex-test": "^1.0.0", - "string.prototype.trim": "^1.2.8", - "string.prototype.trimend": "^1.0.7", - "string.prototype.trimstart": "^1.0.7", - "typed-array-buffer": "^1.0.0", - "typed-array-byte-length": "^1.0.0", - "typed-array-byte-offset": "^1.0.0", - "typed-array-length": "^1.0.4", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.11" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-iterator-helpers": { - "version": "1.0.15", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz", - "integrity": "sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==", - "dev": true, - "dependencies": { - "asynciterator.prototype": "^1.0.0", - "call-bind": "^1.0.2", - "define-properties": "^1.2.1", - "es-abstract": "^1.22.1", - "es-set-tostringtag": "^2.0.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.2.1", - "globalthis": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", - "iterator.prototype": "^1.1.2", - "safe-array-concat": "^1.0.1" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-shim-unscopables": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", - "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - } - }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/esbuild": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", - "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", - "dev": true, - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/android-arm": "0.18.20", - "@esbuild/android-arm64": "0.18.20", - "@esbuild/android-x64": "0.18.20", - "@esbuild/darwin-arm64": "0.18.20", - "@esbuild/darwin-x64": "0.18.20", - "@esbuild/freebsd-arm64": "0.18.20", - "@esbuild/freebsd-x64": "0.18.20", - "@esbuild/linux-arm": "0.18.20", - "@esbuild/linux-arm64": "0.18.20", - "@esbuild/linux-ia32": "0.18.20", - "@esbuild/linux-loong64": "0.18.20", - "@esbuild/linux-mips64el": "0.18.20", - "@esbuild/linux-ppc64": "0.18.20", - "@esbuild/linux-riscv64": "0.18.20", - "@esbuild/linux-s390x": "0.18.20", - "@esbuild/linux-x64": "0.18.20", - "@esbuild/netbsd-x64": "0.18.20", - "@esbuild/openbsd-x64": "0.18.20", - "@esbuild/sunos-x64": "0.18.20", - "@esbuild/win32-arm64": "0.18.20", - "@esbuild/win32-ia32": "0.18.20", - "@esbuild/win32-x64": "0.18.20" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/eslint": { - "version": "8.50.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.50.0.tgz", - "integrity": "sha512-FOnOGSuFuFLv/Sa+FDVRZl4GGVAAFFi8LecRsI5a1tMO5HIE8nCm4ivAlzt4dT3ol/PaaGC0rJEEXQmHJBGoOg==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.2", - "@eslint/js": "8.50.0", - "@humanwhocodes/config-array": "^0.11.11", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-plugin-react": { - "version": "7.33.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz", - "integrity": "sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==", - "dev": true, - "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flatmap": "^1.3.1", - "array.prototype.tosorted": "^1.1.1", - "doctrine": "^2.1.0", - "es-iterator-helpers": "^1.0.12", - "estraverse": "^5.3.0", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.1.2", - "object.entries": "^1.1.6", - "object.fromentries": "^2.0.6", - "object.hasown": "^1.1.2", - "object.values": "^1.1.6", - "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.4", - "semver": "^6.3.1", - "string.prototype.matchall": "^4.0.8" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" - } - }, - "node_modules/eslint-plugin-react-hooks": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", - "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", - "dev": true, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" - } - }, - "node_modules/eslint-plugin-react-refresh": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.3.tgz", - "integrity": "sha512-Hh0wv8bUNY877+sI0BlCUlsS0TYYQqvzEwJsJJPM2WF4RnTStSnSR3zdJYa2nPOJgg3UghXi54lVyMSmpCalzA==", - "dev": true, - "peerDependencies": { - "eslint": ">=7" - } - }, - "node_modules/eslint-plugin-react/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/eslint/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/eslint/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/eslint/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/eslint/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/globals": { - "version": "13.22.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.22.0.tgz", - "integrity": "sha512-H1Ddc/PbZHTDVJSnj8kWptIRSD6AM3pK+mKytuIVF4uoBV7rshFlhhvA58ceJ5wp3Er58w6zj7bykMpYXt3ETw==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dev": true, - "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", - "dev": true, - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-template": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", - "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-fifo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", - "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==" - }, - "node_modules/fast-glob": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", - "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat-cache": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.0.tgz", - "integrity": "sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==", - "dev": true, - "dependencies": { - "flatted": "^3.2.7", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/flatbuffers": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/flatbuffers/-/flatbuffers-1.12.0.tgz", - "integrity": "sha512-c7CZADjRcl6j0PlvFy0ZqXQ67qSEZfrVPynmnL+2zPc+NtMvrF8Y0QceMo7QqnSPc7+uWjUIAbvCQ5WIKlMVdQ==" - }, - "node_modules/flatted": { - "version": "3.2.9", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", - "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", - "dev": true - }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.3" - } - }, - "node_modules/fraction.js": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.6.tgz", - "integrity": "sha512-n2aZ9tNfYDwaHhvFTkhFErqOMIb8uyzSQ+vGJBjZyanAKZVbGUQ1sngfk9FdkBw7G26O7AgNjLcecLffD1c7eg==", - "dev": true, - "engines": { - "node": "*" - }, - "funding": { - "type": "patreon", - "url": "https://github.com/sponsors/rawify" - } - }, - "node_modules/fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/function.prototype.name": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", - "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "functions-have-names": "^1.2.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/github-from-package": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", - "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==" - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", - "dev": true, - "dependencies": { - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true - }, - "node_modules/guid-typescript": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/guid-typescript/-/guid-typescript-1.0.9.tgz", - "integrity": "sha512-Y8T4vYhEfwJOTbouREvG+3XDsjr8E3kIr7uf+JZ0BYloFsttiHU0WfvANVsR7TxNUJa/WpCnw/Ino/p+DeBhBQ==" - }, - "node_modules/has": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", - "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", - "dev": true, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" - }, - "node_modules/internal-slot": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/is-array-buffer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", - "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "is-typed-array": "^1.1.10" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" - }, - "node_modules/is-async-function": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", - "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dev": true, - "dependencies": { - "has-bigints": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", - "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-finalizationregistry": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", - "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-generator-function": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", - "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", - "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-set": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", - "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", - "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", - "dev": true, - "dependencies": { - "which-typed-array": "^1.1.11" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakmap": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", - "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakset": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", - "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "node_modules/iterator.prototype": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", - "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", - "dev": true, - "dependencies": { - "define-properties": "^1.2.1", - "get-intrinsic": "^1.2.1", - "has-symbols": "^1.0.3", - "reflect.getprototypeof": "^1.0.4", - "set-function-name": "^2.0.1" - } - }, - "node_modules/jiti": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.20.0.tgz", - "integrity": "sha512-3TV69ZbrvV6U5DfQimop50jE9Dl6J8O1ja1dvBbMba/sZ3YBEQqJ2VZRoQPVnhlzjNtU1vaXRZVrVjU4qtm8yA==", - "dev": true, - "bin": { - "jiti": "bin/jiti.js" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsx-ast-utils": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", - "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", - "dev": true, - "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flat": "^1.3.1", - "object.assign": "^4.1.4", - "object.values": "^1.1.6" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/keyv": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.3.tgz", - "integrity": "sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==", - "dev": true, - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/lilconfig": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", - "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "node_modules/long": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", - "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/mz": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", - "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", - "dev": true, - "dependencies": { - "any-promise": "^1.0.0", - "object-assign": "^4.0.1", - "thenify-all": "^1.0.0" - } - }, - "node_modules/nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/napi-build-utils": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", - "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==" - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "node_modules/node-abi": { - "version": "3.47.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.47.0.tgz", - "integrity": "sha512-2s6B2CWZM//kPgwnuI0KrYwNjfdByE25zvAaEpq9IH4zcNsarH8Ihu/UuX6XMPEogDAxkuUFeZn60pXNHAqn3A==", - "dependencies": { - "semver": "^7.3.5" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/node-abi/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/node-abi/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/node-abi/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "node_modules/node-addon-api": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz", - "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==" - }, - "node_modules/node-releases": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", - "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", - "dev": true - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-hash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", - "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.entries": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.7.tgz", - "integrity": "sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.fromentries": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz", - "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.hasown": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.3.tgz", - "integrity": "sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==", - "dev": true, - "dependencies": { - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.values": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz", - "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onnx-proto": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/onnx-proto/-/onnx-proto-4.0.4.tgz", - "integrity": "sha512-aldMOB3HRoo6q/phyB6QRQxSt895HNNw82BNyZ2CMh4bjeKv7g/c+VpAFtJuEMVfYLMbRx61hbuqnKceLeDcDA==", - "dependencies": { - "protobufjs": "^6.8.8" - } - }, - "node_modules/onnxruntime-common": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/onnxruntime-common/-/onnxruntime-common-1.14.0.tgz", - "integrity": "sha512-3LJpegM2iMNRX2wUmtYfeX/ytfOzNwAWKSq1HbRrKc9+uqG/FsEA0bbKZl1btQeZaXhC26l44NWpNUeXPII7Ew==" - }, - "node_modules/onnxruntime-node": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/onnxruntime-node/-/onnxruntime-node-1.14.0.tgz", - "integrity": "sha512-5ba7TWomIV/9b6NH/1x/8QEeowsb+jBEvFzU6z0T4mNsFwdPqXeFUM7uxC6QeSRkEbWu3qEB0VMjrvzN/0S9+w==", - "optional": true, - "os": [ - "win32", - "darwin", - "linux" - ], - "dependencies": { - "onnxruntime-common": "~1.14.0" - } - }, - "node_modules/onnxruntime-web": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/onnxruntime-web/-/onnxruntime-web-1.14.0.tgz", - "integrity": "sha512-Kcqf43UMfW8mCydVGcX9OMXI2VN17c0p6XvR7IPSZzBf/6lteBzXHvcEVWDPmCKuGombl997HgLqj91F11DzXw==", - "dependencies": { - "flatbuffers": "^1.12.0", - "guid-typescript": "^1.0.9", - "long": "^4.0.0", - "onnx-proto": "^4.0.4", - "onnxruntime-common": "~1.14.0", - "platform": "^1.3.6" - } - }, - "node_modules/optionator": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", - "dev": true, - "dependencies": { - "@aashutoshrathi/word-wrap": "^1.2.3", - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pirates": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", - "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/platform": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.6.tgz", - "integrity": "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==" - }, - "node_modules/postcss": { - "version": "8.4.31", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", - "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/postcss-import": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", - "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.0.0", - "read-cache": "^1.0.0", - "resolve": "^1.1.7" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "postcss": "^8.0.0" - } - }, - "node_modules/postcss-import/node_modules/resolve": { - "version": "1.22.6", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.6.tgz", - "integrity": "sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/postcss-js": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", - "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", - "dev": true, - "dependencies": { - "camelcase-css": "^2.0.1" - }, - "engines": { - "node": "^12 || ^14 || >= 16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": "^8.4.21" - } - }, - "node_modules/postcss-load-config": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.1.tgz", - "integrity": "sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==", - "dev": true, - "dependencies": { - "lilconfig": "^2.0.5", - "yaml": "^2.1.1" - }, - "engines": { - "node": ">= 14" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": ">=8.0.9", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "postcss": { - "optional": true - }, - "ts-node": { - "optional": true - } - } - }, - "node_modules/postcss-nested": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz", - "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.11" - }, - "engines": { - "node": ">=12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": "^8.2.14" - } - }, - "node_modules/postcss-selector-parser": { - "version": "6.0.13", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", - "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", - "dev": true, - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true - }, - "node_modules/prebuild-install": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz", - "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==", - "dependencies": { - "detect-libc": "^2.0.0", - "expand-template": "^2.0.3", - "github-from-package": "0.0.0", - "minimist": "^1.2.3", - "mkdirp-classic": "^0.5.3", - "napi-build-utils": "^1.0.1", - "node-abi": "^3.3.0", - "pump": "^3.0.0", - "rc": "^1.2.7", - "simple-get": "^4.0.0", - "tar-fs": "^2.0.0", - "tunnel-agent": "^0.6.0" - }, - "bin": { - "prebuild-install": "bin.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/prebuild-install/node_modules/tar-fs": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", - "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", - "dependencies": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^2.1.4" - } - }, - "node_modules/prebuild-install/node_modules/tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "dev": true, - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" - } - }, - "node_modules/protobufjs": { - "version": "7.2.5", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.5.tgz", - "integrity": "sha512-gGXRSXvxQ7UiPgfw8gevrfRWcTlSbOFg+p/N+JVJEK5VhueL2miT6qTymqAmjr1Q5WbOCyJbyrk6JfWKwlFn6A==", - "hasInstallScript": true, - "dependencies": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", - "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", - "@types/node": ">=13.7.0", - "long": "^5.0.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/protobufjs/node_modules/long": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", - "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" - }, - "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/queue-tick": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", - "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==" - }, - "node_modules/rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "bin": { - "rc": "cli.js" - } - }, - "node_modules/rc/node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", - "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", - "dependencies": { - "loose-envify": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-dom": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", - "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", - "dependencies": { - "loose-envify": "^1.1.0", - "scheduler": "^0.23.0" - }, - "peerDependencies": { - "react": "^18.2.0" - } - }, - "node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "dev": true - }, - "node_modules/react-refresh": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", - "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/read-cache": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", - "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", - "dev": true, - "dependencies": { - "pify": "^2.3.0" - } - }, - "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/reflect.getprototypeof": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz", - "integrity": "sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", - "globalthis": "^1.0.3", - "which-builtin-type": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", - "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "set-function-name": "^2.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve": { - "version": "2.0.0-next.4", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", - "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", - "dev": true, - "dependencies": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rollup": { - "version": "3.29.4", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", - "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", - "dev": true, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=14.18.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/safe-array-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", - "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", - "has-symbols": "^1.0.3", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/safe-regex-test": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "is-regex": "^1.1.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/scheduler": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", - "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", - "dependencies": { - "loose-envify": "^1.1.0" - } - }, - "node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/set-function-name": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", - "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", - "dev": true, - "dependencies": { - "define-data-property": "^1.0.1", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/sharp": { - "version": "0.32.6", - "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.32.6.tgz", - "integrity": "sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==", - "hasInstallScript": true, - "dependencies": { - "color": "^4.2.3", - "detect-libc": "^2.0.2", - "node-addon-api": "^6.1.0", - "prebuild-install": "^7.1.1", - "semver": "^7.5.4", - "simple-get": "^4.0.1", - "tar-fs": "^3.0.4", - "tunnel-agent": "^0.6.0" - }, - "engines": { - "node": ">=14.15.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/sharp/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/sharp/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/sharp/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/simple-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/simple-get": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", - "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "decompress-response": "^6.0.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } - }, - "node_modules/simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", - "dependencies": { - "is-arrayish": "^0.3.1" - } - }, - "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/streamx": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.15.1.tgz", - "integrity": "sha512-fQMzy2O/Q47rgwErk/eGeLu/roaFWV0jVsogDmrszM9uIw8L5OA+t+V93MgYlufNptfjmYR1tOMWhei/Eh7TQA==", - "dependencies": { - "fast-fifo": "^1.1.0", - "queue-tick": "^1.0.1" - } - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string.prototype.matchall": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz", - "integrity": "sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", - "regexp.prototype.flags": "^1.5.0", - "set-function-name": "^2.0.0", - "side-channel": "^1.0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trim": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", - "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", - "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", - "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/sucrase": { - "version": "3.34.0", - "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.34.0.tgz", - "integrity": "sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.2", - "commander": "^4.0.0", - "glob": "7.1.6", - "lines-and-columns": "^1.1.6", - "mz": "^2.7.0", - "pirates": "^4.0.1", - "ts-interface-checker": "^0.1.9" - }, - "bin": { - "sucrase": "bin/sucrase", - "sucrase-node": "bin/sucrase-node" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/sucrase/node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/tailwindcss": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.3.3.tgz", - "integrity": "sha512-A0KgSkef7eE4Mf+nKJ83i75TMyq8HqY3qmFIJSWy8bNt0v1lG7jUcpGpoTFxAwYcWOphcTBLPPJg+bDfhDf52w==", - "dev": true, - "dependencies": { - "@alloc/quick-lru": "^5.2.0", - "arg": "^5.0.2", - "chokidar": "^3.5.3", - "didyoumean": "^1.2.2", - "dlv": "^1.1.3", - "fast-glob": "^3.2.12", - "glob-parent": "^6.0.2", - "is-glob": "^4.0.3", - "jiti": "^1.18.2", - "lilconfig": "^2.1.0", - "micromatch": "^4.0.5", - "normalize-path": "^3.0.0", - "object-hash": "^3.0.0", - "picocolors": "^1.0.0", - "postcss": "^8.4.23", - "postcss-import": "^15.1.0", - "postcss-js": "^4.0.1", - "postcss-load-config": "^4.0.1", - "postcss-nested": "^6.0.1", - "postcss-selector-parser": "^6.0.11", - "resolve": "^1.22.2", - "sucrase": "^3.32.0" - }, - "bin": { - "tailwind": "lib/cli.js", - "tailwindcss": "lib/cli.js" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/tailwindcss/node_modules/resolve": { - "version": "1.22.6", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.6.tgz", - "integrity": "sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/tar-fs": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.4.tgz", - "integrity": "sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==", - "dependencies": { - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^3.1.5" - } - }, - "node_modules/tar-stream": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.6.tgz", - "integrity": "sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==", - "dependencies": { - "b4a": "^1.6.4", - "fast-fifo": "^1.2.0", - "streamx": "^2.15.0" - } - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "node_modules/thenify": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", - "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", - "dev": true, - "dependencies": { - "any-promise": "^1.0.0" - } - }, - "node_modules/thenify-all": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", - "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", - "dev": true, - "dependencies": { - "thenify": ">= 3.1.0 < 4" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/ts-interface-checker": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", - "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", - "dev": true - }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typed-array-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", - "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/typed-array-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", - "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", - "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", - "dev": true, - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", - "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "node_modules/vite": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.3.tgz", - "integrity": "sha512-kQL23kMeX92v3ph7IauVkXkikdDRsYMGTVl5KY2E9OY4ONLvkHf04MDTbnfo6NKxZiDLWzVpP5oTa8hQD8U3dg==", - "dev": true, - "dependencies": { - "esbuild": "^0.18.10", - "postcss": "^8.4.27", - "rollup": "^3.27.1" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - }, - "peerDependencies": { - "@types/node": ">= 14", - "less": "*", - "lightningcss": "^1.21.0", - "sass": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.4.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - } - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, - "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-builtin-type": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz", - "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==", - "dev": true, - "dependencies": { - "function.prototype.name": "^1.1.5", - "has-tostringtag": "^1.0.0", - "is-async-function": "^2.0.0", - "is-date-object": "^1.0.5", - "is-finalizationregistry": "^1.0.2", - "is-generator-function": "^1.0.10", - "is-regex": "^1.1.4", - "is-weakref": "^1.0.2", - "isarray": "^2.0.5", - "which-boxed-primitive": "^1.0.2", - "which-collection": "^1.0.1", - "which-typed-array": "^1.1.9" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-collection": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", - "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", - "dev": true, - "dependencies": { - "is-map": "^2.0.1", - "is-set": "^2.0.1", - "is-weakmap": "^2.0.1", - "is-weakset": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-typed-array": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", - "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", - "dev": true, - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, - "node_modules/yaml": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.2.tgz", - "integrity": "sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg==", - "dev": true, - "engines": { - "node": ">= 14" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - } -} diff --git a/examples/tokenizer-playground/package.json b/examples/tokenizer-playground/package.json deleted file mode 100644 index 0d77ce8db..000000000 --- a/examples/tokenizer-playground/package.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "name": "tokenizer-playground", - "private": true, - "version": "0.0.0", - "type": "module", - "scripts": { - "dev": "vite", - "build": "vite build", - "lint": "eslint . --ext js,jsx --report-unused-disable-directives --max-warnings 0", - "preview": "vite preview" - }, - "dependencies": { - "@xenova/transformers": "^2.17.1", - "react": "^18.2.0", - "react-dom": "^18.2.0" - }, - "devDependencies": { - "@types/react": "^18.2.15", - "@types/react-dom": "^18.2.7", - "@vitejs/plugin-react": "^4.0.3", - "autoprefixer": "^10.4.14", - "eslint": "^8.45.0", - "eslint-plugin-react": "^7.32.2", - "eslint-plugin-react-hooks": "^4.6.0", - "eslint-plugin-react-refresh": "^0.4.3", - "postcss": "^8.4.31", - "tailwindcss": "^3.3.3", - "vite": "^4.5.3" - }, - "overrides": { - "protobufjs": "^7.2.4" - } -} diff --git a/examples/tokenizer-playground/postcss.config.js b/examples/tokenizer-playground/postcss.config.js deleted file mode 100644 index 2e7af2b7f..000000000 --- a/examples/tokenizer-playground/postcss.config.js +++ /dev/null @@ -1,6 +0,0 @@ -export default { - plugins: { - tailwindcss: {}, - autoprefixer: {}, - }, -} diff --git a/examples/tokenizer-playground/src/App.css b/examples/tokenizer-playground/src/App.css deleted file mode 100644 index 09b73fe61..000000000 --- a/examples/tokenizer-playground/src/App.css +++ /dev/null @@ -1,11 +0,0 @@ -#root { - max-width: 1280px; - width: 100%; - margin: 0 auto; - padding: 2rem; - text-align: center; - display: flex; - justify-content: center; - align-items: center; - flex-direction: column; -} diff --git a/examples/tokenizer-playground/src/App.jsx b/examples/tokenizer-playground/src/App.jsx deleted file mode 100644 index 824a1cfcd..000000000 --- a/examples/tokenizer-playground/src/App.jsx +++ /dev/null @@ -1,177 +0,0 @@ -import { useCallback, useEffect, useRef, useState } from 'react' -import { Token } from './components/Token' -import './App.css' - -// Define list of tokenizers and their corresponding human-readable names -const TOKENIZER_OPTIONS = Object.freeze({ - 'Xenova/gpt-4': 'gpt-4 / gpt-3.5-turbo / text-embedding-ada-002', - 'Xenova/text-davinci-003': 'text-davinci-003 / text-davinci-002', - 'Xenova/gpt-3': 'gpt-3', - 'Xenova/grok-1-tokenizer': 'Grok-1', - 'Xenova/claude-tokenizer': 'Claude', - 'Xenova/mistral-tokenizer-v3': 'Mistral v3', - 'Xenova/mistral-tokenizer-v1': 'Mistral v1', - 'Xenova/gemma-tokenizer': 'Gemma', - 'Xenova/llama-3-tokenizer': 'Llama 3', - 'Xenova/llama-tokenizer': 'LLaMA / Llama 2', - 'Xenova/c4ai-command-r-v01-tokenizer': 'Cohere Command-R', - 'Xenova/t5-small': 'T5', - 'Xenova/bert-base-cased': 'bert-base-cased', - '': 'Custom', -}) - -function App() { - // Allow user to set tokenizer and text via URL query parameters - const urlParams = new URLSearchParams(window.location.search); - const tokenizerParam = urlParams.get('tokenizer'); - const textParam = urlParams.get('text'); - - const [tokenIds, setTokenIds] = useState([]); - const [decodedTokens, setDecodedTokens] = useState([]); - const [margins, setMargins] = useState([]); - const [outputOption, setOutputOption] = useState('text'); - const [tokenizer, setTokenizer] = useState(tokenizerParam ?? 'Xenova/gpt-4'); - const [customTokenizer, setCustomTokenizer] = useState(''); - - const textareaRef = useRef(null); - const outputRef = useRef(null); - - // Create a reference to the worker object. - const worker = useRef(null); - - // We use the `useEffect` hook to set up the worker as soon as the `App` component is mounted. - useEffect(() => { - if (!worker.current) { - // Create the worker if it does not yet exist. - worker.current = new Worker(new URL('./worker.js', import.meta.url), { - type: 'module' - }); - } - - // Create a callback function for messages from the worker thread. - const onMessageReceived = (e) => { - setTokenIds(e.data.token_ids); - setDecodedTokens(e.data.decoded); - setMargins(e.data.margins); - }; - - // Attach the callback function as an event listener. - worker.current.addEventListener('message', onMessageReceived); - - // Define a cleanup function for when the component is unmounted. - return () => worker.current.removeEventListener('message', onMessageReceived); - }, []); - - const resetOutput = useCallback(() => { - setOutputOption('text'); - setTokenIds([]); - setDecodedTokens([]); - setMargins([]); - }, []); - - const onInputChange = useCallback((e) => { - const model_id = tokenizer; - const text = e.target.value; - - if (text.length > 10000) { - setOutputOption(null); - console.log('User most likely pasted in a large body of text (> 10k chars), so we hide the output (until specifically requested by the user).'); - } - worker.current.postMessage({ model_id, text }); - }, [tokenizer]); - - useEffect(() => { - if (textParam) { - onInputChange({ target: { value: textParam } }); - } - }, [onInputChange, textParam]); - - const onTokenizerChange = useCallback((e) => { - const model_id = e.target.value; - setTokenizer(model_id); - if (!model_id) return; - worker.current.postMessage({ model_id, text: textareaRef.current.value }); - }, []); - - return ( -
- -
-

The Tokenizer Playground

-

Experiment with different tokenizers (running locally in your browser).

-
- -
- - {(!(tokenizer in TOKENIZER_OPTIONS) || customTokenizer || tokenizer === '') && ( - { - setCustomTokenizer(e.target.value); - onTokenizerChange(e); - }} - className="bg-white border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full py-1 px-2 mt-1" - /> - )} -
- - - - -
-
-

Tokens

-

{tokenIds.length.toLocaleString()}

-
-
-

Characters

-

{(textareaRef.current?.value.length ?? 0).toLocaleString()}

-
-
- -
- {outputOption === 'text' ? ( - decodedTokens.map( - (token, index) => - ) - ) : outputOption === 'token_ids' ? ( - `[${tokenIds.join(', ')}]` - ) : null} -
- -
-
- setOutputOption('text')} id="output-radio-1" type="radio" value="" name="output-radio" className="w-4 h-4 text-blue-600 bg-gray-100 border-gray-300 focus:ring-blue-500" /> - -
-
- setOutputOption('token_ids')} id="output-radio-2" type="radio" value="" name="output-radio" className="w-4 h-4 text-blue-600 bg-gray-100 border-gray-300 focus:ring-blue-500" /> - -
-
- setOutputOption(null)} id="output-radio-3" type="radio" value="" name="output-radio" className="w-4 h-4 text-blue-600 bg-gray-100 border-gray-300 focus:ring-blue-500" /> - -
-
-
- ) -} - -export default App diff --git a/examples/tokenizer-playground/src/components/Token.jsx b/examples/tokenizer-playground/src/components/Token.jsx deleted file mode 100644 index 8987eb9ce..000000000 --- a/examples/tokenizer-playground/src/components/Token.jsx +++ /dev/null @@ -1,23 +0,0 @@ -import { Fragment } from 'react'; - -const COLOURS = [ - 'bg-purple-300', - 'bg-green-300', - 'bg-yellow-300', - 'bg-red-300', - 'bg-blue-300', -] - -export function Token({ text, position, margin }) { - const textWithLineBreaks = text.split('\n').map((line, index, array) => ( - - {line} - {index !== array.length - 1 &&
} -
- )); - return ( - {textWithLineBreaks} - ) -} \ No newline at end of file diff --git a/examples/tokenizer-playground/src/index.css b/examples/tokenizer-playground/src/index.css deleted file mode 100644 index 80340160d..000000000 --- a/examples/tokenizer-playground/src/index.css +++ /dev/null @@ -1,40 +0,0 @@ -@tailwind base; -@tailwind components; -@tailwind utilities; - -:root { - font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; - line-height: 1.5; - font-weight: 400; - - color-scheme: light dark; - color: rgba(255, 255, 255, 0.87); - background-color: #242424; - - font-synthesis: none; - text-rendering: optimizeLegibility; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - -webkit-text-size-adjust: 100%; -} - -body { - margin: 0; - display: flex; - place-items: center; - min-height: 100vh; -} - - -@media (prefers-color-scheme: light) { - :root { - color: #213547; - background-color: #ffffff; - } - a:hover { - color: #747bff; - } - button { - background-color: #f9f9f9; - } -} diff --git a/examples/tokenizer-playground/src/main.jsx b/examples/tokenizer-playground/src/main.jsx deleted file mode 100644 index 54b39dd1d..000000000 --- a/examples/tokenizer-playground/src/main.jsx +++ /dev/null @@ -1,10 +0,0 @@ -import React from 'react' -import ReactDOM from 'react-dom/client' -import App from './App.jsx' -import './index.css' - -ReactDOM.createRoot(document.getElementById('root')).render( - - - , -) diff --git a/examples/tokenizer-playground/src/worker.js b/examples/tokenizer-playground/src/worker.js deleted file mode 100644 index 4db09bdc0..000000000 --- a/examples/tokenizer-playground/src/worker.js +++ /dev/null @@ -1,68 +0,0 @@ -// Although not strictly necessary, we delegate the tokenization to a worker thread to avoid -// any potential issues with the tokenizer blocking the main thread (especially for large inputs). - -import { env, AutoTokenizer } from '@xenova/transformers' - -env.allowLocalModels = false; - -// This is a map of all the tokenizer instances that we have loaded. -// model_id -> promise that resolves to tokenizer -const TOKENIZER_MAPPINGS = new Map(); - -// Listen for messages from the main thread -self.addEventListener('message', async (event) => { - let tokenizerPromise = TOKENIZER_MAPPINGS.get(event.data.model_id); - // Load the tokenizer if it hasn't been loaded yet - if (!tokenizerPromise) { - tokenizerPromise = AutoTokenizer.from_pretrained(event.data.model_id); - - TOKENIZER_MAPPINGS.set(event.data.model_id, new Promise((resolve) => { - // Just for visualization purposes, we may need to modify the tokenizer slightly - tokenizerPromise.then((tokenizer) => { - // NOTE: We just remove the StripDecoder from the llama tokenizer - switch (tokenizer.constructor.name) { - case 'LlamaTokenizer': - case 'Grok1Tokenizer': - // tokenizer.decoder.decoders.at(-1).constructor.name === 'StripDecoder' - tokenizer.decoder.decoders.pop(); - break; - case 'T5Tokenizer': - tokenizer.decoder.addPrefixSpace = false; - break; - } - resolve(tokenizer); - }); - })); - } - - const tokenizer = await tokenizerPromise; - - const text = event.data.text; - - const start = performance.now(); - const token_ids = tokenizer.encode(text); - const end = performance.now(); - console.log('[INFO]', `Tokenized ${text.length} characters in ${(end - start).toFixed(2)}ms`) - - let decoded = token_ids.map(x => tokenizer.decode([x])); - - let margins = []; - - // Minor post-processing for visualization purposes - switch (tokenizer.constructor.name) { - case 'BertTokenizer': - margins = decoded.map((x, i) => i === 0 || x.startsWith('##') ? 0 : 8); - decoded = decoded.map(x => x.replace('##', '')); - break; - case 'T5Tokenizer': - if (decoded.length > 0 && decoded.length !== ' ') { - decoded[0] = decoded[0].replace(/^ /, ''); - } - break; - } - - // Send the output back to the main thread - self.postMessage({ - token_ids, decoded, margins - }); -}); \ No newline at end of file diff --git a/examples/tokenizer-playground/tailwind.config.js b/examples/tokenizer-playground/tailwind.config.js deleted file mode 100644 index d37737fc0..000000000 --- a/examples/tokenizer-playground/tailwind.config.js +++ /dev/null @@ -1,12 +0,0 @@ -/** @type {import('tailwindcss').Config} */ -export default { - content: [ - "./index.html", - "./src/**/*.{js,ts,jsx,tsx}", - ], - theme: { - extend: {}, - }, - plugins: [], -} - diff --git a/examples/tokenizer-playground/vite.config.js b/examples/tokenizer-playground/vite.config.js deleted file mode 100644 index 5a33944a9..000000000 --- a/examples/tokenizer-playground/vite.config.js +++ /dev/null @@ -1,7 +0,0 @@ -import { defineConfig } from 'vite' -import react from '@vitejs/plugin-react' - -// https://vitejs.dev/config/ -export default defineConfig({ - plugins: [react()], -}) From 98958ff9119576ef3bc54e39f74df146137825c3 Mon Sep 17 00:00:00 2001 From: Joshua Lochner Date: Mon, 23 Dec 2024 14:16:04 +0000 Subject: [PATCH 06/23] Move node audio processing demo --- examples/node-audio-processing/index.js | 36 --------------------- examples/node-audio-processing/package.json | 17 ---------- 2 files changed, 53 deletions(-) delete mode 100644 examples/node-audio-processing/index.js delete mode 100644 examples/node-audio-processing/package.json diff --git a/examples/node-audio-processing/index.js b/examples/node-audio-processing/index.js deleted file mode 100644 index bac47156b..000000000 --- a/examples/node-audio-processing/index.js +++ /dev/null @@ -1,36 +0,0 @@ -import { pipeline } from '@xenova/transformers'; -import wavefile from 'wavefile'; - -// Load model -let transcriber = await pipeline('automatic-speech-recognition', 'Xenova/whisper-tiny.en'); - -// Load audio data -let url = 'https://huggingface.co/datasets/Xenova/transformers.js-docs/resolve/main/jfk.wav'; -let buffer = Buffer.from(await fetch(url).then(x => x.arrayBuffer())) - -// Read .wav file and convert it to required format -let wav = new wavefile.WaveFile(buffer); -wav.toBitDepth('32f'); // Pipeline expects input as a Float32Array -wav.toSampleRate(16000); // Whisper expects audio with a sampling rate of 16000 -let audioData = wav.getSamples(); -if (Array.isArray(audioData)) { - if (audioData.length > 1) { - const SCALING_FACTOR = Math.sqrt(2); - - // Merge channels (into first channel to save memory) - for (let i = 0; i < audioData[0].length; ++i) { - audioData[0][i] = SCALING_FACTOR * (audioData[0][i] + audioData[1][i]) / 2; - } - } - - // Select first channel - audioData = audioData[0]; -} - -// Run model -let start = performance.now(); -let output = await transcriber(audioData); -let end = performance.now(); -console.log(`Execution duration: ${(end - start) / 1000} seconds`); -console.log(output); -// { text: ' And so my fellow Americans ask not what your country can do for you, ask what you can do for your country.' } diff --git a/examples/node-audio-processing/package.json b/examples/node-audio-processing/package.json deleted file mode 100644 index 212b56b54..000000000 --- a/examples/node-audio-processing/package.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "name": "audio-processing", - "version": "1.0.0", - "description": "", - "main": "index.js", - "type": "module", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "keywords": [], - "author": "", - "license": "ISC", - "dependencies": { - "@xenova/transformers": "^2.2.0", - "wavefile": "^11.0.0" - } -} From ac5b758ffbfd60230513991063d55d041117c9e4 Mon Sep 17 00:00:00 2001 From: Joshua Lochner Date: Mon, 23 Dec 2024 14:17:23 +0000 Subject: [PATCH 07/23] Move remove background web demo --- examples/remove-background-client/.gitignore | 24 - examples/remove-background-client/index.html | 33 - examples/remove-background-client/main.js | 112 -- .../package-lock.json | 1466 ----------------- .../remove-background-client/package.json | 17 - examples/remove-background-client/style.css | 83 - .../remove-background-client/vite.config.js | 6 - 7 files changed, 1741 deletions(-) delete mode 100644 examples/remove-background-client/.gitignore delete mode 100644 examples/remove-background-client/index.html delete mode 100644 examples/remove-background-client/main.js delete mode 100644 examples/remove-background-client/package-lock.json delete mode 100644 examples/remove-background-client/package.json delete mode 100644 examples/remove-background-client/style.css delete mode 100644 examples/remove-background-client/vite.config.js diff --git a/examples/remove-background-client/.gitignore b/examples/remove-background-client/.gitignore deleted file mode 100644 index a547bf36d..000000000 --- a/examples/remove-background-client/.gitignore +++ /dev/null @@ -1,24 +0,0 @@ -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -pnpm-debug.log* -lerna-debug.log* - -node_modules -dist -dist-ssr -*.local - -# Editor directories and files -.vscode/* -!.vscode/extensions.json -.idea -.DS_Store -*.suo -*.ntvs* -*.njsproj -*.sln -*.sw? diff --git a/examples/remove-background-client/index.html b/examples/remove-background-client/index.html deleted file mode 100644 index a85cef65f..000000000 --- a/examples/remove-background-client/index.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - Transformers.js - Background Removal - - - -

Background Removal w/ 🤗 Transformers.js -

-

Runs locally in your browser, powered by the RMBG V1.4 model from BRIA AI -

-
- -
- - - - - - - \ No newline at end of file diff --git a/examples/remove-background-client/main.js b/examples/remove-background-client/main.js deleted file mode 100644 index 31eb7080e..000000000 --- a/examples/remove-background-client/main.js +++ /dev/null @@ -1,112 +0,0 @@ -import './style.css'; - -import { AutoModel, AutoProcessor, env, RawImage } from '@xenova/transformers'; - -// Since we will download the model from the Hugging Face Hub, we can skip the local model check -env.allowLocalModels = false; - -// Proxy the WASM backend to prevent the UI from freezing -env.backends.onnx.wasm.proxy = true; - -// Constants -const EXAMPLE_URL = 'https://images.pexels.com/photos/5965592/pexels-photo-5965592.jpeg?auto=compress&cs=tinysrgb&w=1024'; - -// Reference the elements that we will need -const status = document.getElementById('status'); -const fileUpload = document.getElementById('upload'); -const imageContainer = document.getElementById('container'); -const example = document.getElementById('example'); - -// Load model and processor -status.textContent = 'Loading model...'; - -const model = await AutoModel.from_pretrained('briaai/RMBG-1.4', { - // Do not require config.json to be present in the repository - config: { model_type: 'custom' }, -}); - -const processor = await AutoProcessor.from_pretrained('briaai/RMBG-1.4', { - // Do not require config.json to be present in the repository - config: { - do_normalize: true, - do_pad: false, - do_rescale: true, - do_resize: true, - image_mean: [0.5, 0.5, 0.5], - feature_extractor_type: "ImageFeatureExtractor", - image_std: [1, 1, 1], - resample: 2, - rescale_factor: 0.00392156862745098, - size: { width: 1024, height: 1024 }, - } -}); - -status.textContent = 'Ready'; - -example.addEventListener('click', (e) => { - e.preventDefault(); - predict(EXAMPLE_URL); -}); - -fileUpload.addEventListener('change', function (e) { - const file = e.target.files[0]; - if (!file) { - return; - } - - const reader = new FileReader(); - - // Set up a callback when the file is loaded - reader.onload = e2 => predict(e2.target.result); - - reader.readAsDataURL(file); -}); - -// Predict foreground of the given image -async function predict(url) { - // Read image - const image = await RawImage.fromURL(url); - - // Update UI - imageContainer.innerHTML = ''; - imageContainer.style.backgroundImage = `url(${url})`; - - // Set container width and height depending on the image aspect ratio - const ar = image.width / image.height; - const [cw, ch] = (ar > 720 / 480) ? [720, 720 / ar] : [480 * ar, 480]; - imageContainer.style.width = `${cw}px`; - imageContainer.style.height = `${ch}px`; - - status.textContent = 'Analysing...'; - - // Preprocess image - const { pixel_values } = await processor(image); - - // Predict alpha matte - const { output } = await model({ input: pixel_values }); - - // Resize mask back to original size - const mask = await RawImage.fromTensor(output[0].mul(255).to('uint8')).resize(image.width, image.height); - - // Create new canvas - const canvas = document.createElement('canvas'); - canvas.width = image.width; - canvas.height = image.height; - const ctx = canvas.getContext('2d'); - - // Draw original image output to canvas - ctx.drawImage(image.toCanvas(), 0, 0); - - // Update alpha channel - const pixelData = ctx.getImageData(0, 0, image.width, image.height); - for (let i = 0; i < mask.data.length; ++i) { - pixelData.data[4 * i + 3] = mask.data[i]; - } - ctx.putImageData(pixelData, 0, 0); - - // Update UI - imageContainer.append(canvas); - imageContainer.style.removeProperty('background-image'); - imageContainer.style.background = `url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAGUExURb+/v////5nD/3QAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAUSURBVBjTYwABQSCglEENMxgYGAAynwRB8BEAgQAAAABJRU5ErkJggg==")`; - status.textContent = 'Done!'; -} diff --git a/examples/remove-background-client/package-lock.json b/examples/remove-background-client/package-lock.json deleted file mode 100644 index 95fc5ed41..000000000 --- a/examples/remove-background-client/package-lock.json +++ /dev/null @@ -1,1466 +0,0 @@ -{ - "name": "remove-background-client", - "version": "0.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "remove-background-client", - "version": "0.0.0", - "dependencies": { - "@xenova/transformers": "^2.15.0" - }, - "devDependencies": { - "vite": "^5.0.13" - } - }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz", - "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz", - "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz", - "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz", - "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz", - "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz", - "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz", - "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz", - "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz", - "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz", - "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz", - "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz", - "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz", - "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz", - "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz", - "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz", - "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz", - "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz", - "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz", - "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz", - "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz", - "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz", - "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz", - "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@huggingface/jinja": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@huggingface/jinja/-/jinja-0.1.2.tgz", - "integrity": "sha512-x5mpbfJt1nKmVep5WNP5VjNsjWApWNj8pPYI+uYMkBWH9bWUJmQmHt2lbf0VCoQd54Oq3XuFEh/UyoVh7rPxmg==", - "engines": { - "node": ">=18" - } - }, - "node_modules/@protobufjs/aspromise": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", - "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" - }, - "node_modules/@protobufjs/base64": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", - "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" - }, - "node_modules/@protobufjs/codegen": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", - "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" - }, - "node_modules/@protobufjs/eventemitter": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", - "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" - }, - "node_modules/@protobufjs/fetch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", - "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", - "dependencies": { - "@protobufjs/aspromise": "^1.1.1", - "@protobufjs/inquire": "^1.1.0" - } - }, - "node_modules/@protobufjs/float": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", - "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" - }, - "node_modules/@protobufjs/inquire": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", - "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" - }, - "node_modules/@protobufjs/path": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", - "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" - }, - "node_modules/@protobufjs/pool": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", - "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" - }, - "node_modules/@protobufjs/utf8": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", - "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" - }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.6.tgz", - "integrity": "sha512-MVNXSSYN6QXOulbHpLMKYi60ppyO13W9my1qogeiAqtjb2yR4LSmfU2+POvDkLzhjYLXz9Rf9+9a3zFHW1Lecg==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.9.6.tgz", - "integrity": "sha512-T14aNLpqJ5wzKNf5jEDpv5zgyIqcpn1MlwCrUXLrwoADr2RkWA0vOWP4XxbO9aiO3dvMCQICZdKeDrFl7UMClw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.9.6.tgz", - "integrity": "sha512-CqNNAyhRkTbo8VVZ5R85X73H3R5NX9ONnKbXuHisGWC0qRbTTxnF1U4V9NafzJbgGM0sHZpdO83pLPzq8uOZFw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.9.6.tgz", - "integrity": "sha512-zRDtdJuRvA1dc9Mp6BWYqAsU5oeLixdfUvkTHuiYOHwqYuQ4YgSmi6+/lPvSsqc/I0Omw3DdICx4Tfacdzmhog==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.9.6.tgz", - "integrity": "sha512-oNk8YXDDnNyG4qlNb6is1ojTOGL/tRhbbKeE/YuccItzerEZT68Z9gHrY3ROh7axDc974+zYAPxK5SH0j/G+QQ==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.9.6.tgz", - "integrity": "sha512-Z3O60yxPtuCYobrtzjo0wlmvDdx2qZfeAWTyfOjEDqd08kthDKexLpV97KfAeUXPosENKd8uyJMRDfFMxcYkDQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.9.6.tgz", - "integrity": "sha512-gpiG0qQJNdYEVad+1iAsGAbgAnZ8j07FapmnIAQgODKcOTjLEWM9sRb+MbQyVsYCnA0Im6M6QIq6ax7liws6eQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.9.6.tgz", - "integrity": "sha512-+uCOcvVmFUYvVDr27aiyun9WgZk0tXe7ThuzoUTAukZJOwS5MrGbmSlNOhx1j80GdpqbOty05XqSl5w4dQvcOA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.9.6.tgz", - "integrity": "sha512-HUNqM32dGzfBKuaDUBqFB7tP6VMN74eLZ33Q9Y1TBqRDn+qDonkAUyKWwF9BR9unV7QUzffLnz9GrnKvMqC/fw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.9.6.tgz", - "integrity": "sha512-ch7M+9Tr5R4FK40FHQk8VnML0Szi2KRujUgHXd/HjuH9ifH72GUmw6lStZBo3c3GB82vHa0ZoUfjfcM7JiiMrQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.9.6.tgz", - "integrity": "sha512-VD6qnR99dhmTQ1mJhIzXsRcTBvTjbfbGGwKAHcu+52cVl15AC/kplkhxzW/uT0Xl62Y/meBKDZvoJSJN+vTeGA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.9.6.tgz", - "integrity": "sha512-J9AFDq/xiRI58eR2NIDfyVmTYGyIZmRcvcAoJ48oDld/NTR8wyiPUu2X/v1navJ+N/FGg68LEbX3Ejd6l8B7MQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.9.6.tgz", - "integrity": "sha512-jqzNLhNDvIZOrt69Ce4UjGRpXJBzhUBzawMwnaDAwyHriki3XollsewxWzOzz+4yOFDkuJHtTsZFwMxhYJWmLQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@types/estree": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", - "dev": true - }, - "node_modules/@types/long": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", - "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==" - }, - "node_modules/@types/node": { - "version": "20.11.16", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.16.tgz", - "integrity": "sha512-gKb0enTmRCzXSSUJDq6/sPcqrfCv2mkkG6Jt/clpn5eiCbKTY+SgZUxo+p8ZKMof5dCp9vHQUAB7wOUTod22wQ==", - "dependencies": { - "undici-types": "~5.26.4" - } - }, - "node_modules/@xenova/transformers": { - "version": "2.15.0", - "resolved": "https://registry.npmjs.org/@xenova/transformers/-/transformers-2.15.0.tgz", - "integrity": "sha512-e8pt+yLGSmwZnQR5Q/fq1NJ6fPr3+WKqxh/jF2PzfXFZ2KZsDdFQeCVlk8AnOADP4Aimlqy+Wp/xuws96/pX9A==", - "dependencies": { - "@huggingface/jinja": "^0.1.0", - "onnxruntime-web": "1.14.0", - "sharp": "^0.32.0" - }, - "optionalDependencies": { - "onnxruntime-node": "1.14.0" - } - }, - "node_modules/b4a": { - "version": "1.6.6", - "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.6.tgz", - "integrity": "sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==" - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" - }, - "node_modules/color": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", - "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", - "dependencies": { - "color-convert": "^2.0.1", - "color-string": "^1.9.0" - }, - "engines": { - "node": ">=12.5.0" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/color-string": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", - "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", - "dependencies": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "node_modules/decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "dependencies": { - "mimic-response": "^3.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/detect-libc": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", - "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/esbuild": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz", - "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==", - "dev": true, - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.19.12", - "@esbuild/android-arm": "0.19.12", - "@esbuild/android-arm64": "0.19.12", - "@esbuild/android-x64": "0.19.12", - "@esbuild/darwin-arm64": "0.19.12", - "@esbuild/darwin-x64": "0.19.12", - "@esbuild/freebsd-arm64": "0.19.12", - "@esbuild/freebsd-x64": "0.19.12", - "@esbuild/linux-arm": "0.19.12", - "@esbuild/linux-arm64": "0.19.12", - "@esbuild/linux-ia32": "0.19.12", - "@esbuild/linux-loong64": "0.19.12", - "@esbuild/linux-mips64el": "0.19.12", - "@esbuild/linux-ppc64": "0.19.12", - "@esbuild/linux-riscv64": "0.19.12", - "@esbuild/linux-s390x": "0.19.12", - "@esbuild/linux-x64": "0.19.12", - "@esbuild/netbsd-x64": "0.19.12", - "@esbuild/openbsd-x64": "0.19.12", - "@esbuild/sunos-x64": "0.19.12", - "@esbuild/win32-arm64": "0.19.12", - "@esbuild/win32-ia32": "0.19.12", - "@esbuild/win32-x64": "0.19.12" - } - }, - "node_modules/expand-template": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", - "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/fast-fifo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", - "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==" - }, - "node_modules/flatbuffers": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/flatbuffers/-/flatbuffers-1.12.0.tgz", - "integrity": "sha512-c7CZADjRcl6j0PlvFy0ZqXQ67qSEZfrVPynmnL+2zPc+NtMvrF8Y0QceMo7QqnSPc7+uWjUIAbvCQ5WIKlMVdQ==" - }, - "node_modules/fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/github-from-package": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", - "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==" - }, - "node_modules/guid-typescript": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/guid-typescript/-/guid-typescript-1.0.9.tgz", - "integrity": "sha512-Y8T4vYhEfwJOTbouREvG+3XDsjr8E3kIr7uf+JZ0BYloFsttiHU0WfvANVsR7TxNUJa/WpCnw/Ino/p+DeBhBQ==" - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" - }, - "node_modules/is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" - }, - "node_modules/long": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", - "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" - }, - "node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/napi-build-utils": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", - "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==" - }, - "node_modules/node-abi": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.54.0.tgz", - "integrity": "sha512-p7eGEiQil0YUV3ItH4/tBb781L5impVmmx2E9FRKF7d18XXzp4PGT2tdYMFY6wQqgxD0IwNZOiSJ0/K0fSi/OA==", - "dependencies": { - "semver": "^7.3.5" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/node-addon-api": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz", - "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==" - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onnx-proto": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/onnx-proto/-/onnx-proto-4.0.4.tgz", - "integrity": "sha512-aldMOB3HRoo6q/phyB6QRQxSt895HNNw82BNyZ2CMh4bjeKv7g/c+VpAFtJuEMVfYLMbRx61hbuqnKceLeDcDA==", - "dependencies": { - "protobufjs": "^6.8.8" - } - }, - "node_modules/onnxruntime-common": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/onnxruntime-common/-/onnxruntime-common-1.14.0.tgz", - "integrity": "sha512-3LJpegM2iMNRX2wUmtYfeX/ytfOzNwAWKSq1HbRrKc9+uqG/FsEA0bbKZl1btQeZaXhC26l44NWpNUeXPII7Ew==" - }, - "node_modules/onnxruntime-node": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/onnxruntime-node/-/onnxruntime-node-1.14.0.tgz", - "integrity": "sha512-5ba7TWomIV/9b6NH/1x/8QEeowsb+jBEvFzU6z0T4mNsFwdPqXeFUM7uxC6QeSRkEbWu3qEB0VMjrvzN/0S9+w==", - "optional": true, - "os": [ - "win32", - "darwin", - "linux" - ], - "dependencies": { - "onnxruntime-common": "~1.14.0" - } - }, - "node_modules/onnxruntime-web": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/onnxruntime-web/-/onnxruntime-web-1.14.0.tgz", - "integrity": "sha512-Kcqf43UMfW8mCydVGcX9OMXI2VN17c0p6XvR7IPSZzBf/6lteBzXHvcEVWDPmCKuGombl997HgLqj91F11DzXw==", - "dependencies": { - "flatbuffers": "^1.12.0", - "guid-typescript": "^1.0.9", - "long": "^4.0.0", - "onnx-proto": "^4.0.4", - "onnxruntime-common": "~1.14.0", - "platform": "^1.3.6" - } - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "node_modules/platform": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.6.tgz", - "integrity": "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==" - }, - "node_modules/postcss": { - "version": "8.4.34", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.34.tgz", - "integrity": "sha512-4eLTO36woPSocqZ1zIrFD2K1v6wH7pY1uBh0JIM2KKfrVtGvPFiAku6aNOP0W1Wr9qwnaCsF0Z+CrVnryB2A8Q==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "nanoid": "^3.3.7", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/prebuild-install": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz", - "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==", - "dependencies": { - "detect-libc": "^2.0.0", - "expand-template": "^2.0.3", - "github-from-package": "0.0.0", - "minimist": "^1.2.3", - "mkdirp-classic": "^0.5.3", - "napi-build-utils": "^1.0.1", - "node-abi": "^3.3.0", - "pump": "^3.0.0", - "rc": "^1.2.7", - "simple-get": "^4.0.0", - "tar-fs": "^2.0.0", - "tunnel-agent": "^0.6.0" - }, - "bin": { - "prebuild-install": "bin.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/prebuild-install/node_modules/tar-fs": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", - "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", - "dependencies": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^2.1.4" - } - }, - "node_modules/prebuild-install/node_modules/tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/protobufjs": { - "version": "6.11.4", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.4.tgz", - "integrity": "sha512-5kQWPaJHi1WoCpjTGszzQ32PG2F4+wRY6BmAT4Vfw56Q2FZ4YZzK20xUYQH4YkfehY1e6QSICrJquM6xXZNcrw==", - "hasInstallScript": true, - "dependencies": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", - "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", - "@types/long": "^4.0.1", - "@types/node": ">=13.7.0", - "long": "^4.0.0" - }, - "bin": { - "pbjs": "bin/pbjs", - "pbts": "bin/pbts" - } - }, - "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/queue-tick": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", - "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==" - }, - "node_modules/rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "bin": { - "rc": "cli.js" - } - }, - "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/rollup": { - "version": "4.9.6", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.9.6.tgz", - "integrity": "sha512-05lzkCS2uASX0CiLFybYfVkwNbKZG5NFQ6Go0VWyogFTXXbR039UVsegViTntkk4OglHBdF54ccApXRRuXRbsg==", - "dev": true, - "dependencies": { - "@types/estree": "1.0.5" - }, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.9.6", - "@rollup/rollup-android-arm64": "4.9.6", - "@rollup/rollup-darwin-arm64": "4.9.6", - "@rollup/rollup-darwin-x64": "4.9.6", - "@rollup/rollup-linux-arm-gnueabihf": "4.9.6", - "@rollup/rollup-linux-arm64-gnu": "4.9.6", - "@rollup/rollup-linux-arm64-musl": "4.9.6", - "@rollup/rollup-linux-riscv64-gnu": "4.9.6", - "@rollup/rollup-linux-x64-gnu": "4.9.6", - "@rollup/rollup-linux-x64-musl": "4.9.6", - "@rollup/rollup-win32-arm64-msvc": "4.9.6", - "@rollup/rollup-win32-ia32-msvc": "4.9.6", - "@rollup/rollup-win32-x64-msvc": "4.9.6", - "fsevents": "~2.3.2" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/sharp": { - "version": "0.32.6", - "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.32.6.tgz", - "integrity": "sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==", - "hasInstallScript": true, - "dependencies": { - "color": "^4.2.3", - "detect-libc": "^2.0.2", - "node-addon-api": "^6.1.0", - "prebuild-install": "^7.1.1", - "semver": "^7.5.4", - "simple-get": "^4.0.1", - "tar-fs": "^3.0.4", - "tunnel-agent": "^0.6.0" - }, - "engines": { - "node": ">=14.15.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/simple-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/simple-get": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", - "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "decompress-response": "^6.0.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } - }, - "node_modules/simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", - "dependencies": { - "is-arrayish": "^0.3.1" - } - }, - "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/streamx": { - "version": "2.15.7", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.15.7.tgz", - "integrity": "sha512-NPEKS5+yjyo597eafGbKW5ujh7Sm6lDLHZQd/lRSz6S0VarpADBJItqfB4PnwpS+472oob1GX5cCY9vzfJpHUA==", - "dependencies": { - "fast-fifo": "^1.1.0", - "queue-tick": "^1.0.1" - } - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/tar-fs": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.4.tgz", - "integrity": "sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==", - "dependencies": { - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^3.1.5" - } - }, - "node_modules/tar-stream": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", - "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", - "dependencies": { - "b4a": "^1.6.4", - "fast-fifo": "^1.2.0", - "streamx": "^2.15.0" - } - }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "node_modules/vite": { - "version": "5.0.13", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.0.13.tgz", - "integrity": "sha512-/9ovhv2M2dGTuA+dY93B9trfyWMDRQw2jdVBhHNP6wr0oF34wG2i/N55801iZIpgUpnHDm4F/FabGQLyc+eOgg==", - "dev": true, - "dependencies": { - "esbuild": "^0.19.3", - "postcss": "^8.4.32", - "rollup": "^4.2.0" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^18.0.0 || >=20.0.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - }, - "peerDependencies": { - "@types/node": "^18.0.0 || >=20.0.0", - "less": "*", - "lightningcss": "^1.21.0", - "sass": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.4.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - } - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - } - } -} diff --git a/examples/remove-background-client/package.json b/examples/remove-background-client/package.json deleted file mode 100644 index b5669082d..000000000 --- a/examples/remove-background-client/package.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "name": "remove-background-client", - "private": true, - "version": "0.0.0", - "type": "module", - "scripts": { - "dev": "vite", - "build": "vite build", - "preview": "vite preview" - }, - "devDependencies": { - "vite": "^5.0.13" - }, - "dependencies": { - "@xenova/transformers": "^2.15.0" - } -} diff --git a/examples/remove-background-client/style.css b/examples/remove-background-client/style.css deleted file mode 100644 index f3016c246..000000000 --- a/examples/remove-background-client/style.css +++ /dev/null @@ -1,83 +0,0 @@ -* { - box-sizing: border-box; - padding: 0; - margin: 0; - font-family: sans-serif; -} - -html, -body { - height: 100%; -} - -body { - padding: 16px 32px; -} - -body, -#container, -#upload-button { - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; -} - -h1, -h4 { - text-align: center; -} - -h4 { - margin-top: 0.5rem; -} - -#container { - position: relative; - width: 720px; - height: 480px; - max-width: 100%; - max-height: 100%; - border: 2px dashed #D1D5DB; - border-radius: 0.75rem; - overflow: hidden; - margin-top: 1rem; - background-size: 100% 100%; - background-position: center; - background-repeat: no-repeat; -} - -#upload-button { - gap: 0.4rem; - font-size: 18px; - cursor: pointer; -} - -#upload { - display: none; -} - -svg { - pointer-events: none; -} - -#example { - font-size: 14px; - text-decoration: underline; - cursor: pointer; -} - -#example:hover { - color: #2563EB; -} - -canvas { - position: absolute; - width: 100%; - height: 100%; -} - -#status { - min-height: 16px; - margin: 8px 0; -} \ No newline at end of file diff --git a/examples/remove-background-client/vite.config.js b/examples/remove-background-client/vite.config.js deleted file mode 100644 index 6c32f52df..000000000 --- a/examples/remove-background-client/vite.config.js +++ /dev/null @@ -1,6 +0,0 @@ -import { defineConfig } from 'vite'; -export default defineConfig({ - build: { - target: 'esnext' - } -}); From b3ac89effd25bb2c084b8b14af9b2fea2fe53046 Mon Sep 17 00:00:00 2001 From: Joshua Lochner Date: Mon, 23 Dec 2024 14:17:49 +0000 Subject: [PATCH 08/23] Move webgpu whisper demo --- examples/webgpu-whisper/.eslintrc.cjs | 21 -- examples/webgpu-whisper/.gitignore | 24 -- examples/webgpu-whisper/README.md | 8 - examples/webgpu-whisper/index.html | 13 - examples/webgpu-whisper/package.json | 30 -- examples/webgpu-whisper/postcss.config.js | 6 - examples/webgpu-whisper/public/banner.png | Bin 274226 -> 0 bytes examples/webgpu-whisper/public/logo.png | Bin 320697 -> 0 bytes examples/webgpu-whisper/src/App.jsx | 257 ------------------ .../src/components/AudioVisualizer.jsx | 58 ---- .../src/components/LanguageSelector.jsx | 133 --------- .../src/components/Progress.jsx | 15 - examples/webgpu-whisper/src/index.css | 32 --- examples/webgpu-whisper/src/main.jsx | 10 - examples/webgpu-whisper/src/worker.js | 134 --------- examples/webgpu-whisper/tailwind.config.js | 12 - examples/webgpu-whisper/vite.config.js | 7 - 17 files changed, 760 deletions(-) delete mode 100644 examples/webgpu-whisper/.eslintrc.cjs delete mode 100644 examples/webgpu-whisper/.gitignore delete mode 100644 examples/webgpu-whisper/README.md delete mode 100644 examples/webgpu-whisper/index.html delete mode 100644 examples/webgpu-whisper/package.json delete mode 100644 examples/webgpu-whisper/postcss.config.js delete mode 100644 examples/webgpu-whisper/public/banner.png delete mode 100644 examples/webgpu-whisper/public/logo.png delete mode 100644 examples/webgpu-whisper/src/App.jsx delete mode 100644 examples/webgpu-whisper/src/components/AudioVisualizer.jsx delete mode 100644 examples/webgpu-whisper/src/components/LanguageSelector.jsx delete mode 100644 examples/webgpu-whisper/src/components/Progress.jsx delete mode 100644 examples/webgpu-whisper/src/index.css delete mode 100644 examples/webgpu-whisper/src/main.jsx delete mode 100644 examples/webgpu-whisper/src/worker.js delete mode 100644 examples/webgpu-whisper/tailwind.config.js delete mode 100644 examples/webgpu-whisper/vite.config.js diff --git a/examples/webgpu-whisper/.eslintrc.cjs b/examples/webgpu-whisper/.eslintrc.cjs deleted file mode 100644 index ce8fffe57..000000000 --- a/examples/webgpu-whisper/.eslintrc.cjs +++ /dev/null @@ -1,21 +0,0 @@ -module.exports = { - root: true, - env: { browser: true, es2020: true }, - extends: [ - 'eslint:recommended', - 'plugin:react/recommended', - 'plugin:react/jsx-runtime', - 'plugin:react-hooks/recommended', - ], - ignorePatterns: ['dist', '.eslintrc.cjs'], - parserOptions: { ecmaVersion: 'latest', sourceType: 'module' }, - settings: { react: { version: '18.2' } }, - plugins: ['react-refresh'], - rules: { - 'react-refresh/only-export-components': [ - 'warn', - { allowConstantExport: true }, - ], - 'react/prop-types': 'off' - }, -} diff --git a/examples/webgpu-whisper/.gitignore b/examples/webgpu-whisper/.gitignore deleted file mode 100644 index a547bf36d..000000000 --- a/examples/webgpu-whisper/.gitignore +++ /dev/null @@ -1,24 +0,0 @@ -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -pnpm-debug.log* -lerna-debug.log* - -node_modules -dist -dist-ssr -*.local - -# Editor directories and files -.vscode/* -!.vscode/extensions.json -.idea -.DS_Store -*.suo -*.ntvs* -*.njsproj -*.sln -*.sw? diff --git a/examples/webgpu-whisper/README.md b/examples/webgpu-whisper/README.md deleted file mode 100644 index f768e33fc..000000000 --- a/examples/webgpu-whisper/README.md +++ /dev/null @@ -1,8 +0,0 @@ -# React + Vite - -This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. - -Currently, two official plugins are available: - -- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh -- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh diff --git a/examples/webgpu-whisper/index.html b/examples/webgpu-whisper/index.html deleted file mode 100644 index da24b23cb..000000000 --- a/examples/webgpu-whisper/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - Whisper WebGPU - - -
- - - diff --git a/examples/webgpu-whisper/package.json b/examples/webgpu-whisper/package.json deleted file mode 100644 index 325990590..000000000 --- a/examples/webgpu-whisper/package.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "name": "webgpu-whisper", - "private": true, - "version": "0.0.0", - "type": "module", - "scripts": { - "dev": "vite", - "build": "vite build", - "lint": "eslint . --ext js,jsx --report-unused-disable-directives --max-warnings 0", - "preview": "vite preview" - }, - "dependencies": { - "@huggingface/transformers": "^3.0.0-alpha.18", - "react": "^18.2.0", - "react-dom": "^18.2.0" - }, - "devDependencies": { - "@types/react": "^18.2.43", - "@types/react-dom": "^18.2.17", - "@vitejs/plugin-react": "^4.2.1", - "autoprefixer": "^10.4.19", - "eslint": "^8.55.0", - "eslint-plugin-react": "^7.33.2", - "eslint-plugin-react-hooks": "^4.6.0", - "eslint-plugin-react-refresh": "^0.4.5", - "postcss": "^8.4.38", - "tailwindcss": "^3.4.3", - "vite": "^5.2.11" - } -} diff --git a/examples/webgpu-whisper/postcss.config.js b/examples/webgpu-whisper/postcss.config.js deleted file mode 100644 index 2e7af2b7f..000000000 --- a/examples/webgpu-whisper/postcss.config.js +++ /dev/null @@ -1,6 +0,0 @@ -export default { - plugins: { - tailwindcss: {}, - autoprefixer: {}, - }, -} diff --git a/examples/webgpu-whisper/public/banner.png b/examples/webgpu-whisper/public/banner.png deleted file mode 100644 index b9b0e75f476a9dba2d8941a0606e98472706ae69..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 274226 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

(Vwkw$}|E;7;vc~IK9U~oh%tKvk3n) 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%0Df%KOz8sHl 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 z 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 diff --git a/examples/webgpu-whisper/public/logo.png b/examples/webgpu-whisper/public/logo.png deleted file mode 100644 index fc3b13f6b832882be28e1a6ab0d8dfca88e85d8a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 320697 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�Jm4MdA#9e0($3@% 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

    $#DuUN7>_xy9$Q%86 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%0AZ#4*M=Y010N|09qmK#{C_%?O4TC))lYu- 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∨@m1HBIEagQU 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 G#s2^WEHBvr diff --git a/examples/webgpu-whisper/src/App.jsx b/examples/webgpu-whisper/src/App.jsx deleted file mode 100644 index 5f74ecba8..000000000 --- a/examples/webgpu-whisper/src/App.jsx +++ /dev/null @@ -1,257 +0,0 @@ -import { useEffect, useState, useRef } from 'react'; - -import { AudioVisualizer } from './components/AudioVisualizer'; -import Progress from './components/Progress'; -import { LanguageSelector } from './components/LanguageSelector'; - -const IS_WEBGPU_AVAILABLE = !!navigator.gpu; - -const WHISPER_SAMPLING_RATE = 16_000; -const MAX_AUDIO_LENGTH = 30; // seconds -const MAX_SAMPLES = WHISPER_SAMPLING_RATE * MAX_AUDIO_LENGTH; - -function App() { - - // Create a reference to the worker object. - const worker = useRef(null); - - const recorderRef = useRef(null); - - // Model loading and progress - const [status, setStatus] = useState(null); - const [loadingMessage, setLoadingMessage] = useState(''); - const [progressItems, setProgressItems] = useState([]); - - // Inputs and outputs - const [text, setText] = useState(''); - const [tps, setTps] = useState(null); - const [language, setLanguage] = useState('en'); - - // Processing - const [recording, setRecording] = useState(false); - const [isProcessing, setIsProcessing] = useState(false); - const [chunks, setChunks] = useState([]); - const [stream, setStream] = useState(null); - const audioContextRef = useRef(null); - - // We use the `useEffect` hook to setup the worker as soon as the `App` component is mounted. - useEffect(() => { - if (!worker.current) { - // Create the worker if it does not yet exist. - worker.current = new Worker(new URL('./worker.js', import.meta.url), { - type: 'module' - }); - } - - // Create a callback function for messages from the worker thread. - const onMessageReceived = (e) => { - switch (e.data.status) { - case 'loading': - // Model file start load: add a new progress item to the list. - setStatus('loading'); - setLoadingMessage(e.data.data); - break; - - case 'initiate': - setProgressItems(prev => [...prev, e.data]); - break; - - case 'progress': - // Model file progress: update one of the progress items. - setProgressItems( - prev => prev.map(item => { - if (item.file === e.data.file) { - return { ...item, ...e.data } - } - return item; - }) - ); - break; - - case 'done': - // Model file loaded: remove the progress item from the list. - setProgressItems( - prev => prev.filter(item => item.file !== e.data.file) - ); - break; - - case 'ready': - // Pipeline ready: the worker is ready to accept messages. - setStatus('ready'); - recorderRef.current?.start(); - break; - - case 'start': { - // Start generation - setIsProcessing(true); - - // Request new data from the recorder - recorderRef.current?.requestData(); - } - break; - - case 'update': { - // Generation update: update the output text. - const { tps } = e.data; - setTps(tps); - } - break; - - case 'complete': - // Generation complete: re-enable the "Generate" button - setIsProcessing(false); - setText(e.data.output); - break; - } - }; - - // Attach the callback function as an event listener. - worker.current.addEventListener('message', onMessageReceived); - - // Define a cleanup function for when the component is unmounted. - return () => { - worker.current.removeEventListener('message', onMessageReceived); - }; - }, []); - - useEffect(() => { - if (recorderRef.current) return; // Already set - - if (navigator.mediaDevices.getUserMedia) { - navigator.mediaDevices.getUserMedia({ audio: true }) - .then(stream => { - setStream(stream); - - recorderRef.current = new MediaRecorder(stream); - audioContextRef.current = new AudioContext({ sampleRate: WHISPER_SAMPLING_RATE }); - - recorderRef.current.onstart = () => { - setRecording(true); - setChunks([]); - } - recorderRef.current.ondataavailable = (e) => { - if (e.data.size > 0) { - setChunks((prev) => [...prev, e.data]); - } else { - // Empty chunk received, so we request new data after a short timeout - setTimeout(() => { - recorderRef.current.requestData(); - }, 25); - } - }; - - recorderRef.current.onstop = () => { - setRecording(false); - }; - - }) - .catch(err => console.error("The following error occurred: ", err)); - } else { - console.error("getUserMedia not supported on your browser!"); - } - - return () => { - recorderRef.current?.stop(); - recorderRef.current = null; - }; - }, []); - - useEffect(() => { - if (!recorderRef.current) return; - if (!recording) return; - if (isProcessing) return; - if (status !== 'ready') return; - - if (chunks.length > 0) { - // Generate from data - const blob = new Blob(chunks, { type: recorderRef.current.mimeType }); - - const fileReader = new FileReader(); - - fileReader.onloadend = async () => { - const arrayBuffer = fileReader.result; - const decoded = await audioContextRef.current.decodeAudioData(arrayBuffer); - let audio = decoded.getChannelData(0); - if (audio.length > MAX_SAMPLES) { // Get last MAX_SAMPLES - audio = audio.slice(-MAX_SAMPLES); - } - - worker.current.postMessage({ type: 'generate', data: { audio, language } }); - } - fileReader.readAsArrayBuffer(blob); - } else { - recorderRef.current?.requestData(); - } - }, [status, recording, isProcessing, chunks, language]); - - return ( - IS_WEBGPU_AVAILABLE - ? () - : (
    WebGPU is not supported
    by this browser :(
    ) - ) -} - -export default App diff --git a/examples/webgpu-whisper/src/components/AudioVisualizer.jsx b/examples/webgpu-whisper/src/components/AudioVisualizer.jsx deleted file mode 100644 index 5935a3e76..000000000 --- a/examples/webgpu-whisper/src/components/AudioVisualizer.jsx +++ /dev/null @@ -1,58 +0,0 @@ -import { useRef, useCallback, useEffect } from "react"; - -export function AudioVisualizer({ stream, ...props }) { - const canvasRef = useRef(null); - - const visualize = useCallback((stream) => { - const audioContext = new (window.AudioContext || window.webkitAudioContext)(); - const source = audioContext.createMediaStreamSource(stream); - const analyser = audioContext.createAnalyser(); - analyser.fftSize = 2048; - source.connect(analyser); - - const canvas = canvasRef.current; - const canvasCtx = canvas.getContext('2d'); - const bufferLength = analyser.frequencyBinCount; - const dataArray = new Uint8Array(bufferLength); - - const drawVisual = () => { - requestAnimationFrame(drawVisual); - analyser.getByteTimeDomainData(dataArray); - - canvasCtx.fillStyle = 'rgb(255, 255, 255)'; - canvasCtx.fillRect(0, 0, canvas.width, canvas.height); - - canvasCtx.lineWidth = 2; - canvasCtx.strokeStyle = 'rgb(0, 0, 0)'; - canvasCtx.beginPath(); - - const sliceWidth = canvas.width * 1.0 / bufferLength; - - let x = 0; - for (let i = 0; i < bufferLength; ++i) { - const v = dataArray[i] / 128.0; - const y = v * canvas.height / 2; - - if (i === 0) { - canvasCtx.moveTo(x, y); - } else { - canvasCtx.lineTo(x, y); - } - - x += sliceWidth; - } - - canvasCtx.lineTo(canvas.width, canvas.height / 2); - canvasCtx.stroke(); - }; - - drawVisual(); - }, []); - - useEffect(() => { - stream && visualize(stream); - }, [visualize, stream]); - return ( - - ) -} diff --git a/examples/webgpu-whisper/src/components/LanguageSelector.jsx b/examples/webgpu-whisper/src/components/LanguageSelector.jsx deleted file mode 100644 index 9383d640e..000000000 --- a/examples/webgpu-whisper/src/components/LanguageSelector.jsx +++ /dev/null @@ -1,133 +0,0 @@ - -function titleCase(str) { - str = str.toLowerCase(); - return (str.match(/\w+.?/g) || []) - .map((word) => { - return word.charAt(0).toUpperCase() + word.slice(1); - }) - .join(""); -} - -// List of supported languages: -// https://help.openai.com/en/articles/7031512-whisper-api-faq -// https://github.com/openai/whisper/blob/248b6cb124225dd263bb9bd32d060b6517e067f8/whisper/tokenizer.py#L79 -const LANGUAGES = { - en: "english", - zh: "chinese", - de: "german", - es: "spanish/castilian", - ru: "russian", - ko: "korean", - fr: "french", - ja: "japanese", - pt: "portuguese", - tr: "turkish", - pl: "polish", - ca: "catalan/valencian", - nl: "dutch/flemish", - ar: "arabic", - sv: "swedish", - it: "italian", - id: "indonesian", - hi: "hindi", - fi: "finnish", - vi: "vietnamese", - he: "hebrew", - uk: "ukrainian", - el: "greek", - ms: "malay", - cs: "czech", - ro: "romanian/moldavian/moldovan", - da: "danish", - hu: "hungarian", - ta: "tamil", - no: "norwegian", - th: "thai", - ur: "urdu", - hr: "croatian", - bg: "bulgarian", - lt: "lithuanian", - la: "latin", - mi: "maori", - ml: "malayalam", - cy: "welsh", - sk: "slovak", - te: "telugu", - fa: "persian", - lv: "latvian", - bn: "bengali", - sr: "serbian", - az: "azerbaijani", - sl: "slovenian", - kn: "kannada", - et: "estonian", - mk: "macedonian", - br: "breton", - eu: "basque", - is: "icelandic", - hy: "armenian", - ne: "nepali", - mn: "mongolian", - bs: "bosnian", - kk: "kazakh", - sq: "albanian", - sw: "swahili", - gl: "galician", - mr: "marathi", - pa: "punjabi/panjabi", - si: "sinhala/sinhalese", - km: "khmer", - sn: "shona", - yo: "yoruba", - so: "somali", - af: "afrikaans", - oc: "occitan", - ka: "georgian", - be: "belarusian", - tg: "tajik", - sd: "sindhi", - gu: "gujarati", - am: "amharic", - yi: "yiddish", - lo: "lao", - uz: "uzbek", - fo: "faroese", - ht: "haitian creole/haitian", - ps: "pashto/pushto", - tk: "turkmen", - nn: "nynorsk", - mt: "maltese", - sa: "sanskrit", - lb: "luxembourgish/letzeburgesch", - my: "myanmar/burmese", - bo: "tibetan", - tl: "tagalog", - mg: "malagasy", - as: "assamese", - tt: "tatar", - haw: "hawaiian", - ln: "lingala", - ha: "hausa", - ba: "bashkir", - jw: "javanese", - su: "sundanese", -}; -export function LanguageSelector({ language, setLanguage }) { - const handleLanguageChange = (event) => { - setLanguage(event.target.value); - }; - - const names = Object.values(LANGUAGES).map(titleCase); - - return ( - - ); -} \ No newline at end of file diff --git a/examples/webgpu-whisper/src/components/Progress.jsx b/examples/webgpu-whisper/src/components/Progress.jsx deleted file mode 100644 index 9ce024cc8..000000000 --- a/examples/webgpu-whisper/src/components/Progress.jsx +++ /dev/null @@ -1,15 +0,0 @@ -function formatBytes(size) { - const i = size == 0 ? 0 : Math.floor(Math.log(size) / Math.log(1024)); - return +((size / Math.pow(1024, i)).toFixed(2)) * 1 + ['B', 'kB', 'MB', 'GB', 'TB'][i]; -} - -export default function Progress({ text, percentage, total }) { - percentage ??= 0; - return ( -
    -
    - {text} ({percentage.toFixed(2)}%{isNaN(total) ? '' : ` of ${formatBytes(total)}`}) -
    -
    - ); -} diff --git a/examples/webgpu-whisper/src/index.css b/examples/webgpu-whisper/src/index.css deleted file mode 100644 index 8848bbd6d..000000000 --- a/examples/webgpu-whisper/src/index.css +++ /dev/null @@ -1,32 +0,0 @@ -@tailwind base; -@tailwind components; -@tailwind utilities; - -@layer utilities { - .scrollbar-thin::-webkit-scrollbar { - @apply w-2; - } - - .scrollbar-thin::-webkit-scrollbar-track { - @apply rounded-full bg-gray-100 dark:bg-gray-700; - } - - .scrollbar-thin::-webkit-scrollbar-thumb { - @apply rounded-full bg-gray-300 dark:bg-gray-600; - } - - .scrollbar-thin::-webkit-scrollbar-thumb:hover { - @apply bg-gray-500; - } - - .animation-delay-200 { - animation-delay: 200ms; - } - .animation-delay-400 { - animation-delay: 400ms; - } - - .overflow-wrap-anywhere { - overflow-wrap: anywhere; - } -} diff --git a/examples/webgpu-whisper/src/main.jsx b/examples/webgpu-whisper/src/main.jsx deleted file mode 100644 index 54b39dd1d..000000000 --- a/examples/webgpu-whisper/src/main.jsx +++ /dev/null @@ -1,10 +0,0 @@ -import React from 'react' -import ReactDOM from 'react-dom/client' -import App from './App.jsx' -import './index.css' - -ReactDOM.createRoot(document.getElementById('root')).render( - - - , -) diff --git a/examples/webgpu-whisper/src/worker.js b/examples/webgpu-whisper/src/worker.js deleted file mode 100644 index 12735b1cb..000000000 --- a/examples/webgpu-whisper/src/worker.js +++ /dev/null @@ -1,134 +0,0 @@ - -import { - AutoTokenizer, - AutoProcessor, - WhisperForConditionalGeneration, - TextStreamer, - full, -} from '@huggingface/transformers'; - - -const MAX_NEW_TOKENS = 64; - -/** - * This class uses the Singleton pattern to ensure that only one instance of the model is loaded. - */ -class AutomaticSpeechRecognitionPipeline { - static model_id = null; - static tokenizer = null; - static processor = null; - static model = null; - - static async getInstance(progress_callback = null) { - this.model_id = 'onnx-community/whisper-base'; - - this.tokenizer ??= AutoTokenizer.from_pretrained(this.model_id, { - progress_callback, - }); - this.processor ??= AutoProcessor.from_pretrained(this.model_id, { - progress_callback, - }); - - this.model ??= WhisperForConditionalGeneration.from_pretrained(this.model_id, { - dtype: { - encoder_model: 'fp32', // 'fp16' works too - decoder_model_merged: 'q4', // or 'fp32' ('fp16' is broken) - }, - device: 'webgpu', - progress_callback, - }); - - return Promise.all([this.tokenizer, this.processor, this.model]); - } -} - -let processing = false; -async function generate({ audio, language }) { - if (processing) return; - processing = true; - - // Tell the main thread we are starting - self.postMessage({ status: 'start' }); - - // Retrieve the text-generation pipeline. - const [tokenizer, processor, model] = await AutomaticSpeechRecognitionPipeline.getInstance(); - - let startTime; - let numTokens = 0; - const callback_function = (output) => { - startTime ??= performance.now(); - - let tps; - if (numTokens++ > 0) { - tps = numTokens / (performance.now() - startTime) * 1000; - } - self.postMessage({ - status: 'update', - output, tps, numTokens, - }); - } - - const streamer = new TextStreamer(tokenizer, { - skip_prompt: true, - skip_special_tokens: true, - callback_function, - }); - - const inputs = await processor(audio); - - const outputs = await model.generate({ - ...inputs, - max_new_tokens: MAX_NEW_TOKENS, - language, - streamer, - }); - - const outputText = tokenizer.batch_decode(outputs, { skip_special_tokens: true }); - - // Send the output back to the main thread - self.postMessage({ - status: 'complete', - output: outputText, - }); - processing = false; -} - -async function load() { - self.postMessage({ - status: 'loading', - data: 'Loading model...' - }); - - // Load the pipeline and save it for future use. - const [tokenizer, processor, model] = await AutomaticSpeechRecognitionPipeline.getInstance(x => { - // We also add a progress callback to the pipeline so that we can - // track model loading. - self.postMessage(x); - }); - - self.postMessage({ - status: 'loading', - data: 'Compiling shaders and warming up model...' - }); - - // Run model with dummy input to compile shaders - await model.generate({ - input_features: full([1, 80, 3000], 0.0), - max_new_tokens: 1, - }); - self.postMessage({ status: 'ready' }); -} -// Listen for messages from the main thread -self.addEventListener('message', async (e) => { - const { type, data } = e.data; - - switch (type) { - case 'load': - load(); - break; - - case 'generate': - generate(data); - break; - } -}); diff --git a/examples/webgpu-whisper/tailwind.config.js b/examples/webgpu-whisper/tailwind.config.js deleted file mode 100644 index d37737fc0..000000000 --- a/examples/webgpu-whisper/tailwind.config.js +++ /dev/null @@ -1,12 +0,0 @@ -/** @type {import('tailwindcss').Config} */ -export default { - content: [ - "./index.html", - "./src/**/*.{js,ts,jsx,tsx}", - ], - theme: { - extend: {}, - }, - plugins: [], -} - diff --git a/examples/webgpu-whisper/vite.config.js b/examples/webgpu-whisper/vite.config.js deleted file mode 100644 index 5a33944a9..000000000 --- a/examples/webgpu-whisper/vite.config.js +++ /dev/null @@ -1,7 +0,0 @@ -import { defineConfig } from 'vite' -import react from '@vitejs/plugin-react' - -// https://vitejs.dev/config/ -export default defineConfig({ - plugins: [react()], -}) From 48b46d67f471d93b111cc8a21f89f3689117629f Mon Sep 17 00:00:00 2001 From: Joshua Lochner Date: Mon, 23 Dec 2024 14:19:00 +0000 Subject: [PATCH 09/23] Move depth estimation video demo --- .../webgpu-video-depth-estimation/.gitignore | 24 --- .../webgpu-video-depth-estimation/index.html | 42 ----- .../webgpu-video-depth-estimation/main.js | 145 ------------------ .../package.json | 17 -- .../webgpu-video-depth-estimation/style.css | 71 --------- .../vite.config.js | 6 - 6 files changed, 305 deletions(-) delete mode 100644 examples/webgpu-video-depth-estimation/.gitignore delete mode 100644 examples/webgpu-video-depth-estimation/index.html delete mode 100644 examples/webgpu-video-depth-estimation/main.js delete mode 100644 examples/webgpu-video-depth-estimation/package.json delete mode 100644 examples/webgpu-video-depth-estimation/style.css delete mode 100644 examples/webgpu-video-depth-estimation/vite.config.js diff --git a/examples/webgpu-video-depth-estimation/.gitignore b/examples/webgpu-video-depth-estimation/.gitignore deleted file mode 100644 index a547bf36d..000000000 --- a/examples/webgpu-video-depth-estimation/.gitignore +++ /dev/null @@ -1,24 +0,0 @@ -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -pnpm-debug.log* -lerna-debug.log* - -node_modules -dist -dist-ssr -*.local - -# Editor directories and files -.vscode/* -!.vscode/extensions.json -.idea -.DS_Store -*.suo -*.ntvs* -*.njsproj -*.sln -*.sw? diff --git a/examples/webgpu-video-depth-estimation/index.html b/examples/webgpu-video-depth-estimation/index.html deleted file mode 100644 index c05574f67..000000000 --- a/examples/webgpu-video-depth-estimation/index.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - Transformers.js | Real-time depth estimation - - - -

    - Real-time depth estimation w/ - Depth Anything V2 -

    -

    - Runs locally in your browser, powered by - 🤗 Transformers.js -

    -
    - - -
    -
    -
    - - () -
    - -
    -
    - - (px) -
    - -
    -
    - - - - - - \ No newline at end of file diff --git a/examples/webgpu-video-depth-estimation/main.js b/examples/webgpu-video-depth-estimation/main.js deleted file mode 100644 index a745da774..000000000 --- a/examples/webgpu-video-depth-estimation/main.js +++ /dev/null @@ -1,145 +0,0 @@ -import './style.css'; - -import { AutoModel, AutoProcessor, RawImage } from '@xenova/transformers'; - -async function hasFp16() { - try { - const adapter = await navigator.gpu.requestAdapter() - return adapter.features.has('shader-f16') - } catch (e) { - return false - } -} - -// Reference the elements that we will need -const status = document.getElementById('status'); -const canvas = document.createElement('canvas'); -const outputCanvas = document.getElementById('output-canvas'); -const video = document.getElementById('video'); -const sizeSlider = document.getElementById('size'); -const sizeLabel = document.getElementById('size-value'); -const scaleSlider = document.getElementById('scale'); -const scaleLabel = document.getElementById('scale-value'); - -function setStreamSize(width, height) { - video.width = outputCanvas.width = canvas.width = Math.round(width); - video.height = outputCanvas.height = canvas.height = Math.round(height); -} - -status.textContent = 'Loading model...'; - -// Load model and processor -const model_id = 'onnx-community/depth-anything-v2-small'; - -let model; -try { - model = await AutoModel.from_pretrained(model_id, { - device: 'webgpu', - // Use fp16 if available, otherwise use fp32 - dtype: (await hasFp16()) ? 'fp16' : 'fp32', - }); -} catch (err) { - status.textContent = err.message; - alert(err.message) - throw err; -} - -const processor = await AutoProcessor.from_pretrained(model_id); - -// Set up controls -let size = 504; -processor.feature_extractor.size = { width: size, height: size }; -sizeSlider.addEventListener('input', () => { - size = Number(sizeSlider.value); - processor.feature_extractor.size = { width: size, height: size }; - sizeLabel.textContent = size; -}); -sizeSlider.disabled = false; - -let scale = 0.4; -scaleSlider.addEventListener('input', () => { - scale = Number(scaleSlider.value); - setStreamSize(video.videoWidth * scale, video.videoHeight * scale); - scaleLabel.textContent = scale; -}); -scaleSlider.disabled = false; - -status.textContent = 'Ready'; - -let isProcessing = false; -let previousTime; -const context = canvas.getContext('2d', { willReadFrequently: true }); -const outputContext = outputCanvas.getContext('2d', { willReadFrequently: true }); -function updateCanvas() { - const { width, height } = canvas; - - if (!isProcessing) { - isProcessing = true; - (async function () { - // Read the current frame from the video - context.drawImage(video, 0, 0, width, height); - const currentFrame = context.getImageData(0, 0, width, height); - const image = new RawImage(currentFrame.data, width, height, 4); - - // Pre-process image - const inputs = await processor(image); - - // Predict depth map - const { predicted_depth } = await model(inputs); - const data = predicted_depth.data; - const [bs, oh, ow] = predicted_depth.dims; - - // Normalize the depth map - let min = Infinity; - let max = -Infinity; - outputCanvas.width = ow; - outputCanvas.height = oh; - for (let i = 0; i < data.length; ++i) { - const v = data[i]; - if (v < min) min = v; - if (v > max) max = v; - } - const range = max - min; - - const imageData = new Uint8ClampedArray(4 * data.length); - for (let i = 0; i < data.length; ++i) { - const offset = 4 * i; - imageData[offset] = 255; // Set base color to red - - // Set alpha to normalized depth value - imageData[offset + 3] = 255 * (1 - (data[i] - min) / range); - } - const outPixelData = new ImageData(imageData, ow, oh); - outputContext.putImageData(outPixelData, 0, 0); - - if (previousTime !== undefined) { - const fps = 1000 / (performance.now() - previousTime); - status.textContent = `FPS: ${fps.toFixed(2)}`; - } - previousTime = performance.now(); - - isProcessing = false; - })(); - } - - window.requestAnimationFrame(updateCanvas); -} - -// Start the video stream -navigator.mediaDevices.getUserMedia( - { video: { width: 720, height: 720 } }, // Ask for square video -).then((stream) => { - // Set up the video and canvas elements. - video.srcObject = stream; - video.play(); - - const videoTrack = stream.getVideoTracks()[0]; - const { width, height } = videoTrack.getSettings(); - - setStreamSize(width * scale, height * scale); - - // Start the animation loop - setTimeout(updateCanvas, 50); -}).catch((error) => { - alert(error); -}); diff --git a/examples/webgpu-video-depth-estimation/package.json b/examples/webgpu-video-depth-estimation/package.json deleted file mode 100644 index 041dd86e0..000000000 --- a/examples/webgpu-video-depth-estimation/package.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "name": "webgpu-video-depth-estimation", - "private": true, - "version": "0.0.0", - "type": "module", - "scripts": { - "dev": "vite", - "build": "vite build", - "preview": "vite preview" - }, - "devDependencies": { - "vite": "^5.2.0" - }, - "dependencies": { - "@xenova/transformers": "github:xenova/transformers.js#v3" - } -} diff --git a/examples/webgpu-video-depth-estimation/style.css b/examples/webgpu-video-depth-estimation/style.css deleted file mode 100644 index bd4796b95..000000000 --- a/examples/webgpu-video-depth-estimation/style.css +++ /dev/null @@ -1,71 +0,0 @@ -* { - box-sizing: border-box; - padding: 0; - margin: 0; - font-family: sans-serif; -} - -html, -body { - height: 100%; -} - -body { - padding: 16px 32px; -} - -body, -#container { - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; -} - -#controls { - display: flex; - padding: 1rem; - gap: 1rem; -} - -#controls>div { - text-align: center; -} - -h1, -h3 { - text-align: center; -} - -h3 { - margin-top: 0.5rem; -} - -#container { - display: flex; - flex-direction: row; - position: relative; - max-width: 100%; - max-height: 100%; - border: 2px dashed #D1D5DB; - border-radius: 0.75rem; - overflow: hidden; - margin-top: 1rem; - background-size: 100% 100%; - background-position: center; - background-repeat: no-repeat; -} -#video, #output-canvas { - width: 504px; - height: 504px; -} - -canvas { - width: 100%; - height: 100%; -} - -#status { - min-height: 16px; - margin: 8px 0; -} diff --git a/examples/webgpu-video-depth-estimation/vite.config.js b/examples/webgpu-video-depth-estimation/vite.config.js deleted file mode 100644 index 6c32f52df..000000000 --- a/examples/webgpu-video-depth-estimation/vite.config.js +++ /dev/null @@ -1,6 +0,0 @@ -import { defineConfig } from 'vite'; -export default defineConfig({ - build: { - target: 'esnext' - } -}); From a361b38cd5c51178c756f785aa38d478c2b46586 Mon Sep 17 00:00:00 2001 From: Joshua Lochner Date: Mon, 23 Dec 2024 14:19:26 +0000 Subject: [PATCH 10/23] Move vanilla js demo --- examples/vanilla-js/README.md | 9 ----- examples/vanilla-js/index.html | 24 ----------- examples/vanilla-js/index.js | 73 ---------------------------------- examples/vanilla-js/style.css | 58 --------------------------- 4 files changed, 164 deletions(-) delete mode 100644 examples/vanilla-js/README.md delete mode 100644 examples/vanilla-js/index.html delete mode 100644 examples/vanilla-js/index.js delete mode 100644 examples/vanilla-js/style.css diff --git a/examples/vanilla-js/README.md b/examples/vanilla-js/README.md deleted file mode 100644 index e3ba3d412..000000000 --- a/examples/vanilla-js/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# Vanilla JS Application - -This folder contains the source code for a simple web application that detects objects in images using Transformers.js! Check out the demo [here](https://huggingface.co/spaces/Scrimba/vanilla-js-object-detector). - -If you'd like to build it yourself, you can follow the [written](https://huggingface.co/docs/transformers.js/tutorials/vanilla-js) or [interactive video](https://scrimba.com/scrim/cKm9bDAg) tutorials we have made! - -Here's how it works: the user clicks “Upload image” and selects an image using an input dialog. After analysing the image with an object detection model, the predicted bounding boxes are overlaid on top of the image, like this: - -![Demo](https://huggingface.co/datasets/Xenova/transformers.js-docs/resolve/main/js-detection-interence-zebra.png) diff --git a/examples/vanilla-js/index.html b/examples/vanilla-js/index.html deleted file mode 100644 index 5ec52a3db..000000000 --- a/examples/vanilla-js/index.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - Transformers.js - Object Detection demo - - - -
    - -
    -

    -
    - - - - \ No newline at end of file diff --git a/examples/vanilla-js/index.js b/examples/vanilla-js/index.js deleted file mode 100644 index 4fd5fe076..000000000 --- a/examples/vanilla-js/index.js +++ /dev/null @@ -1,73 +0,0 @@ -import { pipeline, env } from 'https://cdn.jsdelivr.net/npm/@xenova/transformers@2.6.0'; - -// Since we will download the model from the Hugging Face Hub, we can skip the local model check -env.allowLocalModels = false; - -// Reference the elements that we will need -const status = document.getElementById('status'); -const fileUpload = document.getElementById('file-upload'); -const imageContainer = document.getElementById('image-container'); - -// Create a new object detection pipeline -status.textContent = 'Loading model...'; -const detector = await pipeline('object-detection', 'Xenova/detr-resnet-50'); -status.textContent = 'Ready'; - -fileUpload.addEventListener('change', function (e) { - const file = e.target.files[0]; - if (!file) { - return; - } - - const reader = new FileReader(); - - // Set up a callback when the file is loaded - reader.onload = function (e2) { - imageContainer.innerHTML = ''; - const image = document.createElement('img'); - image.src = e2.target.result; - imageContainer.appendChild(image); - detect(image); - }; - reader.readAsDataURL(file); -}); - - -// Detect objects in the image -async function detect(img) { - status.textContent = 'Analysing...'; - const output = await detector(img.src, { - threshold: 0.5, - percentage: true, - }); - status.textContent = ''; - output.forEach(renderBox); -} - -// Render a bounding box and label on the image -function renderBox({ box, label }) { - const { xmax, xmin, ymax, ymin } = box; - - // Generate a random color for the box - const color = '#' + Math.floor(Math.random() * 0xFFFFFF).toString(16).padStart(6, 0); - - // Draw the box - const boxElement = document.createElement('div'); - boxElement.className = 'bounding-box'; - Object.assign(boxElement.style, { - borderColor: color, - left: 100 * xmin + '%', - top: 100 * ymin + '%', - width: 100 * (xmax - xmin) + '%', - height: 100 * (ymax - ymin) + '%', - }) - - // Draw label - const labelElement = document.createElement('span'); - labelElement.textContent = label; - labelElement.className = 'bounding-box-label'; - labelElement.style.backgroundColor = color; - - boxElement.appendChild(labelElement); - imageContainer.appendChild(boxElement); -} diff --git a/examples/vanilla-js/style.css b/examples/vanilla-js/style.css deleted file mode 100644 index a8dd91304..000000000 --- a/examples/vanilla-js/style.css +++ /dev/null @@ -1,58 +0,0 @@ -html, -body { - font-family: Arial, Helvetica, sans-serif; -} - -.container { - margin: 40px auto; - width: max(50vw, 400px); - display: flex; - flex-direction: column; - align-items: center; -} - - -.custom-file-upload { - display: flex; - align-items: center; - cursor: pointer; - gap: 10px; - border: 2px solid black; - padding: 8px 16px; - cursor: pointer; - border-radius: 6px; -} - -#file-upload { - display: none; -} - -.upload-icon { - width: 30px; -} - -#image-container { - width: 100%; - margin-top: 20px; - position: relative; -} - -#image-container>img { - width: 100%; -} - -.bounding-box { - position: absolute; - box-sizing: border-box; - border-width: 2px; - border-style: solid; -} - -.bounding-box-label { - color: white; - position: absolute; - font-size: 12px; - margin-top: -16px; - margin-left: -2px; - padding: 1px; -} From 16343999e23fabb18e1f86526e8c4e7e385b7438 Mon Sep 17 00:00:00 2001 From: Joshua Lochner Date: Mon, 23 Dec 2024 14:20:38 +0000 Subject: [PATCH 11/23] Move node demo --- examples/node/commonjs/app.js | 63 ----------------------------- examples/node/commonjs/package.json | 12 ------ examples/node/esm/app.js | 62 ---------------------------- examples/node/esm/package.json | 13 ------ 4 files changed, 150 deletions(-) delete mode 100644 examples/node/commonjs/app.js delete mode 100644 examples/node/commonjs/package.json delete mode 100644 examples/node/esm/app.js delete mode 100644 examples/node/esm/package.json diff --git a/examples/node/commonjs/app.js b/examples/node/commonjs/app.js deleted file mode 100644 index 6612b6d95..000000000 --- a/examples/node/commonjs/app.js +++ /dev/null @@ -1,63 +0,0 @@ - -const http = require('http'); -const querystring = require('querystring'); -const url = require('url'); - - -class MyClassificationPipeline { - static task = 'text-classification'; - static model = 'Xenova/distilbert-base-uncased-finetuned-sst-2-english'; - static instance = null; - - static async getInstance(progress_callback = null) { - if (this.instance === null) { - // Dynamically import the Transformers.js library - let { pipeline, env } = await import('@xenova/transformers'); - - // NOTE: Uncomment this to change the cache directory - // env.cacheDir = './.cache'; - - this.instance = pipeline(this.task, this.model, { progress_callback }); - } - - return this.instance; - } -} - -// Comment out this line if you don't want to start loading the model as soon as the server starts. -// If commented out, the model will be loaded when the first request is received (i.e,. lazily). -MyClassificationPipeline.getInstance(); - -// Define the HTTP server -const server = http.createServer(); -const hostname = '127.0.0.1'; -const port = 3000; - -// Listen for requests made to the server -server.on('request', async (req, res) => { - // Parse the request URL - const parsedUrl = url.parse(req.url); - - // Extract the query parameters - const { text } = querystring.parse(parsedUrl.query); - - // Set the response headers - res.setHeader('Content-Type', 'application/json'); - - let response; - if (parsedUrl.pathname === '/classify' && text) { - const classifier = await MyClassificationPipeline.getInstance(); - response = await classifier(text); - res.statusCode = 200; - } else { - response = { 'error': 'Bad request' } - res.statusCode = 400; - } - - // Send the JSON response - res.end(JSON.stringify(response)); -}); - -server.listen(port, hostname, () => { - console.log(`Server running at http://${hostname}:${port}/`); -}); diff --git a/examples/node/commonjs/package.json b/examples/node/commonjs/package.json deleted file mode 100644 index 5e4d59b0f..000000000 --- a/examples/node/commonjs/package.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "name": "commonjs", - "version": "1.0.0", - "description": "Server-side inference with Transformers.js (CommonJS)", - "main": "app.js", - "keywords": [], - "author": "Xenova", - "license": "ISC", - "dependencies": { - "@xenova/transformers": "^2.0.0" - } -} diff --git a/examples/node/esm/app.js b/examples/node/esm/app.js deleted file mode 100644 index 08c873d83..000000000 --- a/examples/node/esm/app.js +++ /dev/null @@ -1,62 +0,0 @@ - -import http from 'http'; -import querystring from 'querystring'; -import url from 'url'; - -import { pipeline, env } from '@xenova/transformers'; - -class MyClassificationPipeline { - static task = 'text-classification'; - static model = 'Xenova/distilbert-base-uncased-finetuned-sst-2-english'; - static instance = null; - - static async getInstance(progress_callback = null) { - if (this.instance === null) { - - // NOTE: Uncomment this to change the cache directory - // env.cacheDir = './.cache'; - - this.instance = pipeline(this.task, this.model, { progress_callback }); - } - - return this.instance; - } -} - -// Comment out this line if you don't want to start loading the model as soon as the server starts. -// If commented out, the model will be loaded when the first request is received (i.e,. lazily). -MyClassificationPipeline.getInstance(); - -// Define the HTTP server -const server = http.createServer(); -const hostname = '127.0.0.1'; -const port = 3000; - -// Listen for requests made to the server -server.on('request', async (req, res) => { - // Parse the request URL - const parsedUrl = url.parse(req.url); - - // Extract the query parameters - const { text } = querystring.parse(parsedUrl.query); - - // Set the response headers - res.setHeader('Content-Type', 'application/json'); - - let response; - if (parsedUrl.pathname === '/classify' && text) { - const classifier = await MyClassificationPipeline.getInstance(); - response = await classifier(text); - res.statusCode = 200; - } else { - response = { 'error': 'Bad request' } - res.statusCode = 400; - } - - // Send the JSON response - res.end(JSON.stringify(response)); -}); - -server.listen(port, hostname, () => { - console.log(`Server running at http://${hostname}:${port}/`); -}); diff --git a/examples/node/esm/package.json b/examples/node/esm/package.json deleted file mode 100644 index 72ecb47ca..000000000 --- a/examples/node/esm/package.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "name": "esm", - "version": "1.0.0", - "description": "Server-side inference with Transformers.js (ESM)", - "type": "module", - "main": "app.js", - "keywords": [], - "author": "Xenova", - "license": "ISC", - "dependencies": { - "@xenova/transformers": "^2.0.0" - } -} From 4f7b7f49fb458fe0201a255b3d02e16cb8f06438 Mon Sep 17 00:00:00 2001 From: Joshua Lochner Date: Mon, 23 Dec 2024 14:22:08 +0000 Subject: [PATCH 12/23] Move whisper word timestamps demo --- .../whisper-word-timestamps/.eslintrc.cjs | 21 -- examples/whisper-word-timestamps/.gitignore | 24 -- examples/whisper-word-timestamps/README.md | 8 - examples/whisper-word-timestamps/index.html | 12 - examples/whisper-word-timestamps/package.json | 30 --- .../whisper-word-timestamps/postcss.config.js | 6 - examples/whisper-word-timestamps/src/App.jsx | 217 ------------------ .../src/components/LanguageSelector.jsx | 134 ----------- .../src/components/MediaInput.jsx | 194 ---------------- .../src/components/Progress.jsx | 15 -- .../src/components/Transcript.jsx | 68 ------ .../whisper-word-timestamps/src/index.css | 25 -- examples/whisper-word-timestamps/src/main.jsx | 10 - .../whisper-word-timestamps/src/worker.js | 94 -------- .../tailwind.config.js | 12 - .../whisper-word-timestamps/vite.config.js | 7 - 16 files changed, 877 deletions(-) delete mode 100644 examples/whisper-word-timestamps/.eslintrc.cjs delete mode 100644 examples/whisper-word-timestamps/.gitignore delete mode 100644 examples/whisper-word-timestamps/README.md delete mode 100644 examples/whisper-word-timestamps/index.html delete mode 100644 examples/whisper-word-timestamps/package.json delete mode 100644 examples/whisper-word-timestamps/postcss.config.js delete mode 100644 examples/whisper-word-timestamps/src/App.jsx delete mode 100644 examples/whisper-word-timestamps/src/components/LanguageSelector.jsx delete mode 100644 examples/whisper-word-timestamps/src/components/MediaInput.jsx delete mode 100644 examples/whisper-word-timestamps/src/components/Progress.jsx delete mode 100644 examples/whisper-word-timestamps/src/components/Transcript.jsx delete mode 100644 examples/whisper-word-timestamps/src/index.css delete mode 100644 examples/whisper-word-timestamps/src/main.jsx delete mode 100644 examples/whisper-word-timestamps/src/worker.js delete mode 100644 examples/whisper-word-timestamps/tailwind.config.js delete mode 100644 examples/whisper-word-timestamps/vite.config.js diff --git a/examples/whisper-word-timestamps/.eslintrc.cjs b/examples/whisper-word-timestamps/.eslintrc.cjs deleted file mode 100644 index 3e212e1d4..000000000 --- a/examples/whisper-word-timestamps/.eslintrc.cjs +++ /dev/null @@ -1,21 +0,0 @@ -module.exports = { - root: true, - env: { browser: true, es2020: true }, - extends: [ - 'eslint:recommended', - 'plugin:react/recommended', - 'plugin:react/jsx-runtime', - 'plugin:react-hooks/recommended', - ], - ignorePatterns: ['dist', '.eslintrc.cjs'], - parserOptions: { ecmaVersion: 'latest', sourceType: 'module' }, - settings: { react: { version: '18.2' } }, - plugins: ['react-refresh'], - rules: { - 'react/jsx-no-target-blank': 'off', - 'react-refresh/only-export-components': [ - 'warn', - { allowConstantExport: true }, - ], - }, -} diff --git a/examples/whisper-word-timestamps/.gitignore b/examples/whisper-word-timestamps/.gitignore deleted file mode 100644 index a547bf36d..000000000 --- a/examples/whisper-word-timestamps/.gitignore +++ /dev/null @@ -1,24 +0,0 @@ -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -pnpm-debug.log* -lerna-debug.log* - -node_modules -dist -dist-ssr -*.local - -# Editor directories and files -.vscode/* -!.vscode/extensions.json -.idea -.DS_Store -*.suo -*.ntvs* -*.njsproj -*.sln -*.sw? diff --git a/examples/whisper-word-timestamps/README.md b/examples/whisper-word-timestamps/README.md deleted file mode 100644 index f768e33fc..000000000 --- a/examples/whisper-word-timestamps/README.md +++ /dev/null @@ -1,8 +0,0 @@ -# React + Vite - -This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. - -Currently, two official plugins are available: - -- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh -- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh diff --git a/examples/whisper-word-timestamps/index.html b/examples/whisper-word-timestamps/index.html deleted file mode 100644 index 5f620b00e..000000000 --- a/examples/whisper-word-timestamps/index.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - Whisper Timestamped - - -
    - - - diff --git a/examples/whisper-word-timestamps/package.json b/examples/whisper-word-timestamps/package.json deleted file mode 100644 index 3af99d9ef..000000000 --- a/examples/whisper-word-timestamps/package.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "name": "whisper-word-timestamps", - "private": true, - "version": "0.0.0", - "type": "module", - "scripts": { - "dev": "vite", - "build": "vite build", - "lint": "eslint . --ext js,jsx --report-unused-disable-directives --max-warnings 0", - "preview": "vite preview" - }, - "dependencies": { - "@xenova/transformers": "github:xenova/transformers.js#v3", - "react": "^18.3.1", - "react-dom": "^18.3.1" - }, - "devDependencies": { - "@types/react": "^18.3.3", - "@types/react-dom": "^18.3.0", - "@vitejs/plugin-react": "^4.3.1", - "autoprefixer": "^10.4.19", - "eslint": "^8.57.0", - "eslint-plugin-react": "^7.34.2", - "eslint-plugin-react-hooks": "^4.6.2", - "eslint-plugin-react-refresh": "^0.4.7", - "postcss": "^8.4.38", - "tailwindcss": "^3.4.4", - "vite": "^5.3.1" - } -} diff --git a/examples/whisper-word-timestamps/postcss.config.js b/examples/whisper-word-timestamps/postcss.config.js deleted file mode 100644 index 2e7af2b7f..000000000 --- a/examples/whisper-word-timestamps/postcss.config.js +++ /dev/null @@ -1,6 +0,0 @@ -export default { - plugins: { - tailwindcss: {}, - autoprefixer: {}, - }, -} diff --git a/examples/whisper-word-timestamps/src/App.jsx b/examples/whisper-word-timestamps/src/App.jsx deleted file mode 100644 index c7b6e89fc..000000000 --- a/examples/whisper-word-timestamps/src/App.jsx +++ /dev/null @@ -1,217 +0,0 @@ -import { useEffect, useState, useRef, useCallback } from 'react'; - -import Progress from './components/Progress'; -import MediaInput from './components/MediaInput'; -import Transcript from './components/Transcript'; -import LanguageSelector from './components/LanguageSelector'; - - -async function hasWebGPU() { - if (!navigator.gpu) { - return false; - } - try { - const adapter = await navigator.gpu.requestAdapter(); - return !!adapter; - } catch (e) { - return false; - } -} - -function App() { - - // Create a reference to the worker object. - const worker = useRef(null); - - // Model loading and progress - const [status, setStatus] = useState(null); - const [loadingMessage, setLoadingMessage] = useState(''); - const [progressItems, setProgressItems] = useState([]); - - const mediaInputRef = useRef(null); - const [audio, setAudio] = useState(null); - const [language, setLanguage] = useState('en'); - - const [result, setResult] = useState(null); - const [time, setTime] = useState(null); - const [currentTime, setCurrentTime] = useState(0); - - const [device, setDevice] = useState('webgpu'); // Try use WebGPU first - const [modelSize, setModelSize] = useState('gpu' in navigator ? 196 : 77); // WebGPU=196MB, WebAssembly=77MB - useEffect(() => { - hasWebGPU().then((result) => { - setModelSize(result ? 196 : 77); - setDevice(result ? 'webgpu' : 'wasm'); - }); - }, []); - - // We use the `useEffect` hook to setup the worker as soon as the `App` component is mounted. - useEffect(() => { - if (!worker.current) { - // Create the worker if it does not yet exist. - worker.current = new Worker(new URL('./worker.js', import.meta.url), { - type: 'module' - }); - } - - // Create a callback function for messages from the worker thread. - const onMessageReceived = (e) => { - switch (e.data.status) { - case 'loading': - // Model file start load: add a new progress item to the list. - setStatus('loading'); - setLoadingMessage(e.data.data); - break; - - case 'initiate': - setProgressItems(prev => [...prev, e.data]); - break; - - case 'progress': - // Model file progress: update one of the progress items. - setProgressItems( - prev => prev.map(item => { - if (item.file === e.data.file) { - return { ...item, ...e.data } - } - return item; - }) - ); - break; - - case 'done': - // Model file loaded: remove the progress item from the list. - setProgressItems( - prev => prev.filter(item => item.file !== e.data.file) - ); - break; - - case 'ready': - // Pipeline ready: the worker is ready to accept messages. - setStatus('ready'); - break; - - case 'complete': - setResult(e.data.result); - setTime(e.data.time); - setStatus('ready'); - break; - } - }; - - // Attach the callback function as an event listener. - worker.current.addEventListener('message', onMessageReceived); - - // Define a cleanup function for when the component is unmounted. - return () => { - worker.current.removeEventListener('message', onMessageReceived); - }; - }, []); - - const handleClick = useCallback(() => { - setResult(null); - setTime(null); - if (status === null) { - setStatus('loading'); - worker.current.postMessage({ type: 'load', data: { device } }); - } else { - setStatus('running'); - worker.current.postMessage({ - type: 'run', data: { audio, language } - }); - } - }, [status, audio, language, device]); - - return ( -
    - - {status === 'loading' && ( -
    -
    -

    {loadingMessage}

    - {progressItems.map(({ file, progress, total }, i) => ( - - ))} -
    -
    - )} -
    -
    -

    Whisper Timestamped

    -

    In-browser speech recognition w/ word-level timestamps

    -
    - -
    - { - !audio && ( -

    - You are about to download whisper-base (timestamped), - a 73 million parameter speech recognition model with the ability to generate word-level timestamps across 100 different languages. - Once loaded, the model ({modelSize} MB) will be cached and reused when you revisit the page.
    -
    - Everything runs locally in your browser using 🤗 Transformers.js and ONNX Runtime Web, - meaning no API calls are made to a server for inference. You can even disconnect from the internet after the model has loaded! -

    - ) - } - -
    - Input audio/video - setAudio(result)} - onTimeUpdate={(time) => setCurrentTime(time)} - /> -
    - -
    - - - {status !== null && -
    - Language: -
    - -
    - } -
    - - { - result && time && ( - <> -
    - { - setCurrentTime(time); - mediaInputRef.current.setMediaTime(time); - }} - /> -
    -

    Generation time: {time.toFixed(2)}ms

    - - ) - - - } -
    -
    - -
    - ) -} - -export default App diff --git a/examples/whisper-word-timestamps/src/components/LanguageSelector.jsx b/examples/whisper-word-timestamps/src/components/LanguageSelector.jsx deleted file mode 100644 index 74c02a62a..000000000 --- a/examples/whisper-word-timestamps/src/components/LanguageSelector.jsx +++ /dev/null @@ -1,134 +0,0 @@ - -function titleCase(str) { - str = str.toLowerCase(); - return (str.match(/\w+.?/g) || []) - .map((word) => { - return word.charAt(0).toUpperCase() + word.slice(1); - }) - .join(""); -} - -// List of supported languages: -// https://help.openai.com/en/articles/7031512-whisper-api-faq -// https://github.com/openai/whisper/blob/248b6cb124225dd263bb9bd32d060b6517e067f8/whisper/tokenizer.py#L79 -const LANGUAGES = { - en: "english", - zh: "chinese", - de: "german", - es: "spanish/castilian", - ru: "russian", - ko: "korean", - fr: "french", - ja: "japanese", - pt: "portuguese", - tr: "turkish", - pl: "polish", - ca: "catalan/valencian", - nl: "dutch/flemish", - ar: "arabic", - sv: "swedish", - it: "italian", - id: "indonesian", - hi: "hindi", - fi: "finnish", - vi: "vietnamese", - he: "hebrew", - uk: "ukrainian", - el: "greek", - ms: "malay", - cs: "czech", - ro: "romanian/moldavian/moldovan", - da: "danish", - hu: "hungarian", - ta: "tamil", - no: "norwegian", - th: "thai", - ur: "urdu", - hr: "croatian", - bg: "bulgarian", - lt: "lithuanian", - la: "latin", - mi: "maori", - ml: "malayalam", - cy: "welsh", - sk: "slovak", - te: "telugu", - fa: "persian", - lv: "latvian", - bn: "bengali", - sr: "serbian", - az: "azerbaijani", - sl: "slovenian", - kn: "kannada", - et: "estonian", - mk: "macedonian", - br: "breton", - eu: "basque", - is: "icelandic", - hy: "armenian", - ne: "nepali", - mn: "mongolian", - bs: "bosnian", - kk: "kazakh", - sq: "albanian", - sw: "swahili", - gl: "galician", - mr: "marathi", - pa: "punjabi/panjabi", - si: "sinhala/sinhalese", - km: "khmer", - sn: "shona", - yo: "yoruba", - so: "somali", - af: "afrikaans", - oc: "occitan", - ka: "georgian", - be: "belarusian", - tg: "tajik", - sd: "sindhi", - gu: "gujarati", - am: "amharic", - yi: "yiddish", - lo: "lao", - uz: "uzbek", - fo: "faroese", - ht: "haitian creole/haitian", - ps: "pashto/pushto", - tk: "turkmen", - nn: "nynorsk", - mt: "maltese", - sa: "sanskrit", - lb: "luxembourgish/letzeburgesch", - my: "myanmar/burmese", - bo: "tibetan", - tl: "tagalog", - mg: "malagasy", - as: "assamese", - tt: "tatar", - haw: "hawaiian", - ln: "lingala", - ha: "hausa", - ba: "bashkir", - jw: "javanese", - su: "sundanese", -}; -function LanguageSelector({ language, setLanguage, ...props }) { - const handleLanguageChange = (event) => { - setLanguage(event.target.value); - }; - - const names = Object.values(LANGUAGES).map(titleCase); - - return ( - - ); -} -export default LanguageSelector diff --git a/examples/whisper-word-timestamps/src/components/MediaInput.jsx b/examples/whisper-word-timestamps/src/components/MediaInput.jsx deleted file mode 100644 index 4bf7afcb6..000000000 --- a/examples/whisper-word-timestamps/src/components/MediaInput.jsx +++ /dev/null @@ -1,194 +0,0 @@ -import { useState, forwardRef, useRef, useImperativeHandle, useEffect, useCallback } from 'react'; - -const EXAMPLE_URL = 'https://huggingface.co/datasets/Xenova/transformers.js-docs/resolve/main/whisper-timestamps-demo.mp4'; - -const MediaInput = forwardRef(({ onInputChange, onTimeUpdate, ...props }, ref) => { - // UI states - const [dragging, setDragging] = useState(false); - const fileInputRef = useRef(null); - - // Create a reference to the audio and video elements - const audioElement = useRef(null); - const videoElement = useRef(null); - - const currentTimeRef = useRef(0); - useImperativeHandle(ref, () => ({ - setMediaTime(time) { - if (audioElement.current?.src) { - audioElement.current.currentTime = time; - } else if (videoElement.current?.src) { - videoElement.current.currentTime = time; - } - currentTimeRef.current = time; - } - })); - - const onBufferLoad = (arrayBuffer, type) => { - const blob = new Blob([arrayBuffer.slice(0)], { type: type }); - const url = URL.createObjectURL(blob); - processFile(arrayBuffer); - - // Create a URL for the Blob - if (type.startsWith('audio/')) { - // Dispose the previous source - videoElement.current.pause(); - videoElement.current.removeAttribute('src'); - videoElement.current.load(); - - audioElement.current.src = url; - } else if (type.startsWith('video/')) { - // Dispose the previous source - audioElement.current.pause(); - audioElement.current.removeAttribute('src'); - audioElement.current.load(); - - videoElement.current.src = url; - } else { - alert(`Unsupported file type: ${type}`); - } - } - - const readFile = (file) => { - if (!file) return; - - // file.type - const reader = new FileReader(); - reader.onload = (e) => { - onBufferLoad(e.target.result, file.type); - } - reader.readAsArrayBuffer(file); - } - - const handleInputChange = (event) => { - readFile(event.target.files[0]); - }; - - const handleDragOver = (event) => { - event.preventDefault(); - }; - - const handleDrop = (event) => { - event.preventDefault(); - setDragging(false); - readFile(event.dataTransfer.files[0]); - }; - - const handleClick = (e) => { - if (e.target.tagName === 'VIDEO' || e.target.tagName === 'AUDIO') { - e.preventDefault(); - fileInputRef.current.click(); - } else if (e.target.tagName === 'INPUT') { - e.stopPropagation(); - } else { - fileInputRef.current.click(); - e.stopPropagation(); - } - }; - - const processFile = async (buffer) => { - const audioContext = new (window.AudioContext || window.webkitAudioContext)({ sampleRate: 16_000 }); - - try { - const audioBuffer = await audioContext.decodeAudioData(buffer); - let audio; - if (audioBuffer.numberOfChannels === 2) { - // Merge channels - const SCALING_FACTOR = Math.sqrt(2); - const left = audioBuffer.getChannelData(0); - const right = audioBuffer.getChannelData(1); - audio = new Float32Array(left.length); - for (let i = 0; i < audioBuffer.length; ++i) { - audio[i] = SCALING_FACTOR * (left[i] + right[i]) / 2; - } - } else { - audio = audioBuffer.getChannelData(0); - } - onInputChange(audio); - - } catch (e) { - alert(e); - } - }; - - const requestRef = useRef(); - - const updateTime = useCallback(() => { - let elem; - if (audioElement.current?.src) { - elem = audioElement.current; - - } else if (videoElement.current?.src) { - elem = videoElement.current; - } - - if (elem && currentTimeRef.current !== elem.currentTime) { - currentTimeRef.current = elem.currentTime; - onTimeUpdate(elem.currentTime); - } - - // Request the next frame - requestRef.current = requestAnimationFrame(updateTime); - }, [onTimeUpdate]); - - useEffect(() => { - // Start the animation - requestRef.current = requestAnimationFrame(updateTime); - - return () => { - // Cleanup on component unmount - cancelAnimationFrame(requestRef.current); - }; - }, [updateTime]); - return ( -
    setDragging(true)} - onDragLeave={(e) => setDragging(false)} - > - - { -
    - ); -}); -MediaInput.displayName = 'MediaInput'; - -export default MediaInput; diff --git a/examples/whisper-word-timestamps/src/components/Progress.jsx b/examples/whisper-word-timestamps/src/components/Progress.jsx deleted file mode 100644 index 9ce024cc8..000000000 --- a/examples/whisper-word-timestamps/src/components/Progress.jsx +++ /dev/null @@ -1,15 +0,0 @@ -function formatBytes(size) { - const i = size == 0 ? 0 : Math.floor(Math.log(size) / Math.log(1024)); - return +((size / Math.pow(1024, i)).toFixed(2)) * 1 + ['B', 'kB', 'MB', 'GB', 'TB'][i]; -} - -export default function Progress({ text, percentage, total }) { - percentage ??= 0; - return ( -
    -
    - {text} ({percentage.toFixed(2)}%{isNaN(total) ? '' : ` of ${formatBytes(total)}`}) -
    -
    - ); -} diff --git a/examples/whisper-word-timestamps/src/components/Transcript.jsx b/examples/whisper-word-timestamps/src/components/Transcript.jsx deleted file mode 100644 index 542014323..000000000 --- a/examples/whisper-word-timestamps/src/components/Transcript.jsx +++ /dev/null @@ -1,68 +0,0 @@ -import { useMemo } from "react"; - -const Chunk = ({ chunk, currentTime, onClick, ...props }) => { - const { text, timestamp } = chunk; - const [start, end] = timestamp; - - const bolded = start <= currentTime && currentTime < end; - - return ( - - {text.startsWith(' ') ? " " : ""} - x.toFixed(2)).join(' → ')} - style={{ - textDecoration: bolded ? 'underline' : 'none', - textShadow: bolded ? '0 0 1px #000' : 'none', - }} - >{text.trim()} - - ) -} - -const Transcript = ({ transcript, currentTime, setCurrentTime, ...props }) => { - - - const jsonTranscript = useMemo(() => { - return JSON.stringify(transcript, null, 2) - // post-process the JSON to make it more readable - .replace(/( {4}"timestamp": )\[\s+(\S+)\s+(\S+)\s+\]/gm, "$1[$2 $3]"); - }, [transcript]); - - const downloadTranscript = () => { - const blob = new Blob([jsonTranscript], { type: 'application/json' }); - const url = URL.createObjectURL(blob); - const a = document.createElement('a'); - a.href = url; - a.download = 'transcript.json'; - a.click(); - URL.revokeObjectURL(url); - } - - return (<> -
    - { - transcript.chunks.map((chunk, i) => { - setCurrentTime(chunk.timestamp[0]) // Set to start of chunk - }} />) - } -
    - -
    - -
    - - - ) -}; -export default Transcript; diff --git a/examples/whisper-word-timestamps/src/index.css b/examples/whisper-word-timestamps/src/index.css deleted file mode 100644 index 87bbb9dac..000000000 --- a/examples/whisper-word-timestamps/src/index.css +++ /dev/null @@ -1,25 +0,0 @@ -@tailwind base; -@tailwind components; -@tailwind utilities; - -@layer utilities { - .scrollbar-thin::-webkit-scrollbar { - @apply w-2; - } - - .scrollbar-thin::-webkit-scrollbar-track { - @apply rounded-full bg-gray-100 dark:bg-gray-700; - } - - .scrollbar-thin::-webkit-scrollbar-thumb { - @apply rounded-full bg-gray-300 dark:bg-gray-600; - } - - .scrollbar-thin::-webkit-scrollbar-thumb:hover { - @apply bg-gray-500; - } -} - -html { - @apply scrollbar-thin; -} \ No newline at end of file diff --git a/examples/whisper-word-timestamps/src/main.jsx b/examples/whisper-word-timestamps/src/main.jsx deleted file mode 100644 index 54b39dd1d..000000000 --- a/examples/whisper-word-timestamps/src/main.jsx +++ /dev/null @@ -1,10 +0,0 @@ -import React from 'react' -import ReactDOM from 'react-dom/client' -import App from './App.jsx' -import './index.css' - -ReactDOM.createRoot(document.getElementById('root')).render( - - - , -) diff --git a/examples/whisper-word-timestamps/src/worker.js b/examples/whisper-word-timestamps/src/worker.js deleted file mode 100644 index efa029a97..000000000 --- a/examples/whisper-word-timestamps/src/worker.js +++ /dev/null @@ -1,94 +0,0 @@ - -import { pipeline } from '@xenova/transformers'; - -const PER_DEVICE_CONFIG = { - webgpu: { - dtype: { - encoder_model: 'fp32', - decoder_model_merged: 'q4', - }, - device: 'webgpu', - }, - wasm: { - dtype: 'q8', - device: 'wasm', - }, -}; - -/** - * This class uses the Singleton pattern to ensure that only one instance of the model is loaded. - */ -class PipelineSingeton { - static model_id = 'onnx-community/whisper-base_timestamped'; - static instance = null; - - static async getInstance(progress_callback = null, device = 'webgpu') { - - if (!this.instance) { - this.instance = pipeline('automatic-speech-recognition', this.model_id, { - ...PER_DEVICE_CONFIG[device], - progress_callback, - }); - } - return this.instance; - } -} - -async function load({ device }) { - self.postMessage({ - status: 'loading', - data: `Loading model (${device})...` - }); - - // Load the pipeline and save it for future use. - const transcriber = await PipelineSingeton.getInstance(x => { - // We also add a progress callback to the pipeline so that we can - // track model loading. - self.postMessage(x); - }, device); - - if (device === 'webgpu') { - self.postMessage({ - status: 'loading', - data: 'Compiling shaders and warming up model...' - }); - - await transcriber(new Float32Array(16_000), { - language: 'en', - }); - } - - self.postMessage({ status: 'ready' }); -} - -async function run({ audio, language }) { - const transcriber = await PipelineSingeton.getInstance(); - - // Read and preprocess image - const start = performance.now(); - - const result = await transcriber(audio, { - language, - return_timestamps: 'word', - chunk_length_s: 30, - }); - - const end = performance.now(); - - self.postMessage({ status: 'complete', result, time: end - start }); -} - -// Listen for messages from the main thread -self.addEventListener('message', async (e) => { - const { type, data } = e.data; - - switch (type) { - case 'load': - load(data); - break; - - case 'run': - run(data); - break; - } -}); diff --git a/examples/whisper-word-timestamps/tailwind.config.js b/examples/whisper-word-timestamps/tailwind.config.js deleted file mode 100644 index d37737fc0..000000000 --- a/examples/whisper-word-timestamps/tailwind.config.js +++ /dev/null @@ -1,12 +0,0 @@ -/** @type {import('tailwindcss').Config} */ -export default { - content: [ - "./index.html", - "./src/**/*.{js,ts,jsx,tsx}", - ], - theme: { - extend: {}, - }, - plugins: [], -} - diff --git a/examples/whisper-word-timestamps/vite.config.js b/examples/whisper-word-timestamps/vite.config.js deleted file mode 100644 index 5a33944a9..000000000 --- a/examples/whisper-word-timestamps/vite.config.js +++ /dev/null @@ -1,7 +0,0 @@ -import { defineConfig } from 'vite' -import react from '@vitejs/plugin-react' - -// https://vitejs.dev/config/ -export default defineConfig({ - plugins: [react()], -}) From b0ac200ecba898ef51f262c90e0128f65d357a3e Mon Sep 17 00:00:00 2001 From: Joshua Lochner Date: Mon, 23 Dec 2024 14:22:37 +0000 Subject: [PATCH 13/23] Move musicgen web demo --- examples/musicgen-web/.eslintrc.cjs | 21 --- examples/musicgen-web/.gitignore | 24 --- examples/musicgen-web/README.md | 8 - examples/musicgen-web/index.html | 12 -- examples/musicgen-web/package.json | 30 --- examples/musicgen-web/postcss.config.js | 6 - examples/musicgen-web/src/App.css | 9 - examples/musicgen-web/src/App.jsx | 229 ----------------------- examples/musicgen-web/src/index.css | 3 - examples/musicgen-web/src/main.jsx | 10 - examples/musicgen-web/src/utils.js | 59 ------ examples/musicgen-web/tailwind.config.js | 12 -- examples/musicgen-web/vite.config.js | 7 - 13 files changed, 430 deletions(-) delete mode 100644 examples/musicgen-web/.eslintrc.cjs delete mode 100644 examples/musicgen-web/.gitignore delete mode 100644 examples/musicgen-web/README.md delete mode 100644 examples/musicgen-web/index.html delete mode 100644 examples/musicgen-web/package.json delete mode 100644 examples/musicgen-web/postcss.config.js delete mode 100644 examples/musicgen-web/src/App.css delete mode 100644 examples/musicgen-web/src/App.jsx delete mode 100644 examples/musicgen-web/src/index.css delete mode 100644 examples/musicgen-web/src/main.jsx delete mode 100644 examples/musicgen-web/src/utils.js delete mode 100644 examples/musicgen-web/tailwind.config.js delete mode 100644 examples/musicgen-web/vite.config.js diff --git a/examples/musicgen-web/.eslintrc.cjs b/examples/musicgen-web/.eslintrc.cjs deleted file mode 100644 index 3e212e1d4..000000000 --- a/examples/musicgen-web/.eslintrc.cjs +++ /dev/null @@ -1,21 +0,0 @@ -module.exports = { - root: true, - env: { browser: true, es2020: true }, - extends: [ - 'eslint:recommended', - 'plugin:react/recommended', - 'plugin:react/jsx-runtime', - 'plugin:react-hooks/recommended', - ], - ignorePatterns: ['dist', '.eslintrc.cjs'], - parserOptions: { ecmaVersion: 'latest', sourceType: 'module' }, - settings: { react: { version: '18.2' } }, - plugins: ['react-refresh'], - rules: { - 'react/jsx-no-target-blank': 'off', - 'react-refresh/only-export-components': [ - 'warn', - { allowConstantExport: true }, - ], - }, -} diff --git a/examples/musicgen-web/.gitignore b/examples/musicgen-web/.gitignore deleted file mode 100644 index a547bf36d..000000000 --- a/examples/musicgen-web/.gitignore +++ /dev/null @@ -1,24 +0,0 @@ -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -pnpm-debug.log* -lerna-debug.log* - -node_modules -dist -dist-ssr -*.local - -# Editor directories and files -.vscode/* -!.vscode/extensions.json -.idea -.DS_Store -*.suo -*.ntvs* -*.njsproj -*.sln -*.sw? diff --git a/examples/musicgen-web/README.md b/examples/musicgen-web/README.md deleted file mode 100644 index f768e33fc..000000000 --- a/examples/musicgen-web/README.md +++ /dev/null @@ -1,8 +0,0 @@ -# React + Vite - -This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. - -Currently, two official plugins are available: - -- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh -- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh diff --git a/examples/musicgen-web/index.html b/examples/musicgen-web/index.html deleted file mode 100644 index cad1bcd1a..000000000 --- a/examples/musicgen-web/index.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - MusicGen Web | In-browser text-to-music w/ 🤗 Transformers.js! - - -
    - - - diff --git a/examples/musicgen-web/package.json b/examples/musicgen-web/package.json deleted file mode 100644 index 0175494d7..000000000 --- a/examples/musicgen-web/package.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "name": "musicgen-web", - "private": true, - "version": "0.0.0", - "type": "module", - "scripts": { - "dev": "vite", - "build": "vite build", - "lint": "eslint . --ext js,jsx --report-unused-disable-directives --max-warnings 0", - "preview": "vite preview" - }, - "dependencies": { - "@xenova/transformers": "github:xenova/transformers.js#v3", - "react": "^18.2.0", - "react-dom": "^18.2.0" - }, - "devDependencies": { - "@types/react": "^18.2.66", - "@types/react-dom": "^18.2.22", - "@vitejs/plugin-react": "^4.2.1", - "autoprefixer": "^10.4.19", - "eslint": "^8.57.0", - "eslint-plugin-react": "^7.34.1", - "eslint-plugin-react-hooks": "^4.6.0", - "eslint-plugin-react-refresh": "^0.4.6", - "postcss": "^8.4.38", - "tailwindcss": "^3.4.3", - "vite": "^5.2.0" - } -} diff --git a/examples/musicgen-web/postcss.config.js b/examples/musicgen-web/postcss.config.js deleted file mode 100644 index 2e7af2b7f..000000000 --- a/examples/musicgen-web/postcss.config.js +++ /dev/null @@ -1,6 +0,0 @@ -export default { - plugins: { - tailwindcss: {}, - autoprefixer: {}, - }, -} diff --git a/examples/musicgen-web/src/App.css b/examples/musicgen-web/src/App.css deleted file mode 100644 index 91ab868f6..000000000 --- a/examples/musicgen-web/src/App.css +++ /dev/null @@ -1,9 +0,0 @@ -#root { - max-width: 960px; - height: 100vh; - margin: 0 auto; - text-align: center; - display: flex; - justify-content: center; - align-items: center; -} diff --git a/examples/musicgen-web/src/App.jsx b/examples/musicgen-web/src/App.jsx deleted file mode 100644 index a64e8b655..000000000 --- a/examples/musicgen-web/src/App.jsx +++ /dev/null @@ -1,229 +0,0 @@ -import { useEffect, useState, useRef } from 'react'; -import { AutoTokenizer, MusicgenForConditionalGeneration, BaseStreamer } from '@xenova/transformers'; -import { encodeWAV, share } from './utils.js'; - -import './App.css'; - -const MODEL_ID = 'Xenova/musicgen-small'; - -// Adapted from https://huggingface.co/spaces/facebook/MusicGen -const EXAMPLES = [ - '80s pop track with bassy drums and synth', - '90s rock song with loud guitars and heavy drums', - 'a light and cheerly EDM track, with syncopated drums, aery pads, and strong emotions bpm: 130', - 'A cheerful country song with acoustic guitars', - 'lofi slow bpm electro chill with organic samples', -]; - -// Enable sharing if running on Hugging Face Spaces -const SHARING_ENABLED = window.location.host.endsWith('.hf.space'); - -// Streamer to update progress -class CallbackStreamer extends BaseStreamer { - constructor(callback_fn) { - super(); - this.callback_fn = callback_fn; - } - - put(value) { - return this.callback_fn(value); - } - - end() { - return this.callback_fn(); - } -} - -// Main App component -const App = () => { - // Input/output state - const [textInput, setTextInput] = useState(EXAMPLES[0]); - const [progress, setProgress] = useState(0); - const [loadProgress, setLoadProgress] = useState({}); - const [statusText, setStatusText] = useState('Loading model (656MB)...'); - const [result, setResult] = useState(null); - const audioRef = useRef(null); - - // Model and tokenizer references - const modelPromise = useRef(null); - const tokenizerPromise = useRef(null); - - // Generation parameters - const [guidance_scale, setGuidanceScale] = useState(3); - const [temperature, setTemperature] = useState(1); - const [duration, setDuration] = useState(10); - - // Load model and tokenizer on first render - useEffect(() => { - modelPromise.current ??= MusicgenForConditionalGeneration.from_pretrained(MODEL_ID, { - progress_callback: (data) => { - if (data.status !== 'progress') return; - setLoadProgress(prev => ({ ...prev, [data.file]: data })) - }, - dtype: { - text_encoder: 'q8', - decoder_model_merged: 'q8', - encodec_decode: 'fp32', - }, - device: 'wasm', - }); - - tokenizerPromise.current ??= AutoTokenizer.from_pretrained(MODEL_ID); - }, []); - - // Update progress bar based on load progress - useEffect(() => { - const items = Object.values(loadProgress); - if (items.length !== 5) return; // 5 files to load - let loaded = 0; - let total = 0; - for (const data of Object.values(loadProgress)) { - loaded += data.loaded; - total += data.total; - } - const progress = loaded / total; - setProgress(progress); - setStatusText(progress === 1 - ? 'Ready!' - : `Loading model (${(progress * 100).toFixed()}% of 656MB)...` - ); - }, [loadProgress]); - - // Function to handle generating music - const generateMusic = async () => { - // Reset audio player and result - audioRef.current.src = ''; - setResult(null); - - // Get model and tokenizer - const tokenizer = await tokenizerPromise.current; - const model = await modelPromise.current; - - // Get number of tokens to match user-specified duration (more intuitive for user) - // 503 tokens -> 10 seconds generated => ~50 tokens per second - // https://huggingface.co/docs/transformers/model_doc/musicgen#generation - const max_length = Math.min( - Math.max(Math.floor(duration * 50), 1) + 4, - model.generation_config.max_length ?? 1500, - ); - - // Create a streamer to update progress - let num_tokens = 0; - const streamer = new CallbackStreamer((value) => { - const percent = value === undefined ? 1 : ++num_tokens / max_length; - setStatusText(`Generating (${(percent * 100).toFixed()}%)...`); - setProgress(percent); - }); - - // Tokenize input text - const inputs = tokenizer(textInput); - - // Generate music - const audio_values = await model.generate({ - // Inputs - ...inputs, - - // Generation parameters - max_length, - guidance_scale, - temperature, - - // Outputs - streamer, - }); - - setStatusText('Encoding audio...'); - - // Encode audio values to WAV - const sampling_rate = model.config.audio_encoder.sampling_rate; - const wav = encodeWAV(audio_values.data, sampling_rate); - const blob = new Blob([wav], { type: 'audio/wav' }); - setResult(blob); - - audioRef.current.src = URL.createObjectURL(blob); - setStatusText('Done!'); - }; - - return ( -
    -

    MusicGen Web

    -

    In-browser text-to-music w/ 🤗 Transformers.js! -

    - - {/* Text input for user */} - setTextInput(e.target.value)} - className="border border-gray-300 p-2 mb-4 w-full rounded" - /> - - {/* Example buttons */} -
    - {EXAMPLES.map((example, i) => ( - - ))} -
    - - {/* Generation parameters */} -
    - {/* Duration */} -
    - - setDuration(e.target.value)} /> -

    {`${duration} second${duration > 1 ? 's' : ''}`}

    -
    - - {/* Guidance Scale */} -
    - - setGuidanceScale(e.target.value)} /> -

    {guidance_scale}

    -
    - - {/* Temperature */} -
    - - setTemperature(e.target.value)} /> -

    {temperature}

    -
    -
    - - {/* Button to generate music */} - - - {/* Progress bar */} -
    -
    -
    -
    -

    {statusText}

    -
    - - {/* Audio player */} - {
    -
    } -
    - ); -}; - -export default App; diff --git a/examples/musicgen-web/src/index.css b/examples/musicgen-web/src/index.css deleted file mode 100644 index bd6213e1d..000000000 --- a/examples/musicgen-web/src/index.css +++ /dev/null @@ -1,3 +0,0 @@ -@tailwind base; -@tailwind components; -@tailwind utilities; \ No newline at end of file diff --git a/examples/musicgen-web/src/main.jsx b/examples/musicgen-web/src/main.jsx deleted file mode 100644 index 54b39dd1d..000000000 --- a/examples/musicgen-web/src/main.jsx +++ /dev/null @@ -1,10 +0,0 @@ -import React from 'react' -import ReactDOM from 'react-dom/client' -import App from './App.jsx' -import './index.css' - -ReactDOM.createRoot(document.getElementById('root')).render( - - - , -) diff --git a/examples/musicgen-web/src/utils.js b/examples/musicgen-web/src/utils.js deleted file mode 100644 index 436c9daab..000000000 --- a/examples/musicgen-web/src/utils.js +++ /dev/null @@ -1,59 +0,0 @@ - -// Adapted from https://www.npmjs.com/package/audiobuffer-to-wav -export function encodeWAV(samples, sampleRate = 16000) { - let offset = 44; - const buffer = new ArrayBuffer(offset + samples.length * 4); - const view = new DataView(buffer); - - /* RIFF identifier */ - writeString(view, 0, 'RIFF') - /* RIFF chunk length */ - view.setUint32(4, 36 + samples.length * 4, true) - /* RIFF type */ - writeString(view, 8, 'WAVE') - /* format chunk identifier */ - writeString(view, 12, 'fmt ') - /* format chunk length */ - view.setUint32(16, 16, true) - /* sample format (raw) */ - view.setUint16(20, 3, true) - /* channel count */ - view.setUint16(22, 1, true) - /* sample rate */ - view.setUint32(24, sampleRate, true) - /* byte rate (sample rate * block align) */ - view.setUint32(28, sampleRate * 4, true) - /* block align (channel count * bytes per sample) */ - view.setUint16(32, 4, true) - /* bits per sample */ - view.setUint16(34, 32, true) - /* data chunk identifier */ - writeString(view, 36, 'data') - /* data chunk length */ - view.setUint32(40, samples.length * 4, true) - - for (let i = 0; i < samples.length; ++i, offset += 4) { - view.setFloat32(offset, samples[i], true) - } - - return buffer -} -function writeString(view, offset, string) { - for (let i = 0; i < string.length; ++i) { - view.setUint8(offset + i, string.charCodeAt(i)) - } -} - -export async function share(body, settings) { - const response = await fetch('https://huggingface.co/uploads', { method: 'POST', body }); - if (!response.ok) throw new Error(`Failed to upload audio: ${response.statusText}`); - const url = await response.text(); - - const params = new URLSearchParams({ - title: `🎵 ${settings.prompt}`, - description: `\n${JSON.stringify(settings, null, 2)}`, - }); - - const shareURL = `https://huggingface.co/spaces/Xenova/musicgen-web/discussions/new?${params.toString()}`; - window.open(shareURL, '_blank'); -} \ No newline at end of file diff --git a/examples/musicgen-web/tailwind.config.js b/examples/musicgen-web/tailwind.config.js deleted file mode 100644 index d37737fc0..000000000 --- a/examples/musicgen-web/tailwind.config.js +++ /dev/null @@ -1,12 +0,0 @@ -/** @type {import('tailwindcss').Config} */ -export default { - content: [ - "./index.html", - "./src/**/*.{js,ts,jsx,tsx}", - ], - theme: { - extend: {}, - }, - plugins: [], -} - diff --git a/examples/musicgen-web/vite.config.js b/examples/musicgen-web/vite.config.js deleted file mode 100644 index 5a33944a9..000000000 --- a/examples/musicgen-web/vite.config.js +++ /dev/null @@ -1,7 +0,0 @@ -import { defineConfig } from 'vite' -import react from '@vitejs/plugin-react' - -// https://vitejs.dev/config/ -export default defineConfig({ - plugins: [react()], -}) From 4ccb4056b1b26eed0e0944d177217c95cf8178e6 Mon Sep 17 00:00:00 2001 From: Joshua Lochner Date: Mon, 23 Dec 2024 15:39:36 +0000 Subject: [PATCH 14/23] Move cross encoder demo --- examples/cross-encoder/.eslintrc.cjs | 20 - examples/cross-encoder/.gitignore | 24 - examples/cross-encoder/index.html | 13 - examples/cross-encoder/package-lock.json | 5895 --------------------- examples/cross-encoder/package.json | 30 - examples/cross-encoder/postcss.config.js | 6 - examples/cross-encoder/src/App.css | 5 - examples/cross-encoder/src/App.jsx | 124 - examples/cross-encoder/src/index.css | 3 - examples/cross-encoder/src/main.jsx | 10 - examples/cross-encoder/src/worker.js | 62 - examples/cross-encoder/tailwind.config.js | 12 - examples/cross-encoder/vite.config.js | 7 - 13 files changed, 6211 deletions(-) delete mode 100644 examples/cross-encoder/.eslintrc.cjs delete mode 100644 examples/cross-encoder/.gitignore delete mode 100644 examples/cross-encoder/index.html delete mode 100644 examples/cross-encoder/package-lock.json delete mode 100644 examples/cross-encoder/package.json delete mode 100644 examples/cross-encoder/postcss.config.js delete mode 100644 examples/cross-encoder/src/App.css delete mode 100644 examples/cross-encoder/src/App.jsx delete mode 100644 examples/cross-encoder/src/index.css delete mode 100644 examples/cross-encoder/src/main.jsx delete mode 100644 examples/cross-encoder/src/worker.js delete mode 100644 examples/cross-encoder/tailwind.config.js delete mode 100644 examples/cross-encoder/vite.config.js diff --git a/examples/cross-encoder/.eslintrc.cjs b/examples/cross-encoder/.eslintrc.cjs deleted file mode 100644 index 4dcb43901..000000000 --- a/examples/cross-encoder/.eslintrc.cjs +++ /dev/null @@ -1,20 +0,0 @@ -module.exports = { - root: true, - env: { browser: true, es2020: true }, - extends: [ - 'eslint:recommended', - 'plugin:react/recommended', - 'plugin:react/jsx-runtime', - 'plugin:react-hooks/recommended', - ], - ignorePatterns: ['dist', '.eslintrc.cjs'], - parserOptions: { ecmaVersion: 'latest', sourceType: 'module' }, - settings: { react: { version: '18.2' } }, - plugins: ['react-refresh'], - rules: { - 'react-refresh/only-export-components': [ - 'warn', - { allowConstantExport: true }, - ], - }, -} diff --git a/examples/cross-encoder/.gitignore b/examples/cross-encoder/.gitignore deleted file mode 100644 index a547bf36d..000000000 --- a/examples/cross-encoder/.gitignore +++ /dev/null @@ -1,24 +0,0 @@ -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -pnpm-debug.log* -lerna-debug.log* - -node_modules -dist -dist-ssr -*.local - -# Editor directories and files -.vscode/* -!.vscode/extensions.json -.idea -.DS_Store -*.suo -*.ntvs* -*.njsproj -*.sln -*.sw? diff --git a/examples/cross-encoder/index.html b/examples/cross-encoder/index.html deleted file mode 100644 index f3497ecad..000000000 --- a/examples/cross-encoder/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - Reranking w/ Transformers.js - - -
    - - - diff --git a/examples/cross-encoder/package-lock.json b/examples/cross-encoder/package-lock.json deleted file mode 100644 index 48fbb9de7..000000000 --- a/examples/cross-encoder/package-lock.json +++ /dev/null @@ -1,5895 +0,0 @@ -{ - "name": "cross-encoder", - "version": "0.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "cross-encoder", - "version": "0.0.0", - "dependencies": { - "@xenova/transformers": "^2.15.0", - "react": "^18.2.0", - "react-dom": "^18.2.0" - }, - "devDependencies": { - "@types/react": "^18.2.43", - "@types/react-dom": "^18.2.17", - "@vitejs/plugin-react": "^4.2.1", - "autoprefixer": "^10.4.16", - "eslint": "^8.55.0", - "eslint-plugin-react": "^7.33.2", - "eslint-plugin-react-hooks": "^4.6.0", - "eslint-plugin-react-refresh": "^0.4.5", - "postcss": "^8.4.33", - "tailwindcss": "^3.4.1", - "vite": "^5.1.7" - } - }, - "node_modules/@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@alloc/quick-lru": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", - "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@ampproject/remapping": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", - "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", - "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", - "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.9.tgz", - "integrity": "sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw==", - "dev": true, - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.6", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.23.9", - "@babel/parser": "^7.23.9", - "@babel/template": "^7.23.9", - "@babel/traverse": "^7.23.9", - "@babel/types": "^7.23.9", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/generator": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", - "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.23.6", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", - "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.23.5", - "@babel/helper-validator-option": "^7.23.5", - "browserslist": "^4.22.2", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", - "dev": true, - "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", - "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.15" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", - "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.20" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", - "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", - "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", - "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", - "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.9.tgz", - "integrity": "sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ==", - "dev": true, - "dependencies": { - "@babel/template": "^7.23.9", - "@babel/traverse": "^7.23.9", - "@babel/types": "^7.23.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", - "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.9.tgz", - "integrity": "sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-transform-react-jsx-self": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.23.3.tgz", - "integrity": "sha512-qXRvbeKDSfwnlJnanVRp0SfuWE5DQhwQr5xtLBzp56Wabyo+4CMosF6Kfp+eOD/4FYpql64XVJ2W0pVLlJZxOQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-jsx-source": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.23.3.tgz", - "integrity": "sha512-91RS0MDnAWDNvGC6Wio5XYkyWI39FMFO+JK9+4AlgaTH+yWwVTsw7/sn6LK0lH7c5F+TFkpv/3LfCJ1Ydwof/g==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/template": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.23.9.tgz", - "integrity": "sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.23.5", - "@babel/parser": "^7.23.9", - "@babel/types": "^7.23.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.9.tgz", - "integrity": "sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.6", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.9", - "@babel/types": "^7.23.9", - "debug": "^4.3.1", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.9.tgz", - "integrity": "sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==", - "dev": true, - "dependencies": { - "@babel/helper-string-parser": "^7.23.4", - "@babel/helper-validator-identifier": "^7.22.20", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz", - "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz", - "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz", - "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz", - "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz", - "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz", - "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz", - "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz", - "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz", - "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz", - "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz", - "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz", - "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz", - "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz", - "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz", - "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz", - "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz", - "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz", - "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz", - "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz", - "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz", - "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz", - "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz", - "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", - "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", - "dev": true, - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@eslint/js": { - "version": "8.56.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", - "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@huggingface/jinja": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@huggingface/jinja/-/jinja-0.1.2.tgz", - "integrity": "sha512-x5mpbfJt1nKmVep5WNP5VjNsjWApWNj8pPYI+uYMkBWH9bWUJmQmHt2lbf0VCoQd54Oq3XuFEh/UyoVh7rPxmg==", - "engines": { - "node": ">=18" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.14", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", - "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^2.0.2", - "debug": "^4.3.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", - "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", - "dev": true - }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "dev": true, - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.22", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz", - "integrity": "sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "dev": true, - "optional": true, - "engines": { - "node": ">=14" - } - }, - "node_modules/@protobufjs/aspromise": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", - "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" - }, - "node_modules/@protobufjs/base64": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", - "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" - }, - "node_modules/@protobufjs/codegen": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", - "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" - }, - "node_modules/@protobufjs/eventemitter": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", - "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" - }, - "node_modules/@protobufjs/fetch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", - "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", - "dependencies": { - "@protobufjs/aspromise": "^1.1.1", - "@protobufjs/inquire": "^1.1.0" - } - }, - "node_modules/@protobufjs/float": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", - "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" - }, - "node_modules/@protobufjs/inquire": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", - "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" - }, - "node_modules/@protobufjs/path": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", - "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" - }, - "node_modules/@protobufjs/pool": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", - "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" - }, - "node_modules/@protobufjs/utf8": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", - "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" - }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.10.0.tgz", - "integrity": "sha512-/MeDQmcD96nVoRumKUljsYOLqfv1YFJps+0pTrb2Z9Nl/w5qNUysMaWQsrd1mvAlNT4yza1iVyIu4Q4AgF6V3A==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.10.0.tgz", - "integrity": "sha512-lvu0jK97mZDJdpZKDnZI93I0Om8lSDaiPx3OiCk0RXn3E8CMPJNS/wxjAvSJJzhhZpfjXsjLWL8LnS6qET4VNQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.10.0.tgz", - "integrity": "sha512-uFpayx8I8tyOvDkD7X6n0PriDRWxcqEjqgtlxnUA/G9oS93ur9aZ8c8BEpzFmsed1TH5WZNG5IONB8IiW90TQg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.10.0.tgz", - "integrity": "sha512-nIdCX03qFKoR/MwQegQBK+qZoSpO3LESurVAC6s6jazLA1Mpmgzo3Nj3H1vydXp/JM29bkCiuF7tDuToj4+U9Q==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.10.0.tgz", - "integrity": "sha512-Fz7a+y5sYhYZMQFRkOyCs4PLhICAnxRX/GnWYReaAoruUzuRtcf+Qnw+T0CoAWbHCuz2gBUwmWnUgQ67fb3FYw==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.10.0.tgz", - "integrity": "sha512-yPtF9jIix88orwfTi0lJiqINnlWo6p93MtZEoaehZnmCzEmLL0eqjA3eGVeyQhMtxdV+Mlsgfwhh0+M/k1/V7Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.10.0.tgz", - "integrity": "sha512-9GW9yA30ib+vfFiwjX+N7PnjTnCMiUffhWj4vkG4ukYv1kJ4T9gHNg8zw+ChsOccM27G9yXrEtMScf1LaCuoWQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.10.0.tgz", - "integrity": "sha512-X1ES+V4bMq2ws5fF4zHornxebNxMXye0ZZjUrzOrf7UMx1d6wMQtfcchZ8SqUnQPPHdOyOLW6fTcUiFgHFadRA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.10.0.tgz", - "integrity": "sha512-w/5OpT2EnI/Xvypw4FIhV34jmNqU5PZjZue2l2Y3ty1Ootm3SqhI+AmfhlUYGBTd9JnpneZCDnt3uNOiOBkMyw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.10.0.tgz", - "integrity": "sha512-q/meftEe3QlwQiGYxD9rWwB21DoKQ9Q8wA40of/of6yGHhZuGfZO0c3WYkN9dNlopHlNT3mf5BPsUSxoPuVQaw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.10.0.tgz", - "integrity": "sha512-NrR6667wlUfP0BHaEIKgYM/2va+Oj+RjZSASbBMnszM9k+1AmliRjHc3lJIiOehtSSjqYiO7R6KLNrWOX+YNSQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.10.0.tgz", - "integrity": "sha512-FV0Tpt84LPYDduIDcXvEC7HKtyXxdvhdAOvOeWMWbQNulxViH2O07QXkT/FffX4FqEI02jEbCJbr+YcuKdyyMg==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.10.0.tgz", - "integrity": "sha512-OZoJd+o5TaTSQeFFQ6WjFCiltiYVjIdsXxwu/XZ8qRpsvMQr4UsVrE5UyT9RIvsnuF47DqkJKhhVZ2Q9YW9IpQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@types/babel__core": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", - "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "node_modules/@types/babel__generator": { - "version": "7.6.8", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", - "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__template": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", - "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__traverse": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.5.tgz", - "integrity": "sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==", - "dev": true, - "dependencies": { - "@babel/types": "^7.20.7" - } - }, - "node_modules/@types/estree": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", - "dev": true - }, - "node_modules/@types/long": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", - "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==" - }, - "node_modules/@types/node": { - "version": "20.11.17", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.17.tgz", - "integrity": "sha512-QmgQZGWu1Yw9TDyAP9ZzpFJKynYNeOvwMJmaxABfieQoVoiVOS6MN1WSpqpRcbeA5+RW82kraAVxCCJg+780Qw==", - "dependencies": { - "undici-types": "~5.26.4" - } - }, - "node_modules/@types/prop-types": { - "version": "15.7.11", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz", - "integrity": "sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==", - "dev": true - }, - "node_modules/@types/react": { - "version": "18.2.55", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.55.tgz", - "integrity": "sha512-Y2Tz5P4yz23brwm2d7jNon39qoAtMMmalOQv6+fEFt1mT+FcM3D841wDpoUvFXhaYenuROCy3FZYqdTjM7qVyA==", - "dev": true, - "dependencies": { - "@types/prop-types": "*", - "@types/scheduler": "*", - "csstype": "^3.0.2" - } - }, - "node_modules/@types/react-dom": { - "version": "18.2.19", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.19.tgz", - "integrity": "sha512-aZvQL6uUbIJpjZk4U8JZGbau9KDeAwMfmhyWorxgBkqDIEf6ROjRozcmPIicqsUwPUjbkDfHKgGee1Lq65APcA==", - "dev": true, - "dependencies": { - "@types/react": "*" - } - }, - "node_modules/@types/scheduler": { - "version": "0.16.8", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz", - "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==", - "dev": true - }, - "node_modules/@ungap/structured-clone": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", - "dev": true - }, - "node_modules/@vitejs/plugin-react": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.2.1.tgz", - "integrity": "sha512-oojO9IDc4nCUUi8qIR11KoQm0XFFLIwsRBwHRR4d/88IWghn1y6ckz/bJ8GHDCsYEJee8mDzqtJxh15/cisJNQ==", - "dev": true, - "dependencies": { - "@babel/core": "^7.23.5", - "@babel/plugin-transform-react-jsx-self": "^7.23.3", - "@babel/plugin-transform-react-jsx-source": "^7.23.3", - "@types/babel__core": "^7.20.5", - "react-refresh": "^0.14.0" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "peerDependencies": { - "vite": "^4.2.0 || ^5.0.0" - } - }, - "node_modules/@xenova/transformers": { - "version": "2.15.0", - "resolved": "https://registry.npmjs.org/@xenova/transformers/-/transformers-2.15.0.tgz", - "integrity": "sha512-e8pt+yLGSmwZnQR5Q/fq1NJ6fPr3+WKqxh/jF2PzfXFZ2KZsDdFQeCVlk8AnOADP4Aimlqy+Wp/xuws96/pX9A==", - "dependencies": { - "@huggingface/jinja": "^0.1.0", - "onnxruntime-web": "1.14.0", - "sharp": "^0.32.0" - }, - "optionalDependencies": { - "onnxruntime-node": "1.14.0" - } - }, - "node_modules/acorn": { - "version": "8.11.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", - "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", - "dev": true - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/arg": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", - "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", - "dev": true - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", - "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.5", - "is-array-buffer": "^3.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-includes": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz", - "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flat": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", - "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", - "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.tosorted": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.3.tgz", - "integrity": "sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", - "es-errors": "^1.1.0", - "es-shim-unscopables": "^1.0.2" - } - }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", - "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", - "dev": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", - "es-errors": "^1.2.1", - "get-intrinsic": "^1.2.3", - "is-array-buffer": "^3.0.4", - "is-shared-array-buffer": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/asynciterator.prototype": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz", - "integrity": "sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.3" - } - }, - "node_modules/autoprefixer": { - "version": "10.4.17", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.17.tgz", - "integrity": "sha512-/cpVNRLSfhOtcGflT13P2794gVSgmPgTR+erw5ifnMLZb0UnSlkK4tquLmkd3BhA+nLo5tX8Cu0upUsGKvKbmg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "browserslist": "^4.22.2", - "caniuse-lite": "^1.0.30001578", - "fraction.js": "^4.3.7", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", - "postcss-value-parser": "^4.2.0" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" - }, - "engines": { - "node": "^10 || ^12 || >=14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/available-typed-arrays": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.6.tgz", - "integrity": "sha512-j1QzY8iPNPG4o4xmO3ptzpRxTciqD3MgEHtifP/YnJpIo58Xu+ne4BejlbkuaLfXn/nz6HFiw29bLpj2PNMdGg==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/b4a": { - "version": "1.6.6", - "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.6.tgz", - "integrity": "sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==" - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/bare-events": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.2.0.tgz", - "integrity": "sha512-Yyyqff4PIFfSuthCZqLlPISTWHmnQxoPuAvkmgzsJEmG3CesdIv6Xweayl0JkCZJSB2yYIdJyEz97tpxNhgjbg==", - "optional": true - }, - "node_modules/bare-fs": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-2.1.5.tgz", - "integrity": "sha512-5t0nlecX+N2uJqdxe9d18A98cp2u9BETelbjKpiVgQqzzmVNFYWEAjQHqS+2Khgto1vcwhik9cXucaj5ve2WWA==", - "optional": true, - "dependencies": { - "bare-events": "^2.0.0", - "bare-os": "^2.0.0", - "bare-path": "^2.0.0", - "streamx": "^2.13.0" - } - }, - "node_modules/bare-os": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-2.1.3.tgz", - "integrity": "sha512-YMKOQzoMouGCrYgJ0rassKvmbTz+TYDOKKmu4JkfNXS/qKn+If1ODCMEXnmknQXfnB1PS8bR+uHu6xBgwAQXew==", - "optional": true - }, - "node_modules/bare-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-2.1.0.tgz", - "integrity": "sha512-DIIg7ts8bdRKwJRJrUMy/PICEaQZaPGZ26lsSx9MJSwIhSrcdHn7/C8W+XmnG/rKi6BaRcz+JO00CjZteybDtw==", - "optional": true, - "dependencies": { - "bare-os": "^2.1.0" - } - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.22.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.3.tgz", - "integrity": "sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001580", - "electron-to-chromium": "^1.4.648", - "node-releases": "^2.0.14", - "update-browserslist-db": "^1.0.13" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", - "dev": true, - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase-css": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", - "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001587", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001587.tgz", - "integrity": "sha512-HMFNotUmLXn71BQxg8cijvqxnIAofforZOwGsxyXJ0qugTdspUF4sPSJ2vhgprHCB996tIDzEq1ubumPDV8ULA==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ] - }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "dev": true, - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chokidar/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" - }, - "node_modules/color": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", - "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", - "dependencies": { - "color-convert": "^2.0.1", - "color-string": "^1.9.0" - }, - "engines": { - "node": ">=12.5.0" - } - }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "node_modules/color-string": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", - "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", - "dependencies": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "node_modules/color/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true, - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/csstype": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", - "dev": true - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "dependencies": { - "mimic-response": "^3.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dev": true, - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dev": true, - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/detect-libc": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", - "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/didyoumean": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", - "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", - "dev": true - }, - "node_modules/dlv": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", - "dev": true - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true - }, - "node_modules/electron-to-chromium": { - "version": "1.4.668", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.668.tgz", - "integrity": "sha512-ZOBocMYCehr9W31+GpMclR+KBaDZOoAEabLdhpZ8oU1JFDwIaFY0UDbpXVEUFc0BIP2O2Qn3rkfCjQmMR4T/bQ==", - "dev": true - }, - "node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true - }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/es-abstract": { - "version": "1.22.4", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.4.tgz", - "integrity": "sha512-vZYJlk2u6qHYxBOTjAeg7qUxHdNfih64Uu2J8QqWgXZ2cri0ZpJAkzDUK/q593+mvKwlxyaxr6F1Q+3LKoQRgg==", - "dev": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "arraybuffer.prototype.slice": "^1.0.3", - "available-typed-arrays": "^1.0.6", - "call-bind": "^1.0.7", - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "es-set-tostringtag": "^2.0.2", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.4", - "get-symbol-description": "^1.0.2", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.1", - "internal-slot": "^1.0.7", - "is-array-buffer": "^3.0.4", - "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.13", - "is-weakref": "^1.0.2", - "object-inspect": "^1.13.1", - "object-keys": "^1.1.1", - "object.assign": "^4.1.5", - "regexp.prototype.flags": "^1.5.2", - "safe-array-concat": "^1.1.0", - "safe-regex-test": "^1.0.3", - "string.prototype.trim": "^1.2.8", - "string.prototype.trimend": "^1.0.7", - "string.prototype.trimstart": "^1.0.7", - "typed-array-buffer": "^1.0.1", - "typed-array-byte-length": "^1.0.0", - "typed-array-byte-offset": "^1.0.0", - "typed-array-length": "^1.0.4", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.2.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-iterator-helpers": { - "version": "1.0.17", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.17.tgz", - "integrity": "sha512-lh7BsUqelv4KUbR5a/ZTaGGIMLCjPGPqJ6q+Oq24YP0RdyptX1uzm4vvaqzk7Zx3bpl/76YLTTDj9L7uYQ92oQ==", - "dev": true, - "dependencies": { - "asynciterator.prototype": "^1.0.0", - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.22.4", - "es-errors": "^1.3.0", - "es-set-tostringtag": "^2.0.2", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "globalthis": "^1.0.3", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.7", - "iterator.prototype": "^1.1.2", - "safe-array-concat": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", - "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.2.2", - "has-tostringtag": "^1.0.0", - "hasown": "^2.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-shim-unscopables": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", - "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", - "dev": true, - "dependencies": { - "hasown": "^2.0.0" - } - }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/esbuild": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz", - "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==", - "dev": true, - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.19.12", - "@esbuild/android-arm": "0.19.12", - "@esbuild/android-arm64": "0.19.12", - "@esbuild/android-x64": "0.19.12", - "@esbuild/darwin-arm64": "0.19.12", - "@esbuild/darwin-x64": "0.19.12", - "@esbuild/freebsd-arm64": "0.19.12", - "@esbuild/freebsd-x64": "0.19.12", - "@esbuild/linux-arm": "0.19.12", - "@esbuild/linux-arm64": "0.19.12", - "@esbuild/linux-ia32": "0.19.12", - "@esbuild/linux-loong64": "0.19.12", - "@esbuild/linux-mips64el": "0.19.12", - "@esbuild/linux-ppc64": "0.19.12", - "@esbuild/linux-riscv64": "0.19.12", - "@esbuild/linux-s390x": "0.19.12", - "@esbuild/linux-x64": "0.19.12", - "@esbuild/netbsd-x64": "0.19.12", - "@esbuild/openbsd-x64": "0.19.12", - "@esbuild/sunos-x64": "0.19.12", - "@esbuild/win32-arm64": "0.19.12", - "@esbuild/win32-ia32": "0.19.12", - "@esbuild/win32-x64": "0.19.12" - } - }, - "node_modules/escalade": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", - "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/eslint": { - "version": "8.56.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", - "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.56.0", - "@humanwhocodes/config-array": "^0.11.13", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-plugin-react": { - "version": "7.33.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz", - "integrity": "sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==", - "dev": true, - "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flatmap": "^1.3.1", - "array.prototype.tosorted": "^1.1.1", - "doctrine": "^2.1.0", - "es-iterator-helpers": "^1.0.12", - "estraverse": "^5.3.0", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.1.2", - "object.entries": "^1.1.6", - "object.fromentries": "^2.0.6", - "object.hasown": "^1.1.2", - "object.values": "^1.1.6", - "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.4", - "semver": "^6.3.1", - "string.prototype.matchall": "^4.0.8" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" - } - }, - "node_modules/eslint-plugin-react-hooks": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", - "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", - "dev": true, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" - } - }, - "node_modules/eslint-plugin-react-refresh": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.5.tgz", - "integrity": "sha512-D53FYKJa+fDmZMtriODxvhwrO+IOqrxoEo21gMA0sjHdU6dPVH4OhyFip9ypl8HOF5RV5KdTo+rBQLvnY2cO8w==", - "dev": true, - "peerDependencies": { - "eslint": ">=7" - } - }, - "node_modules/eslint-plugin-react/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/eslint/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/eslint/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/eslint/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/eslint/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dev": true, - "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", - "dev": true, - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-template": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", - "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-fifo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", - "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==" - }, - "node_modules/fast-glob": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "node_modules/fastq": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", - "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat-cache": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", - "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", - "dev": true, - "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatbuffers": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/flatbuffers/-/flatbuffers-1.12.0.tgz", - "integrity": "sha512-c7CZADjRcl6j0PlvFy0ZqXQ67qSEZfrVPynmnL+2zPc+NtMvrF8Y0QceMo7QqnSPc7+uWjUIAbvCQ5WIKlMVdQ==" - }, - "node_modules/flatted": { - "version": "3.2.9", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", - "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", - "dev": true - }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.3" - } - }, - "node_modules/foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/fraction.js": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", - "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", - "dev": true, - "engines": { - "node": "*" - }, - "funding": { - "type": "patreon", - "url": "https://github.com/sponsors/rawify" - } - }, - "node_modules/fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/function.prototype.name": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", - "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "functions-have-names": "^1.2.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", - "dev": true, - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-symbol-description": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", - "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/github-from-package": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", - "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==" - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", - "dev": true, - "dependencies": { - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true - }, - "node_modules/guid-typescript": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/guid-typescript/-/guid-typescript-1.0.9.tgz", - "integrity": "sha512-Y8T4vYhEfwJOTbouREvG+3XDsjr8E3kIr7uf+JZ0BYloFsttiHU0WfvANVsR7TxNUJa/WpCnw/Ino/p+DeBhBQ==" - }, - "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dev": true, - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.1.tgz", - "integrity": "sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/ignore": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", - "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" - }, - "node_modules/internal-slot": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", - "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", - "dev": true, - "dependencies": { - "es-errors": "^1.3.0", - "hasown": "^2.0.0", - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/is-array-buffer": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", - "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" - }, - "node_modules/is-async-function": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", - "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dev": true, - "dependencies": { - "has-bigints": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", - "dev": true, - "dependencies": { - "hasown": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-finalizationregistry": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", - "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-generator-function": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", - "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", - "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-set": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", - "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", - "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", - "dev": true, - "dependencies": { - "which-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakmap": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", - "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakset": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", - "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "node_modules/iterator.prototype": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", - "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", - "dev": true, - "dependencies": { - "define-properties": "^1.2.1", - "get-intrinsic": "^1.2.1", - "has-symbols": "^1.0.3", - "reflect.getprototypeof": "^1.0.4", - "set-function-name": "^2.0.1" - } - }, - "node_modules/jackspeak": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", - "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", - "dev": true, - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, - "node_modules/jiti": { - "version": "1.21.0", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz", - "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==", - "dev": true, - "bin": { - "jiti": "bin/jiti.js" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsx-ast-utils": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", - "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", - "dev": true, - "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flat": "^1.3.1", - "object.assign": "^4.1.4", - "object.values": "^1.1.6" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "dev": true, - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/lilconfig": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", - "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "node_modules/long": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", - "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", - "dev": true, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/mz": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", - "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", - "dev": true, - "dependencies": { - "any-promise": "^1.0.0", - "object-assign": "^4.0.1", - "thenify-all": "^1.0.0" - } - }, - "node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/napi-build-utils": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", - "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==" - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "node_modules/node-abi": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.54.0.tgz", - "integrity": "sha512-p7eGEiQil0YUV3ItH4/tBb781L5impVmmx2E9FRKF7d18XXzp4PGT2tdYMFY6wQqgxD0IwNZOiSJ0/K0fSi/OA==", - "dependencies": { - "semver": "^7.3.5" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/node-abi/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/node-abi/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/node-abi/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "node_modules/node-addon-api": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz", - "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==" - }, - "node_modules/node-releases": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", - "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", - "dev": true - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-hash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", - "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/object-inspect": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", - "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.entries": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.7.tgz", - "integrity": "sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.fromentries": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz", - "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.hasown": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.3.tgz", - "integrity": "sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==", - "dev": true, - "dependencies": { - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.values": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz", - "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onnx-proto": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/onnx-proto/-/onnx-proto-4.0.4.tgz", - "integrity": "sha512-aldMOB3HRoo6q/phyB6QRQxSt895HNNw82BNyZ2CMh4bjeKv7g/c+VpAFtJuEMVfYLMbRx61hbuqnKceLeDcDA==", - "dependencies": { - "protobufjs": "^6.8.8" - } - }, - "node_modules/onnxruntime-common": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/onnxruntime-common/-/onnxruntime-common-1.14.0.tgz", - "integrity": "sha512-3LJpegM2iMNRX2wUmtYfeX/ytfOzNwAWKSq1HbRrKc9+uqG/FsEA0bbKZl1btQeZaXhC26l44NWpNUeXPII7Ew==" - }, - "node_modules/onnxruntime-node": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/onnxruntime-node/-/onnxruntime-node-1.14.0.tgz", - "integrity": "sha512-5ba7TWomIV/9b6NH/1x/8QEeowsb+jBEvFzU6z0T4mNsFwdPqXeFUM7uxC6QeSRkEbWu3qEB0VMjrvzN/0S9+w==", - "optional": true, - "os": [ - "win32", - "darwin", - "linux" - ], - "dependencies": { - "onnxruntime-common": "~1.14.0" - } - }, - "node_modules/onnxruntime-web": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/onnxruntime-web/-/onnxruntime-web-1.14.0.tgz", - "integrity": "sha512-Kcqf43UMfW8mCydVGcX9OMXI2VN17c0p6XvR7IPSZzBf/6lteBzXHvcEVWDPmCKuGombl997HgLqj91F11DzXw==", - "dependencies": { - "flatbuffers": "^1.12.0", - "guid-typescript": "^1.0.9", - "long": "^4.0.0", - "onnx-proto": "^4.0.4", - "onnxruntime-common": "~1.14.0", - "platform": "^1.3.6" - } - }, - "node_modules/optionator": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", - "dev": true, - "dependencies": { - "@aashutoshrathi/word-wrap": "^1.2.3", - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/path-scurry": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", - "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", - "dev": true, - "dependencies": { - "lru-cache": "^9.1.1 || ^10.0.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", - "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", - "dev": true, - "engines": { - "node": "14 || >=16.14" - } - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pirates": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", - "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/platform": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.6.tgz", - "integrity": "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==" - }, - "node_modules/postcss": { - "version": "8.4.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", - "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "nanoid": "^3.3.7", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/postcss-import": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", - "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.0.0", - "read-cache": "^1.0.0", - "resolve": "^1.1.7" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "postcss": "^8.0.0" - } - }, - "node_modules/postcss-import/node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/postcss-js": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", - "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", - "dev": true, - "dependencies": { - "camelcase-css": "^2.0.1" - }, - "engines": { - "node": "^12 || ^14 || >= 16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": "^8.4.21" - } - }, - "node_modules/postcss-load-config": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", - "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "lilconfig": "^3.0.0", - "yaml": "^2.3.4" - }, - "engines": { - "node": ">= 14" - }, - "peerDependencies": { - "postcss": ">=8.0.9", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "postcss": { - "optional": true - }, - "ts-node": { - "optional": true - } - } - }, - "node_modules/postcss-load-config/node_modules/lilconfig": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.0.0.tgz", - "integrity": "sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==", - "dev": true, - "engines": { - "node": ">=14" - } - }, - "node_modules/postcss-nested": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz", - "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.11" - }, - "engines": { - "node": ">=12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": "^8.2.14" - } - }, - "node_modules/postcss-selector-parser": { - "version": "6.0.15", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz", - "integrity": "sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==", - "dev": true, - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true - }, - "node_modules/prebuild-install": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz", - "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==", - "dependencies": { - "detect-libc": "^2.0.0", - "expand-template": "^2.0.3", - "github-from-package": "0.0.0", - "minimist": "^1.2.3", - "mkdirp-classic": "^0.5.3", - "napi-build-utils": "^1.0.1", - "node-abi": "^3.3.0", - "pump": "^3.0.0", - "rc": "^1.2.7", - "simple-get": "^4.0.0", - "tar-fs": "^2.0.0", - "tunnel-agent": "^0.6.0" - }, - "bin": { - "prebuild-install": "bin.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/prebuild-install/node_modules/tar-fs": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", - "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", - "dependencies": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^2.1.4" - } - }, - "node_modules/prebuild-install/node_modules/tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "dev": true, - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" - } - }, - "node_modules/protobufjs": { - "version": "6.11.4", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.4.tgz", - "integrity": "sha512-5kQWPaJHi1WoCpjTGszzQ32PG2F4+wRY6BmAT4Vfw56Q2FZ4YZzK20xUYQH4YkfehY1e6QSICrJquM6xXZNcrw==", - "hasInstallScript": true, - "dependencies": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", - "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", - "@types/long": "^4.0.1", - "@types/node": ">=13.7.0", - "long": "^4.0.0" - }, - "bin": { - "pbjs": "bin/pbjs", - "pbts": "bin/pbts" - } - }, - "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/queue-tick": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", - "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==" - }, - "node_modules/rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "bin": { - "rc": "cli.js" - } - }, - "node_modules/rc/node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", - "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", - "dependencies": { - "loose-envify": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-dom": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", - "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", - "dependencies": { - "loose-envify": "^1.1.0", - "scheduler": "^0.23.0" - }, - "peerDependencies": { - "react": "^18.2.0" - } - }, - "node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "dev": true - }, - "node_modules/react-refresh": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", - "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/read-cache": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", - "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", - "dev": true, - "dependencies": { - "pify": "^2.3.0" - } - }, - "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/reflect.getprototypeof": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.5.tgz", - "integrity": "sha512-62wgfC8dJWrmxv44CA36pLDnP6KKl3Vhxb7PL+8+qrrFMMoJij4vgiMP8zV4O8+CBMXY1mHxI5fITGHXFHVmQQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", - "es-errors": "^1.0.0", - "get-intrinsic": "^1.2.3", - "globalthis": "^1.0.3", - "which-builtin-type": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", - "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.6", - "define-properties": "^1.2.1", - "es-errors": "^1.3.0", - "set-function-name": "^2.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve": { - "version": "2.0.0-next.5", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", - "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", - "dev": true, - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rollup": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.10.0.tgz", - "integrity": "sha512-t2v9G2AKxcQ8yrG+WGxctBes1AomT0M4ND7jTFBCVPXQ/WFTvNSefIrNSmLKhIKBrvN8SG+CZslimJcT3W2u2g==", - "dev": true, - "dependencies": { - "@types/estree": "1.0.5" - }, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.10.0", - "@rollup/rollup-android-arm64": "4.10.0", - "@rollup/rollup-darwin-arm64": "4.10.0", - "@rollup/rollup-darwin-x64": "4.10.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.10.0", - "@rollup/rollup-linux-arm64-gnu": "4.10.0", - "@rollup/rollup-linux-arm64-musl": "4.10.0", - "@rollup/rollup-linux-riscv64-gnu": "4.10.0", - "@rollup/rollup-linux-x64-gnu": "4.10.0", - "@rollup/rollup-linux-x64-musl": "4.10.0", - "@rollup/rollup-win32-arm64-msvc": "4.10.0", - "@rollup/rollup-win32-ia32-msvc": "4.10.0", - "@rollup/rollup-win32-x64-msvc": "4.10.0", - "fsevents": "~2.3.2" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/safe-array-concat": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.0.tgz", - "integrity": "sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.5", - "get-intrinsic": "^1.2.2", - "has-symbols": "^1.0.3", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/safe-regex-test": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", - "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-regex": "^1.1.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/scheduler": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", - "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", - "dependencies": { - "loose-envify": "^1.1.0" - } - }, - "node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/set-function-length": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.1.tgz", - "integrity": "sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==", - "dev": true, - "dependencies": { - "define-data-property": "^1.1.2", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.3", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-function-name": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", - "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", - "dev": true, - "dependencies": { - "define-data-property": "^1.0.1", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/sharp": { - "version": "0.32.6", - "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.32.6.tgz", - "integrity": "sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==", - "hasInstallScript": true, - "dependencies": { - "color": "^4.2.3", - "detect-libc": "^2.0.2", - "node-addon-api": "^6.1.0", - "prebuild-install": "^7.1.1", - "semver": "^7.5.4", - "simple-get": "^4.0.1", - "tar-fs": "^3.0.4", - "tunnel-agent": "^0.6.0" - }, - "engines": { - "node": ">=14.15.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/sharp/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/sharp/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/sharp/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/side-channel": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.5.tgz", - "integrity": "sha512-QcgiIWV4WV7qWExbN5llt6frQB/lBven9pqliLXfGPB+K9ZYXxDozp0wLkHS24kWCm+6YXH/f0HhnObZnZOBnQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "object-inspect": "^1.13.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/simple-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/simple-get": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", - "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "decompress-response": "^6.0.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } - }, - "node_modules/simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", - "dependencies": { - "is-arrayish": "^0.3.1" - } - }, - "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/streamx": { - "version": "2.15.8", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.15.8.tgz", - "integrity": "sha512-6pwMeMY/SuISiRsuS8TeIrAzyFbG5gGPHFQsYjUr/pbBadaL1PCWmzKw+CHZSwainfvcF6Si6cVLq4XTEwswFQ==", - "dependencies": { - "fast-fifo": "^1.1.0", - "queue-tick": "^1.0.1" - }, - "optionalDependencies": { - "bare-events": "^2.2.0" - } - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/string-width-cjs": { - "name": "string-width", - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/string-width/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/string-width/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/string.prototype.matchall": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz", - "integrity": "sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", - "regexp.prototype.flags": "^1.5.0", - "set-function-name": "^2.0.0", - "side-channel": "^1.0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trim": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", - "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", - "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", - "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/sucrase": { - "version": "3.35.0", - "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", - "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.2", - "commander": "^4.0.0", - "glob": "^10.3.10", - "lines-and-columns": "^1.1.6", - "mz": "^2.7.0", - "pirates": "^4.0.1", - "ts-interface-checker": "^0.1.9" - }, - "bin": { - "sucrase": "bin/sucrase", - "sucrase-node": "bin/sucrase-node" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/sucrase/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/sucrase/node_modules/glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", - "dev": true, - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/sucrase/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/tailwindcss": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.1.tgz", - "integrity": "sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA==", - "dev": true, - "dependencies": { - "@alloc/quick-lru": "^5.2.0", - "arg": "^5.0.2", - "chokidar": "^3.5.3", - "didyoumean": "^1.2.2", - "dlv": "^1.1.3", - "fast-glob": "^3.3.0", - "glob-parent": "^6.0.2", - "is-glob": "^4.0.3", - "jiti": "^1.19.1", - "lilconfig": "^2.1.0", - "micromatch": "^4.0.5", - "normalize-path": "^3.0.0", - "object-hash": "^3.0.0", - "picocolors": "^1.0.0", - "postcss": "^8.4.23", - "postcss-import": "^15.1.0", - "postcss-js": "^4.0.1", - "postcss-load-config": "^4.0.1", - "postcss-nested": "^6.0.1", - "postcss-selector-parser": "^6.0.11", - "resolve": "^1.22.2", - "sucrase": "^3.32.0" - }, - "bin": { - "tailwind": "lib/cli.js", - "tailwindcss": "lib/cli.js" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/tailwindcss/node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/tar-fs": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.5.tgz", - "integrity": "sha512-JOgGAmZyMgbqpLwct7ZV8VzkEB6pxXFBVErLtb+XCOqzc6w1xiWKI9GVd6bwk68EX7eJ4DWmfXVmq8K2ziZTGg==", - "dependencies": { - "pump": "^3.0.0", - "tar-stream": "^3.1.5" - }, - "optionalDependencies": { - "bare-fs": "^2.1.1", - "bare-path": "^2.1.0" - } - }, - "node_modules/tar-stream": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", - "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", - "dependencies": { - "b4a": "^1.6.4", - "fast-fifo": "^1.2.0", - "streamx": "^2.15.0" - } - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "node_modules/thenify": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", - "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", - "dev": true, - "dependencies": { - "any-promise": "^1.0.0" - } - }, - "node_modules/thenify-all": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", - "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", - "dev": true, - "dependencies": { - "thenify": ">= 3.1.0 < 4" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/ts-interface-checker": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", - "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", - "dev": true - }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typed-array-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.1.tgz", - "integrity": "sha512-RSqu1UEuSlrBhHTWC8O9FnPjOduNs4M7rJ4pRKoEjtx1zUNOPN2sSXHLDX+Y2WPbHIxbvg4JFo2DNAEfPIKWoQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/typed-array-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", - "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", - "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", - "dev": true, - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" - }, - "node_modules/update-browserslist-db": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", - "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "node_modules/vite": { - "version": "5.1.7", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.1.7.tgz", - "integrity": "sha512-sgnEEFTZYMui/sTlH1/XEnVNHMujOahPLGMxn1+5sIT45Xjng1Ec1K78jRP15dSmVgg5WBin9yO81j3o9OxofA==", - "dev": true, - "dependencies": { - "esbuild": "^0.19.3", - "postcss": "^8.4.35", - "rollup": "^4.2.0" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^18.0.0 || >=20.0.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - }, - "peerDependencies": { - "@types/node": "^18.0.0 || >=20.0.0", - "less": "*", - "lightningcss": "^1.21.0", - "sass": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.4.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - } - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, - "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-builtin-type": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz", - "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==", - "dev": true, - "dependencies": { - "function.prototype.name": "^1.1.5", - "has-tostringtag": "^1.0.0", - "is-async-function": "^2.0.0", - "is-date-object": "^1.0.5", - "is-finalizationregistry": "^1.0.2", - "is-generator-function": "^1.0.10", - "is-regex": "^1.1.4", - "is-weakref": "^1.0.2", - "isarray": "^2.0.5", - "which-boxed-primitive": "^1.0.2", - "which-collection": "^1.0.1", - "which-typed-array": "^1.1.9" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-collection": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", - "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", - "dev": true, - "dependencies": { - "is-map": "^2.0.1", - "is-set": "^2.0.1", - "is-weakmap": "^2.0.1", - "is-weakset": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-typed-array": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.14.tgz", - "integrity": "sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg==", - "dev": true, - "dependencies": { - "available-typed-arrays": "^1.0.6", - "call-bind": "^1.0.5", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs": { - "name": "wrap-ansi", - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/wrap-ansi-cjs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, - "node_modules/yaml": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz", - "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==", - "dev": true, - "engines": { - "node": ">= 14" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - } -} diff --git a/examples/cross-encoder/package.json b/examples/cross-encoder/package.json deleted file mode 100644 index a505be482..000000000 --- a/examples/cross-encoder/package.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "name": "cross-encoder", - "private": true, - "version": "0.0.0", - "type": "module", - "scripts": { - "dev": "vite", - "build": "vite build", - "lint": "eslint . --ext js,jsx --report-unused-disable-directives --max-warnings 0", - "preview": "vite preview" - }, - "dependencies": { - "@xenova/transformers": "^2.15.0", - "react": "^18.2.0", - "react-dom": "^18.2.0" - }, - "devDependencies": { - "@types/react": "^18.2.43", - "@types/react-dom": "^18.2.17", - "@vitejs/plugin-react": "^4.2.1", - "autoprefixer": "^10.4.16", - "eslint": "^8.55.0", - "eslint-plugin-react": "^7.33.2", - "eslint-plugin-react-hooks": "^4.6.0", - "eslint-plugin-react-refresh": "^0.4.5", - "postcss": "^8.4.33", - "tailwindcss": "^3.4.1", - "vite": "^5.1.7" - } -} diff --git a/examples/cross-encoder/postcss.config.js b/examples/cross-encoder/postcss.config.js deleted file mode 100644 index 2e7af2b7f..000000000 --- a/examples/cross-encoder/postcss.config.js +++ /dev/null @@ -1,6 +0,0 @@ -export default { - plugins: { - tailwindcss: {}, - autoprefixer: {}, - }, -} diff --git a/examples/cross-encoder/src/App.css b/examples/cross-encoder/src/App.css deleted file mode 100644 index c3951888c..000000000 --- a/examples/cross-encoder/src/App.css +++ /dev/null @@ -1,5 +0,0 @@ -#root { - height: 100vh; - width: 100vw; - padding: 1rem; -} diff --git a/examples/cross-encoder/src/App.jsx b/examples/cross-encoder/src/App.jsx deleted file mode 100644 index 5de65a7bd..000000000 --- a/examples/cross-encoder/src/App.jsx +++ /dev/null @@ -1,124 +0,0 @@ -import { useState, useRef, useEffect, useCallback } from 'react' -import './App.css' - -const PLACEHOLDER_TEXTS = [ - "'To Kill a Mockingbird' is a novel by Harper Lee published in 1960. It was immediately successful, winning the Pulitzer Prize, and has become a classic of modern American literature.", - "The novel 'Moby-Dick' was written by Herman Melville and first published in 1851. It is considered a masterpiece of American literature and deals with complex themes of obsession, revenge, and the conflict between good and evil.", - "Harper Lee, an American novelist widely known for her novel 'To Kill a Mockingbird', was born in 1926 in Monroeville, Alabama. She received the Pulitzer Prize for Fiction in 1961.", - "Jane Austen was an English novelist known primarily for her six major novels, which interpret, critique and comment upon the British landed gentry at the end of the 18th century.", - "The 'Harry Potter' series, which consists of seven fantasy novels written by British author J.K. Rowling, is among the most popular and critically acclaimed books of the modern era.", - "'The Great Gatsby', a novel written by American author F. Scott Fitzgerald, was published in 1925. The story is set in the Jazz Age and follows the life of millionaire Jay Gatsby and his pursuit of Daisy Buchanan." -].sort(() => Math.random() - 0.5); - -function App() { - const [status, setStatus] = useState('idle'); - - const [query, setQuery] = useState(`Who wrote 'To Kill a Mockingbird'?`); - const [documents, setDocuments] = useState(PLACEHOLDER_TEXTS.join('\n')); - - const [results, setResults] = useState([]); - - // Create a reference to the worker object. - const worker = useRef(null); - - // We use the `useEffect` hook to setup the worker as soon as the `App` component is mounted. - useEffect(() => { - if (!worker.current) { - // Create the worker if it does not yet exist. - worker.current = new Worker(new URL('./worker.js', import.meta.url), { - type: 'module' - }); - } - - // Create a callback function for messages from the worker thread. - const onMessageReceived = (e) => { - const status = e.data.status; - if (e.data.file?.endsWith('.onnx')) { - if (status === 'initiate') { - setStatus('loading'); - } else if (status === 'done') { - setStatus('ready'); - } - } else if (status === 'complete') { - setResults(e.data.output); - setStatus('idle'); - } - }; - - // Attach the callback function as an event listener. - worker.current.addEventListener('message', onMessageReceived); - - // Define a cleanup function for when the component is unmounted. - return () => worker.current.removeEventListener('message', onMessageReceived); - }, []); - - const run = useCallback(() => { - setStatus('processing'); - worker.current.postMessage({ - query, - documents, - }); - }, [query, documents]) - - const busy = status !== 'idle'; - - return ( -
    -

    Reranking w/ The Crispy mixedbread Rerank Models

    -

    Powered by mxbai-rerank-xsmall-v1 and 🤗 Transformers.js

    -
    -
    - - - - - - -
    -
    - {results.length > 0 && (<> -
    - -
    - {results.map((result, i) => ( -
    - {result.score.toFixed(3)} - {result.text} -
    - ))} -
    -
    - ) - } -
    -
    -
    - ) -} - -export default App diff --git a/examples/cross-encoder/src/index.css b/examples/cross-encoder/src/index.css deleted file mode 100644 index b5c61c956..000000000 --- a/examples/cross-encoder/src/index.css +++ /dev/null @@ -1,3 +0,0 @@ -@tailwind base; -@tailwind components; -@tailwind utilities; diff --git a/examples/cross-encoder/src/main.jsx b/examples/cross-encoder/src/main.jsx deleted file mode 100644 index 54b39dd1d..000000000 --- a/examples/cross-encoder/src/main.jsx +++ /dev/null @@ -1,10 +0,0 @@ -import React from 'react' -import ReactDOM from 'react-dom/client' -import App from './App.jsx' -import './index.css' - -ReactDOM.createRoot(document.getElementById('root')).render( - - - , -) diff --git a/examples/cross-encoder/src/worker.js b/examples/cross-encoder/src/worker.js deleted file mode 100644 index 0507baf6a..000000000 --- a/examples/cross-encoder/src/worker.js +++ /dev/null @@ -1,62 +0,0 @@ -import { env, AutoTokenizer, AutoModelForSequenceClassification } from '@xenova/transformers'; - -// Skip local model check since we are downloading the model from the Hugging Face Hub. -env.allowLocalModels = false; - -class CrossEncoderSingleton { - static model_id = 'mixedbread-ai/mxbai-rerank-xsmall-v1'; - static model = null; - static tokenizer = null; - - static async getInstance(progress_callback) { - if (!this.tokenizer) { - this.tokenizer = AutoTokenizer.from_pretrained(this.model_id); - } - - if (!this.model) { - this.model = AutoModelForSequenceClassification.from_pretrained(this.model_id, { - quantized: true, - progress_callback, - }); - } - - return Promise.all([this.tokenizer, this.model]); - } -} - -// Listen for messages from the main thread -self.addEventListener('message', async (event) => { - // Retrieve the pipeline. When called for the first time, - // this will load the pipeline and save it for future use. - const [tokenizer, model] = await CrossEncoderSingleton.getInstance(x => { - // We also add a progress callback to the pipeline so that we can - // track model loading. - self.postMessage(x); - }); - - const { query, documents } = event.data; - - const docs = documents.trim().split('\n'); - - const inputs = tokenizer( - new Array(docs.length).fill(query), - { - text_pair: docs, - padding: true, - truncation: true, - } - ) - const { logits } = await model(inputs); - const output = logits - .sigmoid() - .tolist() - .map(([score], i) => ({ - corpus_id: i, - score, - text: docs[i], - })) - .sort((a, b) => b.score - a.score); - - // Send the output back to the main thread - self.postMessage({ status: 'complete', output }); -}); diff --git a/examples/cross-encoder/tailwind.config.js b/examples/cross-encoder/tailwind.config.js deleted file mode 100644 index d37737fc0..000000000 --- a/examples/cross-encoder/tailwind.config.js +++ /dev/null @@ -1,12 +0,0 @@ -/** @type {import('tailwindcss').Config} */ -export default { - content: [ - "./index.html", - "./src/**/*.{js,ts,jsx,tsx}", - ], - theme: { - extend: {}, - }, - plugins: [], -} - diff --git a/examples/cross-encoder/vite.config.js b/examples/cross-encoder/vite.config.js deleted file mode 100644 index 5a33944a9..000000000 --- a/examples/cross-encoder/vite.config.js +++ /dev/null @@ -1,7 +0,0 @@ -import { defineConfig } from 'vite' -import react from '@vitejs/plugin-react' - -// https://vitejs.dev/config/ -export default defineConfig({ - plugins: [react()], -}) From bc006e5a7186ed22be2c57c3071c3bbb20c275f1 Mon Sep 17 00:00:00 2001 From: Joshua Lochner Date: Mon, 23 Dec 2024 16:05:48 +0000 Subject: [PATCH 15/23] Move text-to-speech client demo --- examples/text-to-speech-client/.eslintrc.cjs | 20 --- examples/text-to-speech-client/.gitignore | 24 --- examples/text-to-speech-client/README.md | 8 - examples/text-to-speech-client/index.html | 12 -- examples/text-to-speech-client/package.json | 30 ---- .../text-to-speech-client/postcss.config.js | 6 - examples/text-to-speech-client/src/App.jsx | 162 ------------------ .../src/components/AudioPlayer.jsx | 26 --- .../src/components/Progress.jsx | 12 -- .../text-to-speech-client/src/constants.js | 11 -- examples/text-to-speech-client/src/index.css | 21 --- examples/text-to-speech-client/src/main.jsx | 10 -- examples/text-to-speech-client/src/utils.js | 47 ----- examples/text-to-speech-client/src/worker.js | 97 ----------- .../text-to-speech-client/tailwind.config.js | 12 -- examples/text-to-speech-client/vite.config.js | 7 - 16 files changed, 505 deletions(-) delete mode 100644 examples/text-to-speech-client/.eslintrc.cjs delete mode 100644 examples/text-to-speech-client/.gitignore delete mode 100644 examples/text-to-speech-client/README.md delete mode 100644 examples/text-to-speech-client/index.html delete mode 100644 examples/text-to-speech-client/package.json delete mode 100644 examples/text-to-speech-client/postcss.config.js delete mode 100644 examples/text-to-speech-client/src/App.jsx delete mode 100644 examples/text-to-speech-client/src/components/AudioPlayer.jsx delete mode 100644 examples/text-to-speech-client/src/components/Progress.jsx delete mode 100644 examples/text-to-speech-client/src/constants.js delete mode 100644 examples/text-to-speech-client/src/index.css delete mode 100644 examples/text-to-speech-client/src/main.jsx delete mode 100644 examples/text-to-speech-client/src/utils.js delete mode 100644 examples/text-to-speech-client/src/worker.js delete mode 100644 examples/text-to-speech-client/tailwind.config.js delete mode 100644 examples/text-to-speech-client/vite.config.js diff --git a/examples/text-to-speech-client/.eslintrc.cjs b/examples/text-to-speech-client/.eslintrc.cjs deleted file mode 100644 index 4dcb43901..000000000 --- a/examples/text-to-speech-client/.eslintrc.cjs +++ /dev/null @@ -1,20 +0,0 @@ -module.exports = { - root: true, - env: { browser: true, es2020: true }, - extends: [ - 'eslint:recommended', - 'plugin:react/recommended', - 'plugin:react/jsx-runtime', - 'plugin:react-hooks/recommended', - ], - ignorePatterns: ['dist', '.eslintrc.cjs'], - parserOptions: { ecmaVersion: 'latest', sourceType: 'module' }, - settings: { react: { version: '18.2' } }, - plugins: ['react-refresh'], - rules: { - 'react-refresh/only-export-components': [ - 'warn', - { allowConstantExport: true }, - ], - }, -} diff --git a/examples/text-to-speech-client/.gitignore b/examples/text-to-speech-client/.gitignore deleted file mode 100644 index a547bf36d..000000000 --- a/examples/text-to-speech-client/.gitignore +++ /dev/null @@ -1,24 +0,0 @@ -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -pnpm-debug.log* -lerna-debug.log* - -node_modules -dist -dist-ssr -*.local - -# Editor directories and files -.vscode/* -!.vscode/extensions.json -.idea -.DS_Store -*.suo -*.ntvs* -*.njsproj -*.sln -*.sw? diff --git a/examples/text-to-speech-client/README.md b/examples/text-to-speech-client/README.md deleted file mode 100644 index f768e33fc..000000000 --- a/examples/text-to-speech-client/README.md +++ /dev/null @@ -1,8 +0,0 @@ -# React + Vite - -This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. - -Currently, two official plugins are available: - -- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh -- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh diff --git a/examples/text-to-speech-client/index.html b/examples/text-to-speech-client/index.html deleted file mode 100644 index 26748c68f..000000000 --- a/examples/text-to-speech-client/index.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - Transformers.js - Text-to-speech demo - - -
    - - - diff --git a/examples/text-to-speech-client/package.json b/examples/text-to-speech-client/package.json deleted file mode 100644 index 49949efa2..000000000 --- a/examples/text-to-speech-client/package.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "name": "text-to-speech-client", - "private": true, - "version": "0.0.0", - "type": "module", - "scripts": { - "dev": "vite", - "build": "vite build", - "lint": "eslint . --ext js,jsx --report-unused-disable-directives --max-warnings 0", - "preview": "vite preview" - }, - "dependencies": { - "@xenova/transformers": "^2.7.0", - "react": "^18.2.0", - "react-dom": "^18.2.0" - }, - "devDependencies": { - "@types/react": "^18.2.15", - "@types/react-dom": "^18.2.7", - "@vitejs/plugin-react": "^4.0.3", - "autoprefixer": "^10.4.16", - "eslint": "^8.45.0", - "eslint-plugin-react": "^7.32.2", - "eslint-plugin-react-hooks": "^4.6.0", - "eslint-plugin-react-refresh": "^0.4.3", - "postcss": "^8.4.31", - "tailwindcss": "^3.3.3", - "vite": "^4.4.5" - } -} diff --git a/examples/text-to-speech-client/postcss.config.js b/examples/text-to-speech-client/postcss.config.js deleted file mode 100644 index 2e7af2b7f..000000000 --- a/examples/text-to-speech-client/postcss.config.js +++ /dev/null @@ -1,6 +0,0 @@ -export default { - plugins: { - tailwindcss: {}, - autoprefixer: {}, - }, -} diff --git a/examples/text-to-speech-client/src/App.jsx b/examples/text-to-speech-client/src/App.jsx deleted file mode 100644 index cfa53fb9a..000000000 --- a/examples/text-to-speech-client/src/App.jsx +++ /dev/null @@ -1,162 +0,0 @@ -import React, { useState, useEffect, useRef } from 'react'; - -import AudioPlayer from './components/AudioPlayer'; -import Progress from './components/Progress'; -import { SPEAKERS, DEFAULT_SPEAKER } from './constants'; - -const App = () => { - - // Model loading - const [ready, setReady] = useState(null); - const [disabled, setDisabled] = useState(false); - const [progressItems, setProgressItems] = useState([]); - - // Inputs and outputs - const [text, setText] = useState('I love Hugging Face!'); - const [selectedSpeaker, setSelectedSpeaker] = useState(DEFAULT_SPEAKER); - const [output, setOutput] = useState(null); - - // Create a reference to the worker object. - const worker = useRef(null); - - // We use the `useEffect` hook to setup the worker as soon as the `App` component is mounted. - useEffect(() => { - if (!worker.current) { - // Create the worker if it does not yet exist. - worker.current = new Worker(new URL('./worker.js', import.meta.url), { - type: 'module' - }); - } - - // Create a callback function for messages from the worker thread. - const onMessageReceived = (e) => { - switch (e.data.status) { - case 'initiate': - // Model file start load: add a new progress item to the list. - setReady(false); - setProgressItems(prev => [...prev, e.data]); - break; - - case 'progress': - // Model file progress: update one of the progress items. - setProgressItems( - prev => prev.map(item => { - if (item.file === e.data.file) { - return { ...item, progress: e.data.progress } - } - return item; - }) - ); - break; - - case 'done': - // Model file loaded: remove the progress item from the list. - setProgressItems( - prev => prev.filter(item => item.file !== e.data.file) - ); - break; - - case 'ready': - // Pipeline ready: the worker is ready to accept messages. - setReady(true); - break; - - case 'complete': - // Generation complete: re-enable the "Translate" button - setDisabled(false); - - const blobUrl = URL.createObjectURL(e.data.output); - setOutput(blobUrl); - break; - } - }; - - // Attach the callback function as an event listener. - worker.current.addEventListener('message', onMessageReceived); - - // Define a cleanup function for when the component is unmounted. - return () => worker.current.removeEventListener('message', onMessageReceived); - }); - - - const handleGenerateSpeech = () => { - setDisabled(true); - worker.current.postMessage({ - text, - speaker_id: selectedSpeaker, - }); - }; - - const isLoading = ready === false; - return ( -
    -
    - {isLoading && ( - - )} - {progressItems.map(data => ( -
    - -
    - ))} -
    -
    -

    In-browser Text to Speech

    -

    Made with 🤗 Transformers.js

    -
    - - -
    -
    - - -
    -
    - -
    - {output && } -
    -
    - ); -}; - -export default App; diff --git a/examples/text-to-speech-client/src/components/AudioPlayer.jsx b/examples/text-to-speech-client/src/components/AudioPlayer.jsx deleted file mode 100644 index a6d2daf1f..000000000 --- a/examples/text-to-speech-client/src/components/AudioPlayer.jsx +++ /dev/null @@ -1,26 +0,0 @@ -import { useEffect, useRef } from "react"; - -export default function AudioPlayer({ audioUrl, mimeType }) { - const audioPlayer = useRef(null); - const audioSource = useRef(null); - - // Updates src when url changes - useEffect(() => { - if (audioPlayer.current && audioSource.current) { - audioSource.current.src = audioUrl; - audioPlayer.current.load(); - } - }, [audioUrl]); - - return ( -
    - -
    - ); -} \ No newline at end of file diff --git a/examples/text-to-speech-client/src/components/Progress.jsx b/examples/text-to-speech-client/src/components/Progress.jsx deleted file mode 100644 index efaaf0a9a..000000000 --- a/examples/text-to-speech-client/src/components/Progress.jsx +++ /dev/null @@ -1,12 +0,0 @@ - -export default function Progress({ text, percentage }) { - percentage ??= 0; - return ( -
    -
    - {text} ({`${percentage.toFixed(2)}%`}) -
    -
    - ); -} - diff --git a/examples/text-to-speech-client/src/constants.js b/examples/text-to-speech-client/src/constants.js deleted file mode 100644 index ef6d848af..000000000 --- a/examples/text-to-speech-client/src/constants.js +++ /dev/null @@ -1,11 +0,0 @@ -export const SPEAKERS = { - "US female 1": "cmu_us_slt_arctic-wav-arctic_a0001", - "US female 2": "cmu_us_clb_arctic-wav-arctic_a0001", - "US male 1": "cmu_us_bdl_arctic-wav-arctic_a0003", - "US male 2": "cmu_us_rms_arctic-wav-arctic_a0003", - "Canadian male": "cmu_us_jmk_arctic-wav-arctic_a0002", - "Scottish male": "cmu_us_awb_arctic-wav-arctic_b0002", - "Indian male": "cmu_us_ksp_arctic-wav-arctic_a0007", -} - -export const DEFAULT_SPEAKER = "cmu_us_slt_arctic-wav-arctic_a0001"; diff --git a/examples/text-to-speech-client/src/index.css b/examples/text-to-speech-client/src/index.css deleted file mode 100644 index 2ea01764b..000000000 --- a/examples/text-to-speech-client/src/index.css +++ /dev/null @@ -1,21 +0,0 @@ -@tailwind base; -@tailwind components; -@tailwind utilities; - -:root { - font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; - line-height: 1.5; - font-weight: 400; - color: #213547; - background-color: #ffffff; - - font-synthesis: none; - text-rendering: optimizeLegibility; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - -webkit-text-size-adjust: 100%; -} - -audio::-webkit-media-controls-panel { - background-color: white; -} \ No newline at end of file diff --git a/examples/text-to-speech-client/src/main.jsx b/examples/text-to-speech-client/src/main.jsx deleted file mode 100644 index 54b39dd1d..000000000 --- a/examples/text-to-speech-client/src/main.jsx +++ /dev/null @@ -1,10 +0,0 @@ -import React from 'react' -import ReactDOM from 'react-dom/client' -import App from './App.jsx' -import './index.css' - -ReactDOM.createRoot(document.getElementById('root')).render( - - - , -) diff --git a/examples/text-to-speech-client/src/utils.js b/examples/text-to-speech-client/src/utils.js deleted file mode 100644 index b23f88bba..000000000 --- a/examples/text-to-speech-client/src/utils.js +++ /dev/null @@ -1,47 +0,0 @@ -// Adapted from https://www.npmjs.com/package/audiobuffer-to-wav - -export function encodeWAV(samples) { - let offset = 44; - const buffer = new ArrayBuffer(offset + samples.length * 4); - const view = new DataView(buffer); - const sampleRate = 16000; - - /* RIFF identifier */ - writeString(view, 0, 'RIFF') - /* RIFF chunk length */ - view.setUint32(4, 36 + samples.length * 4, true) - /* RIFF type */ - writeString(view, 8, 'WAVE') - /* format chunk identifier */ - writeString(view, 12, 'fmt ') - /* format chunk length */ - view.setUint32(16, 16, true) - /* sample format (raw) */ - view.setUint16(20, 3, true) - /* channel count */ - view.setUint16(22, 1, true) - /* sample rate */ - view.setUint32(24, sampleRate, true) - /* byte rate (sample rate * block align) */ - view.setUint32(28, sampleRate * 4, true) - /* block align (channel count * bytes per sample) */ - view.setUint16(32, 4, true) - /* bits per sample */ - view.setUint16(34, 32, true) - /* data chunk identifier */ - writeString(view, 36, 'data') - /* data chunk length */ - view.setUint32(40, samples.length * 4, true) - - for (let i = 0; i < samples.length; ++i, offset += 4) { - view.setFloat32(offset, samples[i], true) - } - - return buffer -} - -function writeString(view, offset, string) { - for (let i = 0; i < string.length; ++i) { - view.setUint8(offset + i, string.charCodeAt(i)) - } -} diff --git a/examples/text-to-speech-client/src/worker.js b/examples/text-to-speech-client/src/worker.js deleted file mode 100644 index 4644890d3..000000000 --- a/examples/text-to-speech-client/src/worker.js +++ /dev/null @@ -1,97 +0,0 @@ - -import { env, Tensor, AutoTokenizer, SpeechT5ForTextToSpeech, SpeechT5HifiGan } from '@xenova/transformers'; -import { encodeWAV } from './utils'; - -// Disable local model checks -env.allowLocalModels = false; - - -// Use the Singleton pattern to enable lazy construction of the pipeline. -class MyTextToSpeechPipeline { - - static BASE_URL = 'https://huggingface.co/datasets/Xenova/cmu-arctic-xvectors-extracted/resolve/main/'; - - static model_id = 'Xenova/speecht5_tts'; - static vocoder_id = 'Xenova/speecht5_hifigan'; - - static tokenizer_instance = null; - static model_instance = null; - static vocoder_instance = null; - - static async getInstance(progress_callback = null) { - if (this.tokenizer_instance === null) { - this.tokenizer = AutoTokenizer.from_pretrained(this.model_id, { progress_callback }); - } - - if (this.model_instance === null) { - this.model_instance = SpeechT5ForTextToSpeech.from_pretrained(this.model_id, { - dtype: 'fp32', - progress_callback, - }); - } - - if (this.vocoder_instance === null) { - this.vocoder_instance = SpeechT5HifiGan.from_pretrained(this.vocoder_id, { - dtype: 'fp32', - progress_callback, - }); - } - - return new Promise(async (resolve, reject) => { - const result = await Promise.all([ - this.tokenizer, - this.model_instance, - this.vocoder_instance, - ]); - self.postMessage({ - status: 'ready', - }); - resolve(result); - }); - } - - static async getSpeakerEmbeddings(speaker_id) { - // e.g., `cmu_us_awb_arctic-wav-arctic_a0001` - const speaker_embeddings_url = `${this.BASE_URL}${speaker_id}.bin`; - const speaker_embeddings = new Tensor( - 'float32', - new Float32Array(await (await fetch(speaker_embeddings_url)).arrayBuffer()), - [1, 512] - ) - return speaker_embeddings; - } -} - -// Mapping of cached speaker embeddings -const speaker_embeddings_cache = new Map(); - -// Listen for messages from the main thread -self.addEventListener('message', async (event) => { - // Load the pipeline - const [tokenizer, model, vocoder] = await MyTextToSpeechPipeline.getInstance(x => { - // We also add a progress callback so that we can track model loading. - self.postMessage(x); - }); - - // Tokenize the input - const { input_ids } = tokenizer(event.data.text); - - // Load the speaker embeddings - let speaker_embeddings = speaker_embeddings_cache.get(event.data.speaker_id); - if (speaker_embeddings === undefined) { - speaker_embeddings = await MyTextToSpeechPipeline.getSpeakerEmbeddings(event.data.speaker_id); - speaker_embeddings_cache.set(event.data.speaker_id, speaker_embeddings); - } - - // Generate the waveform - const { waveform } = await model.generate_speech(input_ids, speaker_embeddings, { vocoder }); - - // Encode the waveform as a WAV file - const wav = encodeWAV(waveform.data); - - // Send the output back to the main thread - self.postMessage({ - status: 'complete', - output: new Blob([wav], { type: 'audio/wav' }), - }); -}); diff --git a/examples/text-to-speech-client/tailwind.config.js b/examples/text-to-speech-client/tailwind.config.js deleted file mode 100644 index d37737fc0..000000000 --- a/examples/text-to-speech-client/tailwind.config.js +++ /dev/null @@ -1,12 +0,0 @@ -/** @type {import('tailwindcss').Config} */ -export default { - content: [ - "./index.html", - "./src/**/*.{js,ts,jsx,tsx}", - ], - theme: { - extend: {}, - }, - plugins: [], -} - diff --git a/examples/text-to-speech-client/vite.config.js b/examples/text-to-speech-client/vite.config.js deleted file mode 100644 index 5a33944a9..000000000 --- a/examples/text-to-speech-client/vite.config.js +++ /dev/null @@ -1,7 +0,0 @@ -import { defineConfig } from 'vite' -import react from '@vitejs/plugin-react' - -// https://vitejs.dev/config/ -export default defineConfig({ - plugins: [react()], -}) From 7cdea27884deb635a22e70eb414f10bf4ddca628 Mon Sep 17 00:00:00 2001 From: Joshua Lochner Date: Mon, 23 Dec 2024 16:24:03 +0000 Subject: [PATCH 16/23] Move video object detection demo --- examples/video-object-detection/.gitignore | 24 - examples/video-object-detection/index.html | 49 - examples/video-object-detection/main.js | 160 -- .../video-object-detection/package-lock.json | 1505 ----------------- examples/video-object-detection/package.json | 17 - examples/video-object-detection/style.css | 83 - .../video-object-detection/vite.config.js | 6 - 7 files changed, 1844 deletions(-) delete mode 100644 examples/video-object-detection/.gitignore delete mode 100644 examples/video-object-detection/index.html delete mode 100644 examples/video-object-detection/main.js delete mode 100644 examples/video-object-detection/package-lock.json delete mode 100644 examples/video-object-detection/package.json delete mode 100644 examples/video-object-detection/style.css delete mode 100644 examples/video-object-detection/vite.config.js diff --git a/examples/video-object-detection/.gitignore b/examples/video-object-detection/.gitignore deleted file mode 100644 index a547bf36d..000000000 --- a/examples/video-object-detection/.gitignore +++ /dev/null @@ -1,24 +0,0 @@ -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -pnpm-debug.log* -lerna-debug.log* - -node_modules -dist -dist-ssr -*.local - -# Editor directories and files -.vscode/* -!.vscode/extensions.json -.idea -.DS_Store -*.suo -*.ntvs* -*.njsproj -*.sln -*.sw? diff --git a/examples/video-object-detection/index.html b/examples/video-object-detection/index.html deleted file mode 100644 index 0c4e8dfc8..000000000 --- a/examples/video-object-detection/index.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - Transformers.js | Real-time object detection - - - -

    - Real-time object detection w/ - 🤗 Transformers.js -

    -

    - Runs locally in your browser, powered by - YOLOv9 -

    -
    - - -
    -
    -
    -
    - - () -
    - -
    -
    - - () -
    - -
    -
    - - () -
    - -
    -
    - - - - - - diff --git a/examples/video-object-detection/main.js b/examples/video-object-detection/main.js deleted file mode 100644 index 12c3552a4..000000000 --- a/examples/video-object-detection/main.js +++ /dev/null @@ -1,160 +0,0 @@ -import './style.css'; - -import { env, AutoModel, AutoProcessor, RawImage } from '@xenova/transformers'; - -// Since we will download the model from the Hugging Face Hub, we can skip the local model check -env.allowLocalModels = false; - -// Proxy the WASM backend to prevent the UI from freezing -env.backends.onnx.wasm.proxy = true; - -// Reference the elements that we will need -const status = document.getElementById('status'); -const container = document.getElementById('container'); -const overlay = document.getElementById('overlay'); -const canvas = document.getElementById('canvas'); -const video = document.getElementById('video'); -const thresholdSlider = document.getElementById('threshold'); -const thresholdLabel = document.getElementById('threshold-value'); -const sizeSlider = document.getElementById('size'); -const sizeLabel = document.getElementById('size-value'); -const scaleSlider = document.getElementById('scale'); -const scaleLabel = document.getElementById('scale-value'); - -function setStreamSize(width, height) { - video.width = canvas.width = Math.round(width); - video.height = canvas.height = Math.round(height); -} - -status.textContent = 'Loading model...'; - -// Load model and processor -const model_id = 'Xenova/gelan-c_all'; -const model = await AutoModel.from_pretrained(model_id); -const processor = await AutoProcessor.from_pretrained(model_id); - -// Set up controls -let scale = 0.5; -scaleSlider.addEventListener('input', () => { - scale = Number(scaleSlider.value); - setStreamSize(video.videoWidth * scale, video.videoHeight * scale); - scaleLabel.textContent = scale; -}); -scaleSlider.disabled = false; - -let threshold = 0.25; -thresholdSlider.addEventListener('input', () => { - threshold = Number(thresholdSlider.value); - thresholdLabel.textContent = threshold.toFixed(2); -}); -thresholdSlider.disabled = false; - -let size = 128; -processor.feature_extractor.size = { shortest_edge: size }; -sizeSlider.addEventListener('input', () => { - size = Number(sizeSlider.value); - processor.feature_extractor.size = { shortest_edge: size }; - sizeLabel.textContent = size; -}); -sizeSlider.disabled = false; - -status.textContent = 'Ready'; - -const COLOURS = [ - "#EF4444", "#4299E1", "#059669", - "#FBBF24", "#4B52B1", "#7B3AC2", - "#ED507A", "#1DD1A1", "#F3873A", - "#4B5563", "#DC2626", "#1852B4", - "#18A35D", "#F59E0B", "#4059BE", - "#6027A5", "#D63D60", "#00AC9B", - "#E64A19", "#272A34" -] - -// Render a bounding box and label on the image -function renderBox([xmin, ymin, xmax, ymax, score, id], [w, h]) { - if (score < threshold) return; // Skip boxes with low confidence - - // Generate a random color for the box - const color = COLOURS[id % COLOURS.length]; - - // Draw the box - const boxElement = document.createElement('div'); - boxElement.className = 'bounding-box'; - Object.assign(boxElement.style, { - borderColor: color, - left: 100 * xmin / w + '%', - top: 100 * ymin / h + '%', - width: 100 * (xmax - xmin) / w + '%', - height: 100 * (ymax - ymin) / h + '%', - }) - - // Draw label - const labelElement = document.createElement('span'); - labelElement.textContent = `${model.config.id2label[id]} (${(100 * score).toFixed(2)}%)`; - labelElement.className = 'bounding-box-label'; - labelElement.style.backgroundColor = color; - - boxElement.appendChild(labelElement); - overlay.appendChild(boxElement); -} - -let isProcessing = false; -let previousTime; -const context = canvas.getContext('2d', { willReadFrequently: true }); -function updateCanvas() { - const { width, height } = canvas; - context.drawImage(video, 0, 0, width, height); - - if (!isProcessing) { - isProcessing = true; - (async function () { - // Read the current frame from the video - const pixelData = context.getImageData(0, 0, width, height).data; - const image = new RawImage(pixelData, width, height, 4); - - // Process the image and run the model - const inputs = await processor(image); - const { outputs } = await model(inputs); - - // Update UI - overlay.innerHTML = ''; - - const sizes = inputs.reshaped_input_sizes[0].reverse(); - outputs.tolist().forEach(x => renderBox(x, sizes)); - - if (previousTime !== undefined) { - const fps = 1000 / (performance.now() - previousTime); - status.textContent = `FPS: ${fps.toFixed(2)}`; - } - previousTime = performance.now(); - isProcessing = false; - })(); - } - - window.requestAnimationFrame(updateCanvas); -} - -// Start the video stream -navigator.mediaDevices.getUserMedia( - { video: true }, // Ask for video -).then((stream) => { - // Set up the video and canvas elements. - video.srcObject = stream; - video.play(); - - const videoTrack = stream.getVideoTracks()[0]; - const { width, height } = videoTrack.getSettings(); - - setStreamSize(width * scale, height * scale); - - // Set container width and height depending on the image aspect ratio - const ar = width / height; - const [cw, ch] = (ar > 720 / 405) ? [720, 720 / ar] : [405 * ar, 405]; - container.style.width = `${cw}px`; - container.style.height = `${ch}px`; - - // Start the animation loop - window.requestAnimationFrame(updateCanvas); -}).catch((error) => { - alert(error); -}); diff --git a/examples/video-object-detection/package-lock.json b/examples/video-object-detection/package-lock.json deleted file mode 100644 index 9ece04cd3..000000000 --- a/examples/video-object-detection/package-lock.json +++ /dev/null @@ -1,1505 +0,0 @@ -{ - "name": "video-object-detection", - "version": "0.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "video-object-detection", - "version": "0.0.0", - "dependencies": { - "@xenova/transformers": "^2.15.0" - }, - "devDependencies": { - "vite": "^5.1.7" - } - }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz", - "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz", - "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz", - "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz", - "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz", - "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz", - "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz", - "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz", - "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz", - "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz", - "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz", - "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz", - "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz", - "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz", - "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz", - "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz", - "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz", - "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz", - "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz", - "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz", - "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz", - "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz", - "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz", - "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@huggingface/jinja": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@huggingface/jinja/-/jinja-0.1.3.tgz", - "integrity": "sha512-9KsiorsdIK8+7VmlamAT7Uh90zxAhC/SeKaKc80v58JhtPYuwaJpmR/ST7XAUxrHAFqHTCoTH5aJnJDwSL6xIQ==", - "engines": { - "node": ">=18" - } - }, - "node_modules/@protobufjs/aspromise": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", - "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" - }, - "node_modules/@protobufjs/base64": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", - "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" - }, - "node_modules/@protobufjs/codegen": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", - "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" - }, - "node_modules/@protobufjs/eventemitter": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", - "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" - }, - "node_modules/@protobufjs/fetch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", - "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", - "dependencies": { - "@protobufjs/aspromise": "^1.1.1", - "@protobufjs/inquire": "^1.1.0" - } - }, - "node_modules/@protobufjs/float": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", - "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" - }, - "node_modules/@protobufjs/inquire": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", - "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" - }, - "node_modules/@protobufjs/path": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", - "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" - }, - "node_modules/@protobufjs/pool": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", - "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" - }, - "node_modules/@protobufjs/utf8": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", - "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" - }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.12.0.tgz", - "integrity": "sha512-+ac02NL/2TCKRrJu2wffk1kZ+RyqxVUlbjSagNgPm94frxtr+XDL12E5Ll1enWskLrtrZ2r8L3wED1orIibV/w==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.12.0.tgz", - "integrity": "sha512-OBqcX2BMe6nvjQ0Nyp7cC90cnumt8PXmO7Dp3gfAju/6YwG0Tj74z1vKrfRz7qAv23nBcYM8BCbhrsWqO7PzQQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.12.0.tgz", - "integrity": "sha512-X64tZd8dRE/QTrBIEs63kaOBG0b5GVEd3ccoLtyf6IdXtHdh8h+I56C2yC3PtC9Ucnv0CpNFJLqKFVgCYe0lOQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.12.0.tgz", - "integrity": "sha512-cc71KUZoVbUJmGP2cOuiZ9HSOP14AzBAThn3OU+9LcA1+IUqswJyR1cAJj3Mg55HbjZP6OLAIscbQsQLrpgTOg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.12.0.tgz", - "integrity": "sha512-a6w/Y3hyyO6GlpKL2xJ4IOh/7d+APaqLYdMf86xnczU3nurFTaVN9s9jOXQg97BE4nYm/7Ga51rjec5nfRdrvA==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.12.0.tgz", - "integrity": "sha512-0fZBq27b+D7Ar5CQMofVN8sggOVhEtzFUwOwPppQt0k+VR+7UHMZZY4y+64WJ06XOhBTKXtQB/Sv0NwQMXyNAA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.12.0.tgz", - "integrity": "sha512-eTvzUS3hhhlgeAv6bfigekzWZjaEX9xP9HhxB0Dvrdbkk5w/b+1Sxct2ZuDxNJKzsRStSq1EaEkVSEe7A7ipgQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.12.0.tgz", - "integrity": "sha512-ix+qAB9qmrCRiaO71VFfY8rkiAZJL8zQRXveS27HS+pKdjwUfEhqo2+YF2oI+H/22Xsiski+qqwIBxVewLK7sw==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.12.0.tgz", - "integrity": "sha512-TenQhZVOtw/3qKOPa7d+QgkeM6xY0LtwzR8OplmyL5LrgTWIXpTQg2Q2ycBf8jm+SFW2Wt/DTn1gf7nFp3ssVA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.12.0.tgz", - "integrity": "sha512-LfFdRhNnW0zdMvdCb5FNuWlls2WbbSridJvxOvYWgSBOYZtgBfW9UGNJG//rwMqTX1xQE9BAodvMH9tAusKDUw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.12.0.tgz", - "integrity": "sha512-JPDxovheWNp6d7AHCgsUlkuCKvtu3RB55iNEkaQcf0ttsDU/JZF+iQnYcQJSk/7PtT4mjjVG8N1kpwnI9SLYaw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.12.0.tgz", - "integrity": "sha512-fjtuvMWRGJn1oZacG8IPnzIV6GF2/XG+h71FKn76OYFqySXInJtseAqdprVTDTyqPxQOG9Exak5/E9Z3+EJ8ZA==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.12.0.tgz", - "integrity": "sha512-ZYmr5mS2wd4Dew/JjT0Fqi2NPB/ZhZ2VvPp7SmvPZb4Y1CG/LRcS6tcRo2cYU7zLK5A7cdbhWnnWmUjoI4qapg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@types/estree": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", - "dev": true - }, - "node_modules/@types/long": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", - "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==" - }, - "node_modules/@types/node": { - "version": "20.11.20", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.20.tgz", - "integrity": "sha512-7/rR21OS+fq8IyHTgtLkDK949uzsa6n8BkziAKtPVpugIkO6D+/ooXMvzXxDnZrmtXVfjb1bKQafYpb8s89LOg==", - "dependencies": { - "undici-types": "~5.26.4" - } - }, - "node_modules/@xenova/transformers": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/@xenova/transformers/-/transformers-2.15.1.tgz", - "integrity": "sha512-HX3kUZbr9v90PS/D2SyffGiFYQ6wQMbzwC1uLuCOA6nRSFOdr0TDnOTxfjS0RB6Phn6ThCTE1vX4n+NUsuobQg==", - "dependencies": { - "@huggingface/jinja": "^0.1.3", - "onnxruntime-web": "1.14.0", - "sharp": "^0.32.0" - }, - "optionalDependencies": { - "onnxruntime-node": "1.14.0" - } - }, - "node_modules/b4a": { - "version": "1.6.6", - "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.6.tgz", - "integrity": "sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==" - }, - "node_modules/bare-events": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.2.0.tgz", - "integrity": "sha512-Yyyqff4PIFfSuthCZqLlPISTWHmnQxoPuAvkmgzsJEmG3CesdIv6Xweayl0JkCZJSB2yYIdJyEz97tpxNhgjbg==", - "optional": true - }, - "node_modules/bare-fs": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-2.2.0.tgz", - "integrity": "sha512-+VhW202E9eTVGkX7p+TNXtZC4RTzj9JfJW7PtfIbZ7mIQ/QT9uOafQTx7lx2n9ERmWsXvLHF4hStAFn4gl2mQw==", - "optional": true, - "dependencies": { - "bare-events": "^2.0.0", - "bare-os": "^2.0.0", - "bare-path": "^2.0.0", - "streamx": "^2.13.0" - } - }, - "node_modules/bare-os": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-2.2.0.tgz", - "integrity": "sha512-hD0rOPfYWOMpVirTACt4/nK8mC55La12K5fY1ij8HAdfQakD62M+H4o4tpfKzVGLgRDTuk3vjA4GqGXXCeFbag==", - "optional": true - }, - "node_modules/bare-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-2.1.0.tgz", - "integrity": "sha512-DIIg7ts8bdRKwJRJrUMy/PICEaQZaPGZ26lsSx9MJSwIhSrcdHn7/C8W+XmnG/rKi6BaRcz+JO00CjZteybDtw==", - "optional": true, - "dependencies": { - "bare-os": "^2.1.0" - } - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" - }, - "node_modules/color": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", - "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", - "dependencies": { - "color-convert": "^2.0.1", - "color-string": "^1.9.0" - }, - "engines": { - "node": ">=12.5.0" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/color-string": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", - "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", - "dependencies": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "node_modules/decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "dependencies": { - "mimic-response": "^3.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/detect-libc": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", - "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/esbuild": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz", - "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==", - "dev": true, - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.19.12", - "@esbuild/android-arm": "0.19.12", - "@esbuild/android-arm64": "0.19.12", - "@esbuild/android-x64": "0.19.12", - "@esbuild/darwin-arm64": "0.19.12", - "@esbuild/darwin-x64": "0.19.12", - "@esbuild/freebsd-arm64": "0.19.12", - "@esbuild/freebsd-x64": "0.19.12", - "@esbuild/linux-arm": "0.19.12", - "@esbuild/linux-arm64": "0.19.12", - "@esbuild/linux-ia32": "0.19.12", - "@esbuild/linux-loong64": "0.19.12", - "@esbuild/linux-mips64el": "0.19.12", - "@esbuild/linux-ppc64": "0.19.12", - "@esbuild/linux-riscv64": "0.19.12", - "@esbuild/linux-s390x": "0.19.12", - "@esbuild/linux-x64": "0.19.12", - "@esbuild/netbsd-x64": "0.19.12", - "@esbuild/openbsd-x64": "0.19.12", - "@esbuild/sunos-x64": "0.19.12", - "@esbuild/win32-arm64": "0.19.12", - "@esbuild/win32-ia32": "0.19.12", - "@esbuild/win32-x64": "0.19.12" - } - }, - "node_modules/expand-template": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", - "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/fast-fifo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", - "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==" - }, - "node_modules/flatbuffers": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/flatbuffers/-/flatbuffers-1.12.0.tgz", - "integrity": "sha512-c7CZADjRcl6j0PlvFy0ZqXQ67qSEZfrVPynmnL+2zPc+NtMvrF8Y0QceMo7QqnSPc7+uWjUIAbvCQ5WIKlMVdQ==" - }, - "node_modules/fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/github-from-package": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", - "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==" - }, - "node_modules/guid-typescript": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/guid-typescript/-/guid-typescript-1.0.9.tgz", - "integrity": "sha512-Y8T4vYhEfwJOTbouREvG+3XDsjr8E3kIr7uf+JZ0BYloFsttiHU0WfvANVsR7TxNUJa/WpCnw/Ino/p+DeBhBQ==" - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" - }, - "node_modules/is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" - }, - "node_modules/long": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", - "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" - }, - "node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/napi-build-utils": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", - "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==" - }, - "node_modules/node-abi": { - "version": "3.56.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.56.0.tgz", - "integrity": "sha512-fZjdhDOeRcaS+rcpve7XuwHBmktS1nS1gzgghwKUQQ8nTy2FdSDr6ZT8k6YhvlJeHmmQMYiT/IH9hfco5zeW2Q==", - "dependencies": { - "semver": "^7.3.5" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/node-addon-api": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz", - "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==" - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onnx-proto": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/onnx-proto/-/onnx-proto-4.0.4.tgz", - "integrity": "sha512-aldMOB3HRoo6q/phyB6QRQxSt895HNNw82BNyZ2CMh4bjeKv7g/c+VpAFtJuEMVfYLMbRx61hbuqnKceLeDcDA==", - "dependencies": { - "protobufjs": "^6.8.8" - } - }, - "node_modules/onnxruntime-common": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/onnxruntime-common/-/onnxruntime-common-1.14.0.tgz", - "integrity": "sha512-3LJpegM2iMNRX2wUmtYfeX/ytfOzNwAWKSq1HbRrKc9+uqG/FsEA0bbKZl1btQeZaXhC26l44NWpNUeXPII7Ew==" - }, - "node_modules/onnxruntime-node": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/onnxruntime-node/-/onnxruntime-node-1.14.0.tgz", - "integrity": "sha512-5ba7TWomIV/9b6NH/1x/8QEeowsb+jBEvFzU6z0T4mNsFwdPqXeFUM7uxC6QeSRkEbWu3qEB0VMjrvzN/0S9+w==", - "optional": true, - "os": [ - "win32", - "darwin", - "linux" - ], - "dependencies": { - "onnxruntime-common": "~1.14.0" - } - }, - "node_modules/onnxruntime-web": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/onnxruntime-web/-/onnxruntime-web-1.14.0.tgz", - "integrity": "sha512-Kcqf43UMfW8mCydVGcX9OMXI2VN17c0p6XvR7IPSZzBf/6lteBzXHvcEVWDPmCKuGombl997HgLqj91F11DzXw==", - "dependencies": { - "flatbuffers": "^1.12.0", - "guid-typescript": "^1.0.9", - "long": "^4.0.0", - "onnx-proto": "^4.0.4", - "onnxruntime-common": "~1.14.0", - "platform": "^1.3.6" - } - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "node_modules/platform": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.6.tgz", - "integrity": "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==" - }, - "node_modules/postcss": { - "version": "8.4.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", - "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "nanoid": "^3.3.7", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/prebuild-install": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz", - "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==", - "dependencies": { - "detect-libc": "^2.0.0", - "expand-template": "^2.0.3", - "github-from-package": "0.0.0", - "minimist": "^1.2.3", - "mkdirp-classic": "^0.5.3", - "napi-build-utils": "^1.0.1", - "node-abi": "^3.3.0", - "pump": "^3.0.0", - "rc": "^1.2.7", - "simple-get": "^4.0.0", - "tar-fs": "^2.0.0", - "tunnel-agent": "^0.6.0" - }, - "bin": { - "prebuild-install": "bin.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/prebuild-install/node_modules/tar-fs": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", - "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", - "dependencies": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^2.1.4" - } - }, - "node_modules/prebuild-install/node_modules/tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/protobufjs": { - "version": "6.11.4", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.4.tgz", - "integrity": "sha512-5kQWPaJHi1WoCpjTGszzQ32PG2F4+wRY6BmAT4Vfw56Q2FZ4YZzK20xUYQH4YkfehY1e6QSICrJquM6xXZNcrw==", - "hasInstallScript": true, - "dependencies": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", - "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", - "@types/long": "^4.0.1", - "@types/node": ">=13.7.0", - "long": "^4.0.0" - }, - "bin": { - "pbjs": "bin/pbjs", - "pbts": "bin/pbts" - } - }, - "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/queue-tick": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", - "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==" - }, - "node_modules/rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "bin": { - "rc": "cli.js" - } - }, - "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/rollup": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.12.0.tgz", - "integrity": "sha512-wz66wn4t1OHIJw3+XU7mJJQV/2NAfw5OAk6G6Hoo3zcvz/XOfQ52Vgi+AN4Uxoxi0KBBwk2g8zPrTDA4btSB/Q==", - "dev": true, - "dependencies": { - "@types/estree": "1.0.5" - }, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.12.0", - "@rollup/rollup-android-arm64": "4.12.0", - "@rollup/rollup-darwin-arm64": "4.12.0", - "@rollup/rollup-darwin-x64": "4.12.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.12.0", - "@rollup/rollup-linux-arm64-gnu": "4.12.0", - "@rollup/rollup-linux-arm64-musl": "4.12.0", - "@rollup/rollup-linux-riscv64-gnu": "4.12.0", - "@rollup/rollup-linux-x64-gnu": "4.12.0", - "@rollup/rollup-linux-x64-musl": "4.12.0", - "@rollup/rollup-win32-arm64-msvc": "4.12.0", - "@rollup/rollup-win32-ia32-msvc": "4.12.0", - "@rollup/rollup-win32-x64-msvc": "4.12.0", - "fsevents": "~2.3.2" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/sharp": { - "version": "0.32.6", - "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.32.6.tgz", - "integrity": "sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==", - "hasInstallScript": true, - "dependencies": { - "color": "^4.2.3", - "detect-libc": "^2.0.2", - "node-addon-api": "^6.1.0", - "prebuild-install": "^7.1.1", - "semver": "^7.5.4", - "simple-get": "^4.0.1", - "tar-fs": "^3.0.4", - "tunnel-agent": "^0.6.0" - }, - "engines": { - "node": ">=14.15.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/simple-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/simple-get": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", - "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "decompress-response": "^6.0.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } - }, - "node_modules/simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", - "dependencies": { - "is-arrayish": "^0.3.1" - } - }, - "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/streamx": { - "version": "2.16.1", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.16.1.tgz", - "integrity": "sha512-m9QYj6WygWyWa3H1YY69amr4nVgy61xfjys7xO7kviL5rfIEc2naf+ewFiOA+aEJD7y0JO3h2GoiUv4TDwEGzQ==", - "dependencies": { - "fast-fifo": "^1.1.0", - "queue-tick": "^1.0.1" - }, - "optionalDependencies": { - "bare-events": "^2.2.0" - } - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/tar-fs": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.5.tgz", - "integrity": "sha512-JOgGAmZyMgbqpLwct7ZV8VzkEB6pxXFBVErLtb+XCOqzc6w1xiWKI9GVd6bwk68EX7eJ4DWmfXVmq8K2ziZTGg==", - "dependencies": { - "pump": "^3.0.0", - "tar-stream": "^3.1.5" - }, - "optionalDependencies": { - "bare-fs": "^2.1.1", - "bare-path": "^2.1.0" - } - }, - "node_modules/tar-stream": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", - "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", - "dependencies": { - "b4a": "^1.6.4", - "fast-fifo": "^1.2.0", - "streamx": "^2.15.0" - } - }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "node_modules/vite": { - "version": "5.1.7", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.1.7.tgz", - "integrity": "sha512-sgnEEFTZYMui/sTlH1/XEnVNHMujOahPLGMxn1+5sIT45Xjng1Ec1K78jRP15dSmVgg5WBin9yO81j3o9OxofA==", - "dev": true, - "dependencies": { - "esbuild": "^0.19.3", - "postcss": "^8.4.35", - "rollup": "^4.2.0" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^18.0.0 || >=20.0.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - }, - "peerDependencies": { - "@types/node": "^18.0.0 || >=20.0.0", - "less": "*", - "lightningcss": "^1.21.0", - "sass": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.4.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - } - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - } - } -} diff --git a/examples/video-object-detection/package.json b/examples/video-object-detection/package.json deleted file mode 100644 index d4ac2d672..000000000 --- a/examples/video-object-detection/package.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "name": "video-object-detection", - "private": true, - "version": "0.0.0", - "type": "module", - "scripts": { - "dev": "vite", - "build": "vite build", - "preview": "vite preview" - }, - "devDependencies": { - "vite": "^5.1.7" - }, - "dependencies": { - "@xenova/transformers": "^2.15.0" - } -} diff --git a/examples/video-object-detection/style.css b/examples/video-object-detection/style.css deleted file mode 100644 index 4892e55b2..000000000 --- a/examples/video-object-detection/style.css +++ /dev/null @@ -1,83 +0,0 @@ -* { - box-sizing: border-box; - padding: 0; - margin: 0; - font-family: sans-serif; -} - -html, -body { - height: 100%; -} - -body { - padding: 16px 32px; -} - -body, -#container { - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; -} - -#controls { - display: flex; - padding: 1rem; - gap: 1rem; -} - -#controls>div { - text-align: center; -} - -h1, -h4 { - text-align: center; -} - -h4 { - margin-top: 0.5rem; -} - -#container { - position: relative; - width: 720px; - height: 405px; - max-width: 100%; - max-height: 100%; - border: 2px dashed #D1D5DB; - border-radius: 0.75rem; - overflow: hidden; - margin-top: 1rem; - background-size: 100% 100%; - background-position: center; - background-repeat: no-repeat; -} - -#overlay, -canvas { - position: absolute; - width: 100%; - height: 100%; -} - -#status { - min-height: 16px; - margin: 8px 0; -} - -.bounding-box { - position: absolute; - box-sizing: border-box; - border: solid 2px; -} - -.bounding-box-label { - color: white; - position: absolute; - font-size: 12px; - margin: -16px 0 0 -2px; - padding: 1px; -} diff --git a/examples/video-object-detection/vite.config.js b/examples/video-object-detection/vite.config.js deleted file mode 100644 index 6c32f52df..000000000 --- a/examples/video-object-detection/vite.config.js +++ /dev/null @@ -1,6 +0,0 @@ -import { defineConfig } from 'vite'; -export default defineConfig({ - build: { - target: 'esnext' - } -}); From b053db2b388930c63ff9d3127fc516012e940493 Mon Sep 17 00:00:00 2001 From: Joshua Lochner Date: Mon, 23 Dec 2024 16:47:37 +0000 Subject: [PATCH 17/23] Move video background removal demo --- .../.gitignore | 24 ---- .../index.html | 43 ------ .../webgpu-video-background-removal/main.js | 128 ------------------ .../package.json | 17 --- .../webgpu-video-background-removal/style.css | 87 ------------ .../vite.config.js | 6 - 6 files changed, 305 deletions(-) delete mode 100644 examples/webgpu-video-background-removal/.gitignore delete mode 100644 examples/webgpu-video-background-removal/index.html delete mode 100644 examples/webgpu-video-background-removal/main.js delete mode 100644 examples/webgpu-video-background-removal/package.json delete mode 100644 examples/webgpu-video-background-removal/style.css delete mode 100644 examples/webgpu-video-background-removal/vite.config.js diff --git a/examples/webgpu-video-background-removal/.gitignore b/examples/webgpu-video-background-removal/.gitignore deleted file mode 100644 index a547bf36d..000000000 --- a/examples/webgpu-video-background-removal/.gitignore +++ /dev/null @@ -1,24 +0,0 @@ -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -pnpm-debug.log* -lerna-debug.log* - -node_modules -dist -dist-ssr -*.local - -# Editor directories and files -.vscode/* -!.vscode/extensions.json -.idea -.DS_Store -*.suo -*.ntvs* -*.njsproj -*.sln -*.sw? diff --git a/examples/webgpu-video-background-removal/index.html b/examples/webgpu-video-background-removal/index.html deleted file mode 100644 index 8e71df5a9..000000000 --- a/examples/webgpu-video-background-removal/index.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - Transformers.js | Real-time background removal - - - -

    - Real-time background removal w/ - 🤗 Transformers.js -

    -

    - Runs locally in your browser, powered by - MODNet -

    -
    - - - -
    -
    -
    - - () -
    - -
    -
    - - () -
    - -
    -
    - - - - - - \ No newline at end of file diff --git a/examples/webgpu-video-background-removal/main.js b/examples/webgpu-video-background-removal/main.js deleted file mode 100644 index 620f21afb..000000000 --- a/examples/webgpu-video-background-removal/main.js +++ /dev/null @@ -1,128 +0,0 @@ -import './style.css'; - -import { env, AutoModel, AutoProcessor, RawImage } from '@xenova/transformers'; - -env.backends.onnx.wasm.wasmPaths = 'https://cdn.jsdelivr.net/npm/onnxruntime-web@1.17.1/dist/'; -env.backends.onnx.wasm.numThreads = 1; - -// Reference the elements that we will need -const status = document.getElementById('status'); -const container = document.getElementById('container'); -const canvas = document.getElementById('canvas'); -const outputCanvas = document.getElementById('output-canvas'); -const video = document.getElementById('video'); -const sizeSlider = document.getElementById('size'); -const sizeLabel = document.getElementById('size-value'); -const scaleSlider = document.getElementById('scale'); -const scaleLabel = document.getElementById('scale-value'); - -function setStreamSize(width, height) { - video.width = outputCanvas.width = canvas.width = Math.round(width); - video.height = outputCanvas.height = canvas.height = Math.round(height); -} - -status.textContent = 'Loading model...'; - -// Load model and processor -const model_id = 'Xenova/modnet'; -let model; -try { - model = await AutoModel.from_pretrained(model_id, { - device: 'webgpu', - dtype: 'fp32', // TODO: add fp16 support - }); -} catch (err) { - status.textContent = err.message; - alert(err.message) - throw err; -} - -const processor = await AutoProcessor.from_pretrained(model_id); - -// Set up controls -let size = 256; -processor.feature_extractor.size = { shortest_edge: size }; -sizeSlider.addEventListener('input', () => { - size = Number(sizeSlider.value); - processor.feature_extractor.size = { shortest_edge: size }; - sizeLabel.textContent = size; -}); -sizeSlider.disabled = false; - -let scale = 0.5; -scaleSlider.addEventListener('input', () => { - scale = Number(scaleSlider.value); - setStreamSize(video.videoWidth * scale, video.videoHeight * scale); - scaleLabel.textContent = scale; -}); -scaleSlider.disabled = false; - -status.textContent = 'Ready'; - -let isProcessing = false; -let previousTime; -const context = canvas.getContext('2d', { willReadFrequently: true }); -const outputContext = outputCanvas.getContext('2d', { willReadFrequently: true }); -function updateCanvas() { - const { width, height } = canvas; - - if (!isProcessing) { - isProcessing = true; - (async function () { - // Read the current frame from the video - context.drawImage(video, 0, 0, width, height); - const currentFrame = context.getImageData(0, 0, width, height); - const image = new RawImage(currentFrame.data, width, height, 4); - - // Pre-process image - const inputs = await processor(image); - - // Predict alpha matte - const { output } = await model({ input: inputs.pixel_values }); - - const mask = await RawImage.fromTensor(output[0].mul(255).to('uint8')).resize(width, height); - - // Update alpha channel - const outPixelData = currentFrame; - for (let i = 0; i < mask.data.length; ++i) { - outPixelData.data[4 * i + 3] = mask.data[i]; - } - outputContext.putImageData(outPixelData, 0, 0); - - if (previousTime !== undefined) { - const fps = 1000 / (performance.now() - previousTime); - status.textContent = `FPS: ${fps.toFixed(2)}`; - } - previousTime = performance.now(); - - isProcessing = false; - })(); - } - - window.requestAnimationFrame(updateCanvas); -} - -// Start the video stream -navigator.mediaDevices.getUserMedia( - { video: true }, // Ask for video -).then((stream) => { - // Set up the video and canvas elements. - video.srcObject = stream; - video.play(); - - const videoTrack = stream.getVideoTracks()[0]; - const { width, height } = videoTrack.getSettings(); - - setStreamSize(width * scale, height * scale); - - // Set container width and height depending on the image aspect ratio - const ar = width / height; - const [cw, ch] = (ar > 720 / 405) ? [720, 720 / ar] : [405 * ar, 405]; - container.style.width = `${cw}px`; - container.style.height = `${ch}px`; - - // Start the animation loop - setTimeout(updateCanvas, 50); -}).catch((error) => { - alert(error); -}); diff --git a/examples/webgpu-video-background-removal/package.json b/examples/webgpu-video-background-removal/package.json deleted file mode 100644 index 9ebe47afe..000000000 --- a/examples/webgpu-video-background-removal/package.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "name": "webgpu-video-background-removal", - "private": true, - "version": "0.0.0", - "type": "module", - "scripts": { - "dev": "vite", - "build": "vite build", - "preview": "vite preview" - }, - "devDependencies": { - "vite": "^5.0.12" - }, - "dependencies": { - "@xenova/transformers": "^3.0.0" - } -} diff --git a/examples/webgpu-video-background-removal/style.css b/examples/webgpu-video-background-removal/style.css deleted file mode 100644 index a86729e1c..000000000 --- a/examples/webgpu-video-background-removal/style.css +++ /dev/null @@ -1,87 +0,0 @@ -* { - box-sizing: border-box; - padding: 0; - margin: 0; - font-family: sans-serif; -} - -html, -body { - height: 100%; -} - -body { - padding: 16px 32px; -} - -body, -#container { - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; -} - -#controls { - display: flex; - padding: 1rem; - gap: 1rem; -} - -#controls>div { - text-align: center; -} - -h1, -h4 { - text-align: center; -} - -h4 { - margin-top: 0.5rem; -} - -#container { - position: relative; - width: 720px; - height: 405px; - max-width: 100%; - max-height: 100%; - border: 2px dashed #D1D5DB; - border-radius: 0.75rem; - overflow: hidden; - margin-top: 1rem; - background-size: 100% 100%; - background-position: center; - background-repeat: no-repeat; -} - -#overlay, -canvas { - position: absolute; - width: 100%; - height: 100%; -} - -#status { - min-height: 16px; - margin: 8px 0; -} - -.bounding-box { - position: absolute; - box-sizing: border-box; - border: solid 2px; -} - -.bounding-box-label { - color: white; - position: absolute; - font-size: 12px; - margin: -16px 0 0 -2px; - padding: 1px; -} - -#video, #canvas { - display: none; -} diff --git a/examples/webgpu-video-background-removal/vite.config.js b/examples/webgpu-video-background-removal/vite.config.js deleted file mode 100644 index 6c32f52df..000000000 --- a/examples/webgpu-video-background-removal/vite.config.js +++ /dev/null @@ -1,6 +0,0 @@ -import { defineConfig } from 'vite'; -export default defineConfig({ - build: { - target: 'esnext' - } -}); From eacdbd1d139971bdb428eeb08c2ce7a31dc2121e Mon Sep 17 00:00:00 2001 From: Joshua Lochner Date: Mon, 23 Dec 2024 17:42:46 +0000 Subject: [PATCH 18/23] Move Segment Anything demo --- examples/segment-anything-client/.gitignore | 1 - examples/segment-anything-client/index.css | 116 ------- examples/segment-anything-client/index.html | 42 --- examples/segment-anything-client/index.js | 296 ------------------ examples/segment-anything-client/package.json | 17 - .../segment-anything-client/vite.config.js | 18 -- examples/segment-anything-client/worker.js | 101 ------ 7 files changed, 591 deletions(-) delete mode 100644 examples/segment-anything-client/.gitignore delete mode 100644 examples/segment-anything-client/index.css delete mode 100644 examples/segment-anything-client/index.html delete mode 100644 examples/segment-anything-client/index.js delete mode 100644 examples/segment-anything-client/package.json delete mode 100644 examples/segment-anything-client/vite.config.js delete mode 100644 examples/segment-anything-client/worker.js diff --git a/examples/segment-anything-client/.gitignore b/examples/segment-anything-client/.gitignore deleted file mode 100644 index 1521c8b76..000000000 --- a/examples/segment-anything-client/.gitignore +++ /dev/null @@ -1 +0,0 @@ -dist diff --git a/examples/segment-anything-client/index.css b/examples/segment-anything-client/index.css deleted file mode 100644 index fc556bcac..000000000 --- a/examples/segment-anything-client/index.css +++ /dev/null @@ -1,116 +0,0 @@ -* { - box-sizing: border-box; - padding: 0; - margin: 0; - font-family: sans-serif; -} - -html, -body { - height: 100%; -} - -body { - padding: 16px 32px; -} - -body, -#container, -#upload-button { - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; -} - -h1, h3 { - text-align: center; -} - -#container { - position: relative; - width: 640px; - height: 420px; - max-width: 100%; - max-height: 100%; - border: 2px dashed #D1D5DB; - border-radius: 0.75rem; - overflow: hidden; - cursor: pointer; - margin-top: 1rem; - background-size: 100% 100%; - background-position: center; - background-repeat: no-repeat; -} - -#mask-output { - position: absolute; - width: 100%; - height: 100%; - pointer-events: none; -} - -#upload-button { - gap: 0.4rem; - font-size: 18px; - cursor: pointer; -} - -#upload { - display: none; -} - -svg { - pointer-events: none; -} - -#example { - font-size: 14px; - text-decoration: underline; - cursor: pointer; -} - -#example:hover { - color: #2563EB; -} - -canvas { - position: absolute; - width: 100%; - height: 100%; - opacity: 0.6; -} - -#status { - min-height: 16px; - margin: 8px 0; -} - -.icon { - height: 16px; - width: 16px; - position: absolute; - transform: translate(-50%, -50%); -} - -#controls>button { - padding: 6px 12px; - background-color: #3498db; - color: white; - border: 1px solid #2980b9; - border-radius: 5px; - cursor: pointer; - font-size: 16px; -} - -#controls>button:disabled { - background-color: #d1d5db; - color: #6b7280; - border: 1px solid #9ca3af; - cursor: not-allowed; -} - -#information { - margin-top: 0.25rem; - font-size: 15px; -} \ No newline at end of file diff --git a/examples/segment-anything-client/index.html b/examples/segment-anything-client/index.html deleted file mode 100644 index 9dba925fe..000000000 --- a/examples/segment-anything-client/index.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - Transformers.js - Segment Anything WebGPU - - - -

    Segment Anything WebGPU

    -

    In-browser image segmentation w/ 🤗 - Transformers.js

    -
    - - -
    - -
    - - - -
    -

    - Left click = positive points, right click = negative points. -

    - - - - - - \ No newline at end of file diff --git a/examples/segment-anything-client/index.js b/examples/segment-anything-client/index.js deleted file mode 100644 index 979db0582..000000000 --- a/examples/segment-anything-client/index.js +++ /dev/null @@ -1,296 +0,0 @@ - -// Reference the elements we will use -const statusLabel = document.getElementById('status'); -const fileUpload = document.getElementById('upload'); -const imageContainer = document.getElementById('container'); -const example = document.getElementById('example'); -const maskCanvas = document.getElementById('mask-output'); -const uploadButton = document.getElementById('upload-button'); -const resetButton = document.getElementById('reset-image'); -const clearButton = document.getElementById('clear-points'); -const cutButton = document.getElementById('cut-mask'); - -// State variables -let lastPoints = null; -let isEncoded = false; -let isDecoding = false; -let isMultiMaskMode = false; -let modelReady = false; -let imageDataURI = null; - -// Constants -const BASE_URL = 'https://huggingface.co/datasets/Xenova/transformers.js-docs/resolve/main/'; -const EXAMPLE_URL = BASE_URL + 'corgi.jpg'; - -// Create a web worker so that the main (UI) thread is not blocked during inference. -const worker = new Worker( - new URL('./worker.js', import.meta.url), - { type: 'module' } -); - -// Preload star and cross images to avoid lag on first click -const star = new Image(); -star.src = BASE_URL + 'star-icon.png'; -star.className = 'icon'; - -const cross = new Image(); -cross.src = BASE_URL + 'cross-icon.png'; -cross.className = 'icon'; - -// Set up message handler -worker.addEventListener('message', (e) => { - const { type, data } = e.data; - if (type === 'ready') { - modelReady = true; - statusLabel.textContent = 'Ready'; - - } else if (type === 'decode_result') { - isDecoding = false; - - if (!isEncoded) { - return; // We are not ready to decode yet - } - - if (!isMultiMaskMode && lastPoints) { - // Perform decoding with the last point - decode(); - lastPoints = null; - } - - const { mask, scores } = data; - - // Update canvas dimensions (if different) - if (maskCanvas.width !== mask.width || maskCanvas.height !== mask.height) { - maskCanvas.width = mask.width; - maskCanvas.height = mask.height; - } - - // Create context and allocate buffer for pixel data - const context = maskCanvas.getContext('2d'); - const imageData = context.createImageData(maskCanvas.width, maskCanvas.height); - - // Select best mask - const numMasks = scores.length; // 3 - let bestIndex = 0; - for (let i = 1; i < numMasks; ++i) { - if (scores[i] > scores[bestIndex]) { - bestIndex = i; - } - } - statusLabel.textContent = `Segment score: ${scores[bestIndex].toFixed(2)}`; - - // Fill mask with colour - const pixelData = imageData.data; - for (let i = 0; i < pixelData.length; ++i) { - if (mask.data[numMasks * i + bestIndex] === 1) { - const offset = 4 * i; - pixelData[offset] = 0; // red - pixelData[offset + 1] = 114; // green - pixelData[offset + 2] = 189; // blue - pixelData[offset + 3] = 255; // alpha - } - } - - // Draw image data to context - context.putImageData(imageData, 0, 0); - - } else if (type === 'segment_result') { - if (data === 'start') { - statusLabel.textContent = 'Extracting image embedding...'; - } else { - statusLabel.textContent = 'Embedding extracted!'; - isEncoded = true; - } - } -}); - -function decode() { - isDecoding = true; - worker.postMessage({ type: 'decode', data: lastPoints }); -} - -function clearPointsAndMask() { - // Reset state - isMultiMaskMode = false; - lastPoints = null; - - // Remove points from previous mask (if any) - document.querySelectorAll('.icon').forEach(e => e.remove()); - - // Disable cut button - cutButton.disabled = true; - - // Reset mask canvas - maskCanvas.getContext('2d').clearRect(0, 0, maskCanvas.width, maskCanvas.height); -} -clearButton.addEventListener('click', clearPointsAndMask); - -resetButton.addEventListener('click', () => { - // Update state - isEncoded = false; - imageDataURI = null; - - // Indicate to worker that we have reset the state - worker.postMessage({ type: 'reset' }); - - // Clear points and mask (if present) - clearPointsAndMask(); - - // Update UI - cutButton.disabled = true; - imageContainer.style.backgroundImage = 'none'; - uploadButton.style.display = 'flex'; - statusLabel.textContent = 'Ready'; -}); - -function segment(data) { - // Update state - isEncoded = false; - if (!modelReady) { - statusLabel.textContent = 'Loading model...'; - } - imageDataURI = data; - - // Update UI - imageContainer.style.backgroundImage = `url(${data})`; - uploadButton.style.display = 'none'; - cutButton.disabled = true; - - // Instruct worker to segment the image - worker.postMessage({ type: 'segment', data }); -} - -// Handle file selection -fileUpload.addEventListener('change', function (e) { - const file = e.target.files[0]; - if (!file) { - return; - } - - const reader = new FileReader(); - - // Set up a callback when the file is loaded - reader.onload = e2 => segment(e2.target.result); - - reader.readAsDataURL(file); -}); - -example.addEventListener('click', (e) => { - e.preventDefault(); - segment(EXAMPLE_URL); -}); - -function addIcon({ point, label }) { - const icon = (label === 1 ? star : cross).cloneNode(); - icon.style.left = `${point[0] * 100}%`; - icon.style.top = `${point[1] * 100}%`; - imageContainer.appendChild(icon); -} - -// Attach hover event to image container -imageContainer.addEventListener('mousedown', e => { - if (e.button !== 0 && e.button !== 2) { - return; // Ignore other buttons - } - if (!isEncoded) { - return; // Ignore if not encoded yet - } - if (!isMultiMaskMode) { - lastPoints = []; - isMultiMaskMode = true; - cutButton.disabled = false; - } - - const point = getPoint(e); - lastPoints.push(point); - - // add icon - addIcon(point); - - decode(); -}); - - -// Clamp a value inside a range [min, max] -function clamp(x, min = 0, max = 1) { - return Math.max(Math.min(x, max), min) -} - -function getPoint(e) { - // Get bounding box - const bb = imageContainer.getBoundingClientRect(); - - // Get the mouse coordinates relative to the container - const mouseX = clamp((e.clientX - bb.left) / bb.width); - const mouseY = clamp((e.clientY - bb.top) / bb.height); - - return { - point: [mouseX, mouseY], - label: e.button === 2 // right click - ? 0 // negative prompt - : 1, // positive prompt - } -} - -// Do not show context menu on right click -imageContainer.addEventListener('contextmenu', e => { - e.preventDefault(); -}); - -// Attach hover event to image container -imageContainer.addEventListener('mousemove', e => { - if (!isEncoded || isMultiMaskMode) { - // Ignore mousemove events if the image is not encoded yet, - // or we are in multi-mask mode - return; - } - lastPoints = [getPoint(e)]; - - if (!isDecoding) { - decode(); // Only decode if we are not already decoding - } -}); - -// Handle cut button click -cutButton.addEventListener('click', () => { - const [w, h] = [maskCanvas.width, maskCanvas.height]; - - // Get the mask pixel data - const maskContext = maskCanvas.getContext('2d'); - const maskPixelData = maskContext.getImageData(0, 0, w, h); - - // Load the image - const image = new Image(); - image.crossOrigin = 'anonymous'; - image.onload = async () => { - // Create a new canvas to hold the image - const imageCanvas = new OffscreenCanvas(w, h); - const imageContext = imageCanvas.getContext('2d'); - imageContext.drawImage(image, 0, 0, w, h); - const imagePixelData = imageContext.getImageData(0, 0, w, h); - - // Create a new canvas to hold the cut-out - const cutCanvas = new OffscreenCanvas(w, h); - const cutContext = cutCanvas.getContext('2d'); - const cutPixelData = cutContext.getImageData(0, 0, w, h); - - // Copy the image pixel data to the cut canvas - for (let i = 3; i < maskPixelData.data.length; i += 4) { - if (maskPixelData.data[i] > 0) { - for (let j = 0; j < 4; ++j) { - const offset = i - j; - cutPixelData.data[offset] = imagePixelData.data[offset]; - } - } - } - cutContext.putImageData(cutPixelData, 0, 0); - - // Download image - const link = document.createElement('a'); - link.download = 'image.png'; - link.href = URL.createObjectURL(await cutCanvas.convertToBlob()); - link.click(); - link.remove(); - } - image.src = imageDataURI; -}); diff --git a/examples/segment-anything-client/package.json b/examples/segment-anything-client/package.json deleted file mode 100644 index aa790ea74..000000000 --- a/examples/segment-anything-client/package.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "name": "segment-anything-client", - "private": true, - "version": "0.0.0", - "type": "module", - "scripts": { - "dev": "vite", - "build": "vite build", - "preview": "vite preview" - }, - "dependencies": { - "@huggingface/transformers": "^3.0.0-alpha.0" - }, - "devDependencies": { - "vite": "^5.2.9" - } -} diff --git a/examples/segment-anything-client/vite.config.js b/examples/segment-anything-client/vite.config.js deleted file mode 100644 index b2d374d1b..000000000 --- a/examples/segment-anything-client/vite.config.js +++ /dev/null @@ -1,18 +0,0 @@ -import { defineConfig } from 'vite'; -export default defineConfig(env => { - const config = { - build: { - target: 'esnext' - } - }; - - // TODO: Add this back when .wasm files are served locally - // if (env.mode === 'development') { - // // The .wasm files are not correctly served using Vite in development mode. - // // This is a workaround to exclude the onnxruntime-web package from Vite's optimization. - // // See also: https://github.com/vitejs/vite/issues/8427 - // config.optimizeDeps = { exclude: ["onnxruntime-web"] }; - // } - - return config; -}); diff --git a/examples/segment-anything-client/worker.js b/examples/segment-anything-client/worker.js deleted file mode 100644 index bb783e0b5..000000000 --- a/examples/segment-anything-client/worker.js +++ /dev/null @@ -1,101 +0,0 @@ -import { SamModel, AutoProcessor, RawImage, Tensor } from '@huggingface/transformers'; - -// We adopt the singleton pattern to enable lazy-loading of the model and processor. -export class SegmentAnythingSingleton { - static model_id = 'Xenova/slimsam-77-uniform'; - static model; - static processor; - - static getInstance() { - this.model ??= SamModel.from_pretrained(this.model_id, { - dtype: 'fp16', - device: 'webgpu', - }); - this.processor ??= AutoProcessor.from_pretrained(this.model_id); - - return Promise.all([this.model, this.processor]); - } -} - -// State variables -let imageEmbeddings = null; -let imageInputs = null; -let ready = false; - -self.onmessage = async (e) => { - const [model, processor] = await SegmentAnythingSingleton.getInstance(); - if (!ready) { - // Indicate that we are ready to accept requests - ready = true; - self.postMessage({ - type: 'ready', - }); - } - - const { type, data } = e.data; - if (type === 'reset') { - imageInputs = null; - imageEmbeddings = null; - - } else if (type === 'segment') { - // Indicate that we are starting to segment the image - self.postMessage({ - type: 'segment_result', - data: 'start', - }); - - // Read the image and recompute image embeddings - const image = await RawImage.read(e.data.data); - imageInputs = await processor(image); - imageEmbeddings = await model.get_image_embeddings(imageInputs) - - // Indicate that we have computed the image embeddings, and we are ready to accept decoding requests - self.postMessage({ - type: 'segment_result', - data: 'done', - }); - - } else if (type === 'decode') { - // Prepare inputs for decoding - const reshaped = imageInputs.reshaped_input_sizes[0]; - const points = data.map(x => [x.point[0] * reshaped[1], x.point[1] * reshaped[0]]) - const labels = data.map(x => BigInt(x.label)); - - const input_points = new Tensor( - 'float32', - points.flat(Infinity), - [1, 1, points.length, 2], - ) - const input_labels = new Tensor( - 'int64', - labels.flat(Infinity), - [1, 1, labels.length], - ) - - // Generate the mask - const { pred_masks, iou_scores } = await model({ - ...imageEmbeddings, - input_points, - input_labels, - }) - - // Post-process the mask - const masks = await processor.post_process_masks( - pred_masks, - imageInputs.original_sizes, - imageInputs.reshaped_input_sizes, - ); - - // Send the result back to the main thread - self.postMessage({ - type: 'decode_result', - data: { - mask: RawImage.fromTensor(masks[0][0]), - scores: iou_scores.data, - }, - }); - - } else { - throw new Error(`Unknown message type: ${type}`); - } -} From e890716fe00c3a323ce66bca61ace27e0f36ac88 Mon Sep 17 00:00:00 2001 From: Joshua Lochner Date: Mon, 23 Dec 2024 23:26:50 +0000 Subject: [PATCH 19/23] Move zero-shot classification demo --- .../zero-shot-classification/.eslintrc.cjs | 20 - examples/zero-shot-classification/.gitignore | 24 - examples/zero-shot-classification/index.html | 13 - .../package-lock.json | 5805 ----------------- .../zero-shot-classification/package.json | 30 - .../postcss.config.js | 6 - examples/zero-shot-classification/src/App.css | 5 - examples/zero-shot-classification/src/App.jsx | 189 - .../zero-shot-classification/src/index.css | 3 - .../zero-shot-classification/src/main.jsx | 10 - .../zero-shot-classification/src/worker.js | 46 - .../tailwind.config.js | 12 - .../zero-shot-classification/vite.config.js | 7 - 13 files changed, 6170 deletions(-) delete mode 100644 examples/zero-shot-classification/.eslintrc.cjs delete mode 100644 examples/zero-shot-classification/.gitignore delete mode 100644 examples/zero-shot-classification/index.html delete mode 100644 examples/zero-shot-classification/package-lock.json delete mode 100644 examples/zero-shot-classification/package.json delete mode 100644 examples/zero-shot-classification/postcss.config.js delete mode 100644 examples/zero-shot-classification/src/App.css delete mode 100644 examples/zero-shot-classification/src/App.jsx delete mode 100644 examples/zero-shot-classification/src/index.css delete mode 100644 examples/zero-shot-classification/src/main.jsx delete mode 100644 examples/zero-shot-classification/src/worker.js delete mode 100644 examples/zero-shot-classification/tailwind.config.js delete mode 100644 examples/zero-shot-classification/vite.config.js diff --git a/examples/zero-shot-classification/.eslintrc.cjs b/examples/zero-shot-classification/.eslintrc.cjs deleted file mode 100644 index 4dcb43901..000000000 --- a/examples/zero-shot-classification/.eslintrc.cjs +++ /dev/null @@ -1,20 +0,0 @@ -module.exports = { - root: true, - env: { browser: true, es2020: true }, - extends: [ - 'eslint:recommended', - 'plugin:react/recommended', - 'plugin:react/jsx-runtime', - 'plugin:react-hooks/recommended', - ], - ignorePatterns: ['dist', '.eslintrc.cjs'], - parserOptions: { ecmaVersion: 'latest', sourceType: 'module' }, - settings: { react: { version: '18.2' } }, - plugins: ['react-refresh'], - rules: { - 'react-refresh/only-export-components': [ - 'warn', - { allowConstantExport: true }, - ], - }, -} diff --git a/examples/zero-shot-classification/.gitignore b/examples/zero-shot-classification/.gitignore deleted file mode 100644 index a547bf36d..000000000 --- a/examples/zero-shot-classification/.gitignore +++ /dev/null @@ -1,24 +0,0 @@ -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -pnpm-debug.log* -lerna-debug.log* - -node_modules -dist -dist-ssr -*.local - -# Editor directories and files -.vscode/* -!.vscode/extensions.json -.idea -.DS_Store -*.suo -*.ntvs* -*.njsproj -*.sln -*.sw? diff --git a/examples/zero-shot-classification/index.html b/examples/zero-shot-classification/index.html deleted file mode 100644 index 386718654..000000000 --- a/examples/zero-shot-classification/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - Zero-shot classication w/ Transformers.js - - -
    - - - diff --git a/examples/zero-shot-classification/package-lock.json b/examples/zero-shot-classification/package-lock.json deleted file mode 100644 index d31ec28bc..000000000 --- a/examples/zero-shot-classification/package-lock.json +++ /dev/null @@ -1,5805 +0,0 @@ -{ - "name": "zero-shot-classification", - "version": "0.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "zero-shot-classification", - "version": "0.0.0", - "dependencies": { - "@xenova/transformers": "^2.14.0", - "react": "^18.2.0", - "react-dom": "^18.2.0" - }, - "devDependencies": { - "@types/react": "^18.2.43", - "@types/react-dom": "^18.2.17", - "@vitejs/plugin-react": "^4.2.1", - "autoprefixer": "^10.4.16", - "eslint": "^8.55.0", - "eslint-plugin-react": "^7.33.2", - "eslint-plugin-react-hooks": "^4.6.0", - "eslint-plugin-react-refresh": "^0.4.5", - "postcss": "^8.4.33", - "tailwindcss": "^3.4.1", - "vite": "^5.0.13" - } - }, - "node_modules/@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@alloc/quick-lru": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", - "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@ampproject/remapping": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", - "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", - "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", - "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.23.7", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.7.tgz", - "integrity": "sha512-+UpDgowcmqe36d4NwqvKsyPMlOLNGMsfMmQ5WGCu+siCe3t3dfe9njrzGfdN4qq+bcNUt0+Vw6haRxBOycs4dw==", - "dev": true, - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.6", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.23.7", - "@babel/parser": "^7.23.6", - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.7", - "@babel/types": "^7.23.6", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/generator": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", - "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.23.6", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", - "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.23.5", - "@babel/helper-validator-option": "^7.23.5", - "browserslist": "^4.22.2", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", - "dev": true, - "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", - "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.15" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", - "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.20" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", - "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", - "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", - "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", - "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.23.8", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.8.tgz", - "integrity": "sha512-KDqYz4PiOWvDFrdHLPhKtCThtIcKVy6avWD2oG4GEvyQ+XDZwHD4YQd+H2vNMnq2rkdxsDkU82T+Vk8U/WXHRQ==", - "dev": true, - "dependencies": { - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.7", - "@babel/types": "^7.23.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", - "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz", - "integrity": "sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-transform-react-jsx-self": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.23.3.tgz", - "integrity": "sha512-qXRvbeKDSfwnlJnanVRp0SfuWE5DQhwQr5xtLBzp56Wabyo+4CMosF6Kfp+eOD/4FYpql64XVJ2W0pVLlJZxOQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-jsx-source": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.23.3.tgz", - "integrity": "sha512-91RS0MDnAWDNvGC6Wio5XYkyWI39FMFO+JK9+4AlgaTH+yWwVTsw7/sn6LK0lH7c5F+TFkpv/3LfCJ1Ydwof/g==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.23.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.7.tgz", - "integrity": "sha512-tY3mM8rH9jM0YHFGyfC0/xf+SB5eKUu7HPj7/k3fpi9dAlsMc5YbQvDi0Sh2QTPXqMhyaAtzAr807TIyfQrmyg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.6", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.6", - "@babel/types": "^7.23.6", - "debug": "^4.3.1", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.6.tgz", - "integrity": "sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==", - "dev": true, - "dependencies": { - "@babel/helper-string-parser": "^7.23.4", - "@babel/helper-validator-identifier": "^7.22.20", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.11.tgz", - "integrity": "sha512-FnzU0LyE3ySQk7UntJO4+qIiQgI7KoODnZg5xzXIrFJlKd2P2gwHsHY4927xj9y5PJmJSzULiUCWmv7iWnNa7g==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.11.tgz", - "integrity": "sha512-5OVapq0ClabvKvQ58Bws8+wkLCV+Rxg7tUVbo9xu034Nm536QTII4YzhaFriQ7rMrorfnFKUsArD2lqKbFY4vw==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.11.tgz", - "integrity": "sha512-aiu7K/5JnLj//KOnOfEZ0D90obUkRzDMyqd/wNAUQ34m4YUPVhRZpnqKV9uqDGxT7cToSDnIHsGooyIczu9T+Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.11.tgz", - "integrity": "sha512-eccxjlfGw43WYoY9QgB82SgGgDbibcqyDTlk3l3C0jOVHKxrjdc9CTwDUQd0vkvYg5um0OH+GpxYvp39r+IPOg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.11.tgz", - "integrity": "sha512-ETp87DRWuSt9KdDVkqSoKoLFHYTrkyz2+65fj9nfXsaV3bMhTCjtQfw3y+um88vGRKRiF7erPrh/ZuIdLUIVxQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.11.tgz", - "integrity": "sha512-fkFUiS6IUK9WYUO/+22omwetaSNl5/A8giXvQlcinLIjVkxwTLSktbF5f/kJMftM2MJp9+fXqZ5ezS7+SALp4g==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.11.tgz", - "integrity": "sha512-lhoSp5K6bxKRNdXUtHoNc5HhbXVCS8V0iZmDvyWvYq9S5WSfTIHU2UGjcGt7UeS6iEYp9eeymIl5mJBn0yiuxA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.11.tgz", - "integrity": "sha512-JkUqn44AffGXitVI6/AbQdoYAq0TEullFdqcMY/PCUZ36xJ9ZJRtQabzMA+Vi7r78+25ZIBosLTOKnUXBSi1Kw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.11.tgz", - "integrity": "sha512-3CRkr9+vCV2XJbjwgzjPtO8T0SZUmRZla+UL1jw+XqHZPkPgZiyWvbDvl9rqAN8Zl7qJF0O/9ycMtjU67HN9/Q==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.11.tgz", - "integrity": "sha512-LneLg3ypEeveBSMuoa0kwMpCGmpu8XQUh+mL8XXwoYZ6Be2qBnVtcDI5azSvh7vioMDhoJFZzp9GWp9IWpYoUg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.11.tgz", - "integrity": "sha512-caHy++CsD8Bgq2V5CodbJjFPEiDPq8JJmBdeyZ8GWVQMjRD0sU548nNdwPNvKjVpamYYVL40AORekgfIubwHoA==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.11.tgz", - "integrity": "sha512-ppZSSLVpPrwHccvC6nQVZaSHlFsvCQyjnvirnVjbKSHuE5N24Yl8F3UwYUUR1UEPaFObGD2tSvVKbvR+uT1Nrg==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.11.tgz", - "integrity": "sha512-B5x9j0OgjG+v1dF2DkH34lr+7Gmv0kzX6/V0afF41FkPMMqaQ77pH7CrhWeR22aEeHKaeZVtZ6yFwlxOKPVFyg==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.11.tgz", - "integrity": "sha512-MHrZYLeCG8vXblMetWyttkdVRjQlQUb/oMgBNurVEnhj4YWOr4G5lmBfZjHYQHHN0g6yDmCAQRR8MUHldvvRDA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.11.tgz", - "integrity": "sha512-f3DY++t94uVg141dozDu4CCUkYW+09rWtaWfnb3bqe4w5NqmZd6nPVBm+qbz7WaHZCoqXqHz5p6CM6qv3qnSSQ==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.11.tgz", - "integrity": "sha512-A5xdUoyWJHMMlcSMcPGVLzYzpcY8QP1RtYzX5/bS4dvjBGVxdhuiYyFwp7z74ocV7WDc0n1harxmpq2ePOjI0Q==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.11.tgz", - "integrity": "sha512-grbyMlVCvJSfxFQUndw5mCtWs5LO1gUlwP4CDi4iJBbVpZcqLVT29FxgGuBJGSzyOxotFG4LoO5X+M1350zmPA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.11.tgz", - "integrity": "sha512-13jvrQZJc3P230OhU8xgwUnDeuC/9egsjTkXN49b3GcS5BKvJqZn86aGM8W9pd14Kd+u7HuFBMVtrNGhh6fHEQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.11.tgz", - "integrity": "sha512-ysyOGZuTp6SNKPE11INDUeFVVQFrhcNDVUgSQVDzqsqX38DjhPEPATpid04LCoUr2WXhQTEZ8ct/EgJCUDpyNw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.11.tgz", - "integrity": "sha512-Hf+Sad9nVwvtxy4DXCZQqLpgmRTQqyFyhT3bZ4F2XlJCjxGmRFF0Shwn9rzhOYRB61w9VMXUkxlBy56dk9JJiQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.11.tgz", - "integrity": "sha512-0P58Sbi0LctOMOQbpEOvOL44Ne0sqbS0XWHMvvrg6NE5jQ1xguCSSw9jQeUk2lfrXYsKDdOe6K+oZiwKPilYPQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.11.tgz", - "integrity": "sha512-6YOrWS+sDJDmshdBIQU+Uoyh7pQKrdykdefC1avn76ss5c+RN6gut3LZA4E2cH5xUEp5/cA0+YxRaVtRAb0xBg==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.11.tgz", - "integrity": "sha512-vfkhltrjCAb603XaFhqhAF4LGDi2M4OrCRrFusyQ+iTLQ/o60QQXxc9cZC/FFpihBI9N1Grn6SMKVJ4KP7Fuiw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", - "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", - "dev": true, - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@eslint/js": { - "version": "8.56.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", - "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@huggingface/jinja": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@huggingface/jinja/-/jinja-0.1.2.tgz", - "integrity": "sha512-x5mpbfJt1nKmVep5WNP5VjNsjWApWNj8pPYI+uYMkBWH9bWUJmQmHt2lbf0VCoQd54Oq3XuFEh/UyoVh7rPxmg==", - "engines": { - "node": ">=18" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.14", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", - "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^2.0.2", - "debug": "^4.3.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", - "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", - "dev": true - }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "dev": true, - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.20", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", - "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "dev": true, - "optional": true, - "engines": { - "node": ">=14" - } - }, - "node_modules/@protobufjs/aspromise": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", - "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" - }, - "node_modules/@protobufjs/base64": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", - "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" - }, - "node_modules/@protobufjs/codegen": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", - "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" - }, - "node_modules/@protobufjs/eventemitter": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", - "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" - }, - "node_modules/@protobufjs/fetch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", - "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", - "dependencies": { - "@protobufjs/aspromise": "^1.1.1", - "@protobufjs/inquire": "^1.1.0" - } - }, - "node_modules/@protobufjs/float": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", - "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" - }, - "node_modules/@protobufjs/inquire": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", - "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" - }, - "node_modules/@protobufjs/path": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", - "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" - }, - "node_modules/@protobufjs/pool": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", - "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" - }, - "node_modules/@protobufjs/utf8": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", - "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" - }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.4.tgz", - "integrity": "sha512-ub/SN3yWqIv5CWiAZPHVS1DloyZsJbtXmX4HxUTIpS0BHm9pW5iYBo2mIZi+hE3AeiTzHz33blwSnhdUo+9NpA==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.9.4.tgz", - "integrity": "sha512-ehcBrOR5XTl0W0t2WxfTyHCR/3Cq2jfb+I4W+Ch8Y9b5G+vbAecVv0Fx/J1QKktOrgUYsIKxWAKgIpvw56IFNA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.9.4.tgz", - "integrity": "sha512-1fzh1lWExwSTWy8vJPnNbNM02WZDS8AW3McEOb7wW+nPChLKf3WG2aG7fhaUmfX5FKw9zhsF5+MBwArGyNM7NA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.9.4.tgz", - "integrity": "sha512-Gc6cukkF38RcYQ6uPdiXi70JB0f29CwcQ7+r4QpfNpQFVHXRd0DfWFidoGxjSx1DwOETM97JPz1RXL5ISSB0pA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.9.4.tgz", - "integrity": "sha512-g21RTeFzoTl8GxosHbnQZ0/JkuFIB13C3T7Y0HtKzOXmoHhewLbVTFBQZu+z5m9STH6FZ7L/oPgU4Nm5ErN2fw==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.9.4.tgz", - "integrity": "sha512-TVYVWD/SYwWzGGnbfTkrNpdE4HON46orgMNHCivlXmlsSGQOx/OHHYiQcMIOx38/GWgwr/po2LBn7wypkWw/Mg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.9.4.tgz", - "integrity": "sha512-XcKvuendwizYYhFxpvQ3xVpzje2HHImzg33wL9zvxtj77HvPStbSGI9czrdbfrf8DGMcNNReH9pVZv8qejAQ5A==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.9.4.tgz", - "integrity": "sha512-LFHS/8Q+I9YA0yVETyjonMJ3UA+DczeBd/MqNEzsGSTdNvSJa1OJZcSH8GiXLvcizgp9AlHs2walqRcqzjOi3A==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.9.4.tgz", - "integrity": "sha512-dIYgo+j1+yfy81i0YVU5KnQrIJZE8ERomx17ReU4GREjGtDW4X+nvkBak2xAUpyqLs4eleDSj3RrV72fQos7zw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.9.4.tgz", - "integrity": "sha512-RoaYxjdHQ5TPjaPrLsfKqR3pakMr3JGqZ+jZM0zP2IkDtsGa4CqYaWSfQmZVgFUCgLrTnzX+cnHS3nfl+kB6ZQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.9.4.tgz", - "integrity": "sha512-T8Q3XHV+Jjf5e49B4EAaLKV74BbX7/qYBRQ8Wop/+TyyU0k+vSjiLVSHNWdVd1goMjZcbhDmYZUYW5RFqkBNHQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.9.4.tgz", - "integrity": "sha512-z+JQ7JirDUHAsMecVydnBPWLwJjbppU+7LZjffGf+Jvrxq+dVjIE7By163Sc9DKc3ADSU50qPVw0KonBS+a+HQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.9.4.tgz", - "integrity": "sha512-LfdGXCV9rdEify1oxlN9eamvDSjv9md9ZVMAbNHA87xqIfFCxImxan9qZ8+Un54iK2nnqPlbnSi4R54ONtbWBw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@types/babel__core": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", - "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "node_modules/@types/babel__generator": { - "version": "7.6.8", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", - "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__template": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", - "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__traverse": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.5.tgz", - "integrity": "sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==", - "dev": true, - "dependencies": { - "@babel/types": "^7.20.7" - } - }, - "node_modules/@types/estree": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", - "dev": true - }, - "node_modules/@types/long": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", - "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==" - }, - "node_modules/@types/node": { - "version": "20.11.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.0.tgz", - "integrity": "sha512-o9bjXmDNcF7GbM4CNQpmi+TutCgap/K3w1JyKgxAjqx41zp9qlIAVFi0IhCNsJcXolEqLWhbFbEeL0PvYm4pcQ==", - "dependencies": { - "undici-types": "~5.26.4" - } - }, - "node_modules/@types/prop-types": { - "version": "15.7.11", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz", - "integrity": "sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==", - "dev": true - }, - "node_modules/@types/react": { - "version": "18.2.47", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.47.tgz", - "integrity": "sha512-xquNkkOirwyCgoClNk85BjP+aqnIS+ckAJ8i37gAbDs14jfW/J23f2GItAf33oiUPQnqNMALiFeoM9Y5mbjpVQ==", - "dev": true, - "dependencies": { - "@types/prop-types": "*", - "@types/scheduler": "*", - "csstype": "^3.0.2" - } - }, - "node_modules/@types/react-dom": { - "version": "18.2.18", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.18.tgz", - "integrity": "sha512-TJxDm6OfAX2KJWJdMEVTwWke5Sc/E/RlnPGvGfS0W7+6ocy2xhDVQVh/KvC2Uf7kACs+gDytdusDSdWfWkaNzw==", - "dev": true, - "dependencies": { - "@types/react": "*" - } - }, - "node_modules/@types/scheduler": { - "version": "0.16.8", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz", - "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==", - "dev": true - }, - "node_modules/@ungap/structured-clone": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", - "dev": true - }, - "node_modules/@vitejs/plugin-react": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.2.1.tgz", - "integrity": "sha512-oojO9IDc4nCUUi8qIR11KoQm0XFFLIwsRBwHRR4d/88IWghn1y6ckz/bJ8GHDCsYEJee8mDzqtJxh15/cisJNQ==", - "dev": true, - "dependencies": { - "@babel/core": "^7.23.5", - "@babel/plugin-transform-react-jsx-self": "^7.23.3", - "@babel/plugin-transform-react-jsx-source": "^7.23.3", - "@types/babel__core": "^7.20.5", - "react-refresh": "^0.14.0" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "peerDependencies": { - "vite": "^4.2.0 || ^5.0.0" - } - }, - "node_modules/@xenova/transformers": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/@xenova/transformers/-/transformers-2.14.0.tgz", - "integrity": "sha512-rQ3O7SW5EM64b6XFZGx3XQ2cfiroefxUwU9ShfSpEZyhd082GvwNJJKndxgaukse1hZP1JUDoT0DfjDiq4IZiw==", - "dependencies": { - "@huggingface/jinja": "^0.1.0", - "onnxruntime-web": "1.14.0", - "sharp": "^0.32.0" - }, - "optionalDependencies": { - "onnxruntime-node": "1.14.0" - } - }, - "node_modules/acorn": { - "version": "8.11.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", - "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", - "dev": true - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/arg": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", - "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", - "dev": true - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", - "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "is-array-buffer": "^3.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-includes": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz", - "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flat": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", - "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", - "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.tosorted": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.2.tgz", - "integrity": "sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0", - "get-intrinsic": "^1.2.1" - } - }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", - "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", - "dev": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", - "is-array-buffer": "^3.0.2", - "is-shared-array-buffer": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/asynciterator.prototype": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz", - "integrity": "sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.3" - } - }, - "node_modules/autoprefixer": { - "version": "10.4.16", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.16.tgz", - "integrity": "sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "browserslist": "^4.21.10", - "caniuse-lite": "^1.0.30001538", - "fraction.js": "^4.3.6", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", - "postcss-value-parser": "^4.2.0" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" - }, - "engines": { - "node": "^10 || ^12 || >=14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/b4a": { - "version": "1.6.4", - "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.4.tgz", - "integrity": "sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==" - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.22.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz", - "integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001565", - "electron-to-chromium": "^1.4.601", - "node-releases": "^2.0.14", - "update-browserslist-db": "^1.0.13" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/call-bind": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", - "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.1", - "set-function-length": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase-css": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", - "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001576", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001576.tgz", - "integrity": "sha512-ff5BdakGe2P3SQsMsiqmt1Lc8221NR1VzHj5jXN5vBny9A6fpze94HiVV/n7XRosOlsShJcvMv5mdnpjOGCEgg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ] - }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chokidar/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" - }, - "node_modules/color": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", - "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", - "dependencies": { - "color-convert": "^2.0.1", - "color-string": "^1.9.0" - }, - "engines": { - "node": ">=12.5.0" - } - }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "node_modules/color-string": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", - "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", - "dependencies": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "node_modules/color/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true, - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/csstype": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", - "dev": true - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "dependencies": { - "mimic-response": "^3.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "node_modules/define-data-property": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", - "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.2.1", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dev": true, - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/detect-libc": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", - "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/didyoumean": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", - "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", - "dev": true - }, - "node_modules/dlv": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", - "dev": true - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true - }, - "node_modules/electron-to-chromium": { - "version": "1.4.628", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.628.tgz", - "integrity": "sha512-2k7t5PHvLsufpP6Zwk0nof62yLOsCf032wZx7/q0mv8gwlXjhcxI3lz6f0jBr0GrnWKcm3burXzI3t5IrcdUxw==", - "dev": true - }, - "node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true - }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/es-abstract": { - "version": "1.22.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz", - "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==", - "dev": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "arraybuffer.prototype.slice": "^1.0.2", - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.5", - "es-set-tostringtag": "^2.0.1", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.2", - "get-symbol-description": "^1.0.0", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0", - "internal-slot": "^1.0.5", - "is-array-buffer": "^3.0.2", - "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.12", - "is-weakref": "^1.0.2", - "object-inspect": "^1.13.1", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.1", - "safe-array-concat": "^1.0.1", - "safe-regex-test": "^1.0.0", - "string.prototype.trim": "^1.2.8", - "string.prototype.trimend": "^1.0.7", - "string.prototype.trimstart": "^1.0.7", - "typed-array-buffer": "^1.0.0", - "typed-array-byte-length": "^1.0.0", - "typed-array-byte-offset": "^1.0.0", - "typed-array-length": "^1.0.4", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-iterator-helpers": { - "version": "1.0.15", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz", - "integrity": "sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==", - "dev": true, - "dependencies": { - "asynciterator.prototype": "^1.0.0", - "call-bind": "^1.0.2", - "define-properties": "^1.2.1", - "es-abstract": "^1.22.1", - "es-set-tostringtag": "^2.0.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.2.1", - "globalthis": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", - "iterator.prototype": "^1.1.2", - "safe-array-concat": "^1.0.1" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", - "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.2.2", - "has-tostringtag": "^1.0.0", - "hasown": "^2.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-shim-unscopables": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", - "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", - "dev": true, - "dependencies": { - "hasown": "^2.0.0" - } - }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/esbuild": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.11.tgz", - "integrity": "sha512-HJ96Hev2hX/6i5cDVwcqiJBBtuo9+FeIJOtZ9W1kA5M6AMJRHUZlpYZ1/SbEwtO0ioNAW8rUooVpC/WehY2SfA==", - "dev": true, - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.19.11", - "@esbuild/android-arm": "0.19.11", - "@esbuild/android-arm64": "0.19.11", - "@esbuild/android-x64": "0.19.11", - "@esbuild/darwin-arm64": "0.19.11", - "@esbuild/darwin-x64": "0.19.11", - "@esbuild/freebsd-arm64": "0.19.11", - "@esbuild/freebsd-x64": "0.19.11", - "@esbuild/linux-arm": "0.19.11", - "@esbuild/linux-arm64": "0.19.11", - "@esbuild/linux-ia32": "0.19.11", - "@esbuild/linux-loong64": "0.19.11", - "@esbuild/linux-mips64el": "0.19.11", - "@esbuild/linux-ppc64": "0.19.11", - "@esbuild/linux-riscv64": "0.19.11", - "@esbuild/linux-s390x": "0.19.11", - "@esbuild/linux-x64": "0.19.11", - "@esbuild/netbsd-x64": "0.19.11", - "@esbuild/openbsd-x64": "0.19.11", - "@esbuild/sunos-x64": "0.19.11", - "@esbuild/win32-arm64": "0.19.11", - "@esbuild/win32-ia32": "0.19.11", - "@esbuild/win32-x64": "0.19.11" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/eslint": { - "version": "8.56.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", - "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.56.0", - "@humanwhocodes/config-array": "^0.11.13", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-plugin-react": { - "version": "7.33.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz", - "integrity": "sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==", - "dev": true, - "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flatmap": "^1.3.1", - "array.prototype.tosorted": "^1.1.1", - "doctrine": "^2.1.0", - "es-iterator-helpers": "^1.0.12", - "estraverse": "^5.3.0", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.1.2", - "object.entries": "^1.1.6", - "object.fromentries": "^2.0.6", - "object.hasown": "^1.1.2", - "object.values": "^1.1.6", - "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.4", - "semver": "^6.3.1", - "string.prototype.matchall": "^4.0.8" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" - } - }, - "node_modules/eslint-plugin-react-hooks": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", - "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", - "dev": true, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" - } - }, - "node_modules/eslint-plugin-react-refresh": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.5.tgz", - "integrity": "sha512-D53FYKJa+fDmZMtriODxvhwrO+IOqrxoEo21gMA0sjHdU6dPVH4OhyFip9ypl8HOF5RV5KdTo+rBQLvnY2cO8w==", - "dev": true, - "peerDependencies": { - "eslint": ">=7" - } - }, - "node_modules/eslint-plugin-react/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/eslint/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/eslint/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/eslint/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/eslint/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dev": true, - "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", - "dev": true, - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-template": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", - "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-fifo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", - "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==" - }, - "node_modules/fast-glob": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "node_modules/fastq": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.16.0.tgz", - "integrity": "sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat-cache": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", - "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", - "dev": true, - "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatbuffers": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/flatbuffers/-/flatbuffers-1.12.0.tgz", - "integrity": "sha512-c7CZADjRcl6j0PlvFy0ZqXQ67qSEZfrVPynmnL+2zPc+NtMvrF8Y0QceMo7QqnSPc7+uWjUIAbvCQ5WIKlMVdQ==" - }, - "node_modules/flatted": { - "version": "3.2.9", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", - "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", - "dev": true - }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.3" - } - }, - "node_modules/foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/fraction.js": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", - "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", - "dev": true, - "engines": { - "node": "*" - }, - "funding": { - "type": "patreon", - "url": "https://github.com/sponsors/rawify" - } - }, - "node_modules/fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/function.prototype.name": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", - "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "functions-have-names": "^1.2.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-intrinsic": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", - "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/github-from-package": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", - "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==" - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", - "dev": true, - "dependencies": { - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true - }, - "node_modules/guid-typescript": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/guid-typescript/-/guid-typescript-1.0.9.tgz", - "integrity": "sha512-Y8T4vYhEfwJOTbouREvG+3XDsjr8E3kIr7uf+JZ0BYloFsttiHU0WfvANVsR7TxNUJa/WpCnw/Ino/p+DeBhBQ==" - }, - "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", - "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.2.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", - "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/ignore": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", - "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" - }, - "node_modules/internal-slot": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz", - "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.2.2", - "hasown": "^2.0.0", - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/is-array-buffer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", - "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "is-typed-array": "^1.1.10" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" - }, - "node_modules/is-async-function": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", - "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dev": true, - "dependencies": { - "has-bigints": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", - "dev": true, - "dependencies": { - "hasown": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-finalizationregistry": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", - "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-generator-function": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", - "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", - "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-set": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", - "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", - "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", - "dev": true, - "dependencies": { - "which-typed-array": "^1.1.11" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakmap": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", - "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakset": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", - "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "node_modules/iterator.prototype": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", - "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", - "dev": true, - "dependencies": { - "define-properties": "^1.2.1", - "get-intrinsic": "^1.2.1", - "has-symbols": "^1.0.3", - "reflect.getprototypeof": "^1.0.4", - "set-function-name": "^2.0.1" - } - }, - "node_modules/jackspeak": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", - "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", - "dev": true, - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, - "node_modules/jiti": { - "version": "1.21.0", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz", - "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==", - "dev": true, - "bin": { - "jiti": "bin/jiti.js" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsx-ast-utils": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", - "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", - "dev": true, - "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flat": "^1.3.1", - "object.assign": "^4.1.4", - "object.values": "^1.1.6" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "dev": true, - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/lilconfig": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", - "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "node_modules/long": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", - "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", - "dev": true, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/mz": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", - "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", - "dev": true, - "dependencies": { - "any-promise": "^1.0.0", - "object-assign": "^4.0.1", - "thenify-all": "^1.0.0" - } - }, - "node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/napi-build-utils": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", - "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==" - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "node_modules/node-abi": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.54.0.tgz", - "integrity": "sha512-p7eGEiQil0YUV3ItH4/tBb781L5impVmmx2E9FRKF7d18XXzp4PGT2tdYMFY6wQqgxD0IwNZOiSJ0/K0fSi/OA==", - "dependencies": { - "semver": "^7.3.5" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/node-abi/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/node-abi/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/node-abi/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "node_modules/node-addon-api": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz", - "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==" - }, - "node_modules/node-releases": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", - "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", - "dev": true - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-hash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", - "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/object-inspect": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", - "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.entries": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.7.tgz", - "integrity": "sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.fromentries": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz", - "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.hasown": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.3.tgz", - "integrity": "sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==", - "dev": true, - "dependencies": { - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.values": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz", - "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onnx-proto": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/onnx-proto/-/onnx-proto-4.0.4.tgz", - "integrity": "sha512-aldMOB3HRoo6q/phyB6QRQxSt895HNNw82BNyZ2CMh4bjeKv7g/c+VpAFtJuEMVfYLMbRx61hbuqnKceLeDcDA==", - "dependencies": { - "protobufjs": "^6.8.8" - } - }, - "node_modules/onnxruntime-common": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/onnxruntime-common/-/onnxruntime-common-1.14.0.tgz", - "integrity": "sha512-3LJpegM2iMNRX2wUmtYfeX/ytfOzNwAWKSq1HbRrKc9+uqG/FsEA0bbKZl1btQeZaXhC26l44NWpNUeXPII7Ew==" - }, - "node_modules/onnxruntime-node": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/onnxruntime-node/-/onnxruntime-node-1.14.0.tgz", - "integrity": "sha512-5ba7TWomIV/9b6NH/1x/8QEeowsb+jBEvFzU6z0T4mNsFwdPqXeFUM7uxC6QeSRkEbWu3qEB0VMjrvzN/0S9+w==", - "optional": true, - "os": [ - "win32", - "darwin", - "linux" - ], - "dependencies": { - "onnxruntime-common": "~1.14.0" - } - }, - "node_modules/onnxruntime-web": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/onnxruntime-web/-/onnxruntime-web-1.14.0.tgz", - "integrity": "sha512-Kcqf43UMfW8mCydVGcX9OMXI2VN17c0p6XvR7IPSZzBf/6lteBzXHvcEVWDPmCKuGombl997HgLqj91F11DzXw==", - "dependencies": { - "flatbuffers": "^1.12.0", - "guid-typescript": "^1.0.9", - "long": "^4.0.0", - "onnx-proto": "^4.0.4", - "onnxruntime-common": "~1.14.0", - "platform": "^1.3.6" - } - }, - "node_modules/optionator": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", - "dev": true, - "dependencies": { - "@aashutoshrathi/word-wrap": "^1.2.3", - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/path-scurry": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", - "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", - "dev": true, - "dependencies": { - "lru-cache": "^9.1.1 || ^10.0.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", - "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==", - "dev": true, - "engines": { - "node": "14 || >=16.14" - } - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pirates": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", - "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/platform": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.6.tgz", - "integrity": "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==" - }, - "node_modules/postcss": { - "version": "8.4.33", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.33.tgz", - "integrity": "sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "nanoid": "^3.3.7", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/postcss-import": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", - "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.0.0", - "read-cache": "^1.0.0", - "resolve": "^1.1.7" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "postcss": "^8.0.0" - } - }, - "node_modules/postcss-import/node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/postcss-js": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", - "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", - "dev": true, - "dependencies": { - "camelcase-css": "^2.0.1" - }, - "engines": { - "node": "^12 || ^14 || >= 16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": "^8.4.21" - } - }, - "node_modules/postcss-load-config": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", - "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "lilconfig": "^3.0.0", - "yaml": "^2.3.4" - }, - "engines": { - "node": ">= 14" - }, - "peerDependencies": { - "postcss": ">=8.0.9", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "postcss": { - "optional": true - }, - "ts-node": { - "optional": true - } - } - }, - "node_modules/postcss-load-config/node_modules/lilconfig": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.0.0.tgz", - "integrity": "sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==", - "dev": true, - "engines": { - "node": ">=14" - } - }, - "node_modules/postcss-nested": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz", - "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.11" - }, - "engines": { - "node": ">=12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": "^8.2.14" - } - }, - "node_modules/postcss-selector-parser": { - "version": "6.0.15", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz", - "integrity": "sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==", - "dev": true, - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true - }, - "node_modules/prebuild-install": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz", - "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==", - "dependencies": { - "detect-libc": "^2.0.0", - "expand-template": "^2.0.3", - "github-from-package": "0.0.0", - "minimist": "^1.2.3", - "mkdirp-classic": "^0.5.3", - "napi-build-utils": "^1.0.1", - "node-abi": "^3.3.0", - "pump": "^3.0.0", - "rc": "^1.2.7", - "simple-get": "^4.0.0", - "tar-fs": "^2.0.0", - "tunnel-agent": "^0.6.0" - }, - "bin": { - "prebuild-install": "bin.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/prebuild-install/node_modules/tar-fs": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", - "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", - "dependencies": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^2.1.4" - } - }, - "node_modules/prebuild-install/node_modules/tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "dev": true, - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" - } - }, - "node_modules/protobufjs": { - "version": "6.11.4", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.4.tgz", - "integrity": "sha512-5kQWPaJHi1WoCpjTGszzQ32PG2F4+wRY6BmAT4Vfw56Q2FZ4YZzK20xUYQH4YkfehY1e6QSICrJquM6xXZNcrw==", - "hasInstallScript": true, - "dependencies": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", - "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", - "@types/long": "^4.0.1", - "@types/node": ">=13.7.0", - "long": "^4.0.0" - }, - "bin": { - "pbjs": "bin/pbjs", - "pbts": "bin/pbts" - } - }, - "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/queue-tick": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", - "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==" - }, - "node_modules/rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "bin": { - "rc": "cli.js" - } - }, - "node_modules/rc/node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", - "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", - "dependencies": { - "loose-envify": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-dom": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", - "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", - "dependencies": { - "loose-envify": "^1.1.0", - "scheduler": "^0.23.0" - }, - "peerDependencies": { - "react": "^18.2.0" - } - }, - "node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "dev": true - }, - "node_modules/react-refresh": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", - "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/read-cache": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", - "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", - "dev": true, - "dependencies": { - "pify": "^2.3.0" - } - }, - "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/reflect.getprototypeof": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz", - "integrity": "sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", - "globalthis": "^1.0.3", - "which-builtin-type": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", - "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "set-function-name": "^2.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve": { - "version": "2.0.0-next.5", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", - "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", - "dev": true, - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rollup": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.9.4.tgz", - "integrity": "sha512-2ztU7pY/lrQyXSCnnoU4ICjT/tCG9cdH3/G25ERqE3Lst6vl2BCM5hL2Nw+sslAvAf+ccKsAq1SkKQALyqhR7g==", - "dev": true, - "dependencies": { - "@types/estree": "1.0.5" - }, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.9.4", - "@rollup/rollup-android-arm64": "4.9.4", - "@rollup/rollup-darwin-arm64": "4.9.4", - "@rollup/rollup-darwin-x64": "4.9.4", - "@rollup/rollup-linux-arm-gnueabihf": "4.9.4", - "@rollup/rollup-linux-arm64-gnu": "4.9.4", - "@rollup/rollup-linux-arm64-musl": "4.9.4", - "@rollup/rollup-linux-riscv64-gnu": "4.9.4", - "@rollup/rollup-linux-x64-gnu": "4.9.4", - "@rollup/rollup-linux-x64-musl": "4.9.4", - "@rollup/rollup-win32-arm64-msvc": "4.9.4", - "@rollup/rollup-win32-ia32-msvc": "4.9.4", - "@rollup/rollup-win32-x64-msvc": "4.9.4", - "fsevents": "~2.3.2" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/safe-array-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", - "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", - "has-symbols": "^1.0.3", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/safe-regex-test": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.2.tgz", - "integrity": "sha512-83S9w6eFq12BBIJYvjMux6/dkirb8+4zJRA9cxNBVb7Wq5fJBW+Xze48WqR8pxua7bDuAaaAxtVVd4Idjp1dBQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.5", - "get-intrinsic": "^1.2.2", - "is-regex": "^1.1.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/scheduler": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", - "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", - "dependencies": { - "loose-envify": "^1.1.0" - } - }, - "node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/set-function-length": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", - "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", - "dev": true, - "dependencies": { - "define-data-property": "^1.1.1", - "get-intrinsic": "^1.2.1", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-function-name": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", - "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", - "dev": true, - "dependencies": { - "define-data-property": "^1.0.1", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/sharp": { - "version": "0.32.6", - "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.32.6.tgz", - "integrity": "sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==", - "hasInstallScript": true, - "dependencies": { - "color": "^4.2.3", - "detect-libc": "^2.0.2", - "node-addon-api": "^6.1.0", - "prebuild-install": "^7.1.1", - "semver": "^7.5.4", - "simple-get": "^4.0.1", - "tar-fs": "^3.0.4", - "tunnel-agent": "^0.6.0" - }, - "engines": { - "node": ">=14.15.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/sharp/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/sharp/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/sharp/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/simple-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/simple-get": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", - "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "decompress-response": "^6.0.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } - }, - "node_modules/simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", - "dependencies": { - "is-arrayish": "^0.3.1" - } - }, - "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/streamx": { - "version": "2.15.6", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.15.6.tgz", - "integrity": "sha512-q+vQL4AAz+FdfT137VF69Cc/APqUbxy+MDOImRrMvchJpigHj9GksgDU2LYbO9rx7RX6osWgxJB2WxhYv4SZAw==", - "dependencies": { - "fast-fifo": "^1.1.0", - "queue-tick": "^1.0.1" - } - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/string-width-cjs": { - "name": "string-width", - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/string-width/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/string-width/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/string.prototype.matchall": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz", - "integrity": "sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", - "regexp.prototype.flags": "^1.5.0", - "set-function-name": "^2.0.0", - "side-channel": "^1.0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trim": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", - "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", - "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", - "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/sucrase": { - "version": "3.35.0", - "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", - "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.2", - "commander": "^4.0.0", - "glob": "^10.3.10", - "lines-and-columns": "^1.1.6", - "mz": "^2.7.0", - "pirates": "^4.0.1", - "ts-interface-checker": "^0.1.9" - }, - "bin": { - "sucrase": "bin/sucrase", - "sucrase-node": "bin/sucrase-node" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/sucrase/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/sucrase/node_modules/glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", - "dev": true, - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/sucrase/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/tailwindcss": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.1.tgz", - "integrity": "sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA==", - "dev": true, - "dependencies": { - "@alloc/quick-lru": "^5.2.0", - "arg": "^5.0.2", - "chokidar": "^3.5.3", - "didyoumean": "^1.2.2", - "dlv": "^1.1.3", - "fast-glob": "^3.3.0", - "glob-parent": "^6.0.2", - "is-glob": "^4.0.3", - "jiti": "^1.19.1", - "lilconfig": "^2.1.0", - "micromatch": "^4.0.5", - "normalize-path": "^3.0.0", - "object-hash": "^3.0.0", - "picocolors": "^1.0.0", - "postcss": "^8.4.23", - "postcss-import": "^15.1.0", - "postcss-js": "^4.0.1", - "postcss-load-config": "^4.0.1", - "postcss-nested": "^6.0.1", - "postcss-selector-parser": "^6.0.11", - "resolve": "^1.22.2", - "sucrase": "^3.32.0" - }, - "bin": { - "tailwind": "lib/cli.js", - "tailwindcss": "lib/cli.js" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/tailwindcss/node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/tar-fs": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.4.tgz", - "integrity": "sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==", - "dependencies": { - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^3.1.5" - } - }, - "node_modules/tar-stream": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.6.tgz", - "integrity": "sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==", - "dependencies": { - "b4a": "^1.6.4", - "fast-fifo": "^1.2.0", - "streamx": "^2.15.0" - } - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "node_modules/thenify": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", - "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", - "dev": true, - "dependencies": { - "any-promise": "^1.0.0" - } - }, - "node_modules/thenify-all": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", - "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", - "dev": true, - "dependencies": { - "thenify": ">= 3.1.0 < 4" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/ts-interface-checker": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", - "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", - "dev": true - }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typed-array-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", - "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/typed-array-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", - "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", - "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", - "dev": true, - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" - }, - "node_modules/update-browserslist-db": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", - "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "node_modules/vite": { - "version": "5.0.13", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.0.13.tgz", - "integrity": "sha512-/9ovhv2M2dGTuA+dY93B9trfyWMDRQw2jdVBhHNP6wr0oF34wG2i/N55801iZIpgUpnHDm4F/FabGQLyc+eOgg==", - "dev": true, - "dependencies": { - "esbuild": "^0.19.3", - "postcss": "^8.4.32", - "rollup": "^4.2.0" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^18.0.0 || >=20.0.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - }, - "peerDependencies": { - "@types/node": "^18.0.0 || >=20.0.0", - "less": "*", - "lightningcss": "^1.21.0", - "sass": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.4.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - } - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, - "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-builtin-type": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz", - "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==", - "dev": true, - "dependencies": { - "function.prototype.name": "^1.1.5", - "has-tostringtag": "^1.0.0", - "is-async-function": "^2.0.0", - "is-date-object": "^1.0.5", - "is-finalizationregistry": "^1.0.2", - "is-generator-function": "^1.0.10", - "is-regex": "^1.1.4", - "is-weakref": "^1.0.2", - "isarray": "^2.0.5", - "which-boxed-primitive": "^1.0.2", - "which-collection": "^1.0.1", - "which-typed-array": "^1.1.9" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-collection": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", - "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", - "dev": true, - "dependencies": { - "is-map": "^2.0.1", - "is-set": "^2.0.1", - "is-weakmap": "^2.0.1", - "is-weakset": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", - "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", - "dev": true, - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.4", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs": { - "name": "wrap-ansi", - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/wrap-ansi-cjs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, - "node_modules/yaml": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz", - "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==", - "dev": true, - "engines": { - "node": ">= 14" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - } -} diff --git a/examples/zero-shot-classification/package.json b/examples/zero-shot-classification/package.json deleted file mode 100644 index c5c206a65..000000000 --- a/examples/zero-shot-classification/package.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "name": "zero-shot-classification", - "private": true, - "version": "0.0.0", - "type": "module", - "scripts": { - "dev": "vite", - "build": "vite build", - "lint": "eslint . --ext js,jsx --report-unused-disable-directives --max-warnings 0", - "preview": "vite preview" - }, - "dependencies": { - "@xenova/transformers": "^2.14.0", - "react": "^18.2.0", - "react-dom": "^18.2.0" - }, - "devDependencies": { - "@types/react": "^18.2.43", - "@types/react-dom": "^18.2.17", - "@vitejs/plugin-react": "^4.2.1", - "autoprefixer": "^10.4.16", - "eslint": "^8.55.0", - "eslint-plugin-react": "^7.33.2", - "eslint-plugin-react-hooks": "^4.6.0", - "eslint-plugin-react-refresh": "^0.4.5", - "postcss": "^8.4.33", - "tailwindcss": "^3.4.1", - "vite": "^5.0.13" - } -} diff --git a/examples/zero-shot-classification/postcss.config.js b/examples/zero-shot-classification/postcss.config.js deleted file mode 100644 index 2e7af2b7f..000000000 --- a/examples/zero-shot-classification/postcss.config.js +++ /dev/null @@ -1,6 +0,0 @@ -export default { - plugins: { - tailwindcss: {}, - autoprefixer: {}, - }, -} diff --git a/examples/zero-shot-classification/src/App.css b/examples/zero-shot-classification/src/App.css deleted file mode 100644 index c3951888c..000000000 --- a/examples/zero-shot-classification/src/App.css +++ /dev/null @@ -1,5 +0,0 @@ -#root { - height: 100vh; - width: 100vw; - padding: 1rem; -} diff --git a/examples/zero-shot-classification/src/App.jsx b/examples/zero-shot-classification/src/App.jsx deleted file mode 100644 index e43ebfe78..000000000 --- a/examples/zero-shot-classification/src/App.jsx +++ /dev/null @@ -1,189 +0,0 @@ -import { useState, useRef, useEffect, useCallback } from 'react' -import './App.css' - -const PLACEHOLDER_REVIEWS = [ - // battery/charging problems - "Disappointed with the battery life! The phone barely lasts half a day with regular use. Considering how much I paid for it, I expected better performance in this department.", - "I bought this phone a week ago, and I'm already frustrated with the battery life. It barely lasts half a day with normal usage. I expected more from a supposedly high-end device", - "The charging port is so finicky. Sometimes it takes forever to charge, and other times it doesn't even recognize the charger. Frustrating experience!", - - // overheating - "This phone heats up way too quickly, especially when using demanding apps. It's uncomfortable to hold, and I'm concerned it might damage the internal components over time. Not what I expected", - "This phone is like holding a hot potato. Video calls turn it into a scalding nightmare. Seriously, can't it keep its cool?", - "Forget about a heatwave outside; my phone's got its own. It's like a little portable heater. Not what I signed up for.", - - // poor build quality - "I dropped the phone from a short distance, and the screen cracked easily. Not as durable as I expected from a flagship device.", - "Took a slight bump in my bag, and the frame got dinged. Are we back in the flip phone era?", - "So, my phone's been in my pocket with just keys – no ninja moves or anything. Still, it managed to get some scratches. Disappointed with the build quality.", - - // software - "The software updates are a nightmare. Each update seems to introduce new bugs, and it takes forever for them to be fixed.", - "Constant crashes and freezes make me want to throw it into a black hole.", - "Every time I open Instagram, my phone freezes and crashes. It's so frustrating!", - - // other - "I'm not sure what to make of this phone. It's not bad, but it's not great either. I'm on the fence about it.", - "I hate the color of this phone. It's so ugly!", - "This phone sucks! I'm returning it." -].sort(() => Math.random() - 0.5) - -const PLACEHOLDER_SECTIONS = [ - 'Battery and charging problems', - 'Overheating', - 'Poor build quality', - 'Software issues', - 'Other', -]; - -function App() { - - const [text, setText] = useState(PLACEHOLDER_REVIEWS.join('\n')); - - const [sections, setSections] = useState( - PLACEHOLDER_SECTIONS.map(title => ({ title, items: [] })) - ); - - const [status, setStatus] = useState('idle'); - - // Create a reference to the worker object. - const worker = useRef(null); - - // We use the `useEffect` hook to setup the worker as soon as the `App` component is mounted. - useEffect(() => { - if (!worker.current) { - // Create the worker if it does not yet exist. - worker.current = new Worker(new URL('./worker.js', import.meta.url), { - type: 'module' - }); - } - - // Create a callback function for messages from the worker thread. - const onMessageReceived = (e) => { - const status = e.data.status; - if (status === 'initiate') { - setStatus('loading'); - } else if (status === 'ready') { - setStatus('ready'); - } else if (status === 'output') { - const { sequence, labels, scores } = e.data.output; - - // Threshold for classification - const label = scores[0] > 0.5 ? labels[0] : 'Other'; - - const sectionID = sections.map(x => x.title).indexOf(label) ?? sections.length - 1; - setSections((sections) => { - const newSections = [...sections] - newSections[sectionID] = { - ...newSections[sectionID], - items: [...newSections[sectionID].items, sequence] - } - return newSections - }) - } else if (status === 'complete') { - setStatus('idle'); - } - }; - - // Attach the callback function as an event listener. - worker.current.addEventListener('message', onMessageReceived); - - // Define a cleanup function for when the component is unmounted. - return () => worker.current.removeEventListener('message', onMessageReceived); - }, [sections]); - - const classify = useCallback(() => { - setStatus('processing'); - worker.current.postMessage({ - text, - labels: sections.slice(0, sections.length - 1).map(section => section.title) - }); - }, [text, sections]) - - const busy = status !== 'idle'; - - return ( -
    - -
    - -
    - - - -
    -
    - -
    - {sections.map((section, index) => ( -
    - { - setSections((sections) => { - const newSections = [...sections]; - newSections[index].title = e.target.value; - return newSections; - }) - }}> -
    - {section.items.map((item, index) => ( -
    {item} -
    - ))} -
    -
    - ))} -
    -
    - ) -} - -export default App diff --git a/examples/zero-shot-classification/src/index.css b/examples/zero-shot-classification/src/index.css deleted file mode 100644 index b5c61c956..000000000 --- a/examples/zero-shot-classification/src/index.css +++ /dev/null @@ -1,3 +0,0 @@ -@tailwind base; -@tailwind components; -@tailwind utilities; diff --git a/examples/zero-shot-classification/src/main.jsx b/examples/zero-shot-classification/src/main.jsx deleted file mode 100644 index 54b39dd1d..000000000 --- a/examples/zero-shot-classification/src/main.jsx +++ /dev/null @@ -1,10 +0,0 @@ -import React from 'react' -import ReactDOM from 'react-dom/client' -import App from './App.jsx' -import './index.css' - -ReactDOM.createRoot(document.getElementById('root')).render( - - - , -) diff --git a/examples/zero-shot-classification/src/worker.js b/examples/zero-shot-classification/src/worker.js deleted file mode 100644 index efa61136f..000000000 --- a/examples/zero-shot-classification/src/worker.js +++ /dev/null @@ -1,46 +0,0 @@ -import { env, pipeline } from '@xenova/transformers'; - -// Skip local model check since we are downloading the model from the Hugging Face Hub. -env.allowLocalModels = false; - -class MyZeroShotClassificationPipeline { - static task = 'zero-shot-classification'; - static model = 'MoritzLaurer/deberta-v3-xsmall-zeroshot-v1.1-all-33'; - static instance = null; - - static async getInstance(progress_callback = null) { - if (this.instance === null) { - this.instance = pipeline(this.task, this.model, { - quantized: true, - progress_callback, - }); - } - - return this.instance; - } -} - -// Listen for messages from the main thread -self.addEventListener('message', async (event) => { - // Retrieve the pipeline. When called for the first time, - // this will load the pipeline and save it for future use. - const classifier = await MyZeroShotClassificationPipeline.getInstance(x => { - // We also add a progress callback to the pipeline so that we can - // track model loading. - self.postMessage(x); - }); - - const { text, labels } = event.data; - - const split = text.split('\n'); - for (const line of split) { - const output = await classifier(line, labels, { - hypothesis_template: 'This text is about {}.', - multi_label: true, - }); - // Send the output back to the main thread - self.postMessage({ status: 'output', output }); - } - // Send the output back to the main thread - self.postMessage({ status: 'complete' }); -}); diff --git a/examples/zero-shot-classification/tailwind.config.js b/examples/zero-shot-classification/tailwind.config.js deleted file mode 100644 index d37737fc0..000000000 --- a/examples/zero-shot-classification/tailwind.config.js +++ /dev/null @@ -1,12 +0,0 @@ -/** @type {import('tailwindcss').Config} */ -export default { - content: [ - "./index.html", - "./src/**/*.{js,ts,jsx,tsx}", - ], - theme: { - extend: {}, - }, - plugins: [], -} - diff --git a/examples/zero-shot-classification/vite.config.js b/examples/zero-shot-classification/vite.config.js deleted file mode 100644 index 5a33944a9..000000000 --- a/examples/zero-shot-classification/vite.config.js +++ /dev/null @@ -1,7 +0,0 @@ -import { defineConfig } from 'vite' -import react from '@vitejs/plugin-react' - -// https://vitejs.dev/config/ -export default defineConfig({ - plugins: [react()], -}) From 1ee3d46c2c3a5d079c2f21f8bd76931f288cc7c2 Mon Sep 17 00:00:00 2001 From: Joshua Lochner Date: Mon, 23 Dec 2024 23:34:16 +0000 Subject: [PATCH 20/23] Move browser extension template --- examples/extension/.gitignore | 1 - examples/extension/README.md | 35 --------- examples/extension/build/.gitignore | 3 - examples/extension/package.json | 20 ----- examples/extension/public/icons/icon.png | Bin 12999 -> 0 bytes examples/extension/public/manifest.json | 45 ----------- examples/extension/src/background.js | 96 ----------------------- examples/extension/src/content.js | 11 --- examples/extension/src/popup.css | 50 ------------ examples/extension/src/popup.html | 23 ------ examples/extension/src/popup.js | 21 ----- examples/extension/webpack.config.js | 42 ---------- 12 files changed, 347 deletions(-) delete mode 100644 examples/extension/.gitignore delete mode 100644 examples/extension/README.md delete mode 100644 examples/extension/build/.gitignore delete mode 100644 examples/extension/package.json delete mode 100644 examples/extension/public/icons/icon.png delete mode 100644 examples/extension/public/manifest.json delete mode 100644 examples/extension/src/background.js delete mode 100644 examples/extension/src/content.js delete mode 100644 examples/extension/src/popup.css delete mode 100644 examples/extension/src/popup.html delete mode 100644 examples/extension/src/popup.js delete mode 100644 examples/extension/webpack.config.js diff --git a/examples/extension/.gitignore b/examples/extension/.gitignore deleted file mode 100644 index c2658d7d1..000000000 --- a/examples/extension/.gitignore +++ /dev/null @@ -1 +0,0 @@ -node_modules/ diff --git a/examples/extension/README.md b/examples/extension/README.md deleted file mode 100644 index f1073d8c5..000000000 --- a/examples/extension/README.md +++ /dev/null @@ -1,35 +0,0 @@ - -# Transformers.js - Sample browser extension - -An example project to show how to run 🤗 Transformers in a browser extension. Although we only provide instructions for running in Chrome, it should be similar for other browsers. - -## Getting Started -1. Clone the repo and enter the project directory: - ```bash - git clone https://github.com/huggingface/transformers.js.git - cd transformers.js/examples/extension/ - ``` -1. Install the necessary dependencies: - ```bash - npm install - ``` - -1. Build the project: - ```bash - npm run build - ``` - -1. Add the extension to your browser. To do this, go to `chrome://extensions/`, enable developer mode (top right), and click "Load unpacked". Select the `build` directory from the dialog which appears and click "Select Folder". - -1. That's it! You should now be able to open the extension's popup and use the model in your browser! - -## Editing the template - -We recommend running `npm run dev` while editing the template as it will rebuild the project when changes are made. - -All source code can be found in the `./src/` directory: -- `background.js` ([service worker](https://developer.chrome.com/docs/extensions/mv3/service_workers/)) - handles all the requests from the UI, does processing in the background, then returns the result. You will need to reload the extension (by visiting `chrome://extensions/` and clicking the refresh button) after editing this file for changes to be visible in the extension. - -- `content.js` ([content script](https://developer.chrome.com/docs/extensions/mv3/content_scripts/)) - contains the code which is injected into every page the user visits. You can use the `sendMessage` api to make requests to the background script. Similarly, you will need to reload the extension after editing this file for changes to be visible in the extension. - -- `popup.html`, `popup.css`, `popup.js` ([toolbar action](https://developer.chrome.com/docs/extensions/reference/action/)) - contains the code for the popup which is visible to the user when they click the extension's icon from the extensions bar. For development, we recommend opening the `popup.html` file in its own tab by visiting `chrome-extension:///popup.html` (remember to replace `` with the extension's ID). You will need to refresh the page while you develop to see the changes you make. diff --git a/examples/extension/build/.gitignore b/examples/extension/build/.gitignore deleted file mode 100644 index ce5e83aca..000000000 --- a/examples/extension/build/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -# Running `npm run build` will build the project and output the files here. -* -!.gitignore diff --git a/examples/extension/package.json b/examples/extension/package.json deleted file mode 100644 index 9adcd617e..000000000 --- a/examples/extension/package.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "name": "extension", - "version": "0.0.1", - "description": "Transformers.js | Sample browser extension", - "scripts": { - "build": "webpack", - "dev": "webpack --watch" - }, - "type": "module", - "author": "Xenova", - "license": "MIT", - "devDependencies": { - "copy-webpack-plugin": "^11.0.0", - "html-webpack-plugin": "^5.5.1", - "webpack": "^5.79.0" - }, - "dependencies": { - "@xenova/transformers": "^2.0.0" - } -} diff --git a/examples/extension/public/icons/icon.png b/examples/extension/public/icons/icon.png deleted file mode 100644 index e04507e9349198c0318d6d3c739b0dec70f5bd9b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12999 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" - ], - "js": [ - "content.js" - ] - } - ], - "minimum_chrome_version": "92", - "action": { - "default_icon": { - "16": "icons/icon.png", - "24": "icons/icon.png", - "32": "icons/icon.png" - }, - "default_title": "Transformers.js", - "default_popup": "popup.html" - }, - "content_security_policy": { - "extension_pages": "script-src 'self' 'wasm-unsafe-eval'" - }, - "icons": { - "16": "icons/icon.png", - "48": "icons/icon.png", - "128": "icons/icon.png" - } -} \ No newline at end of file diff --git a/examples/extension/src/background.js b/examples/extension/src/background.js deleted file mode 100644 index db3ffee35..000000000 --- a/examples/extension/src/background.js +++ /dev/null @@ -1,96 +0,0 @@ -// background.js - Handles requests from the UI, runs the model, then sends back a response - -import { pipeline, env } from '@xenova/transformers'; - -// Skip initial check for local models, since we are not loading any local models. -env.allowLocalModels = false; - -// Due to a bug in onnxruntime-web, we must disable multithreading for now. -// See https://github.com/microsoft/onnxruntime/issues/14445 for more information. -env.backends.onnx.wasm.numThreads = 1; - - -class PipelineSingleton { - static task = 'text-classification'; - static model = 'Xenova/distilbert-base-uncased-finetuned-sst-2-english'; - static instance = null; - - static async getInstance(progress_callback = null) { - if (this.instance === null) { - this.instance = pipeline(this.task, this.model, { progress_callback }); - } - - return this.instance; - } -} - -// Create generic classify function, which will be reused for the different types of events. -const classify = async (text) => { - // Get the pipeline instance. This will load and build the model when run for the first time. - let model = await PipelineSingleton.getInstance((data) => { - // You can track the progress of the pipeline creation here. - // e.g., you can send `data` back to the UI to indicate a progress bar - // console.log('progress', data) - }); - - // Actually run the model on the input text - let result = await model(text); - return result; -}; - -////////////////////// 1. Context Menus ////////////////////// -// -// Add a listener to create the initial context menu items, -// context menu items only need to be created at runtime.onInstalled -chrome.runtime.onInstalled.addListener(function () { - // Register a context menu item that will only show up for selection text. - chrome.contextMenus.create({ - id: 'classify-selection', - title: 'Classify "%s"', - contexts: ['selection'], - }); -}); - -// Perform inference when the user clicks a context menu -chrome.contextMenus.onClicked.addListener(async (info, tab) => { - // Ignore context menu clicks that are not for classifications (or when there is no input) - if (info.menuItemId !== 'classify-selection' || !info.selectionText) return; - - // Perform classification on the selected text - let result = await classify(info.selectionText); - - // Do something with the result - chrome.scripting.executeScript({ - target: { tabId: tab.id }, // Run in the tab that the user clicked in - args: [result], // The arguments to pass to the function - function: (result) => { // The function to run - // NOTE: This function is run in the context of the web page, meaning that `document` is available. - console.log('result', result) - console.log('document', document) - }, - }); -}); -////////////////////////////////////////////////////////////// - -////////////////////// 2. Message Events ///////////////////// -// -// Listen for messages from the UI, process it, and send the result back. -chrome.runtime.onMessage.addListener((message, sender, sendResponse) => { - console.log('sender', sender) - if (message.action !== 'classify') return; // Ignore messages that are not meant for classification. - - // Run model prediction asynchronously - (async function () { - // Perform classification - let result = await classify(message.text); - - // Send response back to UI - sendResponse(result); - })(); - - // return true to indicate we will send a response asynchronously - // see https://stackoverflow.com/a/46628145 for more information - return true; -}); -////////////////////////////////////////////////////////////// - diff --git a/examples/extension/src/content.js b/examples/extension/src/content.js deleted file mode 100644 index 2974bd27c..000000000 --- a/examples/extension/src/content.js +++ /dev/null @@ -1,11 +0,0 @@ -// content.js - the content scripts which is run in the context of web pages, and has access -// to the DOM and other web APIs. - -// Example usage: -// const message = { -// action: 'classify', -// text: 'text to classify', -// } -// chrome.runtime.sendMessage(message, (response) => { -// console.log('received user data', response) -// }); diff --git a/examples/extension/src/popup.css b/examples/extension/src/popup.css deleted file mode 100644 index 5a7a8e10e..000000000 --- a/examples/extension/src/popup.css +++ /dev/null @@ -1,50 +0,0 @@ -/* Styles go here */ - -* { - padding: 0; - margin: 0; - box-sizing: border-box; - font-family: 'Roboto', sans-serif; -} - -h1 { - font-size: 40px; - text-align: center; - font-weight: 500; -} - -h2 { - font-size: 20px; - text-align: center; - font-weight: 400; - margin-bottom: 16px; -} - -.container { - width: 360px; -} - -html, -body { - min-width: 400px; - min-height: 500px; -} - -body { - display: flex; - justify-content: center; - align-items: center; -} - -#text { - width: 100%; - padding: 8px; - font-size: 20px; - margin-bottom: 8px; -} - -#output { - font-size: 20px; - font-family: 'Roboto Mono', monospace; - height: 100px; -} \ No newline at end of file diff --git a/examples/extension/src/popup.html b/examples/extension/src/popup.html deleted file mode 100644 index a4a817d2a..000000000 --- a/examples/extension/src/popup.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - Transformers.js | Sample Browser Extension - - - - - - -
    -

    Transformers.js

    -

    Run 🤗 Transformers in a Browser Extension!

    - -
    
    -    
    - - - \ No newline at end of file diff --git a/examples/extension/src/popup.js b/examples/extension/src/popup.js deleted file mode 100644 index 720304c1a..000000000 --- a/examples/extension/src/popup.js +++ /dev/null @@ -1,21 +0,0 @@ -// popup.js - handles interaction with the extension's popup, sends requests to the -// service worker (background.js), and updates the popup's UI (popup.html) on completion. - -const inputElement = document.getElementById('text'); -const outputElement = document.getElementById('output'); - -// Listen for changes made to the textbox. -inputElement.addEventListener('input', (event) => { - - // Bundle the input data into a message. - const message = { - action: 'classify', - text: event.target.value, - } - - // Send this message to the service worker. - chrome.runtime.sendMessage(message, (response) => { - // Handle results returned by the service worker (`background.js`) and update the popup's UI. - outputElement.innerText = JSON.stringify(response, null, 2); - }); -}); diff --git a/examples/extension/webpack.config.js b/examples/extension/webpack.config.js deleted file mode 100644 index 8e96f29d6..000000000 --- a/examples/extension/webpack.config.js +++ /dev/null @@ -1,42 +0,0 @@ - -import path from 'path'; -import { fileURLToPath } from 'url'; - -import HtmlWebpackPlugin from 'html-webpack-plugin'; -import CopyPlugin from 'copy-webpack-plugin'; - -const __dirname = path.dirname(fileURLToPath(import.meta.url)); - -const config = { - mode: 'development', - devtool: 'inline-source-map', - entry: { - background: './src/background.js', - popup: './src/popup.js', - content: './src/content.js', - }, - output: { - path: path.resolve(__dirname, 'build'), - filename: '[name].js', - }, - plugins: [ - new HtmlWebpackPlugin({ - template: './src/popup.html', - filename: 'popup.html', - }), - new CopyPlugin({ - patterns: [ - { - from: "public", - to: "." // Copies to build folder - }, - { - from: "src/popup.css", - to: "popup.css" - } - ], - }) - ], -}; - -export default config; From 56297b0cb2a003d4ba2cd9f8eccf17f6cb967ca7 Mon Sep 17 00:00:00 2001 From: Joshua Lochner Date: Mon, 23 Dec 2024 23:34:26 +0000 Subject: [PATCH 21/23] Move semantic image search demo --- .../.eslintrc.json | 3 - .../semantic-image-search-client/.gitignore | 35 - .../semantic-image-search-client/README.md | 34 - .../jsconfig.json | 7 - .../next.config.js | 20 - .../package-lock.json | 4829 ----------------- .../semantic-image-search-client/package.json | 26 - .../postcss.config.js | 6 - .../public/next.svg | 1 - .../public/vercel.svg | 1 - .../src/app/components/ImageGrid.jsx | 32 - .../src/app/components/Modal.jsx | 64 - .../src/app/components/SearchBar.jsx | 33 - .../src/app/favicon.ico | Bin 25931 -> 0 bytes .../src/app/globals.css | 19 - .../src/app/layout.js | 17 - .../src/app/page.js | 65 - .../src/app/utils.js | 95 - .../src/app/worker.js | 110 - .../tailwind.config.js | 16 - 20 files changed, 5413 deletions(-) delete mode 100644 examples/semantic-image-search-client/.eslintrc.json delete mode 100644 examples/semantic-image-search-client/.gitignore delete mode 100644 examples/semantic-image-search-client/README.md delete mode 100644 examples/semantic-image-search-client/jsconfig.json delete mode 100644 examples/semantic-image-search-client/next.config.js delete mode 100644 examples/semantic-image-search-client/package-lock.json delete mode 100644 examples/semantic-image-search-client/package.json delete mode 100644 examples/semantic-image-search-client/postcss.config.js delete mode 100644 examples/semantic-image-search-client/public/next.svg delete mode 100644 examples/semantic-image-search-client/public/vercel.svg delete mode 100644 examples/semantic-image-search-client/src/app/components/ImageGrid.jsx delete mode 100644 examples/semantic-image-search-client/src/app/components/Modal.jsx delete mode 100644 examples/semantic-image-search-client/src/app/components/SearchBar.jsx delete mode 100644 examples/semantic-image-search-client/src/app/favicon.ico delete mode 100644 examples/semantic-image-search-client/src/app/globals.css delete mode 100644 examples/semantic-image-search-client/src/app/layout.js delete mode 100644 examples/semantic-image-search-client/src/app/page.js delete mode 100644 examples/semantic-image-search-client/src/app/utils.js delete mode 100644 examples/semantic-image-search-client/src/app/worker.js delete mode 100644 examples/semantic-image-search-client/tailwind.config.js diff --git a/examples/semantic-image-search-client/.eslintrc.json b/examples/semantic-image-search-client/.eslintrc.json deleted file mode 100644 index bffb357a7..000000000 --- a/examples/semantic-image-search-client/.eslintrc.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": "next/core-web-vitals" -} diff --git a/examples/semantic-image-search-client/.gitignore b/examples/semantic-image-search-client/.gitignore deleted file mode 100644 index 8f322f0d8..000000000 --- a/examples/semantic-image-search-client/.gitignore +++ /dev/null @@ -1,35 +0,0 @@ -# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. - -# dependencies -/node_modules -/.pnp -.pnp.js - -# testing -/coverage - -# next.js -/.next/ -/out/ - -# production -/build - -# misc -.DS_Store -*.pem - -# debug -npm-debug.log* -yarn-debug.log* -yarn-error.log* - -# local env files -.env*.local - -# vercel -.vercel - -# typescript -*.tsbuildinfo -next-env.d.ts diff --git a/examples/semantic-image-search-client/README.md b/examples/semantic-image-search-client/README.md deleted file mode 100644 index fea12a725..000000000 --- a/examples/semantic-image-search-client/README.md +++ /dev/null @@ -1,34 +0,0 @@ -This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app). - -## Getting Started - -First, run the development server: - -```bash -npm run dev -# or -yarn dev -# or -pnpm dev -``` - -Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. - -You can start editing the page by modifying `app/page.js`. The page auto-updates as you edit the file. - -This project uses [`next/font`](https://nextjs.org/docs/basic-features/font-optimization) to automatically optimize and load Inter, a custom Google Font. - -## Learn More - -To learn more about Next.js, take a look at the following resources: - -- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. -- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. - -You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome! - -## Deploy on Vercel - -The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. - -Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details. \ No newline at end of file diff --git a/examples/semantic-image-search-client/jsconfig.json b/examples/semantic-image-search-client/jsconfig.json deleted file mode 100644 index b8d6842d7..000000000 --- a/examples/semantic-image-search-client/jsconfig.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "compilerOptions": { - "paths": { - "@/*": ["./src/*"] - } - } -} diff --git a/examples/semantic-image-search-client/next.config.js b/examples/semantic-image-search-client/next.config.js deleted file mode 100644 index d1cb37318..000000000 --- a/examples/semantic-image-search-client/next.config.js +++ /dev/null @@ -1,20 +0,0 @@ -/** @type {import('next').NextConfig} */ -const nextConfig = { - // (Optional) Export as a static site - // See https://nextjs.org/docs/pages/building-your-application/deploying/static-exports#configuration - output: 'export', // Feel free to modify/remove this option - - // Override the default webpack configuration - webpack: (config) => { - // Ignore node-specific modules when bundling for the browser - // See https://webpack.js.org/configuration/resolve/#resolvealias - config.resolve.alias = { - ...config.resolve.alias, - 'sharp$': false, - 'onnxruntime-node$': false, - } - return config; - }, -}; - -module.exports = nextConfig; \ No newline at end of file diff --git a/examples/semantic-image-search-client/package-lock.json b/examples/semantic-image-search-client/package-lock.json deleted file mode 100644 index 379527906..000000000 --- a/examples/semantic-image-search-client/package-lock.json +++ /dev/null @@ -1,4829 +0,0 @@ -{ - "name": "semantic-image-search-client", - "version": "0.1.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "semantic-image-search-client", - "version": "0.1.0", - "dependencies": { - "@xenova/transformers": "^2.6.1", - "autoprefixer": "10.4.14", - "blurhash": "^2.0.5", - "eslint": "8.45.0", - "eslint-config-next": "13.4.12", - "next": "^14.2.3", - "postcss": "^8.4.31", - "react": "18.2.0", - "react-dom": "18.2.0", - "tailwindcss": "3.3.3" - } - }, - "node_modules/@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@alloc/quick-lru": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", - "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@babel/runtime": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.6.tgz", - "integrity": "sha512-wDb5pWm4WDdF6LFUde3Jl8WzPA+3ZbxYqkC6xAXuD3irdEHN1k0NfTRrJD8ZD378SJ61miMLCqIOXYhd8x+AJQ==", - "dependencies": { - "regenerator-runtime": "^0.13.11" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", - "dependencies": { - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.6.2.tgz", - "integrity": "sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==", - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.1.tgz", - "integrity": "sha512-9t7ZA7NGGK8ckelF0PQCfcxIUzs1Md5rrO6U/c+FIQNanea5UZC0wqKXH4vHBccmu4ZJgZ2idtPeW7+Q2npOEA==", - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/js": { - "version": "8.44.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.44.0.tgz", - "integrity": "sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw==", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz", - "integrity": "sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==", - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==" - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.18", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", - "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", - "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" - } - }, - "node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" - }, - "node_modules/@next/env": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.3.tgz", - "integrity": "sha512-W7fd7IbkfmeeY2gXrzJYDx8D2lWKbVoTIj1o1ScPHNzvp30s1AuoEFSdr39bC5sjxJaxTtq3OTCZboNp0lNWHA==" - }, - "node_modules/@next/eslint-plugin-next": { - "version": "13.4.12", - "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-13.4.12.tgz", - "integrity": "sha512-6rhK9CdxEgj/j1qvXIyLTWEaeFv7zOK8yJMulz3Owel0uek0U9MJCGzmKgYxM3aAUBo3gKeywCZKyQnJKto60A==", - "dependencies": { - "glob": "7.1.7" - } - }, - "node_modules/@next/swc-darwin-arm64": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.3.tgz", - "integrity": "sha512-3pEYo/RaGqPP0YzwnlmPN2puaF2WMLM3apt5jLW2fFdXD9+pqcoTzRk+iZsf8ta7+quAe4Q6Ms0nR0SFGFdS1A==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-darwin-x64": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.3.tgz", - "integrity": "sha512-6adp7waE6P1TYFSXpY366xwsOnEXM+y1kgRpjSRVI2CBDOcbRjsJ67Z6EgKIqWIue52d2q/Mx8g9MszARj8IEA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-arm64-gnu": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.3.tgz", - "integrity": "sha512-cuzCE/1G0ZSnTAHJPUT1rPgQx1w5tzSX7POXSLaS7w2nIUJUD+e25QoXD/hMfxbsT9rslEXugWypJMILBj/QsA==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-arm64-musl": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.3.tgz", - "integrity": "sha512-0D4/oMM2Y9Ta3nGuCcQN8jjJjmDPYpHX9OJzqk42NZGJocU2MqhBq5tWkJrUQOQY9N+In9xOdymzapM09GeiZw==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-x64-gnu": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.3.tgz", - "integrity": "sha512-ENPiNnBNDInBLyUU5ii8PMQh+4XLr4pG51tOp6aJ9xqFQ2iRI6IH0Ds2yJkAzNV1CfyagcyzPfROMViS2wOZ9w==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-x64-musl": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.3.tgz", - "integrity": "sha512-BTAbq0LnCbF5MtoM7I/9UeUu/8ZBY0i8SFjUMCbPDOLv+un67e2JgyN4pmgfXBwy/I+RHu8q+k+MCkDN6P9ViQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-win32-arm64-msvc": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.3.tgz", - "integrity": "sha512-AEHIw/dhAMLNFJFJIJIyOFDzrzI5bAjI9J26gbO5xhAKHYTZ9Or04BesFPXiAYXDNdrwTP2dQceYA4dL1geu8A==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-win32-ia32-msvc": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.3.tgz", - "integrity": "sha512-vga40n1q6aYb0CLrM+eEmisfKCR45ixQYXuBXxOOmmoV8sYST9k7E3US32FsY+CkkF7NtzdcebiFT4CHuMSyZw==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-win32-x64-msvc": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.3.tgz", - "integrity": "sha512-Q1/zm43RWynxrO7lW4ehciQVj+5ePBhOK+/K2P7pLFX3JaJ/IZVC69SHidrmZSOkqz7ECIOhhy7XhAFG4JYyHA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@pkgr/utils": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.4.2.tgz", - "integrity": "sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==", - "dependencies": { - "cross-spawn": "^7.0.3", - "fast-glob": "^3.3.0", - "is-glob": "^4.0.3", - "open": "^9.1.0", - "picocolors": "^1.0.0", - "tslib": "^2.6.0" - }, - "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/unts" - } - }, - "node_modules/@protobufjs/aspromise": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", - "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" - }, - "node_modules/@protobufjs/base64": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", - "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" - }, - "node_modules/@protobufjs/codegen": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", - "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" - }, - "node_modules/@protobufjs/eventemitter": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", - "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" - }, - "node_modules/@protobufjs/fetch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", - "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", - "dependencies": { - "@protobufjs/aspromise": "^1.1.1", - "@protobufjs/inquire": "^1.1.0" - } - }, - "node_modules/@protobufjs/float": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", - "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" - }, - "node_modules/@protobufjs/inquire": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", - "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" - }, - "node_modules/@protobufjs/path": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", - "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" - }, - "node_modules/@protobufjs/pool": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", - "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" - }, - "node_modules/@protobufjs/utf8": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", - "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" - }, - "node_modules/@rushstack/eslint-patch": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.3.2.tgz", - "integrity": "sha512-V+MvGwaHH03hYhY+k6Ef/xKd6RYlc4q8WBx+2ANmipHJcKuktNcI/NgEsJgdSUF6Lw32njT6OnrRsKYCdgHjYw==" - }, - "node_modules/@swc/counter": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", - "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==" - }, - "node_modules/@swc/helpers": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.5.tgz", - "integrity": "sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==", - "dependencies": { - "@swc/counter": "^0.1.3", - "tslib": "^2.4.0" - } - }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==" - }, - "node_modules/@types/node": { - "version": "20.4.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.4.5.tgz", - "integrity": "sha512-rt40Nk13II9JwQBdeYqmbn2Q6IVTA5uPhvSO+JVqdXw/6/4glI6oR9ezty/A9Hg5u7JH4OmYmuQ+XvjKm0Datg==" - }, - "node_modules/@typescript-eslint/parser": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", - "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", - "dependencies": { - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", - "debug": "^4.3.4" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", - "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/types": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", - "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", - "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", - "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@xenova/transformers": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/@xenova/transformers/-/transformers-2.6.1.tgz", - "integrity": "sha512-fK1SkZUCvTdH1gEWmBUU5rvugZBqqu0ibkaBmUIr5t9Kf+Z8W4n0IszSRS2+M5ZHxRKS3SE7pFpsMDXByIzmQw==", - "dependencies": { - "onnxruntime-web": "1.14.0", - "sharp": "^0.32.0" - }, - "optionalDependencies": { - "onnxruntime-node": "1.14.0" - } - }, - "node_modules/acorn": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==" - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/arg": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", - "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" - }, - "node_modules/aria-query": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", - "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", - "dependencies": { - "dequal": "^2.0.3" - } - }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", - "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", - "dependencies": { - "call-bind": "^1.0.2", - "is-array-buffer": "^3.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-includes": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", - "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "get-intrinsic": "^1.1.3", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/array.prototype.findlastindex": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.2.tgz", - "integrity": "sha512-tb5thFFlUcp7NdNF6/MpDk/1r/4awWG1FIz3YqDf+/zJSTezBb+/5WViH41obXULHVpDzoiCLpJ/ZO9YbJMsdw==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-shim-unscopables": "^1.0.0", - "get-intrinsic": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flat": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", - "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", - "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.tosorted": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz", - "integrity": "sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-shim-unscopables": "^1.0.0", - "get-intrinsic": "^1.1.3" - } - }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.1.tgz", - "integrity": "sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw==", - "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "get-intrinsic": "^1.2.1", - "is-array-buffer": "^3.0.2", - "is-shared-array-buffer": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/ast-types-flow": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", - "integrity": "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==" - }, - "node_modules/autoprefixer": { - "version": "10.4.14", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.14.tgz", - "integrity": "sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" - } - ], - "dependencies": { - "browserslist": "^4.21.5", - "caniuse-lite": "^1.0.30001464", - "fraction.js": "^4.2.0", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", - "postcss-value-parser": "^4.2.0" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" - }, - "engines": { - "node": "^10 || ^12 || >=14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/axe-core": { - "version": "4.7.2", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.7.2.tgz", - "integrity": "sha512-zIURGIS1E1Q4pcrMjp+nnEh+16G56eG/MUllJH8yEvw7asDo7Ac9uhC9KIH5jzpITueEZolfYglnCGIuSBz39g==", - "engines": { - "node": ">=4" - } - }, - "node_modules/axobject-query": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", - "integrity": "sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==", - "dependencies": { - "dequal": "^2.0.3" - } - }, - "node_modules/b4a": { - "version": "1.6.4", - "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.4.tgz", - "integrity": "sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==" - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/big-integer": { - "version": "1.6.51", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", - "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "engines": { - "node": ">=8" - } - }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/blurhash": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/blurhash/-/blurhash-2.0.5.tgz", - "integrity": "sha512-cRygWd7kGBQO3VEhPiTgq4Wc43ctsM+o46urrmPOiuAe+07fzlSB9OJVdpgDL0jPqXUVQ9ht7aq7kxOeJHRK+w==" - }, - "node_modules/bplist-parser": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz", - "integrity": "sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==", - "dependencies": { - "big-integer": "^1.6.44" - }, - "engines": { - "node": ">= 5.10.0" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.21.10", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.10.tgz", - "integrity": "sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001517", - "electron-to-chromium": "^1.4.477", - "node-releases": "^2.0.13", - "update-browserslist-db": "^1.0.11" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/bundle-name": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-3.0.0.tgz", - "integrity": "sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==", - "dependencies": { - "run-applescript": "^5.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/busboy": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", - "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", - "dependencies": { - "streamsearch": "^1.1.0" - }, - "engines": { - "node": ">=10.16.0" - } - }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase-css": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", - "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", - "engines": { - "node": ">= 6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001621", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001621.tgz", - "integrity": "sha512-+NLXZiviFFKX0fk8Piwv3PfLPGtRqJeq2TiNoUff/qB5KJgwecJTvCXDpmlyP/eCI/GUEmp/h/y5j0yckiiZrA==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ] - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chokidar/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" - }, - "node_modules/client-only": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", - "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==" - }, - "node_modules/color": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", - "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", - "dependencies": { - "color-convert": "^2.0.1", - "color-string": "^1.9.0" - }, - "engines": { - "node": ">=12.5.0" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/color-string": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", - "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", - "dependencies": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "node_modules/commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", - "engines": { - "node": ">= 6" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/damerau-levenshtein": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", - "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==" - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "dependencies": { - "mimic-response": "^3.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" - }, - "node_modules/default-browser": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-4.0.0.tgz", - "integrity": "sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==", - "dependencies": { - "bundle-name": "^3.0.0", - "default-browser-id": "^3.0.0", - "execa": "^7.1.1", - "titleize": "^3.0.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/default-browser-id": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-3.0.0.tgz", - "integrity": "sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==", - "dependencies": { - "bplist-parser": "^0.2.0", - "untildify": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/define-lazy-prop": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", - "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/define-properties": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", - "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", - "dependencies": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/dequal": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", - "engines": { - "node": ">=6" - } - }, - "node_modules/detect-libc": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", - "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/didyoumean": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", - "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==" - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/dlv": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.4.479", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.479.tgz", - "integrity": "sha512-ABv1nHMIR8I5n3O3Een0gr6i0mfM+YcTZqjHy3pAYaOjgFG+BMquuKrSyfYf5CbEkLr9uM05RA3pOk4udNB/aQ==" - }, - "node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" - }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/enhanced-resolve": { - "version": "5.15.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", - "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/es-abstract": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.1.tgz", - "integrity": "sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==", - "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "arraybuffer.prototype.slice": "^1.0.1", - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-set-tostringtag": "^2.0.1", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.2.1", - "get-symbol-description": "^1.0.0", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", - "is-array-buffer": "^3.0.2", - "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.10", - "is-weakref": "^1.0.2", - "object-inspect": "^1.12.3", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.0", - "safe-array-concat": "^1.0.0", - "safe-regex-test": "^1.0.0", - "string.prototype.trim": "^1.2.7", - "string.prototype.trimend": "^1.0.6", - "string.prototype.trimstart": "^1.0.6", - "typed-array-buffer": "^1.0.0", - "typed-array-byte-length": "^1.0.0", - "typed-array-byte-offset": "^1.0.0", - "typed-array-length": "^1.0.4", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", - "dependencies": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-shim-unscopables": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", - "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", - "dependencies": { - "has": "^1.0.3" - } - }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint": { - "version": "8.45.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.45.0.tgz", - "integrity": "sha512-pd8KSxiQpdYRfYa9Wufvdoct3ZPQQuVuU5O6scNgMuOMYuxvH0IGaYK0wUFjo4UYYQQCUndlXiMbnxopwvvTiw==", - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.4.0", - "@eslint/eslintrc": "^2.1.0", - "@eslint/js": "8.44.0", - "@humanwhocodes/config-array": "^0.11.10", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.0", - "eslint-visitor-keys": "^3.4.1", - "espree": "^9.6.0", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-config-next": { - "version": "13.4.12", - "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-13.4.12.tgz", - "integrity": "sha512-ZF0r5vxKaVazyZH/37Au/XItiG7qUOBw+HaH3PeyXltIMwXorsn6bdrl0Nn9N5v5v9spc+6GM2ryjugbjF6X2g==", - "dependencies": { - "@next/eslint-plugin-next": "13.4.12", - "@rushstack/eslint-patch": "^1.1.3", - "@typescript-eslint/parser": "^5.42.0", - "eslint-import-resolver-node": "^0.3.6", - "eslint-import-resolver-typescript": "^3.5.2", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jsx-a11y": "^6.5.1", - "eslint-plugin-react": "^7.31.7", - "eslint-plugin-react-hooks": "5.0.0-canary-7118f5dd7-20230705" - }, - "peerDependencies": { - "eslint": "^7.23.0 || ^8.0.0", - "typescript": ">=3.3.1" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.7", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz", - "integrity": "sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==", - "dependencies": { - "debug": "^3.2.7", - "is-core-module": "^2.11.0", - "resolve": "^1.22.1" - } - }, - "node_modules/eslint-import-resolver-node/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-import-resolver-typescript": { - "version": "3.5.5", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.5.5.tgz", - "integrity": "sha512-TdJqPHs2lW5J9Zpe17DZNQuDnox4xo2o+0tE7Pggain9Rbc19ik8kFtXdxZ250FVx2kF4vlt2RSf4qlUpG7bhw==", - "dependencies": { - "debug": "^4.3.4", - "enhanced-resolve": "^5.12.0", - "eslint-module-utils": "^2.7.4", - "get-tsconfig": "^4.5.0", - "globby": "^13.1.3", - "is-core-module": "^2.11.0", - "is-glob": "^4.0.3", - "synckit": "^0.8.5" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/unts/projects/eslint-import-resolver-ts" - }, - "peerDependencies": { - "eslint": "*", - "eslint-plugin-import": "*" - } - }, - "node_modules/eslint-import-resolver-typescript/node_modules/globby": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", - "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", - "dependencies": { - "dir-glob": "^3.0.1", - "fast-glob": "^3.3.0", - "ignore": "^5.2.4", - "merge2": "^1.4.1", - "slash": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint-import-resolver-typescript/node_modules/slash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint-module-utils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz", - "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==", - "dependencies": { - "debug": "^3.2.7" - }, - "engines": { - "node": ">=4" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - } - } - }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-import": { - "version": "2.28.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.28.0.tgz", - "integrity": "sha512-B8s/n+ZluN7sxj9eUf7/pRFERX0r5bnFA2dCaLHy2ZeaQEAz0k+ZZkFWRFHJAqxfxQDx6KLv9LeIki7cFdwW+Q==", - "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.findlastindex": "^1.2.2", - "array.prototype.flat": "^1.3.1", - "array.prototype.flatmap": "^1.3.1", - "debug": "^3.2.7", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.7", - "eslint-module-utils": "^2.8.0", - "has": "^1.0.3", - "is-core-module": "^2.12.1", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.fromentries": "^2.0.6", - "object.groupby": "^1.0.0", - "object.values": "^1.1.6", - "resolve": "^1.22.3", - "semver": "^6.3.1", - "tsconfig-paths": "^3.14.2" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" - } - }, - "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-import/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-import/node_modules/resolve": { - "version": "1.22.3", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.3.tgz", - "integrity": "sha512-P8ur/gp/AmbEzjr729bZnLjXK5Z+4P0zhIJgBgzqRih7hL7BOukHGtSTA3ACMY467GRFz3duQsi0bDZdR7DKdw==", - "dependencies": { - "is-core-module": "^2.12.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/eslint-plugin-import/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/eslint-plugin-jsx-a11y": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.7.1.tgz", - "integrity": "sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==", - "dependencies": { - "@babel/runtime": "^7.20.7", - "aria-query": "^5.1.3", - "array-includes": "^3.1.6", - "array.prototype.flatmap": "^1.3.1", - "ast-types-flow": "^0.0.7", - "axe-core": "^4.6.2", - "axobject-query": "^3.1.1", - "damerau-levenshtein": "^1.0.8", - "emoji-regex": "^9.2.2", - "has": "^1.0.3", - "jsx-ast-utils": "^3.3.3", - "language-tags": "=1.0.5", - "minimatch": "^3.1.2", - "object.entries": "^1.1.6", - "object.fromentries": "^2.0.6", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=4.0" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" - } - }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/eslint-plugin-react": { - "version": "7.33.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.1.tgz", - "integrity": "sha512-L093k0WAMvr6VhNwReB8VgOq5s2LesZmrpPdKz/kZElQDzqS7G7+DnKoqT+w4JwuiGeAhAvHO0fvy0Eyk4ejDA==", - "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flatmap": "^1.3.1", - "array.prototype.tosorted": "^1.1.1", - "doctrine": "^2.1.0", - "estraverse": "^5.3.0", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.1.2", - "object.entries": "^1.1.6", - "object.fromentries": "^2.0.6", - "object.hasown": "^1.1.2", - "object.values": "^1.1.6", - "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.4", - "semver": "^6.3.1", - "string.prototype.matchall": "^4.0.8" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" - } - }, - "node_modules/eslint-plugin-react-hooks": { - "version": "5.0.0-canary-7118f5dd7-20230705", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.0.0-canary-7118f5dd7-20230705.tgz", - "integrity": "sha512-AZYbMo/NW9chdL7vk6HQzQhT+PvTAEVqWk9ziruUoW2kAOcN5qNyelv70e0F1VNQAbvutOC9oc+xfWycI9FxDw==", - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" - } - }, - "node_modules/eslint-plugin-react/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-react/node_modules/resolve": { - "version": "2.0.0-next.4", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", - "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", - "dependencies": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/eslint-plugin-react/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.2.tgz", - "integrity": "sha512-8drBzUEyZ2llkpCA67iYrgEssKDUu68V8ChqqOfFupIaG/LCVPUT+CoGJpT77zJprs4T/W7p07LP7zAIMuweVw==", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/execa": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz", - "integrity": "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.1", - "human-signals": "^4.3.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^3.0.7", - "strip-final-newline": "^3.0.0" - }, - "engines": { - "node": "^14.18.0 || ^16.14.0 || >=18.0.0" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/expand-template": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", - "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - }, - "node_modules/fast-fifo": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.0.tgz", - "integrity": "sha512-IgfweLvEpwyA4WgiQe9Nx6VV2QkML2NkvZnk1oKnIzXgXdWxuhF7zw4DvLTPZJn6PIUneiAXPF24QmoEqHTjyw==" - }, - "node_modules/fast-glob": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", - "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" - }, - "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatbuffers": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/flatbuffers/-/flatbuffers-1.12.0.tgz", - "integrity": "sha512-c7CZADjRcl6j0PlvFy0ZqXQ67qSEZfrVPynmnL+2zPc+NtMvrF8Y0QceMo7QqnSPc7+uWjUIAbvCQ5WIKlMVdQ==" - }, - "node_modules/flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==" - }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dependencies": { - "is-callable": "^1.1.3" - } - }, - "node_modules/fraction.js": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", - "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", - "engines": { - "node": "*" - }, - "funding": { - "type": "patreon", - "url": "https://www.patreon.com/infusion" - } - }, - "node_modules/fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "node_modules/function.prototype.name": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", - "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-tsconfig": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.6.2.tgz", - "integrity": "sha512-E5XrT4CbbXcXWy+1jChlZmrmCwd5KGx502kDCXJJ7y898TtWW9FwoG5HfOLVRKmlmDGkWN2HM9Ho+/Y8F0sJDg==", - "dependencies": { - "resolve-pkg-maps": "^1.0.0" - }, - "funding": { - "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" - } - }, - "node_modules/github-from-package": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", - "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==" - }, - "node_modules/glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", - "dependencies": { - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==" - }, - "node_modules/guid-typescript": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/guid-typescript/-/guid-typescript-1.0.9.tgz", - "integrity": "sha512-Y8T4vYhEfwJOTbouREvG+3XDsjr8E3kIr7uf+JZ0BYloFsttiHU0WfvANVsR7TxNUJa/WpCnw/Ino/p+DeBhBQ==" - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "dependencies": { - "get-intrinsic": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/human-signals": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", - "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", - "engines": { - "node": ">=14.18.0" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" - }, - "node_modules/internal-slot": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", - "dependencies": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/is-array-buffer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", - "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "is-typed-array": "^1.1.10" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" - }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dependencies": { - "has-bigints": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz", - "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==", - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-docker": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", - "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-inside-container": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", - "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", - "dependencies": { - "is-docker": "^3.0.0" - }, - "bin": { - "is-inside-container": "cli.js" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", - "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", - "dependencies": { - "which-typed-array": "^1.1.11" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-wsl/node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" - }, - "node_modules/jiti": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.19.1.tgz", - "integrity": "sha512-oVhqoRDaBXf7sjkll95LHVS6Myyyb1zaunVwk4Z0+WPSW4gjS0pl01zYKHScTuyEhQsFxV5L4DR5r+YqSyqyyg==", - "bin": { - "jiti": "bin/jiti.js" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" - }, - "node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/jsx-ast-utils": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", - "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", - "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flat": "^1.3.1", - "object.assign": "^4.1.4", - "object.values": "^1.1.6" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/language-subtag-registry": { - "version": "0.3.22", - "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz", - "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==" - }, - "node_modules/language-tags": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz", - "integrity": "sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==", - "dependencies": { - "language-subtag-registry": "~0.3.2" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/lilconfig": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", - "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", - "engines": { - "node": ">=10" - } - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" - }, - "node_modules/long": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", - "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/mz": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", - "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", - "dependencies": { - "any-promise": "^1.0.0", - "object-assign": "^4.0.1", - "thenify-all": "^1.0.0" - } - }, - "node_modules/nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/napi-build-utils": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", - "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==" - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" - }, - "node_modules/next": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/next/-/next-14.2.3.tgz", - "integrity": "sha512-dowFkFTR8v79NPJO4QsBUtxv0g9BrS/phluVpMAt2ku7H+cbcBJlopXjkWlwxrk/xGqMemr7JkGPGemPrLLX7A==", - "dependencies": { - "@next/env": "14.2.3", - "@swc/helpers": "0.5.5", - "busboy": "1.6.0", - "caniuse-lite": "^1.0.30001579", - "graceful-fs": "^4.2.11", - "postcss": "8.4.31", - "styled-jsx": "5.1.1" - }, - "bin": { - "next": "dist/bin/next" - }, - "engines": { - "node": ">=18.17.0" - }, - "optionalDependencies": { - "@next/swc-darwin-arm64": "14.2.3", - "@next/swc-darwin-x64": "14.2.3", - "@next/swc-linux-arm64-gnu": "14.2.3", - "@next/swc-linux-arm64-musl": "14.2.3", - "@next/swc-linux-x64-gnu": "14.2.3", - "@next/swc-linux-x64-musl": "14.2.3", - "@next/swc-win32-arm64-msvc": "14.2.3", - "@next/swc-win32-ia32-msvc": "14.2.3", - "@next/swc-win32-x64-msvc": "14.2.3" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.1.0", - "@playwright/test": "^1.41.2", - "react": "^18.2.0", - "react-dom": "^18.2.0", - "sass": "^1.3.0" - }, - "peerDependenciesMeta": { - "@opentelemetry/api": { - "optional": true - }, - "@playwright/test": { - "optional": true - }, - "sass": { - "optional": true - } - } - }, - "node_modules/node-abi": { - "version": "3.45.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.45.0.tgz", - "integrity": "sha512-iwXuFrMAcFVi/ZoZiqq8BzAdsLw9kxDfTC0HMyjXfSL/6CSDAGD5UmR7azrAgWV1zKYq7dUUMj4owusBWKLsiQ==", - "dependencies": { - "semver": "^7.3.5" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/node-addon-api": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz", - "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==" - }, - "node_modules/node-releases": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", - "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==" - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm-run-path": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", - "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", - "dependencies": { - "path-key": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm-run-path/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-hash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", - "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", - "engines": { - "node": ">= 6" - } - }, - "node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.entries": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz", - "integrity": "sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.fromentries": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz", - "integrity": "sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.groupby": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.0.tgz", - "integrity": "sha512-70MWG6NfRH9GnbZOikuhPPYzpUpof9iW2J9E4dW7FXTqPNb6rllE6u39SKwwiNh8lCwX3DDb5OgcKGiEBrTTyw==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.21.2", - "get-intrinsic": "^1.2.1" - } - }, - "node_modules/object.hasown": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.2.tgz", - "integrity": "sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==", - "dependencies": { - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.values": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", - "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", - "dependencies": { - "mimic-fn": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/onnx-proto": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/onnx-proto/-/onnx-proto-4.0.4.tgz", - "integrity": "sha512-aldMOB3HRoo6q/phyB6QRQxSt895HNNw82BNyZ2CMh4bjeKv7g/c+VpAFtJuEMVfYLMbRx61hbuqnKceLeDcDA==", - "dependencies": { - "protobufjs": "^6.8.8" - } - }, - "node_modules/onnxruntime-common": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/onnxruntime-common/-/onnxruntime-common-1.14.0.tgz", - "integrity": "sha512-3LJpegM2iMNRX2wUmtYfeX/ytfOzNwAWKSq1HbRrKc9+uqG/FsEA0bbKZl1btQeZaXhC26l44NWpNUeXPII7Ew==" - }, - "node_modules/onnxruntime-node": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/onnxruntime-node/-/onnxruntime-node-1.14.0.tgz", - "integrity": "sha512-5ba7TWomIV/9b6NH/1x/8QEeowsb+jBEvFzU6z0T4mNsFwdPqXeFUM7uxC6QeSRkEbWu3qEB0VMjrvzN/0S9+w==", - "optional": true, - "os": [ - "win32", - "darwin", - "linux" - ], - "dependencies": { - "onnxruntime-common": "~1.14.0" - } - }, - "node_modules/onnxruntime-web": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/onnxruntime-web/-/onnxruntime-web-1.14.0.tgz", - "integrity": "sha512-Kcqf43UMfW8mCydVGcX9OMXI2VN17c0p6XvR7IPSZzBf/6lteBzXHvcEVWDPmCKuGombl997HgLqj91F11DzXw==", - "dependencies": { - "flatbuffers": "^1.12.0", - "guid-typescript": "^1.0.9", - "long": "^4.0.0", - "onnx-proto": "^4.0.4", - "onnxruntime-common": "~1.14.0", - "platform": "^1.3.6" - } - }, - "node_modules/open": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/open/-/open-9.1.0.tgz", - "integrity": "sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==", - "dependencies": { - "default-browser": "^4.0.0", - "define-lazy-prop": "^3.0.0", - "is-inside-container": "^1.0.0", - "is-wsl": "^2.2.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/optionator": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", - "dependencies": { - "@aashutoshrathi/word-wrap": "^1.2.3", - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pirates": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", - "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", - "engines": { - "node": ">= 6" - } - }, - "node_modules/platform": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.6.tgz", - "integrity": "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==" - }, - "node_modules/postcss": { - "version": "8.4.31", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", - "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/postcss-import": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", - "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", - "dependencies": { - "postcss-value-parser": "^4.0.0", - "read-cache": "^1.0.0", - "resolve": "^1.1.7" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "postcss": "^8.0.0" - } - }, - "node_modules/postcss-js": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", - "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", - "dependencies": { - "camelcase-css": "^2.0.1" - }, - "engines": { - "node": "^12 || ^14 || >= 16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": "^8.4.21" - } - }, - "node_modules/postcss-load-config": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.1.tgz", - "integrity": "sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==", - "dependencies": { - "lilconfig": "^2.0.5", - "yaml": "^2.1.1" - }, - "engines": { - "node": ">= 14" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": ">=8.0.9", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "postcss": { - "optional": true - }, - "ts-node": { - "optional": true - } - } - }, - "node_modules/postcss-nested": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz", - "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==", - "dependencies": { - "postcss-selector-parser": "^6.0.11" - }, - "engines": { - "node": ">=12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": "^8.2.14" - } - }, - "node_modules/postcss-selector-parser": { - "version": "6.0.13", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", - "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" - }, - "node_modules/prebuild-install": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz", - "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==", - "dependencies": { - "detect-libc": "^2.0.0", - "expand-template": "^2.0.3", - "github-from-package": "0.0.0", - "minimist": "^1.2.3", - "mkdirp-classic": "^0.5.3", - "napi-build-utils": "^1.0.1", - "node-abi": "^3.3.0", - "pump": "^3.0.0", - "rc": "^1.2.7", - "simple-get": "^4.0.0", - "tar-fs": "^2.0.0", - "tunnel-agent": "^0.6.0" - }, - "bin": { - "prebuild-install": "bin.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/prebuild-install/node_modules/tar-fs": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", - "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", - "dependencies": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^2.1.4" - } - }, - "node_modules/prebuild-install/node_modules/tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" - } - }, - "node_modules/protobufjs": { - "version": "7.2.6", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.6.tgz", - "integrity": "sha512-dgJaEDDL6x8ASUZ1YqWciTRrdOuYNzoOf27oHNfdyvKqHr5i0FV7FSLU+aIeFjyFgVxrpTOtQUi0BLLBymZaBw==", - "hasInstallScript": true, - "dependencies": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", - "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", - "@types/node": ">=13.7.0", - "long": "^5.0.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/protobufjs/node_modules/long": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", - "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" - }, - "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "engines": { - "node": ">=6" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/queue-tick": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", - "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==" - }, - "node_modules/rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "bin": { - "rc": "cli.js" - } - }, - "node_modules/rc/node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", - "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", - "dependencies": { - "loose-envify": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-dom": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", - "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", - "dependencies": { - "loose-envify": "^1.1.0", - "scheduler": "^0.23.0" - }, - "peerDependencies": { - "react": "^18.2.0" - } - }, - "node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - }, - "node_modules/read-cache": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", - "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", - "dependencies": { - "pify": "^2.3.0" - } - }, - "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/regenerator-runtime": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" - }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz", - "integrity": "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "functions-have-names": "^1.2.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", - "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", - "dependencies": { - "is-core-module": "^2.11.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "engines": { - "node": ">=4" - } - }, - "node_modules/resolve-pkg-maps": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", - "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", - "funding": { - "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/run-applescript": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-5.0.0.tgz", - "integrity": "sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==", - "dependencies": { - "execa": "^5.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/run-applescript/node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/run-applescript/node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/run-applescript/node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/run-applescript/node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/run-applescript/node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/run-applescript/node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/run-applescript/node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "engines": { - "node": ">=6" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/safe-array-concat": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.0.tgz", - "integrity": "sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ==", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "has-symbols": "^1.0.3", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/safe-regex-test": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "is-regex": "^1.1.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/scheduler": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", - "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", - "dependencies": { - "loose-envify": "^1.1.0" - } - }, - "node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/sharp": { - "version": "0.32.6", - "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.32.6.tgz", - "integrity": "sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==", - "hasInstallScript": true, - "dependencies": { - "color": "^4.2.3", - "detect-libc": "^2.0.2", - "node-addon-api": "^6.1.0", - "prebuild-install": "^7.1.1", - "semver": "^7.5.4", - "simple-get": "^4.0.1", - "tar-fs": "^3.0.4", - "tunnel-agent": "^0.6.0" - }, - "engines": { - "node": ">=14.15.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "engines": { - "node": ">=8" - } - }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" - }, - "node_modules/simple-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/simple-get": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", - "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "decompress-response": "^6.0.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } - }, - "node_modules/simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", - "dependencies": { - "is-arrayish": "^0.3.1" - } - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "engines": { - "node": ">=8" - } - }, - "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/streamsearch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", - "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/streamx": { - "version": "2.15.0", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.15.0.tgz", - "integrity": "sha512-HcxY6ncGjjklGs1xsP1aR71INYcsXFJet5CU1CHqihQ2J5nOsbd4OjgjHO42w/4QNv9gZb3BueV+Vxok5pLEXg==", - "dependencies": { - "fast-fifo": "^1.1.0", - "queue-tick": "^1.0.1" - } - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string.prototype.matchall": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz", - "integrity": "sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "get-intrinsic": "^1.1.3", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "regexp.prototype.flags": "^1.4.3", - "side-channel": "^1.0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trim": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz", - "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", - "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", - "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "engines": { - "node": ">=4" - } - }, - "node_modules/strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/styled-jsx": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz", - "integrity": "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==", - "dependencies": { - "client-only": "0.0.1" - }, - "engines": { - "node": ">= 12.0.0" - }, - "peerDependencies": { - "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "babel-plugin-macros": { - "optional": true - } - } - }, - "node_modules/sucrase": { - "version": "3.34.0", - "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.34.0.tgz", - "integrity": "sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.2", - "commander": "^4.0.0", - "glob": "7.1.6", - "lines-and-columns": "^1.1.6", - "mz": "^2.7.0", - "pirates": "^4.0.1", - "ts-interface-checker": "^0.1.9" - }, - "bin": { - "sucrase": "bin/sucrase", - "sucrase-node": "bin/sucrase-node" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/sucrase/node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/synckit": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.5.tgz", - "integrity": "sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==", - "dependencies": { - "@pkgr/utils": "^2.3.1", - "tslib": "^2.5.0" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/unts" - } - }, - "node_modules/tailwindcss": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.3.3.tgz", - "integrity": "sha512-A0KgSkef7eE4Mf+nKJ83i75TMyq8HqY3qmFIJSWy8bNt0v1lG7jUcpGpoTFxAwYcWOphcTBLPPJg+bDfhDf52w==", - "dependencies": { - "@alloc/quick-lru": "^5.2.0", - "arg": "^5.0.2", - "chokidar": "^3.5.3", - "didyoumean": "^1.2.2", - "dlv": "^1.1.3", - "fast-glob": "^3.2.12", - "glob-parent": "^6.0.2", - "is-glob": "^4.0.3", - "jiti": "^1.18.2", - "lilconfig": "^2.1.0", - "micromatch": "^4.0.5", - "normalize-path": "^3.0.0", - "object-hash": "^3.0.0", - "picocolors": "^1.0.0", - "postcss": "^8.4.23", - "postcss-import": "^15.1.0", - "postcss-js": "^4.0.1", - "postcss-load-config": "^4.0.1", - "postcss-nested": "^6.0.1", - "postcss-selector-parser": "^6.0.11", - "resolve": "^1.22.2", - "sucrase": "^3.32.0" - }, - "bin": { - "tailwind": "lib/cli.js", - "tailwindcss": "lib/cli.js" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/tar-fs": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.4.tgz", - "integrity": "sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==", - "dependencies": { - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^3.1.5" - } - }, - "node_modules/tar-stream": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.6.tgz", - "integrity": "sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==", - "dependencies": { - "b4a": "^1.6.4", - "fast-fifo": "^1.2.0", - "streamx": "^2.15.0" - } - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" - }, - "node_modules/thenify": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", - "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", - "dependencies": { - "any-promise": "^1.0.0" - } - }, - "node_modules/thenify-all": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", - "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", - "dependencies": { - "thenify": ">= 3.1.0 < 4" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/titleize": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/titleize/-/titleize-3.0.0.tgz", - "integrity": "sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/ts-interface-checker": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", - "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==" - }, - "node_modules/tsconfig-paths": { - "version": "3.14.2", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", - "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==", - "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } - }, - "node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==" - }, - "node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dependencies": { - "tslib": "^1.8.1" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - } - }, - "node_modules/tsutils/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typed-array-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", - "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/typed-array-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", - "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", - "dependencies": { - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", - "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", - "dependencies": { - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typescript": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", - "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", - "peer": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "dependencies": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/untildify": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", - "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", - "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-typed-array": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", - "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "node_modules/yaml": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.1.tgz", - "integrity": "sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==", - "engines": { - "node": ">= 14" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - } -} diff --git a/examples/semantic-image-search-client/package.json b/examples/semantic-image-search-client/package.json deleted file mode 100644 index e73aafd17..000000000 --- a/examples/semantic-image-search-client/package.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "name": "semantic-image-search-client", - "version": "0.1.0", - "private": true, - "scripts": { - "dev": "next dev", - "build": "next build", - "start": "next start", - "lint": "next lint" - }, - "dependencies": { - "@xenova/transformers": "^2.6.1", - "autoprefixer": "10.4.14", - "blurhash": "^2.0.5", - "eslint": "8.45.0", - "eslint-config-next": "13.4.12", - "next": "^14.2.3", - "postcss": "^8.4.31", - "react": "18.2.0", - "react-dom": "18.2.0", - "tailwindcss": "3.3.3" - }, - "overrides": { - "protobufjs": "^7.2.4" - } -} diff --git a/examples/semantic-image-search-client/postcss.config.js b/examples/semantic-image-search-client/postcss.config.js deleted file mode 100644 index 33ad091d2..000000000 --- a/examples/semantic-image-search-client/postcss.config.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - plugins: { - tailwindcss: {}, - autoprefixer: {}, - }, -} diff --git a/examples/semantic-image-search-client/public/next.svg b/examples/semantic-image-search-client/public/next.svg deleted file mode 100644 index 5174b28c5..000000000 --- a/examples/semantic-image-search-client/public/next.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/examples/semantic-image-search-client/public/vercel.svg b/examples/semantic-image-search-client/public/vercel.svg deleted file mode 100644 index d2f842227..000000000 --- a/examples/semantic-image-search-client/public/vercel.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/examples/semantic-image-search-client/src/app/components/ImageGrid.jsx b/examples/semantic-image-search-client/src/app/components/ImageGrid.jsx deleted file mode 100644 index d33ab3637..000000000 --- a/examples/semantic-image-search-client/src/app/components/ImageGrid.jsx +++ /dev/null @@ -1,32 +0,0 @@ -'use client' - -import Image from 'next/image' -import { blurHashToDataURL } from '../utils.js' - -export function ImageGrid({ images, setCurrentImage }) { - return ( -
    - {images && images.map(({ id, url, ar, blur }) => ( -
    { - setCurrentImage({ id, url, ar, blur }); - }} - > - -
    - ))} -
    ) -} \ No newline at end of file diff --git a/examples/semantic-image-search-client/src/app/components/Modal.jsx b/examples/semantic-image-search-client/src/app/components/Modal.jsx deleted file mode 100644 index a40cc1d0c..000000000 --- a/examples/semantic-image-search-client/src/app/components/Modal.jsx +++ /dev/null @@ -1,64 +0,0 @@ -'use client' - -import Image from 'next/image' -import { downloadImage } from '../utils.js' - -export function Modal({ currentImage, setCurrentImage }) { - const photo_url = currentImage ? `https://unsplash.com/photos/${currentImage.id}` : null; - const photo_image_url = currentImage ? `https://images.unsplash.com/${currentImage.url}?auto=format&fit=crop&w=480&q=80` : null; - return ( -
    - {currentImage && <> - -
    - -
    -
    - - - - -
    - - } - -
    ) -} \ No newline at end of file diff --git a/examples/semantic-image-search-client/src/app/components/SearchBar.jsx b/examples/semantic-image-search-client/src/app/components/SearchBar.jsx deleted file mode 100644 index aa7aaf48c..000000000 --- a/examples/semantic-image-search-client/src/app/components/SearchBar.jsx +++ /dev/null @@ -1,33 +0,0 @@ -'use client' - -export function SearchBar({ search }) { - return (
    { - e.preventDefault(); - const formData = new FormData(e.target); - const text = formData.get('text'); - search(text); - }} - className='relative mb-2' - > -
    - -
    - - -
    ) -} \ No newline at end of file diff --git a/examples/semantic-image-search-client/src/app/favicon.ico b/examples/semantic-image-search-client/src/app/favicon.ico deleted file mode 100644 index 718d6fea4835ec2d246af9800eddb7ffb276240c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25931 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 LrJugUA?W`A8`#=m diff --git a/examples/semantic-image-search-client/src/app/globals.css b/examples/semantic-image-search-client/src/app/globals.css deleted file mode 100644 index e76e81979..000000000 --- a/examples/semantic-image-search-client/src/app/globals.css +++ /dev/null @@ -1,19 +0,0 @@ -@tailwind base; -@tailwind components; -@tailwind utilities; - -:root { - --foreground-rgb: 255, 255, 255; - --background-start-rgb: 0, 0, 0; - --background-end-rgb: 0, 0, 0; -} - -body { - color: rgb(var(--foreground-rgb)); - background: linear-gradient( - to bottom, - transparent, - rgb(var(--background-end-rgb)) - ) - rgb(var(--background-start-rgb)); -} diff --git a/examples/semantic-image-search-client/src/app/layout.js b/examples/semantic-image-search-client/src/app/layout.js deleted file mode 100644 index 9d42768a1..000000000 --- a/examples/semantic-image-search-client/src/app/layout.js +++ /dev/null @@ -1,17 +0,0 @@ -import './globals.css' -import { Inter } from 'next/font/google' - -const inter = Inter({ subsets: ['latin'] }) - -export const metadata = { - title: 'In-browser Semantic Image Search', - description: 'Search for images using text (built w/ Transformers.js)', -} - -export default function RootLayout({ children }) { - return ( - - {children} - - ) -} diff --git a/examples/semantic-image-search-client/src/app/page.js b/examples/semantic-image-search-client/src/app/page.js deleted file mode 100644 index 4cb7acb17..000000000 --- a/examples/semantic-image-search-client/src/app/page.js +++ /dev/null @@ -1,65 +0,0 @@ -'use client' - -import { useState, useEffect, useCallback, useRef } from 'react' -import { Modal } from './components/Modal'; -import { SearchBar } from './components/SearchBar'; -import { ImageGrid } from './components/ImageGrid'; - -export default function Home() { - - // Application state - const [ready, setReady] = useState(null); - const [images, setImages] = useState(null); - const [currentImage, setCurrentImage] = useState(null); - - // Create a reference to the worker object. - const worker = useRef(null); - - // We use the `useEffect` hook to set up the worker as soon as the `App` component is mounted. - useEffect(() => { - if (!worker.current) { - // Create the worker if it does not yet exist. - worker.current = new Worker(new URL('./worker.js', import.meta.url), { - type: 'module' - }); - } - const onMessageReceived = (e) => { - switch (e.data.status) { - case 'initiate': - setReady(false); - break; - case 'ready': - setReady(true); - break; - case 'complete': - setImages(e.data.output); - break; - } - }; - - // Attach the callback function as an event listener. - worker.current.addEventListener('message', onMessageReceived); - - // Define a cleanup function for when the component is unmounted. - return () => worker.current.removeEventListener('message', onMessageReceived); - }); - - const search = useCallback((text) => { - if (worker.current) { - worker.current.postMessage({ text }); - } - }, []); - - return ( -
    - - - {ready === false && ( -
    -
    Loading model and database...
    -
    - )} - -
    - ) -} diff --git a/examples/semantic-image-search-client/src/app/utils.js b/examples/semantic-image-search-client/src/app/utils.js deleted file mode 100644 index 2e3a641b9..000000000 --- a/examples/semantic-image-search-client/src/app/utils.js +++ /dev/null @@ -1,95 +0,0 @@ - -import { decode } from 'blurhash' - -const SIZE = 32; - -export function blurHashToDataURL(hash) { - if (!hash) return undefined - - const pixels = decode(hash, SIZE, SIZE) - - const canvas = document.createElement("canvas"); - canvas.width = SIZE; - canvas.height = SIZE; - - const ctx = canvas.getContext("2d"); - const imageData = ctx.createImageData(SIZE, SIZE); - imageData.data.set(pixels); - ctx.putImageData(imageData, 0, 0); - - return canvas.toDataURL(); -} - -function downloadData(url, filename) { - - // Create an anchor element with the data URL as the href attribute - const downloadLink = document.createElement('a'); - downloadLink.href = url; - - // Set the download attribute to specify the desired filename for the downloaded image - downloadLink.download = filename; - - // Trigger the download - downloadLink.click(); - - // Clean up: remove the anchor element from the DOM - downloadLink.remove(); -} - -export function downloadImage(url, filename) { - fetch(url, { - headers: new Headers({ - Origin: location.origin, - }), - mode: 'cors', - }) - .then((response) => response.blob()) - .then((blob) => { - let blobUrl = window.URL.createObjectURL(blob) - downloadData(blobUrl, filename) - }) - .catch((e) => console.error(e)) -} - - - -// Adapted from https://github.com/xenova/transformers.js/blob/c367f9d68b809bbbf81049c808bf6d219d761d23/src/utils/hub.js#L330 -export async function getCachedFile(url) { - let cache; - try { - cache = await caches.open('image-database'); - const cachedResponse = await cache.match(url); - if (cachedResponse) { - return await cachedResponse.arrayBuffer(); - } - } catch (e) { - console.warn('Unable to open cache', e); - } - - // No cache, or cache failed to open. Fetch the file. - const response = await fetch(url); - const buffer = await response.arrayBuffer(); - - if (cache) { - try { - // NOTE: We use `new Response(buffer, ...)` instead of `response.clone()` to handle LFS files - await cache.put(url, new Response(buffer, { - headers: response.headers, - })); - } catch (e) { - console.warn('Unable to cache file', e); - } - } - - return buffer; - -} - -export async function getCachedJSON(url) { - let buffer = await getCachedFile(url); - - let decoder = new TextDecoder('utf-8'); - let jsonData = decoder.decode(buffer); - - return JSON.parse(jsonData); -} diff --git a/examples/semantic-image-search-client/src/app/worker.js b/examples/semantic-image-search-client/src/app/worker.js deleted file mode 100644 index 977edf846..000000000 --- a/examples/semantic-image-search-client/src/app/worker.js +++ /dev/null @@ -1,110 +0,0 @@ - -import { env, AutoTokenizer, CLIPTextModelWithProjection } from '@xenova/transformers'; -import { getCachedFile, getCachedJSON } from './utils.js'; - -const EMBED_DIM = 512; - -// Skip local model check -env.allowLocalModels = false; - -class ApplicationSingleton { - static model_id = 'Xenova/clip-vit-base-patch16'; - static BASE_URL = 'https://huggingface.co/datasets/Xenova/semantic-image-search-assets/resolve/main/'; - - static tokenizer = null; - static text_model = null; - static metadata = null; - static embeddings = null; - - static async getInstance(progress_callback = null) { - // Load tokenizer and text model - if (this.tokenizer === null) { - this.tokenizer = AutoTokenizer.from_pretrained(this.model_id, { progress_callback }); - } - if (this.text_model === null) { - this.text_model = CLIPTextModelWithProjection.from_pretrained(this.model_id, { progress_callback }); - } - if (this.metadata === null) { - this.metadata = getCachedJSON(this.BASE_URL + 'image-embeddings.json'); - } - if (this.embeddings === null) { - this.embeddings = new Promise( - (resolve, reject) => { - getCachedFile(this.BASE_URL + 'image-embeddings_25k-512-32bit.bin') - .then((buffer) => { - resolve(new Float32Array(buffer)); - }) - .catch(reject); - } - ) - } - - return Promise.all([this.tokenizer, this.text_model, this.metadata, this.embeddings]); - } -} - -function cosineSimilarity(query_embeds, database_embeds) { - const numDB = database_embeds.length / EMBED_DIM; - const similarityScores = new Array(numDB); - - for (let i = 0; i < numDB; ++i) { - const startOffset = i * EMBED_DIM; - const dbVector = database_embeds.slice(startOffset, startOffset + EMBED_DIM); - - let dotProduct = 0; - let normEmbeds = 0; - let normDB = 0; - - for (let j = 0; j < EMBED_DIM; ++j) { - const embedValue = query_embeds[j]; - const dbValue = dbVector[j]; - - dotProduct += embedValue * dbValue; - normEmbeds += embedValue * embedValue; - normDB += dbValue * dbValue; - } - - similarityScores[i] = dotProduct / (Math.sqrt(normEmbeds) * Math.sqrt(normDB)); - } - - return similarityScores; -} - -// Listen for messages from the main thread -self.addEventListener('message', async (event) => { - // Get the tokenizer, model, metadata, and embeddings. When called for the first time, - // this will load the files and cache them for future use. - const [tokenizer, text_model, metadata, embeddings] = await ApplicationSingleton.getInstance(self.postMessage); - - // Send the output back to the main thread - self.postMessage({ status: 'ready' }); - - // Run tokenization - const text_inputs = tokenizer(event.data.text, { padding: true, truncation: true }); - - // Compute embeddings - const { text_embeds } = await text_model(text_inputs); - - // Compute similarity scores - const scores = cosineSimilarity(text_embeds.data, embeddings); - - // Make a copy of the metadata - let output = metadata.slice(0); - - // Add scores to output - for (let i = 0; i < metadata.length; ++i) { - output[i].score = scores[i]; - } - - // Sort by score - output.sort((a, b) => b.score - a.score); - - // Get top 100 results - output = output.slice(0, 100); - - // Send the output back to the main thread - self.postMessage({ - status: 'complete', - output: output, - }); -}); diff --git a/examples/semantic-image-search-client/tailwind.config.js b/examples/semantic-image-search-client/tailwind.config.js deleted file mode 100644 index 65162f135..000000000 --- a/examples/semantic-image-search-client/tailwind.config.js +++ /dev/null @@ -1,16 +0,0 @@ -/** @type {import('tailwindcss').Config} */ -module.exports = { - content: [ - './src/pages/**/*.{js,ts,jsx,tsx,mdx}', - './src/components/**/*.{js,ts,jsx,tsx,mdx}', - './src/app/**/*.{js,ts,jsx,tsx,mdx}', - ], - theme: { - extend: { - boxShadow: { - highlight: 'inset 0 0 0 1px rgba(255, 255, 255, 0.1)', - }, - }, - }, - plugins: [], -} From 97a3c486529d4c04f2e82100cd6aa1233dfc03d4 Mon Sep 17 00:00:00 2001 From: Joshua Lochner Date: Tue, 24 Dec 2024 01:28:57 +0000 Subject: [PATCH 22/23] Move semantic audio search demo --- examples/semantic-audio-search/.gitignore | 24 - examples/semantic-audio-search/index.html | 26 - examples/semantic-audio-search/index.js | 129 - .../semantic-audio-search/package-lock.json | 2119 ----------------- examples/semantic-audio-search/package.json | 18 - examples/semantic-audio-search/style.css | 109 - examples/semantic-audio-search/utils.js | 40 - examples/semantic-audio-search/worker.js | 94 - 8 files changed, 2559 deletions(-) delete mode 100644 examples/semantic-audio-search/.gitignore delete mode 100644 examples/semantic-audio-search/index.html delete mode 100644 examples/semantic-audio-search/index.js delete mode 100644 examples/semantic-audio-search/package-lock.json delete mode 100644 examples/semantic-audio-search/package.json delete mode 100644 examples/semantic-audio-search/style.css delete mode 100644 examples/semantic-audio-search/utils.js delete mode 100644 examples/semantic-audio-search/worker.js diff --git a/examples/semantic-audio-search/.gitignore b/examples/semantic-audio-search/.gitignore deleted file mode 100644 index a547bf36d..000000000 --- a/examples/semantic-audio-search/.gitignore +++ /dev/null @@ -1,24 +0,0 @@ -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -pnpm-debug.log* -lerna-debug.log* - -node_modules -dist -dist-ssr -*.local - -# Editor directories and files -.vscode/* -!.vscode/extensions.json -.idea -.DS_Store -*.suo -*.ntvs* -*.njsproj -*.sln -*.sw? diff --git a/examples/semantic-audio-search/index.html b/examples/semantic-audio-search/index.html deleted file mode 100644 index b7b1f8af8..000000000 --- a/examples/semantic-audio-search/index.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - Semantic Audio Search | Transformers.js - - - - - -
    -
    - - - - - - \ No newline at end of file diff --git a/examples/semantic-audio-search/index.js b/examples/semantic-audio-search/index.js deleted file mode 100644 index 1d7b047e2..000000000 --- a/examples/semantic-audio-search/index.js +++ /dev/null @@ -1,129 +0,0 @@ - -import Scatterplot from 'deepscatter'; -import { getCachedJSON } from './utils'; - -// Start loading metadata and positions asynchronously as soon as possible. -let metadata = {}; -getCachedJSON('https://huggingface.co/datasets/Xenova/MusicBenchEmbedded/resolve/main/metadata.json') - .then((data) => { - metadata = data; - }) - .catch((e) => console.error(e)); - -let positions = {}; -getCachedJSON('https://huggingface.co/datasets/Xenova/MusicBenchEmbedded/resolve/main/positions.json') - .then((data) => { - positions = data; - }) - .catch((e) => console.error(e)); - -const scatterplot = new Scatterplot('#deepscatter'); -window.scatterplot = scatterplot; // For debugging - -// Initial call -scatterplot.plotAPI({ - source_url: 'https://huggingface.co/datasets/Xenova/MusicBenchEmbedded/resolve/main/atlas', - max_points: 52768, // a full cap. - alpha: 35, // Target saturation for the full page. - zoom_balance: 0.5, // Rate at which points increase size. https://observablehq.com/@bmschmidt/zoom-strategies-for-huge-scatterplots-with-three-js - point_size: 3, // Default point size before application of size scaling - background_color: 'transparent', - encoding: { - // TODO Add colours - x: { - field: 'x', - transform: 'literal', - }, - y: { - field: 'y', - transform: 'literal', - }, - jitter_radius: { - method: 'uniform', - constant: 5, - }, - }, - tooltip_opacity: 1, - duration: 4000, // For slow initial transition -}).then(_ => scatterplot.plotAPI({ - encoding: { - jitter_radius: { - method: 'uniform', - constant: 0, - }, - }, -})); - -// Custom hover function -scatterplot.tooltip_html = (datum) => { - const item = metadata[datum.ix]; - if (!item) return 'Loading...'; - const location = item.location; - - setTimeout(() => { - // Slight hack to append the audio element after the text - const tooltip = document.querySelector('.tooltip'); - if (tooltip) { - tooltip.innerHTML = ` - ${item.main_caption} -
    - - `; - } - }, 0); - return item.main_caption; -}; - -// Make references to DOM elements -const OVERLAY = document.getElementById('overlay'); -const INPUT_ELEMENT = document.getElementById('query'); -const SEARCH_BUTTON = document.getElementById('search'); - -// Set up worker -const worker = new Worker(new URL('./worker.js', import.meta.url), { - type: 'module' -}); -worker.addEventListener('message', (e) => { - switch (e.data.status) { - case 'initiate': - OVERLAY.innerText = 'Loading model and embeddings database...'; - OVERLAY.style.display = 'flex'; - OVERLAY.style.pointerEvents = 'all'; - break; - case 'ready': - OVERLAY.style.display = 'none'; - OVERLAY.style.pointerEvents = 'none'; - break; - case 'complete': - // Output is an array of [score, index] pairs. Get top item - const index = e.data.output[0][1]; - const position = positions[index]; - - if (position) { // Just in case the position hasn't loaded yet (this should never happen) - // Zoom to result - scatterplot.plotAPI({ - zoom: { - bbox: { - x: [position[0] - 0.5, position[0] + 0.5], - y: [position[1] - 0.5, position[1] + 0.5] - } - }, - duration: 2000, - }) - } - break; - } -}); - -const search = () => { - worker.postMessage({ - status: 'search', - query: INPUT_ELEMENT.value, - }); -}; - -// Set up event listeners -INPUT_ELEMENT.addEventListener('keypress', (event) => { - if (event.keyCode === 13) search(); -}); -SEARCH_BUTTON.addEventListener('click', search); diff --git a/examples/semantic-audio-search/package-lock.json b/examples/semantic-audio-search/package-lock.json deleted file mode 100644 index 864183715..000000000 --- a/examples/semantic-audio-search/package-lock.json +++ /dev/null @@ -1,2119 +0,0 @@ -{ - "name": "semantic-audio-search", - "version": "0.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "semantic-audio-search", - "version": "0.0.0", - "dependencies": { - "@xenova/transformers": "^2.10.1", - "deepscatter": "github:nomic-ai/deepscatter" - }, - "devDependencies": { - "vite": "^5.0.13" - } - }, - "node_modules/@75lb/deep-merge": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@75lb/deep-merge/-/deep-merge-1.1.1.tgz", - "integrity": "sha512-xvgv6pkMGBA6GwdyJbNAnDmfAIR/DfWhrj9jgWh3TY7gRm3KO46x/GPjRg6wJ0nOepwqrNxFfojebh0Df4h4Tw==", - "peer": true, - "dependencies": { - "lodash.assignwith": "^4.2.0", - "typical": "^7.1.1" - }, - "engines": { - "node": ">=12.17" - } - }, - "node_modules/@75lb/deep-merge/node_modules/typical": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/typical/-/typical-7.1.1.tgz", - "integrity": "sha512-T+tKVNs6Wu7IWiAce5BgMd7OZfNYUndHwc5MknN+UHOudi7sGZzuHdCadllRuqJ3fPtgFtIH9+lt9qRv6lmpfA==", - "peer": true, - "engines": { - "node": ">=12.17" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.8.tgz", - "integrity": "sha512-31E2lxlGM1KEfivQl8Yf5aYU/mflz9g06H6S15ITUFQueMFtFjESRMoDSkvMo8thYvLBax+VKTPlpnx+sPicOA==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.8.tgz", - "integrity": "sha512-B8JbS61bEunhfx8kasogFENgQfr/dIp+ggYXwTqdbMAgGDhRa3AaPpQMuQU0rNxDLECj6FhDzk1cF9WHMVwrtA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.8.tgz", - "integrity": "sha512-rdqqYfRIn4jWOp+lzQttYMa2Xar3OK9Yt2fhOhzFXqg0rVWEfSclJvZq5fZslnz6ypHvVf3CT7qyf0A5pM682A==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.8.tgz", - "integrity": "sha512-RQw9DemMbIq35Bprbboyf8SmOr4UXsRVxJ97LgB55VKKeJOOdvsIPy0nFyF2l8U+h4PtBx/1kRf0BelOYCiQcw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.8.tgz", - "integrity": "sha512-3sur80OT9YdeZwIVgERAysAbwncom7b4bCI2XKLjMfPymTud7e/oY4y+ci1XVp5TfQp/bppn7xLw1n/oSQY3/Q==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.8.tgz", - "integrity": "sha512-WAnPJSDattvS/XtPCTj1tPoTxERjcTpH6HsMr6ujTT+X6rylVe8ggxk8pVxzf5U1wh5sPODpawNicF5ta/9Tmw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.8.tgz", - "integrity": "sha512-ICvZyOplIjmmhjd6mxi+zxSdpPTKFfyPPQMQTK/w+8eNK6WV01AjIztJALDtwNNfFhfZLux0tZLC+U9nSyA5Zg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.8.tgz", - "integrity": "sha512-H4vmI5PYqSvosPaTJuEppU9oz1dq2A7Mr2vyg5TF9Ga+3+MGgBdGzcyBP7qK9MrwFQZlvNyJrvz6GuCaj3OukQ==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.8.tgz", - "integrity": "sha512-z1zMZivxDLHWnyGOctT9JP70h0beY54xDDDJt4VpTX+iwA77IFsE1vCXWmprajJGa+ZYSqkSbRQ4eyLCpCmiCQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.8.tgz", - "integrity": "sha512-1a8suQiFJmZz1khm/rDglOc8lavtzEMRo0v6WhPgxkrjcU0LkHj+TwBrALwoz/OtMExvsqbbMI0ChyelKabSvQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.8.tgz", - "integrity": "sha512-fHZWS2JJxnXt1uYJsDv9+b60WCc2RlvVAy1F76qOLtXRO+H4mjt3Tr6MJ5l7Q78X8KgCFudnTuiQRBhULUyBKQ==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.8.tgz", - "integrity": "sha512-Wy/z0EL5qZYLX66dVnEg9riiwls5IYnziwuju2oUiuxVc+/edvqXa04qNtbrs0Ukatg5HEzqT94Zs7J207dN5Q==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.8.tgz", - "integrity": "sha512-ETaW6245wK23YIEufhMQ3HSeHO7NgsLx8gygBVldRHKhOlD1oNeNy/P67mIh1zPn2Hr2HLieQrt6tWrVwuqrxg==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.8.tgz", - "integrity": "sha512-T2DRQk55SgoleTP+DtPlMrxi/5r9AeFgkhkZ/B0ap99zmxtxdOixOMI570VjdRCs9pE4Wdkz7JYrsPvsl7eESg==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.8.tgz", - "integrity": "sha512-NPxbdmmo3Bk7mbNeHmcCd7R7fptJaczPYBaELk6NcXxy7HLNyWwCyDJ/Xx+/YcNH7Im5dHdx9gZ5xIwyliQCbg==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.8.tgz", - "integrity": "sha512-lytMAVOM3b1gPypL2TRmZ5rnXl7+6IIk8uB3eLsV1JwcizuolblXRrc5ShPrO9ls/b+RTp+E6gbsuLWHWi2zGg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.8.tgz", - "integrity": "sha512-hvWVo2VsXz/8NVt1UhLzxwAfo5sioj92uo0bCfLibB0xlOmimU/DeAEsQILlBQvkhrGjamP0/el5HU76HAitGw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.8.tgz", - "integrity": "sha512-/7Y7u77rdvmGTxR83PgaSvSBJCC2L3Kb1M/+dmSIvRvQPXXCuC97QAwMugBNG0yGcbEGfFBH7ojPzAOxfGNkwQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.8.tgz", - "integrity": "sha512-9Lc4s7Oi98GqFA4HzA/W2JHIYfnXbUYgekUP/Sm4BG9sfLjyv6GKKHKKVs83SMicBF2JwAX6A1PuOLMqpD001w==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.8.tgz", - "integrity": "sha512-rq6WzBGjSzihI9deW3fC2Gqiak68+b7qo5/3kmB6Gvbh/NYPA0sJhrnp7wgV4bNwjqM+R2AApXGxMO7ZoGhIJg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.8.tgz", - "integrity": "sha512-AIAbverbg5jMvJznYiGhrd3sumfwWs8572mIJL5NQjJa06P8KfCPWZQ0NwZbPQnbQi9OWSZhFVSUWjjIrn4hSw==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.8.tgz", - "integrity": "sha512-bfZ0cQ1uZs2PqpulNL5j/3w+GDhP36k1K5c38QdQg+Swy51jFZWWeIkteNsufkQxp986wnqRRsb/bHbY1WQ7TA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@protobufjs/aspromise": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", - "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" - }, - "node_modules/@protobufjs/base64": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", - "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" - }, - "node_modules/@protobufjs/codegen": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", - "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" - }, - "node_modules/@protobufjs/eventemitter": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", - "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" - }, - "node_modules/@protobufjs/fetch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", - "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", - "dependencies": { - "@protobufjs/aspromise": "^1.1.1", - "@protobufjs/inquire": "^1.1.0" - } - }, - "node_modules/@protobufjs/float": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", - "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" - }, - "node_modules/@protobufjs/inquire": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", - "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" - }, - "node_modules/@protobufjs/path": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", - "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" - }, - "node_modules/@protobufjs/pool": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", - "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" - }, - "node_modules/@protobufjs/utf8": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", - "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" - }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.6.1.tgz", - "integrity": "sha512-0WQ0ouLejaUCRsL93GD4uft3rOmB8qoQMU05Kb8CmMtMBe7XUDLAltxVZI1q6byNqEtU7N1ZX1Vw5lIpgulLQA==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.6.1.tgz", - "integrity": "sha512-1TKm25Rn20vr5aTGGZqo6E4mzPicCUD79k17EgTLAsXc1zysyi4xXKACfUbwyANEPAEIxkzwue6JZ+stYzWUTA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.6.1.tgz", - "integrity": "sha512-cEXJQY/ZqMACb+nxzDeX9IPLAg7S94xouJJCNVE5BJM8JUEP4HeTF+ti3cmxWeSJo+5D+o8Tc0UAWUkfENdeyw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.6.1.tgz", - "integrity": "sha512-LoSU9Xu56isrkV2jLldcKspJ7sSXmZWkAxg7sW/RfF7GS4F5/v4EiqKSMCFbZtDu2Nc1gxxFdQdKwkKS4rwxNg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.6.1.tgz", - "integrity": "sha512-EfI3hzYAy5vFNDqpXsNxXcgRDcFHUWSx5nnRSCKwXuQlI5J9dD84g2Usw81n3FLBNsGCegKGwwTVsSKK9cooSQ==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.6.1.tgz", - "integrity": "sha512-9lhc4UZstsegbNLhH0Zu6TqvDfmhGzuCWtcTFXY10VjLLUe4Mr0Ye2L3rrtHaDd/J5+tFMEuo5LTCSCMXWfUKw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.6.1.tgz", - "integrity": "sha512-FfoOK1yP5ksX3wwZ4Zk1NgyGHZyuRhf99j64I5oEmirV8EFT7+OhUZEnP+x17lcP/QHJNWGsoJwrz4PJ9fBEXw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.6.1.tgz", - "integrity": "sha512-DNGZvZDO5YF7jN5fX8ZqmGLjZEXIJRdJEdTFMhiyXqyXubBa0WVLDWSNlQ5JR2PNgDbEV1VQowhVRUh+74D+RA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.6.1.tgz", - "integrity": "sha512-RkJVNVRM+piYy87HrKmhbexCHg3A6Z6MU0W9GHnJwBQNBeyhCJG9KDce4SAMdicQnpURggSvtbGo9xAWOfSvIQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.6.1.tgz", - "integrity": "sha512-v2FVT6xfnnmTe3W9bJXl6r5KwJglMK/iRlkKiIFfO6ysKs0rDgz7Cwwf3tjldxQUrHL9INT/1r4VA0n9L/F1vQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.6.1.tgz", - "integrity": "sha512-YEeOjxRyEjqcWphH9dyLbzgkF8wZSKAKUkldRY6dgNR5oKs2LZazqGB41cWJ4Iqqcy9/zqYgmzBkRoVz3Q9MLw==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.6.1.tgz", - "integrity": "sha512-0zfTlFAIhgz8V2G8STq8toAjsYYA6eci1hnXuyOTUFnymrtJwnS6uGKiv3v5UrPZkBlamLvrLV2iiaeqCKzb0A==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@types/command-line-args": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@types/command-line-args/-/command-line-args-5.2.0.tgz", - "integrity": "sha512-UuKzKpJJ/Ief6ufIaIzr3A/0XnluX7RvFgwkV89Yzvm77wCh1kFaFmqN8XEnGcN62EuHdedQjEMb8mYxFLGPyA==", - "peer": true - }, - "node_modules/@types/command-line-usage": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@types/command-line-usage/-/command-line-usage-5.0.2.tgz", - "integrity": "sha512-n7RlEEJ+4x4TS7ZQddTmNSxP+zziEG0TNsMfiRIxcIVXt71ENJ9ojeXmGO3wPoTdn7pJcU2xc3CJYMktNT6DPg==", - "peer": true - }, - "node_modules/@types/long": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", - "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==" - }, - "node_modules/@types/node": { - "version": "20.3.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.3.0.tgz", - "integrity": "sha512-cumHmIAf6On83X7yP+LrsEyUOf/YlociZelmpRYaGFydoaPdxdt80MAbu6vWerQT2COCp2nPvHdsbD7tHn/YlQ==" - }, - "node_modules/@types/pad-left": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@types/pad-left/-/pad-left-2.1.1.tgz", - "integrity": "sha512-Xd22WCRBydkGSApl5Bw0PhAOHKSVjNL3E3AwzKaps96IMraPqy5BvZIsBVK6JLwdybUzjHnuWVwpDd0JjTfHXA==", - "peer": true - }, - "node_modules/@types/tape": { - "version": "4.13.4", - "resolved": "https://registry.npmjs.org/@types/tape/-/tape-4.13.4.tgz", - "integrity": "sha512-0Mw8/FAMheD2MvyaFYDaAix7X5GfNjl/XI+zvqJdzC6N05BmHKz6Hwn+r7+8PEXDEKrC3V/irC9z7mrl5a130g==", - "dependencies": { - "@types/node": "*", - "@types/through": "*" - } - }, - "node_modules/@types/through": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/@types/through/-/through-0.0.33.tgz", - "integrity": "sha512-HsJ+z3QuETzP3cswwtzt2vEIiHBk/dCcHGhbmG5X3ecnwFD/lPrMpliGXxSCg03L9AhrdwA4Oz/qfspkDW+xGQ==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@xenova/transformers": { - "version": "2.10.1", - "resolved": "https://registry.npmjs.org/@xenova/transformers/-/transformers-2.10.1.tgz", - "integrity": "sha512-vUCU3rKEcuH0dSuJzXuESbUPziqh8FvjLVikUh//5SWGcwfdccIfTUhDsS1obbrUTW3ve0CHeJvHnHbk0QTzEA==", - "dependencies": { - "onnxruntime-web": "1.14.0", - "sharp": "^0.32.0" - }, - "optionalDependencies": { - "onnxruntime-node": "1.14.0" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/apache-arrow": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/apache-arrow/-/apache-arrow-13.0.0.tgz", - "integrity": "sha512-3gvCX0GDawWz6KFNC28p65U+zGh/LZ6ZNKWNu74N6CQlKzxeoWHpi4CgEQsgRSEMuyrIIXi1Ea2syja7dwcHvw==", - "peer": true, - "dependencies": { - "@types/command-line-args": "5.2.0", - "@types/command-line-usage": "5.0.2", - "@types/node": "20.3.0", - "@types/pad-left": "2.1.1", - "command-line-args": "5.2.1", - "command-line-usage": "7.0.1", - "flatbuffers": "23.5.26", - "json-bignum": "^0.0.3", - "pad-left": "^2.1.0", - "tslib": "^2.5.3" - }, - "bin": { - "arrow2csv": "bin/arrow2csv.js" - } - }, - "node_modules/array-back": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", - "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", - "peer": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/b4a": { - "version": "1.6.4", - "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.4.tgz", - "integrity": "sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==" - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "peer": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/chalk-template": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/chalk-template/-/chalk-template-0.4.0.tgz", - "integrity": "sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg==", - "peer": true, - "dependencies": { - "chalk": "^4.1.2" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/chalk-template?sponsor=1" - } - }, - "node_modules/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" - }, - "node_modules/color": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", - "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", - "dependencies": { - "color-convert": "^2.0.1", - "color-string": "^1.9.0" - }, - "engines": { - "node": ">=12.5.0" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/color-string": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", - "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", - "dependencies": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "node_modules/command-line-args": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz", - "integrity": "sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==", - "peer": true, - "dependencies": { - "array-back": "^3.1.0", - "find-replace": "^3.0.0", - "lodash.camelcase": "^4.3.0", - "typical": "^4.0.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/command-line-usage": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-7.0.1.tgz", - "integrity": "sha512-NCyznE//MuTjwi3y84QVUGEOT+P5oto1e1Pk/jFPVdPPfsG03qpTIl3yw6etR+v73d0lXsoojRpvbru2sqePxQ==", - "peer": true, - "dependencies": { - "array-back": "^6.2.2", - "chalk-template": "^0.4.0", - "table-layout": "^3.0.0", - "typical": "^7.1.1" - }, - "engines": { - "node": ">=12.20.0" - } - }, - "node_modules/command-line-usage/node_modules/array-back": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-6.2.2.tgz", - "integrity": "sha512-gUAZ7HPyb4SJczXAMUXMGAvI976JoK3qEx9v1FTmeYuJj0IBiaKttG1ydtGKdkfqWkIkouke7nG8ufGy77+Cvw==", - "peer": true, - "engines": { - "node": ">=12.17" - } - }, - "node_modules/command-line-usage/node_modules/typical": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/typical/-/typical-7.1.1.tgz", - "integrity": "sha512-T+tKVNs6Wu7IWiAce5BgMd7OZfNYUndHwc5MknN+UHOudi7sGZzuHdCadllRuqJ3fPtgFtIH9+lt9qRv6lmpfA==", - "peer": true, - "engines": { - "node": ">=12.17" - } - }, - "node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "engines": { - "node": ">= 10" - } - }, - "node_modules/d3-array": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", - "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", - "dependencies": { - "internmap": "1 - 2" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-color": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", - "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-contour": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz", - "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", - "dependencies": { - "d3-array": "^3.2.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-dispatch": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", - "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-drag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", - "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", - "dependencies": { - "d3-dispatch": "1 - 3", - "d3-selection": "3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-dsv": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", - "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", - "dependencies": { - "commander": "7", - "iconv-lite": "0.6", - "rw": "1" - }, - "bin": { - "csv2json": "bin/dsv2json.js", - "csv2tsv": "bin/dsv2dsv.js", - "dsv2dsv": "bin/dsv2dsv.js", - "dsv2json": "bin/dsv2json.js", - "json2csv": "bin/json2dsv.js", - "json2dsv": "bin/json2dsv.js", - "json2tsv": "bin/json2dsv.js", - "tsv2csv": "bin/dsv2dsv.js", - "tsv2json": "bin/dsv2json.js" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-ease": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", - "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-fetch": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", - "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", - "dependencies": { - "d3-dsv": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-format": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", - "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-geo": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.0.tgz", - "integrity": "sha512-JEo5HxXDdDYXCaWdwLRt79y7giK8SbhZJbFWXqbRTolCHFI5jRqteLzCsq51NKbUoX0PjBVSohxrx+NoOUujYA==", - "dependencies": { - "d3-array": "2.5.0 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-interpolate": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", - "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", - "dependencies": { - "d3-color": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-random": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", - "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-scale": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", - "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", - "dependencies": { - "d3-array": "2.10.0 - 3", - "d3-format": "1 - 3", - "d3-interpolate": "1.2.0 - 3", - "d3-time": "2.1.1 - 3", - "d3-time-format": "2 - 4" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-scale-chromatic": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz", - "integrity": "sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==", - "dependencies": { - "d3-color": "1 - 3", - "d3-interpolate": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-selection": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", - "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-time": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", - "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", - "dependencies": { - "d3-array": "2 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-time-format": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", - "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", - "dependencies": { - "d3-time": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-timer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", - "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-transition": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", - "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", - "dependencies": { - "d3-color": "1 - 3", - "d3-dispatch": "1 - 3", - "d3-ease": "1 - 3", - "d3-interpolate": "1 - 3", - "d3-timer": "1 - 3" - }, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "d3-selection": "2 - 3" - } - }, - "node_modules/d3-zoom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", - "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", - "dependencies": { - "d3-dispatch": "1 - 3", - "d3-drag": "2 - 3", - "d3-interpolate": "1 - 3", - "d3-selection": "2 - 3", - "d3-transition": "2 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "dependencies": { - "mimic-response": "^3.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/deepscatter": { - "version": "2.15.0-RC-1", - "resolved": "git+ssh://git@github.com/nomic-ai/deepscatter.git#ae66a2022f3a110f6b48815ac17610a9e21602d4", - "license": "CC BY-NC-SA 4.0", - "dependencies": { - "d3-array": "^3.2.2", - "d3-color": "^3.1.0", - "d3-contour": "^4.0.2", - "d3-ease": "^3.0.1", - "d3-fetch": "^3.0.1", - "d3-format": "^3.1.0", - "d3-geo": "^3.1.0", - "d3-interpolate": "^3.0.1", - "d3-random": "^3.0.1", - "d3-scale": "^4.0.2", - "d3-scale-chromatic": "^3.0.0", - "d3-selection": "^3.0.0", - "d3-timer": "^3.0.1", - "d3-transition": "^3.0.1", - "d3-zoom": "^3.0.0", - "deepscatter": "^2.14.0", - "glsl-easings": "^1.0.0", - "glsl-fast-gaussian-blur": "^1.0.2", - "glsl-read-float": "^1.1.0", - "lodash.merge": "^4.6.2", - "rbush-3d": "^0.0.4", - "regl": "^2.1.0" - }, - "peerDependencies": { - "apache-arrow": "13.0.0" - } - }, - "node_modules/deepscatter/node_modules/deepscatter": { - "version": "2.14.1", - "resolved": "https://registry.npmjs.org/deepscatter/-/deepscatter-2.14.1.tgz", - "integrity": "sha512-VKg22WR1l2jWpKdpwV1IcFzvkbQrOJHfNV8Q4AalZ144a+wiQsIeqRvheYYA48NXO1wJFvEiMhRwHHkm1HBxjQ==", - "dependencies": { - "d3-array": "^3.2.2", - "d3-color": "^3.1.0", - "d3-contour": "^4.0.2", - "d3-ease": "^3.0.1", - "d3-fetch": "^3.0.1", - "d3-format": "^3.1.0", - "d3-geo": "^3.1.0", - "d3-interpolate": "^3.0.1", - "d3-random": "^3.0.1", - "d3-scale": "^4.0.2", - "d3-scale-chromatic": "^3.0.0", - "d3-selection": "^3.0.0", - "d3-timer": "^3.0.1", - "d3-transition": "^3.0.1", - "d3-zoom": "^3.0.0", - "deepscatter": "^2.14.0", - "glsl-easings": "^1.0.0", - "glsl-fast-gaussian-blur": "^1.0.2", - "glsl-read-float": "^1.1.0", - "lodash.merge": "^4.6.2", - "rbush-3d": "^0.0.4", - "regl": "^2.1.0" - }, - "peerDependencies": { - "apache-arrow": "13.0.0" - } - }, - "node_modules/detect-libc": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", - "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/esbuild": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.8.tgz", - "integrity": "sha512-l7iffQpT2OrZfH2rXIp7/FkmaeZM0vxbxN9KfiCwGYuZqzMg/JdvX26R31Zxn/Pxvsrg3Y9N6XTcnknqDyyv4w==", - "dev": true, - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/android-arm": "0.19.8", - "@esbuild/android-arm64": "0.19.8", - "@esbuild/android-x64": "0.19.8", - "@esbuild/darwin-arm64": "0.19.8", - "@esbuild/darwin-x64": "0.19.8", - "@esbuild/freebsd-arm64": "0.19.8", - "@esbuild/freebsd-x64": "0.19.8", - "@esbuild/linux-arm": "0.19.8", - "@esbuild/linux-arm64": "0.19.8", - "@esbuild/linux-ia32": "0.19.8", - "@esbuild/linux-loong64": "0.19.8", - "@esbuild/linux-mips64el": "0.19.8", - "@esbuild/linux-ppc64": "0.19.8", - "@esbuild/linux-riscv64": "0.19.8", - "@esbuild/linux-s390x": "0.19.8", - "@esbuild/linux-x64": "0.19.8", - "@esbuild/netbsd-x64": "0.19.8", - "@esbuild/openbsd-x64": "0.19.8", - "@esbuild/sunos-x64": "0.19.8", - "@esbuild/win32-arm64": "0.19.8", - "@esbuild/win32-ia32": "0.19.8", - "@esbuild/win32-x64": "0.19.8" - } - }, - "node_modules/expand-template": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", - "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/fast-fifo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", - "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==" - }, - "node_modules/find-replace": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", - "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==", - "peer": true, - "dependencies": { - "array-back": "^3.0.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/flatbuffers": { - "version": "23.5.26", - "resolved": "https://registry.npmjs.org/flatbuffers/-/flatbuffers-23.5.26.tgz", - "integrity": "sha512-vE+SI9vrJDwi1oETtTIFldC/o9GsVKRM+s6EL0nQgxXlYV1Vc4Tk30hj4xGICftInKQKj1F3up2n8UbIVobISQ==", - "peer": true - }, - "node_modules/fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/github-from-package": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", - "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==" - }, - "node_modules/glsl-easings": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/glsl-easings/-/glsl-easings-1.0.0.tgz", - "integrity": "sha512-blfWMqztNRVI4sJNyPlA9uV4T7xIm//Ie6fGGtnQPs3FpCj5YOWt/QIVFRMWpsBQhehRRGoaKG2yDw6tkAlmeA==" - }, - "node_modules/glsl-fast-gaussian-blur": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/glsl-fast-gaussian-blur/-/glsl-fast-gaussian-blur-1.0.2.tgz", - "integrity": "sha512-+jkGGhe+3twjyxnmvP3uxVnAUqLdW0tXvvKLCwM/wD7jV5TMEk1w4ZlPIVRt7hexk9jkFEsWGkr9H+1b/aJYrw==" - }, - "node_modules/glsl-read-float": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/glsl-read-float/-/glsl-read-float-1.1.0.tgz", - "integrity": "sha512-cE0rmtZjheE49V8BMlPU6Y9c7RT7vsrUGXTXhWnN8CTu3xP8+l/IlQMi3+3GJU839g34vrwbIHfhLupQsR1n8Q==" - }, - "node_modules/guid-typescript": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/guid-typescript/-/guid-typescript-1.0.9.tgz", - "integrity": "sha512-Y8T4vYhEfwJOTbouREvG+3XDsjr8E3kIr7uf+JZ0BYloFsttiHU0WfvANVsR7TxNUJa/WpCnw/Ino/p+DeBhBQ==" - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" - }, - "node_modules/internmap": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", - "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", - "engines": { - "node": ">=12" - } - }, - "node_modules/is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" - }, - "node_modules/json-bignum": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/json-bignum/-/json-bignum-0.0.3.tgz", - "integrity": "sha512-2WHyXj3OfHSgNyuzDbSxI1w2jgw5gkWSWhS7Qg4bWXx1nLk3jnbwfUeS0PSba3IzpTUWdHxBieELUzXRjQB2zg==", - "peer": true, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/lodash.assignwith": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.assignwith/-/lodash.assignwith-4.2.0.tgz", - "integrity": "sha512-ZznplvbvtjK2gMvnQ1BR/zqPFZmS6jbK4p+6Up4xcRYA7yMIwxHCfbTcrYxXKzzqLsQ05eJPVznEW3tuwV7k1g==", - "peer": true - }, - "node_modules/lodash.camelcase": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", - "peer": true - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" - }, - "node_modules/long": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", - "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" - }, - "node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/napi-build-utils": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", - "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==" - }, - "node_modules/node-abi": { - "version": "3.52.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.52.0.tgz", - "integrity": "sha512-JJ98b02z16ILv7859irtXn4oUaFWADtvkzy2c0IAatNVX2Mc9Yoh8z6hZInn3QwvMEYhHuQloYi+TTQy67SIdQ==", - "dependencies": { - "semver": "^7.3.5" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/node-addon-api": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz", - "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==" - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onnx-proto": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/onnx-proto/-/onnx-proto-4.0.4.tgz", - "integrity": "sha512-aldMOB3HRoo6q/phyB6QRQxSt895HNNw82BNyZ2CMh4bjeKv7g/c+VpAFtJuEMVfYLMbRx61hbuqnKceLeDcDA==", - "dependencies": { - "protobufjs": "^6.8.8" - } - }, - "node_modules/onnxruntime-common": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/onnxruntime-common/-/onnxruntime-common-1.14.0.tgz", - "integrity": "sha512-3LJpegM2iMNRX2wUmtYfeX/ytfOzNwAWKSq1HbRrKc9+uqG/FsEA0bbKZl1btQeZaXhC26l44NWpNUeXPII7Ew==" - }, - "node_modules/onnxruntime-node": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/onnxruntime-node/-/onnxruntime-node-1.14.0.tgz", - "integrity": "sha512-5ba7TWomIV/9b6NH/1x/8QEeowsb+jBEvFzU6z0T4mNsFwdPqXeFUM7uxC6QeSRkEbWu3qEB0VMjrvzN/0S9+w==", - "optional": true, - "os": [ - "win32", - "darwin", - "linux" - ], - "dependencies": { - "onnxruntime-common": "~1.14.0" - } - }, - "node_modules/onnxruntime-web": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/onnxruntime-web/-/onnxruntime-web-1.14.0.tgz", - "integrity": "sha512-Kcqf43UMfW8mCydVGcX9OMXI2VN17c0p6XvR7IPSZzBf/6lteBzXHvcEVWDPmCKuGombl997HgLqj91F11DzXw==", - "dependencies": { - "flatbuffers": "^1.12.0", - "guid-typescript": "^1.0.9", - "long": "^4.0.0", - "onnx-proto": "^4.0.4", - "onnxruntime-common": "~1.14.0", - "platform": "^1.3.6" - } - }, - "node_modules/onnxruntime-web/node_modules/flatbuffers": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/flatbuffers/-/flatbuffers-1.12.0.tgz", - "integrity": "sha512-c7CZADjRcl6j0PlvFy0ZqXQ67qSEZfrVPynmnL+2zPc+NtMvrF8Y0QceMo7QqnSPc7+uWjUIAbvCQ5WIKlMVdQ==" - }, - "node_modules/pad-left": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/pad-left/-/pad-left-2.1.0.tgz", - "integrity": "sha512-HJxs9K9AztdIQIAIa/OIazRAUW/L6B9hbQDxO4X07roW3eo9XqZc2ur9bn1StH9CnbbI9EgvejHQX7CBpCF1QA==", - "peer": true, - "dependencies": { - "repeat-string": "^1.5.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "node_modules/platform": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.6.tgz", - "integrity": "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==" - }, - "node_modules/postcss": { - "version": "8.4.32", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz", - "integrity": "sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "nanoid": "^3.3.7", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/prebuild-install": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz", - "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==", - "dependencies": { - "detect-libc": "^2.0.0", - "expand-template": "^2.0.3", - "github-from-package": "0.0.0", - "minimist": "^1.2.3", - "mkdirp-classic": "^0.5.3", - "napi-build-utils": "^1.0.1", - "node-abi": "^3.3.0", - "pump": "^3.0.0", - "rc": "^1.2.7", - "simple-get": "^4.0.0", - "tar-fs": "^2.0.0", - "tunnel-agent": "^0.6.0" - }, - "bin": { - "prebuild-install": "bin.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/prebuild-install/node_modules/tar-fs": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", - "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", - "dependencies": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^2.1.4" - } - }, - "node_modules/prebuild-install/node_modules/tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/protobufjs": { - "version": "6.11.4", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.4.tgz", - "integrity": "sha512-5kQWPaJHi1WoCpjTGszzQ32PG2F4+wRY6BmAT4Vfw56Q2FZ4YZzK20xUYQH4YkfehY1e6QSICrJquM6xXZNcrw==", - "hasInstallScript": true, - "dependencies": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", - "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", - "@types/long": "^4.0.1", - "@types/node": ">=13.7.0", - "long": "^4.0.0" - }, - "bin": { - "pbjs": "bin/pbjs", - "pbts": "bin/pbts" - } - }, - "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/queue-tick": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", - "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==" - }, - "node_modules/quickselect": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-1.1.1.tgz", - "integrity": "sha512-qN0Gqdw4c4KGPsBOQafj6yj/PA6c/L63f6CaZ/DCF/xF4Esu3jVmKLUDYxghFx8Kb/O7y9tI7x2RjTSXwdK1iQ==" - }, - "node_modules/rbush-3d": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/rbush-3d/-/rbush-3d-0.0.4.tgz", - "integrity": "sha512-s02wJ4Oawn3xdfIUN1hO+dhIcI3zL4vFs+yTlFn/U1jpHh3zaIcaOhLVL6SxyhB4vR/wad77HVJ9dG/ZyLZ6tQ==", - "dependencies": { - "@types/node": "^10.5.1", - "@types/tape": "^4.2.32", - "quickselect": "^1.0.0" - } - }, - "node_modules/rbush-3d/node_modules/@types/node": { - "version": "10.17.60", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", - "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==" - }, - "node_modules/rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "bin": { - "rc": "cli.js" - } - }, - "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/regl": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/regl/-/regl-2.1.0.tgz", - "integrity": "sha512-oWUce/aVoEvW5l2V0LK7O5KJMzUSKeiOwFuJehzpSFd43dO5spP9r+sSUfhKtsky4u6MCqWJaRL+abzExynfTg==" - }, - "node_modules/repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", - "peer": true, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/rollup": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.6.1.tgz", - "integrity": "sha512-jZHaZotEHQaHLgKr8JnQiDT1rmatjgKlMekyksz+yk9jt/8z9quNjnKNRoaM0wd9DC2QKXjmWWuDYtM3jfF8pQ==", - "dev": true, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.6.1", - "@rollup/rollup-android-arm64": "4.6.1", - "@rollup/rollup-darwin-arm64": "4.6.1", - "@rollup/rollup-darwin-x64": "4.6.1", - "@rollup/rollup-linux-arm-gnueabihf": "4.6.1", - "@rollup/rollup-linux-arm64-gnu": "4.6.1", - "@rollup/rollup-linux-arm64-musl": "4.6.1", - "@rollup/rollup-linux-x64-gnu": "4.6.1", - "@rollup/rollup-linux-x64-musl": "4.6.1", - "@rollup/rollup-win32-arm64-msvc": "4.6.1", - "@rollup/rollup-win32-ia32-msvc": "4.6.1", - "@rollup/rollup-win32-x64-msvc": "4.6.1", - "fsevents": "~2.3.2" - } - }, - "node_modules/rw": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", - "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==" - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/sharp": { - "version": "0.32.6", - "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.32.6.tgz", - "integrity": "sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==", - "hasInstallScript": true, - "dependencies": { - "color": "^4.2.3", - "detect-libc": "^2.0.2", - "node-addon-api": "^6.1.0", - "prebuild-install": "^7.1.1", - "semver": "^7.5.4", - "simple-get": "^4.0.1", - "tar-fs": "^3.0.4", - "tunnel-agent": "^0.6.0" - }, - "engines": { - "node": ">=14.15.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/simple-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/simple-get": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", - "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "decompress-response": "^6.0.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } - }, - "node_modules/simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", - "dependencies": { - "is-arrayish": "^0.3.1" - } - }, - "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/stream-read-all": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/stream-read-all/-/stream-read-all-3.0.1.tgz", - "integrity": "sha512-EWZT9XOceBPlVJRrYcykW8jyRSZYbkb/0ZK36uLEmoWVO5gxBOnntNTseNzfREsqxqdfEGQrD8SXQ3QWbBmq8A==", - "peer": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/streamx": { - "version": "2.15.5", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.15.5.tgz", - "integrity": "sha512-9thPGMkKC2GctCzyCUjME3yR03x2xNo0GPKGkRw2UMYN+gqWa9uqpyNWhmsNCutU5zHmkUum0LsCRQTXUgUCAg==", - "dependencies": { - "fast-fifo": "^1.1.0", - "queue-tick": "^1.0.1" - } - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/table-layout": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-3.0.2.tgz", - "integrity": "sha512-rpyNZYRw+/C+dYkcQ3Pr+rLxW4CfHpXjPDnG7lYhdRoUcZTUt+KEsX+94RGp/aVp/MQU35JCITv2T/beY4m+hw==", - "peer": true, - "dependencies": { - "@75lb/deep-merge": "^1.1.1", - "array-back": "^6.2.2", - "command-line-args": "^5.2.1", - "command-line-usage": "^7.0.0", - "stream-read-all": "^3.0.1", - "typical": "^7.1.1", - "wordwrapjs": "^5.1.0" - }, - "bin": { - "table-layout": "bin/cli.js" - }, - "engines": { - "node": ">=12.17" - } - }, - "node_modules/table-layout/node_modules/array-back": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-6.2.2.tgz", - "integrity": "sha512-gUAZ7HPyb4SJczXAMUXMGAvI976JoK3qEx9v1FTmeYuJj0IBiaKttG1ydtGKdkfqWkIkouke7nG8ufGy77+Cvw==", - "peer": true, - "engines": { - "node": ">=12.17" - } - }, - "node_modules/table-layout/node_modules/typical": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/typical/-/typical-7.1.1.tgz", - "integrity": "sha512-T+tKVNs6Wu7IWiAce5BgMd7OZfNYUndHwc5MknN+UHOudi7sGZzuHdCadllRuqJ3fPtgFtIH9+lt9qRv6lmpfA==", - "peer": true, - "engines": { - "node": ">=12.17" - } - }, - "node_modules/tar-fs": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.4.tgz", - "integrity": "sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==", - "dependencies": { - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^3.1.5" - } - }, - "node_modules/tar-stream": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.6.tgz", - "integrity": "sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==", - "dependencies": { - "b4a": "^1.6.4", - "fast-fifo": "^1.2.0", - "streamx": "^2.15.0" - } - }, - "node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "peer": true - }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/typical": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", - "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "node_modules/vite": { - "version": "5.0.13", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.0.13.tgz", - "integrity": "sha512-/9ovhv2M2dGTuA+dY93B9trfyWMDRQw2jdVBhHNP6wr0oF34wG2i/N55801iZIpgUpnHDm4F/FabGQLyc+eOgg==", - "dev": true, - "dependencies": { - "esbuild": "^0.19.3", - "postcss": "^8.4.32", - "rollup": "^4.2.0" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^18.0.0 || >=20.0.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - }, - "peerDependencies": { - "@types/node": "^18.0.0 || >=20.0.0", - "less": "*", - "lightningcss": "^1.21.0", - "sass": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.4.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - } - } - }, - "node_modules/wordwrapjs": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-5.1.0.tgz", - "integrity": "sha512-JNjcULU2e4KJwUNv6CHgI46UvDGitb6dGryHajXTDiLgg1/RiGoPSDw4kZfYnwGtEXf2ZMeIewDQgFGzkCB2Sg==", - "peer": true, - "engines": { - "node": ">=12.17" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - } - } -} diff --git a/examples/semantic-audio-search/package.json b/examples/semantic-audio-search/package.json deleted file mode 100644 index 972d964d3..000000000 --- a/examples/semantic-audio-search/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "semantic-audio-search", - "private": true, - "version": "0.0.0", - "type": "module", - "scripts": { - "dev": "vite", - "build": "vite build", - "preview": "vite preview" - }, - "devDependencies": { - "vite": "^5.0.13" - }, - "dependencies": { - "@xenova/transformers": "^2.10.1", - "deepscatter": "github:nomic-ai/deepscatter" - } -} diff --git a/examples/semantic-audio-search/style.css b/examples/semantic-audio-search/style.css deleted file mode 100644 index 7d6686332..000000000 --- a/examples/semantic-audio-search/style.css +++ /dev/null @@ -1,109 +0,0 @@ -@import url('https://fonts.googleapis.com/css2?family=Montserrat&display=swap'); - -* { - box-sizing: border-box; - padding: 0; - margin: 0; - font-family: 'Montserrat', sans-serif; -} - -html { - background: radial-gradient(ellipse at center, #1b2735 0%, #090a0f 100%); - height: 100%; - width: 100%; -} - -body { - overflow: hidden; - display: flex; - justify-content: center; -} - -#deepscatter { - position: absolute; - left: 0; - top: 0; -} - -#container-for-webgl-canvas { - width: 100vw; - display: flex; - justify-content: center; -} - -.tooltip { - width: 400px; - margin-top: -10px; -} - -.tooltip>audio { - margin-top: 10px; - width: 100%; -} - -#search { - background: url('https://upload.wikimedia.org/wikipedia/commons/0/0b/Search_Icon.svg') no-repeat center right; - background-size: 50px 50px; - width: 56px; - border: none; - cursor: pointer; -} - -#header { - padding: 20px 0 50px 0; - color: white; - text-align: center; - background: linear-gradient(to bottom, rgba(0, 0, 0, 1), rgba(0, 0, 0, 0)); - width: 100vw; -} - -#title { - font-size: 30px; - font-weight: 600; -} - -#header, -#search-bar { - position: absolute; - justify-content: center; - z-index: 1; -} - -#search-bar { - padding: 0 20px; - max-width: 90vw; - overflow: hidden; - border-radius: 20px 20px 0px 0px; - bottom: 0; - height: 60px; - width: 500px; - background-color: white; - display: flex; -} - -#overlay { - position: absolute; - width: 100vw; - height: 100vh; - z-index: 999999999; - background-color: rgba(0, 0, 0, 0.8); - pointer-events: none; - display: none; - - color: white; - justify-content: center; - align-items: center; - font-size: 20px; -} - -#query { - width: 100%; - height: 100%; - font-size: 1.5em; - border: none; - outline: none; -} - -a { - color: white; -} \ No newline at end of file diff --git a/examples/semantic-audio-search/utils.js b/examples/semantic-audio-search/utils.js deleted file mode 100644 index 1aa6729c9..000000000 --- a/examples/semantic-audio-search/utils.js +++ /dev/null @@ -1,40 +0,0 @@ - -// Adapted from https://github.com/xenova/transformers.js/blob/c367f9d68b809bbbf81049c808bf6d219d761d23/src/utils/hub.js#L330 -export async function getCachedFile(url) { - let cache; - try { - cache = await caches.open('semantic-audio-search'); - const cachedResponse = await cache.match(url); - if (cachedResponse) { - return await cachedResponse.arrayBuffer(); - } - } catch (e) { - console.warn('Unable to open cache', e); - } - - // No cache, or cache failed to open. Fetch the file. - const response = await fetch(url); - const buffer = await response.arrayBuffer(); - - if (cache) { - try { - // NOTE: We use `new Response(buffer, ...)` instead of `response.clone()` to handle LFS files - await cache.put(url, new Response(buffer, { - headers: response.headers, - })); - } catch (e) { - console.warn('Unable to cache file', e); - } - } - - return buffer; -} - -export async function getCachedJSON(url) { - let buffer = await getCachedFile(url); - - let decoder = new TextDecoder('utf-8'); - let jsonData = decoder.decode(buffer); - - return JSON.parse(jsonData); -} diff --git a/examples/semantic-audio-search/worker.js b/examples/semantic-audio-search/worker.js deleted file mode 100644 index f095f8104..000000000 --- a/examples/semantic-audio-search/worker.js +++ /dev/null @@ -1,94 +0,0 @@ - -import { env, AutoTokenizer, ClapTextModelWithProjection } from '@xenova/transformers'; -import { getCachedFile } from './utils'; - -// Skip local model check -env.allowLocalModels = false; - -class ApplicationSingleton { - static model_id = 'Xenova/larger_clap_music_and_speech'; - static BASE_URL = 'https://huggingface.co/datasets/Xenova/MusicBenchEmbedded/resolve/main/'; - - static tokenizer = null; - static text_model = null; - static embeddings = null; - - static async getInstance(progress_callback = null) { - this.tokenizer ??= AutoTokenizer.from_pretrained(this.model_id, { progress_callback }); - this.text_model ??= ClapTextModelWithProjection.from_pretrained(this.model_id, { - progress_callback, - quantized: true, // TODO allow user to select quantized or not - }); - this.embeddings ??= new Promise( - (resolve, reject) => { - getCachedFile(this.BASE_URL + 'audio-embeddings_52768-512_32bit.bin') - .then((buffer) => { - resolve(new Float32Array(buffer)); - }) - .catch(reject); - } - ); - - return Promise.all([this.tokenizer, this.text_model, this.embeddings]); - } -} - - -function cosineSimilarity(query_embeds, database_embeds) { - const EMBED_DIM = 512; - - const numDB = database_embeds.length / EMBED_DIM; - const similarityScores = new Array(numDB); - - for (let i = 0; i < numDB; ++i) { - const startOffset = i * EMBED_DIM; - const dbVector = database_embeds.slice(startOffset, startOffset + EMBED_DIM); - - let dotProduct = 0; - let normEmbeds = 0; - let normDB = 0; - - for (let j = 0; j < EMBED_DIM; ++j) { - const embedValue = query_embeds[j]; - const dbValue = dbVector[j]; - - dotProduct += embedValue * dbValue; - normEmbeds += embedValue * embedValue; - normDB += dbValue * dbValue; - } - - similarityScores[i] = dotProduct / (Math.sqrt(normEmbeds) * Math.sqrt(normDB)); - } - - return similarityScores; -} - -// Listen for messages from the main thread -self.addEventListener('message', async (event) => { - // Get the tokenizer, model, and embeddings. When called for the first time, - // this will load the files and cache them for future use. - const [tokenizer, text_model, embeddings] = await ApplicationSingleton.getInstance(self.postMessage); - - // Send the output back to the main thread - self.postMessage({ status: 'ready' }); - - // Run tokenization - const text_inputs = tokenizer(event.data.query, { padding: true, truncation: true }); - - // Compute embeddings - const { text_embeds } = await text_model(text_inputs); - - // Compute similarity scores - const scores = cosineSimilarity(text_embeds.data, embeddings); - - const output = scores - .map((score, i) => [score, i]) // Save index - .sort((a, b) => b[0] - a[0]) // Sort by scores - .slice(0, 100); // Get top 100 results - - // Send the output back to the main thread - self.postMessage({ - status: 'complete', - output: output, - }); -}); From 0bf2fecfaaf1d8e16581070fb1f44bc5394dd0a9 Mon Sep 17 00:00:00 2001 From: Joshua Lochner Date: Wed, 15 Jan 2025 13:08:42 +0000 Subject: [PATCH 23/23] Move webgpu embedding benchmark demo --- .../webgpu-embedding-benchmark/.gitignore | 24 -- .../webgpu-embedding-benchmark/index.html | 64 ---- examples/webgpu-embedding-benchmark/main.js | 305 ------------------ .../webgpu-embedding-benchmark/package.json | 18 -- examples/webgpu-embedding-benchmark/style.css | 87 ----- .../webgpu-embedding-benchmark/vite.config.js | 6 - 6 files changed, 504 deletions(-) delete mode 100644 examples/webgpu-embedding-benchmark/.gitignore delete mode 100644 examples/webgpu-embedding-benchmark/index.html delete mode 100644 examples/webgpu-embedding-benchmark/main.js delete mode 100644 examples/webgpu-embedding-benchmark/package.json delete mode 100644 examples/webgpu-embedding-benchmark/style.css delete mode 100644 examples/webgpu-embedding-benchmark/vite.config.js diff --git a/examples/webgpu-embedding-benchmark/.gitignore b/examples/webgpu-embedding-benchmark/.gitignore deleted file mode 100644 index a547bf36d..000000000 --- a/examples/webgpu-embedding-benchmark/.gitignore +++ /dev/null @@ -1,24 +0,0 @@ -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -pnpm-debug.log* -lerna-debug.log* - -node_modules -dist -dist-ssr -*.local - -# Editor directories and files -.vscode/* -!.vscode/extensions.json -.idea -.DS_Store -*.suo -*.ntvs* -*.njsproj -*.sln -*.sw? diff --git a/examples/webgpu-embedding-benchmark/index.html b/examples/webgpu-embedding-benchmark/index.html deleted file mode 100644 index 8b4a9d361..000000000 --- a/examples/webgpu-embedding-benchmark/index.html +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - - Transformers.js | WebGPU Benchmark - - - -

    - 🤗 Transformers.js WebGPU Benchmark -

    -

    - This benchmark measures the execution time of BERT-based embedding models - using the WASM and WebGPU execution providers across different batch sizes. -

    -
    - -
    -
    - - -
    - -
    - Options -
    - WASM (int8)
    - WASM (fp16)
    - WASM (fp32)
    - - WebGPU (fp16)
    - WebGPU (fp32)
    -
    -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    -
    - Log scale (x)
    - Log scale (y)
    -
    -
    - - - - \ No newline at end of file diff --git a/examples/webgpu-embedding-benchmark/main.js b/examples/webgpu-embedding-benchmark/main.js deleted file mode 100644 index bdf731395..000000000 --- a/examples/webgpu-embedding-benchmark/main.js +++ /dev/null @@ -1,305 +0,0 @@ -import './style.css'; -import { env, AutoModel, ones } from '@xenova/transformers'; -import Chart from 'chart.js/auto'; - -// Throw an error if WebGPU is not supported -if (!navigator.gpu) { - const err = 'WebGPU is not supported by this browser.'; - alert(err) - throw Error(err); -} - -env.backends.onnx.wasm.wasmPaths = 'https://cdn.jsdelivr.net/npm/onnxruntime-web@1.17.1/dist/'; -env.backends.onnx.wasm.numThreads = 1; - -// Reference the elements that we will need -const ctx = document.getElementById('chart'); -const batchSizes = document.getElementById('batch-sizes'); -const xscale = document.getElementById('x-scale'); -const yscale = document.getElementById('y-scale'); -const sequenceLength = document.getElementById('sequence-length'); -const modelID = document.getElementById('model-id'); -const status = document.getElementById('status'); -const start = document.getElementById('start'); -const stop = document.getElementById('stop'); -const tests = document.getElementsByClassName('tests'); - -// Benchmark settings -const NUM_WARMUP_STEPS = 3; -const MODEL_CACHE = new Map(); - -// Chart configuration -const initChart = () => { - const config = { - type: 'line', - data: { - labels: [], - datasets: [], - }, - options: { - responsive: true, - maintainAspectRatio: false, - plugins: { - legend: { - position: 'top', - }, - }, - scales: { - x: { - title: { - display: true, - text: 'Batch size', - }, - min: 1, - }, - y: { - title: { - display: true, - text: 'Time (ms)', - }, - } - } - }, - }; - const chart = new Chart(ctx, config); - return chart; -} -let chart = initChart(); -const toggleScale = (axis, enabled) => { - chart.options.scales[axis].type = enabled ? 'logarithmic' : 'linear'; - chart.update(); -} - -const getSelectedTests = () => { - return [...tests].filter(x => x.checked); -} - -const updateDatasets = () => { - chart.data.datasets = getSelectedTests().map(test => { - const color = test.getAttribute('data-color'); - return { - label: test.value, - data: [], - borderColor: `rgba(${color}, 1)`, - backgroundColor: `rgba(${color}, 0.5)`, - } - }) - chart.update(); -} -updateDatasets(); -[...tests].forEach(test => test.addEventListener('change', updateDatasets)); - -xscale.addEventListener('change', () => toggleScale('x', xscale.checked)); -yscale.addEventListener('change', () => toggleScale('y', yscale.checked)); - -const generateDummyInputs = (batch_size, seqLength) => { - const inputs = ones([batch_size, seqLength]); - - const model_inputs = { - input_ids: inputs, - attention_mask: inputs, - } - return model_inputs; -} - -let adapterInfo; -let gpuHasFp16 = false; -try { - // Shouldn't fail since the WebGPU model has loaded successfully - const adapter = await navigator.gpu.requestAdapter(); - adapterInfo = await adapter.requestAdapterInfo(); - gpuHasFp16 = adapter.features.has('shader-f16') -} catch (err) { - adapterInfo = {}; -} -if (!gpuHasFp16) { - const element = document.querySelector('.tests[data-device="webgpu"][data-dtype="fp16"]'); - element.setAttribute('unsupported', true); - element.disabled = true; - element.title = 'This device does not support fp16 on WebGPU'; -} - -status.textContent = 'Ready'; - -let interrupted = false; -start.addEventListener('click', async () => { - const validTests = [...tests].filter(test => !test.getAttribute('unsupported')) - // Update UI - start.disabled = true; - stop.disabled = false; - batchSizes.disabled = true; - sequenceLength.disabled = true; - modelID.disabled = true; - validTests.forEach(test => test.disabled = true); - interrupted = false; - - // Get parameters - const model_id = modelID.value; - const batch_sizes = batchSizes.value.split(',').map(x => parseInt(x)).filter(x => x); - const seqLength = parseInt(sequenceLength.value); - const selectedTests = getSelectedTests().map(x => ({ - label: x.value, - dtype: x.getAttribute('data-dtype'), - device: x.getAttribute('data-device'), - })); - - // Reset - chart.destroy(); - chart = initChart(); - updateDatasets(); - - // NOTE: Models must be loaded sequentially (otherwise it will fail due to multiple calls to initWasm()) - const testsToRun = new Map(); - for (const test of selectedTests) { - const { label, dtype, device, quantized } = test; - - const key = `${model_id}///${label}`; - - const cached = MODEL_CACHE.get(key); - if (cached) { - testsToRun.set(label, cached); - continue; - } - status.textContent = 'Loading model(s)...'; - - try { - const model = await AutoModel.from_pretrained(model_id, { - quantized, - device, - dtype, - }); - MODEL_CACHE.set(key, model); - testsToRun.set(label, model); - } catch (err) { - status.textContent = err.message; - alert(err.message) - throw err; - } - } - - status.textContent = 'Warming up...'; - - // Warm up: This is important for the WebGPU execution provider, which compiles the shaders on first load - for (let i = 0; i < NUM_WARMUP_STEPS; ++i) { - const model_inputs = generateDummyInputs(1, seqLength); - for (const [label, model] of testsToRun) { - await model(model_inputs); - } - } - - status.textContent = 'Running benchmark...'; - - for (const batch_size of batch_sizes) { - if (interrupted) break; - - const model_inputs = generateDummyInputs(batch_size, seqLength); - - const times = [] - - for (const [label, model] of testsToRun) { - const start = performance.now(); - await model(model_inputs); - const end = performance.now(); - times.push(end - start); - } - - chart.data.labels.push(batch_size); - for (let i = 0; i < times.length; ++i) { - chart.data.datasets[i].data.push(times[i]); - } - chart.update(); - } - - // Calculate max speedup: - if (chart.data.labels.length === 0) return; - - const testNames = [...testsToRun.keys()]; - const table = generateResultsTable(model_id, testNames, chart.data, seqLength); - - - // Calculate slowest and fastest times - let minMaxTimes = [Infinity, 0]; - let minMaxIndices = [0, 0]; - for (let i = 0; i < chart.data.datasets.length; i++) { - const lastTime = chart.data.datasets[i].data.at(-1); - if (lastTime < minMaxTimes[0]) { - minMaxTimes[0] = lastTime; - minMaxIndices[0] = i; - } - if (lastTime > minMaxTimes[1]) { - minMaxTimes[1] = lastTime; - minMaxIndices[1] = i; - } - } - - const speedup = minMaxTimes[1] / minMaxTimes[0]; - const roundedSpeedup = speedup.toFixed(2); - const params = new URLSearchParams({ - title: `⚡ WebGPU Benchmark Results (${roundedSpeedup}x speedup)`, - description: table.outerHTML, - }); - - const paramsStr = params.toString(); - status.innerHTML = `⚡ Done! ${testNames.at(minMaxIndices[0])} is ${roundedSpeedup}x faster than ${testNames.at(minMaxIndices[1])}! ⚡
    Share results`; - start.disabled = false; - stop.disabled = true; - batchSizes.disabled = false; - sequenceLength.disabled = false; - modelID.disabled = false; - validTests.forEach(test => test.disabled = false); -}); - -start.disabled = false; - -stop.addEventListener('click', () => { - status.textContent = 'Stopping...'; - interrupted = true; - stop.disabled = true; -}); - -function generateResultsTable(model_id, testNames, data, sequence_length) { - - const datasets = data.datasets.map(d => d.data); - const batch_sizes = data.labels; - - const container = document.createElement('div'); - - const table = document.createElement('table'); - const thead = table.createTHead(); - const tbody = table.createTBody(); - - // Add header row - const headerRow = thead.insertRow(); - headerRow.insertCell().textContent = 'Batch Size'; - testNames.forEach(model => { - headerRow.insertCell().textContent = model; - }); - - // Add data rows - batch_sizes.forEach((batchSize, rowIndex) => { - const row = tbody.insertRow(); - row.insertCell().textContent = batchSize; - datasets.forEach(dataset => { - row.insertCell().textContent = dataset[rowIndex].toFixed(2); - }); - }); - - container.appendChild(table); - - const createBulletPoint = (text) => { - const li = document.createElement('li'); - li.textContent = text; - return li; - } - - // Add other information - const info = document.createElement('ul'); - info.appendChild(createBulletPoint(`Model: ${model_id}`)); - info.appendChild(createBulletPoint(`Tests run: ${testNames.join(', ')}`)); - info.appendChild(createBulletPoint(`Sequence length: ${sequence_length}`)); - info.appendChild(createBulletPoint(`Browser: ${navigator.userAgent}`)); - info.appendChild(createBulletPoint(`GPU: vendor=${adapterInfo.vendor}, architecture=${adapterInfo.architecture}, device=${adapterInfo.device}, description=${adapterInfo.description}`)); - container.appendChild(info); - - return container; -} diff --git a/examples/webgpu-embedding-benchmark/package.json b/examples/webgpu-embedding-benchmark/package.json deleted file mode 100644 index d90288d7a..000000000 --- a/examples/webgpu-embedding-benchmark/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "webgpu-embedding-benchmark", - "private": true, - "version": "0.0.0", - "type": "module", - "scripts": { - "dev": "vite", - "build": "vite build", - "preview": "vite preview" - }, - "devDependencies": { - "vite": "^5.0.12" - }, - "dependencies": { - "@xenova/transformers": "^3.0.0", - "chart.js": "^4.4.2" - } -} diff --git a/examples/webgpu-embedding-benchmark/style.css b/examples/webgpu-embedding-benchmark/style.css deleted file mode 100644 index 9253d75e3..000000000 --- a/examples/webgpu-embedding-benchmark/style.css +++ /dev/null @@ -1,87 +0,0 @@ -* { - box-sizing: border-box; - padding: 0; - margin: 0; - font-family: sans-serif; -} - -html, -body { - height: 100%; -} - -body { - padding: 16px 32px; - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; -} - -h1 { - text-align: center; -} - -#status { - min-height: 16px; - margin: 8px 0; - text-align: center; -} - -button { - transition: all .25s; - background: rgba(40, 44, 52, 0.05); - border: 1px solid transparent; - border-radius: 6px; - color: #3080d0; - text-decoration: none !important; - display: inline-block; - font-size: 14px; - font-weight: 500; - padding: 8px 16px; - cursor: pointer; - -webkit-user-select: none; - -moz-user-select: none; - user-select: none; -} - -button:disabled { - background: rgba(40, 44, 52, 0.1); - color: #a0a0a0; - cursor: not-allowed; -} - -button:hover { - background: rgba(40, 44, 52, 0.1); -} - -p { - text-align: center; - font-size: 12px; - max-width: 600px; - padding: 8px; -} - -#chart-container { - position: relative; - height: 60vh; - width: min(90vw, 800px); - padding-right: 50px; - margin-bottom: 10px; -} - -details { - position: fixed; - background-color: white; - right: 0; - top: 0; - padding: 16px; -} - -summary { - text-align: right; -} - -hr { - margin: 8px 0; -} diff --git a/examples/webgpu-embedding-benchmark/vite.config.js b/examples/webgpu-embedding-benchmark/vite.config.js deleted file mode 100644 index 6c32f52df..000000000 --- a/examples/webgpu-embedding-benchmark/vite.config.js +++ /dev/null @@ -1,6 +0,0 @@ -import { defineConfig } from 'vite'; -export default defineConfig({ - build: { - target: 'esnext' - } -});
    - {( -
    -
    - -

    Whisper WebGPU

    -

    Real-time in-browser speech recognition

    -
    - -
    - {status === null && (<> -

    -
    - You are about to load
    whisper-base, - a 73 million parameter speech recognition model that is optimized for inference on the web. Once downloaded, the model (~200 MB) will be cached and reused when you revisit the page.
    -
    - Everything runs directly in your browser using 🤗 Transformers.js and ONNX Runtime Web, - meaning no data is sent to a server. You can even disconnect from the internet after the model has loaded! -

    - - - )} - -
    - - {status === 'ready' &&
    -

    {text}

    - {tps && {tps.toFixed(2)} tok/s} -
    } - -
    - {status === 'ready' &&
    - { - recorderRef.current?.stop(); - setLanguage(e); - recorderRef.current?.start(); - }} /> - -
    - } - {status === 'loading' && ( -
    -

    {loadingMessage}

    - {progressItems.map(({ file, progress, total }, i) => ( - - ))} -
    - )} -
    -
    - )} -

$U5C>0W)hQnb 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