@parcae/sdk 0.6.1 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/react/context.ts","../../src/react/Provider.tsx","../../src/react/useAuth.ts","../../src/react/useQuery.ts","../../src/react/useApi.ts","../../src/react/useSetting.ts","../../src/react/gates.tsx"],"names":["useEffect","useRef","entry","useMemo","useState","jsx"],"mappings":"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","file":"index.js","sourcesContent":["import { createContext, useContext } from \"react\";\nimport type { ParcaeClient } from \"../client\";\n\n// Use globalThis to ensure all copies of @parcae/sdk share the same context\n// (pnpm can install multiple copies — they all need the same React context)\nconst KEY = \"__parcae_context\";\nif (!(globalThis as any)[KEY]) {\n (globalThis as any)[KEY] = createContext<ParcaeClient | null>(null);\n}\n\nexport const ParcaeContext: React.Context<ParcaeClient | null> = (\n globalThis as any\n)[KEY];\n\nexport function useParcae(): ParcaeClient {\n const client = useContext(ParcaeContext);\n if (!client)\n throw new Error(\"useParcae must be used within a <ParcaeProvider>\");\n return client;\n}\n","\"use client\";\n\nimport React, { useEffect, useMemo, useRef } from \"react\";\nimport { createClient } from \"../client\";\nimport type { ParcaeClient, ClientConfig } from \"../client\";\nimport type { AuthClientAdapter } from \"../auth-adapter\";\nimport { ParcaeContext } from \"./context\";\nimport { log } from \"../log\";\n\nexport interface ParcaeProviderProps {\n /** Pre-created client instance. */\n client?: ParcaeClient;\n /** Backend URL. */\n url?: string;\n /** Auth adapter — handles session resolution internally. */\n auth?: AuthClientAdapter;\n version?: string;\n transport?: ClientConfig[\"transport\"];\n children: React.ReactNode;\n onReady?: (client: ParcaeClient) => void;\n onError?: (error: Error) => void;\n}\n\nexport const ParcaeProvider: React.FC<ParcaeProviderProps> = ({\n client: externalClient,\n url,\n auth,\n version = \"v1\",\n transport = \"socket\",\n children,\n onReady,\n onError,\n}) => {\n const client = useMemo(() => {\n if (externalClient) return externalClient;\n if (!url)\n throw new Error(\n \"ParcaeProvider requires either a `client` or `url` prop\",\n );\n // Don't pass token — auth adapter handles it\n return createClient({ url, version, transport });\n }, [externalClient, url, version, transport]);\n\n const onReadyRef = useRef(onReady);\n onReadyRef.current = onReady;\n const onErrorRef = useRef(onError);\n onErrorRef.current = onError;\n\n // Initialize auth adapter and resolve session\n useEffect(() => {\n if (!auth) {\n // No auth adapter — resolve as unauthenticated immediately\n client.authenticate(null).catch(() => {});\n return;\n }\n\n // Init adapter with the backend URL\n auth.init(url || \"\");\n\n // Resolve session and authenticate\n const doAuth = async () => {\n try {\n const token = await auth.getToken();\n await client.authenticate(token);\n onReadyRef.current?.(client);\n } catch (err: any) {\n log.warn(\"auth failed:\", err?.message);\n await client.authenticate(null);\n onErrorRef.current?.(err);\n }\n };\n\n doAuth();\n\n // Subscribe to session changes (login/logout)\n const unsub = auth.onChange((token) => {\n client.authenticate(token).catch(() => {});\n });\n\n return unsub;\n }, [auth, client, url]);\n\n // On socket reconnect, re-resolve session via auth adapter\n useEffect(() => {\n if (!auth) return;\n\n const onReconnect = async () => {\n log.debug(\"reconnected — re-resolving session\");\n try {\n const token = await auth.getToken();\n await client.authenticate(token);\n } catch {\n await client.authenticate(null);\n }\n };\n\n client.on(\"connected\", onReconnect);\n return () => {\n client.off(\"connected\", onReconnect);\n };\n }, [auth, client]);\n\n // Forward errors\n useEffect(() => {\n const onErr = (err: Error) => onErrorRef.current?.(err);\n client.on(\"error\", onErr);\n return () => {\n client.off(\"error\", onErr);\n };\n }, [client]);\n\n return (\n <ParcaeContext.Provider value={client}>{children}</ParcaeContext.Provider>\n );\n};\n\nexport default ParcaeProvider;\n","\"use client\";\n\n/**\n * Internal hook to read auth state reactively.\n * No Valtio — just reads the gate state and re-renders when it changes.\n */\n\nimport { useState, useEffect } from \"react\";\nimport { useParcae } from \"./context\";\nimport type { AuthStatus } from \"../auth-gate\";\n\nexport function useAuthStatus(): {\n status: AuthStatus;\n userId: string | null;\n version: number;\n} {\n const client = useParcae();\n const transport = client.transport as any;\n const gate = transport?.auth;\n\n const [, forceRender] = useState(0);\n\n useEffect(() => {\n if (!gate) return;\n let mounted = true;\n const check = () => {\n if (mounted) forceRender((n) => n + 1);\n };\n gate.ready.then(check);\n return () => {\n mounted = false;\n };\n }, [gate, gate?.state?.version]);\n\n return {\n status: gate?.state?.status ?? \"pending\",\n userId: gate?.state?.userId ?? null,\n version: gate?.state?.version ?? 0,\n };\n}\n","\"use client\";\n\nimport { useEffect, useRef, useSyncExternalStore } from \"react\";\nimport { useParcae } from \"./context\";\nimport { useAuthStatus } from \"./useAuth\";\nimport { log } from \"../log\";\n\ninterface QueryChain<T> {\n find(): Promise<T[]>;\n __steps?: any[];\n __modelType?: string;\n __modelClass?: any;\n __adapter?: any;\n}\n\ninterface UseQueryOptions {\n waitForAuth?: boolean;\n}\n\ninterface UseQueryResult<T> {\n items: T[];\n loading: boolean;\n error: Error | null;\n refetch: () => void;\n}\n\n// ── Cache ────────────────────────────────────────────────────────────────────\n\ninterface CacheEntry {\n items: any[];\n loading: boolean;\n error: Error | null;\n refs: number;\n listeners: Set<() => void>;\n dispose: (() => void) | null;\n gcTimer: ReturnType<typeof setTimeout> | null;\n}\n\nconst cache = new Map<string, CacheEntry>();\nconst GC_DELAY = 60_000;\nconst EMPTY: any[] = [];\n\nfunction getOrCreate(key: string): CacheEntry {\n let e = cache.get(key);\n if (!e) {\n e = {\n items: EMPTY,\n loading: true,\n error: null,\n refs: 0,\n listeners: new Set(),\n dispose: null,\n gcTimer: null,\n };\n cache.set(key, e);\n }\n return e;\n}\n\nfunction notify(e: CacheEntry): void {\n for (const fn of e.listeners) fn();\n}\n\nfunction doFetch(key: string, entry: CacheEntry, chain: QueryChain<any>): void {\n log.debug(\"useQuery: fetching\", chain.__modelType);\n entry.loading = true;\n entry.error = null;\n notify(entry);\n\n chain\n .find()\n .then((result: any[]) => {\n log.debug(\"useQuery: got\", result.length, \"items for\", chain.__modelType);\n entry.items = result;\n entry.loading = false;\n notify(entry);\n })\n .catch((err: Error) => {\n log.error(\"useQuery: error\", err.message);\n entry.error = err;\n entry.loading = false;\n notify(entry);\n });\n}\n\n// ── useQuery ─────────────────────────────────────────────────────────────────\n\nexport function useQuery<T>(\n chain: QueryChain<T> | null | undefined,\n options: UseQueryOptions = {},\n): UseQueryResult<T> {\n const client = useParcae();\n const waitForAuth = options.waitForAuth ?? true;\n const { status: authStatus, version: authVersion } = useAuthStatus();\n const authReady = !waitForAuth || authStatus !== \"pending\";\n\n const key =\n chain && authReady\n ? `${chain.__modelType}:${authVersion}:${JSON.stringify(chain.__steps ?? [])}`\n : null;\n\n const keyRef = useRef(key);\n keyRef.current = key;\n\n const subscribe = (onChange: () => void) => {\n const k = keyRef.current;\n if (!k) return () => {};\n const e = getOrCreate(k);\n e.refs++;\n e.listeners.add(onChange);\n if (e.gcTimer) {\n clearTimeout(e.gcTimer);\n e.gcTimer = null;\n }\n return () => {\n e.listeners.delete(onChange);\n e.refs--;\n if (e.refs <= 0) {\n e.gcTimer = setTimeout(() => {\n e.dispose?.();\n cache.delete(k);\n }, GC_DELAY);\n }\n };\n };\n\n const getSnapshot = (): any[] => {\n const k = keyRef.current;\n if (!k) return EMPTY;\n return cache.get(k)?.items ?? EMPTY;\n };\n\n const items = useSyncExternalStore(\n subscribe,\n getSnapshot,\n getSnapshot,\n ) as T[];\n\n useEffect(() => {\n if (!key || !chain) return;\n const entry = getOrCreate(key);\n if (entry.items === EMPTY) {\n doFetch(key, entry, chain);\n }\n\n // Subscribe to model-level change events → refetch\n if (chain.__modelType) {\n const unsub = client.subscribe(`model:${chain.__modelType}:changed`, () =>\n doFetch(key, getOrCreate(key), chain),\n );\n return unsub;\n }\n }, [key]); // eslint-disable-line react-hooks/exhaustive-deps\n\n const refetch = () => {\n if (!key || !chain) return;\n doFetch(key, getOrCreate(key), chain);\n };\n\n if (!key)\n return {\n items: EMPTY as T[],\n loading: !authReady,\n error: null,\n refetch: () => {},\n };\n const entry = cache.get(key);\n return {\n items,\n loading: entry?.loading ?? true,\n error: entry?.error ?? null,\n refetch,\n };\n}\n","\"use client\";\n\nimport { useMemo } from \"react\";\nimport { useParcae } from \"./context\";\nimport { useAuthStatus } from \"./useAuth\";\n\nexport function useApi() {\n const client = useParcae();\n return useMemo(\n () => ({\n get: client.get.bind(client),\n post: client.post.bind(client),\n put: client.put.bind(client),\n patch: client.patch.bind(client),\n delete: client.delete.bind(client),\n }),\n [client],\n );\n}\n\nexport function useSDK() {\n return useParcae();\n}\n\nexport function useConnectionStatus() {\n const client = useParcae();\n const { status } = useAuthStatus();\n return { isConnected: client.isConnected, authStatus: status };\n}\n\nexport function useAuthState() {\n return useAuthStatus();\n}\n","\"use client\";\n\nimport { useState, useEffect, useCallback } from \"react\";\nimport { useParcae } from \"./context\";\nimport { useAuthStatus } from \"./useAuth\";\n\nexport function useSetting<T = string>(\n key: string,\n defaultValue: T,\n): [T, (value: T) => Promise<void>, { isLoading: boolean }] {\n const client = useParcae();\n const { status: authStatus } = useAuthStatus();\n\n const [value, setValue] = useState<T>(defaultValue);\n const [isLoading, setIsLoading] = useState(true);\n\n useEffect(() => {\n if (authStatus === \"pending\") return;\n if (authStatus === \"unauthenticated\") {\n setIsLoading(false);\n return;\n }\n\n let cancelled = false;\n client\n .get(`/settings/${encodeURIComponent(key)}`)\n .then((result: any) => {\n if (!cancelled && result?.value !== undefined) setValue(result.value);\n })\n .catch(() => {})\n .finally(() => {\n if (!cancelled) setIsLoading(false);\n });\n return () => {\n cancelled = true;\n };\n }, [key, client, authStatus]);\n\n const update = useCallback(\n async (newValue: T) => {\n setValue(newValue);\n await client.put(`/settings/${encodeURIComponent(key)}`, {\n value: newValue,\n });\n },\n [key, client],\n );\n\n return [value, update, { isLoading }];\n}\n","\"use client\";\n\nimport React from \"react\";\nimport { useAuthStatus } from \"./useAuth\";\n\ninterface GateProps {\n children: React.ReactNode;\n fallback?: React.ReactNode;\n}\n\nexport function Authenticated({ children, fallback = null }: GateProps) {\n const { status } = useAuthStatus();\n return status === \"authenticated\" ? <>{children}</> : <>{fallback}</>;\n}\n\nexport function Unauthenticated({ children, fallback = null }: GateProps) {\n const { status } = useAuthStatus();\n return status === \"unauthenticated\" ? <>{children}</> : <>{fallback}</>;\n}\n\nexport function AuthLoading({ children, fallback = null }: GateProps) {\n const { status } = useAuthStatus();\n return status === \"pending\" ? <>{children}</> : <>{fallback}</>;\n}\n"]}
1
+ {"version":3,"sources":["../../src/react/context.ts","../../src/react/Provider.tsx","../../../../node_modules/.pnpm/fast-json-patch@3.1.1/node_modules/fast-json-patch/module/core.mjs","../../../../node_modules/.pnpm/fast-json-patch@3.1.1/node_modules/fast-json-patch/module/helpers.mjs","../../../../node_modules/.pnpm/fast-json-patch@3.1.1/node_modules/fast-json-patch/module/duplex.mjs","../../../../node_modules/.pnpm/fast-json-patch@3.1.1/node_modules/fast-json-patch/index.mjs","../../src/react/useAuth.ts","../../src/react/useQuery.ts","../../src/react/useApi.ts","../../src/react/useSetting.ts","../../src/react/gates.tsx"],"names":["d","b","PatchError","Mirror","ObserverInfo","useEffect","useRef","entry","useMemo","useState","jsx"],"mappings":"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","file":"index.js","sourcesContent":["import { createContext, useContext } from \"react\";\nimport type { ParcaeClient } from \"../client\";\n\n// Use globalThis to ensure all copies of @parcae/sdk share the same context\n// (pnpm can install multiple copies — they all need the same React context)\nconst KEY = \"__parcae_context\";\nif (!(globalThis as any)[KEY]) {\n (globalThis as any)[KEY] = createContext<ParcaeClient | null>(null);\n}\n\nexport const ParcaeContext: React.Context<ParcaeClient | null> = (\n globalThis as any\n)[KEY];\n\nexport function useParcae(): ParcaeClient {\n const client = useContext(ParcaeContext);\n if (!client)\n throw new Error(\"useParcae must be used within a <ParcaeProvider>\");\n return client;\n}\n","\"use client\";\n\nimport React, { useEffect, useMemo, useRef } from \"react\";\nimport { createClient } from \"../client\";\nimport type { ParcaeClient, ClientConfig } from \"../client\";\nimport type { AuthClientAdapter } from \"../auth-adapter\";\nimport { ParcaeContext } from \"./context\";\nimport { log } from \"../log\";\n\nexport interface ParcaeProviderProps {\n /** Pre-created client instance. */\n client?: ParcaeClient;\n /** Backend URL. */\n url?: string;\n /** Auth adapter — handles session resolution internally. */\n auth?: AuthClientAdapter;\n version?: string;\n transport?: ClientConfig[\"transport\"];\n children: React.ReactNode;\n onReady?: (client: ParcaeClient) => void;\n onError?: (error: Error) => void;\n}\n\nexport const ParcaeProvider: React.FC<ParcaeProviderProps> = ({\n client: externalClient,\n url,\n auth,\n version = \"v1\",\n transport = \"socket\",\n children,\n onReady,\n onError,\n}) => {\n const client = useMemo(() => {\n if (externalClient) return externalClient;\n if (!url)\n throw new Error(\n \"ParcaeProvider requires either a `client` or `url` prop\",\n );\n // Don't pass token — auth adapter handles it\n return createClient({ url, version, transport });\n }, [externalClient, url, version, transport]);\n\n const onReadyRef = useRef(onReady);\n onReadyRef.current = onReady;\n const onErrorRef = useRef(onError);\n onErrorRef.current = onError;\n\n // Initialize auth adapter and resolve session\n useEffect(() => {\n if (!auth) {\n // No auth adapter — resolve as unauthenticated immediately\n client.authenticate(null).catch(() => {});\n return;\n }\n\n // Init adapter with the backend URL\n auth.init(url || \"\");\n\n // Resolve session and authenticate\n const doAuth = async () => {\n try {\n const token = await auth.getToken();\n await client.authenticate(token);\n onReadyRef.current?.(client);\n } catch (err: any) {\n log.warn(\"auth failed:\", err?.message);\n await client.authenticate(null);\n onErrorRef.current?.(err);\n }\n };\n\n doAuth();\n\n // Subscribe to session changes (login/logout)\n const unsub = auth.onChange((token) => {\n client.authenticate(token).catch(() => {});\n });\n\n return unsub;\n }, [auth, client, url]);\n\n // On socket reconnect, re-resolve session via auth adapter\n useEffect(() => {\n if (!auth) return;\n\n const onReconnect = async () => {\n log.debug(\"reconnected — re-resolving session\");\n try {\n const token = await auth.getToken();\n await client.authenticate(token);\n } catch {\n await client.authenticate(null);\n }\n };\n\n client.on(\"connected\", onReconnect);\n return () => {\n client.off(\"connected\", onReconnect);\n };\n }, [auth, client]);\n\n // Forward errors\n useEffect(() => {\n const onErr = (err: Error) => onErrorRef.current?.(err);\n client.on(\"error\", onErr);\n return () => {\n client.off(\"error\", onErr);\n };\n }, [client]);\n\n return (\n <ParcaeContext.Provider value={client}>{children}</ParcaeContext.Provider>\n );\n};\n\nexport default ParcaeProvider;\n","import { PatchError, _deepClone, isInteger, unescapePathComponent, hasUndefined } from './helpers.mjs';\nexport var JsonPatchError = PatchError;\nexport var deepClone = _deepClone;\n/* We use a Javascript hash to store each\n function. Each hash entry (property) uses\n the operation identifiers specified in rfc6902.\n In this way, we can map each patch operation\n to its dedicated function in efficient way.\n */\n/* The operations applicable to an object */\nvar objOps = {\n add: function (obj, key, document) {\n obj[key] = this.value;\n return { newDocument: document };\n },\n remove: function (obj, key, document) {\n var removed = obj[key];\n delete obj[key];\n return { newDocument: document, removed: removed };\n },\n replace: function (obj, key, document) {\n var removed = obj[key];\n obj[key] = this.value;\n return { newDocument: document, removed: removed };\n },\n move: function (obj, key, document) {\n /* in case move target overwrites an existing value,\n return the removed value, this can be taxing performance-wise,\n and is potentially unneeded */\n var removed = getValueByPointer(document, this.path);\n if (removed) {\n removed = _deepClone(removed);\n }\n var originalValue = applyOperation(document, { op: \"remove\", path: this.from }).removed;\n applyOperation(document, { op: \"add\", path: this.path, value: originalValue });\n return { newDocument: document, removed: removed };\n },\n copy: function (obj, key, document) {\n var valueToCopy = getValueByPointer(document, this.from);\n // enforce copy by value so further operations don't affect source (see issue #177)\n applyOperation(document, { op: \"add\", path: this.path, value: _deepClone(valueToCopy) });\n return { newDocument: document };\n },\n test: function (obj, key, document) {\n return { newDocument: document, test: _areEquals(obj[key], this.value) };\n },\n _get: function (obj, key, document) {\n this.value = obj[key];\n return { newDocument: document };\n }\n};\n/* The operations applicable to an array. Many are the same as for the object */\nvar arrOps = {\n add: function (arr, i, document) {\n if (isInteger(i)) {\n arr.splice(i, 0, this.value);\n }\n else { // array props\n arr[i] = this.value;\n }\n // this may be needed when using '-' in an array\n return { newDocument: document, index: i };\n },\n remove: function (arr, i, document) {\n var removedList = arr.splice(i, 1);\n return { newDocument: document, removed: removedList[0] };\n },\n replace: function (arr, i, document) {\n var removed = arr[i];\n arr[i] = this.value;\n return { newDocument: document, removed: removed };\n },\n move: objOps.move,\n copy: objOps.copy,\n test: objOps.test,\n _get: objOps._get\n};\n/**\n * Retrieves a value from a JSON document by a JSON pointer.\n * Returns the value.\n *\n * @param document The document to get the value from\n * @param pointer an escaped JSON pointer\n * @return The retrieved value\n */\nexport function getValueByPointer(document, pointer) {\n if (pointer == '') {\n return document;\n }\n var getOriginalDestination = { op: \"_get\", path: pointer };\n applyOperation(document, getOriginalDestination);\n return getOriginalDestination.value;\n}\n/**\n * Apply a single JSON Patch Operation on a JSON document.\n * Returns the {newDocument, result} of the operation.\n * It modifies the `document` and `operation` objects - it gets the values by reference.\n * If you would like to avoid touching your values, clone them:\n * `jsonpatch.applyOperation(document, jsonpatch._deepClone(operation))`.\n *\n * @param document The document to patch\n * @param operation The operation to apply\n * @param validateOperation `false` is without validation, `true` to use default jsonpatch's validation, or you can pass a `validateOperation` callback to be used for validation.\n * @param mutateDocument Whether to mutate the original document or clone it before applying\n * @param banPrototypeModifications Whether to ban modifications to `__proto__`, defaults to `true`.\n * @return `{newDocument, result}` after the operation\n */\nexport function applyOperation(document, operation, validateOperation, mutateDocument, banPrototypeModifications, index) {\n if (validateOperation === void 0) { validateOperation = false; }\n if (mutateDocument === void 0) { mutateDocument = true; }\n if (banPrototypeModifications === void 0) { banPrototypeModifications = true; }\n if (index === void 0) { index = 0; }\n if (validateOperation) {\n if (typeof validateOperation == 'function') {\n validateOperation(operation, 0, document, operation.path);\n }\n else {\n validator(operation, 0);\n }\n }\n /* ROOT OPERATIONS */\n if (operation.path === \"\") {\n var returnValue = { newDocument: document };\n if (operation.op === 'add') {\n returnValue.newDocument = operation.value;\n return returnValue;\n }\n else if (operation.op === 'replace') {\n returnValue.newDocument = operation.value;\n returnValue.removed = document; //document we removed\n return returnValue;\n }\n else if (operation.op === 'move' || operation.op === 'copy') { // it's a move or copy to root\n returnValue.newDocument = getValueByPointer(document, operation.from); // get the value by json-pointer in `from` field\n if (operation.op === 'move') { // report removed item\n returnValue.removed = document;\n }\n return returnValue;\n }\n else if (operation.op === 'test') {\n returnValue.test = _areEquals(document, operation.value);\n if (returnValue.test === false) {\n throw new JsonPatchError(\"Test operation failed\", 'TEST_OPERATION_FAILED', index, operation, document);\n }\n returnValue.newDocument = document;\n return returnValue;\n }\n else if (operation.op === 'remove') { // a remove on root\n returnValue.removed = document;\n returnValue.newDocument = null;\n return returnValue;\n }\n else if (operation.op === '_get') {\n operation.value = document;\n return returnValue;\n }\n else { /* bad operation */\n if (validateOperation) {\n throw new JsonPatchError('Operation `op` property is not one of operations defined in RFC-6902', 'OPERATION_OP_INVALID', index, operation, document);\n }\n else {\n return returnValue;\n }\n }\n } /* END ROOT OPERATIONS */\n else {\n if (!mutateDocument) {\n document = _deepClone(document);\n }\n var path = operation.path || \"\";\n var keys = path.split('/');\n var obj = document;\n var t = 1; //skip empty element - http://jsperf.com/to-shift-or-not-to-shift\n var len = keys.length;\n var existingPathFragment = undefined;\n var key = void 0;\n var validateFunction = void 0;\n if (typeof validateOperation == 'function') {\n validateFunction = validateOperation;\n }\n else {\n validateFunction = validator;\n }\n while (true) {\n key = keys[t];\n if (key && key.indexOf('~') != -1) {\n key = unescapePathComponent(key);\n }\n if (banPrototypeModifications &&\n (key == '__proto__' ||\n (key == 'prototype' && t > 0 && keys[t - 1] == 'constructor'))) {\n throw new TypeError('JSON-Patch: modifying `__proto__` or `constructor/prototype` prop is banned for security reasons, if this was on purpose, please set `banPrototypeModifications` flag false and pass it to this function. More info in fast-json-patch README');\n }\n if (validateOperation) {\n if (existingPathFragment === undefined) {\n if (obj[key] === undefined) {\n existingPathFragment = keys.slice(0, t).join('/');\n }\n else if (t == len - 1) {\n existingPathFragment = operation.path;\n }\n if (existingPathFragment !== undefined) {\n validateFunction(operation, 0, document, existingPathFragment);\n }\n }\n }\n t++;\n if (Array.isArray(obj)) {\n if (key === '-') {\n key = obj.length;\n }\n else {\n if (validateOperation && !isInteger(key)) {\n throw new JsonPatchError(\"Expected an unsigned base-10 integer value, making the new referenced value the array element with the zero-based index\", \"OPERATION_PATH_ILLEGAL_ARRAY_INDEX\", index, operation, document);\n } // only parse key when it's an integer for `arr.prop` to work\n else if (isInteger(key)) {\n key = ~~key;\n }\n }\n if (t >= len) {\n if (validateOperation && operation.op === \"add\" && key > obj.length) {\n throw new JsonPatchError(\"The specified index MUST NOT be greater than the number of elements in the array\", \"OPERATION_VALUE_OUT_OF_BOUNDS\", index, operation, document);\n }\n var returnValue = arrOps[operation.op].call(operation, obj, key, document); // Apply patch\n if (returnValue.test === false) {\n throw new JsonPatchError(\"Test operation failed\", 'TEST_OPERATION_FAILED', index, operation, document);\n }\n return returnValue;\n }\n }\n else {\n if (t >= len) {\n var returnValue = objOps[operation.op].call(operation, obj, key, document); // Apply patch\n if (returnValue.test === false) {\n throw new JsonPatchError(\"Test operation failed\", 'TEST_OPERATION_FAILED', index, operation, document);\n }\n return returnValue;\n }\n }\n obj = obj[key];\n // If we have more keys in the path, but the next value isn't a non-null object,\n // throw an OPERATION_PATH_UNRESOLVABLE error instead of iterating again.\n if (validateOperation && t < len && (!obj || typeof obj !== \"object\")) {\n throw new JsonPatchError('Cannot perform operation at the desired path', 'OPERATION_PATH_UNRESOLVABLE', index, operation, document);\n }\n }\n }\n}\n/**\n * Apply a full JSON Patch array on a JSON document.\n * Returns the {newDocument, result} of the patch.\n * It modifies the `document` object and `patch` - it gets the values by reference.\n * If you would like to avoid touching your values, clone them:\n * `jsonpatch.applyPatch(document, jsonpatch._deepClone(patch))`.\n *\n * @param document The document to patch\n * @param patch The patch to apply\n * @param validateOperation `false` is without validation, `true` to use default jsonpatch's validation, or you can pass a `validateOperation` callback to be used for validation.\n * @param mutateDocument Whether to mutate the original document or clone it before applying\n * @param banPrototypeModifications Whether to ban modifications to `__proto__`, defaults to `true`.\n * @return An array of `{newDocument, result}` after the patch\n */\nexport function applyPatch(document, patch, validateOperation, mutateDocument, banPrototypeModifications) {\n if (mutateDocument === void 0) { mutateDocument = true; }\n if (banPrototypeModifications === void 0) { banPrototypeModifications = true; }\n if (validateOperation) {\n if (!Array.isArray(patch)) {\n throw new JsonPatchError('Patch sequence must be an array', 'SEQUENCE_NOT_AN_ARRAY');\n }\n }\n if (!mutateDocument) {\n document = _deepClone(document);\n }\n var results = new Array(patch.length);\n for (var i = 0, length_1 = patch.length; i < length_1; i++) {\n // we don't need to pass mutateDocument argument because if it was true, we already deep cloned the object, we'll just pass `true`\n results[i] = applyOperation(document, patch[i], validateOperation, true, banPrototypeModifications, i);\n document = results[i].newDocument; // in case root was replaced\n }\n results.newDocument = document;\n return results;\n}\n/**\n * Apply a single JSON Patch Operation on a JSON document.\n * Returns the updated document.\n * Suitable as a reducer.\n *\n * @param document The document to patch\n * @param operation The operation to apply\n * @return The updated document\n */\nexport function applyReducer(document, operation, index) {\n var operationResult = applyOperation(document, operation);\n if (operationResult.test === false) { // failed test\n throw new JsonPatchError(\"Test operation failed\", 'TEST_OPERATION_FAILED', index, operation, document);\n }\n return operationResult.newDocument;\n}\n/**\n * Validates a single operation. Called from `jsonpatch.validate`. Throws `JsonPatchError` in case of an error.\n * @param {object} operation - operation object (patch)\n * @param {number} index - index of operation in the sequence\n * @param {object} [document] - object where the operation is supposed to be applied\n * @param {string} [existingPathFragment] - comes along with `document`\n */\nexport function validator(operation, index, document, existingPathFragment) {\n if (typeof operation !== 'object' || operation === null || Array.isArray(operation)) {\n throw new JsonPatchError('Operation is not an object', 'OPERATION_NOT_AN_OBJECT', index, operation, document);\n }\n else if (!objOps[operation.op]) {\n throw new JsonPatchError('Operation `op` property is not one of operations defined in RFC-6902', 'OPERATION_OP_INVALID', index, operation, document);\n }\n else if (typeof operation.path !== 'string') {\n throw new JsonPatchError('Operation `path` property is not a string', 'OPERATION_PATH_INVALID', index, operation, document);\n }\n else if (operation.path.indexOf('/') !== 0 && operation.path.length > 0) {\n // paths that aren't empty string should start with \"/\"\n throw new JsonPatchError('Operation `path` property must start with \"/\"', 'OPERATION_PATH_INVALID', index, operation, document);\n }\n else if ((operation.op === 'move' || operation.op === 'copy') && typeof operation.from !== 'string') {\n throw new JsonPatchError('Operation `from` property is not present (applicable in `move` and `copy` operations)', 'OPERATION_FROM_REQUIRED', index, operation, document);\n }\n else if ((operation.op === 'add' || operation.op === 'replace' || operation.op === 'test') && operation.value === undefined) {\n throw new JsonPatchError('Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)', 'OPERATION_VALUE_REQUIRED', index, operation, document);\n }\n else if ((operation.op === 'add' || operation.op === 'replace' || operation.op === 'test') && hasUndefined(operation.value)) {\n throw new JsonPatchError('Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)', 'OPERATION_VALUE_CANNOT_CONTAIN_UNDEFINED', index, operation, document);\n }\n else if (document) {\n if (operation.op == \"add\") {\n var pathLen = operation.path.split(\"/\").length;\n var existingPathLen = existingPathFragment.split(\"/\").length;\n if (pathLen !== existingPathLen + 1 && pathLen !== existingPathLen) {\n throw new JsonPatchError('Cannot perform an `add` operation at the desired path', 'OPERATION_PATH_CANNOT_ADD', index, operation, document);\n }\n }\n else if (operation.op === 'replace' || operation.op === 'remove' || operation.op === '_get') {\n if (operation.path !== existingPathFragment) {\n throw new JsonPatchError('Cannot perform the operation at a path that does not exist', 'OPERATION_PATH_UNRESOLVABLE', index, operation, document);\n }\n }\n else if (operation.op === 'move' || operation.op === 'copy') {\n var existingValue = { op: \"_get\", path: operation.from, value: undefined };\n var error = validate([existingValue], document);\n if (error && error.name === 'OPERATION_PATH_UNRESOLVABLE') {\n throw new JsonPatchError('Cannot perform the operation from a path that does not exist', 'OPERATION_FROM_UNRESOLVABLE', index, operation, document);\n }\n }\n }\n}\n/**\n * Validates a sequence of operations. If `document` parameter is provided, the sequence is additionally validated against the object document.\n * If error is encountered, returns a JsonPatchError object\n * @param sequence\n * @param document\n * @returns {JsonPatchError|undefined}\n */\nexport function validate(sequence, document, externalValidator) {\n try {\n if (!Array.isArray(sequence)) {\n throw new JsonPatchError('Patch sequence must be an array', 'SEQUENCE_NOT_AN_ARRAY');\n }\n if (document) {\n //clone document and sequence so that we can safely try applying operations\n applyPatch(_deepClone(document), _deepClone(sequence), externalValidator || true);\n }\n else {\n externalValidator = externalValidator || validator;\n for (var i = 0; i < sequence.length; i++) {\n externalValidator(sequence[i], i, document, undefined);\n }\n }\n }\n catch (e) {\n if (e instanceof JsonPatchError) {\n return e;\n }\n else {\n throw e;\n }\n }\n}\n// based on https://github.com/epoberezkin/fast-deep-equal\n// MIT License\n// Copyright (c) 2017 Evgeny Poberezkin\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\nexport function _areEquals(a, b) {\n if (a === b)\n return true;\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n var arrA = Array.isArray(a), arrB = Array.isArray(b), i, length, key;\n if (arrA && arrB) {\n length = a.length;\n if (length != b.length)\n return false;\n for (i = length; i-- !== 0;)\n if (!_areEquals(a[i], b[i]))\n return false;\n return true;\n }\n if (arrA != arrB)\n return false;\n var keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length)\n return false;\n for (i = length; i-- !== 0;)\n if (!b.hasOwnProperty(keys[i]))\n return false;\n for (i = length; i-- !== 0;) {\n key = keys[i];\n if (!_areEquals(a[key], b[key]))\n return false;\n }\n return true;\n }\n return a !== a && b !== b;\n}\n;\n","/*!\n * https://github.com/Starcounter-Jack/JSON-Patch\n * (c) 2017-2022 Joachim Wester\n * MIT licensed\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\nexport function hasOwnProperty(obj, key) {\n return _hasOwnProperty.call(obj, key);\n}\nexport function _objectKeys(obj) {\n if (Array.isArray(obj)) {\n var keys_1 = new Array(obj.length);\n for (var k = 0; k < keys_1.length; k++) {\n keys_1[k] = \"\" + k;\n }\n return keys_1;\n }\n if (Object.keys) {\n return Object.keys(obj);\n }\n var keys = [];\n for (var i in obj) {\n if (hasOwnProperty(obj, i)) {\n keys.push(i);\n }\n }\n return keys;\n}\n;\n/**\n* Deeply clone the object.\n* https://jsperf.com/deep-copy-vs-json-stringify-json-parse/25 (recursiveDeepCopy)\n* @param {any} obj value to clone\n* @return {any} cloned obj\n*/\nexport function _deepClone(obj) {\n switch (typeof obj) {\n case \"object\":\n return JSON.parse(JSON.stringify(obj)); //Faster than ES5 clone - http://jsperf.com/deep-cloning-of-objects/5\n case \"undefined\":\n return null; //this is how JSON.stringify behaves for array items\n default:\n return obj; //no need to clone primitives\n }\n}\n//3x faster than cached /^\\d+$/.test(str)\nexport function isInteger(str) {\n var i = 0;\n var len = str.length;\n var charCode;\n while (i < len) {\n charCode = str.charCodeAt(i);\n if (charCode >= 48 && charCode <= 57) {\n i++;\n continue;\n }\n return false;\n }\n return true;\n}\n/**\n* Escapes a json pointer path\n* @param path The raw pointer\n* @return the Escaped path\n*/\nexport function escapePathComponent(path) {\n if (path.indexOf('/') === -1 && path.indexOf('~') === -1)\n return path;\n return path.replace(/~/g, '~0').replace(/\\//g, '~1');\n}\n/**\n * Unescapes a json pointer path\n * @param path The escaped pointer\n * @return The unescaped path\n */\nexport function unescapePathComponent(path) {\n return path.replace(/~1/g, '/').replace(/~0/g, '~');\n}\nexport function _getPathRecursive(root, obj) {\n var found;\n for (var key in root) {\n if (hasOwnProperty(root, key)) {\n if (root[key] === obj) {\n return escapePathComponent(key) + '/';\n }\n else if (typeof root[key] === 'object') {\n found = _getPathRecursive(root[key], obj);\n if (found != '') {\n return escapePathComponent(key) + '/' + found;\n }\n }\n }\n }\n return '';\n}\nexport function getPath(root, obj) {\n if (root === obj) {\n return '/';\n }\n var path = _getPathRecursive(root, obj);\n if (path === '') {\n throw new Error(\"Object not found in root\");\n }\n return \"/\" + path;\n}\n/**\n* Recursively checks whether an object has any undefined values inside.\n*/\nexport function hasUndefined(obj) {\n if (obj === undefined) {\n return true;\n }\n if (obj) {\n if (Array.isArray(obj)) {\n for (var i_1 = 0, len = obj.length; i_1 < len; i_1++) {\n if (hasUndefined(obj[i_1])) {\n return true;\n }\n }\n }\n else if (typeof obj === \"object\") {\n var objKeys = _objectKeys(obj);\n var objKeysLength = objKeys.length;\n for (var i = 0; i < objKeysLength; i++) {\n if (hasUndefined(obj[objKeys[i]])) {\n return true;\n }\n }\n }\n }\n return false;\n}\nfunction patchErrorMessageFormatter(message, args) {\n var messageParts = [message];\n for (var key in args) {\n var value = typeof args[key] === 'object' ? JSON.stringify(args[key], null, 2) : args[key]; // pretty print\n if (typeof value !== 'undefined') {\n messageParts.push(key + \": \" + value);\n }\n }\n return messageParts.join('\\n');\n}\nvar PatchError = /** @class */ (function (_super) {\n __extends(PatchError, _super);\n function PatchError(message, name, index, operation, tree) {\n var _newTarget = this.constructor;\n var _this = _super.call(this, patchErrorMessageFormatter(message, { name: name, index: index, operation: operation, tree: tree })) || this;\n _this.name = name;\n _this.index = index;\n _this.operation = operation;\n _this.tree = tree;\n Object.setPrototypeOf(_this, _newTarget.prototype); // restore prototype chain, see https://stackoverflow.com/a/48342359\n _this.message = patchErrorMessageFormatter(message, { name: name, index: index, operation: operation, tree: tree });\n return _this;\n }\n return PatchError;\n}(Error));\nexport { PatchError };\n","/*!\n * https://github.com/Starcounter-Jack/JSON-Patch\n * (c) 2017-2021 Joachim Wester\n * MIT license\n */\nimport { _deepClone, _objectKeys, escapePathComponent, hasOwnProperty } from './helpers.mjs';\nimport { applyPatch } from './core.mjs';\nvar beforeDict = new WeakMap();\nvar Mirror = /** @class */ (function () {\n function Mirror(obj) {\n this.observers = new Map();\n this.obj = obj;\n }\n return Mirror;\n}());\nvar ObserverInfo = /** @class */ (function () {\n function ObserverInfo(callback, observer) {\n this.callback = callback;\n this.observer = observer;\n }\n return ObserverInfo;\n}());\nfunction getMirror(obj) {\n return beforeDict.get(obj);\n}\nfunction getObserverFromMirror(mirror, callback) {\n return mirror.observers.get(callback);\n}\nfunction removeObserverFromMirror(mirror, observer) {\n mirror.observers.delete(observer.callback);\n}\n/**\n * Detach an observer from an object\n */\nexport function unobserve(root, observer) {\n observer.unobserve();\n}\n/**\n * Observes changes made to an object, which can then be retrieved using generate\n */\nexport function observe(obj, callback) {\n var patches = [];\n var observer;\n var mirror = getMirror(obj);\n if (!mirror) {\n mirror = new Mirror(obj);\n beforeDict.set(obj, mirror);\n }\n else {\n var observerInfo = getObserverFromMirror(mirror, callback);\n observer = observerInfo && observerInfo.observer;\n }\n if (observer) {\n return observer;\n }\n observer = {};\n mirror.value = _deepClone(obj);\n if (callback) {\n observer.callback = callback;\n observer.next = null;\n var dirtyCheck = function () {\n generate(observer);\n };\n var fastCheck = function () {\n clearTimeout(observer.next);\n observer.next = setTimeout(dirtyCheck);\n };\n if (typeof window !== 'undefined') { //not Node\n window.addEventListener('mouseup', fastCheck);\n window.addEventListener('keyup', fastCheck);\n window.addEventListener('mousedown', fastCheck);\n window.addEventListener('keydown', fastCheck);\n window.addEventListener('change', fastCheck);\n }\n }\n observer.patches = patches;\n observer.object = obj;\n observer.unobserve = function () {\n generate(observer);\n clearTimeout(observer.next);\n removeObserverFromMirror(mirror, observer);\n if (typeof window !== 'undefined') {\n window.removeEventListener('mouseup', fastCheck);\n window.removeEventListener('keyup', fastCheck);\n window.removeEventListener('mousedown', fastCheck);\n window.removeEventListener('keydown', fastCheck);\n window.removeEventListener('change', fastCheck);\n }\n };\n mirror.observers.set(callback, new ObserverInfo(callback, observer));\n return observer;\n}\n/**\n * Generate an array of patches from an observer\n */\nexport function generate(observer, invertible) {\n if (invertible === void 0) { invertible = false; }\n var mirror = beforeDict.get(observer.object);\n _generate(mirror.value, observer.object, observer.patches, \"\", invertible);\n if (observer.patches.length) {\n applyPatch(mirror.value, observer.patches);\n }\n var temp = observer.patches;\n if (temp.length > 0) {\n observer.patches = [];\n if (observer.callback) {\n observer.callback(temp);\n }\n }\n return temp;\n}\n// Dirty check if obj is different from mirror, generate patches and update mirror\nfunction _generate(mirror, obj, patches, path, invertible) {\n if (obj === mirror) {\n return;\n }\n if (typeof obj.toJSON === \"function\") {\n obj = obj.toJSON();\n }\n var newKeys = _objectKeys(obj);\n var oldKeys = _objectKeys(mirror);\n var changed = false;\n var deleted = false;\n //if ever \"move\" operation is implemented here, make sure this test runs OK: \"should not generate the same patch twice (move)\"\n for (var t = oldKeys.length - 1; t >= 0; t--) {\n var key = oldKeys[t];\n var oldVal = mirror[key];\n if (hasOwnProperty(obj, key) && !(obj[key] === undefined && oldVal !== undefined && Array.isArray(obj) === false)) {\n var newVal = obj[key];\n if (typeof oldVal == \"object\" && oldVal != null && typeof newVal == \"object\" && newVal != null && Array.isArray(oldVal) === Array.isArray(newVal)) {\n _generate(oldVal, newVal, patches, path + \"/\" + escapePathComponent(key), invertible);\n }\n else {\n if (oldVal !== newVal) {\n changed = true;\n if (invertible) {\n patches.push({ op: \"test\", path: path + \"/\" + escapePathComponent(key), value: _deepClone(oldVal) });\n }\n patches.push({ op: \"replace\", path: path + \"/\" + escapePathComponent(key), value: _deepClone(newVal) });\n }\n }\n }\n else if (Array.isArray(mirror) === Array.isArray(obj)) {\n if (invertible) {\n patches.push({ op: \"test\", path: path + \"/\" + escapePathComponent(key), value: _deepClone(oldVal) });\n }\n patches.push({ op: \"remove\", path: path + \"/\" + escapePathComponent(key) });\n deleted = true; // property has been deleted\n }\n else {\n if (invertible) {\n patches.push({ op: \"test\", path: path, value: mirror });\n }\n patches.push({ op: \"replace\", path: path, value: obj });\n changed = true;\n }\n }\n if (!deleted && newKeys.length == oldKeys.length) {\n return;\n }\n for (var t = 0; t < newKeys.length; t++) {\n var key = newKeys[t];\n if (!hasOwnProperty(mirror, key) && obj[key] !== undefined) {\n patches.push({ op: \"add\", path: path + \"/\" + escapePathComponent(key), value: _deepClone(obj[key]) });\n }\n }\n}\n/**\n * Create an array of patches from the differences in two objects\n */\nexport function compare(tree1, tree2, invertible) {\n if (invertible === void 0) { invertible = false; }\n var patches = [];\n _generate(tree1, tree2, patches, '', invertible);\n return patches;\n}\n","export * from './module/core.mjs';\nexport * from './module/duplex.mjs';\nexport {\n PatchError as JsonPatchError,\n _deepClone as deepClone,\n escapePathComponent,\n unescapePathComponent\n} from './module/helpers.mjs';\n\n\n/**\n * Default export for backwards compat\n */\n\nimport * as core from './module/core.mjs';\nimport * as duplex from './module/duplex.mjs';\nimport {\n PatchError as JsonPatchError,\n _deepClone as deepClone,\n escapePathComponent,\n unescapePathComponent\n} from './module/helpers.mjs';\n\nexport default Object.assign({}, core, duplex, {\n JsonPatchError,\n deepClone,\n escapePathComponent,\n unescapePathComponent\n});","\"use client\";\n\n/**\n * Internal hook to read auth state reactively.\n * No Valtio — just reads the gate state and re-renders when it changes.\n */\n\nimport { useState, useEffect } from \"react\";\nimport { useParcae } from \"./context\";\nimport type { AuthStatus } from \"../auth-gate\";\n\nexport function useAuthStatus(): {\n status: AuthStatus;\n userId: string | null;\n version: number;\n} {\n const client = useParcae();\n const transport = client.transport as any;\n const gate = transport?.auth;\n\n const [, forceRender] = useState(0);\n\n useEffect(() => {\n if (!gate) return;\n let mounted = true;\n const check = () => {\n if (mounted) forceRender((n) => n + 1);\n };\n gate.ready.then(check);\n return () => {\n mounted = false;\n };\n }, [gate, gate?.state?.version]);\n\n return {\n status: gate?.state?.status ?? \"pending\",\n userId: gate?.state?.userId ?? null,\n version: gate?.state?.version ?? 0,\n };\n}\n","\"use client\";\n\n/**\n * useQuery — realtime query subscriptions.\n *\n * 1. Calls chain.findAndSubscribe() via normal RPC → { items, hash }\n * 2. Hydrated items go into the cache\n * 3. Listens to query:{hash} for surgical diffs (add/remove/patch)\n * 4. Applies diffs locally → React re-renders\n * 5. On unmount: sends unsubscribe:query, stops listening\n * 6. On reconnect: re-subscribes (fresh data)\n */\n\nimport { useEffect, useRef, useSyncExternalStore } from \"react\";\nimport { applyPatch } from \"fast-json-patch\";\nimport { useParcae } from \"./context\";\nimport { useAuthStatus } from \"./useAuth\";\nimport { log } from \"../log\";\n\ninterface QueryChain<T> {\n find(): Promise<T[]>;\n findAndSubscribe(): Promise<{ items: T[]; hash: string | null }>;\n __steps?: any[];\n __modelType?: string;\n __modelClass?: any;\n __adapter?: any;\n}\n\ninterface UseQueryOptions {\n waitForAuth?: boolean;\n}\n\ninterface UseQueryResult<T> {\n items: T[];\n loading: boolean;\n error: Error | null;\n refetch: () => void;\n}\n\n// ─── Types for server ops ────────────────────────────────────────────────────\n\ntype QueryOp =\n | { op: \"add\"; id: string; data: Record<string, any> }\n | { op: \"remove\"; id: string }\n | { op: \"patch\"; id: string; patch: any[] };\n\n// ─── Cache ───────────────────────────────────────────────────────────────────\n\ninterface CacheEntry {\n items: any[];\n itemMap: Map<string, any>;\n loading: boolean;\n error: Error | null;\n refs: number;\n listeners: Set<() => void>;\n dispose: (() => void) | null;\n gcTimer: ReturnType<typeof setTimeout> | null;\n hash: string | null;\n modelClass: any;\n}\n\nconst cache = new Map<string, CacheEntry>();\nconst GC_DELAY = 60_000;\nconst EMPTY: any[] = [];\n\nfunction getOrCreate(key: string, modelClass?: any): CacheEntry {\n let e = cache.get(key);\n if (!e) {\n e = {\n items: EMPTY,\n itemMap: new Map(),\n loading: true,\n error: null,\n refs: 0,\n listeners: new Set(),\n dispose: null,\n gcTimer: null,\n hash: null,\n modelClass: modelClass ?? null,\n };\n cache.set(key, e);\n }\n return e;\n}\n\nfunction notify(e: CacheEntry): void {\n for (const fn of e.listeners) fn();\n}\n\n// ─── Fetch + Subscribe ───────────────────────────────────────────────────────\n\nfunction doFetchAndSubscribe(\n key: string,\n entry: CacheEntry,\n chain: QueryChain<any>,\n client: any,\n): void {\n log.debug(\"useQuery: fetching\", chain.__modelType);\n entry.loading = true;\n entry.error = null;\n notify(entry);\n\n chain\n .findAndSubscribe()\n .then(({ items, hash }) => {\n log.debug(\"useQuery: got\", items.length, \"items, hash:\", hash);\n\n entry.items = items;\n entry.itemMap = new Map();\n for (const item of items) {\n const id = (item as any).id;\n if (id) entry.itemMap.set(id, item);\n }\n entry.loading = false;\n entry.hash = hash;\n notify(entry);\n\n // Listen for diff ops\n if (hash) {\n const diffHandler = (ops: QueryOp[]) => {\n if (!Array.isArray(ops)) return;\n applyOps(entry, ops);\n };\n const unsubDiff = client.subscribe(`query:${hash}`, diffHandler);\n\n // Build dispose: stop listening + tell server to unsubscribe\n const prevDispose = entry.dispose;\n entry.dispose = () => {\n unsubDiff();\n client.send?.(\"unsubscribe:query\", hash);\n entry.hash = null;\n entry.dispose = null;\n prevDispose?.();\n };\n }\n })\n .catch((err: Error) => {\n log.error(\"useQuery: error\", err.message);\n entry.error = err;\n entry.loading = false;\n notify(entry);\n });\n}\n\n// ─── Op Application ──────────────────────────────────────────────────────────\n\nfunction applyOps(entry: CacheEntry, ops: QueryOp[]): void {\n let changed = false;\n const adapter = entry.items[0]?.[Symbol.for?.(\"parcae:adapter\")] ?? null;\n\n for (const op of ops) {\n switch (op.op) {\n case \"add\": {\n if (!entry.itemMap.has(op.id) && entry.modelClass && adapter) {\n const instance = new entry.modelClass(adapter, op.data);\n entry.itemMap.set(op.id, instance);\n changed = true;\n }\n break;\n }\n case \"remove\": {\n if (entry.itemMap.has(op.id)) {\n entry.itemMap.delete(op.id);\n changed = true;\n }\n break;\n }\n case \"patch\": {\n const existing = entry.itemMap.get(op.id);\n if (existing && op.patch?.length > 0) {\n try {\n const data = existing.__data;\n applyPatch(data, op.patch, false, true);\n for (const patchOp of op.patch) {\n const key = patchOp.path?.split(\"/\")?.[1];\n if (key && key in data) (existing as any)[key] = data[key];\n }\n changed = true;\n } catch (err) {\n log.error(\"useQuery: patch apply failed\", err);\n }\n }\n break;\n }\n }\n }\n\n if (changed) {\n entry.items = [...entry.itemMap.values()];\n notify(entry);\n }\n}\n\n// ─── useQuery ────────────────────────────────────────────────────────────────\n\nexport function useQuery<T>(\n chain: QueryChain<T> | null | undefined,\n options: UseQueryOptions = {},\n): UseQueryResult<T> {\n const client = useParcae();\n const waitForAuth = options.waitForAuth ?? true;\n const { status: authStatus, version: authVersion } = useAuthStatus();\n const authReady = !waitForAuth || authStatus !== \"pending\";\n\n const key =\n chain && authReady\n ? `${chain.__modelType}:${authVersion}:${JSON.stringify(chain.__steps ?? [])}`\n : null;\n\n const keyRef = useRef(key);\n keyRef.current = key;\n\n const subscribe = (onChange: () => void) => {\n const k = keyRef.current;\n if (!k) return () => {};\n const e = getOrCreate(k, chain?.__modelClass);\n e.refs++;\n e.listeners.add(onChange);\n if (e.gcTimer) {\n clearTimeout(e.gcTimer);\n e.gcTimer = null;\n }\n return () => {\n e.listeners.delete(onChange);\n e.refs--;\n if (e.refs <= 0) {\n e.gcTimer = setTimeout(() => {\n e.dispose?.();\n cache.delete(k);\n }, GC_DELAY);\n }\n };\n };\n\n const getSnapshot = (): any[] => {\n const k = keyRef.current;\n if (!k) return EMPTY;\n return cache.get(k)?.items ?? EMPTY;\n };\n\n const items = useSyncExternalStore(\n subscribe,\n getSnapshot,\n getSnapshot,\n ) as T[];\n\n useEffect(() => {\n if (!key || !chain) return;\n const entry = getOrCreate(key, chain.__modelClass);\n\n // Fetch + subscribe if not already done\n if (entry.items === EMPTY && !entry.dispose) {\n doFetchAndSubscribe(key, entry, chain, client);\n }\n\n // Re-subscribe on reconnect\n const onReconnect = () => {\n if (!cache.has(key)) return;\n const e = cache.get(key)!;\n e.dispose?.();\n e.loading = true;\n notify(e);\n doFetchAndSubscribe(key, e, chain, client);\n };\n\n client.on?.(\"connected\", onReconnect);\n return () => {\n client.off?.(\"connected\", onReconnect);\n };\n }, [key]); // eslint-disable-line react-hooks/exhaustive-deps\n\n const refetch = () => {\n if (!key || !chain) return;\n const entry = getOrCreate(key, chain.__modelClass);\n entry.dispose?.();\n entry.loading = true;\n notify(entry);\n doFetchAndSubscribe(key, entry, chain, client);\n };\n\n if (!key) {\n return {\n items: EMPTY as T[],\n loading: !authReady,\n error: null,\n refetch: () => {},\n };\n }\n\n const entry = cache.get(key);\n return {\n items,\n loading: entry?.loading ?? true,\n error: entry?.error ?? null,\n refetch,\n };\n}\n\nexport function clearQueryCache(): void {\n for (const [, entry] of cache) {\n entry.dispose?.();\n if (entry.gcTimer) clearTimeout(entry.gcTimer);\n }\n cache.clear();\n}\n","\"use client\";\n\nimport { useMemo } from \"react\";\nimport { useParcae } from \"./context\";\nimport { useAuthStatus } from \"./useAuth\";\n\nexport function useApi() {\n const client = useParcae();\n return useMemo(\n () => ({\n get: client.get.bind(client),\n post: client.post.bind(client),\n put: client.put.bind(client),\n patch: client.patch.bind(client),\n delete: client.delete.bind(client),\n }),\n [client],\n );\n}\n\nexport function useSDK() {\n return useParcae();\n}\n\nexport function useConnectionStatus() {\n const client = useParcae();\n const { status } = useAuthStatus();\n return { isConnected: client.isConnected, authStatus: status };\n}\n\nexport function useAuthState() {\n return useAuthStatus();\n}\n","\"use client\";\n\nimport { useState, useEffect, useCallback } from \"react\";\nimport { useParcae } from \"./context\";\nimport { useAuthStatus } from \"./useAuth\";\n\nexport function useSetting<T = string>(\n key: string,\n defaultValue: T,\n): [T, (value: T) => Promise<void>, { isLoading: boolean }] {\n const client = useParcae();\n const { status: authStatus } = useAuthStatus();\n\n const [value, setValue] = useState<T>(defaultValue);\n const [isLoading, setIsLoading] = useState(true);\n\n useEffect(() => {\n if (authStatus === \"pending\") return;\n if (authStatus === \"unauthenticated\") {\n setIsLoading(false);\n return;\n }\n\n let cancelled = false;\n client\n .get(`/settings/${encodeURIComponent(key)}`)\n .then((result: any) => {\n if (!cancelled && result?.value !== undefined) setValue(result.value);\n })\n .catch(() => {})\n .finally(() => {\n if (!cancelled) setIsLoading(false);\n });\n return () => {\n cancelled = true;\n };\n }, [key, client, authStatus]);\n\n const update = useCallback(\n async (newValue: T) => {\n setValue(newValue);\n await client.put(`/settings/${encodeURIComponent(key)}`, {\n value: newValue,\n });\n },\n [key, client],\n );\n\n return [value, update, { isLoading }];\n}\n","\"use client\";\n\nimport React from \"react\";\nimport { useAuthStatus } from \"./useAuth\";\n\ninterface GateProps {\n children: React.ReactNode;\n fallback?: React.ReactNode;\n}\n\nexport function Authenticated({ children, fallback = null }: GateProps) {\n const { status } = useAuthStatus();\n return status === \"authenticated\" ? <>{children}</> : <>{fallback}</>;\n}\n\nexport function Unauthenticated({ children, fallback = null }: GateProps) {\n const { status } = useAuthStatus();\n return status === \"unauthenticated\" ? <>{children}</> : <>{fallback}</>;\n}\n\nexport function AuthLoading({ children, fallback = null }: GateProps) {\n const { status } = useAuthStatus();\n return status === \"pending\" ? <>{children}</> : <>{fallback}</>;\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@parcae/sdk",
3
- "version": "0.6.1",
3
+ "version": "0.7.0",
4
4
  "description": "Parcae SDK — client transport and React hooks for Parcae backends",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -21,21 +21,13 @@
21
21
  "files": [
22
22
  "dist"
23
23
  ],
24
- "scripts": {
25
- "build": "tsup",
26
- "dev": "tsup --watch",
27
- "typecheck": "tsc --noEmit",
28
- "clean": "rm -rf dist",
29
- "test": "vitest run",
30
- "test:watch": "vitest"
31
- },
32
24
  "dependencies": {
33
- "@parcae/model": ">=0.1.0",
34
25
  "compress-json": "^3.1.0",
35
26
  "eventemitter3": "^5.0.1",
36
27
  "pako": "^2.1.0",
37
28
  "short-unique-id": "^5.2.0",
38
- "socket.io-client": "^4.8.0"
29
+ "socket.io-client": "^4.8.0",
30
+ "@parcae/model": "0.7.0"
39
31
  },
40
32
  "devDependencies": {
41
33
  "@types/pako": "^2.0.3",
@@ -53,5 +45,13 @@
53
45
  "optional": true
54
46
  }
55
47
  },
56
- "license": "MIT"
57
- }
48
+ "license": "MIT",
49
+ "scripts": {
50
+ "build": "tsup",
51
+ "dev": "tsup --watch",
52
+ "typecheck": "tsc --noEmit",
53
+ "clean": "rm -rf dist",
54
+ "test": "vitest run",
55
+ "test:watch": "vitest"
56
+ }
57
+ }
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/log.ts","../../../node_modules/.pnpm/proxy-compare@3.0.1/node_modules/proxy-compare/dist/index.js","../../../node_modules/.pnpm/valtio@2.3.1_@types+react@19.2.14_react@19.2.4/node_modules/valtio/esm/vanilla.mjs","../src/auth-gate.ts","../src/transports/socket.ts","../src/transports/sse.ts","../src/client.ts"],"names":["EventEmitter","body"],"mappings":"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","file":"chunk-YKK5SBY4.js","sourcesContent":["/**\n * SDK logger — same format as backend.\n * Only logs in development. Silent in production.\n */\n\nconst isDev =\n typeof process !== \"undefined\" ? process.env.NODE_ENV !== \"production\" : true;\n\nfunction time(): string {\n const d = new Date();\n return `${String(d.getHours()).padStart(2, \"0\")}:${String(d.getMinutes()).padStart(2, \"0\")}:${String(d.getSeconds()).padStart(2, \"0\")}`;\n}\n\nexport const log = {\n info: (...args: any[]) =>\n isDev && console.log(`%c${time()} SDK`, \"color: #6b7\", ...args),\n warn: (...args: any[]) =>\n isDev && console.warn(`%c${time()} SDK`, \"color: #fb3\", ...args),\n error: (...args: any[]) =>\n console.error(`%c${time()} SDK`, \"color: #f44\", ...args),\n debug: (...args: any[]) =>\n isDev && console.debug(`%c${time()} SDK`, \"color: #888\", ...args),\n};\n","/* eslint @typescript-eslint/no-explicit-any: off */\n// symbols\nconst TRACK_MEMO_SYMBOL = Symbol();\nconst GET_ORIGINAL_SYMBOL = Symbol();\n// properties\nconst AFFECTED_PROPERTY = 'a';\nconst IS_TARGET_COPIED_PROPERTY = 'f';\nconst PROXY_PROPERTY = 'p';\nconst PROXY_CACHE_PROPERTY = 'c';\nconst TARGET_CACHE_PROPERTY = 't';\nconst HAS_KEY_PROPERTY = 'h';\nconst ALL_OWN_KEYS_PROPERTY = 'w';\nconst HAS_OWN_KEY_PROPERTY = 'o';\nconst KEYS_PROPERTY = 'k';\n// function to create a new bare proxy\nlet newProxy = (target, handler) => new Proxy(target, handler);\n// get object prototype\nconst getProto = Object.getPrototypeOf;\nconst objectsToTrack = new WeakMap();\n// check if obj is a plain object or an array\nconst isObjectToTrack = (obj) => obj &&\n (objectsToTrack.has(obj)\n ? objectsToTrack.get(obj)\n : getProto(obj) === Object.prototype || getProto(obj) === Array.prototype);\n// check if it is object\nconst isObject = (x) => typeof x === 'object' && x !== null;\n// Properties that are both non-configurable and non-writable will break\n// the proxy get trap when we try to return a recursive/child compare proxy\n// from them. We can avoid this by making a copy of the target object with\n// all descriptors marked as configurable, see `copyTargetObject`.\n// See: https://github.com/dai-shi/proxy-compare/pull/8\nconst needsToCopyTargetObject = (obj) => Object.values(Object.getOwnPropertyDescriptors(obj)).some((descriptor) => !descriptor.configurable && !descriptor.writable);\n// Make a copy with all descriptors marked as configurable.\nconst copyTargetObject = (obj) => {\n if (Array.isArray(obj)) {\n // Arrays need a special way to copy\n return Array.from(obj);\n }\n // For non-array objects, we create a new object keeping the prototype\n // with changing all configurable options (otherwise, proxies will complain)\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n Object.values(descriptors).forEach((desc) => {\n desc.configurable = true;\n });\n return Object.create(getProto(obj), descriptors);\n};\nconst createProxyHandler = (origObj, isTargetCopied) => {\n const state = {\n [IS_TARGET_COPIED_PROPERTY]: isTargetCopied,\n };\n let trackObject = false; // for trackMemo\n const recordUsage = (type, key) => {\n if (!trackObject) {\n let used = state[AFFECTED_PROPERTY].get(origObj);\n if (!used) {\n used = {};\n state[AFFECTED_PROPERTY].set(origObj, used);\n }\n if (type === ALL_OWN_KEYS_PROPERTY) {\n used[ALL_OWN_KEYS_PROPERTY] = true;\n }\n else {\n let set = used[type];\n if (!set) {\n set = new Set();\n used[type] = set;\n }\n set.add(key);\n }\n }\n };\n const recordObjectAsUsed = () => {\n trackObject = true;\n state[AFFECTED_PROPERTY].delete(origObj);\n };\n const handler = {\n get(target, key) {\n if (key === GET_ORIGINAL_SYMBOL) {\n return origObj;\n }\n recordUsage(KEYS_PROPERTY, key);\n return createProxy(Reflect.get(target, key), state[AFFECTED_PROPERTY], state[PROXY_CACHE_PROPERTY], state[TARGET_CACHE_PROPERTY]);\n },\n has(target, key) {\n if (key === TRACK_MEMO_SYMBOL) {\n recordObjectAsUsed();\n return true;\n }\n recordUsage(HAS_KEY_PROPERTY, key);\n return Reflect.has(target, key);\n },\n getOwnPropertyDescriptor(target, key) {\n recordUsage(HAS_OWN_KEY_PROPERTY, key);\n return Reflect.getOwnPropertyDescriptor(target, key);\n },\n ownKeys(target) {\n recordUsage(ALL_OWN_KEYS_PROPERTY);\n return Reflect.ownKeys(target);\n },\n };\n if (isTargetCopied) {\n handler.set = handler.deleteProperty = () => false;\n }\n return [handler, state];\n};\nconst getOriginalObject = (obj) => \n// unwrap proxy\nobj[GET_ORIGINAL_SYMBOL] ||\n // otherwise\n obj;\n/**\n * Create a proxy.\n *\n * This function will create a proxy at top level and proxy nested objects as you access them,\n * in order to keep track of which properties were accessed via get/has proxy handlers:\n *\n * NOTE: Printing of WeakMap is hard to inspect and not very readable\n * for this purpose you can use the `affectedToPathList` helper.\n *\n * @param {object} obj - Object that will be wrapped on the proxy.\n * @param {WeakMap<object, unknown>} affected -\n * WeakMap that will hold the tracking of which properties in the proxied object were accessed.\n * @param {WeakMap<object, unknown>} [proxyCache] -\n * WeakMap that will help keep referential identity for proxies.\n * @returns {Proxy<object>} - Object wrapped in a proxy.\n *\n * @example\n * import { createProxy } from 'proxy-compare';\n *\n * const original = { a: \"1\", c: \"2\", d: { e: \"3\" } };\n * const affected = new WeakMap();\n * const proxy = createProxy(original, affected);\n *\n * proxy.a // Will mark as used and track its value.\n * // This will update the affected WeakMap with original as key\n * // and a Set with \"a\"\n *\n * proxy.d // Will mark \"d\" as accessed to track and proxy itself ({ e: \"3\" }).\n * // This will update the affected WeakMap with original as key\n * // and a Set with \"d\"\n */\nexport const createProxy = (obj, affected, proxyCache, targetCache) => {\n if (!isObjectToTrack(obj))\n return obj;\n let targetAndCopied = targetCache && targetCache.get(obj);\n if (!targetAndCopied) {\n const target = getOriginalObject(obj);\n if (needsToCopyTargetObject(target)) {\n targetAndCopied = [target, copyTargetObject(target)];\n }\n else {\n targetAndCopied = [target];\n }\n targetCache === null || targetCache === void 0 ? void 0 : targetCache.set(obj, targetAndCopied);\n }\n const [target, copiedTarget] = targetAndCopied;\n let handlerAndState = proxyCache && proxyCache.get(target);\n if (!handlerAndState ||\n handlerAndState[1][IS_TARGET_COPIED_PROPERTY] !== !!copiedTarget) {\n handlerAndState = createProxyHandler(target, !!copiedTarget);\n handlerAndState[1][PROXY_PROPERTY] = newProxy(copiedTarget || target, handlerAndState[0]);\n if (proxyCache) {\n proxyCache.set(target, handlerAndState);\n }\n }\n handlerAndState[1][AFFECTED_PROPERTY] = affected;\n handlerAndState[1][PROXY_CACHE_PROPERTY] = proxyCache;\n handlerAndState[1][TARGET_CACHE_PROPERTY] = targetCache;\n return handlerAndState[1][PROXY_PROPERTY];\n};\nconst isAllOwnKeysChanged = (prevObj, nextObj) => {\n const prevKeys = Reflect.ownKeys(prevObj);\n const nextKeys = Reflect.ownKeys(nextObj);\n return (prevKeys.length !== nextKeys.length ||\n prevKeys.some((k, i) => k !== nextKeys[i]));\n};\n/**\n * Compare changes on objects.\n *\n * This will compare the affected properties on tracked objects inside the proxy\n * to check if there were any changes made to it,\n * by default if no property was accessed on the proxy it will attempt to do a\n * reference equality check for the objects provided (Object.is(a, b)). If you access a property\n * on the proxy, then isChanged will only compare the affected properties.\n *\n * @param {object} prevObj - The previous object to compare.\n * @param {object} nextObj - Object to compare with the previous one.\n * @param {WeakMap<object, unknown>} affected -\n * WeakMap that holds the tracking of which properties in the proxied object were accessed.\n * @param {WeakMap<object, unknown>} [cache] -\n * WeakMap that holds a cache of the comparisons for better performance with repetitive comparisons,\n * and to avoid infinite loop with circular structures.\n * @returns {boolean} - Boolean indicating if the affected property on the object has changed.\n *\n * @example\n * import { createProxy, isChanged } from 'proxy-compare';\n *\n * const obj = { a: \"1\", c: \"2\", d: { e: \"3\" } };\n * const affected = new WeakMap();\n *\n * const proxy = createProxy(obj, affected);\n *\n * proxy.a\n *\n * isChanged(obj, { a: \"1\" }, affected) // false\n *\n * proxy.a = \"2\"\n *\n * isChanged(obj, { a: \"1\" }, affected) // true\n */\nexport const isChanged = (prevObj, nextObj, affected, cache, // for object with cycles\nisEqual = Object.is) => {\n if (isEqual(prevObj, nextObj)) {\n return false;\n }\n if (!isObject(prevObj) || !isObject(nextObj))\n return true;\n const used = affected.get(getOriginalObject(prevObj));\n if (!used)\n return true;\n if (cache) {\n const hit = cache.get(prevObj);\n if (hit === nextObj) {\n return false;\n }\n // for object with cycles\n cache.set(prevObj, nextObj);\n }\n let changed = null;\n for (const key of used[HAS_KEY_PROPERTY] || []) {\n changed = Reflect.has(prevObj, key) !== Reflect.has(nextObj, key);\n if (changed)\n return changed;\n }\n if (used[ALL_OWN_KEYS_PROPERTY] === true) {\n changed = isAllOwnKeysChanged(prevObj, nextObj);\n if (changed)\n return changed;\n }\n else {\n for (const key of used[HAS_OWN_KEY_PROPERTY] || []) {\n const hasPrev = !!Reflect.getOwnPropertyDescriptor(prevObj, key);\n const hasNext = !!Reflect.getOwnPropertyDescriptor(nextObj, key);\n changed = hasPrev !== hasNext;\n if (changed)\n return changed;\n }\n }\n for (const key of used[KEYS_PROPERTY] || []) {\n changed = isChanged(prevObj[key], nextObj[key], affected, cache, isEqual);\n if (changed)\n return changed;\n }\n if (changed === null)\n throw new Error('invalid used');\n return changed;\n};\n// explicitly track object with memo\nexport const trackMemo = (obj) => {\n if (isObjectToTrack(obj)) {\n return TRACK_MEMO_SYMBOL in obj;\n }\n return false;\n};\n/**\n * Unwrap proxy to get the original object.\n *\n * Used to retrieve the original object used to create the proxy instance with `createProxy`.\n *\n * @param {Proxy<object>} obj - The proxy wrapper of the originial object.\n * @returns {object | null} - Return either the unwrapped object if exists.\n *\n * @example\n * import { createProxy, getUntracked } from 'proxy-compare';\n *\n * const original = { a: \"1\", c: \"2\", d: { e: \"3\" } };\n * const affected = new WeakMap();\n *\n * const proxy = createProxy(original, affected);\n * const originalFromProxy = getUntracked(proxy)\n *\n * Object.is(original, originalFromProxy) // true\n * isChanged(original, originalFromProxy, affected) // false\n */\nexport const getUntracked = (obj) => {\n if (isObjectToTrack(obj)) {\n return obj[GET_ORIGINAL_SYMBOL] || null;\n }\n return null;\n};\n/**\n * Mark object to be tracked.\n *\n * This function marks an object that will be passed into `createProxy`\n * as marked to track or not. By default only Array and Object are marked to track,\n * so this is useful for example to mark a class instance to track or to mark a object\n * to be untracked when creating your proxy.\n *\n * @param obj - Object to mark as tracked or not.\n * @param mark - Boolean indicating whether you want to track this object or not.\n * @returns - No return.\n *\n * @example\n * import { createProxy, markToTrack, isChanged } from 'proxy-compare';\n *\n * const nested = { e: \"3\" }\n *\n * markToTrack(nested, false)\n *\n * const original = { a: \"1\", c: \"2\", d: nested };\n * const affected = new WeakMap();\n *\n * const proxy = createProxy(original, affected);\n *\n * proxy.d.e\n *\n * isChanged(original, { d: { e: \"3\" } }, affected) // true\n */\nexport const markToTrack = (obj, mark = true) => {\n objectsToTrack.set(obj, mark);\n};\n/**\n * Convert `affected` to path list\n *\n * `affected` is a weak map which is not printable.\n * This function is can convert it to printable path list.\n * It's for debugging purpose.\n *\n * @param obj - An object that is used with `createProxy`.\n * @param affected - A weak map that is used with `createProxy`.\n * @param onlyWithValues - An optional boolean to exclude object getters.\n * @returns - An array of paths.\n */\nexport const affectedToPathList = (obj, affected, onlyWithValues) => {\n const list = [];\n const seen = new WeakSet();\n const walk = (x, path) => {\n var _a, _b, _c;\n if (seen.has(x)) {\n // for object with cycles\n return;\n }\n if (isObject(x)) {\n seen.add(x);\n }\n const used = isObject(x) && affected.get(getOriginalObject(x));\n if (used) {\n (_a = used[HAS_KEY_PROPERTY]) === null || _a === void 0 ? void 0 : _a.forEach((key) => {\n const segment = `:has(${String(key)})`;\n list.push(path ? [...path, segment] : [segment]);\n });\n if (used[ALL_OWN_KEYS_PROPERTY] === true) {\n const segment = ':ownKeys';\n list.push(path ? [...path, segment] : [segment]);\n }\n else {\n (_b = used[HAS_OWN_KEY_PROPERTY]) === null || _b === void 0 ? void 0 : _b.forEach((key) => {\n const segment = `:hasOwn(${String(key)})`;\n list.push(path ? [...path, segment] : [segment]);\n });\n }\n (_c = used[KEYS_PROPERTY]) === null || _c === void 0 ? void 0 : _c.forEach((key) => {\n if (!onlyWithValues ||\n 'value' in (Object.getOwnPropertyDescriptor(x, key) || {})) {\n walk(x[key], path ? [...path, key] : [key]);\n }\n });\n }\n else if (path) {\n list.push(path);\n }\n };\n walk(obj);\n return list;\n};\n/**\n * replace newProxy function.\n *\n * This can be used if you want to use proxy-polyfill.\n * Note that proxy-polyfill can't polyfill everything.\n * Use it at your own risk.\n */\nexport const replaceNewProxy = (fn) => {\n newProxy = fn;\n};\n","import { getUntracked, markToTrack } from 'proxy-compare';\n\nconst isObject = (x) => typeof x === \"object\" && x !== null;\nconst canProxyDefault = (x) => isObject(x) && !refSet.has(x) && (Array.isArray(x) || !(Symbol.iterator in x)) && !(x instanceof WeakMap) && !(x instanceof WeakSet) && !(x instanceof Error) && !(x instanceof Number) && !(x instanceof Date) && !(x instanceof String) && !(x instanceof RegExp) && !(x instanceof ArrayBuffer) && !(x instanceof Promise);\nconst createSnapshotDefault = (target, version) => {\n const cache = snapCache.get(target);\n if ((cache == null ? void 0 : cache[0]) === version) {\n return cache[1];\n }\n const snap = Array.isArray(target) ? [] : Object.create(Object.getPrototypeOf(target));\n markToTrack(snap, true);\n snapCache.set(target, [version, snap]);\n Reflect.ownKeys(target).forEach((key) => {\n if (Object.getOwnPropertyDescriptor(snap, key)) {\n return;\n }\n const value = Reflect.get(target, key);\n const { enumerable } = Reflect.getOwnPropertyDescriptor(\n target,\n key\n );\n const desc = {\n value,\n enumerable,\n // This is intentional to avoid copying with proxy-compare.\n // It's still non-writable, so it avoids assigning a value.\n configurable: true\n };\n if (refSet.has(value)) {\n markToTrack(value, false);\n } else if (proxyStateMap.has(value)) {\n const [target2, ensureVersion] = proxyStateMap.get(\n value\n );\n desc.value = createSnapshotDefault(target2, ensureVersion());\n }\n Object.defineProperty(snap, key, desc);\n });\n return Object.preventExtensions(snap);\n};\nconst createHandlerDefault = (isInitializing, addPropListener, removePropListener, notifyUpdate) => ({\n deleteProperty(target, prop) {\n const prevValue = Reflect.get(target, prop);\n removePropListener(prop);\n const deleted = Reflect.deleteProperty(target, prop);\n if (deleted) {\n notifyUpdate(createOp == null ? void 0 : createOp(\"delete\", prop, prevValue));\n }\n return deleted;\n },\n set(target, prop, value, receiver) {\n const hasPrevValue = !isInitializing() && Reflect.has(target, prop);\n const prevValue = Reflect.get(target, prop, receiver);\n if (hasPrevValue && (objectIs(prevValue, value) || proxyCache.has(value) && objectIs(prevValue, proxyCache.get(value)))) {\n return true;\n }\n removePropListener(prop);\n if (isObject(value)) {\n value = getUntracked(value) || value;\n }\n const nextValue = !proxyStateMap.has(value) && canProxy(value) ? proxy(value) : value;\n addPropListener(prop, nextValue);\n Reflect.set(target, prop, nextValue, receiver);\n notifyUpdate(createOp == null ? void 0 : createOp(\"set\", prop, value, prevValue));\n return true;\n }\n});\nconst createOpDefault = (type, prop, ...args) => [type, [prop], ...args];\nconst proxyStateMap = /* @__PURE__ */ new WeakMap();\nconst refSet = /* @__PURE__ */ new WeakSet();\nconst snapCache = /* @__PURE__ */ new WeakMap();\nconst versionHolder = [1];\nconst proxyCache = /* @__PURE__ */ new WeakMap();\nlet objectIs = Object.is;\nlet newProxy = (target, handler) => new Proxy(target, handler);\nlet canProxy = canProxyDefault;\nlet createSnapshot = createSnapshotDefault;\nlet createHandler = createHandlerDefault;\nlet createOp;\nfunction proxy(baseObject = {}) {\n if (!isObject(baseObject)) {\n throw new Error(\"object required\");\n }\n const found = proxyCache.get(baseObject);\n if (found) {\n return found;\n }\n let version = versionHolder[0];\n const listeners = /* @__PURE__ */ new Set();\n const notifyUpdate = (op, nextVersion = ++versionHolder[0]) => {\n if (version !== nextVersion) {\n checkVersion = version = nextVersion;\n listeners.forEach((listener) => listener(op, nextVersion));\n }\n };\n let checkVersion = version;\n const ensureVersion = (nextCheckVersion = versionHolder[0]) => {\n if (checkVersion !== nextCheckVersion) {\n checkVersion = nextCheckVersion;\n propProxyStates.forEach(([propProxyState]) => {\n const propVersion = propProxyState[1](nextCheckVersion);\n if (propVersion > version) {\n version = propVersion;\n }\n });\n }\n return version;\n };\n const createPropListener = (prop) => (op, nextVersion) => {\n let newOp;\n if (op) {\n newOp = [...op];\n newOp[1] = [prop, ...newOp[1]];\n }\n notifyUpdate(newOp, nextVersion);\n };\n const propProxyStates = /* @__PURE__ */ new Map();\n const addPropListener = (prop, propValue) => {\n const propProxyState = !refSet.has(propValue) && proxyStateMap.get(propValue);\n if (propProxyState) {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && propProxyStates.has(prop)) {\n throw new Error(\"prop listener already exists\");\n }\n if (listeners.size) {\n const remove = propProxyState[2](createPropListener(prop));\n propProxyStates.set(prop, [propProxyState, remove]);\n } else {\n propProxyStates.set(prop, [propProxyState]);\n }\n }\n };\n const removePropListener = (prop) => {\n var _a;\n const entry = propProxyStates.get(prop);\n if (entry) {\n propProxyStates.delete(prop);\n (_a = entry[1]) == null ? void 0 : _a.call(entry);\n }\n };\n const addListener = (listener) => {\n listeners.add(listener);\n if (listeners.size === 1) {\n propProxyStates.forEach(([propProxyState, prevRemove], prop) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && prevRemove) {\n throw new Error(\"remove already exists\");\n }\n const remove = propProxyState[2](createPropListener(prop));\n propProxyStates.set(prop, [propProxyState, remove]);\n });\n }\n const removeListener = () => {\n listeners.delete(listener);\n if (listeners.size === 0) {\n propProxyStates.forEach(([propProxyState, remove], prop) => {\n if (remove) {\n remove();\n propProxyStates.set(prop, [propProxyState]);\n }\n });\n }\n };\n return removeListener;\n };\n let initializing = true;\n const handler = createHandler(\n () => initializing,\n addPropListener,\n removePropListener,\n notifyUpdate\n );\n const proxyObject = newProxy(baseObject, handler);\n proxyCache.set(baseObject, proxyObject);\n const proxyState = [baseObject, ensureVersion, addListener];\n proxyStateMap.set(proxyObject, proxyState);\n Reflect.ownKeys(baseObject).forEach((key) => {\n const desc = Object.getOwnPropertyDescriptor(\n baseObject,\n key\n );\n if (\"value\" in desc && desc.writable) {\n proxyObject[key] = baseObject[key];\n }\n });\n initializing = false;\n return proxyObject;\n}\nfunction getVersion(proxyObject) {\n const proxyState = proxyStateMap.get(proxyObject);\n return proxyState == null ? void 0 : proxyState[1]();\n}\nfunction subscribe(proxyObject, callback, notifyInSync) {\n const proxyState = proxyStateMap.get(proxyObject);\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && !proxyState) {\n console.warn(\"Please use proxy object\");\n }\n let promise;\n const ops = [];\n const addListener = proxyState[2];\n let isListenerActive = false;\n const listener = (op) => {\n if (op) {\n ops.push(op);\n }\n if (notifyInSync) {\n callback(ops.splice(0));\n return;\n }\n if (!promise) {\n promise = Promise.resolve().then(() => {\n promise = void 0;\n if (isListenerActive) {\n callback(ops.splice(0));\n }\n });\n }\n };\n const removeListener = addListener(listener);\n isListenerActive = true;\n return () => {\n isListenerActive = false;\n removeListener();\n };\n}\nfunction snapshot(proxyObject) {\n const proxyState = proxyStateMap.get(proxyObject);\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && !proxyState) {\n console.warn(\"Please use proxy object\");\n }\n const [target, ensureVersion] = proxyState;\n return createSnapshot(target, ensureVersion());\n}\nfunction ref(obj) {\n refSet.add(obj);\n return obj;\n}\nfunction unstable_getInternalStates() {\n return {\n proxyStateMap,\n refSet,\n snapCache,\n versionHolder,\n proxyCache\n };\n}\nfunction unstable_replaceInternalFunction(name, fn) {\n switch (name) {\n case \"objectIs\":\n objectIs = fn(objectIs);\n break;\n case \"newProxy\":\n newProxy = fn(newProxy);\n break;\n case \"canProxy\":\n canProxy = fn(canProxy);\n break;\n case \"createSnapshot\":\n createSnapshot = fn(createSnapshot);\n break;\n case \"createHandler\":\n createHandler = fn(createHandler);\n break;\n default:\n throw new Error(\"unknown function\");\n }\n}\nfunction unstable_enableOp(enabled = true) {\n if (enabled === true) {\n createOp = createOpDefault;\n } else if (enabled === false) {\n createOp = void 0;\n } else {\n createOp = enabled;\n }\n}\n\nexport { getVersion, proxy, ref, snapshot, subscribe, unstable_enableOp, unstable_getInternalStates, unstable_replaceInternalFunction };\n","/**\n * AuthGate — reactive auth state via Valtio proxy.\n *\n * The transport writes to this directly. React reads via useSnapshot().\n * No useState, no useEffect, no manual syncing.\n */\n\nimport { log } from \"./log\";\nimport { proxy } from \"valtio\";\n\nexport type AuthStatus = \"pending\" | \"authenticated\" | \"unauthenticated\";\n\nexport interface AuthState {\n status: AuthStatus;\n userId: string | null;\n version: number;\n}\n\nexport class AuthGate {\n /** Reactive state — subscribe with valtio useSnapshot() */\n public state = proxy<AuthState>({\n status: \"pending\",\n userId: null,\n version: 0,\n });\n\n /** Awaitable — resolves when auth is confirmed (either way) */\n public ready: Promise<void>;\n\n private _resolve: (() => void) | null = null;\n\n constructor() {\n this.ready = this._makePending();\n }\n\n /** Auth confirmed — user is authenticated */\n resolve(userId: string): void {\n this.state.status = \"authenticated\";\n log.debug(\"auth: authenticated, userId:\", userId);\n this.state.userId = userId;\n this.state.version++;\n this._resolve?.();\n this._resolve = null;\n }\n\n /** Auth confirmed — no user */\n resolveUnauthenticated(): void {\n this.state.status = \"unauthenticated\";\n log.debug(\"auth: unauthenticated\");\n this.state.userId = null;\n this.state.version++;\n this._resolve?.();\n this._resolve = null;\n }\n\n /** Reset to pending (disconnect, token change) */\n reset(): void {\n if (this.state.status !== \"pending\") {\n this.state.status = \"pending\";\n log.debug(\"auth: reset to pending\");\n this.state.userId = null;\n this.ready = this._makePending();\n }\n }\n\n private _makePending(): Promise<void> {\n return new Promise<void>((r) => {\n this._resolve = r;\n });\n }\n}\n","/**\n * SocketTransport — Socket.IO with Valtio-reactive AuthGate.\n *\n * Auth state lives in a Valtio proxy. React reads via useSnapshot().\n * Transport writes directly — no React involvement.\n */\n\nimport SocketIO from \"socket.io-client\";\nimport pako from \"pako\";\nimport { decompress } from \"compress-json\";\nimport { EventEmitter } from \"eventemitter3\";\nimport ShortId from \"short-unique-id\";\nimport type { Transport } from \"@parcae/model\";\nimport { AuthGate } from \"../auth-gate\";\nimport { log } from \"../log\";\n\nconst uid = new ShortId({ length: 10 });\nconst SOCKETS = new Map<string, any>();\n\nexport interface SocketTransportConfig {\n url: string;\n version?: string;\n path?: string;\n token?: string | null;\n}\n\nexport class SocketTransport extends EventEmitter implements Transport {\n public auth = new AuthGate();\n public isConnected = false;\n\n private socket: any;\n private url: string;\n private version: string;\n private token: string | null | undefined;\n private inflight = new Map<string, Promise<any>>();\n\n constructor(config: SocketTransportConfig) {\n super();\n this.url = config.url;\n this.version = config.version ?? \"v1\";\n this.token = config.token;\n\n const socketPath = config.path ?? \"/ws\";\n const socketKey = `${this.url}:${socketPath}`;\n\n if (SOCKETS.has(socketKey)) {\n this.socket = SOCKETS.get(socketKey);\n } else {\n this.socket = SocketIO(this.url, {\n path: socketPath,\n transports: [\"websocket\"],\n withCredentials: true,\n });\n SOCKETS.set(socketKey, this.socket);\n }\n\n this.socket.on(\"connect\", () => {\n this.isConnected = true;\n log.debug(\"socket connected\");\n this._doAuth();\n this.emit(\"connected\");\n });\n\n this.socket.on(\"disconnect\", () => {\n this.isConnected = false;\n log.debug(\"socket disconnected\");\n this.auth.reset();\n this.emit(\"disconnected\");\n });\n\n this.socket.on(\"error\", (err: Error) => this.emit(\"error\", err));\n\n if (this.socket.connected) {\n this.isConnected = true;\n log.debug(\"socket connected\");\n this._doAuth();\n }\n\n if (this.token === null) {\n this.auth.resolveUnauthenticated();\n }\n }\n\n private _doAuth(): void {\n if (this.token === undefined) return;\n if (this.token === null) {\n this.auth.resolveUnauthenticated();\n return;\n }\n\n const t0 = performance.now();\n log.debug(\"authenticating...\");\n this.socket.emit(\"authenticate\", this.token, (response: any) => {\n const ms = (performance.now() - t0).toFixed(0);\n const userId = response?.userId ?? null;\n if (userId) {\n this.auth.resolve(userId);\n log.debug(`authenticated as ${userId} (${ms}ms)`);\n } else {\n this.auth.resolveUnauthenticated();\n log.debug(`auth rejected (${ms}ms)`);\n }\n });\n }\n\n async authenticate(token: string | null): Promise<{ userId: string | null }> {\n this.token = token;\n this.auth.reset();\n\n if (token === null) {\n this.auth.resolveUnauthenticated();\n return { userId: null };\n }\n\n if (!this.socket.connected) {\n return new Promise((resolve) => {\n const handler = () => {\n this.socket.off(\"connect\", handler);\n this.socket.emit(\"authenticate\", token, (response: any) => {\n const userId = response?.userId ?? null;\n if (userId) this.auth.resolve(userId);\n else this.auth.resolveUnauthenticated();\n resolve({ userId });\n });\n };\n this.socket.once(\"connect\", handler);\n });\n }\n\n return new Promise((resolve) => {\n this.socket.emit(\"authenticate\", token, (response: any) => {\n const userId = response?.userId ?? null;\n if (userId) this.auth.resolve(userId);\n else this.auth.resolveUnauthenticated();\n resolve({ userId });\n });\n });\n }\n\n // ── Request/Response ──────────────────────────────────────────────\n\n private async fetch(\n method: string,\n path: string,\n data: any = {},\n ): Promise<any> {\n await this.auth.ready;\n\n if (!this.socket.connected) {\n await new Promise<void>((resolve, reject) => {\n if (this.socket.connected) return resolve();\n const timeout = setTimeout(() => {\n cleanup();\n reject(new Error(\"Connection timeout\"));\n }, 30000);\n const onConnect = () => {\n cleanup();\n resolve();\n };\n const onError = (err: Error) => {\n cleanup();\n reject(err);\n };\n const cleanup = () => {\n clearTimeout(timeout);\n this.socket.off(\"connect\", onConnect);\n this.socket.off(\"connect_error\", onError);\n };\n this.socket.once(\"connect\", onConnect);\n this.socket.once(\"connect_error\", onError);\n });\n }\n\n const upper = method.toUpperCase();\n if (upper === \"GET\") {\n const dedupeKey = `${path}:${JSON.stringify(data)}`;\n const existing = this.inflight.get(dedupeKey);\n if (existing) return existing;\n const req = this._call(method, path, data);\n this.inflight.set(dedupeKey, req);\n req.finally(() => this.inflight.delete(dedupeKey));\n return req;\n }\n\n return this._call(method, path, data);\n }\n\n private _call(method: string, path: string, data: any): Promise<any> {\n const id = uid.rnd();\n const t0 = performance.now();\n const fullPath = `/${this.version}${path}`;\n log.debug(`→ ${method.toUpperCase()} ${fullPath}`);\n\n return new Promise((resolve, reject) => {\n const timeout = setTimeout(() => {\n this.socket.off(id);\n log.debug(`✗ ${method.toUpperCase()} ${fullPath} timeout (30s)`);\n reject(new Error(`RPC timeout: ${method} ${path}`));\n }, 30000);\n\n this.socket.once(id, (msg: any) => {\n clearTimeout(timeout);\n const ms = (performance.now() - t0).toFixed(0);\n try {\n const uncompressed = pako.ungzip(msg, { to: \"string\" });\n const parsed = decompress(JSON.parse(uncompressed));\n if (parsed.success) {\n log.debug(`← ${method.toUpperCase()} ${fullPath} (${ms}ms)`);\n resolve(parsed.result);\n } else {\n log.debug(\n `✗ ${method.toUpperCase()} ${fullPath} (${ms}ms) ${parsed.error || parsed.message}`,\n );\n reject(\n new Error(\n parsed.message || parsed.error || `${method} ${path} failed`,\n ),\n );\n }\n } catch (err) {\n log.debug(\n `✗ ${method.toUpperCase()} ${fullPath} (${ms}ms) parse error`,\n );\n reject(err);\n }\n });\n\n this.socket.emit(\n \"call\",\n id,\n method.toUpperCase(),\n `/${this.version}${path}`,\n data,\n );\n });\n }\n\n async get(path: string, data?: any): Promise<any> {\n return this.fetch(\"GET\", path, data);\n }\n async post(path: string, data?: any): Promise<any> {\n return this.fetch(\"POST\", path, data);\n }\n async put(path: string, data?: any): Promise<any> {\n return this.fetch(\"PUT\", path, data);\n }\n async patch(path: string, data?: any): Promise<any> {\n return this.fetch(\"PATCH\", path, data);\n }\n async delete(path: string, data?: any): Promise<any> {\n return this.fetch(\"DELETE\", path, data);\n }\n\n subscribe(event: string, handler: (...args: any[]) => void): () => void {\n this.socket.on(event, handler);\n return () => this.socket.off(event, handler);\n }\n\n unsubscribe(event: string, handler?: (...args: any[]) => void): void {\n this.socket.off(event, handler);\n }\n\n async send(event: string, ...args: any[]): Promise<void> {\n await this.auth.ready;\n this.socket.emit(event, ...args);\n }\n\n disconnect(): void {\n this.socket.disconnect();\n this.isConnected = false;\n log.debug(\"socket disconnected\");\n }\n async reconnect(): Promise<void> {\n this.socket.connect();\n }\n}\n\nexport default SocketTransport;\n\n/** @internal — clear socket cache (for testing) */\nexport function _resetSockets(): void {\n SOCKETS.clear();\n}\n","/**\n * SSETransport — HTTP + Server-Sent Events implementation of the Transport interface.\n *\n * Request/response via standard fetch(). Subscriptions via EventSource.\n * Simpler than Socket.IO — no websocket infra needed. Good for read-heavy\n * apps, serverless backends, or environments where WebSocket isn't available.\n *\n * Trade-offs vs SocketTransport:\n * - Simpler infra (no sticky sessions, works behind any CDN/proxy)\n * - Server → client streaming only (no client → server streaming)\n * - Request/response is standard HTTP (cacheable, observable, debuggable)\n * - No compression (relies on HTTP gzip)\n * - No request deduplication (relies on HTTP/2 multiplexing)\n */\n\nimport { EventEmitter } from \"eventemitter3\";\nimport type { Transport } from \"@parcae/model\";\n\nexport interface SSETransportConfig {\n /** Base URL of the Parcae backend. */\n url: string;\n /** API key or async function returning a key. */\n key?: string | null | (() => Promise<string | null>);\n /** API version prefix. Default: \"v1\" */\n version?: string;\n}\n\nexport class SSETransport extends EventEmitter implements Transport {\n private url: string;\n private version: string;\n private apiKey: string | null | (() => Promise<string | null>);\n private key: string | null = null;\n private eventSources = new Map<string, EventSource>();\n\n public isConnected = true; // HTTP is \"always connected\"\n public isLoading = true;\n public loading: Promise<void>;\n\n constructor(config: SSETransportConfig) {\n super();\n this.url = config.url.replace(/\\/$/, \"\");\n this.version = config.version ?? \"v1\";\n this.apiKey = config.key ?? null;\n this.loading = this.resolveKey();\n }\n\n private async resolveKey(): Promise<void> {\n try {\n this.key =\n typeof this.apiKey === \"function\" ? await this.apiKey() : this.apiKey;\n this.isLoading = false;\n this.emit(\"connected\");\n } catch (err) {\n this.isLoading = false;\n this.emit(\"error\", err);\n }\n }\n\n private headers(): Record<string, string> {\n const h: Record<string, string> = { \"Content-Type\": \"application/json\" };\n if (this.key) h[\"Authorization\"] = `Bearer ${this.key}`;\n return h;\n }\n\n private fullUrl(path: string): string {\n return `${this.url}/${this.version}${path}`;\n }\n\n // ── Request/Response ──────────────────────────────────────────────────\n\n private async request(\n method: string,\n path: string,\n data?: any,\n ): Promise<any> {\n await this.loading;\n\n const isGet = method.toUpperCase() === \"GET\";\n let url = this.fullUrl(path);\n\n if (isGet && data) {\n const params = new URLSearchParams();\n for (const [k, v] of Object.entries(data)) {\n params.set(k, typeof v === \"object\" ? JSON.stringify(v) : String(v));\n }\n url += `?${params.toString()}`;\n }\n\n const res = await fetch(url, {\n method: method.toUpperCase(),\n headers: this.headers(),\n body: isGet ? undefined : JSON.stringify(data),\n });\n\n if (!res.ok) {\n const body = await res.json().catch(() => ({ error: res.statusText }));\n throw new Error(body.error || body.message || `HTTP ${res.status}`);\n }\n\n const body = await res.json();\n if (body.success === false) throw new Error(body.error || \"Request failed\");\n return body.result ?? body;\n }\n\n async get(path: string, data?: any): Promise<any> {\n return this.request(\"GET\", path, data);\n }\n async post(path: string, data?: any): Promise<any> {\n return this.request(\"POST\", path, data);\n }\n async put(path: string, data?: any): Promise<any> {\n return this.request(\"PUT\", path, data);\n }\n async patch(path: string, data?: any): Promise<any> {\n return this.request(\"PATCH\", path, data);\n }\n async delete(path: string, data?: any): Promise<any> {\n return this.request(\"DELETE\", path, data);\n }\n\n // ── Subscriptions (via Server-Sent Events) ────────────────────────────\n\n subscribe(event: string, handler: (...args: any[]) => void): () => void {\n const url = `${this.url}/${this.version}/__events/${encodeURIComponent(event)}`;\n const source = new EventSource(url, { withCredentials: true });\n\n source.onmessage = (e) => {\n try {\n const data = JSON.parse(e.data);\n handler(data);\n } catch {\n handler(e.data);\n }\n };\n\n source.onerror = () => {\n // EventSource auto-reconnects\n };\n\n this.eventSources.set(event, source);\n\n return () => {\n source.close();\n this.eventSources.delete(event);\n };\n }\n\n unsubscribe(event: string): void {\n const source = this.eventSources.get(event);\n if (source) {\n source.close();\n this.eventSources.delete(event);\n }\n }\n\n // ── Control messages ──────────────────────────────────────────────────\n\n async send(event: string, ...args: any[]): Promise<void> {\n await this.request(\"POST\", \"/__control\", { event, args });\n }\n\n // ── Lifecycle ─────────────────────────────────────────────────────────\n\n disconnect(): void {\n for (const [, source] of this.eventSources) source.close();\n this.eventSources.clear();\n this.isConnected = false;\n this.emit(\"disconnected\");\n }\n\n async reconnect(): Promise<void> {\n this.loading = this.resolveKey();\n await this.loading;\n }\n}\n\nexport default SSETransport;\n","/**\n * @parcae/sdk — createClient()\n *\n * Auth is handled in the transport, not React.\n * Pass token at creation time, or call authenticate() later.\n */\n\nimport { Model, FrontendAdapter } from \"@parcae/model\";\nimport type { Transport } from \"@parcae/model\";\nimport { SocketTransport } from \"./transports/socket\";\nimport { SSETransport } from \"./transports/sse\";\n\nexport interface ClientConfig {\n url: string;\n version?: string;\n transport?: \"socket\" | \"sse\" | Transport;\n /** Initial auth token. null = no auth. undefined = call authenticate() later. */\n token?: string | null;\n}\n\nexport interface ParcaeClient {\n transport: Transport;\n get(path: string, data?: any): Promise<any>;\n post(path: string, data?: any): Promise<any>;\n put(path: string, data?: any): Promise<any>;\n patch(path: string, data?: any): Promise<any>;\n delete(path: string, data?: any): Promise<any>;\n subscribe(event: string, handler: (...args: any[]) => void): () => void;\n unsubscribe(event: string, handler?: (...args: any[]) => void): void;\n send(event: string, ...args: any[]): void;\n readonly isConnected: boolean;\n authenticate(token: string | null): Promise<{ userId: string | null }>;\n on(event: string, handler: (...args: any[]) => void): void;\n off(event: string, handler?: (...args: any[]) => void): void;\n disconnect(): void;\n reconnect(): Promise<void>;\n}\n\nexport function createClient(config: ClientConfig): ParcaeClient {\n // Idempotent — return existing client if already created for this url\n const cacheKey = `${config.url}:${config.version ?? \"v1\"}`;\n const existing = (globalThis as any).__parcae_clients?.get(cacheKey);\n if (existing) return existing;\n\n const version = config.version ?? \"v1\";\n\n let transport: any;\n\n if (config.transport && typeof config.transport === \"object\") {\n transport = config.transport;\n } else if (config.transport === \"sse\") {\n transport = new SSETransport({ url: config.url, version });\n } else {\n transport = new SocketTransport({\n url: config.url,\n version,\n token: config.token,\n });\n }\n\n Model.use(new FrontendAdapter(transport));\n\n const client: ParcaeClient = {\n transport,\n get: (p, d) => transport.get(p, d),\n post: (p, d) => transport.post(p, d),\n put: (p, d) => transport.put(p, d),\n patch: (p, d) => transport.patch(p, d),\n delete: (p, d) => transport.delete(p, d),\n subscribe: (e, h) => transport.subscribe?.(e, h) ?? (() => {}),\n unsubscribe: (e, h) => transport.unsubscribe?.(e, h),\n send: (e, ...a) => transport.send?.(e, ...a),\n get isConnected() {\n return transport.isConnected ?? false;\n },\n authenticate: (t) =>\n transport.authenticate?.(t) ?? Promise.resolve({ userId: null }),\n on: (e, h) => transport.on?.(e, h),\n off: (e, h) => transport.off?.(e, h),\n disconnect: () => transport.disconnect?.(),\n reconnect: () => transport.reconnect?.() ?? Promise.resolve(),\n };\n\n // Cache the client globally\n if (!(globalThis as any).__parcae_clients) {\n (globalThis as any).__parcae_clients = new Map();\n }\n (globalThis as any).__parcae_clients.set(cacheKey, client);\n\n return client;\n}\n"]}