diff --git a/.github/workflows/tests-and-checks.yml b/.github/workflows/tests-and-checks.yml index 2bccd699..20aaf8e2 100644 --- a/.github/workflows/tests-and-checks.yml +++ b/.github/workflows/tests-and-checks.yml @@ -3,7 +3,8 @@ name: Tests and Checks on: [push] jobs: - typecheck: + build-test-check: + name: Install deps, build required package, typecheck, lint and test runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 @@ -12,29 +13,13 @@ jobs: version: 9 - name: Install dependencies run: pnpm install --frozen-lockfile + - name: Build + run: pnpm build - name: Generate Prisma Types run: cd apps/server && pnpm prisma generate - name: Typecheck run: pnpm ts:check - lint: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: pnpm/action-setup@v3 - with: - version: 9 - - name: Install dependencies - run: pnpm install --frozen-lockfile - name: Linting run: pnpm lint - test: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: pnpm/action-setup@v3 - with: - version: 9 - - name: Install dependencies - run: pnpm install --frozen-lockfile - name: Test run: pnpm test diff --git a/apps/events/package.json b/apps/events/package.json index bb50c5cd..0737cad9 100644 --- a/apps/events/package.json +++ b/apps/events/package.json @@ -32,7 +32,7 @@ "react-dom": "^18.3.1", "tailwind-merge": "^2.5.3", "tailwindcss-animate": "^1.0.7", - "uuid": "^10.0.0", + "uuid": "^11.0.2", "vite-plugin-node-polyfills": "^0.22.0" }, "devDependencies": { @@ -53,9 +53,7 @@ "tailwindcss": "^3.4.13", "typescript": "^5.5.3", "typescript-eslint": "^8.8.0", - "vite": "^5.4.8", "vite-plugin-top-level-await": "^1.4.4", - "vite-plugin-wasm": "^3.3.0", - "vitest": "^2.1.2" + "vite-plugin-wasm": "^3.3.0" } } diff --git a/package.json b/package.json index cbc58d75..ccb23994 100644 --- a/package.json +++ b/package.json @@ -1,14 +1,19 @@ { "name": "graph-framework-monorepo", "private": true, + "type": "module", "workspaces": [ "apps/*", "packages/*" ], "devDependencies": { - "typescript": "^5.6.2" + "escape-string-regexp": "^5.0.0", + "typescript": "^5.6.3", + "vite": "^5.4.10", + "vitest": "^2.1.4" }, "scripts": { + "build": "pnpm --filter graph-framework-utils build", "ts:check": "pnpm -r ts:check", "test": "pnpm -r test", "lint": "pnpm -r lint" diff --git a/packages/graph-framework-identity/package.json b/packages/graph-framework-identity/package.json index c89937d0..2d0a38e7 100644 --- a/packages/graph-framework-identity/package.json +++ b/packages/graph-framework-identity/package.json @@ -17,12 +17,10 @@ "effect": "^3.10.12" }, "devDependencies": { - "effect": "^3.10.12", - "vite": "^5.4.8", - "vitest": "^2.1.1" + "effect": "^3.10.12" }, "dependencies": { - "uuid": "^10.0.0", + "uuid": "^11.0.2", "graph-framework-utils": "workspace:*" } } diff --git a/packages/graph-framework-schema/package.json b/packages/graph-framework-schema/package.json index ce75adde..2cfde47b 100644 --- a/packages/graph-framework-schema/package.json +++ b/packages/graph-framework-schema/package.json @@ -30,9 +30,7 @@ "@types/react": "^18.3.7", "@types/uuid": "^10.0.0", "@vitejs/plugin-react": "^4.3.2", - "jsdom": "^25.0.1", - "vite": "^5.4.8", - "vitest": "^2.1.1" + "jsdom": "^25.0.1" }, "dependencies": { "fast-deep-equal": "^3.1.3", diff --git a/packages/graph-framework-space-events/package.json b/packages/graph-framework-space-events/package.json index b69c1d47..e8748b90 100644 --- a/packages/graph-framework-space-events/package.json +++ b/packages/graph-framework-space-events/package.json @@ -17,12 +17,10 @@ "effect": "^3.10.12" }, "devDependencies": { - "effect": "^3.10.12", - "vite": "^5.4.8", - "vitest": "^2.1.1" + "effect": "^3.10.12" }, "dependencies": { - "uuid": "^10.0.0", + "uuid": "^11.0.2", "graph-framework-utils": "workspace:*" } } diff --git a/packages/graph-framework-space-events/src/create-space.ts b/packages/graph-framework-space-events/src/create-space.ts index 318fa5f1..68fea193 100644 --- a/packages/graph-framework-space-events/src/create-space.ts +++ b/packages/graph-framework-space-events/src/create-space.ts @@ -1,5 +1,5 @@ import { generateId } from "graph-framework-utils"; -import { Author, SpaceEvent } from "./types.js"; +import type { Author, SpaceEvent } from "./types.js"; type Params = { author: Author; diff --git a/packages/graph-framework-utils/README.md b/packages/graph-framework-utils/README.md new file mode 100644 index 00000000..b9eff409 --- /dev/null +++ b/packages/graph-framework-utils/README.md @@ -0,0 +1,45 @@ +# Graph Framework Utils + +Provides common utilities for the Graph Framework. + +_All utilities must be runnable on: Browser, NodeJS server, ReactNative._ + +## API + +- `generateId()` - generates a base58 encoded ID from a generated v4 UUID. + +```ts +import { generateId } from "graph-framework-utils"; + +const id = generateId(); +console.log(id); // Gw9uTVTnJdhtczyuzBkL3X +``` + +### Base58 utils + +- `encodeBase58` - encodes a given string (like the hyphen-stripped UUID) to base 58 + +```ts +import { v4 } from "uuid"; +import { encodeBase58 } from "graph-framework-utils/base58"; + +const uuid = v4(); // 92539817-7989-4083-ab80-e9c2b2b66669 +const stripped = uuid.replaceAll(/-/g, ""); // 9253981779894083ab80e9c2b2b66669 +const encoded = encodeBase58(dashesRemoved); +console.log(encoded); // K51CbDqxW35osbjPo5ZF77 +``` + +- `decodeBase58ToUUID` - decodes the given base58 encoded UUID back to its original UUID value + +```ts +import { v4 } from "uuid"; +import { decodeBase58ToUUID, encodeBase58 } from "graph-framework-utils/base58"; + +const uuid = v4(); // 92539817-7989-4083-ab80-e9c2b2b66669 +const stripped = uuid.replaceAll(/-/g, ""); // 9253981779894083ab80e9c2b2b66669 +const encoded = encodeBase58(dashesRemoved); // K51CbDqxW35osbjPo5ZF77 +const decoded = decodeBase58ToUUID(encoded); + +expect(encoded).toHaveLength(22); +expect(decoded).toEqual(uuid); +``` diff --git a/packages/graph-framework-utils/package.json b/packages/graph-framework-utils/package.json index 79f80967..699916ab 100644 --- a/packages/graph-framework-utils/package.json +++ b/packages/graph-framework-utils/package.json @@ -1,25 +1,42 @@ { "name": "graph-framework-utils", "version": "0.0.1", - "description": "", + "description": "Provides common utilities for the Graph Framework", "type": "module", + "main": "./dist/index.mjs", + "module": "./dist/index.mjs", + "types": "./dist/index.d.ts", + "exports": { + ".": { + "types": "./dist/index.d.ts", + "require": "./dist/index.cjs", + "import": "./dist/index.mjs", + "default": "./dist/index.mjs" + }, + "./base58": { + "types": "./dist/base58.d.ts", + "require": "./dist/base58.cjs", + "import": "./dist/base58.mjs", + "default": "./dist/base58.mjs" + } + }, + "files": [ + "dist", + "package.json" + ], + "sideEffects": false, "scripts": { + "build": "vite build", "test": "vitest run --typecheck", "ts:check": "tsc --noEmit", "lint": "echo 'No linting configured'" }, - "exports": { - ".": { - "default": "./src/index.js" - } - }, "devDependencies": { - "@types/react": "^18.3.7", "@types/uuid": "^10.0.0", - "vite": "^5.4.8", - "vitest": "^2.1.1" + "uuid": "^11.0.2", + "vite-plugin-dts": "^4.3.0" }, - "dependencies": { - "uuid": "^10.0.0" + "peerDependencies": { + "uuid": "^11" } } diff --git a/packages/graph-framework-utils/src/base58.test.ts b/packages/graph-framework-utils/src/base58.test.ts new file mode 100644 index 00000000..1f26a110 --- /dev/null +++ b/packages/graph-framework-utils/src/base58.test.ts @@ -0,0 +1,18 @@ +import { describe, expect, it } from "vitest"; +import { v4 } from "uuid"; + +import { decodeBase58ToUUID, encodeBase58 } from "./base58.js"; + +describe("base58", () => { + it("should be able to encoded a UUID to base58 and then decode it back to its original UUID", () => { + const expected = v4(); + const given = expected.replaceAll(/-/g, ""); + + const encoded = encodeBase58(given); + expect(encoded).toHaveLength(22); + + const decoded = decodeBase58ToUUID(encoded); + expect(decoded).toHaveLength(expected.length); + expect(decoded).toEqual(expected); + }); +}); diff --git a/packages/graph-framework-utils/src/base58.ts b/packages/graph-framework-utils/src/base58.ts new file mode 100644 index 00000000..0fe957ad --- /dev/null +++ b/packages/graph-framework-utils/src/base58.ts @@ -0,0 +1,76 @@ +const BASE58_ALLOWED_CHARS = + "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"; + +export type Base58 = string; + +/** + * Base58 encodes the given string value. + * + * @example + * ```ts + * import { v4 as uuidv4 } from "uuid"; + * + * const uuid = uuidv4(); // 92539817-7989-4083-ab80-e9c2b2b66669 + * const dashesRemoved = uuid.replaceAll(/-/g, ""); // 9253981779894083ab80e9c2b2b66669 + * const encoded = encodeBase58(dashesRemoved) + * console.log(encoded) // K51CbDqxW35osbjPo5ZF77 + * ``` + * + * @param val string to encode as base58 + * @returns the base58 encoded string + */ +export function encodeBase58(val: string): Base58 { + const hex = BigInt(`0x${val}`); + let remainder = hex; + const result: string[] = []; // Use an array to store encoded characters + + while (remainder > 0n) { + const mod = remainder % 58n; + result.push(BASE58_ALLOWED_CHARS[Number(mod)]!); + remainder = remainder / 58n; + } + + // Reverse and join the array to get the final Base58 encoded string + return result.reverse().join(""); +} + +export type UUID = string; + +/** + * Expand the base58 encoded UUID back to its original UUID format + * + * @example + * ```ts + * const uuid = 92539817-7989-4083-ab80-e9c2b2b66669; + * const encoded = encodeBase58(dashesRemoved); // K51CbDqxW35osbjPo5ZF77 + * const decoded = decodeBase58ToUUID(encoded); // 92539817-7989-4083-ab80-e9c2b2b66669 + * + * expect(decoded).toEqual(uuid); + * ``` + * + * @param encoded base58 encoded UUID + * @returns the expanded UUID from the base58 encoded value + */ +export function decodeBase58ToUUID(encoded: string): UUID { + let decoded = 0n; + + for (let char of encoded) { + const index = BASE58_ALLOWED_CHARS.indexOf(char); + if (index === -1) { + throw new Error("Invalid Base58 character"); + } + decoded = decoded * 58n + BigInt(index); + } + + // Convert the bigint to a hex string, padded to 32 characters + let hexStr = decoded.toString(16); + hexStr = hexStr.padStart(32, "0"); // Ensure it is 32 characters + + return [ + hexStr.slice(0, 8), + hexStr.slice(8, 12), + hexStr.slice(12, 16), + hexStr.slice(16, 20), + hexStr.slice(20), + ].join("-"); +} diff --git a/packages/graph-framework-utils/src/generateId.test.ts b/packages/graph-framework-utils/src/generateId.test.ts index 9f464cff..2f2b0741 100644 --- a/packages/graph-framework-utils/src/generateId.test.ts +++ b/packages/graph-framework-utils/src/generateId.test.ts @@ -1,10 +1,9 @@ import { expect, it } from "vitest"; -import { generateId } from "./generateId.js"; -it("should generate an id", () => { - expect(generateId()).toBeTypeOf("string"); -}); +import { generateId } from "./generateId.js"; -it.skip("should have a length of 22 characters", () => { - expect(generateId()).toHaveLength(22); +it("should generate a base58 encoded uuid of 22 char length", () => { + const id = generateId(); + expect(id).toBeTypeOf("string"); + expect(id).toHaveLength(22); }); diff --git a/packages/graph-framework-utils/src/generateId.ts b/packages/graph-framework-utils/src/generateId.ts index 4d9525fd..9f126f57 100644 --- a/packages/graph-framework-utils/src/generateId.ts +++ b/packages/graph-framework-utils/src/generateId.ts @@ -1,5 +1,24 @@ import { v4 as uuidv4 } from "uuid"; -export const generateId = () => { - return uuidv4(); -}; +import { encodeBase58 } from "./base58.js"; + +/** + * Generate a v4 UUID. + * Remove the dashes to make it a 32bit value. + * Base58 encode it and return. + * + * @example + * ``` + * import { generateId } from 'graph-framework-utils' + * + * const id = generateId() + * console.log(id) // Gw9uTVTnJdhtczyuzBkL3X + * ``` + * + * @returns base58 encoded v4 UUID + */ +export function generateId() { + const uuid = uuidv4(); + const stripped = uuid.replaceAll(/-/g, ""); + return encodeBase58(stripped); +} diff --git a/packages/graph-framework-utils/src/index.ts b/packages/graph-framework-utils/src/index.ts index 841ce577..0bc65c4b 100644 --- a/packages/graph-framework-utils/src/index.ts +++ b/packages/graph-framework-utils/src/index.ts @@ -1 +1,2 @@ +export * from "./base58.js"; export * from "./generateId.js"; diff --git a/packages/graph-framework-utils/tsconfig.build.json b/packages/graph-framework-utils/tsconfig.build.json new file mode 100644 index 00000000..c20fae86 --- /dev/null +++ b/packages/graph-framework-utils/tsconfig.build.json @@ -0,0 +1,29 @@ +{ + "compilerOptions": { + "strict": true, + "exactOptionalPropertyTypes": true, + "noUncheckedIndexedAccess": true, + "esModuleInterop": true, + "sourceMap": true, + "declarationMap": true, + "declaration": true, + "strictNullChecks": true, + "incremental": true, + "composite": true, + "allowJs": true, + "skipLibCheck": true, + "strictFunctionTypes": true, + "forceConsistentCasingInFileNames": true, + "noFallthroughCasesInSwitch": true, + "noErrorTruncation": true, + "isolatedModules": true, + "target": "ESNext", + "module": "NodeNext", + "moduleResolution": "NodeNext", + "outDir": "./dist", + "rootDir": "./src", + "jsx": "react-jsx" + }, + "include": ["./src"], + "exclude": ["node_modules", "src/**/*.test.ts", "src/**/*.spec.ts", "dist"] +} diff --git a/packages/graph-framework-utils/tsconfig.json b/packages/graph-framework-utils/tsconfig.json index ce5d7bdb..23760c30 100644 --- a/packages/graph-framework-utils/tsconfig.json +++ b/packages/graph-framework-utils/tsconfig.json @@ -1,27 +1,10 @@ { + "extends": "./tsconfig.build.json", "compilerOptions": { - "strict": true, - "exactOptionalPropertyTypes": true, - "noUncheckedIndexedAccess": true, - "esModuleInterop": true, - "sourceMap": true, - "declarationMap": true, - "declaration": true, - "strictNullChecks": true, - "incremental": true, - "composite": true, - "allowJs": true, - "skipLibCheck": true, - "forceConsistentCasingInFileNames": true, - "noFallthroughCasesInSwitch": true, - "noErrorTruncation": true, - "isolatedModules": true, - "target": "ESNext", - "module": "NodeNext", - "moduleResolution": "NodeNext", - "outDir": "./dist", - "rootDir": "./src", - "jsx": "react-jsx" + "baseUrl": ".", + "rootDir": ".", + "noEmit": true }, - "include": ["./src"] + "include": ["**/*", "vite.config.mts"], + "exclude": ["**/node_modules", "**/dist"] } diff --git a/packages/graph-framework-utils/vite.config.js b/packages/graph-framework-utils/vite.config.js deleted file mode 100644 index 290663c3..00000000 --- a/packages/graph-framework-utils/vite.config.js +++ /dev/null @@ -1,4 +0,0 @@ -import { defineConfig } from "vite"; - -// https://vitejs.dev/config/ -export default defineConfig({}); diff --git a/packages/graph-framework-utils/vite.config.mts b/packages/graph-framework-utils/vite.config.mts new file mode 100644 index 00000000..b31ce7d7 --- /dev/null +++ b/packages/graph-framework-utils/vite.config.mts @@ -0,0 +1,24 @@ +import { defineConfig } from "vite"; +import dts from "vite-plugin-dts"; + +import { vitePluginExternalizeDependencies } from "./vitePluginExternalizeDependencies.js"; + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [ + dts({ tsconfigPath: "./tsconfig.build.json", insertTypesEntry: true }), + vitePluginExternalizeDependencies(), + ], + build: { + lib: { + entry: { + index: "./src/index.ts", + base58: "./src/base58.ts", + }, + formats: ["es", "cjs"], + fileName(format, entryName) { + return `${entryName}${format === "es" ? ".mjs" : ".cjs"}`; + }, + }, + }, +}); diff --git a/packages/graph-framework-utils/vitePluginExternalizeDependencies.ts b/packages/graph-framework-utils/vitePluginExternalizeDependencies.ts new file mode 100644 index 00000000..36ba3330 --- /dev/null +++ b/packages/graph-framework-utils/vitePluginExternalizeDependencies.ts @@ -0,0 +1,59 @@ +import escapeStringRegexp from "escape-string-regexp"; +import fs from "node:fs/promises"; +import path from "node:path"; +import type { Plugin } from "vite"; + +/** + * Vite plugin to automatically externalize all `dependencies` and `peerDependencies` of the package. + * Note that `devDependencies` are not externalized, since they shouldn't even be present in a consumer's dependency tree. + * If any bit of a dev dependency makes it into the final bundle, it will be inlined (but it really shouldn't happen). + */ +export function vitePluginExternalizeDependencies(): Plugin { + return { + name: "vite-plugin-externalize-dependencies", + async config(config, { command }) { + // Only run for the `build` command + if (command !== "build") return; + + const packageJsonPath = path.join( + config.root ?? process.cwd(), + "package.json" + ); + try { + await fs.access(packageJsonPath); + } catch { + console.error(`package.json not found at ${packageJsonPath}`); + return; + } + + let packageJson: { + dependencies?: Record; + peerDependencies?: Record; + } = {}; + try { + packageJson = JSON.parse(await fs.readFile(packageJsonPath, "utf-8")); + } catch (error) { + console.error( + `Failed to read or parse package.json at ${packageJsonPath}`, + error + ); + return; + } + + config.build = config.build ?? {}; + config.build.rollupOptions = { + ...config.build.rollupOptions, + external: [ + ...Object.keys(packageJson.dependencies ?? {}), + ...Object.keys(packageJson.peerDependencies ?? {}), + ].map( + // Match the exact dependency name and any path under it (except CSS files) + (dependency) => + new RegExp(`^${escapeStringRegexp(dependency)}(/(?!.*\\.css$).*)?$`) + ), + }; + + return config; + }, + }; +} diff --git a/packages/graph-framework/package.json b/packages/graph-framework/package.json index ce4857ed..002d016e 100644 --- a/packages/graph-framework/package.json +++ b/packages/graph-framework/package.json @@ -28,9 +28,7 @@ "@types/react": "^18.3.7", "@types/uuid": "^10.0.0", "@vitejs/plugin-react": "^4.3.2", - "jsdom": "^25.0.1", - "vite": "^5.4.8", - "vitest": "^2.1.1" + "jsdom": "^25.0.1" }, "dependencies": { "graph-framework-utils": "workspace:*", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 904ee4ec..14b8758b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,9 +8,18 @@ importers: .: devDependencies: + escape-string-regexp: + specifier: ^5.0.0 + version: 5.0.0 typescript: - specifier: ^5.6.2 + specifier: ^5.6.3 version: 5.6.3 + vite: + specifier: ^5.4.10 + version: 5.4.10(@types/node@22.9.0) + vitest: + specifier: ^2.1.4 + version: 2.1.4(@types/node@22.9.0)(jsdom@25.0.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)) apps/events: dependencies: @@ -75,8 +84,8 @@ importers: specifier: ^1.0.7 version: 1.0.7(tailwindcss@3.4.14(ts-node@10.9.2(@swc/core@1.7.26(@swc/helpers@0.5.13))(@types/node@22.9.0)(typescript@5.6.3))) uuid: - specifier: ^10.0.0 - version: 10.0.0 + specifier: ^11.0.2 + version: 11.0.2 vite-plugin-node-polyfills: specifier: ^0.22.0 version: 0.22.0(rollup@4.21.3)(vite@5.4.10(@types/node@22.9.0)) @@ -132,18 +141,12 @@ importers: typescript-eslint: specifier: ^8.8.0 version: 8.13.0(eslint@9.14.0(jiti@1.21.6))(typescript@5.6.3) - vite: - specifier: ^5.4.8 - version: 5.4.10(@types/node@22.9.0) vite-plugin-top-level-await: specifier: ^1.4.4 version: 1.4.4(@swc/helpers@0.5.13)(rollup@4.21.3)(vite@5.4.10(@types/node@22.9.0)) vite-plugin-wasm: specifier: ^3.3.0 version: 3.3.0(vite@5.4.10(@types/node@22.9.0)) - vitest: - specifier: ^2.1.2 - version: 2.1.4(@types/node@22.9.0)(jsdom@25.0.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)) apps/server: dependencies: @@ -242,12 +245,6 @@ importers: jsdom: specifier: ^25.0.1 version: 25.0.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) - vite: - specifier: ^5.4.8 - version: 5.4.10(@types/node@22.9.0) - vitest: - specifier: ^2.1.1 - version: 2.1.4(@types/node@22.9.0)(jsdom@25.0.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)) packages/graph-framework-identity: dependencies: @@ -255,18 +252,12 @@ importers: specifier: workspace:* version: link:../graph-framework-utils uuid: - specifier: ^10.0.0 - version: 10.0.0 + specifier: ^11.0.2 + version: 11.0.2 devDependencies: effect: specifier: ^3.10.12 version: 3.10.12 - vite: - specifier: ^5.4.8 - version: 5.4.10(@types/node@22.9.0) - vitest: - specifier: ^2.1.1 - version: 2.1.4(@types/node@22.9.0)(jsdom@25.0.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)) packages/graph-framework-schema: dependencies: @@ -310,12 +301,6 @@ importers: jsdom: specifier: ^25.0.1 version: 25.0.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) - vite: - specifier: ^5.4.8 - version: 5.4.10(@types/node@22.9.0) - vitest: - specifier: ^2.1.1 - version: 2.1.4(@types/node@22.9.0)(jsdom@25.0.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)) packages/graph-framework-space-events: dependencies: @@ -323,37 +308,24 @@ importers: specifier: workspace:* version: link:../graph-framework-utils uuid: - specifier: ^10.0.0 - version: 10.0.0 + specifier: ^11.0.2 + version: 11.0.2 devDependencies: effect: specifier: ^3.10.12 version: 3.10.12 - vite: - specifier: ^5.4.8 - version: 5.4.10(@types/node@22.9.0) - vitest: - specifier: ^2.1.1 - version: 2.1.4(@types/node@22.9.0)(jsdom@25.0.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)) packages/graph-framework-utils: - dependencies: - uuid: - specifier: ^10.0.0 - version: 10.0.0 devDependencies: - '@types/react': - specifier: ^18.3.7 - version: 18.3.12 '@types/uuid': specifier: ^10.0.0 version: 10.0.0 - vite: - specifier: ^5.4.8 - version: 5.4.10(@types/node@22.9.0) - vitest: - specifier: ^2.1.1 - version: 2.1.4(@types/node@22.9.0)(jsdom@25.0.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + uuid: + specifier: ^11.0.2 + version: 11.0.2 + vite-plugin-dts: + specifier: ^4.3.0 + version: 4.3.0(@types/node@22.9.0)(rollup@4.21.3)(typescript@5.6.3)(vite@5.4.10(@types/node@22.9.0)) packages: @@ -1161,6 +1133,19 @@ packages: resolution: {integrity: sha512-yfmE79bRQtnMzarnKfX7AEJBwFTxvTyw3nBQlu/5rmGXrjAeAMltoGxO62TFurxrQAFMNa/fEjIHNvungZp0+g==} engines: {node: '>=14.0.0'} + '@microsoft/api-extractor-model@7.29.8': + resolution: {integrity: sha512-t3Z/xcO6TRbMcnKGVMs4uMzv/gd5j0NhMiJIGjD4cJMeFJ1Hf8wnLSx37vxlRlL0GWlGJhnFgxvnaL6JlS+73g==} + + '@microsoft/api-extractor@7.47.11': + resolution: {integrity: sha512-lrudfbPub5wzBhymfFtgZKuBvXxoSIAdrvS2UbHjoMT2TjIEddq6Z13pcve7A03BAouw0x8sW8G4txdgfiSwpQ==} + hasBin: true + + '@microsoft/tsdoc-config@0.17.0': + resolution: {integrity: sha512-v/EYRXnCAIHxOHW+Plb6OWuUoMotxTN0GLatnpOb1xq0KuTNw/WI3pamJx/UbsoJP5k9MCw1QxvvhPcF9pH3Zg==} + + '@microsoft/tsdoc@0.15.0': + resolution: {integrity: sha512-HZpPoABogPvjeJOdzCOSJsXeL/SMCBgBZMVC3X3d7YYp2gf31MfxhUoYUNwf1ERPJOnQc0wkFn9trqI6ZEdZuA==} + '@motionone/animation@10.18.0': resolution: {integrity: sha512-9z2p5GFGCm0gBsZbi8rVMOAJCtw1WqBTIPw3ozk06gDvZInBPIsQcHgYogEJ4yuHJ+akuW8g1SEIOpTOvYs8hw==} @@ -1573,6 +1558,28 @@ packages: cpu: [x64] os: [win32] + '@rushstack/node-core-library@5.9.0': + resolution: {integrity: sha512-MMsshEWkTbXqxqFxD4gcIUWQOCeBChlGczdZbHfqmNZQFLHB3yWxDFSMHFUdu2/OB9NUk7Awn5qRL+rws4HQNg==} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true + + '@rushstack/rig-package@0.5.3': + resolution: {integrity: sha512-olzSSjYrvCNxUFZowevC3uz8gvKr3WTpHQ7BkpjtRpA3wK+T0ybep/SRUMfr195gBzJm5gaXw0ZMgjIyHqJUow==} + + '@rushstack/terminal@0.14.2': + resolution: {integrity: sha512-2fC1wqu1VCExKC0/L+0noVcFQEXEnoBOtCIex1TOjBzEDWcw8KzJjjj7aTP6mLxepG0XIyn9OufeFb6SFsa+sg==} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true + + '@rushstack/ts-command-line@4.23.0': + resolution: {integrity: sha512-jYREBtsxduPV6ptNq8jOKp9+yx0ld1Tb/Tkdnlj8gTjazl1sF3DwX2VbluyYrNd0meWIL0bNeer7WDf5tKFjaQ==} + '@scure/base@1.1.9': resolution: {integrity: sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==} @@ -1867,6 +1874,9 @@ packages: '@tsconfig/node16@1.0.4': resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + '@types/argparse@1.0.38': + resolution: {integrity: sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==} + '@types/aria-query@5.0.4': resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} @@ -2064,6 +2074,35 @@ packages: '@vitest/utils@2.1.4': resolution: {integrity: sha512-MXDnZn0Awl2S86PSNIim5PWXgIAx8CIkzu35mBdSApUip6RFOGXBCf3YFyeEu8n1IHk4bWD46DeYFu9mQlFIRg==} + '@volar/language-core@2.4.9': + resolution: {integrity: sha512-t++GIrUeQnKCieZdY9e+Uar2VmTqOE4Z9KcEcdSHKmKZPuqpbbWow1YKe1i3HpU2s1JqLRVM8y/n87WKXyxJAg==} + + '@volar/source-map@2.4.9': + resolution: {integrity: sha512-UGE+WgJwk64OcfBwBOBKIzmF+uNx4dC5GzOvaVsHbTBp/IVqeTVsGiO5CwBAt6l3vVXYbMuddG2DU8FEnBRxTg==} + + '@volar/typescript@2.4.9': + resolution: {integrity: sha512-Zmh3Bq8CFD6OANKYsi4vs/l7togwfjFH0kgrT12uAsDff2AJQjbEUKTVUnxmHbnbH2B9ja7Lb6Mu/Wj9wBuJlg==} + + '@vue/compiler-core@3.5.12': + resolution: {integrity: sha512-ISyBTRMmMYagUxhcpyEH0hpXRd/KqDU4ymofPgl2XAkY9ZhQ+h0ovEZJIiPop13UmR/54oA2cgMDjgroRelaEw==} + + '@vue/compiler-dom@3.5.12': + resolution: {integrity: sha512-9G6PbJ03uwxLHKQ3P42cMTi85lDRvGLB2rSGOiQqtXELat6uI4n8cNz9yjfVHRPIu+MsK6TE418Giruvgptckg==} + + '@vue/compiler-vue2@2.7.16': + resolution: {integrity: sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==} + + '@vue/language-core@2.1.6': + resolution: {integrity: sha512-MW569cSky9R/ooKMh6xa2g1D0AtRKbL56k83dzus/bx//RDJk24RHWkMzbAlXjMdDNyxAaagKPRquBIxkxlCkg==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@vue/shared@3.5.12': + resolution: {integrity: sha512-L2RPSAwUFbgZH20etwrXyVyCBu9OxRSi8T/38QsvnkJyvq2LufW2lDCOzm7t/U9C1mkhJGWYfCuFBCmIuNivrg==} + '@wallet-standard/app@1.0.1': resolution: {integrity: sha512-LnLYq2Vy2guTZ8GQKKSXQK3+FRGPil75XEdkZqE6fiLixJhZJoJa5hT7lXxwe0ykVTt9LEThdTbOpT7KadS26Q==} engines: {node: '>=16'} @@ -2283,9 +2322,31 @@ packages: resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==} engines: {node: '>= 8.0.0'} + ajv-draft-04@1.0.0: + resolution: {integrity: sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==} + peerDependencies: + ajv: ^8.5.0 + peerDependenciesMeta: + ajv: + optional: true + + ajv-formats@3.0.1: + resolution: {integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==} + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + ajv@8.12.0: + resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} + + ajv@8.13.0: + resolution: {integrity: sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==} + ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} @@ -2323,6 +2384,9 @@ packages: arg@5.0.2: resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} @@ -2606,6 +2670,12 @@ packages: resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} engines: {node: '>= 6'} + compare-versions@6.1.1: + resolution: {integrity: sha512-4hm4VPpIecmlg59CHXnRDnqGplJFrbLG4aFEl5vl6cK1u76ws3LLvX7ikFnTDl5vo39sjWD6AaDPYodJp/NNHg==} + + computeds@0.0.1: + resolution: {integrity: sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==} + concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} @@ -2728,6 +2798,9 @@ packages: dateformat@4.6.3: resolution: {integrity: sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==} + de-indent@1.0.2: + resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} + debug@2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} peerDependencies: @@ -2973,6 +3046,10 @@ packages: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} + escape-string-regexp@5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} + eslint-plugin-react-hooks@5.1.0-rc-fb9a90fa48-20240614: resolution: {integrity: sha512-xsiRwaDNF5wWNC4ZHLut+x/YcAxksUd9Rizt7LaEn3bV8VyYRpXnRJQlLOfYaVy9esk4DFP4zPPnoNVjq5Gc0w==} engines: {node: '>=10'} @@ -3205,6 +3282,10 @@ packages: resolution: {integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==} engines: {node: '>= 0.8'} + fs-extra@7.0.1: + resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} + engines: {node: '>=6 <7 || >=8'} + fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} @@ -3267,6 +3348,9 @@ packages: gopd@1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} @@ -3311,6 +3395,10 @@ packages: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} + he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + help-me@5.0.0: resolution: {integrity: sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg==} @@ -3378,6 +3466,10 @@ packages: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} engines: {node: '>=6'} + import-lazy@4.0.0: + resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} + engines: {node: '>=8'} + imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} @@ -3515,6 +3607,9 @@ packages: resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} hasBin: true + jju@1.4.0: + resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} + jose@4.15.9: resolution: {integrity: sha512-1vUQX+IdDMVPj4k8kOxgUqlcK518yluMuGZwqlr44FS1ppZB/5GWh4rZG89erpOBOJjU/OBsnCVFfapsRz6nEA==} @@ -3561,6 +3656,9 @@ packages: json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} @@ -3572,6 +3670,9 @@ packages: engines: {node: '>=6'} hasBin: true + jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + jsonparse@1.3.1: resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} engines: {'0': node >= 0.2.0} @@ -3586,6 +3687,9 @@ packages: keyvaluestorage-interface@1.0.0: resolution: {integrity: sha512-8t6Q3TclQ4uZynJY9IGr2+SsIGwK9JHcO6ootkHCGA0CrQCRy+VkouYNO2xicET6b9al7QKzpebNow+gkpCL8g==} + kolorist@1.8.0: + resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} + levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} @@ -3617,6 +3721,10 @@ packages: lit@2.8.0: resolution: {integrity: sha512-4Sc3OFX9QHOJaHbmTMk28SYgVxLN3ePDjg7hofEft2zWlehFL3LiAuapWc4U/kYwMYJSh2hTCPZ6/LIC7ii0MA==} + local-pkg@0.5.0: + resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} + engines: {node: '>=14'} + locate-path@5.0.0: resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} engines: {node: '>=8'} @@ -3653,6 +3761,10 @@ packages: lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + lucide-react@0.441.0: resolution: {integrity: sha512-0vfExYtvSDhkC2lqg0zYVW1Uu9GsI4knuV9GP9by5z0Xhc4Zi5RejTxfz9LsjRmCyWVzHCJvxGKZWcRyvQCWVg==} peerDependencies: @@ -3743,6 +3855,9 @@ packages: minimalistic-crypto-utils@1.0.1: resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} + minimatch@3.0.8: + resolution: {integrity: sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==} + minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} @@ -3784,6 +3899,9 @@ packages: ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + muggle-string@0.4.1: + resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==} + multiformats@9.9.0: resolution: {integrity: sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==} @@ -4305,6 +4423,10 @@ packages: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + require-main-filename@2.0.0: resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} @@ -4380,6 +4502,11 @@ packages: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true + semver@7.5.4: + resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} + engines: {node: '>=10'} + hasBin: true + semver@7.6.3: resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} engines: {node: '>=10'} @@ -4449,6 +4576,10 @@ packages: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + split-on-first@1.1.0: resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==} engines: {node: '>=6'} @@ -4457,6 +4588,9 @@ packages: resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} engines: {node: '>= 10.x'} + sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} @@ -4480,6 +4614,10 @@ packages: resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==} engines: {node: '>=4'} + string-argv@0.3.2: + resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} + engines: {node: '>=0.6.19'} + string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} @@ -4552,6 +4690,10 @@ packages: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} @@ -4742,6 +4884,11 @@ packages: typescript: optional: true + typescript@5.4.2: + resolution: {integrity: sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==} + engines: {node: '>=14.17'} + hasBin: true + typescript@5.6.3: resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} engines: {node: '>=14.17'} @@ -4773,6 +4920,10 @@ packages: unenv@1.10.0: resolution: {integrity: sha512-wY5bskBQFL9n3Eca5XnhH6KbUo/tfvkwm9OpcdCvLaeA7piBNbavbOKJySEwQ1V0RH6HvNlSAFRTpvTqgKRQXQ==} + universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + unpipe@1.0.0: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} @@ -4887,6 +5038,10 @@ packages: resolution: {integrity: sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==} hasBin: true + uuid@11.0.2: + resolution: {integrity: sha512-14FfcOJmqdjbBPdDjFQyk/SdT4NySW4eM0zcG+HqbHP5jzuH56xO3J1DGhgs/cEMCfwYi3HQI1gnTO62iaG+tQ==} + hasBin: true + uuid@8.3.2: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} hasBin: true @@ -4935,6 +5090,16 @@ packages: engines: {node: ^18.0.0 || >=20.0.0} hasBin: true + vite-plugin-dts@4.3.0: + resolution: {integrity: sha512-LkBJh9IbLwL6/rxh0C1/bOurDrIEmRE7joC+jFdOEEciAFPbpEKOLSAr5nNh5R7CJ45cMbksTrFfy52szzC5eA==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + typescript: '*' + vite: '*' + peerDependenciesMeta: + vite: + optional: true + vite-plugin-node-polyfills@0.22.0: resolution: {integrity: sha512-F+G3LjiGbG8QpbH9bZ//GSBr9i1InSTkaulfUHFa9jkLqVGORFBoqc2A/Yu5Mmh1kNAbiAeKeK+6aaQUf3x0JA==} peerDependencies: @@ -5009,6 +5174,9 @@ packages: vm-browserify@1.1.2: resolution: {integrity: sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==} + vscode-uri@3.0.8: + resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==} + w3c-xmlserializer@5.0.0: resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} engines: {node: '>=18'} @@ -5221,6 +5389,9 @@ packages: yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + yaml@2.5.1: resolution: {integrity: sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==} engines: {node: '>= 14'} @@ -6184,6 +6355,41 @@ snapshots: transitivePeerDependencies: - supports-color + '@microsoft/api-extractor-model@7.29.8(@types/node@22.9.0)': + dependencies: + '@microsoft/tsdoc': 0.15.0 + '@microsoft/tsdoc-config': 0.17.0 + '@rushstack/node-core-library': 5.9.0(@types/node@22.9.0) + transitivePeerDependencies: + - '@types/node' + + '@microsoft/api-extractor@7.47.11(@types/node@22.9.0)': + dependencies: + '@microsoft/api-extractor-model': 7.29.8(@types/node@22.9.0) + '@microsoft/tsdoc': 0.15.0 + '@microsoft/tsdoc-config': 0.17.0 + '@rushstack/node-core-library': 5.9.0(@types/node@22.9.0) + '@rushstack/rig-package': 0.5.3 + '@rushstack/terminal': 0.14.2(@types/node@22.9.0) + '@rushstack/ts-command-line': 4.23.0(@types/node@22.9.0) + lodash: 4.17.21 + minimatch: 3.0.8 + resolve: 1.22.8 + semver: 7.5.4 + source-map: 0.6.1 + typescript: 5.4.2 + transitivePeerDependencies: + - '@types/node' + + '@microsoft/tsdoc-config@0.17.0': + dependencies: + '@microsoft/tsdoc': 0.15.0 + ajv: 8.12.0 + jju: 1.4.0 + resolve: 1.22.8 + + '@microsoft/tsdoc@0.15.0': {} + '@motionone/animation@10.18.0': dependencies: '@motionone/easing': 10.18.0 @@ -6613,6 +6819,40 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.21.3': optional: true + '@rushstack/node-core-library@5.9.0(@types/node@22.9.0)': + dependencies: + ajv: 8.13.0 + ajv-draft-04: 1.0.0(ajv@8.13.0) + ajv-formats: 3.0.1(ajv@8.13.0) + fs-extra: 7.0.1 + import-lazy: 4.0.0 + jju: 1.4.0 + resolve: 1.22.8 + semver: 7.5.4 + optionalDependencies: + '@types/node': 22.9.0 + + '@rushstack/rig-package@0.5.3': + dependencies: + resolve: 1.22.8 + strip-json-comments: 3.1.1 + + '@rushstack/terminal@0.14.2(@types/node@22.9.0)': + dependencies: + '@rushstack/node-core-library': 5.9.0(@types/node@22.9.0) + supports-color: 8.1.1 + optionalDependencies: + '@types/node': 22.9.0 + + '@rushstack/ts-command-line@4.23.0(@types/node@22.9.0)': + dependencies: + '@rushstack/terminal': 0.14.2(@types/node@22.9.0) + '@types/argparse': 1.0.38 + argparse: 1.0.10 + string-argv: 0.3.2 + transitivePeerDependencies: + - '@types/node' + '@scure/base@1.1.9': {} '@scure/bip32@1.3.2': @@ -6972,6 +7212,8 @@ snapshots: '@tsconfig/node16@1.0.4': {} + '@types/argparse@1.0.38': {} + '@types/aria-query@5.0.4': {} '@types/babel__core@7.20.5': @@ -7232,6 +7474,51 @@ snapshots: loupe: 3.1.2 tinyrainbow: 1.2.0 + '@volar/language-core@2.4.9': + dependencies: + '@volar/source-map': 2.4.9 + + '@volar/source-map@2.4.9': {} + + '@volar/typescript@2.4.9': + dependencies: + '@volar/language-core': 2.4.9 + path-browserify: 1.0.1 + vscode-uri: 3.0.8 + + '@vue/compiler-core@3.5.12': + dependencies: + '@babel/parser': 7.26.2 + '@vue/shared': 3.5.12 + entities: 4.5.0 + estree-walker: 2.0.2 + source-map-js: 1.2.1 + + '@vue/compiler-dom@3.5.12': + dependencies: + '@vue/compiler-core': 3.5.12 + '@vue/shared': 3.5.12 + + '@vue/compiler-vue2@2.7.16': + dependencies: + de-indent: 1.0.2 + he: 1.2.0 + + '@vue/language-core@2.1.6(typescript@5.6.3)': + dependencies: + '@volar/language-core': 2.4.9 + '@vue/compiler-dom': 3.5.12 + '@vue/compiler-vue2': 2.7.16 + '@vue/shared': 3.5.12 + computeds: 0.0.1 + minimatch: 9.0.5 + muggle-string: 0.4.1 + path-browserify: 1.0.1 + optionalDependencies: + typescript: 5.6.3 + + '@vue/shared@3.5.12': {} + '@wallet-standard/app@1.0.1': dependencies: '@wallet-standard/base': 1.0.1 @@ -7731,6 +8018,14 @@ snapshots: dependencies: humanize-ms: 1.2.1 + ajv-draft-04@1.0.0(ajv@8.13.0): + optionalDependencies: + ajv: 8.13.0 + + ajv-formats@3.0.1(ajv@8.13.0): + optionalDependencies: + ajv: 8.13.0 + ajv@6.12.6: dependencies: fast-deep-equal: 3.1.3 @@ -7738,6 +8033,20 @@ snapshots: json-schema-traverse: 0.4.1 uri-js: 4.4.1 + ajv@8.12.0: + dependencies: + fast-deep-equal: 3.1.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + uri-js: 4.4.1 + + ajv@8.13.0: + dependencies: + fast-deep-equal: 3.1.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + uri-js: 4.4.1 + ansi-regex@5.0.1: {} ansi-regex@6.1.0: {} @@ -7765,6 +8074,10 @@ snapshots: arg@5.0.2: {} + argparse@1.0.10: + dependencies: + sprintf-js: 1.0.3 + argparse@2.0.1: {} aria-query@5.3.0: @@ -8114,6 +8427,10 @@ snapshots: commander@4.1.1: {} + compare-versions@6.1.1: {} + + computeds@0.0.1: {} + concat-map@0.0.1: {} confbox@0.1.7: {} @@ -8239,6 +8556,8 @@ snapshots: dateformat@4.6.3: {} + de-indent@1.0.2: {} + debug@2.6.9: dependencies: ms: 2.0.0 @@ -8495,6 +8814,8 @@ snapshots: escape-string-regexp@4.0.0: {} + escape-string-regexp@5.0.0: {} + eslint-plugin-react-hooks@5.1.0-rc-fb9a90fa48-20240614(eslint@9.14.0(jiti@1.21.6)): dependencies: eslint: 9.14.0(jiti@1.21.6) @@ -8834,6 +9155,12 @@ snapshots: fresh@2.0.0: {} + fs-extra@7.0.1: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + fsevents@2.3.3: optional: true @@ -8890,6 +9217,8 @@ snapshots: dependencies: get-intrinsic: 1.2.4 + graceful-fs@4.2.11: {} + graphemer@1.4.0: {} h3@1.12.0: @@ -8943,6 +9272,8 @@ snapshots: dependencies: function-bind: 1.1.2 + he@1.2.0: {} + help-me@5.0.0: {} hey-listen@1.0.8: {} @@ -9012,6 +9343,8 @@ snapshots: parent-module: 1.0.1 resolve-from: 4.0.0 + import-lazy@4.0.0: {} + imurmurhash@0.1.4: {} indent-string@4.0.0: {} @@ -9130,6 +9463,8 @@ snapshots: jiti@1.21.6: {} + jju@1.4.0: {} + jose@4.15.9: {} joycon@3.1.1: {} @@ -9180,12 +9515,18 @@ snapshots: json-schema-traverse@0.4.1: {} + json-schema-traverse@1.0.0: {} + json-stable-stringify-without-jsonify@1.0.1: {} json-stringify-safe@5.0.1: {} json5@2.2.3: {} + jsonfile@4.0.0: + optionalDependencies: + graceful-fs: 4.2.11 + jsonparse@1.3.1: {} keccak@3.0.4: @@ -9200,6 +9541,8 @@ snapshots: keyvaluestorage-interface@1.0.0: {} + kolorist@1.8.0: {} + levn@0.4.1: dependencies: prelude-ls: 1.2.1 @@ -9252,6 +9595,11 @@ snapshots: lit-element: 3.3.3 lit-html: 2.8.0 + local-pkg@0.5.0: + dependencies: + mlly: 1.7.1 + pkg-types: 1.2.0 + locate-path@5.0.0: dependencies: p-locate: 4.1.0 @@ -9282,6 +9630,10 @@ snapshots: dependencies: yallist: 3.1.1 + lru-cache@6.0.0: + dependencies: + yallist: 4.0.0 + lucide-react@0.441.0(react@18.3.1): dependencies: react: 18.3.1 @@ -9352,6 +9704,10 @@ snapshots: minimalistic-crypto-utils@1.0.1: {} + minimatch@3.0.8: + dependencies: + brace-expansion: 1.1.11 + minimatch@3.1.2: dependencies: brace-expansion: 1.1.11 @@ -9392,6 +9748,8 @@ snapshots: ms@2.1.3: {} + muggle-string@0.4.1: {} + multiformats@9.9.0: {} mz@2.7.0: @@ -9948,6 +10306,8 @@ snapshots: require-directory@2.1.1: {} + require-from-string@2.0.2: {} + require-main-filename@2.0.0: {} resolve-from@4.0.0: {} @@ -10046,11 +10406,15 @@ snapshots: semver@6.3.1: {} + semver@7.5.4: + dependencies: + lru-cache: 6.0.0 + semver@7.6.3: {} send@1.1.0: dependencies: - debug: 4.3.6 + debug: 4.3.7(supports-color@5.5.0) destroy: 1.2.0 encodeurl: 2.0.0 escape-html: 1.0.3 @@ -10129,10 +10493,14 @@ snapshots: source-map-js@1.2.1: {} + source-map@0.6.1: {} + split-on-first@1.1.0: {} split2@4.2.0: {} + sprintf-js@1.0.3: {} + stackback@0.0.2: {} statuses@2.0.1: {} @@ -10155,6 +10523,8 @@ snapshots: strict-uri-encode@2.0.0: {} + string-argv@0.3.2: {} + string-width@4.2.3: dependencies: emoji-regex: 8.0.0 @@ -10235,6 +10605,10 @@ snapshots: dependencies: has-flag: 4.0.0 + supports-color@8.1.1: + dependencies: + has-flag: 4.0.0 + supports-preserve-symlinks-flag@1.0.0: {} symbol-tree@3.2.4: {} @@ -10421,6 +10795,8 @@ snapshots: - eslint - supports-color + typescript@5.4.2: {} + typescript@5.6.3: {} ua-parser-js@1.0.39: {} @@ -10449,6 +10825,8 @@ snapshots: node-fetch-native: 1.6.4 pathe: 1.1.2 + universalify@0.1.2: {} + unpipe@1.0.0: {} unplugin@1.14.1: @@ -10530,6 +10908,8 @@ snapshots: uuid@10.0.0: {} + uuid@11.0.2: {} + uuid@8.3.2: {} uuid@9.0.1: {} @@ -10598,6 +10978,25 @@ snapshots: - supports-color - terser + vite-plugin-dts@4.3.0(@types/node@22.9.0)(rollup@4.21.3)(typescript@5.6.3)(vite@5.4.10(@types/node@22.9.0)): + dependencies: + '@microsoft/api-extractor': 7.47.11(@types/node@22.9.0) + '@rollup/pluginutils': 5.1.2(rollup@4.21.3) + '@volar/typescript': 2.4.9 + '@vue/language-core': 2.1.6(typescript@5.6.3) + compare-versions: 6.1.1 + debug: 4.3.7(supports-color@5.5.0) + kolorist: 1.8.0 + local-pkg: 0.5.0 + magic-string: 0.30.12 + typescript: 5.6.3 + optionalDependencies: + vite: 5.4.10(@types/node@22.9.0) + transitivePeerDependencies: + - '@types/node' + - rollup + - supports-color + vite-plugin-node-polyfills@0.22.0(rollup@4.21.3)(vite@5.4.10(@types/node@22.9.0)): dependencies: '@rollup/plugin-inject': 5.0.5(rollup@4.21.3) @@ -10667,6 +11066,8 @@ snapshots: vm-browserify@1.1.2: {} + vscode-uri@3.0.8: {} + w3c-xmlserializer@5.0.0: dependencies: xml-name-validator: 5.0.0 @@ -10894,6 +11295,8 @@ snapshots: yallist@3.1.1: {} + yallist@4.0.0: {} + yaml@2.5.1: {} yargs-parser@18.1.3: