From 749fb1fd4ecea3bd798610e6404be4a2d6f50e7d Mon Sep 17 00:00:00 2001 From: Kacper Wojciechowski <39823706+jog1t@users.noreply.github.com> Date: Wed, 11 Jun 2025 21:44:12 +0200 Subject: [PATCH] refactor(react): 0.9 --- .../chat-room-python/src/workers/registry.ts | 5 + examples/chat-room/scripts/cli.ts | 8 +- packages/core/src/client/client.ts | 14 +- .../core/src/client/http-client-driver.ts | 4 +- packages/core/src/client/utils.ts | 2 + packages/core/src/client/worker-conn.ts | 29 +- packages/core/src/client/worker-handle.ts | 23 +- .../test-inline-client-driver.ts | 4 +- packages/core/src/inline-client-driver/mod.ts | 4 +- packages/core/src/manager/router.ts | 1 + packages/drivers/file-system/src/manager.ts | 3 - packages/drivers/memory/src/manager.ts | 8 +- packages/drivers/redis/src/manager.ts | 2 - packages/frameworks/framework-base/index.html | 13 + packages/frameworks/framework-base/lib/mod.ts | 313 ++++ .../frameworks/framework-base/package.json | 11 +- .../frameworks/framework-base/src/main.ts | 1 + .../framework-base/tsconfig.build.json | 4 + .../frameworks/framework-base/tsconfig.json | 27 +- .../frameworks/framework-base/tsup.config.ts | 4 - .../frameworks/framework-base/vite.config.ts | 17 + packages/frameworks/react/README.md | 37 +- packages/frameworks/react/index.html | 13 + packages/frameworks/react/lib/mod.tsx | 82 + packages/frameworks/react/lib/vite-env.d.ts | 1 + packages/frameworks/react/package.json | 12 +- packages/frameworks/react/src/App.tsx | 96 ++ packages/frameworks/react/src/main.tsx | 9 + packages/frameworks/react/src/vite-env.d.ts | 1 + packages/frameworks/react/tsconfig.build.json | 4 + packages/frameworks/react/tsconfig.json | 24 +- packages/frameworks/react/tsconfig.node.json | 10 + packages/frameworks/react/tsup.config.ts | 4 - packages/frameworks/react/vite.config.ts | 19 + yarn.lock | 1370 ++++++++++++++++- 35 files changed, 2085 insertions(+), 94 deletions(-) create mode 100644 packages/frameworks/framework-base/index.html create mode 100644 packages/frameworks/framework-base/lib/mod.ts create mode 100644 packages/frameworks/framework-base/src/main.ts create mode 100644 packages/frameworks/framework-base/tsconfig.build.json delete mode 100644 packages/frameworks/framework-base/tsup.config.ts create mode 100644 packages/frameworks/framework-base/vite.config.ts create mode 100644 packages/frameworks/react/index.html create mode 100644 packages/frameworks/react/lib/mod.tsx create mode 100644 packages/frameworks/react/lib/vite-env.d.ts create mode 100644 packages/frameworks/react/src/App.tsx create mode 100644 packages/frameworks/react/src/main.tsx create mode 100644 packages/frameworks/react/src/vite-env.d.ts create mode 100644 packages/frameworks/react/tsconfig.build.json create mode 100644 packages/frameworks/react/tsconfig.node.json delete mode 100644 packages/frameworks/react/tsup.config.ts create mode 100644 packages/frameworks/react/vite.config.ts diff --git a/examples/chat-room-python/src/workers/registry.ts b/examples/chat-room-python/src/workers/registry.ts index b242ecd20..a7a5bafef 100644 --- a/examples/chat-room-python/src/workers/registry.ts +++ b/examples/chat-room-python/src/workers/registry.ts @@ -29,6 +29,11 @@ export const chatRoom = worker({ // Create and export the app export const registry = setup({ workers: { chatRoom }, + cors: { + origin: "*", // Allow all origins + allowMethods: ["GET", "POST", "OPTIONS"], // Allow specific methods + allowHeaders: ["Content-Type", "Authorization", "User-Agent"], // Allow specific headers + }, }); // Export type for client type checking diff --git a/examples/chat-room/scripts/cli.ts b/examples/chat-room/scripts/cli.ts index 9e7b9637b..0886e968a 100644 --- a/examples/chat-room/scripts/cli.ts +++ b/examples/chat-room/scripts/cli.ts @@ -10,9 +10,11 @@ async function main() { // connect to chat room - now accessed via property // can still pass parameters like room - const chatRoom = client.chatRoom.getOrCreate(room, { - params: { room }, - }).connect(); + const chatRoom = client.chatRoom + .getOrCreate(room, { + params: { room }, + }) + .connect(); // fetch history const history = await chatRoom.getHistory(); diff --git a/packages/core/src/client/client.ts b/packages/core/src/client/client.ts index af6514f68..f67f2a9b8 100644 --- a/packages/core/src/client/client.ts +++ b/packages/core/src/client/client.ts @@ -91,6 +91,8 @@ export interface ClientOptions { export interface QueryOptions { /** Parameters to pass to the connection. */ params?: unknown; + /** Signal to abort the request. */ + signal?: AbortSignal; } /** @@ -160,25 +162,29 @@ export interface ClientDriver { encoding: Encoding, params: unknown, name: string, - ...args: Args + args: Args, + opts: { signal?: AbortSignal } | undefined, ): Promise; resolveWorkerId( c: HonoContext | undefined, workerQuery: WorkerQuery, encodingKind: Encoding, params: unknown, + opts: { signal?: AbortSignal } | undefined, ): Promise; connectWebSocket( c: HonoContext | undefined, workerQuery: WorkerQuery, encodingKind: Encoding, params: unknown, + opts: { signal?: AbortSignal } | undefined, ): Promise; connectSse( c: HonoContext | undefined, workerQuery: WorkerQuery, encodingKind: Encoding, params: unknown, + opts: { signal?: AbortSignal } | undefined, ): Promise; sendHttpMessage( c: HonoContext | undefined, @@ -187,6 +193,7 @@ export interface ClientDriver { connectionId: string, connectionToken: string, message: wsToServer.ToServer, + opts: { signal?: AbortSignal } | undefined, ): Promise; } @@ -360,6 +367,7 @@ export class ClientRaw { createQuery, this.#encodingKind, opts?.params, + opts?.signal ? { signal: opts.signal } : undefined, ); logger().debug("created worker with ID", { name, @@ -541,7 +549,7 @@ function createWorkerProxy( let method = methodCache.get(prop); if (!method) { - method = (...args: unknown[]) => target.action(prop, ...args); + method = (...args: unknown[]) => target.action({ name: prop, args }); methodCache.set(prop, method); } return method; @@ -580,7 +588,7 @@ function createWorkerProxy( configurable: true, enumerable: false, writable: false, - value: (...args: unknown[]) => target.action(prop, ...args), + value: (...args: unknown[]) => target.action({ name: prop, args }), }; } return undefined; diff --git a/packages/core/src/client/http-client-driver.ts b/packages/core/src/client/http-client-driver.ts index 18919d8e9..ea714ac1d 100644 --- a/packages/core/src/client/http-client-driver.ts +++ b/packages/core/src/client/http-client-driver.ts @@ -52,7 +52,8 @@ export function createHttpClientDriver(managerEndpoint: string): ClientDriver { encoding: Encoding, params: unknown, name: string, - ...args: Args + args: Args, + opts: { signal?: AbortSignal } | undefined, ): Promise => { logger().debug("worker handle action", { name, @@ -73,6 +74,7 @@ export function createHttpClientDriver(managerEndpoint: string): ClientDriver { }, body: { a: args } satisfies ActionRequest, encoding: encoding, + signal: opts?.signal, }, ); diff --git a/packages/core/src/client/utils.ts b/packages/core/src/client/utils.ts index 2265920c8..65e368bd5 100644 --- a/packages/core/src/client/utils.ts +++ b/packages/core/src/client/utils.ts @@ -31,6 +31,7 @@ export interface HttpRequestOpts { body?: Body; encoding: Encoding; skipParseResponse?: boolean; + signal?: AbortSignal; customFetch?: (req: Request) => Promise; } @@ -75,6 +76,7 @@ export async function sendHttpRequest< "User-Agent": httpUserAgent(), }, body: bodyData, + signal: opts.signal, }), ); } catch (error) { diff --git a/packages/core/src/client/worker-conn.ts b/packages/core/src/client/worker-conn.ts index a8213c3b1..adc6fbec6 100644 --- a/packages/core/src/client/worker-conn.ts +++ b/packages/core/src/client/worker-conn.ts @@ -23,7 +23,6 @@ import { type WebSocketMessage as ConnMessage, messageLength, serializeWithEncoding, - WebSocketMessage, } from "./utils"; import { HEADER_WORKER_ID, @@ -64,6 +63,7 @@ export type WorkerErrorCallback = (error: errors.WorkerError) => void; export interface SendHttpMessageOpts { ephemeral: boolean; + signal?: AbortSignal; } export type ConnTransport = { websocket: WebSocket } | { sse: EventSource }; @@ -152,11 +152,15 @@ export class WorkerConnRaw { * @param {...Args} args - The arguments to pass to the action function. * @returns {Promise} - A promise that resolves to the response of the action function. */ - async action = unknown[], Response = unknown>( - name: string, - ...args: Args - ): Promise { - logger().debug("action", { name, args }); + async action< + Args extends Array = unknown[], + Response = unknown, + >(opts: { + name: string; + args: Args; + signal?: AbortSignal; + }): Promise { + logger().debug("action", { name: opts.name, args: opts.args }); // If we have an active connection, use the websockactionId const actionId = this.#actionIdCounter; @@ -164,14 +168,14 @@ export class WorkerConnRaw { const { promise, resolve, reject } = Promise.withResolvers(); - this.#actionsInFlight.set(actionId, { name, resolve, reject }); + this.#actionsInFlight.set(actionId, { name: opts.name, resolve, reject }); this.#sendMessage({ b: { ar: { i: actionId, - n: name, - a: args, + n: opts.name, + a: opts.args, }, }, } satisfies wsToServer.ToServer); @@ -255,12 +259,13 @@ enc } } - async #connectWebSocket() { + async #connectWebSocket({ signal }: { signal?: AbortSignal } = {}) { const ws = await this.#driver.connectWebSocket( undefined, this.#workerQuery, this.#encodingKind, this.#params, + signal ? { signal } : undefined, ); this.#transport = { websocket: ws }; ws.onopen = () => { @@ -277,12 +282,13 @@ enc }; } - async #connectSse() { + async #connectSse({ signal }: { signal?: AbortSignal } = {}) { const eventSource = await this.#driver.connectSse( undefined, this.#workerQuery, this.#encodingKind, this.#params, + signal ? { signal } : undefined, ); this.#transport = { sse: eventSource }; eventSource.onopen = () => { @@ -659,6 +665,7 @@ enc this.#connectionId, this.#connectionToken, message, + opts?.signal ? { signal: opts.signal } : undefined, ); if (!res.ok) { diff --git a/packages/core/src/client/worker-handle.ts b/packages/core/src/client/worker-handle.ts index 4aa43499c..53c7f1b4e 100644 --- a/packages/core/src/client/worker-handle.ts +++ b/packages/core/src/client/worker-handle.ts @@ -52,21 +52,23 @@ export class WorkerHandleRaw { * @see {@link WorkerHandle} * @template Args - The type of arguments to pass to the action function. * @template Response - The type of the response returned by the action function. - * @param {string} name - The name of the action function to call. - * @param {...Args} args - The arguments to pass to the action function. - * @returns {Promise} - A promise that resolves to the response of the action function. */ - async action = unknown[], Response = unknown>( - name: string, - ...args: Args - ): Promise { + async action< + Args extends Array = unknown[], + Response = unknown, + >(opts: { + name: string; + args: Args; + signal?: AbortSignal; + }): Promise { return await this.#driver.action( undefined, this.#workerQuery, this.#encodingKind, this.#params, - name, - ...args, + opts.name, + opts.args, + { signal: opts.signal }, ); } @@ -99,7 +101,7 @@ export class WorkerHandleRaw { * * @returns {Promise} - A promise that resolves to the worker's ID */ - async resolve(): Promise { + async resolve({ signal }: { signal?: AbortSignal } = {}): Promise { if ( "getForKey" in this.#workerQuery || "getOrCreateForKey" in this.#workerQuery @@ -110,6 +112,7 @@ export class WorkerHandleRaw { this.#workerQuery, this.#encodingKind, this.#params, + signal ? { signal } : undefined, ); this.#workerQuery = { getForId: { workerId } }; return workerId; diff --git a/packages/core/src/driver-test-suite/test-inline-client-driver.ts b/packages/core/src/driver-test-suite/test-inline-client-driver.ts index 60cbfaaff..e273a1aa8 100644 --- a/packages/core/src/driver-test-suite/test-inline-client-driver.ts +++ b/packages/core/src/driver-test-suite/test-inline-client-driver.ts @@ -30,14 +30,14 @@ export function createTestInlineClientDriver( encoding: Encoding, params: unknown, name: string, - ...args: Args + args: Args ): Promise => { return makeInlineRequest( endpoint, encoding, transport, "action", - [undefined, workerQuery, encoding, params, name, ...args], + [undefined, workerQuery, encoding, params, name, args], ); }, diff --git a/packages/core/src/inline-client-driver/mod.ts b/packages/core/src/inline-client-driver/mod.ts index 7129a23ae..a9f068e54 100644 --- a/packages/core/src/inline-client-driver/mod.ts +++ b/packages/core/src/inline-client-driver/mod.ts @@ -55,7 +55,8 @@ export function createInlineClientDriver( encoding: Encoding, params: unknown, actionName: string, - ...args: Args + args: Args, + opts: { signal?: AbortSignal }, ): Promise => { try { // Get the worker ID @@ -115,6 +116,7 @@ export function createInlineClientDriver( undefined, workerId, ), + signal: opts?.signal, }); return responseData.o as Response; diff --git a/packages/core/src/manager/router.ts b/packages/core/src/manager/router.ts index 45b6f2180..0b068f0be 100644 --- a/packages/core/src/manager/router.ts +++ b/packages/core/src/manager/router.ts @@ -429,6 +429,7 @@ export function createManagerRouter( workerQuery, encodingKind, params, + undefined, ); // Store a reference to the resolved WebSocket diff --git a/packages/drivers/file-system/src/manager.ts b/packages/drivers/file-system/src/manager.ts index 4ea8d2653..2692d0e8f 100644 --- a/packages/drivers/file-system/src/manager.ts +++ b/packages/drivers/file-system/src/manager.ts @@ -46,7 +46,6 @@ export class FileSystemManagerDriver implements ManagerDriver { workerId, name: state.name, key: state.key, - meta: undefined, }; } catch (error) { logger().error("failed to read worker state", { workerId, error }); @@ -66,7 +65,6 @@ export class FileSystemManagerDriver implements ManagerDriver { workerId: worker.id, name, key: worker.key, - meta: undefined, }; } @@ -102,7 +100,6 @@ export class FileSystemManagerDriver implements ManagerDriver { workerId, name, key, - meta: undefined, }; } } diff --git a/packages/drivers/memory/src/manager.ts b/packages/drivers/memory/src/manager.ts index afbe5735f..2403de999 100644 --- a/packages/drivers/memory/src/manager.ts +++ b/packages/drivers/memory/src/manager.ts @@ -30,7 +30,9 @@ export class MemoryManagerDriver implements ManagerDriver { this.#state = state; } - async getForId({ workerId }: GetForIdInput): Promise { + async getForId({ + workerId, + }: GetForIdInput): Promise { // Validate the worker exists const worker = this.#state.getWorker(workerId); if (!worker) { @@ -41,7 +43,6 @@ export class MemoryManagerDriver implements ManagerDriver { workerId: worker.id, name: worker.name, key: worker.key, - meta: undefined, }; } @@ -75,7 +76,6 @@ export class MemoryManagerDriver implements ManagerDriver { workerId: worker.id, name, key: worker.key, - meta: undefined, }; } @@ -105,6 +105,6 @@ export class MemoryManagerDriver implements ManagerDriver { this.inspector.onWorkersChange(this.#state.getAllWorkers()); - return { workerId, name, key, meta: undefined }; + return { workerId, name, key }; } } diff --git a/packages/drivers/redis/src/manager.ts b/packages/drivers/redis/src/manager.ts index ad5e4e853..61d539205 100644 --- a/packages/drivers/redis/src/manager.ts +++ b/packages/drivers/redis/src/manager.ts @@ -66,7 +66,6 @@ export class RedisManagerDriver implements ManagerDriver { workerId, name, key, - meta: undefined, }; } @@ -134,7 +133,6 @@ export class RedisManagerDriver implements ManagerDriver { workerId, name, key, - meta: undefined, }; } diff --git a/packages/frameworks/framework-base/index.html b/packages/frameworks/framework-base/index.html new file mode 100644 index 000000000..010071e6d --- /dev/null +++ b/packages/frameworks/framework-base/index.html @@ -0,0 +1,13 @@ + + + + + + + ◢ RivetKit ⋅ Framework Base + + +
+ + + diff --git a/packages/frameworks/framework-base/lib/mod.ts b/packages/frameworks/framework-base/lib/mod.ts new file mode 100644 index 000000000..c9fa35885 --- /dev/null +++ b/packages/frameworks/framework-base/lib/mod.ts @@ -0,0 +1,313 @@ +import { Derived, Effect, Store, type Updater } from "@tanstack/store"; +import type { AnyWorkerDefinition, WorkerCoreApp } from "rivetkit"; +import type { + Client, + ExtractWorkersFromApp, + WorkerConn, + WorkerHandle, +} from "rivetkit/client"; + +export type AnyWorkerRegistry = WorkerCoreApp; + +interface WorkerStateReference { + /** + * The unique identifier for the worker. + * This is a hash generated from the worker's options. + * It is used to identify the worker instance in the store. + * @internal + */ + hash: string; + /** + * The state of the worker, derived from the store. + * This includes the worker's connection and handle. + */ + handle: WorkerHandle | null; + /** + * The connection to the worker. + * This is used to communicate with the worker in realtime. + */ + connection: WorkerConn | null; + /** + * Whether the worker is enabled. + */ + isConnected?: boolean; + /** + * Whether the worker is currently connecting, indicating that a connection attempt is in progress. + */ + isConnecting?: boolean; + /** + * Whether there was an error connecting to the worker. + */ + isError?: boolean; + /** + * The error that occurred while trying to connect to the worker, if any. + */ + error: Error | null; + /** + * Options for the worker, including its name, key, parameters, and whether it is enabled. + */ + opts: { + name: keyof AD; + /** + * Unique key for the worker instance. + * This can be a string or an array of strings to create multiple instances. + * @example "abc" or ["abc", "def"] + */ + key: string | string[]; + /** + * Parameters for the worker. + * These are additional options that can be passed to the worker. + */ + params?: Record; + /** + * Whether the worker is enabled. + * Defaults to true. + */ + enabled?: boolean; + }; +} + +interface InternalRivetKitStore< + Registry extends AnyWorkerRegistry, + Workers extends ExtractWorkersFromApp, +> { + workers: Record>; +} + +/** + * Options for configuring a worker in RivetKit. + */ +export interface WorkerOptions< + Registry extends AnyWorkerRegistry, + WorkerName extends keyof ExtractWorkersFromApp, +> { + /** + * Typesafe name of the worker. + * This should match the worker's name in the app's worker definitions. + * @example "chatRoom" + */ + name: WorkerName; + /** + * Unique key for the worker instance. + * This can be a string or an array of strings to create multiple instances. + * @example "abc" or ["abc", "def"] + */ + key: string | string[]; + /** + * Parameters for the worker. + */ + params?: Registry[ExtractWorkersFromApp]["params"]; + /** + * Whether the worker is enabled. + * Defaults to true. + */ + enabled?: boolean; +} + +export interface CreateRivetKitOptions { + hashFunction?: (opts: WorkerOptions) => string; +} + +export function createRivetKit< + Registry extends AnyWorkerRegistry, + Workers extends ExtractWorkersFromApp, + WorkerNames extends keyof Workers, +>(client: Client, opts: CreateRivetKitOptions = {}) { + type RivetKitStore = InternalRivetKitStore; + + const store = new Store({ + workers: {}, + }); + + const hash = opts.hashFunction || defaultHashFunction; + + const cache = new Map< + string, + { + state: Derived; + key: string; + mount: () => void; + setState: (set: Updater) => void; + create: () => void; + addEventListener?: ( + event: string, + handler: (...args: any[]) => void, + ) => void; + } + >(); + + function getOrCreateWorker( + opts: WorkerOptions, + ) { + const key = hash(opts); + const cached = cache.get(key); + if (cached) { + return { + ...cached, + state: cached.state as Derived< + Omit & { + handle: WorkerHandle | null; + connection: WorkerConn | null; + } + >, + }; + } + + const derived = new Derived({ + fn: ({ currDepVals: [store] }) => { + return store.workers[key]; + }, + deps: [store], + }); + + function create() { + async function createWorkerConnection() { + const worker = store.state.workers[key]; + try { + const handle = client.getOrCreate( + worker.opts.name as string, + worker.opts.key, + worker.opts.params, + ); + + const connection = handle.connect(); + + await handle.resolve(/*{ signal: AbortSignal.timeout(0) }*/); + store.setState((prev) => { + const prevWorker = prev.workers[key]; + prev.workers[key] = { + ...prevWorker, + isConnected: true, + isConnecting: false, + handle: handle as WorkerHandle, + connection: connection as WorkerConn, + isError: false, + error: null, + }; + return prev; + }); + } catch (error) { + store.setState((prev) => { + const prevWorker = prev.workers[key]; + prev.workers[key] = { + ...prevWorker, + isError: true, + isConnecting: false, + error: error as Error, + }; + + return prev; + }); + } + } + + store.setState((prev) => { + prev.workers[key].isConnecting = true; + prev.workers[key].isError = false; + prev.workers[key].error = null; + createWorkerConnection(); + return prev; + }); + } + + // connect effect + const effect = new Effect({ + fn: () => { + // check if prev state is different from current state + // do a shallow comparison + + const worker = store.state.workers[key]; + + const isSame = + JSON.stringify(store.prevState.workers[key].opts) === + JSON.stringify(store.state.workers[key].opts); + + if ( + isSame && + !worker.isConnected && + !worker.isConnecting && + !worker.isError && + worker.opts.enabled + ) { + create(); + } + }, + deps: [derived], + }); + + store.setState((prev) => { + if (prev.workers[key]) { + return prev; + } + prev.workers[key] = { + hash: key, + isConnected: false, + isConnecting: false, + connection: null, + handle: null, + isError: false, + error: null, + opts, + }; + return prev; + }); + + function setState(updater: Updater) { + store.setState((prev) => { + const worker = prev.workers[key]; + if (!worker) { + throw new Error(`Worker with key "${key}" does not exist.`); + } + + if (typeof updater === "function") { + prev.workers[key] = updater(worker); + } else { + // If updater is a direct value, we assume it replaces the entire worker state + prev.workers[key] = updater; + } + return prev; + }); + } + + const mount = () => { + const unsubscribeDerived = derived.mount(); + const unsubscribeEffect = effect.mount(); + + return () => { + unsubscribeDerived(); + unsubscribeEffect(); + }; + }; + + cache.set(key, { + state: derived, + key, + mount, + setState, + create, + addEventListener, + }); + + return { + mount, + setState, + state: derived as Derived< + Omit & { + handle: WorkerHandle | null; + connection: WorkerConn | null; + } + >, + create, + key, + }; + } + + return { + getOrCreateWorker, + store, + }; +} + +function defaultHashFunction({ name, key, params }: WorkerOptions) { + return JSON.stringify({ name, key, params }); +} diff --git a/packages/frameworks/framework-base/package.json b/packages/frameworks/framework-base/package.json index 7cd2d60da..4e9b73c01 100644 --- a/packages/frameworks/framework-base/package.json +++ b/packages/frameworks/framework-base/package.json @@ -21,7 +21,8 @@ } }, "scripts": { - "build": "tsup src/mod.ts", + "dev": "vite build --watch", + "build": "tsc && vite build", "check-types": "tsc --noEmit" }, "peerDependencies": { @@ -29,9 +30,13 @@ }, "devDependencies": { "rivetkit": "workspace:*", - "tsup": "^8.3.6", "typescript": "^5.5.2", + "vite": "^6.3.5", + "vite-plugin-dts": "^4.5.4", "vitest": "^3.1.1" }, - "stableVersion": "0.8.0" + "stableVersion": "0.8.0", + "dependencies": { + "@tanstack/store": "^0.7.1" + } } diff --git a/packages/frameworks/framework-base/src/main.ts b/packages/frameworks/framework-base/src/main.ts new file mode 100644 index 000000000..766b6e5e0 --- /dev/null +++ b/packages/frameworks/framework-base/src/main.ts @@ -0,0 +1 @@ +console.log("hell2222o"); diff --git a/packages/frameworks/framework-base/tsconfig.build.json b/packages/frameworks/framework-base/tsconfig.build.json new file mode 100644 index 000000000..e0a84f7e8 --- /dev/null +++ b/packages/frameworks/framework-base/tsconfig.build.json @@ -0,0 +1,4 @@ +{ + "extends": "./tsconfig.json", + "include": ["lib"] +} diff --git a/packages/frameworks/framework-base/tsconfig.json b/packages/frameworks/framework-base/tsconfig.json index 20c41e0c3..e7393c2e5 100644 --- a/packages/frameworks/framework-base/tsconfig.json +++ b/packages/frameworks/framework-base/tsconfig.json @@ -1,10 +1,25 @@ { - "extends": "../../../tsconfig.base.json", "compilerOptions": { - "jsx": "react-jsx", - "paths": { - "@/*": ["./src/*"] - } + "target": "ES2022", + "useDefineForClassFields": true, + "module": "ESNext", + "lib": ["ES2022", "DOM", "DOM.Iterable"], + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "verbatimModuleSyntax": true, + "moduleDetection": "force", + "noEmit": true, + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "erasableSyntaxOnly": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedSideEffectImports": true }, - "include": ["src/**/*"] + "include": ["src", "lib"] } diff --git a/packages/frameworks/framework-base/tsup.config.ts b/packages/frameworks/framework-base/tsup.config.ts deleted file mode 100644 index 677cffb7b..000000000 --- a/packages/frameworks/framework-base/tsup.config.ts +++ /dev/null @@ -1,4 +0,0 @@ -import defaultConfig from "../../../tsup.base.ts"; -import { defineConfig } from "tsup"; - -export default defineConfig(defaultConfig); diff --git a/packages/frameworks/framework-base/vite.config.ts b/packages/frameworks/framework-base/vite.config.ts new file mode 100644 index 000000000..98e5b0d92 --- /dev/null +++ b/packages/frameworks/framework-base/vite.config.ts @@ -0,0 +1,17 @@ +import { dirname, resolve } from "node:path"; +import { fileURLToPath } from "node:url"; +import { defineConfig } from "vite"; +import dts from "vite-plugin-dts"; + +const __dirname = dirname(fileURLToPath(import.meta.url)); + +export default defineConfig({ + plugins: [dts({ include: ["lib"] })], + build: { + lib: { + entry: resolve(__dirname, "lib/mod.ts"), + fileName: "mod", + formats: ["es"], + }, + }, +}); diff --git a/packages/frameworks/react/README.md b/packages/frameworks/react/README.md index e9b490d68..d8d82b1ae 100644 --- a/packages/frameworks/react/README.md +++ b/packages/frameworks/react/README.md @@ -1,6 +1,10 @@ # RivetKit React -🎭 React integration for [RivetKit](https://rivetkit.org/introduction) +🎭 React integration for [RivetKit](https://rivetkit.org/) + +> [!NOTE] +> Looking for the integration with your favorite framework? Let us know by creating an issue on GitHub, or on [Discord](https://rivet.gg/discord). +> If you want to contribute, check out the [contribution guide](../../../CONTRIBUTING.md). ## Installation @@ -9,31 +13,30 @@ ```bash # npm -npm add rivetkit/react +npm add @rivetkit/react # pnpm -pnpm add rivetkit/react +pnpm add @rivetkit/react # Yarn -yarn add rivetkit/react +yarn add @rivetkit/react # Bun -bun add rivetkit/react +bun add @rivetkit/react ``` ## Quick Start ```tsx -import { createClient } from "rivetkit/client"; -import { createReactActorCore } from "@rivetkit/react"; +import { createClient, createRivetKit } from "@rivetkit/react"; import type { Registry } from "../counter/src/index"; import React, { useState } from "react"; // Create a client const client = createClient("http://your-rivetkit-server.com"); -// Create React hooks for your actors -const { useActor, useActorEvent } = createReactActorCore(client); +// Create React hooks for your workers +const { useWorker } = createRivetKit(client); function ReactApp() { return ( @@ -44,15 +47,19 @@ function ReactApp() { } function Counter() { - // Get or create an actor - const [{ actor }] = useActor("counter"); + // Get or create a Worker + // This will create a new worker if it doesn't exist + // using the hook with the same parameters will return the same worker without creating a new one + const worker = useWorker({ + name: "counter", + }); return (
- + +

Rivet Kit + React

+
+ + + + + + + + + + + + + +
+ + ); +} + +function WorkerReceiver({ key, params }: { key: string; params: any } = {}) { + const worker = useWorker({ + name: "chatRoom", + key, + params, + }); + + const { connection, handle, ...rest } = worker || {}; + + worker.useEvent("newMessage", (...args) => { + console.log("Received message from worker:", ...args); + }); + + return ( +
+

Worker Component

+
{JSON.stringify(rest, null, 2)}
+
+ ); +} + +function WorkerWriter({ key, params }: { key: string; params: any }) { + const worker = useWorker({ + name: "chatRoom", + key, + params, + }); + return ( +
+

Worker Writer Component

+
{ + e.preventDefault(); + const formData = new FormData(e.target as HTMLFormElement); + const message = formData.get("message") as string; + worker.connection?.sendMessage("username", message); + (e.target as HTMLFormElement).reset(); + }} + > + + +
+
+ ); +} + +export default App; diff --git a/packages/frameworks/react/src/main.tsx b/packages/frameworks/react/src/main.tsx new file mode 100644 index 000000000..f371e13b0 --- /dev/null +++ b/packages/frameworks/react/src/main.tsx @@ -0,0 +1,9 @@ +import { StrictMode } from "react"; +import { createRoot } from "react-dom/client"; +import App from "./App"; + +createRoot(document.getElementById("root")!).render( + + + , +); diff --git a/packages/frameworks/react/src/vite-env.d.ts b/packages/frameworks/react/src/vite-env.d.ts new file mode 100644 index 000000000..11f02fe2a --- /dev/null +++ b/packages/frameworks/react/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/packages/frameworks/react/tsconfig.build.json b/packages/frameworks/react/tsconfig.build.json new file mode 100644 index 000000000..e0a84f7e8 --- /dev/null +++ b/packages/frameworks/react/tsconfig.build.json @@ -0,0 +1,4 @@ +{ + "extends": "./tsconfig.json", + "include": ["lib"] +} diff --git a/packages/frameworks/react/tsconfig.json b/packages/frameworks/react/tsconfig.json index b25300e84..efa4736ee 100644 --- a/packages/frameworks/react/tsconfig.json +++ b/packages/frameworks/react/tsconfig.json @@ -1,7 +1,25 @@ { - "extends": "../../../tsconfig.base.json", "compilerOptions": { - "jsx": "react-jsx" + "target": "ES2020", + "useDefineForClassFields": true, + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx", + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true }, - "include": ["src/**/*"] + "include": ["src", "lib"], + "references": [{ "path": "./tsconfig.node.json" }] } diff --git a/packages/frameworks/react/tsconfig.node.json b/packages/frameworks/react/tsconfig.node.json new file mode 100644 index 000000000..42872c59f --- /dev/null +++ b/packages/frameworks/react/tsconfig.node.json @@ -0,0 +1,10 @@ +{ + "compilerOptions": { + "composite": true, + "skipLibCheck": true, + "module": "ESNext", + "moduleResolution": "bundler", + "allowSyntheticDefaultImports": true + }, + "include": ["vite.config.ts"] +} diff --git a/packages/frameworks/react/tsup.config.ts b/packages/frameworks/react/tsup.config.ts deleted file mode 100644 index 677cffb7b..000000000 --- a/packages/frameworks/react/tsup.config.ts +++ /dev/null @@ -1,4 +0,0 @@ -import defaultConfig from "../../../tsup.base.ts"; -import { defineConfig } from "tsup"; - -export default defineConfig(defaultConfig); diff --git a/packages/frameworks/react/vite.config.ts b/packages/frameworks/react/vite.config.ts new file mode 100644 index 000000000..d9177d7d3 --- /dev/null +++ b/packages/frameworks/react/vite.config.ts @@ -0,0 +1,19 @@ +import { dirname, resolve } from "node:path"; +import { fileURLToPath } from "node:url"; +import { defineConfig } from "vite"; +import react from "@vitejs/plugin-react"; +import dts from "vite-plugin-dts"; + +const __dirname = dirname(fileURLToPath(import.meta.url)); + +export default defineConfig({ + plugins: [react(), dts({ include: ["lib"] })], + build: { + lib: { + entry: resolve(__dirname, "lib/mod.ts"), + }, + rollupOptions: { + external: ["react", "react/jsx-runtime"], + }, + }, +}); diff --git a/yarn.lock b/yarn.lock index 097a5afd7..1c008286a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -70,6 +70,16 @@ __metadata: languageName: node linkType: hard +"@ampproject/remapping@npm:^2.2.0": + version: 2.3.0 + resolution: "@ampproject/remapping@npm:2.3.0" + dependencies: + "@jridgewell/gen-mapping": "npm:^0.3.5" + "@jridgewell/trace-mapping": "npm:^0.3.24" + checksum: 10c0/81d63cca5443e0f0c72ae18b544cc28c7c0ec2cea46e7cb888bb0e0f411a1191d0d6b7af798d54e30777d8d1488b2ec0732aac2be342d3d7d3ffd271c6f489ed + languageName: node + linkType: hard + "@asteasolutions/zod-to-openapi@npm:^7.3.0": version: 7.3.0 resolution: "@asteasolutions/zod-to-openapi@npm:7.3.0" @@ -81,6 +91,203 @@ __metadata: languageName: node linkType: hard +"@babel/code-frame@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/code-frame@npm:7.27.1" + dependencies: + "@babel/helper-validator-identifier": "npm:^7.27.1" + js-tokens: "npm:^4.0.0" + picocolors: "npm:^1.1.1" + checksum: 10c0/5dd9a18baa5fce4741ba729acc3a3272c49c25cb8736c4b18e113099520e7ef7b545a4096a26d600e4416157e63e87d66db46aa3fbf0a5f2286da2705c12da00 + languageName: node + linkType: hard + +"@babel/compat-data@npm:^7.27.2": + version: 7.27.5 + resolution: "@babel/compat-data@npm:7.27.5" + checksum: 10c0/da2751fcd0b58eea958f2b2f7ff7d6de1280712b709fa1ad054b73dc7d31f589e353bb50479b9dc96007935f3ed3cada68ac5b45ce93086b7122ddc32e60dc00 + languageName: node + linkType: hard + +"@babel/core@npm:^7.27.4": + version: 7.27.4 + resolution: "@babel/core@npm:7.27.4" + dependencies: + "@ampproject/remapping": "npm:^2.2.0" + "@babel/code-frame": "npm:^7.27.1" + "@babel/generator": "npm:^7.27.3" + "@babel/helper-compilation-targets": "npm:^7.27.2" + "@babel/helper-module-transforms": "npm:^7.27.3" + "@babel/helpers": "npm:^7.27.4" + "@babel/parser": "npm:^7.27.4" + "@babel/template": "npm:^7.27.2" + "@babel/traverse": "npm:^7.27.4" + "@babel/types": "npm:^7.27.3" + convert-source-map: "npm:^2.0.0" + debug: "npm:^4.1.0" + gensync: "npm:^1.0.0-beta.2" + json5: "npm:^2.2.3" + semver: "npm:^6.3.1" + checksum: 10c0/d2d17b106a8d91d3eda754bb3f26b53a12eb7646df73c2b2d2e9b08d90529186bc69e3823f70a96ec6e5719dc2372fb54e14ad499da47ceeb172d2f7008787b5 + languageName: node + linkType: hard + +"@babel/generator@npm:^7.27.3": + version: 7.27.5 + resolution: "@babel/generator@npm:7.27.5" + dependencies: + "@babel/parser": "npm:^7.27.5" + "@babel/types": "npm:^7.27.3" + "@jridgewell/gen-mapping": "npm:^0.3.5" + "@jridgewell/trace-mapping": "npm:^0.3.25" + jsesc: "npm:^3.0.2" + checksum: 10c0/8f649ef4cd81765c832bb11de4d6064b035ffebdecde668ba7abee68a7b0bce5c9feabb5dc5bb8aeba5bd9e5c2afa3899d852d2bd9ca77a711ba8c8379f416f0 + languageName: node + linkType: hard + +"@babel/helper-compilation-targets@npm:^7.27.2": + version: 7.27.2 + resolution: "@babel/helper-compilation-targets@npm:7.27.2" + dependencies: + "@babel/compat-data": "npm:^7.27.2" + "@babel/helper-validator-option": "npm:^7.27.1" + browserslist: "npm:^4.24.0" + lru-cache: "npm:^5.1.1" + semver: "npm:^6.3.1" + checksum: 10c0/f338fa00dcfea931804a7c55d1a1c81b6f0a09787e528ec580d5c21b3ecb3913f6cb0f361368973ce953b824d910d3ac3e8a8ee15192710d3563826447193ad1 + languageName: node + linkType: hard + +"@babel/helper-module-imports@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-module-imports@npm:7.27.1" + dependencies: + "@babel/traverse": "npm:^7.27.1" + "@babel/types": "npm:^7.27.1" + checksum: 10c0/e00aace096e4e29290ff8648455c2bc4ed982f0d61dbf2db1b5e750b9b98f318bf5788d75a4f974c151bd318fd549e81dbcab595f46b14b81c12eda3023f51e8 + languageName: node + linkType: hard + +"@babel/helper-module-transforms@npm:^7.27.3": + version: 7.27.3 + resolution: "@babel/helper-module-transforms@npm:7.27.3" + dependencies: + "@babel/helper-module-imports": "npm:^7.27.1" + "@babel/helper-validator-identifier": "npm:^7.27.1" + "@babel/traverse": "npm:^7.27.3" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/fccb4f512a13b4c069af51e1b56b20f54024bcf1591e31e978a30f3502567f34f90a80da6a19a6148c249216292a8074a0121f9e52602510ef0f32dbce95ca01 + languageName: node + linkType: hard + +"@babel/helper-plugin-utils@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-plugin-utils@npm:7.27.1" + checksum: 10c0/94cf22c81a0c11a09b197b41ab488d416ff62254ce13c57e62912c85700dc2e99e555225787a4099ff6bae7a1812d622c80fbaeda824b79baa10a6c5ac4cf69b + languageName: node + linkType: hard + +"@babel/helper-string-parser@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-string-parser@npm:7.27.1" + checksum: 10c0/8bda3448e07b5583727c103560bcf9c4c24b3c1051a4c516d4050ef69df37bb9a4734a585fe12725b8c2763de0a265aa1e909b485a4e3270b7cfd3e4dbe4b602 + languageName: node + linkType: hard + +"@babel/helper-validator-identifier@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-validator-identifier@npm:7.27.1" + checksum: 10c0/c558f11c4871d526498e49d07a84752d1800bf72ac0d3dad100309a2eaba24efbf56ea59af5137ff15e3a00280ebe588560534b0e894a4750f8b1411d8f78b84 + languageName: node + linkType: hard + +"@babel/helper-validator-option@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-validator-option@npm:7.27.1" + checksum: 10c0/6fec5f006eba40001a20f26b1ef5dbbda377b7b68c8ad518c05baa9af3f396e780bdfded24c4eef95d14bb7b8fd56192a6ed38d5d439b97d10efc5f1a191d148 + languageName: node + linkType: hard + +"@babel/helpers@npm:^7.27.4": + version: 7.27.6 + resolution: "@babel/helpers@npm:7.27.6" + dependencies: + "@babel/template": "npm:^7.27.2" + "@babel/types": "npm:^7.27.6" + checksum: 10c0/448bac96ef8b0f21f2294a826df9de6bf4026fd023f8a6bb6c782fe3e61946801ca24381490b8e58d861fee75cd695a1882921afbf1f53b0275ee68c938bd6d3 + languageName: node + linkType: hard + +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.27.2, @babel/parser@npm:^7.27.4, @babel/parser@npm:^7.27.5": + version: 7.27.5 + resolution: "@babel/parser@npm:7.27.5" + dependencies: + "@babel/types": "npm:^7.27.3" + bin: + parser: ./bin/babel-parser.js + checksum: 10c0/f7faaebf21cc1f25d9ca8ac02c447ed38ef3460ea95be7ea760916dcf529476340d72a5a6010c6641d9ed9d12ad827c8424840277ec2295c5b082ba0f291220a + languageName: node + linkType: hard + +"@babel/plugin-transform-react-jsx-self@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-react-jsx-self@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/00a4f917b70a608f9aca2fb39aabe04a60aa33165a7e0105fd44b3a8531630eb85bf5572e9f242f51e6ad2fa38c2e7e780902176c863556c58b5ba6f6e164031 + languageName: node + linkType: hard + +"@babel/plugin-transform-react-jsx-source@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-react-jsx-source@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/5e67b56c39c4d03e59e03ba80692b24c5a921472079b63af711b1d250fc37c1733a17069b63537f750f3e937ec44a42b1ee6a46cd23b1a0df5163b17f741f7f2 + languageName: node + linkType: hard + +"@babel/template@npm:^7.27.2": + version: 7.27.2 + resolution: "@babel/template@npm:7.27.2" + dependencies: + "@babel/code-frame": "npm:^7.27.1" + "@babel/parser": "npm:^7.27.2" + "@babel/types": "npm:^7.27.1" + checksum: 10c0/ed9e9022651e463cc5f2cc21942f0e74544f1754d231add6348ff1b472985a3b3502041c0be62dc99ed2d12cfae0c51394bf827452b98a2f8769c03b87aadc81 + languageName: node + linkType: hard + +"@babel/traverse@npm:^7.27.1, @babel/traverse@npm:^7.27.3, @babel/traverse@npm:^7.27.4": + version: 7.27.4 + resolution: "@babel/traverse@npm:7.27.4" + dependencies: + "@babel/code-frame": "npm:^7.27.1" + "@babel/generator": "npm:^7.27.3" + "@babel/parser": "npm:^7.27.4" + "@babel/template": "npm:^7.27.2" + "@babel/types": "npm:^7.27.3" + debug: "npm:^4.3.1" + globals: "npm:^11.1.0" + checksum: 10c0/6de8aa2a0637a6ee6d205bf48b9e923928a02415771fdec60085ed754dcdf605e450bb3315c2552fa51c31a4662275b45d5ae4ad527ce55a7db9acebdbbbb8ed + languageName: node + linkType: hard + +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.27.1, @babel/types@npm:^7.27.3, @babel/types@npm:^7.27.6": + version: 7.27.6 + resolution: "@babel/types@npm:7.27.6" + dependencies: + "@babel/helper-string-parser": "npm:^7.27.1" + "@babel/helper-validator-identifier": "npm:^7.27.1" + checksum: 10c0/39d556be114f2a6d874ea25ad39826a9e3a0e98de0233ae6d932f6d09a4b222923a90a7274c635ed61f1ba49bbd345329226678800900ad1c8d11afabd573aaf + languageName: node + linkType: hard + "@biomejs/biome@npm:^1.9.4": version: 1.9.4 resolution: "@biomejs/biome@npm:1.9.4" @@ -1332,7 +1539,7 @@ __metadata: languageName: node linkType: hard -"@jridgewell/gen-mapping@npm:^0.3.2": +"@jridgewell/gen-mapping@npm:^0.3.2, @jridgewell/gen-mapping@npm:^0.3.5": version: 0.3.8 resolution: "@jridgewell/gen-mapping@npm:0.3.8" dependencies: @@ -1374,7 +1581,7 @@ __metadata: languageName: node linkType: hard -"@jridgewell/trace-mapping@npm:^0.3.24": +"@jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25": version: 0.3.25 resolution: "@jridgewell/trace-mapping@npm:0.3.25" dependencies: @@ -1395,6 +1602,59 @@ __metadata: languageName: node linkType: hard +"@microsoft/api-extractor-model@npm:7.30.6": + version: 7.30.6 + resolution: "@microsoft/api-extractor-model@npm:7.30.6" + dependencies: + "@microsoft/tsdoc": "npm:~0.15.1" + "@microsoft/tsdoc-config": "npm:~0.17.1" + "@rushstack/node-core-library": "npm:5.13.1" + checksum: 10c0/a2f6d01302f9e97e3100eb338e66ea2efd63742f81863cf69b616dbd2804ac47a1f988b6e5b8e2a836fb9f0be39eba3972d68c3654bfadd54339efb56d1c0643 + languageName: node + linkType: hard + +"@microsoft/api-extractor@npm:^7.50.1": + version: 7.52.8 + resolution: "@microsoft/api-extractor@npm:7.52.8" + dependencies: + "@microsoft/api-extractor-model": "npm:7.30.6" + "@microsoft/tsdoc": "npm:~0.15.1" + "@microsoft/tsdoc-config": "npm:~0.17.1" + "@rushstack/node-core-library": "npm:5.13.1" + "@rushstack/rig-package": "npm:0.5.3" + "@rushstack/terminal": "npm:0.15.3" + "@rushstack/ts-command-line": "npm:5.0.1" + lodash: "npm:~4.17.15" + minimatch: "npm:~3.0.3" + resolve: "npm:~1.22.1" + semver: "npm:~7.5.4" + source-map: "npm:~0.6.1" + typescript: "npm:5.8.2" + bin: + api-extractor: bin/api-extractor + checksum: 10c0/42f4335ebf27c7fa819a858378062d774e130dda109f001825d49fd284430c62ea9eb703a8c49a9dd8e3a607bbf19ba4457548353282673e7429e0e6d01b325b + languageName: node + linkType: hard + +"@microsoft/tsdoc-config@npm:~0.17.1": + version: 0.17.1 + resolution: "@microsoft/tsdoc-config@npm:0.17.1" + dependencies: + "@microsoft/tsdoc": "npm:0.15.1" + ajv: "npm:~8.12.0" + jju: "npm:~1.4.0" + resolve: "npm:~1.22.2" + checksum: 10c0/a686355796f492f27af17e2a17d615221309caf4d9f9047a5a8f17f8625c467c4c81e2a7923ddafd71b892631d5e5013c4b8cc49c5867d3cc1d260fd90c1413d + languageName: node + linkType: hard + +"@microsoft/tsdoc@npm:0.15.1, @microsoft/tsdoc@npm:~0.15.1": + version: 0.15.1 + resolution: "@microsoft/tsdoc@npm:0.15.1" + checksum: 10c0/09948691fac56c45a0d1920de478d66a30371a325bd81addc92eea5654d95106ce173c440fea1a1bd5bb95b3a544b6d4def7bb0b5a846c05d043575d8369a20c + languageName: node + linkType: hard + "@nodelib/fs.scandir@npm:2.1.5": version: 2.1.5 resolution: "@nodelib/fs.scandir@npm:2.1.5" @@ -1713,9 +1973,11 @@ __metadata: version: 0.0.0-use.local resolution: "@rivetkit/framework-base@workspace:packages/frameworks/framework-base" dependencies: + "@tanstack/store": "npm:^0.7.1" rivetkit: "workspace:*" - tsup: "npm:^8.3.6" typescript: "npm:^5.5.2" + vite: "npm:^6.3.5" + vite-plugin-dts: "npm:^4.5.4" vitest: "npm:^3.1.1" peerDependencies: rivetkit: "*" @@ -1762,9 +2024,14 @@ __metadata: resolution: "@rivetkit/react@workspace:packages/frameworks/react" dependencies: "@rivetkit/framework-base": "workspace:*" + "@tanstack/react-store": "npm:^0.7.1" + "@types/react": "npm:^19.1.8" + "@types/react-dom": "npm:^19.1.6" + "@vitejs/plugin-react": "npm:^4.5.2" rivetkit: "workspace:^" - tsup: "npm:^8.3.6" typescript: "npm:^5.5.2" + vite: "npm:^6.3.5" + vite-plugin-dts: "npm:^4.5.4" vitest: "npm:^3.1.1" peerDependencies: react: ^18 || ^19 @@ -1831,6 +2098,29 @@ __metadata: languageName: unknown linkType: soft +"@rolldown/pluginutils@npm:1.0.0-beta.11": + version: 1.0.0-beta.11 + resolution: "@rolldown/pluginutils@npm:1.0.0-beta.11" + checksum: 10c0/140088e33a4dd3bc21d06fa0cbe79b52e95487c9737d425aa5729e52446dc70f066fbce632489a53e45bb567f1e86c19835677c98fe5d4123ae1e2fef53f8d97 + languageName: node + linkType: hard + +"@rollup/pluginutils@npm:^5.1.4": + version: 5.2.0 + resolution: "@rollup/pluginutils@npm:5.2.0" + dependencies: + "@types/estree": "npm:^1.0.0" + estree-walker: "npm:^2.0.2" + picomatch: "npm:^4.0.2" + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + checksum: 10c0/794890d512751451bcc06aa112366ef47ea8f9125dac49b1abf72ff8b079518b09359de9c60a013b33266541634e765ae61839c749fae0edb59a463418665c55 + languageName: node + linkType: hard + "@rollup/rollup-android-arm-eabi@npm:4.39.0": version: 4.39.0 resolution: "@rollup/rollup-android-arm-eabi@npm:4.39.0" @@ -1838,6 +2128,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-android-arm-eabi@npm:4.44.0": + version: 4.44.0 + resolution: "@rollup/rollup-android-arm-eabi@npm:4.44.0" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + "@rollup/rollup-android-arm64@npm:4.39.0": version: 4.39.0 resolution: "@rollup/rollup-android-arm64@npm:4.39.0" @@ -1845,6 +2142,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-android-arm64@npm:4.44.0": + version: 4.44.0 + resolution: "@rollup/rollup-android-arm64@npm:4.44.0" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + "@rollup/rollup-darwin-arm64@npm:4.39.0": version: 4.39.0 resolution: "@rollup/rollup-darwin-arm64@npm:4.39.0" @@ -1852,6 +2156,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-darwin-arm64@npm:4.44.0": + version: 4.44.0 + resolution: "@rollup/rollup-darwin-arm64@npm:4.44.0" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + "@rollup/rollup-darwin-x64@npm:4.39.0": version: 4.39.0 resolution: "@rollup/rollup-darwin-x64@npm:4.39.0" @@ -1859,6 +2170,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-darwin-x64@npm:4.44.0": + version: 4.44.0 + resolution: "@rollup/rollup-darwin-x64@npm:4.44.0" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + "@rollup/rollup-freebsd-arm64@npm:4.39.0": version: 4.39.0 resolution: "@rollup/rollup-freebsd-arm64@npm:4.39.0" @@ -1866,6 +2184,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-freebsd-arm64@npm:4.44.0": + version: 4.44.0 + resolution: "@rollup/rollup-freebsd-arm64@npm:4.44.0" + conditions: os=freebsd & cpu=arm64 + languageName: node + linkType: hard + "@rollup/rollup-freebsd-x64@npm:4.39.0": version: 4.39.0 resolution: "@rollup/rollup-freebsd-x64@npm:4.39.0" @@ -1873,6 +2198,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-freebsd-x64@npm:4.44.0": + version: 4.44.0 + resolution: "@rollup/rollup-freebsd-x64@npm:4.44.0" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + "@rollup/rollup-linux-arm-gnueabihf@npm:4.39.0": version: 4.39.0 resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.39.0" @@ -1880,6 +2212,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-arm-gnueabihf@npm:4.44.0": + version: 4.44.0 + resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.44.0" + conditions: os=linux & cpu=arm & libc=glibc + languageName: node + linkType: hard + "@rollup/rollup-linux-arm-musleabihf@npm:4.39.0": version: 4.39.0 resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.39.0" @@ -1887,6 +2226,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-arm-musleabihf@npm:4.44.0": + version: 4.44.0 + resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.44.0" + conditions: os=linux & cpu=arm & libc=musl + languageName: node + linkType: hard + "@rollup/rollup-linux-arm64-gnu@npm:4.39.0": version: 4.39.0 resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.39.0" @@ -1894,6 +2240,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-arm64-gnu@npm:4.44.0": + version: 4.44.0 + resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.44.0" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + "@rollup/rollup-linux-arm64-musl@npm:4.39.0": version: 4.39.0 resolution: "@rollup/rollup-linux-arm64-musl@npm:4.39.0" @@ -1901,6 +2254,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-arm64-musl@npm:4.44.0": + version: 4.44.0 + resolution: "@rollup/rollup-linux-arm64-musl@npm:4.44.0" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + "@rollup/rollup-linux-loongarch64-gnu@npm:4.39.0": version: 4.39.0 resolution: "@rollup/rollup-linux-loongarch64-gnu@npm:4.39.0" @@ -1908,6 +2268,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-loongarch64-gnu@npm:4.44.0": + version: 4.44.0 + resolution: "@rollup/rollup-linux-loongarch64-gnu@npm:4.44.0" + conditions: os=linux & cpu=loong64 & libc=glibc + languageName: node + linkType: hard + "@rollup/rollup-linux-powerpc64le-gnu@npm:4.39.0": version: 4.39.0 resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.39.0" @@ -1915,6 +2282,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-powerpc64le-gnu@npm:4.44.0": + version: 4.44.0 + resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.44.0" + conditions: os=linux & cpu=ppc64 & libc=glibc + languageName: node + linkType: hard + "@rollup/rollup-linux-riscv64-gnu@npm:4.39.0": version: 4.39.0 resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.39.0" @@ -1922,6 +2296,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-riscv64-gnu@npm:4.44.0": + version: 4.44.0 + resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.44.0" + conditions: os=linux & cpu=riscv64 & libc=glibc + languageName: node + linkType: hard + "@rollup/rollup-linux-riscv64-musl@npm:4.39.0": version: 4.39.0 resolution: "@rollup/rollup-linux-riscv64-musl@npm:4.39.0" @@ -1929,6 +2310,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-riscv64-musl@npm:4.44.0": + version: 4.44.0 + resolution: "@rollup/rollup-linux-riscv64-musl@npm:4.44.0" + conditions: os=linux & cpu=riscv64 & libc=musl + languageName: node + linkType: hard + "@rollup/rollup-linux-s390x-gnu@npm:4.39.0": version: 4.39.0 resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.39.0" @@ -1936,6 +2324,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-s390x-gnu@npm:4.44.0": + version: 4.44.0 + resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.44.0" + conditions: os=linux & cpu=s390x & libc=glibc + languageName: node + linkType: hard + "@rollup/rollup-linux-x64-gnu@npm:4.39.0": version: 4.39.0 resolution: "@rollup/rollup-linux-x64-gnu@npm:4.39.0" @@ -1943,6 +2338,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-x64-gnu@npm:4.44.0": + version: 4.44.0 + resolution: "@rollup/rollup-linux-x64-gnu@npm:4.44.0" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + "@rollup/rollup-linux-x64-musl@npm:4.39.0": version: 4.39.0 resolution: "@rollup/rollup-linux-x64-musl@npm:4.39.0" @@ -1950,6 +2352,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-x64-musl@npm:4.44.0": + version: 4.44.0 + resolution: "@rollup/rollup-linux-x64-musl@npm:4.44.0" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + "@rollup/rollup-win32-arm64-msvc@npm:4.39.0": version: 4.39.0 resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.39.0" @@ -1957,6 +2366,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-win32-arm64-msvc@npm:4.44.0": + version: 4.44.0 + resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.44.0" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + "@rollup/rollup-win32-ia32-msvc@npm:4.39.0": version: 4.39.0 resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.39.0" @@ -1964,6 +2380,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-win32-ia32-msvc@npm:4.44.0": + version: 4.44.0 + resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.44.0" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + "@rollup/rollup-win32-x64-msvc@npm:4.39.0": version: 4.39.0 resolution: "@rollup/rollup-win32-x64-msvc@npm:4.39.0" @@ -1971,6 +2394,71 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-win32-x64-msvc@npm:4.44.0": + version: 4.44.0 + resolution: "@rollup/rollup-win32-x64-msvc@npm:4.44.0" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@rushstack/node-core-library@npm:5.13.1": + version: 5.13.1 + resolution: "@rushstack/node-core-library@npm:5.13.1" + dependencies: + ajv: "npm:~8.13.0" + ajv-draft-04: "npm:~1.0.0" + ajv-formats: "npm:~3.0.1" + fs-extra: "npm:~11.3.0" + import-lazy: "npm:~4.0.0" + jju: "npm:~1.4.0" + resolve: "npm:~1.22.1" + semver: "npm:~7.5.4" + peerDependencies: + "@types/node": "*" + peerDependenciesMeta: + "@types/node": + optional: true + checksum: 10c0/e3d31c876390040235e0aae9e458a6b7214cb4385fd743adb49b8408911e7d662761d745276d4ff10c09a9b47b55a3a01690c4800f4b775d82b7c991b3de25d2 + languageName: node + linkType: hard + +"@rushstack/rig-package@npm:0.5.3": + version: 0.5.3 + resolution: "@rushstack/rig-package@npm:0.5.3" + dependencies: + resolve: "npm:~1.22.1" + strip-json-comments: "npm:~3.1.1" + checksum: 10c0/ef0b0115b60007f965b875f671019ac7fc26592f6bf7d7b40fa8c68e8dc37e9f7dcda3b5533b489ebf04d28a182dc60987bfd365a8d4173c73d482b270647741 + languageName: node + linkType: hard + +"@rushstack/terminal@npm:0.15.3": + version: 0.15.3 + resolution: "@rushstack/terminal@npm:0.15.3" + dependencies: + "@rushstack/node-core-library": "npm:5.13.1" + supports-color: "npm:~8.1.1" + peerDependencies: + "@types/node": "*" + peerDependenciesMeta: + "@types/node": + optional: true + checksum: 10c0/3e8be5168aea2224261fce071808948d63790fa9d9fb2dfb2a659e616b4b9ce513ebc4cf211d528322987b75fc83482e8e0a7c1e262077e271ef887a5b56f5aa + languageName: node + linkType: hard + +"@rushstack/ts-command-line@npm:5.0.1": + version: 5.0.1 + resolution: "@rushstack/ts-command-line@npm:5.0.1" + dependencies: + "@rushstack/terminal": "npm:0.15.3" + "@types/argparse": "npm:1.0.38" + argparse: "npm:~1.0.9" + string-argv: "npm:~0.3.1" + checksum: 10c0/9f4ffe63d5eaa9bda2b026c68e62a99f6c1d6d8ad3cc7a4247d6cd90f2fdf038ca9e950911f8035f9cb408a54abcd049ba5435206f63f98fb8df484488debd83 + languageName: node + linkType: hard + "@selderee/plugin-htmlparser2@npm:^0.11.0": version: 0.11.0 resolution: "@selderee/plugin-htmlparser2@npm:0.11.0" @@ -1981,6 +2469,74 @@ __metadata: languageName: node linkType: hard +"@tanstack/react-store@npm:^0.7.1": + version: 0.7.1 + resolution: "@tanstack/react-store@npm:0.7.1" + dependencies: + "@tanstack/store": "npm:0.7.1" + use-sync-external-store: "npm:^1.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + checksum: 10c0/50a64f615f448fd323eb968237c91faae1a3c3cb0ed4b52d3b6a620723dab10437ae99d94bd9e1ff03bd3ad1d4d75cadc5fee042ab6d9b3c47f5972716cac680 + languageName: node + linkType: hard + +"@tanstack/store@npm:0.7.1, @tanstack/store@npm:^0.7.1": + version: 0.7.1 + resolution: "@tanstack/store@npm:0.7.1" + checksum: 10c0/bc1ebf0e8ced2717ec89b7bfac94da436fd23b0ea485b7805b594bee6c6870d67e1184efd5f140cd8d64d9192ee09adad155abea9a2f5bc1ba96f21645299cd8 + languageName: node + linkType: hard + +"@types/argparse@npm:1.0.38": + version: 1.0.38 + resolution: "@types/argparse@npm:1.0.38" + checksum: 10c0/4fc892da5df16923f48180da2d1f4562fa8b0507cf636b24780444fa0a1d7321d4dc0c0ecbee6152968823f5a2ae0d321b4f8c705a489bf1ae1245bdeb0868fd + languageName: node + linkType: hard + +"@types/babel__core@npm:^7.20.5": + version: 7.20.5 + resolution: "@types/babel__core@npm:7.20.5" + dependencies: + "@babel/parser": "npm:^7.20.7" + "@babel/types": "npm:^7.20.7" + "@types/babel__generator": "npm:*" + "@types/babel__template": "npm:*" + "@types/babel__traverse": "npm:*" + checksum: 10c0/bdee3bb69951e833a4b811b8ee9356b69a61ed5b7a23e1a081ec9249769117fa83aaaf023bb06562a038eb5845155ff663e2d5c75dd95c1d5ccc91db012868ff + languageName: node + linkType: hard + +"@types/babel__generator@npm:*": + version: 7.27.0 + resolution: "@types/babel__generator@npm:7.27.0" + dependencies: + "@babel/types": "npm:^7.0.0" + checksum: 10c0/9f9e959a8792df208a9d048092fda7e1858bddc95c6314857a8211a99e20e6830bdeb572e3587ae8be5429e37f2a96fcf222a9f53ad232f5537764c9e13a2bbd + languageName: node + linkType: hard + +"@types/babel__template@npm:*": + version: 7.4.4 + resolution: "@types/babel__template@npm:7.4.4" + dependencies: + "@babel/parser": "npm:^7.1.0" + "@babel/types": "npm:^7.0.0" + checksum: 10c0/cc84f6c6ab1eab1427e90dd2b76ccee65ce940b778a9a67be2c8c39e1994e6f5bbc8efa309f6cea8dc6754994524cd4d2896558df76d92e7a1f46ecffee7112b + languageName: node + linkType: hard + +"@types/babel__traverse@npm:*": + version: 7.20.7 + resolution: "@types/babel__traverse@npm:7.20.7" + dependencies: + "@babel/types": "npm:^7.20.7" + checksum: 10c0/5386f0af44f8746b063b87418f06129a814e16bb2686965a575e9d7376b360b088b89177778d8c426012abc43dd1a2d8ec3218bfc382280c898682746ce2ffbd + languageName: node + linkType: hard + "@types/body-parser@npm:*": version: 1.19.5 resolution: "@types/body-parser@npm:1.19.5" @@ -2039,6 +2595,13 @@ __metadata: languageName: node linkType: hard +"@types/estree@npm:1.0.8": + version: 1.0.8 + resolution: "@types/estree@npm:1.0.8" + checksum: 10c0/39d34d1afaa338ab9763f37ad6066e3f349444f9052b9676a7cc0252ef9485a41c6d81c9c4e0d26e9077993354edf25efc853f3224dd4b447175ef62bdcc86a5 + languageName: node + linkType: hard + "@types/express-serve-static-core@npm:^5.0.0": version: 5.0.6 resolution: "@types/express-serve-static-core@npm:5.0.6" @@ -2158,6 +2721,24 @@ __metadata: languageName: node linkType: hard +"@types/react-dom@npm:^19.1.6": + version: 19.1.6 + resolution: "@types/react-dom@npm:19.1.6" + peerDependencies: + "@types/react": ^19.0.0 + checksum: 10c0/7ba74eee2919e3f225e898b65fdaa16e54952aaf9e3472a080ddc82ca54585e46e60b3c52018d21d4b7053f09d27b8293e9f468b85f9932ff452cd290cc131e8 + languageName: node + linkType: hard + +"@types/react@npm:^19.1.8": + version: 19.1.8 + resolution: "@types/react@npm:19.1.8" + dependencies: + csstype: "npm:^3.0.2" + checksum: 10c0/4908772be6dc941df276931efeb0e781777fa76e4d5d12ff9f75eb2dcc2db3065e0100efde16fde562c5bafa310cc8f50c1ee40a22640459e066e72cd342143e + languageName: node + linkType: hard + "@types/retry@npm:0.12.2": version: 0.12.2 resolution: "@types/retry@npm:0.12.2" @@ -2202,6 +2783,22 @@ __metadata: languageName: node linkType: hard +"@vitejs/plugin-react@npm:^4.5.2": + version: 4.5.2 + resolution: "@vitejs/plugin-react@npm:4.5.2" + dependencies: + "@babel/core": "npm:^7.27.4" + "@babel/plugin-transform-react-jsx-self": "npm:^7.27.1" + "@babel/plugin-transform-react-jsx-source": "npm:^7.27.1" + "@rolldown/pluginutils": "npm:1.0.0-beta.11" + "@types/babel__core": "npm:^7.20.5" + react-refresh: "npm:^0.17.0" + peerDependencies: + vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0 + checksum: 10c0/37c58e6a9c953ab27eb6de42f0d317d26901117d4e4bec067b098c48353065888d240b819efc5b47e325f83532305d3cc51996fd3eb53f8649b199ecc4424746 + languageName: node + linkType: hard + "@vitest/expect@npm:3.1.1": version: 3.1.1 resolution: "@vitest/expect@npm:3.1.1" @@ -2300,6 +2897,94 @@ __metadata: languageName: node linkType: hard +"@volar/language-core@npm:2.4.14, @volar/language-core@npm:~2.4.11": + version: 2.4.14 + resolution: "@volar/language-core@npm:2.4.14" + dependencies: + "@volar/source-map": "npm:2.4.14" + checksum: 10c0/ac375e88cf7bad7eb94eb48750eeb37a237378c5ebafd8c0ea764c39fee2a69d9195468c19fbbeeeaa4a205b966e83f732004ab52df1d72206c30dcea2a1b623 + languageName: node + linkType: hard + +"@volar/source-map@npm:2.4.14": + version: 2.4.14 + resolution: "@volar/source-map@npm:2.4.14" + checksum: 10c0/b8c0c83e5796b92a5087749e4db5d894edf61775c3912f4bd0bbe45a237441a78e1502e433d3cb25feef1c63f01e7a5d51ea417dfb6b352b3e898f707c64c972 + languageName: node + linkType: hard + +"@volar/typescript@npm:^2.4.11": + version: 2.4.14 + resolution: "@volar/typescript@npm:2.4.14" + dependencies: + "@volar/language-core": "npm:2.4.14" + path-browserify: "npm:^1.0.1" + vscode-uri: "npm:^3.0.8" + checksum: 10c0/bdbe2375cc99b1acfc29c718c30240b888a41cf32b413a24425ea666552d65fec32de20dda14c522e2ec626dcaf2f6f55ba1c9dc1d2c5a5727fe7e2ea87857d3 + languageName: node + linkType: hard + +"@vue/compiler-core@npm:3.5.17": + version: 3.5.17 + resolution: "@vue/compiler-core@npm:3.5.17" + dependencies: + "@babel/parser": "npm:^7.27.5" + "@vue/shared": "npm:3.5.17" + entities: "npm:^4.5.0" + estree-walker: "npm:^2.0.2" + source-map-js: "npm:^1.2.1" + checksum: 10c0/d6b50f6f0a71a77a04452877c601cfd6ea13ec07aa68a061523166c1150e159f64230eee28e1042e6113e334a11c25c306bae5d463931a9e7f96261a29a0042d + languageName: node + linkType: hard + +"@vue/compiler-dom@npm:^3.5.0": + version: 3.5.17 + resolution: "@vue/compiler-dom@npm:3.5.17" + dependencies: + "@vue/compiler-core": "npm:3.5.17" + "@vue/shared": "npm:3.5.17" + checksum: 10c0/27e4c201522abcb2755318fc502a4cf8a752fb90441bbd954c018990e80bb30e4075dadefa7f36671028779d9c21d34d76330f6b441921e317cf1c102a5411b6 + languageName: node + linkType: hard + +"@vue/compiler-vue2@npm:^2.7.16": + version: 2.7.16 + resolution: "@vue/compiler-vue2@npm:2.7.16" + dependencies: + de-indent: "npm:^1.0.2" + he: "npm:^1.2.0" + checksum: 10c0/c76c3fad770b9a7da40b314116cc9da173da20e5fd68785c8ed8dd8a87d02f239545fa296e16552e040ec86b47bfb18283b39447b250c2e76e479bd6ae475bb3 + languageName: node + linkType: hard + +"@vue/language-core@npm:2.2.0": + version: 2.2.0 + resolution: "@vue/language-core@npm:2.2.0" + dependencies: + "@volar/language-core": "npm:~2.4.11" + "@vue/compiler-dom": "npm:^3.5.0" + "@vue/compiler-vue2": "npm:^2.7.16" + "@vue/shared": "npm:^3.5.0" + alien-signals: "npm:^0.4.9" + minimatch: "npm:^9.0.3" + muggle-string: "npm:^0.4.1" + path-browserify: "npm:^1.0.1" + peerDependencies: + typescript: "*" + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/1c44cc4067266bbc825af358a867aed455963a08c160cd9df9a47571fd917a87d9de9bdea6149877e0c8309a6cf39f263e7cf2fbadeceba47a5a158f392151b2 + languageName: node + linkType: hard + +"@vue/shared@npm:3.5.17, @vue/shared@npm:^3.5.0": + version: 3.5.17 + resolution: "@vue/shared@npm:3.5.17" + checksum: 10c0/915d8f80d863826531cf6ddefeb52455cbffcbca4d14717472b7765b3142d2ad9900dfce351e90a22e1fe9e2f8fca588421de6e751e1c816ab9e1fdefa3e8a0d + languageName: node + linkType: hard + "abbrev@npm:^2.0.0": version: 2.0.0 resolution: "abbrev@npm:2.0.0" @@ -2385,6 +3070,75 @@ __metadata: languageName: node linkType: hard +"ajv-draft-04@npm:~1.0.0": + version: 1.0.0 + resolution: "ajv-draft-04@npm:1.0.0" + peerDependencies: + ajv: ^8.5.0 + peerDependenciesMeta: + ajv: + optional: true + checksum: 10c0/6044310bd38c17d77549fd326bd40ce1506fa10b0794540aa130180808bf94117fac8c9b448c621512bea60e4a947278f6a978e87f10d342950c15b33ddd9271 + languageName: node + linkType: hard + +"ajv-formats@npm:~3.0.1": + version: 3.0.1 + resolution: "ajv-formats@npm:3.0.1" + dependencies: + ajv: "npm:^8.0.0" + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + checksum: 10c0/168d6bca1ea9f163b41c8147bae537e67bd963357a5488a1eaf3abe8baa8eec806d4e45f15b10767e6020679315c7e1e5e6803088dfb84efa2b4e9353b83dd0a + languageName: node + linkType: hard + +"ajv@npm:^8.0.0": + version: 8.17.1 + resolution: "ajv@npm:8.17.1" + dependencies: + fast-deep-equal: "npm:^3.1.3" + fast-uri: "npm:^3.0.1" + json-schema-traverse: "npm:^1.0.0" + require-from-string: "npm:^2.0.2" + checksum: 10c0/ec3ba10a573c6b60f94639ffc53526275917a2df6810e4ab5a6b959d87459f9ef3f00d5e7865b82677cb7d21590355b34da14d1d0b9c32d75f95a187e76fff35 + languageName: node + linkType: hard + +"ajv@npm:~8.12.0": + version: 8.12.0 + resolution: "ajv@npm:8.12.0" + dependencies: + fast-deep-equal: "npm:^3.1.1" + json-schema-traverse: "npm:^1.0.0" + require-from-string: "npm:^2.0.2" + uri-js: "npm:^4.2.2" + checksum: 10c0/ac4f72adf727ee425e049bc9d8b31d4a57e1c90da8d28bcd23d60781b12fcd6fc3d68db5df16994c57b78b94eed7988f5a6b482fd376dc5b084125e20a0a622e + languageName: node + linkType: hard + +"ajv@npm:~8.13.0": + version: 8.13.0 + resolution: "ajv@npm:8.13.0" + dependencies: + fast-deep-equal: "npm:^3.1.3" + json-schema-traverse: "npm:^1.0.0" + require-from-string: "npm:^2.0.2" + uri-js: "npm:^4.4.1" + checksum: 10c0/14c6497b6f72843986d7344175a1aa0e2c35b1e7f7475e55bc582cddb765fca7e6bf950f465dc7846f817776d9541b706f4b5b3fbedd8dfdeb5fce6f22864264 + languageName: node + linkType: hard + +"alien-signals@npm:^0.4.9": + version: 0.4.14 + resolution: "alien-signals@npm:0.4.14" + checksum: 10c0/5abb3377bcaf6b3819e950084b3ebd022ad90210105afb450c89dc347e80e28da441bf34858a57ea122abe7603e552ddbad80dc597c8f02a0a5206c5fb9c20cb + languageName: node + linkType: hard + "ansi-regex@npm:^5.0.1": version: 5.0.1 resolution: "ansi-regex@npm:5.0.1" @@ -2422,6 +3176,15 @@ __metadata: languageName: node linkType: hard +"argparse@npm:~1.0.9": + version: 1.0.10 + resolution: "argparse@npm:1.0.10" + dependencies: + sprintf-js: "npm:~1.0.2" + checksum: 10c0/b2972c5c23c63df66bca144dbc65d180efa74f25f8fd9b7d9a0a6c88ae839db32df3d54770dcb6460cf840d232b60695d1a6b1053f599d84e73f7437087712de + languageName: node + linkType: hard + "as-table@npm:^1.0.36": version: 1.0.55 resolution: "as-table@npm:1.0.55" @@ -2497,6 +3260,16 @@ __metadata: languageName: node linkType: hard +"brace-expansion@npm:^1.1.7": + version: 1.1.12 + resolution: "brace-expansion@npm:1.1.12" + dependencies: + balanced-match: "npm:^1.0.0" + concat-map: "npm:0.0.1" + checksum: 10c0/975fecac2bb7758c062c20d0b3b6288c7cc895219ee25f0a64a9de662dbac981ff0b6e89909c3897c1f84fa353113a721923afdec5f8b2350255b097f12b1f73 + languageName: node + linkType: hard + "brace-expansion@npm:^2.0.1": version: 2.0.1 resolution: "brace-expansion@npm:2.0.1" @@ -2515,6 +3288,20 @@ __metadata: languageName: node linkType: hard +"browserslist@npm:^4.24.0": + version: 4.25.0 + resolution: "browserslist@npm:4.25.0" + dependencies: + caniuse-lite: "npm:^1.0.30001718" + electron-to-chromium: "npm:^1.5.160" + node-releases: "npm:^2.0.19" + update-browserslist-db: "npm:^1.1.3" + bin: + browserslist: cli.js + checksum: 10c0/cc16c55b4468b18684a0e1ca303592b38635b1155d6724f172407192737a2f405b8030d87a05813729592793445b3d15e737b0055f901cdecccb29b1e580a1c5 + languageName: node + linkType: hard + "buffer-from@npm:^1.0.0": version: 1.1.2 resolution: "buffer-from@npm:1.1.2" @@ -2607,6 +3394,13 @@ __metadata: languageName: node linkType: hard +"caniuse-lite@npm:^1.0.30001718": + version: 1.0.30001723 + resolution: "caniuse-lite@npm:1.0.30001723" + checksum: 10c0/e019503061759b96017c4d27ddd7ca1b48533eabcd0431b51d2e3156f99f6b031075e46c279c0db63424cdfc874bba992caec2db51b922a0f945e686246886f6 + languageName: node + linkType: hard + "cbor-extract@npm:^2.2.0": version: 2.2.0 resolution: "cbor-extract@npm:2.2.0" @@ -2814,6 +3608,20 @@ __metadata: languageName: node linkType: hard +"compare-versions@npm:^6.1.1": + version: 6.1.1 + resolution: "compare-versions@npm:6.1.1" + checksum: 10c0/415205c7627f9e4f358f571266422980c9fe2d99086be0c9a48008ef7c771f32b0fbe8e97a441ffedc3910872f917a0675fe0fe3c3b6d331cda6d8690be06338 + languageName: node + linkType: hard + +"concat-map@npm:0.0.1": + version: 0.0.1 + resolution: "concat-map@npm:0.0.1" + checksum: 10c0/c996b1cfdf95b6c90fee4dae37e332c8b6eb7d106430c17d538034c0ad9a1630cb194d2ab37293b1bdd4d779494beee7786d586a50bd9376fd6f7bcc2bd4c98f + languageName: node + linkType: hard + "concurrently@npm:^9.1.2": version: 9.1.2 resolution: "concurrently@npm:9.1.2" @@ -2850,6 +3658,13 @@ __metadata: languageName: node linkType: hard +"confbox@npm:^0.2.1": + version: 0.2.2 + resolution: "confbox@npm:0.2.2" + checksum: 10c0/7c246588d533d31e8cdf66cb4701dff6de60f9be77ab54c0d0338e7988750ac56863cc0aca1b3f2046f45ff223a765d3e5d4977a7674485afcd37b6edf3fd129 + languageName: node + linkType: hard + "config-chain@npm:^1.1.13": version: 1.1.13 resolution: "config-chain@npm:1.1.13" @@ -2897,6 +3712,13 @@ __metadata: languageName: node linkType: hard +"convert-source-map@npm:^2.0.0": + version: 2.0.0 + resolution: "convert-source-map@npm:2.0.0" + checksum: 10c0/8f2f7a27a1a011cc6cc88cc4da2d7d0cfa5ee0369508baae3d98c260bb3ac520691464e5bbe4ae7cdf09860c1d69ecc6f70c63c6e7c7f7e3f18ec08484dc7d9b + languageName: node + linkType: hard + "cookie-signature@npm:^1.2.1": version: 1.2.2 resolution: "cookie-signature@npm:1.2.2" @@ -2942,6 +3764,13 @@ __metadata: languageName: node linkType: hard +"csstype@npm:^3.0.2": + version: 3.1.3 + resolution: "csstype@npm:3.1.3" + checksum: 10c0/80c089d6f7e0c5b2bd83cf0539ab41474198579584fa10d86d0cafe0642202343cbc119e076a0b1aece191989477081415d66c9fefbf3c957fc2fc4b7009f248 + languageName: node + linkType: hard + "data-uri-to-buffer@npm:^2.0.0": version: 2.0.2 resolution: "data-uri-to-buffer@npm:2.0.2" @@ -2963,6 +3792,13 @@ __metadata: languageName: node linkType: hard +"de-indent@npm:^1.0.2": + version: 1.0.2 + resolution: "de-indent@npm:1.0.2" + checksum: 10c0/7058ce58abd6dfc123dd204e36be3797abd419b59482a634605420f47ae97639d0c183ec5d1b904f308a01033f473673897afc2bd59bc620ebf1658763ef4291 + languageName: node + linkType: hard + "debug@npm:4, debug@npm:^4.3.4, debug@npm:^4.3.5, debug@npm:^4.4.0": version: 4.4.0 resolution: "debug@npm:4.4.0" @@ -2975,6 +3811,18 @@ __metadata: languageName: node linkType: hard +"debug@npm:^4.1.0, debug@npm:^4.3.1": + version: 4.4.1 + resolution: "debug@npm:4.4.1" + dependencies: + ms: "npm:^2.1.3" + peerDependenciesMeta: + supports-color: + optional: true + checksum: 10c0/d2b44bc1afd912b49bb7ebb0d50a860dc93a4dd7d946e8de94abc957bb63726b7dd5aa48c18c2386c379ec024c46692e15ed3ed97d481729f929201e671fcd55 + languageName: node + linkType: hard + "dedent@npm:^1.5.3": version: 1.5.3 resolution: "dedent@npm:1.5.3" @@ -3177,6 +4025,13 @@ __metadata: languageName: node linkType: hard +"electron-to-chromium@npm:^1.5.160": + version: 1.5.170 + resolution: "electron-to-chromium@npm:1.5.170" + checksum: 10c0/138c6d293b310729f7550f6d36ae4b2bdd0453220e8b11d8780395cf38c9ae816b1f30a3978d790f1951cfa89e7c7911af4a779094c33ae167c89c7ba6751834 + languageName: node + linkType: hard + "emoji-regex@npm:^8.0.0": version: 8.0.0 resolution: "emoji-regex@npm:8.0.0" @@ -3207,7 +4062,7 @@ __metadata: languageName: node linkType: hard -"entities@npm:^4.2.0, entities@npm:^4.4.0": +"entities@npm:^4.2.0, entities@npm:^4.4.0, entities@npm:^4.5.0": version: 4.5.0 resolution: "entities@npm:4.5.0" checksum: 10c0/5b039739f7621f5d1ad996715e53d964035f75ad3b9a4d38c6b3804bb226e282ffeae2443624d8fdd9c47d8e926ae9ac009c54671243f0c3294c26af7cc85250 @@ -3603,7 +4458,7 @@ __metadata: languageName: node linkType: hard -"escalade@npm:^3.1.1": +"escalade@npm:^3.1.1, escalade@npm:^3.2.0": version: 3.2.0 resolution: "escalade@npm:3.2.0" checksum: 10c0/ced4dd3a78e15897ed3be74e635110bbf3b08877b0a41be50dcb325ee0e0b5f65fc2d50e9845194d7c4633f327e2e1c6cce00a71b617c5673df0374201d67f65 @@ -3631,6 +4486,13 @@ __metadata: languageName: node linkType: hard +"estree-walker@npm:^2.0.2": + version: 2.0.2 + resolution: "estree-walker@npm:2.0.2" + checksum: 10c0/53a6c54e2019b8c914dc395890153ffdc2322781acf4bd7d1a32d7aedc1710807bdcd866ac133903d5629ec601fbb50abe8c2e5553c7f5a0afdd9b6af6c945af + languageName: node + linkType: hard + "estree-walker@npm:^3.0.3": version: 3.0.3 resolution: "estree-walker@npm:3.0.3" @@ -3764,6 +4626,13 @@ __metadata: languageName: node linkType: hard +"fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3": + version: 3.1.3 + resolution: "fast-deep-equal@npm:3.1.3" + checksum: 10c0/40dedc862eb8992c54579c66d914635afbec43350afbbe991235fdcb4e3a8d5af1b23ae7e79bef7d4882d0ecee06c3197488026998fb19f72dc95acff1d1b1d0 + languageName: node + linkType: hard + "fast-glob@npm:^3.3.0": version: 3.3.3 resolution: "fast-glob@npm:3.3.3" @@ -3777,6 +4646,13 @@ __metadata: languageName: node linkType: hard +"fast-uri@npm:^3.0.1": + version: 3.0.6 + resolution: "fast-uri@npm:3.0.6" + checksum: 10c0/74a513c2af0584448aee71ce56005185f81239eab7a2343110e5bad50c39ad4fb19c5a6f99783ead1cac7ccaf3461a6034fda89fffa2b30b6d99b9f21c2f9d29 + languageName: node + linkType: hard + "fastq@npm:^1.6.0": version: 1.19.1 resolution: "fastq@npm:1.19.1" @@ -3798,6 +4674,18 @@ __metadata: languageName: node linkType: hard +"fdir@npm:^6.4.4": + version: 6.4.6 + resolution: "fdir@npm:6.4.6" + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + checksum: 10c0/45b559cff889934ebb8bc498351e5acba40750ada7e7d6bde197768d2fa67c149be8ae7f8ff34d03f4e1eb20f2764116e56440aaa2f6689e9a4aa7ef06acafe9 + languageName: node + linkType: hard + "fetch-blob@npm:^3.1.2, fetch-blob@npm:^3.1.4": version: 3.2.0 resolution: "fetch-blob@npm:3.2.0" @@ -3898,7 +4786,7 @@ __metadata: languageName: node linkType: hard -"fs-extra@npm:^11.1.1": +"fs-extra@npm:^11.1.1, fs-extra@npm:~11.3.0": version: 11.3.0 resolution: "fs-extra@npm:11.3.0" dependencies: @@ -3953,6 +4841,13 @@ __metadata: languageName: node linkType: hard +"gensync@npm:^1.0.0-beta.2": + version: 1.0.0-beta.2 + resolution: "gensync@npm:1.0.0-beta.2" + checksum: 10c0/782aba6cba65b1bb5af3b095d96249d20edbe8df32dbf4696fd49be2583faf676173bf4809386588828e4dd76a3354fcbeb577bab1c833ccd9fc4577f26103f8 + languageName: node + linkType: hard + "get-caller-file@npm:^2.0.5": version: 2.0.5 resolution: "get-caller-file@npm:2.0.5" @@ -4048,6 +4943,13 @@ __metadata: languageName: node linkType: hard +"globals@npm:^11.1.0": + version: 11.12.0 + resolution: "globals@npm:11.12.0" + checksum: 10c0/758f9f258e7b19226bd8d4af5d3b0dcf7038780fb23d82e6f98932c44e239f884847f1766e8fa9cc5635ccb3204f7fa7314d4408dd4002a5e8ea827b4018f0a1 + languageName: node + linkType: hard + "globby@npm:^13.1.4": version: 13.2.2 resolution: "globby@npm:13.2.2" @@ -4114,6 +5016,15 @@ __metadata: languageName: node linkType: hard +"he@npm:^1.2.0": + version: 1.2.0 + resolution: "he@npm:1.2.0" + bin: + he: bin/he + checksum: 10c0/a27d478befe3c8192f006cdd0639a66798979dfa6e2125c6ac582a19a5ebfec62ad83e8382e6036170d873f46e4536a7e795bf8b95bf7c247f4cc0825ccc8c17 + languageName: node + linkType: hard + "hono@npm:^4.7.0": version: 4.7.5 resolution: "hono@npm:4.7.5" @@ -4209,6 +5120,13 @@ __metadata: languageName: node linkType: hard +"import-lazy@npm:~4.0.0": + version: 4.0.0 + resolution: "import-lazy@npm:4.0.0" + checksum: 10c0/a3520313e2c31f25c0b06aa66d167f329832b68a4f957d7c9daf6e0fa41822b6e84948191648b9b9d8ca82f94740cdf15eecf2401a5b42cd1c33fd84f2225cca + languageName: node + linkType: hard + "imurmurhash@npm:^0.1.4": version: 0.1.4 resolution: "imurmurhash@npm:0.1.4" @@ -4287,6 +5205,15 @@ __metadata: languageName: node linkType: hard +"is-core-module@npm:^2.16.0": + version: 2.16.1 + resolution: "is-core-module@npm:2.16.1" + dependencies: + hasown: "npm:^2.0.2" + checksum: 10c0/898443c14780a577e807618aaae2b6f745c8538eca5c7bc11388a3f2dc6de82b9902bcc7eb74f07be672b11bbe82dd6a6edded44a00cb3d8f933d0459905eedd + languageName: node + linkType: hard + "is-extendable@npm:^0.1.0": version: 0.1.1 resolution: "is-extendable@npm:0.1.1" @@ -4389,6 +5316,13 @@ __metadata: languageName: node linkType: hard +"jju@npm:~1.4.0": + version: 1.4.0 + resolution: "jju@npm:1.4.0" + checksum: 10c0/f3f444557e4364cfc06b1abf8331bf3778b26c0c8552ca54429bc0092652172fdea26cbffe33e1017b303d5aa506f7ede8571857400efe459cb7439180e2acad + languageName: node + linkType: hard + "joycon@npm:^3.1.1": version: 3.1.1 resolution: "joycon@npm:3.1.1" @@ -4427,7 +5361,7 @@ __metadata: languageName: node linkType: hard -"js-tokens@npm:^3.0.0 || ^4.0.0": +"js-tokens@npm:^3.0.0 || ^4.0.0, js-tokens@npm:^4.0.0": version: 4.0.0 resolution: "js-tokens@npm:4.0.0" checksum: 10c0/e248708d377aa058eacf2037b07ded847790e6de892bbad3dac0abba2e759cb9f121b00099a65195616badcb6eca8d14d975cb3e89eb1cfda644756402c8aeed @@ -4441,6 +5375,22 @@ __metadata: languageName: node linkType: hard +"jsesc@npm:^3.0.2": + version: 3.1.0 + resolution: "jsesc@npm:3.1.0" + bin: + jsesc: bin/jsesc + checksum: 10c0/531779df5ec94f47e462da26b4cbf05eb88a83d9f08aac2ba04206508fc598527a153d08bd462bae82fc78b3eaa1a908e1a4a79f886e9238641c4cdefaf118b1 + languageName: node + linkType: hard + +"json-schema-traverse@npm:^1.0.0": + version: 1.0.0 + resolution: "json-schema-traverse@npm:1.0.0" + checksum: 10c0/71e30015d7f3d6dc1c316d6298047c8ef98a06d31ad064919976583eb61e1018a60a0067338f0f79cabc00d84af3fcc489bd48ce8a46ea165d9541ba17fb30c6 + languageName: node + linkType: hard + "json-schema@npm:^0.4.0": version: 0.4.0 resolution: "json-schema@npm:0.4.0" @@ -4448,6 +5398,15 @@ __metadata: languageName: node linkType: hard +"json5@npm:^2.2.3": + version: 2.2.3 + resolution: "json5@npm:2.2.3" + bin: + json5: lib/cli.js + checksum: 10c0/5a04eed94810fa55c5ea138b2f7a5c12b97c3750bc63d11e511dcecbfef758003861522a070c2272764ee0f4e3e323862f386945aeb5b85b87ee43f084ba586c + languageName: node + linkType: hard + "jsondiffpatch@npm:0.6.0": version: 0.6.0 resolution: "jsondiffpatch@npm:0.6.0" @@ -4490,6 +5449,13 @@ __metadata: languageName: node linkType: hard +"kolorist@npm:^1.8.0": + version: 1.8.0 + resolution: "kolorist@npm:1.8.0" + checksum: 10c0/73075db44a692bf6c34a649f3b4b3aea4993b84f6b754cbf7a8577e7c7db44c0bad87752bd23b0ce533f49de2244ce2ce03b7b1b667a85ae170a94782cc50f9b + languageName: node + linkType: hard + "leac@npm:^0.6.0": version: 0.6.0 resolution: "leac@npm:0.6.0" @@ -4665,6 +5631,17 @@ __metadata: languageName: node linkType: hard +"local-pkg@npm:^1.0.0": + version: 1.1.1 + resolution: "local-pkg@npm:1.1.1" + dependencies: + mlly: "npm:^1.7.4" + pkg-types: "npm:^2.0.1" + quansync: "npm:^0.2.8" + checksum: 10c0/fe8f9d0443fb066c3f28a4c89d587dd7cba3ab02645cd16598f8d5f30968acf60af1b0ec2d6ad768475ec9f52baad124f31a93d2fbc034f645bcc02bf3a84882 + languageName: node + linkType: hard + "lodash.defaults@npm:^4.2.0": version: 4.2.0 resolution: "lodash.defaults@npm:4.2.0" @@ -4686,7 +5663,7 @@ __metadata: languageName: node linkType: hard -"lodash@npm:^4.17.21": +"lodash@npm:^4.17.21, lodash@npm:~4.17.15": version: 4.17.21 resolution: "lodash@npm:4.17.21" checksum: 10c0/d8cbea072bb08655bb4c989da418994b073a608dffa608b09ac04b43a791b12aeae7cd7ad919aa4c925f33b48490b5cfe6c1f71d827956071dae2e7bb3a6b74c @@ -4718,6 +5695,24 @@ __metadata: languageName: node linkType: hard +"lru-cache@npm:^5.1.1": + version: 5.1.1 + resolution: "lru-cache@npm:5.1.1" + dependencies: + yallist: "npm:^3.0.2" + checksum: 10c0/89b2ef2ef45f543011e38737b8a8622a2f8998cddf0e5437174ef8f1f70a8b9d14a918ab3e232cb3ba343b7abddffa667f0b59075b2b80e6b4d63c3de6127482 + languageName: node + linkType: hard + +"lru-cache@npm:^6.0.0": + version: 6.0.0 + resolution: "lru-cache@npm:6.0.0" + dependencies: + yallist: "npm:^4.0.0" + checksum: 10c0/cb53e582785c48187d7a188d3379c181b5ca2a9c78d2bce3e7dee36f32761d1c42983da3fe12b55cb74e1779fa94cdc2e5367c028a9b35317184ede0c07a30a9 + languageName: node + linkType: hard + "magic-string@npm:^0.25.3": version: 0.25.9 resolution: "magic-string@npm:0.25.9" @@ -4892,7 +5887,7 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^9.0.4": +"minimatch@npm:^9.0.3, minimatch@npm:^9.0.4": version: 9.0.5 resolution: "minimatch@npm:9.0.5" dependencies: @@ -4901,6 +5896,15 @@ __metadata: languageName: node linkType: hard +"minimatch@npm:~3.0.3": + version: 3.0.8 + resolution: "minimatch@npm:3.0.8" + dependencies: + brace-expansion: "npm:^1.1.7" + checksum: 10c0/72b226f452dcfb5075255f53534cb83fc25565b909e79b9be4fad463d735cb1084827f7013ff41d050e77ee6e474408c6073473edd2fb72c2fd630cfb0acc6ad + languageName: node + linkType: hard + "minimist@npm:^1.2.8": version: 1.2.8 resolution: "minimist@npm:1.2.8" @@ -5019,6 +6023,13 @@ __metadata: languageName: node linkType: hard +"muggle-string@npm:^0.4.1": + version: 0.4.1 + resolution: "muggle-string@npm:0.4.1" + checksum: 10c0/e914b63e24cd23f97e18376ec47e4ba3aa24365e4776212b666add2e47bb158003212980d732c49abf3719568900af7861873844a6e2d3a7ca7e86952c0e99e9 + languageName: node + linkType: hard + "mustache@npm:^4.2.0": version: 4.2.0 resolution: "mustache@npm:4.2.0" @@ -5120,6 +6131,13 @@ __metadata: languageName: node linkType: hard +"node-releases@npm:^2.0.19": + version: 2.0.19 + resolution: "node-releases@npm:2.0.19" + checksum: 10c0/52a0dbd25ccf545892670d1551690fe0facb6a471e15f2cfa1b20142a5b255b3aa254af5f59d6ecb69c2bec7390bc643c43aa63b13bf5e64b6075952e716b1aa + languageName: node + linkType: hard + "nopt@npm:^7.2.1": version: 7.2.1 resolution: "nopt@npm:7.2.1" @@ -5246,6 +6264,13 @@ __metadata: languageName: node linkType: hard +"path-browserify@npm:^1.0.1": + version: 1.0.1 + resolution: "path-browserify@npm:1.0.1" + checksum: 10c0/8b8c3fd5c66bd340272180590ae4ff139769e9ab79522e2eb82e3d571a89b8117c04147f65ad066dccfb42fcad902e5b7d794b3d35e0fd840491a8ddbedf8c66 + languageName: node + linkType: hard + "path-key@npm:^3.1.0": version: 3.1.1 resolution: "path-key@npm:3.1.1" @@ -5253,6 +6278,13 @@ __metadata: languageName: node linkType: hard +"path-parse@npm:^1.0.7": + version: 1.0.7 + resolution: "path-parse@npm:1.0.7" + checksum: 10c0/11ce261f9d294cc7a58d6a574b7f1b935842355ec66fba3c3fd79e0f036462eaf07d0aa95bb74ff432f9afef97ce1926c720988c6a7451d8a584930ae7de86e1 + languageName: node + linkType: hard + "path-scurry@npm:^1.11.1": version: 1.11.1 resolution: "path-scurry@npm:1.11.1" @@ -5360,6 +6392,17 @@ __metadata: languageName: node linkType: hard +"pkg-types@npm:^2.0.1": + version: 2.1.0 + resolution: "pkg-types@npm:2.1.0" + dependencies: + confbox: "npm:^0.2.1" + exsolve: "npm:^1.0.1" + pathe: "npm:^2.0.3" + checksum: 10c0/7729d0a2367ba0aa2caf0f84a6ff0b73b13f4e9a3d62c229ddfa6d45d1f3898f590acdbaa64d779d56737d4ebea2d085961efd59094b8adf8baa34d829599b75 + languageName: node + linkType: hard + "postcss-load-config@npm:^6.0.1": version: 6.0.1 resolution: "postcss-load-config@npm:6.0.1" @@ -5490,6 +6533,13 @@ __metadata: languageName: node linkType: hard +"quansync@npm:^0.2.8": + version: 0.2.10 + resolution: "quansync@npm:0.2.10" + checksum: 10c0/f86f1d644f812a3a7c42de79eb401c47a5a67af82a9adff8a8afb159325e03e00f77cebbf42af6340a0bd47bd0c1fbe999e7caf7e1bbb30d7acb00c8729b7530 + languageName: node + linkType: hard + "queue-microtask@npm:^1.2.2": version: 1.2.3 resolution: "queue-microtask@npm:1.2.3" @@ -5528,6 +6578,13 @@ __metadata: languageName: node linkType: hard +"react-refresh@npm:^0.17.0": + version: 0.17.0 + resolution: "react-refresh@npm:0.17.0" + checksum: 10c0/002cba940384c9930008c0bce26cac97a9d5682bc623112c2268ba0c155127d9c178a9a5cc2212d560088d60dfd503edd808669a25f9b377f316a32361d0b23c + languageName: node + linkType: hard + "react@npm:18.2.0": version: 18.2.0 resolution: "react@npm:18.2.0" @@ -5580,6 +6637,13 @@ __metadata: languageName: node linkType: hard +"require-from-string@npm:^2.0.2": + version: 2.0.2 + resolution: "require-from-string@npm:2.0.2" + checksum: 10c0/aaa267e0c5b022fc5fd4eef49d8285086b15f2a1c54b28240fdf03599cbd9c26049fee3eab894f2e1f6ca65e513b030a7c264201e3f005601e80c49fb2937ce2 + languageName: node + linkType: hard + "resend-streaks@workspace:examples/resend-streaks": version: 0.0.0-use.local resolution: "resend-streaks@workspace:examples/resend-streaks" @@ -5619,6 +6683,32 @@ __metadata: languageName: node linkType: hard +"resolve@npm:~1.22.1, resolve@npm:~1.22.2": + version: 1.22.10 + resolution: "resolve@npm:1.22.10" + dependencies: + is-core-module: "npm:^2.16.0" + path-parse: "npm:^1.0.7" + supports-preserve-symlinks-flag: "npm:^1.0.0" + bin: + resolve: bin/resolve + checksum: 10c0/8967e1f4e2cc40f79b7e080b4582b9a8c5ee36ffb46041dccb20e6461161adf69f843b43067b4a375de926a2cd669157e29a29578191def399dd5ef89a1b5203 + languageName: node + linkType: hard + +"resolve@patch:resolve@npm%3A~1.22.1#optional!builtin, resolve@patch:resolve@npm%3A~1.22.2#optional!builtin": + version: 1.22.10 + resolution: "resolve@patch:resolve@npm%3A1.22.10#optional!builtin::version=1.22.10&hash=c3c19d" + dependencies: + is-core-module: "npm:^2.16.0" + path-parse: "npm:^1.0.7" + supports-preserve-symlinks-flag: "npm:^1.0.0" + bin: + resolve: bin/resolve + checksum: 10c0/52a4e505bbfc7925ac8f4cd91fd8c4e096b6a89728b9f46861d3b405ac9a1ccf4dcbf8befb4e89a2e11370dacd0160918163885cbc669369590f2f31f4c58939 + languageName: node + linkType: hard + "retry@npm:^0.12.0": version: 0.12.0 resolution: "retry@npm:0.12.0" @@ -5779,6 +6869,81 @@ __metadata: languageName: node linkType: hard +"rollup@npm:^4.34.9": + version: 4.44.0 + resolution: "rollup@npm:4.44.0" + dependencies: + "@rollup/rollup-android-arm-eabi": "npm:4.44.0" + "@rollup/rollup-android-arm64": "npm:4.44.0" + "@rollup/rollup-darwin-arm64": "npm:4.44.0" + "@rollup/rollup-darwin-x64": "npm:4.44.0" + "@rollup/rollup-freebsd-arm64": "npm:4.44.0" + "@rollup/rollup-freebsd-x64": "npm:4.44.0" + "@rollup/rollup-linux-arm-gnueabihf": "npm:4.44.0" + "@rollup/rollup-linux-arm-musleabihf": "npm:4.44.0" + "@rollup/rollup-linux-arm64-gnu": "npm:4.44.0" + "@rollup/rollup-linux-arm64-musl": "npm:4.44.0" + "@rollup/rollup-linux-loongarch64-gnu": "npm:4.44.0" + "@rollup/rollup-linux-powerpc64le-gnu": "npm:4.44.0" + "@rollup/rollup-linux-riscv64-gnu": "npm:4.44.0" + "@rollup/rollup-linux-riscv64-musl": "npm:4.44.0" + "@rollup/rollup-linux-s390x-gnu": "npm:4.44.0" + "@rollup/rollup-linux-x64-gnu": "npm:4.44.0" + "@rollup/rollup-linux-x64-musl": "npm:4.44.0" + "@rollup/rollup-win32-arm64-msvc": "npm:4.44.0" + "@rollup/rollup-win32-ia32-msvc": "npm:4.44.0" + "@rollup/rollup-win32-x64-msvc": "npm:4.44.0" + "@types/estree": "npm:1.0.8" + fsevents: "npm:~2.3.2" + dependenciesMeta: + "@rollup/rollup-android-arm-eabi": + optional: true + "@rollup/rollup-android-arm64": + optional: true + "@rollup/rollup-darwin-arm64": + optional: true + "@rollup/rollup-darwin-x64": + optional: true + "@rollup/rollup-freebsd-arm64": + optional: true + "@rollup/rollup-freebsd-x64": + optional: true + "@rollup/rollup-linux-arm-gnueabihf": + optional: true + "@rollup/rollup-linux-arm-musleabihf": + optional: true + "@rollup/rollup-linux-arm64-gnu": + optional: true + "@rollup/rollup-linux-arm64-musl": + optional: true + "@rollup/rollup-linux-loongarch64-gnu": + optional: true + "@rollup/rollup-linux-powerpc64le-gnu": + optional: true + "@rollup/rollup-linux-riscv64-gnu": + optional: true + "@rollup/rollup-linux-riscv64-musl": + optional: true + "@rollup/rollup-linux-s390x-gnu": + optional: true + "@rollup/rollup-linux-x64-gnu": + optional: true + "@rollup/rollup-linux-x64-musl": + optional: true + "@rollup/rollup-win32-arm64-msvc": + optional: true + "@rollup/rollup-win32-ia32-msvc": + optional: true + "@rollup/rollup-win32-x64-msvc": + optional: true + fsevents: + optional: true + bin: + rollup: dist/bin/rollup + checksum: 10c0/ff3e0741f2fc7b7b183079628cf50fcfc9163bef86ecfbc9f4e4023adfdee375b7075940963514e2bc4969764688d38d67095bce038b0ad5d572207f114afff5 + languageName: node + linkType: hard + "router@npm:^2.2.0": version: 2.2.0 resolution: "router@npm:2.2.0" @@ -5849,6 +7014,15 @@ __metadata: languageName: node linkType: hard +"semver@npm:^6.3.1": + version: 6.3.1 + resolution: "semver@npm:6.3.1" + bin: + semver: bin/semver.js + checksum: 10c0/e3d79b609071caa78bcb6ce2ad81c7966a46a7431d9d58b8800cfa9cb6a63699b3899a0e4bcce36167a284578212d9ae6942b6929ba4aa5015c079a67751d42d + languageName: node + linkType: hard + "semver@npm:^7.3.5, semver@npm:^7.5.1, semver@npm:^7.5.3, semver@npm:^7.6.3, semver@npm:^7.7.1": version: 7.7.1 resolution: "semver@npm:7.7.1" @@ -5858,6 +7032,17 @@ __metadata: languageName: node linkType: hard +"semver@npm:~7.5.4": + version: 7.5.4 + resolution: "semver@npm:7.5.4" + dependencies: + lru-cache: "npm:^6.0.0" + bin: + semver: bin/semver.js + checksum: 10c0/5160b06975a38b11c1ab55950cb5b8a23db78df88275d3d8a42ccf1f29e55112ac995b3a26a522c36e3b5f76b0445f1eef70d696b8c7862a2b4303d7b0e7609e + languageName: node + linkType: hard + "send@npm:^1.1.0, send@npm:^1.2.0": version: 1.2.0 resolution: "send@npm:1.2.0" @@ -6138,7 +7323,7 @@ __metadata: languageName: node linkType: hard -"source-map@npm:^0.6.0, source-map@npm:^0.6.1": +"source-map@npm:^0.6.0, source-map@npm:^0.6.1, source-map@npm:~0.6.1": version: 0.6.1 resolution: "source-map@npm:0.6.1" checksum: 10c0/ab55398007c5e5532957cb0beee2368529618ac0ab372d789806f5718123cc4367d57de3904b4e6a4170eb5a0b0f41373066d02ca0735a0c4d75c7d328d3e011 @@ -6168,6 +7353,13 @@ __metadata: languageName: node linkType: hard +"sprintf-js@npm:~1.0.2": + version: 1.0.3 + resolution: "sprintf-js@npm:1.0.3" + checksum: 10c0/ecadcfe4c771890140da5023d43e190b7566d9cf8b2d238600f31bec0fc653f328da4450eb04bd59a431771a8e9cc0e118f0aa3974b683a4981b4e07abc2a5bb + languageName: node + linkType: hard + "ssri@npm:^12.0.0": version: 12.0.0 resolution: "ssri@npm:12.0.0" @@ -6231,6 +7423,13 @@ __metadata: languageName: node linkType: hard +"string-argv@npm:~0.3.1": + version: 0.3.2 + resolution: "string-argv@npm:0.3.2" + checksum: 10c0/75c02a83759ad1722e040b86823909d9a2fc75d15dd71ec4b537c3560746e33b5f5a07f7332d1e3f88319909f82190843aa2f0a0d8c8d591ec08e93d5b8dec82 + languageName: node + linkType: hard + "string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.3": version: 4.2.3 resolution: "string-width@npm:4.2.3" @@ -6280,6 +7479,13 @@ __metadata: languageName: node linkType: hard +"strip-json-comments@npm:~3.1.1": + version: 3.1.1 + resolution: "strip-json-comments@npm:3.1.1" + checksum: 10c0/9681a6257b925a7fa0f285851c0e613cc934a50661fa7bb41ca9cbbff89686bb4a0ee366e6ecedc4daafd01e83eee0720111ab294366fe7c185e935475ebcecd + languageName: node + linkType: hard + "sucrase@npm:^3.35.0": version: 3.35.0 resolution: "sucrase@npm:3.35.0" @@ -6307,7 +7513,7 @@ __metadata: languageName: node linkType: hard -"supports-color@npm:^8.1.1": +"supports-color@npm:^8.1.1, supports-color@npm:~8.1.1": version: 8.1.1 resolution: "supports-color@npm:8.1.1" dependencies: @@ -6316,6 +7522,13 @@ __metadata: languageName: node linkType: hard +"supports-preserve-symlinks-flag@npm:^1.0.0": + version: 1.0.0 + resolution: "supports-preserve-symlinks-flag@npm:1.0.0" + checksum: 10c0/6c4032340701a9950865f7ae8ef38578d8d7053f5e10518076e6554a9381fa91bd9c6850193695c141f32b21f979c985db07265a758867bac95de05f7d8aeb39 + languageName: node + linkType: hard + "swr@npm:^2.2.5": version: 2.3.3 resolution: "swr@npm:2.3.3" @@ -6398,6 +7611,16 @@ __metadata: languageName: node linkType: hard +"tinyglobby@npm:^0.2.13": + version: 0.2.14 + resolution: "tinyglobby@npm:0.2.14" + dependencies: + fdir: "npm:^6.4.4" + picomatch: "npm:^4.0.2" + checksum: 10c0/f789ed6c924287a9b7d3612056ed0cda67306cd2c80c249fd280cf1504742b12583a2089b61f4abbd24605f390809017240e250241f09938054c9b363e51c0a6 + languageName: node + linkType: hard + "tinypool@npm:^1.0.2": version: 1.0.2 resolution: "tinypool@npm:1.0.2" @@ -6481,7 +7704,7 @@ __metadata: languageName: node linkType: hard -"tsup@npm:^8.3.6, tsup@npm:^8.4.0": +"tsup@npm:^8.4.0": version: 8.4.0 resolution: "tsup@npm:8.4.0" dependencies: @@ -6637,7 +7860,7 @@ __metadata: languageName: node linkType: hard -"typescript@npm:^5.5.2, typescript@npm:^5.7.3": +"typescript@npm:5.8.2, typescript@npm:^5.5.2, typescript@npm:^5.7.3": version: 5.8.2 resolution: "typescript@npm:5.8.2" bin: @@ -6647,7 +7870,7 @@ __metadata: languageName: node linkType: hard -"typescript@patch:typescript@npm%3A^5.5.2#optional!builtin, typescript@patch:typescript@npm%3A^5.7.3#optional!builtin": +"typescript@patch:typescript@npm%3A5.8.2#optional!builtin, typescript@patch:typescript@npm%3A^5.5.2#optional!builtin, typescript@patch:typescript@npm%3A^5.7.3#optional!builtin": version: 5.8.2 resolution: "typescript@patch:typescript@npm%3A5.8.2#optional!builtin::version=5.8.2&hash=b45daf" bin: @@ -6759,6 +7982,29 @@ __metadata: languageName: node linkType: hard +"update-browserslist-db@npm:^1.1.3": + version: 1.1.3 + resolution: "update-browserslist-db@npm:1.1.3" + dependencies: + escalade: "npm:^3.2.0" + picocolors: "npm:^1.1.1" + peerDependencies: + browserslist: ">= 4.21.0" + bin: + update-browserslist-db: cli.js + checksum: 10c0/682e8ecbf9de474a626f6462aa85927936cdd256fe584c6df2508b0df9f7362c44c957e9970df55dfe44d3623807d26316ea2c7d26b80bb76a16c56c37233c32 + languageName: node + linkType: hard + +"uri-js@npm:^4.2.2, uri-js@npm:^4.4.1": + version: 4.4.1 + resolution: "uri-js@npm:4.4.1" + dependencies: + punycode: "npm:^2.1.0" + checksum: 10c0/4ef57b45aa820d7ac6496e9208559986c665e49447cb072744c13b66925a362d96dd5a46c4530a6b8e203e5db5fe849369444440cb22ecfc26c679359e5dfa3c + languageName: node + linkType: hard + "url-join@npm:^5.0.0": version: 5.0.0 resolution: "url-join@npm:5.0.0" @@ -6766,7 +8012,7 @@ __metadata: languageName: node linkType: hard -"use-sync-external-store@npm:^1.4.0": +"use-sync-external-store@npm:^1.4.0, use-sync-external-store@npm:^1.5.0": version: 1.5.0 resolution: "use-sync-external-store@npm:1.5.0" peerDependencies: @@ -6797,6 +8043,29 @@ __metadata: languageName: node linkType: hard +"vite-plugin-dts@npm:^4.5.4": + version: 4.5.4 + resolution: "vite-plugin-dts@npm:4.5.4" + dependencies: + "@microsoft/api-extractor": "npm:^7.50.1" + "@rollup/pluginutils": "npm:^5.1.4" + "@volar/typescript": "npm:^2.4.11" + "@vue/language-core": "npm:2.2.0" + compare-versions: "npm:^6.1.1" + debug: "npm:^4.4.0" + kolorist: "npm:^1.8.0" + local-pkg: "npm:^1.0.0" + magic-string: "npm:^0.30.17" + peerDependencies: + typescript: "*" + vite: "*" + peerDependenciesMeta: + vite: + optional: true + checksum: 10c0/5fcb7f3739d115f36195a692c0e9f9fca4e504bbbbabe29e71ee06630dd05ea2920169371e80e548eb4779d2eca14107277497838d7df588d53e1fadf84be861 + languageName: node + linkType: hard + "vite@npm:^5.0.0 || ^6.0.0": version: 6.2.5 resolution: "vite@npm:6.2.5" @@ -6849,6 +8118,61 @@ __metadata: languageName: node linkType: hard +"vite@npm:^6.3.5": + version: 6.3.5 + resolution: "vite@npm:6.3.5" + dependencies: + esbuild: "npm:^0.25.0" + fdir: "npm:^6.4.4" + fsevents: "npm:~2.3.3" + picomatch: "npm:^4.0.2" + postcss: "npm:^8.5.3" + rollup: "npm:^4.34.9" + tinyglobby: "npm:^0.2.13" + peerDependencies: + "@types/node": ^18.0.0 || ^20.0.0 || >=22.0.0 + jiti: ">=1.21.0" + less: "*" + lightningcss: ^1.21.0 + sass: "*" + sass-embedded: "*" + stylus: "*" + sugarss: "*" + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + dependenciesMeta: + fsevents: + optional: true + peerDependenciesMeta: + "@types/node": + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + bin: + vite: bin/vite.js + checksum: 10c0/df70201659085133abffc6b88dcdb8a57ef35f742a01311fc56a4cfcda6a404202860729cc65a2c401a724f6e25f9ab40ce4339ed4946f550541531ced6fe41c + languageName: node + linkType: hard + "vitest@npm:^3.1.1": version: 3.1.1 resolution: "vitest@npm:3.1.1" @@ -6902,6 +8226,13 @@ __metadata: languageName: node linkType: hard +"vscode-uri@npm:^3.0.8": + version: 3.1.0 + resolution: "vscode-uri@npm:3.1.0" + checksum: 10c0/5f6c9c10fd9b1664d71fab4e9fbbae6be93c7f75bb3a1d9d74399a88ab8649e99691223fd7cef4644376cac6e94fa2c086d802521b9a8e31c5af3e60f0f35624 + languageName: node + linkType: hard + "web-streams-polyfill@npm:^3.0.3": version: 3.3.3 resolution: "web-streams-polyfill@npm:3.3.3" @@ -7181,6 +8512,13 @@ __metadata: languageName: node linkType: hard +"yallist@npm:^3.0.2": + version: 3.1.1 + resolution: "yallist@npm:3.1.1" + checksum: 10c0/c66a5c46bc89af1625476f7f0f2ec3653c1a1791d2f9407cfb4c2ba812a1e1c9941416d71ba9719876530e3340a99925f697142989371b72d93b9ee628afd8c1 + languageName: node + linkType: hard + "yallist@npm:^4.0.0": version: 4.0.0 resolution: "yallist@npm:4.0.0"