@mainframework/api-request-worker 1.0.2 → 1.0.3

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,5 +1,5 @@
1
- import { U as UseApiWorkerConfig, h as UseApiWorkerReturn } from '../../types-Bbz0QMYB.js';
2
- export { R as RequestConfig } from '../../types-Bbz0QMYB.js';
1
+ import { U as UseApiWorkerConfig, a as UseApiWorkerReturn } from '../../types-LYmxol0c.js';
2
+ export { R as RequestConfig } from '../../types-LYmxol0c.js';
3
3
 
4
4
  declare const useApiWorker: <T>(config: UseApiWorkerConfig) => UseApiWorkerReturn<T>;
5
5
 
@@ -7,12 +7,12 @@ const uniqueId = () => {
7
7
  return idCounter.toString();
8
8
  };
9
9
 
10
- const e=e=>"object"==typeof e&&null!==e,t=e=>"function"==typeof e,r=e=>e instanceof Date,n=e=>e instanceof RegExp,o=e=>e instanceof Set,f=e=>e instanceof Map,i=e=>e instanceof String||e instanceof Number||e instanceof Boolean,a=e=>ArrayBuffer.isView(e)&&!(e instanceof DataView),s=e=>Object.getPrototypeOf(e),u=e=>null==e||"object"!=typeof e&&"function"!=typeof e,c=(l,y,p=new WeakMap,b={})=>{if(l===y)return true;if("number"==typeof l&&"number"==typeof y&&Number.isNaN(l)&&Number.isNaN(y))return true;if(b.normalizeBoxedPrimitives&&(i(l)&&(l=l.valueOf()),i(y)&&(y=y.valueOf()),u(l)&&u(y)))return l===y;if(u(l)||u(y))return false;if(t(l)||t(y))return l===y;if(!e(l)||!e(y))return false;let g=p.get(l)??(()=>{const e=new WeakMap;return p.set(l,e),e})();const h=g.get(y);if(void 0!==h)return h;g.set(y,true);const w=s(l),A=s(y);let m;return m=Array.isArray(l)&&Array.isArray(y)?((e,t,r,n)=>{if(e.length!==t.length)return false;for(let o=0;o<e.length;o++){if(n.strictSparseArrays){const r=Object.prototype.hasOwnProperty.call(e,o),n=Object.prototype.hasOwnProperty.call(t,o);if(r!==n)return false;if(!r&&!n)continue}if(!c(e[o],t[o],r,n))return false}return true})(l,y,p,b):!Array.isArray(l)&&!Array.isArray(y)&&(r(l)&&r(y)?((e,t)=>e.getTime()===t.getTime())(l,y):n(l)&&n(y)?((e,t)=>e.source===t.source&&e.flags===t.flags)(l,y):a(l)&&a(y)?((e,t)=>{if(e.constructor!==t.constructor||e.byteLength!==t.byteLength)return false;const r=new Uint8Array(e.buffer,e.byteOffset,e.byteLength),n=new Uint8Array(t.buffer,t.byteOffset,t.byteLength);for(let e=0;e<r.length;e++)if(r[e]!==n[e])return false;return true})(l,y):o(l)&&o(y)?((e,t,r,n)=>{if(e.size!==t.size)return false;const o=Array.from(t),f=new Set;for(const t of e){const e=o.findIndex((e,r)=>!f.has(r)&&t===e);if(-1!==e){f.add(e);continue}let i=false;for(let e=0;e<o.length;e++)if(!f.has(e)&&c(t,o[e],r,n)){f.add(e),i=true;break}if(!i)return false}return true})(l,y,p,b):f(l)&&f(y)?((e,t,r,n)=>{if(e.size!==t.size)return false;const o=Array.from(t),f=new Set;for(const[i,a]of e){if(u(i)){const e=t.get(i);if(void 0===e&&!t.has(i))return false;if(!c(a,e,r,n))return false;continue}let e=false;for(let t=0;t<o.length;t++)if(!f.has(t)){const[s,u]=o[t];if(c(i,s,r,n)&&c(a,u,r,n)){f.add(t),e=true;break}}if(!e)return false}return true})(l,y,p,b):!(!b.allowPrototypeMismatch&&w!==A)&&((e,t,r,n)=>{let o=0;for(const f of Reflect.ownKeys(e)){if(!Object.prototype.hasOwnProperty.call(t,f))return false;if(!c(e[f],t[f],r,n))return false;o++;}return Reflect.ownKeys(t).length===o})(l,y,p,b)),g.set(y,m),m},l=(e,t,r)=>c(e,t,new WeakMap,r);
10
+ const e=e=>"object"==typeof e&&null!==e,t=e=>"function"==typeof e,r=e=>e instanceof Date,n=e=>e instanceof RegExp,o=e=>e instanceof Set,f=e=>e instanceof Map,i=e=>e instanceof String||e instanceof Number||e instanceof Boolean,s=e=>ArrayBuffer.isView(e)&&!(e instanceof DataView),a=e=>Object.getPrototypeOf(e),u=e=>null==e||"object"!=typeof e&&"function"!=typeof e,c=(e,t)=>e.getTime()===t.getTime(),l=(e,t)=>e.source===t.source&&e.flags===t.flags,y=(e,t)=>{if(e.constructor!==t.constructor||e.byteLength!==t.byteLength)return false;const r=new Uint8Array(e.buffer,e.byteOffset,e.byteLength),n=new Uint8Array(t.buffer,t.byteOffset,t.byteLength);for(let e=0;e<r.length;e++)if(r[e]!==n[e])return false;return true},p=(e,t,r,n)=>{if(e.size!==t.size)return false;for(const r of e)if(u(r)&&!t.has(r))return false;const o=Array.from(t),f=new Set;for(const t of e){if(u(t))continue;const e=o.findIndex((e,r)=>!f.has(r)&&t===e);if(-1!==e){f.add(e);continue}let i=false;for(let e=0;e<o.length;e++)if(!f.has(e)&&w(t,o[e],r,n)){f.add(e),i=true;break}if(!i)return false}return true},g=(e,t,r,n)=>{if(e.size!==t.size)return false;const o=Array.from(t),f=new Set;for(const[i,s]of e){if(u(i)){const e=t.get(i);if(void 0===e&&!t.has(i))return false;if(!w(s,e,r,n))return false;continue}let e=false;for(let t=0;t<o.length;t++)if(!f.has(t)){const[a,u]=o[t];if(w(i,a,r,n)&&w(s,u,r,n)){f.add(t),e=true;break}}if(!e)return false}return true},b=(e,t,r,n)=>{if(e.length!==t.length)return false;for(let o=0;o<e.length;o++){if(n.strictSparseArrays){const r=Object.prototype.hasOwnProperty.call(e,o),n=Object.prototype.hasOwnProperty.call(t,o);if(r!==n)return false;if(!r&&!n)continue}if(!w(e[o],t[o],r,n))return false}return true},h=(e,t,r,n)=>{const o=Reflect.ownKeys(e),f=Reflect.ownKeys(t);if(o.length!==f.length)return false;for(const f of o){if(!Object.prototype.hasOwnProperty.call(t,f))return false;if(!w(e[f],t[f],r,n))return false}return true},w=(w,A,m=new WeakMap,O={})=>{if(w===A)return true;if("number"==typeof w&&"number"==typeof A&&Number.isNaN(w)&&Number.isNaN(A))return true;if(O.normalizeBoxedPrimitives&&(i(w)&&(w=w.valueOf()),i(A)&&(A=A.valueOf()),u(w)&&u(A)))return w===A;if(u(w)||u(A))return false;if(t(w)||t(A))return w===A;if(!e(w)||!e(A))return false;let d=m.get(w)??(()=>{const e=new WeakMap;return m.set(w,e),e})();const N=d.get(A);if(void 0!==N)return N;d.set(A,true);const j=a(w),P=a(A);let k;return k=Array.isArray(w)&&Array.isArray(A)?b(w,A,m,O):!Array.isArray(w)&&!Array.isArray(A)&&(r(w)&&r(A)?c(w,A):n(w)&&n(A)?l(w,A):s(w)&&s(A)?y(w,A):o(w)&&o(A)?p(w,A,m,O):f(w)&&f(A)?g(w,A,m,O):!(!O.allowPrototypeMismatch&&j!==P)&&h(w,A,m,O)),d.set(A,k),k},A=(e,t,r)=>w(e,t,new WeakMap,r);
11
11
 
12
12
  const useCustomCallback = (callback, dependencies) => {
13
13
  const refCallback = useRef(callback);
14
14
  const refDependencies = useRef(dependencies);
15
- if (!dependencies.every((dep, index) => l(dep, refDependencies.current[index]))) {
15
+ if (!dependencies.every((dep, index) => A(dep, refDependencies.current[index]))) {
16
16
  refDependencies.current = dependencies;
17
17
  refCallback.current = callback;
18
18
  }
@@ -1 +1 @@
1
- {"version":3,"file":"react.js","sources":["../../../src/shared/utils/uniqueId.ts","../../../node_modules/@mainframework/is-deep-equal/dist/index.mjs","../../../src/shared/hooks/useCustomCallback.ts","../../../src/shared/hooks/useApiWorker.ts"],"sourcesContent":["// utils/uniqueId.ts\r\nlet idCounter = 0;\r\n\r\n/**\r\n * Generates a stable, unique string ID.\r\n * SSR-safe and works in any environment.\r\n */\r\nexport const uniqueId = (): string => {\r\n idCounter += 1;\r\n return idCounter.toString();\r\n};\r\n","const e=e=>\"object\"==typeof e&&null!==e,t=e=>\"function\"==typeof e,r=e=>e instanceof Date,n=e=>e instanceof RegExp,o=e=>e instanceof Set,f=e=>e instanceof Map,i=e=>e instanceof String||e instanceof Number||e instanceof Boolean,a=e=>ArrayBuffer.isView(e)&&!(e instanceof DataView),s=e=>Object.getPrototypeOf(e),u=e=>null==e||\"object\"!=typeof e&&\"function\"!=typeof e,c=(l,y,p=new WeakMap,b={})=>{if(l===y)return!0;if(\"number\"==typeof l&&\"number\"==typeof y&&Number.isNaN(l)&&Number.isNaN(y))return!0;if(b.normalizeBoxedPrimitives&&(i(l)&&(l=l.valueOf()),i(y)&&(y=y.valueOf()),u(l)&&u(y)))return l===y;if(u(l)||u(y))return!1;if(t(l)||t(y))return l===y;if(!e(l)||!e(y))return!1;let g=p.get(l)??(()=>{const e=new WeakMap;return p.set(l,e),e})();const h=g.get(y);if(void 0!==h)return h;g.set(y,!0);const w=s(l),A=s(y);let m;return m=Array.isArray(l)&&Array.isArray(y)?((e,t,r,n)=>{if(e.length!==t.length)return!1;for(let o=0;o<e.length;o++){if(n.strictSparseArrays){const r=Object.prototype.hasOwnProperty.call(e,o),n=Object.prototype.hasOwnProperty.call(t,o);if(r!==n)return!1;if(!r&&!n)continue}if(!c(e[o],t[o],r,n))return!1}return!0})(l,y,p,b):!Array.isArray(l)&&!Array.isArray(y)&&(r(l)&&r(y)?((e,t)=>e.getTime()===t.getTime())(l,y):n(l)&&n(y)?((e,t)=>e.source===t.source&&e.flags===t.flags)(l,y):a(l)&&a(y)?((e,t)=>{if(e.constructor!==t.constructor||e.byteLength!==t.byteLength)return!1;const r=new Uint8Array(e.buffer,e.byteOffset,e.byteLength),n=new Uint8Array(t.buffer,t.byteOffset,t.byteLength);for(let e=0;e<r.length;e++)if(r[e]!==n[e])return!1;return!0})(l,y):o(l)&&o(y)?((e,t,r,n)=>{if(e.size!==t.size)return!1;const o=Array.from(t),f=new Set;for(const t of e){const e=o.findIndex((e,r)=>!f.has(r)&&t===e);if(-1!==e){f.add(e);continue}let i=!1;for(let e=0;e<o.length;e++)if(!f.has(e)&&c(t,o[e],r,n)){f.add(e),i=!0;break}if(!i)return!1}return!0})(l,y,p,b):f(l)&&f(y)?((e,t,r,n)=>{if(e.size!==t.size)return!1;const o=Array.from(t),f=new Set;for(const[i,a]of e){if(u(i)){const e=t.get(i);if(void 0===e&&!t.has(i))return!1;if(!c(a,e,r,n))return!1;continue}let e=!1;for(let t=0;t<o.length;t++)if(!f.has(t)){const[s,u]=o[t];if(c(i,s,r,n)&&c(a,u,r,n)){f.add(t),e=!0;break}}if(!e)return!1}return!0})(l,y,p,b):!(!b.allowPrototypeMismatch&&w!==A)&&((e,t,r,n)=>{let o=0;for(const f of Reflect.ownKeys(e)){if(!Object.prototype.hasOwnProperty.call(t,f))return!1;if(!c(e[f],t[f],r,n))return!1;o++}return Reflect.ownKeys(t).length===o})(l,y,p,b)),g.set(y,m),m},l=(e,t,r)=>c(e,t,new WeakMap,r);export{l as isEqual};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\r\nimport { useRef } from \"react\";\r\nimport { isEqual } from \"@mainframework/is-deep-equal\";\r\n\r\nexport const useCustomCallback = <T extends (...args: unknown[]) => unknown>(\r\n callback: T,\r\n dependencies: unknown[],\r\n): T => {\r\n const refCallback = useRef<T>(callback);\r\n const refDependencies = useRef<unknown[]>(dependencies);\r\n\r\n // Update refs synchronously during render\r\n if (!dependencies.every((dep, index) => isEqual(dep, refDependencies.current[index]))) {\r\n refDependencies.current = dependencies;\r\n refCallback.current = callback;\r\n }\r\n\r\n // Stable callback, always calls latest callback\r\n const stableCallback = useRef(\r\n (...args: Parameters<T>): ReturnType<T> => refCallback.current(...args) as ReturnType<T>,\r\n ).current;\r\n\r\n return stableCallback as T;\r\n};\r\n","// useApiWorker.ts\r\nimport { useRef, useState, useCallback } from \"react\";\r\nimport { createApiWorker } from \"../utils/createApiWorker\";\r\nimport { uniqueId } from \"../utils/uniqueId\";\r\nimport type {\r\n BinaryResponseMeta,\r\n DataRequest,\r\n QueueEntry,\r\n UseApiWorkerConfig,\r\n UseApiWorkerReturn,\r\n WorkerMessagePayload,\r\n} from \"../types/types\";\r\n\r\ntype StreamAccumulator = { chunks: ArrayBuffer[]; meta: BinaryResponseMeta | null };\r\n\r\ntype StreamThrottleState = {\r\n pendingChunks: ArrayBuffer[];\r\n};\r\n\r\nconst DEFAULT_CHUNK_BATCH = 5;\r\n\r\nconst toNumber = (val: unknown, fallback: number): number =>\r\n typeof val === \"number\" && Number.isFinite(val) ? val : fallback;\r\n\r\nconst toStreamChunks = (val: unknown): ArrayBuffer[] | undefined =>\r\n val === undefined || val === null ? undefined : Array.isArray(val) ? (val as ArrayBuffer[]) : undefined;\r\n\r\nimport { useCustomCallback } from \"./useCustomCallback\";\r\n\r\n// ============================================================================\r\n// MODULE-LEVEL WORKER & QUEUE\r\n// ============================================================================\r\n\r\nlet apiWorker: Worker | null = null;\r\nlet workerInitialized = false;\r\nlet cleanupTimer: ReturnType<typeof setInterval> | null = null;\r\n\r\nconst STALE_ENTRY_MS = 5000;\r\nconst CLEANUP_INTERVAL_MS = 30000;\r\n\r\nconst normalizeKey = (key: string) => key.toLocaleLowerCase();\r\n\r\nconst cleanupState = { isDeleting: false, lastRun: 0 };\r\n\r\nconst runStaleEntryCleanup = (): void => {\r\n const now = Date.now();\r\n if (cleanupState.isDeleting || now < cleanupState.lastRun + CLEANUP_INTERVAL_MS) return;\r\n\r\n cleanupState.isDeleting = true;\r\n\r\n try {\r\n const keys = Object.keys(responseQueue);\r\n let i = 0;\r\n while (i < keys.length) {\r\n const key = keys[i] as string;\r\n const entry = responseQueue[key];\r\n const streamInProgress = streamThrottleState[key] != null || streamAccumulators[key] != null;\r\n if (\r\n entry &&\r\n !streamInProgress &&\r\n entry.data != null &&\r\n entry.lastActivityAt != null &&\r\n now - entry.lastActivityAt >= STALE_ENTRY_MS\r\n ) {\r\n entry.loading = null;\r\n entry.data = null;\r\n entry.meta = null;\r\n entry.error = null;\r\n entry.setUpdateTrigger = null;\r\n entry.requestId = null;\r\n delete entry.streamChunks;\r\n delete streamThrottleState[key];\r\n }\r\n i++;\r\n }\r\n } finally {\r\n cleanupState.isDeleting = false;\r\n cleanupState.lastRun = now;\r\n }\r\n};\r\n\r\nconst responseQueue: Record<string, QueueEntry<unknown>> = {};\r\n\r\nconst streamAccumulators: Record<string, StreamAccumulator> = {};\r\nconst streamThrottleState: Record<string, StreamThrottleState> = {};\r\n\r\nconst updater = (n: number) => n + 1;\r\n\r\nconst flushStreamBatch = (key: string, entry: QueueEntry<unknown>): void => {\r\n const state = streamThrottleState[key];\r\n if (!state || state.pendingChunks.length === 0) return;\r\n entry.streamChunks = state.pendingChunks.slice();\r\n state.pendingChunks.length = 0;\r\n entry.setUpdateTrigger?.(updater);\r\n};\r\n\r\nconst findEntry = (cacheName: string | undefined, hookId: string | undefined) =>\r\n cacheName\r\n ? responseQueue[normalizeKey(cacheName)]\r\n : hookId\r\n ? (Object.values(responseQueue).find((e) => e.hookId === hookId) ?? null)\r\n : null;\r\n\r\nconst finalizeEntry = (entry: QueueEntry<unknown>): void => {\r\n entry.requestId = null;\r\n entry.setUpdateTrigger?.(updater);\r\n};\r\n\r\nconst getApiWorker = (): Worker => {\r\n if (apiWorker) return apiWorker;\r\n apiWorker = createApiWorker();\r\n return apiWorker;\r\n};\r\n\r\nconst ensureWorkerInitialized = (): Worker => {\r\n const worker = getApiWorker();\r\n if (workerInitialized) return worker;\r\n workerInitialized = true;\r\n\r\n if (!cleanupTimer) {\r\n cleanupTimer = setInterval(() => runStaleEntryCleanup(), CLEANUP_INTERVAL_MS);\r\n }\r\n\r\n // Worker always sends error ({ message: string }). Entry is found by cacheName or hookId.\r\n // Stream responses: start → chunk(s) → end; we accumulate chunks then set data = new Blob(chunks) on end.\r\n worker.onmessage = (event: MessageEvent<WorkerMessagePayload>) => {\r\n const msg = event.data;\r\n const cacheName = msg.cacheName;\r\n const hookId = msg.hookId;\r\n const error = msg.error;\r\n const key = cacheName ? normalizeKey(cacheName) : \"\";\r\n\r\n if (\"stream\" in msg && msg.stream) {\r\n const entry = findEntry(cacheName, hookId);\r\n if (!entry) return;\r\n const batchSize = toNumber(entry.streamChunkBatchSize, DEFAULT_CHUNK_BATCH);\r\n switch (msg.stream) {\r\n case \"start\": {\r\n streamAccumulators[key] = { chunks: [], meta: msg.meta ?? null };\r\n streamThrottleState[key] = { pendingChunks: [] };\r\n entry.streamChunks = [];\r\n entry.meta = msg.meta ?? null;\r\n entry.setUpdateTrigger?.(updater);\r\n return;\r\n }\r\n case \"resume\":\r\n if (!streamAccumulators[key]) streamAccumulators[key] = { chunks: [], meta: msg.meta ?? null };\r\n else if (msg.meta) streamAccumulators[key].meta = msg.meta;\r\n if (!streamThrottleState[key]) streamThrottleState[key] = { pendingChunks: [] };\r\n if (msg.meta) entry.meta = msg.meta ?? null;\r\n return;\r\n case \"chunk\": {\r\n const acc = streamAccumulators[key];\r\n const throttle = streamThrottleState[key];\r\n if (acc && msg.data) acc.chunks.push(msg.data);\r\n if (throttle && msg.data) {\r\n throttle.pendingChunks.push(msg.data);\r\n if (throttle.pendingChunks.length >= batchSize) {\r\n flushStreamBatch(key, entry);\r\n }\r\n }\r\n return;\r\n }\r\n case \"end\": {\r\n const acc = streamAccumulators[key];\r\n const throttle = streamThrottleState[key];\r\n if (throttle?.pendingChunks.length) flushStreamBatch(key, entry);\r\n delete streamThrottleState[key];\r\n delete streamAccumulators[key];\r\n const errMsg = error?.message ?? \"\";\r\n if (errMsg !== \"\") {\r\n entry.error = errMsg;\r\n } else if (acc) {\r\n entry.data = new Blob(acc.chunks, acc.meta?.contentType ? { type: acc.meta.contentType } : undefined);\r\n entry.meta = acc.meta ?? null;\r\n entry.error = null;\r\n entry.lastActivityAt = Date.now();\r\n }\r\n entry.loading = false;\r\n finalizeEntry(entry);\r\n return;\r\n }\r\n }\r\n }\r\n\r\n const entry = findEntry(cacheName, hookId);\r\n if (!entry) return;\r\n\r\n const message = error?.message ?? \"\";\r\n if (message !== \"\") {\r\n entry.error = message;\r\n entry.loading = false;\r\n } else {\r\n entry.data = msg.data ?? null;\r\n entry.meta = msg.meta ?? null;\r\n entry.lastActivityAt = Date.now();\r\n entry.error = null;\r\n entry.loading = false;\r\n }\r\n finalizeEntry(entry);\r\n };\r\n\r\n return worker;\r\n};\r\n\r\n// ============================================================================\r\n// HOOK\r\n// ============================================================================\r\n\r\nexport type { RequestConfig, UseApiWorkerConfig, UseApiWorkerReturn } from \"../types/types\";\r\n\r\nexport const useApiWorker = <T>(config: UseApiWorkerConfig): UseApiWorkerReturn<T> => {\r\n const { cacheName, request: requestConfig, data: configData, runMode = \"auto\", enabled = true } = config;\r\n\r\n const worker = ensureWorkerInitialized();\r\n\r\n const hookIdRef = useRef<string>(\"\");\r\n const queueKey = normalizeKey(cacheName);\r\n\r\n const hasExecutedRef = useRef(false);\r\n const [, setUpdateTrigger] = useState(0);\r\n\r\n let storeEntry = responseQueue[queueKey];\r\n\r\n if (!storeEntry) {\r\n const hookId = uniqueId();\r\n storeEntry = responseQueue[queueKey] = {\r\n hookId,\r\n cacheName,\r\n data: null,\r\n loading: false,\r\n error: null,\r\n setUpdateTrigger: () => {},\r\n requestId: null,\r\n meta: null,\r\n lastActivityAt: null,\r\n };\r\n hookIdRef.current = hookId;\r\n } else {\r\n hookIdRef.current = storeEntry.hookId;\r\n storeEntry.lastActivityAt = Date.now();\r\n }\r\n const entry = storeEntry;\r\n entry.setUpdateTrigger = setUpdateTrigger;\r\n\r\n const hookId = hookIdRef.current;\r\n\r\n const deleteCache = useCallback(() => {\r\n if (cacheName) {\r\n worker.postMessage({\r\n dataRequest: { type: \"delete\", cacheName, hookId: hookIdRef.current },\r\n });\r\n }\r\n }, [cacheName, worker]);\r\n\r\n const doRequest = useCallback(() => {\r\n const entry = responseQueue[queueKey];\r\n if (!entry || entry.loading) return;\r\n entry.loading = true;\r\n entry.error = null;\r\n entry.lastActivityAt = Date.now();\r\n entry.setUpdateTrigger?.(updater);\r\n if (requestConfig) {\r\n const requestId = uniqueId();\r\n entry.requestId = requestId;\r\n const isStream = requestConfig.responseType?.toLowerCase() === \"stream\";\r\n if (isStream) {\r\n entry.streamChunkBatchSize = toNumber(requestConfig.streamChunkBatchSize, DEFAULT_CHUNK_BATCH);\r\n }\r\n const request =\r\n isStream && requestConfig.retries === undefined ? { ...requestConfig, retries: 3 } : requestConfig;\r\n worker.postMessage({\r\n dataRequest: { type: \"set\", cacheName, hookId, requestId, payload: configData, request },\r\n });\r\n } else {\r\n worker.postMessage({ dataRequest: { type: \"get\", cacheName, hookId } as DataRequest<unknown> });\r\n }\r\n hasExecutedRef.current = true;\r\n }, [queueKey, cacheName, hookId, requestConfig, configData, worker]);\r\n\r\n const makeRequest = useCustomCallback(() => {\r\n if (!enabled || (runMode === \"once\" && hasExecutedRef.current)) return;\r\n doRequest();\r\n }, [enabled, runMode, doRequest]);\r\n\r\n const hasAlreadyRunOnce = runMode === \"once\" && hasExecutedRef.current;\r\n const shouldRun = (runMode === \"auto\" || runMode === \"once\") && enabled && (requestConfig || cacheName);\r\n if (shouldRun && !hasAlreadyRunOnce && !entry.loading) {\r\n doRequest();\r\n }\r\n return {\r\n data: (entry.data as T) ?? null,\r\n meta: entry.meta ?? null,\r\n loading: entry.loading ?? false,\r\n error: entry.error ?? null,\r\n refetch: makeRequest,\r\n deleteCache,\r\n streamChunks: toStreamChunks(entry.streamChunks),\r\n };\r\n};\r\n"],"names":["isEqual","entry","hookId"],"mappings":"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","x_google_ignoreList":[1]}
1
+ {"version":3,"file":"react.js","sources":["../../../src/shared/utils/uniqueId.ts","../../../node_modules/@mainframework/is-deep-equal/dist/index.mjs","../../../src/shared/hooks/useCustomCallback.ts","../../../src/shared/hooks/useApiWorker.ts"],"sourcesContent":["// utils/uniqueId.ts\r\nlet idCounter = 0;\r\n\r\n/**\r\n * Generates a stable, unique string ID.\r\n * SSR-safe and works in any environment.\r\n */\r\nexport const uniqueId = (): string => {\r\n idCounter += 1;\r\n return idCounter.toString();\r\n};\r\n","const e=e=>\"object\"==typeof e&&null!==e,t=e=>\"function\"==typeof e,r=e=>e instanceof Date,n=e=>e instanceof RegExp,o=e=>e instanceof Set,f=e=>e instanceof Map,i=e=>e instanceof String||e instanceof Number||e instanceof Boolean,s=e=>ArrayBuffer.isView(e)&&!(e instanceof DataView),a=e=>Object.getPrototypeOf(e),u=e=>null==e||\"object\"!=typeof e&&\"function\"!=typeof e,c=(e,t)=>e.getTime()===t.getTime(),l=(e,t)=>e.source===t.source&&e.flags===t.flags,y=(e,t)=>{if(e.constructor!==t.constructor||e.byteLength!==t.byteLength)return!1;const r=new Uint8Array(e.buffer,e.byteOffset,e.byteLength),n=new Uint8Array(t.buffer,t.byteOffset,t.byteLength);for(let e=0;e<r.length;e++)if(r[e]!==n[e])return!1;return!0},p=(e,t,r,n)=>{if(e.size!==t.size)return!1;for(const r of e)if(u(r)&&!t.has(r))return!1;const o=Array.from(t),f=new Set;for(const t of e){if(u(t))continue;const e=o.findIndex((e,r)=>!f.has(r)&&t===e);if(-1!==e){f.add(e);continue}let i=!1;for(let e=0;e<o.length;e++)if(!f.has(e)&&w(t,o[e],r,n)){f.add(e),i=!0;break}if(!i)return!1}return!0},g=(e,t,r,n)=>{if(e.size!==t.size)return!1;const o=Array.from(t),f=new Set;for(const[i,s]of e){if(u(i)){const e=t.get(i);if(void 0===e&&!t.has(i))return!1;if(!w(s,e,r,n))return!1;continue}let e=!1;for(let t=0;t<o.length;t++)if(!f.has(t)){const[a,u]=o[t];if(w(i,a,r,n)&&w(s,u,r,n)){f.add(t),e=!0;break}}if(!e)return!1}return!0},b=(e,t,r,n)=>{if(e.length!==t.length)return!1;for(let o=0;o<e.length;o++){if(n.strictSparseArrays){const r=Object.prototype.hasOwnProperty.call(e,o),n=Object.prototype.hasOwnProperty.call(t,o);if(r!==n)return!1;if(!r&&!n)continue}if(!w(e[o],t[o],r,n))return!1}return!0},h=(e,t,r,n)=>{const o=Reflect.ownKeys(e),f=Reflect.ownKeys(t);if(o.length!==f.length)return!1;for(const f of o){if(!Object.prototype.hasOwnProperty.call(t,f))return!1;if(!w(e[f],t[f],r,n))return!1}return!0},w=(w,A,m=new WeakMap,O={})=>{if(w===A)return!0;if(\"number\"==typeof w&&\"number\"==typeof A&&Number.isNaN(w)&&Number.isNaN(A))return!0;if(O.normalizeBoxedPrimitives&&(i(w)&&(w=w.valueOf()),i(A)&&(A=A.valueOf()),u(w)&&u(A)))return w===A;if(u(w)||u(A))return!1;if(t(w)||t(A))return w===A;if(!e(w)||!e(A))return!1;let d=m.get(w)??(()=>{const e=new WeakMap;return m.set(w,e),e})();const N=d.get(A);if(void 0!==N)return N;d.set(A,!0);const j=a(w),P=a(A);let k;return k=Array.isArray(w)&&Array.isArray(A)?b(w,A,m,O):!Array.isArray(w)&&!Array.isArray(A)&&(r(w)&&r(A)?c(w,A):n(w)&&n(A)?l(w,A):s(w)&&s(A)?y(w,A):o(w)&&o(A)?p(w,A,m,O):f(w)&&f(A)?g(w,A,m,O):!(!O.allowPrototypeMismatch&&j!==P)&&h(w,A,m,O)),d.set(A,k),k},A=(e,t,r)=>w(e,t,new WeakMap,r),m=(e,t,r,n)=>w(e,t,r,n);export{b as compareArray,c as compareDate,g as compareMap,h as compareObject,l as compareRegExp,p as compareSet,y as compareTypedArray,a as getPrototypeOf,i as isBoxedPrimitive,r as isDate,A as isEqual,m as isEqualWithSharedMemo,t as isFunction,f as isMap,e as isObject,u as isPrimitive,n as isRegExp,o as isSet,s as isTypedArray};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\r\nimport { useRef } from \"react\";\r\nimport { isEqual } from \"@mainframework/is-deep-equal\";\r\n\r\nexport const useCustomCallback = <T extends (...args: unknown[]) => unknown>(\r\n callback: T,\r\n dependencies: unknown[],\r\n): T => {\r\n const refCallback = useRef<T>(callback);\r\n const refDependencies = useRef<unknown[]>(dependencies);\r\n\r\n // Update refs synchronously during render\r\n if (!dependencies.every((dep, index) => isEqual(dep, refDependencies.current[index]))) {\r\n refDependencies.current = dependencies;\r\n refCallback.current = callback;\r\n }\r\n\r\n // Stable callback, always calls latest callback\r\n const stableCallback = useRef(\r\n (...args: Parameters<T>): ReturnType<T> => refCallback.current(...args) as ReturnType<T>,\r\n ).current;\r\n\r\n return stableCallback as T;\r\n};\r\n","// useApiWorker.ts\r\nimport { useRef, useState, useCallback } from \"react\";\r\nimport { createApiWorker } from \"../utils/createApiWorker\";\r\nimport { uniqueId } from \"../utils/uniqueId\";\r\nimport type {\r\n BinaryResponseMeta,\r\n DataRequest,\r\n QueueEntry,\r\n UseApiWorkerConfig,\r\n UseApiWorkerReturn,\r\n WorkerMessagePayload,\r\n} from \"../types/types\";\r\n\r\ntype StreamAccumulator = { chunks: ArrayBuffer[]; meta: BinaryResponseMeta | null };\r\n\r\ntype StreamThrottleState = {\r\n pendingChunks: ArrayBuffer[];\r\n};\r\n\r\nconst DEFAULT_CHUNK_BATCH = 5;\r\n\r\nconst toNumber = (val: unknown, fallback: number): number =>\r\n typeof val === \"number\" && Number.isFinite(val) ? val : fallback;\r\n\r\nconst toStreamChunks = (val: unknown): ArrayBuffer[] | undefined =>\r\n val === undefined || val === null ? undefined : Array.isArray(val) ? (val as ArrayBuffer[]) : undefined;\r\n\r\nimport { useCustomCallback } from \"./useCustomCallback\";\r\n\r\n// ============================================================================\r\n// MODULE-LEVEL WORKER & QUEUE\r\n// ============================================================================\r\n\r\nlet apiWorker: Worker | null = null;\r\nlet workerInitialized = false;\r\nlet cleanupTimer: ReturnType<typeof setInterval> | null = null;\r\n\r\nconst STALE_ENTRY_MS = 5000;\r\nconst CLEANUP_INTERVAL_MS = 30000;\r\n\r\nconst normalizeKey = (key: string) => key.toLocaleLowerCase();\r\n\r\nconst cleanupState = { isDeleting: false, lastRun: 0 };\r\n\r\nconst runStaleEntryCleanup = (): void => {\r\n const now = Date.now();\r\n if (cleanupState.isDeleting || now < cleanupState.lastRun + CLEANUP_INTERVAL_MS) return;\r\n\r\n cleanupState.isDeleting = true;\r\n\r\n try {\r\n const keys = Object.keys(responseQueue);\r\n let i = 0;\r\n while (i < keys.length) {\r\n const key = keys[i] as string;\r\n const entry = responseQueue[key];\r\n const streamInProgress = streamThrottleState[key] != null || streamAccumulators[key] != null;\r\n if (\r\n entry &&\r\n !streamInProgress &&\r\n entry.data != null &&\r\n entry.lastActivityAt != null &&\r\n now - entry.lastActivityAt >= STALE_ENTRY_MS\r\n ) {\r\n entry.loading = null;\r\n entry.data = null;\r\n entry.meta = null;\r\n entry.error = null;\r\n entry.setUpdateTrigger = null;\r\n entry.requestId = null;\r\n delete entry.streamChunks;\r\n delete streamThrottleState[key];\r\n }\r\n i++;\r\n }\r\n } finally {\r\n cleanupState.isDeleting = false;\r\n cleanupState.lastRun = now;\r\n }\r\n};\r\n\r\nconst responseQueue: Record<string, QueueEntry<unknown>> = {};\r\n\r\nconst streamAccumulators: Record<string, StreamAccumulator> = {};\r\nconst streamThrottleState: Record<string, StreamThrottleState> = {};\r\n\r\nconst updater = (n: number) => n + 1;\r\n\r\nconst flushStreamBatch = (key: string, entry: QueueEntry<unknown>): void => {\r\n const state = streamThrottleState[key];\r\n if (!state || state.pendingChunks.length === 0) return;\r\n entry.streamChunks = state.pendingChunks.slice();\r\n state.pendingChunks.length = 0;\r\n entry.setUpdateTrigger?.(updater);\r\n};\r\n\r\nconst findEntry = (cacheName: string | undefined, hookId: string | undefined) =>\r\n cacheName\r\n ? responseQueue[normalizeKey(cacheName)]\r\n : hookId\r\n ? (Object.values(responseQueue).find((e) => e.hookId === hookId) ?? null)\r\n : null;\r\n\r\nconst finalizeEntry = (entry: QueueEntry<unknown>): void => {\r\n entry.requestId = null;\r\n entry.setUpdateTrigger?.(updater);\r\n};\r\n\r\nconst getApiWorker = (): Worker => {\r\n if (apiWorker) return apiWorker;\r\n apiWorker = createApiWorker();\r\n return apiWorker;\r\n};\r\n\r\nconst ensureWorkerInitialized = (): Worker => {\r\n const worker = getApiWorker();\r\n if (workerInitialized) return worker;\r\n workerInitialized = true;\r\n\r\n if (!cleanupTimer) {\r\n cleanupTimer = setInterval(() => runStaleEntryCleanup(), CLEANUP_INTERVAL_MS);\r\n }\r\n\r\n // Worker always sends error ({ message: string }). Entry is found by cacheName or hookId.\r\n // Stream responses: start → chunk(s) → end; we accumulate chunks then set data = new Blob(chunks) on end.\r\n worker.onmessage = (event: MessageEvent<WorkerMessagePayload>) => {\r\n const msg = event.data;\r\n const cacheName = msg.cacheName;\r\n const hookId = msg.hookId;\r\n const error = msg.error;\r\n const key = cacheName ? normalizeKey(cacheName) : \"\";\r\n\r\n if (\"stream\" in msg && msg.stream) {\r\n const entry = findEntry(cacheName, hookId);\r\n if (!entry) return;\r\n const batchSize = toNumber(entry.streamChunkBatchSize, DEFAULT_CHUNK_BATCH);\r\n switch (msg.stream) {\r\n case \"start\": {\r\n streamAccumulators[key] = { chunks: [], meta: msg.meta ?? null };\r\n streamThrottleState[key] = { pendingChunks: [] };\r\n entry.streamChunks = [];\r\n entry.meta = msg.meta ?? null;\r\n entry.setUpdateTrigger?.(updater);\r\n return;\r\n }\r\n case \"resume\":\r\n if (!streamAccumulators[key]) streamAccumulators[key] = { chunks: [], meta: msg.meta ?? null };\r\n else if (msg.meta) streamAccumulators[key].meta = msg.meta;\r\n if (!streamThrottleState[key]) streamThrottleState[key] = { pendingChunks: [] };\r\n if (msg.meta) entry.meta = msg.meta ?? null;\r\n return;\r\n case \"chunk\": {\r\n const acc = streamAccumulators[key];\r\n const throttle = streamThrottleState[key];\r\n if (acc && msg.data) acc.chunks.push(msg.data);\r\n if (throttle && msg.data) {\r\n throttle.pendingChunks.push(msg.data);\r\n if (throttle.pendingChunks.length >= batchSize) {\r\n flushStreamBatch(key, entry);\r\n }\r\n }\r\n return;\r\n }\r\n case \"end\": {\r\n const acc = streamAccumulators[key];\r\n const throttle = streamThrottleState[key];\r\n if (throttle?.pendingChunks.length) flushStreamBatch(key, entry);\r\n delete streamThrottleState[key];\r\n delete streamAccumulators[key];\r\n const errMsg = error?.message ?? \"\";\r\n if (errMsg !== \"\") {\r\n entry.error = errMsg;\r\n } else if (acc) {\r\n entry.data = new Blob(acc.chunks, acc.meta?.contentType ? { type: acc.meta.contentType } : undefined);\r\n entry.meta = acc.meta ?? null;\r\n entry.error = null;\r\n entry.lastActivityAt = Date.now();\r\n }\r\n entry.loading = false;\r\n finalizeEntry(entry);\r\n return;\r\n }\r\n }\r\n }\r\n\r\n const entry = findEntry(cacheName, hookId);\r\n if (!entry) return;\r\n\r\n const message = error?.message ?? \"\";\r\n if (message !== \"\") {\r\n entry.error = message;\r\n entry.loading = false;\r\n } else {\r\n entry.data = msg.data ?? null;\r\n entry.meta = msg.meta ?? null;\r\n entry.lastActivityAt = Date.now();\r\n entry.error = null;\r\n entry.loading = false;\r\n }\r\n finalizeEntry(entry);\r\n };\r\n\r\n return worker;\r\n};\r\n\r\n// ============================================================================\r\n// HOOK\r\n// ============================================================================\r\n\r\nexport type { RequestConfig, UseApiWorkerConfig, UseApiWorkerReturn } from \"../types/types\";\r\n\r\nexport const useApiWorker = <T>(config: UseApiWorkerConfig): UseApiWorkerReturn<T> => {\r\n const { cacheName, request: requestConfig, data: configData, runMode = \"auto\", enabled = true } = config;\r\n\r\n const worker = ensureWorkerInitialized();\r\n\r\n const hookIdRef = useRef<string>(\"\");\r\n const queueKey = normalizeKey(cacheName);\r\n\r\n const hasExecutedRef = useRef(false);\r\n const [, setUpdateTrigger] = useState(0);\r\n\r\n let storeEntry = responseQueue[queueKey];\r\n\r\n if (!storeEntry) {\r\n const hookId = uniqueId();\r\n storeEntry = responseQueue[queueKey] = {\r\n hookId,\r\n cacheName,\r\n data: null,\r\n loading: false,\r\n error: null,\r\n setUpdateTrigger: () => {},\r\n requestId: null,\r\n meta: null,\r\n lastActivityAt: null,\r\n };\r\n hookIdRef.current = hookId;\r\n } else {\r\n hookIdRef.current = storeEntry.hookId;\r\n storeEntry.lastActivityAt = Date.now();\r\n }\r\n const entry = storeEntry;\r\n entry.setUpdateTrigger = setUpdateTrigger;\r\n\r\n const hookId = hookIdRef.current;\r\n\r\n const deleteCache = useCallback(() => {\r\n if (cacheName) {\r\n worker.postMessage({\r\n dataRequest: { type: \"delete\", cacheName, hookId: hookIdRef.current },\r\n });\r\n }\r\n }, [cacheName, worker]);\r\n\r\n const doRequest = useCallback(() => {\r\n const entry = responseQueue[queueKey];\r\n if (!entry || entry.loading) return;\r\n entry.loading = true;\r\n entry.error = null;\r\n entry.lastActivityAt = Date.now();\r\n entry.setUpdateTrigger?.(updater);\r\n if (requestConfig) {\r\n const requestId = uniqueId();\r\n entry.requestId = requestId;\r\n const isStream = requestConfig.responseType?.toLowerCase() === \"stream\";\r\n if (isStream) {\r\n entry.streamChunkBatchSize = toNumber(requestConfig.streamChunkBatchSize, DEFAULT_CHUNK_BATCH);\r\n }\r\n const request =\r\n isStream && requestConfig.retries === undefined ? { ...requestConfig, retries: 3 } : requestConfig;\r\n worker.postMessage({\r\n dataRequest: { type: \"set\", cacheName, hookId, requestId, payload: configData, request },\r\n });\r\n } else {\r\n worker.postMessage({ dataRequest: { type: \"get\", cacheName, hookId } as DataRequest<unknown> });\r\n }\r\n hasExecutedRef.current = true;\r\n }, [queueKey, cacheName, hookId, requestConfig, configData, worker]);\r\n\r\n const makeRequest = useCustomCallback(() => {\r\n if (!enabled || (runMode === \"once\" && hasExecutedRef.current)) return;\r\n doRequest();\r\n }, [enabled, runMode, doRequest]);\r\n\r\n const hasAlreadyRunOnce = runMode === \"once\" && hasExecutedRef.current;\r\n const shouldRun = (runMode === \"auto\" || runMode === \"once\") && enabled && (requestConfig || cacheName);\r\n if (shouldRun && !hasAlreadyRunOnce && !entry.loading) {\r\n doRequest();\r\n }\r\n return {\r\n data: (entry.data as T) ?? null,\r\n meta: entry.meta ?? null,\r\n loading: entry.loading ?? false,\r\n error: entry.error ?? null,\r\n refetch: makeRequest,\r\n deleteCache,\r\n streamChunks: toStreamChunks(entry.streamChunks),\r\n };\r\n};\r\n"],"names":["isEqual","entry","hookId"],"mappings":"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","x_google_ignoreList":[1]}
@@ -1,4 +1,4 @@
1
- export { B as BinaryParseResult, a as BinaryResponseMeta, C as ContentType, D as DataRequest, R as RequestConfig, b as ResponseType, c as RunMode, W as WorkerDataRequestType, d as WorkerErrorPayload, e as WorkerMessageData, f as WorkerMessagePayload, g as WorkerResponseMessage } from '../../types-Bbz0QMYB.js';
1
+ export { B as BinaryParseResult, b as BinaryResponseMeta, C as ContentType, D as DataRequest, R as RequestConfig, c as ResponseType, d as RunMode, W as WorkerDataRequestType, e as WorkerErrorPayload, f as WorkerMessageData, g as WorkerMessagePayload, h as WorkerResponseMessage } from '../../types-LYmxol0c.js';
2
2
 
3
3
  /**
4
4
  * Creates a Worker instance for the API request worker.
@@ -152,4 +152,4 @@ type WorkerMessageData = {
152
152
  dataRequest?: DataRequest<unknown>;
153
153
  };
154
154
 
155
- export type { BinaryParseResult as B, ContentType as C, DataRequest as D, RequestConfig as R, UseApiWorkerConfig as U, WorkerDataRequestType as W, BinaryResponseMeta as a, ResponseType as b, RunMode as c, WorkerErrorPayload as d, WorkerMessageData as e, WorkerMessagePayload as f, WorkerResponseMessage as g, UseApiWorkerReturn as h };
155
+ export type { BinaryParseResult as B, ContentType as C, DataRequest as D, RequestConfig as R, UseApiWorkerConfig as U, WorkerDataRequestType as W, UseApiWorkerReturn as a, BinaryResponseMeta as b, ResponseType as c, RunMode as d, WorkerErrorPayload as e, WorkerMessageData as f, WorkerMessagePayload as g, WorkerResponseMessage as h };
@@ -1,6 +1,8 @@
1
1
  const BINARY_MARKER = /* @__PURE__ */ Symbol.for("WorkerApiBinary");
2
2
  const DEFAULT_FILES_FIELD = "Files";
3
+ const EMPTY_BUFFER = new ArrayBuffer(0);
3
4
  const NO_ERROR = { message: "" };
5
+ const DEFAULT_ERROR = "An error occurred";
4
6
  const callerResponse = (cacheName, data, hookId, httpStatus, error = NO_ERROR) => {
5
7
  self.postMessage({
6
8
  cacheName,
@@ -12,18 +14,32 @@ const callerResponse = (cacheName, data, hookId, httpStatus, error = NO_ERROR) =
12
14
  };
13
15
  const makeError = (message) => ({ message });
14
16
  const callerResponseBinary = (cacheName, data, meta, hookId, httpStatus, error = NO_ERROR) => {
15
- const buffer = data?.byteLength ? data : new ArrayBuffer(0);
17
+ const buffer = data.byteLength ? data : EMPTY_BUFFER;
16
18
  const payload = { cacheName, data: buffer, meta, hookId, httpStatus, error };
17
19
  self.postMessage(payload, buffer.byteLength > 0 ? [buffer] : []);
18
20
  };
19
21
  const callerResponseStreamStart = (cacheName, meta, hookId, httpStatus, error = NO_ERROR) => {
20
- self.postMessage({ cacheName, stream: "start", meta, hookId, httpStatus, error });
22
+ self.postMessage({
23
+ cacheName,
24
+ stream: "start",
25
+ meta,
26
+ hookId,
27
+ httpStatus,
28
+ error
29
+ });
21
30
  };
22
31
  const callerResponseStreamResume = (cacheName, meta, hookId, httpStatus, error = NO_ERROR) => {
23
- self.postMessage({ cacheName, stream: "resume", meta, hookId, httpStatus, error });
32
+ self.postMessage({
33
+ cacheName,
34
+ stream: "resume",
35
+ meta,
36
+ hookId,
37
+ httpStatus,
38
+ error
39
+ });
24
40
  };
25
41
  const callerResponseStreamChunk = (cacheName, data, hookId, error = NO_ERROR) => {
26
- const buffer = data?.byteLength ? data : new ArrayBuffer(0);
42
+ const buffer = data.byteLength ? data : EMPTY_BUFFER;
27
43
  const payload = { cacheName, stream: "chunk", data: buffer, hookId, error };
28
44
  self.postMessage(payload, buffer.byteLength > 0 ? [buffer] : []);
29
45
  };
@@ -53,7 +69,7 @@ const commit = (cacheName, data, hookId, httpStatus) => {
53
69
  callerResponse("", null, hookId, void 0, makeError("Invalid commit: cacheName is required"));
54
70
  return;
55
71
  }
56
- set(normalizeKey(cacheName), data);
72
+ set(cacheName, data);
57
73
  callerResponse(cacheName, data, hookId, httpStatus);
58
74
  };
59
75
  const parseResponseByContentType = async (response) => {
@@ -63,7 +79,11 @@ const parseResponseByContentType = async (response) => {
63
79
  return null;
64
80
  }
65
81
  if (contentType.includes("json")) {
66
- return await response.json();
82
+ const text = await response.text();
83
+ if (text.trim() === "") {
84
+ return null;
85
+ }
86
+ return JSON.parse(text);
67
87
  }
68
88
  if (contentType.startsWith("text/") || contentType.includes("xml") || contentType.includes("javascript") || contentType.includes("x-www-form-urlencoded")) {
69
89
  return await response.text();
@@ -103,22 +123,20 @@ const appendToFormData = (formData, key, value, fileFieldName = DEFAULT_FILES_FI
103
123
  let ki = 0;
104
124
  while (ki < keys.length) {
105
125
  const k = keys[ki];
106
- if (Object.prototype.hasOwnProperty.call(value, k)) {
107
- hasFile = appendToFormData(
108
- formData,
109
- key ? `${key}.${k}` : k,
110
- value[k],
111
- fileFieldName,
112
- set2
113
- ) || hasFile;
114
- }
126
+ hasFile = appendToFormData(
127
+ formData,
128
+ key ? `${key}.${k}` : k,
129
+ value[k],
130
+ fileFieldName,
131
+ set2
132
+ ) || hasFile;
115
133
  ki++;
116
134
  }
117
135
  return hasFile;
118
136
  }
119
137
  if (value !== void 0 && value !== null) {
120
138
  const primitive = value;
121
- formData.append(key, primitive);
139
+ formData.append(key, String(primitive));
122
140
  }
123
141
  return false;
124
142
  };
@@ -151,13 +169,32 @@ const getPayloadType = (payload) => {
151
169
  }
152
170
  };
153
171
  const buildJsonBody = (payload) => JSON.stringify(payload);
154
- const buildUrlEncodedBody = (payload) => new URLSearchParams(payload).toString();
172
+ const buildUrlEncodedBody = (payload) => {
173
+ const params = new URLSearchParams();
174
+ const keys = Object.keys(payload);
175
+ let i = 0;
176
+ while (i < keys.length) {
177
+ const key = keys[i];
178
+ const value = payload[key];
179
+ if (value !== null && value !== void 0) {
180
+ if (typeof value === "object") {
181
+ throw new Error(`Cannot url-encode non-primitive value for key "${key}"`);
182
+ }
183
+ params.append(key, value.toString());
184
+ }
185
+ i++;
186
+ }
187
+ return params.toString();
188
+ };
155
189
  const buildTextBody = (payload) => String(payload);
156
190
  const prepareRequestBody = (payload, headers, options) => {
157
191
  const payloadType = getPayloadType(payload);
158
192
  switch (payloadType) {
159
193
  case "formdata":
160
- return { body: payload, headers: omitContentType({ ...headers }) };
194
+ return {
195
+ body: payload,
196
+ headers: omitContentType({ ...headers })
197
+ };
161
198
  case "blob":
162
199
  return { body: payload, headers: { ...headers } };
163
200
  case "arraybuffer":
@@ -165,28 +202,31 @@ const prepareRequestBody = (payload, headers, options) => {
165
202
  case "arraybufferview":
166
203
  return { body: payload, headers: { ...headers } };
167
204
  case "stream":
168
- return { body: payload, headers: { ...headers } };
205
+ return {
206
+ body: payload,
207
+ headers: { ...headers }
208
+ };
169
209
  case "string":
170
210
  return { body: payload, headers: { ...headers } };
171
211
  case "object": {
172
- const h = { ...headers };
173
- const contentType = getContentType(h);
174
212
  const fileFieldName = options?.formDataFileFieldName ?? DEFAULT_FILES_FIELD;
175
213
  const formDataKey = options?.formDataKey ?? DEFAULT_FILES_FIELD;
214
+ const formData = createFormDataIfBlobOrFile(payload, fileFieldName, formDataKey);
215
+ if (formData) {
216
+ return { body: formData, headers: omitContentType({ ...headers }) };
217
+ }
218
+ const h = { ...headers };
219
+ let contentType = getContentType(h);
220
+ if (contentType.includes("multipart/form-data")) {
221
+ contentType = "application/json";
222
+ delete h["Content-Type"];
223
+ delete h["content-type"];
224
+ }
176
225
  let body;
177
- if (contentType.includes("application/json")) {
178
- body = buildJsonBody(payload);
179
- } else if (contentType.includes("application/x-www-form-urlencoded")) {
226
+ if (contentType.includes("application/x-www-form-urlencoded")) {
180
227
  body = buildUrlEncodedBody(payload);
181
228
  } else if (contentType.startsWith("text/") || contentType.includes("xml")) {
182
229
  body = buildTextBody(payload);
183
- } else if (contentType.includes("multipart/form-data")) {
184
- const formData = createFormDataIfBlobOrFile(payload, fileFieldName, formDataKey);
185
- if (formData) {
186
- return { body: formData, headers: omitContentType(h) };
187
- }
188
- body = buildJsonBody(payload);
189
- h["Content-Type"] = "application/json";
190
230
  } else {
191
231
  body = buildJsonBody(payload);
192
232
  }
@@ -242,18 +282,18 @@ const apiRequest = async (cacheName, payload, {
242
282
  credentials,
243
283
  signal: controller.signal
244
284
  };
245
- if (methodLower !== "get" && payload != null) {
246
- const prepareOptions = {};
247
- if (formDataFileFieldName != null && formDataFileFieldName !== "")
248
- prepareOptions.formDataFileFieldName = formDataFileFieldName;
249
- if (formDataKey != null && formDataKey !== "") prepareOptions.formDataKey = formDataKey;
250
- const { body, headers: processedHeaders } = prepareRequestBody(payload, headers, prepareOptions);
251
- if (body !== void 0) fetchOptions.body = body;
252
- fetchOptions.headers = processedHeaders;
253
- } else {
254
- fetchOptions.headers = omitContentType({ ...headers });
255
- }
256
285
  try {
286
+ if (methodLower !== "get" && payload != null) {
287
+ const prepareOptions = {};
288
+ if (formDataFileFieldName != null && formDataFileFieldName !== "")
289
+ prepareOptions.formDataFileFieldName = formDataFileFieldName;
290
+ if (formDataKey != null && formDataKey !== "") prepareOptions.formDataKey = formDataKey;
291
+ const { body, headers: processedHeaders } = prepareRequestBody(payload, headers, prepareOptions);
292
+ if (body !== void 0) fetchOptions.body = body;
293
+ fetchOptions.headers = processedHeaders;
294
+ } else {
295
+ fetchOptions.headers = omitContentType({ ...headers });
296
+ }
257
297
  if (responseTypeLower === "stream") {
258
298
  const maxRetries = Math.min(retries ?? 3, 5);
259
299
  let bytesReceived = 0;
@@ -261,11 +301,14 @@ const apiRequest = async (cacheName, payload, {
261
301
  let attempt = 0;
262
302
  while (attempt <= maxRetries) {
263
303
  try {
264
- const reqHeaders = methodLower === "get" ? omitContentType({ ...fetchOptions.headers }) : fetchOptions.headers;
304
+ const reqHeaders = methodLower === "get" ? omitContentType({ ...fetchOptions.headers }) : { ...fetchOptions.headers };
265
305
  if (bytesReceived > 0) reqHeaders["Range"] = `bytes=${bytesReceived}-`;
266
- const streamResponse = await fetch(url, { ...fetchOptions, headers: reqHeaders });
306
+ const streamResponse = await fetch(url, {
307
+ ...fetchOptions,
308
+ headers: reqHeaders
309
+ });
267
310
  if (streamResponse.status >= 400) {
268
- streamError = makeError(streamResponse.statusText);
311
+ streamError = makeError(streamResponse.statusText || DEFAULT_ERROR);
269
312
  break;
270
313
  }
271
314
  if (streamResponse.status === 204) {
@@ -318,11 +361,11 @@ const apiRequest = async (cacheName, payload, {
318
361
  }
319
362
  const response = await fetch(url, fetchOptions);
320
363
  if (response.status >= 400) {
321
- callerResponse(cacheName, null, hookId, response.status, makeError(response.statusText));
364
+ callerResponse(cacheName, null, hookId, response.status, makeError(response.statusText || DEFAULT_ERROR));
322
365
  return;
323
366
  }
324
367
  if (response.status === 204) {
325
- set(normalizeKey(cacheName), null);
368
+ set(cacheName, null);
326
369
  callerResponse(cacheName, null, hookId, 204);
327
370
  return;
328
371
  }
@@ -356,7 +399,9 @@ const apiRequest = async (cacheName, payload, {
356
399
  inFlightByCacheName.delete(cacheName);
357
400
  }
358
401
  })();
359
- inFlightByCacheName.set(cacheName, promise);
402
+ if (!skipInFlightDedupe) {
403
+ inFlightByCacheName.set(cacheName, promise);
404
+ }
360
405
  await promise;
361
406
  };
362
407
  const onRequest = (dataRequest) => {
@@ -1 +1 @@
1
- {"version":3,"file":"api.worker.js","sources":["../../../src/shared/workers/api/api.worker.ts"],"sourcesContent":["/// <reference lib=\"webworker\" />\r\n\r\nimport type {\r\n AbortControllers,\r\n BinaryParseResult,\r\n BinaryResponseMeta,\r\n DataRequest,\r\n WorkerApiRequest,\r\n WorkerErrorPayload,\r\n WorkerMessageData,\r\n} from \"../../types/types\";\r\n\r\nexport const BINARY_MARKER = Symbol.for(\"WorkerApiBinary\");\r\n\r\nconst DEFAULT_FILES_FIELD = \"Files\";\r\n\r\nconst NO_ERROR: WorkerErrorPayload = { message: \"\" };\r\n\r\nconst callerResponse = (\r\n cacheName: string,\r\n data: unknown,\r\n hookId?: string | null,\r\n httpStatus?: number,\r\n error: WorkerErrorPayload = NO_ERROR,\r\n): void => {\r\n self.postMessage({\r\n cacheName,\r\n data: error.message !== \"\" ? null : (data ?? null),\r\n hookId,\r\n httpStatus,\r\n error,\r\n });\r\n};\r\n\r\nconst makeError = (message: string): WorkerErrorPayload => ({ message });\r\n\r\n/**\r\n * Binary response - transferred via postMessage, not stored in cache.\r\n * Client receives ArrayBuffer + meta for reconstruction (e.g. new Blob([data], { type })).\r\n * Always sends a message; empty/zero-length body uses an empty ArrayBuffer so the client does not hang.\r\n */\r\nconst callerResponseBinary = (\r\n cacheName: string,\r\n data: ArrayBuffer,\r\n meta: BinaryResponseMeta,\r\n hookId?: string | null,\r\n httpStatus?: number,\r\n error: WorkerErrorPayload = NO_ERROR,\r\n): void => {\r\n const buffer = data?.byteLength ? data : new ArrayBuffer(0);\r\n const payload = { cacheName, data: buffer, meta, hookId, httpStatus, error };\r\n self.postMessage(payload, buffer.byteLength > 0 ? [buffer] : []);\r\n};\r\n\r\nconst callerResponseStreamStart = (\r\n cacheName: string,\r\n meta: BinaryResponseMeta | null,\r\n hookId?: string | null,\r\n httpStatus?: number,\r\n error: WorkerErrorPayload = NO_ERROR,\r\n): void => {\r\n self.postMessage({ cacheName, stream: \"start\", meta, hookId, httpStatus, error });\r\n};\r\n\r\nconst callerResponseStreamResume = (\r\n cacheName: string,\r\n meta: BinaryResponseMeta | null,\r\n hookId?: string | null,\r\n httpStatus?: number,\r\n error: WorkerErrorPayload = NO_ERROR,\r\n): void => {\r\n self.postMessage({ cacheName, stream: \"resume\", meta, hookId, httpStatus, error });\r\n};\r\n\r\nconst callerResponseStreamChunk = (\r\n cacheName: string,\r\n data: ArrayBuffer,\r\n hookId?: string | null,\r\n error: WorkerErrorPayload = NO_ERROR,\r\n): void => {\r\n const buffer = data?.byteLength ? data : new ArrayBuffer(0);\r\n const payload = { cacheName, stream: \"chunk\", data: buffer, hookId, error };\r\n self.postMessage(payload, buffer.byteLength > 0 ? [buffer] : []);\r\n};\r\n\r\nconst callerResponseStreamEnd = (\r\n cacheName: string,\r\n hookId?: string | null,\r\n error: WorkerErrorPayload = NO_ERROR,\r\n): void => {\r\n self.postMessage({ cacheName, stream: \"end\", hookId, error });\r\n};\r\n\r\nconst transferableBuffer = (view: Uint8Array): ArrayBuffer =>\r\n view.byteOffset === 0 && view.byteLength === view.buffer.byteLength\r\n ? (view.buffer as ArrayBuffer)\r\n : view.slice(0).buffer;\r\n\r\nconst store = Object.create(null) as Record<string, unknown>;\r\nconst normalizeKey = (key: string) => key.toLocaleLowerCase();\r\nconst get = <TData>(key: string): TData | undefined => store[normalizeKey(key)] as TData | undefined;\r\nconst set = <TData>(key: string, value: TData): void => {\r\n store[normalizeKey(key)] = value;\r\n};\r\nconst remove = (key: string): void => {\r\n delete store[normalizeKey(key)];\r\n};\r\n\r\nconst isNonEmptyString = (v: unknown): v is string => typeof v === \"string\" && v.trim() !== \"\";\r\n\r\n/** Returns headers without Content-Type (either casing). Use when FormData sets it automatically. */\r\nconst omitContentType = (headers: Record<string, string>): Record<string, string> => {\r\n const rest = { ...headers };\r\n delete rest[\"Content-Type\"];\r\n delete rest[\"content-type\"];\r\n return rest;\r\n};\r\n\r\nconst isBinaryResponse = (r: unknown): r is BinaryParseResult =>\r\n typeof r === \"object\" &&\r\n r !== null &&\r\n BINARY_MARKER in r &&\r\n (r as unknown as BinaryParseResult).data instanceof ArrayBuffer;\r\n\r\nconst commit = <TData>(cacheName: string, data: TData, hookId?: string | null, httpStatus?: number): void => {\r\n if (!cacheName) {\r\n callerResponse(\"\", null, hookId, undefined, makeError(\"Invalid commit: cacheName is required\"));\r\n return;\r\n }\r\n set(normalizeKey(cacheName), data);\r\n callerResponse(cacheName, data, hookId, httpStatus);\r\n};\r\n\r\n/**\r\n * Parses response based on content-type.\r\n * Returns parsed data for JSON/text, or binary result with BINARY_MARKER, data (ArrayBuffer), contentType, contentDisposition.\r\n */\r\nconst parseResponseByContentType = async (response: Response): Promise<unknown> => {\r\n const contentType = response.headers.get(\"content-type\")?.toLocaleLowerCase() || \"\";\r\n const contentLength = response.headers.get(\"content-length\");\r\n\r\n // No content\r\n if (response.status === 204 || contentLength === \"0\") {\r\n return null;\r\n }\r\n\r\n // JSON types - let it throw if malformed\r\n if (contentType.includes(\"json\")) {\r\n return await response.json();\r\n }\r\n\r\n // Text-based types\r\n if (\r\n contentType.startsWith(\"text/\") ||\r\n contentType.includes(\"xml\") ||\r\n contentType.includes(\"javascript\") ||\r\n contentType.includes(\"x-www-form-urlencoded\")\r\n ) {\r\n return await response.text();\r\n }\r\n\r\n // Binary types (known or fallback) - use arrayBuffer for zero-copy transfer to client\r\n const arrayBuffer = await response.arrayBuffer();\r\n return {\r\n [BINARY_MARKER]: true as const,\r\n data: arrayBuffer,\r\n contentType,\r\n contentDisposition: response.headers.get(\"content-disposition\"),\r\n };\r\n};\r\n\r\n/** File/Blob use fileFieldName (default \"Files\"); all other fields use property name (key). */\r\nconst appendToFormData = (\r\n formData: FormData,\r\n key: string,\r\n value: unknown,\r\n fileFieldName: string = DEFAULT_FILES_FIELD,\r\n visited?: WeakSet<object>,\r\n): boolean => {\r\n if (value instanceof File) {\r\n formData.append(fileFieldName, value, value.name);\r\n return true;\r\n }\r\n\r\n if (value instanceof Blob) {\r\n formData.append(fileFieldName, value, \"blob\");\r\n return true;\r\n }\r\n\r\n if (value !== null && value !== undefined && typeof value === \"object\") {\r\n const set = visited ?? new WeakSet<object>();\r\n if (set.has(value)) return false;\r\n set.add(value);\r\n if (Array.isArray(value)) {\r\n let hasFile = false;\r\n let i = 0;\r\n while (i < value.length) {\r\n hasFile = appendToFormData(formData, key ? `${key}.${i}` : String(i), value[i], fileFieldName, set) || hasFile;\r\n i++;\r\n }\r\n return hasFile;\r\n }\r\n let hasFile = false;\r\n const keys = Object.keys(value);\r\n let ki = 0;\r\n while (ki < keys.length) {\r\n const k = keys[ki] as string;\r\n if (Object.prototype.hasOwnProperty.call(value, k)) {\r\n hasFile =\r\n appendToFormData(\r\n formData,\r\n key ? `${key}.${k}` : k,\r\n (value as Record<string, unknown>)[k],\r\n fileFieldName,\r\n set,\r\n ) || hasFile;\r\n }\r\n ki++;\r\n }\r\n return hasFile;\r\n }\r\n\r\n if (value !== undefined && value !== null) {\r\n const primitive = value as string | number | boolean | bigint | symbol;\r\n formData.append(key, primitive as string | Blob);\r\n }\r\n return false;\r\n};\r\n\r\nconst createFormDataIfBlobOrFile = (\r\n payload: unknown,\r\n fileFieldName: string = DEFAULT_FILES_FIELD,\r\n formDataKey: string = DEFAULT_FILES_FIELD,\r\n): FormData | null => {\r\n if (payload === null || payload === undefined || typeof payload !== \"object\") {\r\n return null;\r\n }\r\n\r\n const formData = new FormData();\r\n const visited = new WeakSet<object>();\r\n const hasFile = appendToFormData(formData, formDataKey, payload, fileFieldName, visited);\r\n return hasFile ? formData : null;\r\n};\r\n\r\nconst getContentType = (headers: Record<string, string> = {}): string =>\r\n headers[\"Content-Type\"] || headers[\"content-type\"] || \"application/json\";\r\n\r\nconst getPayloadType = (payload: unknown): string => {\r\n switch (true) {\r\n case payload instanceof FormData:\r\n return \"formdata\";\r\n case payload instanceof Blob:\r\n return \"blob\";\r\n case payload instanceof ArrayBuffer:\r\n return \"arraybuffer\";\r\n case ArrayBuffer.isView(payload):\r\n return \"arraybufferview\";\r\n case typeof ReadableStream !== \"undefined\" && payload instanceof ReadableStream:\r\n return \"stream\";\r\n case typeof payload === \"string\":\r\n return \"string\";\r\n default:\r\n return \"object\";\r\n }\r\n};\r\n\r\nconst buildJsonBody = (payload: unknown): BodyInit => JSON.stringify(payload);\r\nconst buildUrlEncodedBody = (payload: Record<string, string>): BodyInit => new URLSearchParams(payload).toString();\r\nconst buildTextBody = (payload: unknown): BodyInit => String(payload);\r\n\r\n/**\r\n * Builds body and headers for fetch. Each branch handles one payload type; add new cases here for new body types.\r\n */\r\nconst prepareRequestBody = (\r\n payload: unknown,\r\n headers: Record<string, string>,\r\n options?: { formDataFileFieldName?: string; formDataKey?: string },\r\n): { body?: BodyInit; headers: Record<string, string> } => {\r\n const payloadType = getPayloadType(payload);\r\n\r\n switch (payloadType) {\r\n case \"formdata\":\r\n return { body: payload as FormData, headers: omitContentType({ ...headers }) };\r\n case \"blob\":\r\n return { body: payload as Blob, headers: { ...headers } };\r\n case \"arraybuffer\":\r\n return { body: payload as ArrayBuffer, headers: { ...headers } };\r\n case \"arraybufferview\":\r\n return { body: payload as BodyInit, headers: { ...headers } };\r\n case \"stream\":\r\n return { body: payload as ReadableStream<Uint8Array>, headers: { ...headers } };\r\n case \"string\":\r\n return { body: payload as string, headers: { ...headers } };\r\n case \"object\": {\r\n const h = { ...headers };\r\n const contentType = getContentType(h);\r\n const fileFieldName = options?.formDataFileFieldName ?? DEFAULT_FILES_FIELD;\r\n const formDataKey = options?.formDataKey ?? DEFAULT_FILES_FIELD;\r\n\r\n let body: BodyInit;\r\n if (contentType.includes(\"application/json\")) {\r\n body = buildJsonBody(payload);\r\n } else if (contentType.includes(\"application/x-www-form-urlencoded\")) {\r\n body = buildUrlEncodedBody(payload as Record<string, string>);\r\n } else if (contentType.startsWith(\"text/\") || contentType.includes(\"xml\")) {\r\n body = buildTextBody(payload);\r\n } else if (contentType.includes(\"multipart/form-data\")) {\r\n const formData = createFormDataIfBlobOrFile(payload, fileFieldName, formDataKey);\r\n if (formData) {\r\n return { body: formData, headers: omitContentType(h) };\r\n }\r\n body = buildJsonBody(payload);\r\n h[\"Content-Type\"] = \"application/json\";\r\n } else {\r\n body = buildJsonBody(payload);\r\n }\r\n\r\n if (!h[\"Content-Type\"] && !h[\"content-type\"]) {\r\n h[\"Content-Type\"] = contentType;\r\n }\r\n return { body, headers: h };\r\n }\r\n\r\n default:\r\n return { headers: { ...headers } };\r\n }\r\n};\r\n\r\nconst inFlightControllers: AbortControllers = new Map();\r\nconst inFlightByCacheName = new Map<string, Promise<void>>();\r\n\r\nconst apiRequest = async <TData>(\r\n cacheName: string,\r\n payload: TData | FormData | null,\r\n {\r\n url,\r\n method,\r\n headers = {},\r\n mode = \"cors\",\r\n credentials = \"same-origin\",\r\n responseType,\r\n timeoutMs,\r\n formDataFileFieldName,\r\n formDataKey,\r\n retries,\r\n }: WorkerApiRequest,\r\n requestId?: string | null,\r\n hookId?: string | null,\r\n): Promise<void> => {\r\n const methodLower = method.toLocaleLowerCase();\r\n const responseTypeLower = responseType?.toLocaleLowerCase();\r\n\r\n // Early return (cached then fresh) allowed for any HTTP method, except when response is binary or streaming.\r\n const skipInFlightDedupe = responseTypeLower === \"binary\" || responseTypeLower === \"stream\";\r\n if (!skipInFlightDedupe) {\r\n const existing = inFlightByCacheName.get(cacheName);\r\n if (existing) {\r\n const cached = get(cacheName);\r\n if (cached !== undefined) callerResponse(cacheName, cached, hookId);\r\n await existing;\r\n const fresh = get(cacheName);\r\n if (fresh !== undefined) callerResponse(cacheName, fresh, hookId);\r\n return;\r\n }\r\n }\r\n\r\n const controller = new AbortController();\r\n if (requestId) {\r\n inFlightControllers.set(requestId, controller);\r\n }\r\n\r\n let timeoutId: ReturnType<typeof setTimeout> | undefined;\r\n if (timeoutMs != null && timeoutMs > 0) {\r\n timeoutId = setTimeout(() => controller.abort(), timeoutMs);\r\n }\r\n\r\n const promise = (async (): Promise<void> => {\r\n const fetchOptions: RequestInit = {\r\n method,\r\n mode,\r\n credentials,\r\n signal: controller.signal,\r\n };\r\n\r\n if (methodLower !== \"get\" && payload != null) {\r\n const prepareOptions: { formDataFileFieldName?: string; formDataKey?: string } = {};\r\n if (formDataFileFieldName != null && formDataFileFieldName !== \"\")\r\n prepareOptions.formDataFileFieldName = formDataFileFieldName;\r\n if (formDataKey != null && formDataKey !== \"\") prepareOptions.formDataKey = formDataKey;\r\n const { body, headers: processedHeaders } = prepareRequestBody(payload, headers, prepareOptions);\r\n if (body !== undefined) fetchOptions.body = body;\r\n fetchOptions.headers = processedHeaders;\r\n } else {\r\n fetchOptions.headers = omitContentType({ ...headers });\r\n }\r\n\r\n try {\r\n if (responseTypeLower === \"stream\") {\r\n const maxRetries = Math.min(retries ?? 3, 5);\r\n let bytesReceived = 0;\r\n let streamError: WorkerErrorPayload = NO_ERROR;\r\n let attempt = 0;\r\n while (attempt <= maxRetries) {\r\n try {\r\n const reqHeaders =\r\n methodLower === \"get\" ? omitContentType({ ...fetchOptions.headers }) : fetchOptions.headers;\r\n if (bytesReceived > 0) reqHeaders[\"Range\"] = `bytes=${bytesReceived}-`;\r\n const streamResponse = await fetch(url, { ...fetchOptions, headers: reqHeaders });\r\n if (streamResponse.status >= 400) {\r\n streamError = makeError(streamResponse.statusText);\r\n break;\r\n }\r\n if (streamResponse.status === 204) {\r\n callerResponseStreamEnd(cacheName, hookId);\r\n return;\r\n }\r\n if (streamResponse.status === 416) break;\r\n const contentType = streamResponse.headers.get(\"content-type\") ?? undefined;\r\n const meta: BinaryResponseMeta = {\r\n contentDisposition: streamResponse.headers.get(\"content-disposition\") ?? null,\r\n ...(contentType !== undefined && { contentType }),\r\n };\r\n if (bytesReceived === 0) callerResponseStreamStart(cacheName, meta, hookId, streamResponse.status);\r\n else callerResponseStreamResume(cacheName, meta, hookId, streamResponse.status);\r\n const body = streamResponse.body;\r\n if (!body) {\r\n callerResponseStreamEnd(cacheName, hookId);\r\n return;\r\n }\r\n const reader = body.getReader();\r\n let skipRemaining = streamResponse.status === 200 && bytesReceived > 0 ? bytesReceived : 0;\r\n while (true) {\r\n const { done, value } = await reader.read();\r\n if (done) break;\r\n if (!value || value.byteLength === 0) continue;\r\n if (skipRemaining > 0) {\r\n if (value.byteLength <= skipRemaining) {\r\n skipRemaining -= value.byteLength;\r\n continue;\r\n }\r\n const offset = skipRemaining;\r\n skipRemaining = 0;\r\n const tail = value.subarray(offset);\r\n callerResponseStreamChunk(cacheName, transferableBuffer(tail), hookId);\r\n bytesReceived += tail.byteLength;\r\n } else {\r\n callerResponseStreamChunk(cacheName, transferableBuffer(value), hookId);\r\n bytesReceived += value.byteLength;\r\n }\r\n }\r\n break;\r\n } catch (err) {\r\n streamError =\r\n (err as Error).name === \"AbortError\" ? makeError(\"Request aborted\") : makeError((err as Error).message);\r\n if (attempt === maxRetries) break;\r\n }\r\n attempt++;\r\n }\r\n callerResponseStreamEnd(cacheName, hookId, streamError);\r\n return;\r\n }\r\n\r\n const response = await fetch(url, fetchOptions);\r\n\r\n if (response.status >= 400) {\r\n callerResponse(cacheName, null, hookId, response.status, makeError(response.statusText));\r\n return;\r\n }\r\n\r\n if (response.status === 204) {\r\n set(normalizeKey(cacheName), null);\r\n callerResponse(cacheName, null, hookId, 204);\r\n return;\r\n }\r\n\r\n const responseData = await parseResponseByContentType(response);\r\n\r\n if (isBinaryResponse(responseData)) {\r\n callerResponseBinary(\r\n cacheName,\r\n responseData.data,\r\n {\r\n contentType: responseData.contentType,\r\n contentDisposition: responseData.contentDisposition ?? null,\r\n },\r\n hookId,\r\n response.status,\r\n );\r\n } else {\r\n commit(cacheName, responseData, hookId, response.status);\r\n }\r\n } catch (error) {\r\n if ((error as Error).name === \"AbortError\") {\r\n callerResponse(cacheName, null, hookId, undefined, makeError(\"Request aborted\"));\r\n return;\r\n }\r\n const err = error as Error;\r\n callerResponse(cacheName, null, hookId, undefined, makeError(err.message));\r\n } finally {\r\n if (timeoutId != null) clearTimeout(timeoutId);\r\n if (requestId) {\r\n inFlightControllers.delete(requestId);\r\n }\r\n inFlightByCacheName.delete(cacheName);\r\n }\r\n })();\r\n\r\n inFlightByCacheName.set(cacheName, promise);\r\n await promise;\r\n};\r\n\r\nconst onRequest = <TData>(dataRequest: DataRequest<TData>): void => {\r\n const { cacheName, type, payload, request, requestId, hookId } = dataRequest;\r\n const responseCacheName = dataRequest.cacheName ?? \"\";\r\n\r\n if (!isNonEmptyString(type)) {\r\n callerResponse(responseCacheName, null, hookId, undefined, makeError(\"Invalid request: type is required\"));\r\n return;\r\n }\r\n const lowerType = normalizeKey(type);\r\n\r\n if (lowerType === \"cancel\") {\r\n if (requestId) onCancel(requestId);\r\n return;\r\n }\r\n\r\n if (!isNonEmptyString(cacheName)) {\r\n callerResponse(responseCacheName, null, hookId, undefined, makeError(\"Invalid request: cacheName is required\"));\r\n return;\r\n }\r\n const lowerCacheName = normalizeKey(cacheName);\r\n\r\n if (lowerType === \"get\") {\r\n const requestedData = get(lowerCacheName);\r\n if (requestedData === undefined) {\r\n callerResponse(lowerCacheName, null, hookId, undefined, makeError(\"Cache miss\"));\r\n } else {\r\n callerResponse(lowerCacheName, requestedData, hookId);\r\n }\r\n } else if (lowerType === \"set\") {\r\n if (!request) {\r\n if (payload == null) {\r\n callerResponse(\r\n responseCacheName,\r\n null,\r\n hookId,\r\n undefined,\r\n makeError(\"Invalid request: payload is required for set\"),\r\n );\r\n return;\r\n }\r\n set(lowerCacheName, payload);\r\n } else {\r\n const methodLower = normalizeKey(request.method);\r\n if (methodLower !== \"get\" && payload == null) {\r\n callerResponse(\r\n responseCacheName,\r\n null,\r\n hookId,\r\n undefined,\r\n makeError(\"Invalid request: payload is required for non-GET API request\"),\r\n );\r\n return;\r\n }\r\n void apiRequest(lowerCacheName, payload ?? null, request, requestId, hookId);\r\n }\r\n } else if (lowerType === \"delete\") {\r\n remove(lowerCacheName);\r\n callerResponse(lowerCacheName, { deleted: true }, hookId);\r\n }\r\n};\r\n\r\nconst onCancel = (requestId: string): void => {\r\n const controller = inFlightControllers.get(requestId);\r\n if (controller) {\r\n controller.abort();\r\n inFlightControllers.delete(requestId);\r\n }\r\n};\r\n\r\n/**\r\n * Incoming messages from the main thread. Expects payload shape { dataRequest?: DataRequest }.\r\n * Responses via postMessage: { cacheName, data?, meta?, hookId?, httpStatus?, error }.\r\n * error is always present: { message: \"\" } when no error, { message: \"...\" } when the request failed.\r\n */\r\nonmessage = (event: MessageEvent<WorkerMessageData>): void => {\r\n const payload = event.data;\r\n if (payload === null || typeof payload !== \"object\") return;\r\n const dataRequest = payload.dataRequest;\r\n if (dataRequest !== undefined) onRequest(dataRequest);\r\n};\r\n"],"names":["set","hasFile"],"mappings":"AAYO,MAAM,aAAA,mBAAgB,MAAA,CAAO,GAAA,CAAI,iBAAiB;AAEzD,MAAM,mBAAA,GAAsB,OAAA;AAE5B,MAAM,QAAA,GAA+B,EAAE,OAAA,EAAS,EAAA,EAAG;AAEnD,MAAM,iBAAiB,CACrB,SAAA,EACA,MACA,MAAA,EACA,UAAA,EACA,QAA4B,QAAA,KACnB;AACT,EAAA,IAAA,CAAK,WAAA,CAAY;AAAA,IACf,SAAA;AAAA,IACA,IAAA,EAAM,KAAA,CAAM,OAAA,KAAY,EAAA,GAAK,OAAQ,IAAA,IAAQ,IAAA;AAAA,IAC7C,MAAA;AAAA,IACA,UAAA;AAAA,IACA;AAAA,GACD,CAAA;AACH,CAAA;AAEA,MAAM,SAAA,GAAY,CAAC,OAAA,MAAyC,EAAE,OAAA,EAAQ,CAAA;AAOtE,MAAM,oBAAA,GAAuB,CAC3B,SAAA,EACA,IAAA,EACA,MACA,MAAA,EACA,UAAA,EACA,QAA4B,QAAA,KACnB;AACT,EAAA,MAAM,SAAS,IAAA,EAAM,UAAA,GAAa,IAAA,GAAO,IAAI,YAAY,CAAC,CAAA;AAC1D,EAAA,MAAM,OAAA,GAAU,EAAE,SAAA,EAAW,IAAA,EAAM,QAAQ,IAAA,EAAM,MAAA,EAAQ,YAAY,KAAA,EAAM;AAC3E,EAAA,IAAA,CAAK,WAAA,CAAY,SAAS,MAAA,CAAO,UAAA,GAAa,IAAI,CAAC,MAAM,CAAA,GAAI,EAAE,CAAA;AACjE,CAAA;AAEA,MAAM,4BAA4B,CAChC,SAAA,EACA,MACA,MAAA,EACA,UAAA,EACA,QAA4B,QAAA,KACnB;AACT,EAAA,IAAA,CAAK,WAAA,CAAY,EAAE,SAAA,EAAW,MAAA,EAAQ,SAAS,IAAA,EAAM,MAAA,EAAQ,UAAA,EAAY,KAAA,EAAO,CAAA;AAClF,CAAA;AAEA,MAAM,6BAA6B,CACjC,SAAA,EACA,MACA,MAAA,EACA,UAAA,EACA,QAA4B,QAAA,KACnB;AACT,EAAA,IAAA,CAAK,WAAA,CAAY,EAAE,SAAA,EAAW,MAAA,EAAQ,UAAU,IAAA,EAAM,MAAA,EAAQ,UAAA,EAAY,KAAA,EAAO,CAAA;AACnF,CAAA;AAEA,MAAM,4BAA4B,CAChC,SAAA,EACA,IAAA,EACA,MAAA,EACA,QAA4B,QAAA,KACnB;AACT,EAAA,MAAM,SAAS,IAAA,EAAM,UAAA,GAAa,IAAA,GAAO,IAAI,YAAY,CAAC,CAAA;AAC1D,EAAA,MAAM,OAAA,GAAU,EAAE,SAAA,EAAW,MAAA,EAAQ,SAAS,IAAA,EAAM,MAAA,EAAQ,QAAQ,KAAA,EAAM;AAC1E,EAAA,IAAA,CAAK,WAAA,CAAY,SAAS,MAAA,CAAO,UAAA,GAAa,IAAI,CAAC,MAAM,CAAA,GAAI,EAAE,CAAA;AACjE,CAAA;AAEA,MAAM,uBAAA,GAA0B,CAC9B,SAAA,EACA,MAAA,EACA,QAA4B,QAAA,KACnB;AACT,EAAA,IAAA,CAAK,YAAY,EAAE,SAAA,EAAW,QAAQ,KAAA,EAAO,MAAA,EAAQ,OAAO,CAAA;AAC9D,CAAA;AAEA,MAAM,qBAAqB,CAAC,IAAA,KAC1B,IAAA,CAAK,UAAA,KAAe,KAAK,IAAA,CAAK,UAAA,KAAe,IAAA,CAAK,MAAA,CAAO,aACpD,IAAA,CAAK,MAAA,GACN,IAAA,CAAK,KAAA,CAAM,CAAC,CAAA,CAAE,MAAA;AAEpB,MAAM,KAAA,mBAAQ,MAAA,CAAO,MAAA,CAAO,IAAI,CAAA;AAChC,MAAM,YAAA,GAAe,CAAC,GAAA,KAAgB,GAAA,CAAI,iBAAA,EAAkB;AAC5D,MAAM,MAAM,CAAQ,GAAA,KAAmC,KAAA,CAAM,YAAA,CAAa,GAAG,CAAC,CAAA;AAC9E,MAAM,GAAA,GAAM,CAAQ,GAAA,EAAa,KAAA,KAAuB;AACtD,EAAA,KAAA,CAAM,YAAA,CAAa,GAAG,CAAC,CAAA,GAAI,KAAA;AAC7B,CAAA;AACA,MAAM,MAAA,GAAS,CAAC,GAAA,KAAsB;AACpC,EAAA,OAAO,KAAA,CAAM,YAAA,CAAa,GAAG,CAAC,CAAA;AAChC,CAAA;AAEA,MAAM,gBAAA,GAAmB,CAAC,CAAA,KAA4B,OAAO,MAAM,QAAA,IAAY,CAAA,CAAE,MAAK,KAAM,EAAA;AAG5F,MAAM,eAAA,GAAkB,CAAC,OAAA,KAA4D;AACnF,EAAA,MAAM,IAAA,GAAO,EAAE,GAAG,OAAA,EAAQ;AAC1B,EAAA,OAAO,KAAK,cAAc,CAAA;AAC1B,EAAA,OAAO,KAAK,cAAc,CAAA;AAC1B,EAAA,OAAO,IAAA;AACT,CAAA;AAEA,MAAM,gBAAA,GAAmB,CAAC,CAAA,KACxB,OAAO,CAAA,KAAM,QAAA,IACb,CAAA,KAAM,IAAA,IACN,aAAA,IAAiB,CAAA,IAChB,CAAA,CAAmC,IAAA,YAAgB,WAAA;AAEtD,MAAM,MAAA,GAAS,CAAQ,SAAA,EAAmB,IAAA,EAAa,QAAwB,UAAA,KAA8B;AAC3G,EAAA,IAAI,CAAC,SAAA,EAAW;AACd,IAAA,cAAA,CAAe,IAAI,IAAA,EAAM,MAAA,EAAQ,MAAA,EAAW,SAAA,CAAU,uCAAuC,CAAC,CAAA;AAC9F,IAAA;AAAA,EACF;AACA,EAAA,GAAA,CAAI,YAAA,CAAa,SAAS,CAAA,EAAG,IAAI,CAAA;AACjC,EAAA,cAAA,CAAe,SAAA,EAAW,IAAA,EAAM,MAAA,EAAQ,UAAU,CAAA;AACpD,CAAA;AAMA,MAAM,0BAAA,GAA6B,OAAO,QAAA,KAAyC;AACjF,EAAA,MAAM,cAAc,QAAA,CAAS,OAAA,CAAQ,IAAI,cAAc,CAAA,EAAG,mBAAkB,IAAK,EAAA;AACjF,EAAA,MAAM,aAAA,GAAgB,QAAA,CAAS,OAAA,CAAQ,GAAA,CAAI,gBAAgB,CAAA;AAG3D,EAAA,IAAI,QAAA,CAAS,MAAA,KAAW,GAAA,IAAO,aAAA,KAAkB,GAAA,EAAK;AACpD,IAAA,OAAO,IAAA;AAAA,EACT;AAGA,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAM,CAAA,EAAG;AAChC,IAAA,OAAO,MAAM,SAAS,IAAA,EAAK;AAAA,EAC7B;AAGA,EAAA,IACE,WAAA,CAAY,UAAA,CAAW,OAAO,CAAA,IAC9B,YAAY,QAAA,CAAS,KAAK,CAAA,IAC1B,WAAA,CAAY,SAAS,YAAY,CAAA,IACjC,WAAA,CAAY,QAAA,CAAS,uBAAuB,CAAA,EAC5C;AACA,IAAA,OAAO,MAAM,SAAS,IAAA,EAAK;AAAA,EAC7B;AAGA,EAAA,MAAM,WAAA,GAAc,MAAM,QAAA,CAAS,WAAA,EAAY;AAC/C,EAAA,OAAO;AAAA,IACL,CAAC,aAAa,GAAG,IAAA;AAAA,IACjB,IAAA,EAAM,WAAA;AAAA,IACN,WAAA;AAAA,IACA,kBAAA,EAAoB,QAAA,CAAS,OAAA,CAAQ,GAAA,CAAI,qBAAqB;AAAA,GAChE;AACF,CAAA;AAGA,MAAM,mBAAmB,CACvB,QAAA,EACA,KACA,KAAA,EACA,aAAA,GAAwB,qBACxB,OAAA,KACY;AACZ,EAAA,IAAI,iBAAiB,IAAA,EAAM;AACzB,IAAA,QAAA,CAAS,MAAA,CAAO,aAAA,EAAe,KAAA,EAAO,KAAA,CAAM,IAAI,CAAA;AAChD,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,IAAI,iBAAiB,IAAA,EAAM;AACzB,IAAA,QAAA,CAAS,MAAA,CAAO,aAAA,EAAe,KAAA,EAAO,MAAM,CAAA;AAC5C,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,IAAI,UAAU,IAAA,IAAQ,KAAA,KAAU,MAAA,IAAa,OAAO,UAAU,QAAA,EAAU;AACtE,IAAA,MAAMA,IAAAA,GAAM,OAAA,oBAAW,IAAI,OAAA,EAAgB;AAC3C,IAAA,IAAIA,IAAAA,CAAI,GAAA,CAAI,KAAK,CAAA,EAAG,OAAO,KAAA;AAC3B,IAAAA,IAAAA,CAAI,IAAI,KAAK,CAAA;AACb,IAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACxB,MAAA,IAAIC,QAAAA,GAAU,KAAA;AACd,MAAA,IAAI,CAAA,GAAI,CAAA;AACR,MAAA,OAAO,CAAA,GAAI,MAAM,MAAA,EAAQ;AACvB,QAAAA,WAAU,gBAAA,CAAiB,QAAA,EAAU,GAAA,GAAM,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,GAAK,MAAA,CAAO,CAAC,CAAA,EAAG,KAAA,CAAM,CAAC,CAAA,EAAG,aAAA,EAAeD,IAAG,CAAA,IAAKC,QAAAA;AACvG,QAAA,CAAA,EAAA;AAAA,MACF;AACA,MAAA,OAAOA,QAAAA;AAAA,IACT;AACA,IAAA,IAAI,OAAA,GAAU,KAAA;AACd,IAAA,MAAM,IAAA,GAAO,MAAA,CAAO,IAAA,CAAK,KAAK,CAAA;AAC9B,IAAA,IAAI,EAAA,GAAK,CAAA;AACT,IAAA,OAAO,EAAA,GAAK,KAAK,MAAA,EAAQ;AACvB,MAAA,MAAM,CAAA,GAAI,KAAK,EAAE,CAAA;AACjB,MAAA,IAAI,OAAO,SAAA,CAAU,cAAA,CAAe,IAAA,CAAK,KAAA,EAAO,CAAC,CAAA,EAAG;AAClD,QAAA,OAAA,GACE,gBAAA;AAAA,UACE,QAAA;AAAA,UACA,GAAA,GAAM,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,GAAK,CAAA;AAAA,UACrB,MAAkC,CAAC,CAAA;AAAA,UACpC,aAAA;AAAA,UACAD;AAAA,SACF,IAAK,OAAA;AAAA,MACT;AACA,MAAA,EAAA,EAAA;AAAA,IACF;AACA,IAAA,OAAO,OAAA;AAAA,EACT;AAEA,EAAA,IAAI,KAAA,KAAU,MAAA,IAAa,KAAA,KAAU,IAAA,EAAM;AACzC,IAAA,MAAM,SAAA,GAAY,KAAA;AAClB,IAAA,QAAA,CAAS,MAAA,CAAO,KAAK,SAA0B,CAAA;AAAA,EACjD;AACA,EAAA,OAAO,KAAA;AACT,CAAA;AAEA,MAAM,6BAA6B,CACjC,OAAA,EACA,aAAA,GAAwB,mBAAA,EACxB,cAAsB,mBAAA,KACF;AACpB,EAAA,IAAI,YAAY,IAAA,IAAQ,OAAA,KAAY,MAAA,IAAa,OAAO,YAAY,QAAA,EAAU;AAC5E,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,MAAM,QAAA,GAAW,IAAI,QAAA,EAAS;AAC9B,EAAA,MAAM,OAAA,uBAAc,OAAA,EAAgB;AACpC,EAAA,MAAM,UAAU,gBAAA,CAAiB,QAAA,EAAU,WAAA,EAAa,OAAA,EAAS,eAAe,OAAO,CAAA;AACvF,EAAA,OAAO,UAAU,QAAA,GAAW,IAAA;AAC9B,CAAA;AAEA,MAAM,cAAA,GAAiB,CAAC,OAAA,GAAkC,EAAC,KACzD,QAAQ,cAAc,CAAA,IAAK,OAAA,CAAQ,cAAc,CAAA,IAAK,kBAAA;AAExD,MAAM,cAAA,GAAiB,CAAC,OAAA,KAA6B;AACnD,EAAA,QAAQ,IAAA;AAAM,IACZ,KAAK,OAAA,YAAmB,QAAA;AACtB,MAAA,OAAO,UAAA;AAAA,IACT,KAAK,OAAA,YAAmB,IAAA;AACtB,MAAA,OAAO,MAAA;AAAA,IACT,KAAK,OAAA,YAAmB,WAAA;AACtB,MAAA,OAAO,aAAA;AAAA,IACT,KAAK,WAAA,CAAY,MAAA,CAAO,OAAO,CAAA;AAC7B,MAAA,OAAO,iBAAA;AAAA,IACT,MAAK,OAAO,cAAA,KAAmB,WAAA,IAAe,OAAA,YAAmB,cAAA;AAC/D,MAAA,OAAO,QAAA;AAAA,IACT,KAAK,OAAO,OAAA,KAAY,QAAA;AACtB,MAAA,OAAO,QAAA;AAAA,IACT;AACE,MAAA,OAAO,QAAA;AAAA;AAEb,CAAA;AAEA,MAAM,aAAA,GAAgB,CAAC,OAAA,KAA+B,IAAA,CAAK,UAAU,OAAO,CAAA;AAC5E,MAAM,sBAAsB,CAAC,OAAA,KAA8C,IAAI,eAAA,CAAgB,OAAO,EAAE,QAAA,EAAS;AACjH,MAAM,aAAA,GAAgB,CAAC,OAAA,KAA+B,MAAA,CAAO,OAAO,CAAA;AAKpE,MAAM,kBAAA,GAAqB,CACzB,OAAA,EACA,OAAA,EACA,OAAA,KACyD;AACzD,EAAA,MAAM,WAAA,GAAc,eAAe,OAAO,CAAA;AAE1C,EAAA,QAAQ,WAAA;AAAa,IACnB,KAAK,UAAA;AACH,MAAA,OAAO,EAAE,MAAM,OAAA,EAAqB,OAAA,EAAS,gBAAgB,EAAE,GAAG,OAAA,EAAS,CAAA,EAAE;AAAA,IAC/E,KAAK,MAAA;AACH,MAAA,OAAO,EAAE,IAAA,EAAM,OAAA,EAAiB,SAAS,EAAE,GAAG,SAAQ,EAAE;AAAA,IAC1D,KAAK,aAAA;AACH,MAAA,OAAO,EAAE,IAAA,EAAM,OAAA,EAAwB,SAAS,EAAE,GAAG,SAAQ,EAAE;AAAA,IACjE,KAAK,iBAAA;AACH,MAAA,OAAO,EAAE,IAAA,EAAM,OAAA,EAAqB,SAAS,EAAE,GAAG,SAAQ,EAAE;AAAA,IAC9D,KAAK,QAAA;AACH,MAAA,OAAO,EAAE,IAAA,EAAM,OAAA,EAAuC,SAAS,EAAE,GAAG,SAAQ,EAAE;AAAA,IAChF,KAAK,QAAA;AACH,MAAA,OAAO,EAAE,IAAA,EAAM,OAAA,EAAmB,SAAS,EAAE,GAAG,SAAQ,EAAE;AAAA,IAC5D,KAAK,QAAA,EAAU;AACb,MAAA,MAAM,CAAA,GAAI,EAAE,GAAG,OAAA,EAAQ;AACvB,MAAA,MAAM,WAAA,GAAc,eAAe,CAAC,CAAA;AACpC,MAAA,MAAM,aAAA,GAAgB,SAAS,qBAAA,IAAyB,mBAAA;AACxD,MAAA,MAAM,WAAA,GAAc,SAAS,WAAA,IAAe,mBAAA;AAE5C,MAAA,IAAI,IAAA;AACJ,MAAA,IAAI,WAAA,CAAY,QAAA,CAAS,kBAAkB,CAAA,EAAG;AAC5C,QAAA,IAAA,GAAO,cAAc,OAAO,CAAA;AAAA,MAC9B,CAAA,MAAA,IAAW,WAAA,CAAY,QAAA,CAAS,mCAAmC,CAAA,EAAG;AACpE,QAAA,IAAA,GAAO,oBAAoB,OAAiC,CAAA;AAAA,MAC9D,CAAA,MAAA,IAAW,YAAY,UAAA,CAAW,OAAO,KAAK,WAAA,CAAY,QAAA,CAAS,KAAK,CAAA,EAAG;AACzE,QAAA,IAAA,GAAO,cAAc,OAAO,CAAA;AAAA,MAC9B,CAAA,MAAA,IAAW,WAAA,CAAY,QAAA,CAAS,qBAAqB,CAAA,EAAG;AACtD,QAAA,MAAM,QAAA,GAAW,0BAAA,CAA2B,OAAA,EAAS,aAAA,EAAe,WAAW,CAAA;AAC/E,QAAA,IAAI,QAAA,EAAU;AACZ,UAAA,OAAO,EAAE,IAAA,EAAM,QAAA,EAAU,OAAA,EAAS,eAAA,CAAgB,CAAC,CAAA,EAAE;AAAA,QACvD;AACA,QAAA,IAAA,GAAO,cAAc,OAAO,CAAA;AAC5B,QAAA,CAAA,CAAE,cAAc,CAAA,GAAI,kBAAA;AAAA,MACtB,CAAA,MAAO;AACL,QAAA,IAAA,GAAO,cAAc,OAAO,CAAA;AAAA,MAC9B;AAEA,MAAA,IAAI,CAAC,CAAA,CAAE,cAAc,KAAK,CAAC,CAAA,CAAE,cAAc,CAAA,EAAG;AAC5C,QAAA,CAAA,CAAE,cAAc,CAAA,GAAI,WAAA;AAAA,MACtB;AACA,MAAA,OAAO,EAAE,IAAA,EAAM,OAAA,EAAS,CAAA,EAAE;AAAA,IAC5B;AAAA,IAEA;AACE,MAAA,OAAO,EAAE,OAAA,EAAS,EAAE,GAAG,SAAQ,EAAE;AAAA;AAEvC,CAAA;AAEA,MAAM,mBAAA,uBAA4C,GAAA,EAAI;AACtD,MAAM,mBAAA,uBAA0B,GAAA,EAA2B;AAE3D,MAAM,UAAA,GAAa,OACjB,SAAA,EACA,OAAA,EACA;AAAA,EACE,GAAA;AAAA,EACA,MAAA;AAAA,EACA,UAAU,EAAC;AAAA,EACX,IAAA,GAAO,MAAA;AAAA,EACP,WAAA,GAAc,aAAA;AAAA,EACd,YAAA;AAAA,EACA,SAAA;AAAA,EACA,qBAAA;AAAA,EACA,WAAA;AAAA,EACA;AACF,CAAA,EACA,WACA,MAAA,KACkB;AAClB,EAAA,MAAM,WAAA,GAAc,OAAO,iBAAA,EAAkB;AAC7C,EAAA,MAAM,iBAAA,GAAoB,cAAc,iBAAA,EAAkB;AAG1D,EAAA,MAAM,kBAAA,GAAqB,iBAAA,KAAsB,QAAA,IAAY,iBAAA,KAAsB,QAAA;AACnF,EAAA,IAAI,CAAC,kBAAA,EAAoB;AACvB,IAAA,MAAM,QAAA,GAAW,mBAAA,CAAoB,GAAA,CAAI,SAAS,CAAA;AAClD,IAAA,IAAI,QAAA,EAAU;AACZ,MAAA,MAAM,MAAA,GAAS,IAAI,SAAS,CAAA;AAC5B,MAAA,IAAI,MAAA,KAAW,MAAA,EAAW,cAAA,CAAe,SAAA,EAAW,QAAQ,MAAM,CAAA;AAClE,MAAA,MAAM,QAAA;AACN,MAAA,MAAM,KAAA,GAAQ,IAAI,SAAS,CAAA;AAC3B,MAAA,IAAI,KAAA,KAAU,MAAA,EAAW,cAAA,CAAe,SAAA,EAAW,OAAO,MAAM,CAAA;AAChE,MAAA;AAAA,IACF;AAAA,EACF;AAEA,EAAA,MAAM,UAAA,GAAa,IAAI,eAAA,EAAgB;AACvC,EAAA,IAAI,SAAA,EAAW;AACb,IAAA,mBAAA,CAAoB,GAAA,CAAI,WAAW,UAAU,CAAA;AAAA,EAC/C;AAEA,EAAA,IAAI,SAAA;AACJ,EAAA,IAAI,SAAA,IAAa,IAAA,IAAQ,SAAA,GAAY,CAAA,EAAG;AACtC,IAAA,SAAA,GAAY,UAAA,CAAW,MAAM,UAAA,CAAW,KAAA,IAAS,SAAS,CAAA;AAAA,EAC5D;AAEA,EAAA,MAAM,WAAW,YAA2B;AAC1C,IAAA,MAAM,YAAA,GAA4B;AAAA,MAChC,MAAA;AAAA,MACA,IAAA;AAAA,MACA,WAAA;AAAA,MACA,QAAQ,UAAA,CAAW;AAAA,KACrB;AAEA,IAAA,IAAI,WAAA,KAAgB,KAAA,IAAS,OAAA,IAAW,IAAA,EAAM;AAC5C,MAAA,MAAM,iBAA2E,EAAC;AAClF,MAAA,IAAI,qBAAA,IAAyB,QAAQ,qBAAA,KAA0B,EAAA;AAC7D,QAAA,cAAA,CAAe,qBAAA,GAAwB,qBAAA;AACzC,MAAA,IAAI,WAAA,IAAe,IAAA,IAAQ,WAAA,KAAgB,EAAA,iBAAmB,WAAA,GAAc,WAAA;AAC5E,MAAA,MAAM,EAAE,MAAM,OAAA,EAAS,gBAAA,KAAqB,kBAAA,CAAmB,OAAA,EAAS,SAAS,cAAc,CAAA;AAC/F,MAAA,IAAI,IAAA,KAAS,MAAA,EAAW,YAAA,CAAa,IAAA,GAAO,IAAA;AAC5C,MAAA,YAAA,CAAa,OAAA,GAAU,gBAAA;AAAA,IACzB,CAAA,MAAO;AACL,MAAA,YAAA,CAAa,OAAA,GAAU,eAAA,CAAgB,EAAE,GAAG,SAAS,CAAA;AAAA,IACvD;AAEA,IAAA,IAAI;AACF,MAAA,IAAI,sBAAsB,QAAA,EAAU;AAClC,QAAA,MAAM,UAAA,GAAa,IAAA,CAAK,GAAA,CAAI,OAAA,IAAW,GAAG,CAAC,CAAA;AAC3C,QAAA,IAAI,aAAA,GAAgB,CAAA;AACpB,QAAA,IAAI,WAAA,GAAkC,QAAA;AACtC,QAAA,IAAI,OAAA,GAAU,CAAA;AACd,QAAA,OAAO,WAAW,UAAA,EAAY;AAC5B,UAAA,IAAI;AACF,YAAA,MAAM,UAAA,GACJ,WAAA,KAAgB,KAAA,GAAQ,eAAA,CAAgB,EAAE,GAAG,YAAA,CAAa,OAAA,EAAS,CAAA,GAAI,YAAA,CAAa,OAAA;AACtF,YAAA,IAAI,gBAAgB,CAAA,EAAG,UAAA,CAAW,OAAO,CAAA,GAAI,SAAS,aAAa,CAAA,CAAA,CAAA;AACnE,YAAA,MAAM,cAAA,GAAiB,MAAM,KAAA,CAAM,GAAA,EAAK,EAAE,GAAG,YAAA,EAAc,OAAA,EAAS,UAAA,EAAY,CAAA;AAChF,YAAA,IAAI,cAAA,CAAe,UAAU,GAAA,EAAK;AAChC,cAAA,WAAA,GAAc,SAAA,CAAU,eAAe,UAAU,CAAA;AACjD,cAAA;AAAA,YACF;AACA,YAAA,IAAI,cAAA,CAAe,WAAW,GAAA,EAAK;AACjC,cAAA,uBAAA,CAAwB,WAAW,MAAM,CAAA;AACzC,cAAA;AAAA,YACF;AACA,YAAA,IAAI,cAAA,CAAe,WAAW,GAAA,EAAK;AACnC,YAAA,MAAM,WAAA,GAAc,cAAA,CAAe,OAAA,CAAQ,GAAA,CAAI,cAAc,CAAA,IAAK,KAAA,CAAA;AAClE,YAAA,MAAM,IAAA,GAA2B;AAAA,cAC/B,kBAAA,EAAoB,cAAA,CAAe,OAAA,CAAQ,GAAA,CAAI,qBAAqB,CAAA,IAAK,IAAA;AAAA,cACzE,GAAI,WAAA,KAAgB,KAAA,CAAA,IAAa,EAAE,WAAA;AAAY,aACjD;AACA,YAAA,IAAI,kBAAkB,CAAA,EAAG,yBAAA,CAA0B,WAAW,IAAA,EAAM,MAAA,EAAQ,eAAe,MAAM,CAAA;AAAA,iBAC5F,0BAAA,CAA2B,SAAA,EAAW,IAAA,EAAM,MAAA,EAAQ,eAAe,MAAM,CAAA;AAC9E,YAAA,MAAM,OAAO,cAAA,CAAe,IAAA;AAC5B,YAAA,IAAI,CAAC,IAAA,EAAM;AACT,cAAA,uBAAA,CAAwB,WAAW,MAAM,CAAA;AACzC,cAAA;AAAA,YACF;AACA,YAAA,MAAM,MAAA,GAAS,KAAK,SAAA,EAAU;AAC9B,YAAA,IAAI,gBAAgB,cAAA,CAAe,MAAA,KAAW,GAAA,IAAO,aAAA,GAAgB,IAAI,aAAA,GAAgB,CAAA;AACzF,YAAA,OAAO,IAAA,EAAM;AACX,cAAA,MAAM,EAAE,IAAA,EAAM,KAAA,EAAM,GAAI,MAAM,OAAO,IAAA,EAAK;AAC1C,cAAA,IAAI,IAAA,EAAM;AACV,cAAA,IAAI,CAAC,KAAA,IAAS,KAAA,CAAM,UAAA,KAAe,CAAA,EAAG;AACtC,cAAA,IAAI,gBAAgB,CAAA,EAAG;AACrB,gBAAA,IAAI,KAAA,CAAM,cAAc,aAAA,EAAe;AACrC,kBAAA,aAAA,IAAiB,KAAA,CAAM,UAAA;AACvB,kBAAA;AAAA,gBACF;AACA,gBAAA,MAAM,MAAA,GAAS,aAAA;AACf,gBAAA,aAAA,GAAgB,CAAA;AAChB,gBAAA,MAAM,IAAA,GAAO,KAAA,CAAM,QAAA,CAAS,MAAM,CAAA;AAClC,gBAAA,yBAAA,CAA0B,SAAA,EAAW,kBAAA,CAAmB,IAAI,CAAA,EAAG,MAAM,CAAA;AACrE,gBAAA,aAAA,IAAiB,IAAA,CAAK,UAAA;AAAA,cACxB,CAAA,MAAO;AACL,gBAAA,yBAAA,CAA0B,SAAA,EAAW,kBAAA,CAAmB,KAAK,CAAA,EAAG,MAAM,CAAA;AACtE,gBAAA,aAAA,IAAiB,KAAA,CAAM,UAAA;AAAA,cACzB;AAAA,YACF;AACA,YAAA;AAAA,UACF,SAAS,GAAA,EAAK;AACZ,YAAA,WAAA,GACG,GAAA,CAAc,SAAS,YAAA,GAAe,SAAA,CAAU,iBAAiB,CAAA,GAAI,SAAA,CAAW,IAAc,OAAO,CAAA;AACxG,YAAA,IAAI,YAAY,UAAA,EAAY;AAAA,UAC9B;AACA,UAAA,OAAA,EAAA;AAAA,QACF;AACA,QAAA,uBAAA,CAAwB,SAAA,EAAW,QAAQ,WAAW,CAAA;AACtD,QAAA;AAAA,MACF;AAEA,MAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,GAAA,EAAK,YAAY,CAAA;AAE9C,MAAA,IAAI,QAAA,CAAS,UAAU,GAAA,EAAK;AAC1B,QAAA,cAAA,CAAe,SAAA,EAAW,MAAM,MAAA,EAAQ,QAAA,CAAS,QAAQ,SAAA,CAAU,QAAA,CAAS,UAAU,CAAC,CAAA;AACvF,QAAA;AAAA,MACF;AAEA,MAAA,IAAI,QAAA,CAAS,WAAW,GAAA,EAAK;AAC3B,QAAA,GAAA,CAAI,YAAA,CAAa,SAAS,CAAA,EAAG,IAAI,CAAA;AACjC,QAAA,cAAA,CAAe,SAAA,EAAW,IAAA,EAAM,MAAA,EAAQ,GAAG,CAAA;AAC3C,QAAA;AAAA,MACF;AAEA,MAAA,MAAM,YAAA,GAAe,MAAM,0BAAA,CAA2B,QAAQ,CAAA;AAE9D,MAAA,IAAI,gBAAA,CAAiB,YAAY,CAAA,EAAG;AAClC,QAAA,oBAAA;AAAA,UACE,SAAA;AAAA,UACA,YAAA,CAAa,IAAA;AAAA,UACb;AAAA,YACE,aAAa,YAAA,CAAa,WAAA;AAAA,YAC1B,kBAAA,EAAoB,aAAa,kBAAA,IAAsB;AAAA,WACzD;AAAA,UACA,MAAA;AAAA,UACA,QAAA,CAAS;AAAA,SACX;AAAA,MACF,CAAA,MAAO;AACL,QAAA,MAAA,CAAO,SAAA,EAAW,YAAA,EAAc,MAAA,EAAQ,QAAA,CAAS,MAAM,CAAA;AAAA,MACzD;AAAA,IACF,SAAS,KAAA,EAAO;AACd,MAAA,IAAK,KAAA,CAAgB,SAAS,YAAA,EAAc;AAC1C,QAAA,cAAA,CAAe,WAAW,IAAA,EAAM,MAAA,EAAQ,MAAA,EAAW,SAAA,CAAU,iBAAiB,CAAC,CAAA;AAC/E,QAAA;AAAA,MACF;AACA,MAAA,MAAM,GAAA,GAAM,KAAA;AACZ,MAAA,cAAA,CAAe,WAAW,IAAA,EAAM,MAAA,EAAQ,QAAW,SAAA,CAAU,GAAA,CAAI,OAAO,CAAC,CAAA;AAAA,IAC3E,CAAA,SAAE;AACA,MAAA,IAAI,SAAA,IAAa,IAAA,EAAM,YAAA,CAAa,SAAS,CAAA;AAC7C,MAAA,IAAI,SAAA,EAAW;AACb,QAAA,mBAAA,CAAoB,OAAO,SAAS,CAAA;AAAA,MACtC;AACA,MAAA,mBAAA,CAAoB,OAAO,SAAS,CAAA;AAAA,IACtC;AAAA,EACF,CAAA,GAAG;AAEH,EAAA,mBAAA,CAAoB,GAAA,CAAI,WAAW,OAAO,CAAA;AAC1C,EAAA,MAAM,OAAA;AACR,CAAA;AAEA,MAAM,SAAA,GAAY,CAAQ,WAAA,KAA0C;AAClE,EAAA,MAAM,EAAE,SAAA,EAAW,IAAA,EAAM,SAAS,OAAA,EAAS,SAAA,EAAW,QAAO,GAAI,WAAA;AACjE,EAAA,MAAM,iBAAA,GAAoB,YAAY,SAAA,IAAa,EAAA;AAEnD,EAAA,IAAI,CAAC,gBAAA,CAAiB,IAAI,CAAA,EAAG;AAC3B,IAAA,cAAA,CAAe,mBAAmB,IAAA,EAAM,MAAA,EAAQ,MAAA,EAAW,SAAA,CAAU,mCAAmC,CAAC,CAAA;AACzG,IAAA;AAAA,EACF;AACA,EAAA,MAAM,SAAA,GAAY,aAAa,IAAI,CAAA;AAEnC,EAAA,IAAI,cAAc,QAAA,EAAU;AAC1B,IAAA,IAAI,SAAA,WAAoB,SAAS,CAAA;AACjC,IAAA;AAAA,EACF;AAEA,EAAA,IAAI,CAAC,gBAAA,CAAiB,SAAS,CAAA,EAAG;AAChC,IAAA,cAAA,CAAe,mBAAmB,IAAA,EAAM,MAAA,EAAQ,MAAA,EAAW,SAAA,CAAU,wCAAwC,CAAC,CAAA;AAC9G,IAAA;AAAA,EACF;AACA,EAAA,MAAM,cAAA,GAAiB,aAAa,SAAS,CAAA;AAE7C,EAAA,IAAI,cAAc,KAAA,EAAO;AACvB,IAAA,MAAM,aAAA,GAAgB,IAAI,cAAc,CAAA;AACxC,IAAA,IAAI,kBAAkB,MAAA,EAAW;AAC/B,MAAA,cAAA,CAAe,gBAAgB,IAAA,EAAM,MAAA,EAAQ,MAAA,EAAW,SAAA,CAAU,YAAY,CAAC,CAAA;AAAA,IACjF,CAAA,MAAO;AACL,MAAA,cAAA,CAAe,cAAA,EAAgB,eAAe,MAAM,CAAA;AAAA,IACtD;AAAA,EACF,CAAA,MAAA,IAAW,cAAc,KAAA,EAAO;AAC9B,IAAA,IAAI,CAAC,OAAA,EAAS;AACZ,MAAA,IAAI,WAAW,IAAA,EAAM;AACnB,QAAA,cAAA;AAAA,UACE,iBAAA;AAAA,UACA,IAAA;AAAA,UACA,MAAA;AAAA,UACA,MAAA;AAAA,UACA,UAAU,8CAA8C;AAAA,SAC1D;AACA,QAAA;AAAA,MACF;AACA,MAAA,GAAA,CAAI,gBAAgB,OAAO,CAAA;AAAA,IAC7B,CAAA,MAAO;AACL,MAAA,MAAM,WAAA,GAAc,YAAA,CAAa,OAAA,CAAQ,MAAM,CAAA;AAC/C,MAAA,IAAI,WAAA,KAAgB,KAAA,IAAS,OAAA,IAAW,IAAA,EAAM;AAC5C,QAAA,cAAA;AAAA,UACE,iBAAA;AAAA,UACA,IAAA;AAAA,UACA,MAAA;AAAA,UACA,MAAA;AAAA,UACA,UAAU,8DAA8D;AAAA,SAC1E;AACA,QAAA;AAAA,MACF;AACA,MAAA,KAAK,WAAW,cAAA,EAAgB,OAAA,IAAW,IAAA,EAAM,OAAA,EAAS,WAAW,MAAM,CAAA;AAAA,IAC7E;AAAA,EACF,CAAA,MAAA,IAAW,cAAc,QAAA,EAAU;AACjC,IAAA,MAAA,CAAO,cAAc,CAAA;AACrB,IAAA,cAAA,CAAe,cAAA,EAAgB,EAAE,OAAA,EAAS,IAAA,IAAQ,MAAM,CAAA;AAAA,EAC1D;AACF,CAAA;AAEA,MAAM,QAAA,GAAW,CAAC,SAAA,KAA4B;AAC5C,EAAA,MAAM,UAAA,GAAa,mBAAA,CAAoB,GAAA,CAAI,SAAS,CAAA;AACpD,EAAA,IAAI,UAAA,EAAY;AACd,IAAA,UAAA,CAAW,KAAA,EAAM;AACjB,IAAA,mBAAA,CAAoB,OAAO,SAAS,CAAA;AAAA,EACtC;AACF,CAAA;AAOA,SAAA,GAAY,CAAC,KAAA,KAAiD;AAC5D,EAAA,MAAM,UAAU,KAAA,CAAM,IAAA;AACtB,EAAA,IAAI,OAAA,KAAY,IAAA,IAAQ,OAAO,OAAA,KAAY,QAAA,EAAU;AACrD,EAAA,MAAM,cAAc,OAAA,CAAQ,WAAA;AAC5B,EAAA,IAAI,WAAA,KAAgB,MAAA,EAAW,SAAA,CAAU,WAAW,CAAA;AACtD,CAAA;;;;"}
1
+ {"version":3,"file":"api.worker.js","sources":["../../../src/shared/workers/api/api.worker.ts"],"sourcesContent":["/// <reference lib=\"webworker\" />\r\n\r\nimport type {\r\n AbortControllers,\r\n BinaryParseResult,\r\n BinaryResponseMeta,\r\n DataRequest,\r\n WorkerApiRequest,\r\n WorkerErrorPayload,\r\n WorkerMessageData,\r\n} from \"../../types/types\";\r\n\r\nexport const BINARY_MARKER = Symbol.for(\"WorkerApiBinary\");\r\n\r\nconst DEFAULT_FILES_FIELD = \"Files\";\r\nconst EMPTY_BUFFER = new ArrayBuffer(0);\r\nconst NO_ERROR: WorkerErrorPayload = { message: \"\" };\r\nconst DEFAULT_ERROR = \"An error occurred\";\r\n\r\nconst callerResponse = (\r\n cacheName: string,\r\n data: unknown,\r\n hookId?: string | null,\r\n httpStatus?: number,\r\n error: WorkerErrorPayload = NO_ERROR,\r\n): void => {\r\n self.postMessage({\r\n cacheName,\r\n data: error.message !== \"\" ? null : (data ?? null),\r\n hookId,\r\n httpStatus,\r\n error,\r\n });\r\n};\r\n\r\nconst makeError = (message: string): WorkerErrorPayload => ({ message });\r\n\r\n/**\r\n * Binary response - transferred via postMessage, not stored in cache.\r\n * Client receives ArrayBuffer + meta for reconstruction (e.g. new Blob([data], { type })).\r\n * Always sends a message; empty/zero-length body uses an empty ArrayBuffer so the client does not hang.\r\n */\r\nconst callerResponseBinary = (\r\n cacheName: string,\r\n data: ArrayBuffer,\r\n meta: BinaryResponseMeta,\r\n hookId?: string | null,\r\n httpStatus?: number,\r\n error: WorkerErrorPayload = NO_ERROR,\r\n): void => {\r\n const buffer = data.byteLength ? data : EMPTY_BUFFER;\r\n const payload = { cacheName, data: buffer, meta, hookId, httpStatus, error };\r\n self.postMessage(payload, buffer.byteLength > 0 ? [buffer] : []);\r\n};\r\n\r\nconst callerResponseStreamStart = (\r\n cacheName: string,\r\n meta: BinaryResponseMeta | null,\r\n hookId?: string | null,\r\n httpStatus?: number,\r\n error: WorkerErrorPayload = NO_ERROR,\r\n): void => {\r\n self.postMessage({\r\n cacheName,\r\n stream: \"start\",\r\n meta,\r\n hookId,\r\n httpStatus,\r\n error,\r\n });\r\n};\r\n\r\nconst callerResponseStreamResume = (\r\n cacheName: string,\r\n meta: BinaryResponseMeta | null,\r\n hookId?: string | null,\r\n httpStatus?: number,\r\n error: WorkerErrorPayload = NO_ERROR,\r\n): void => {\r\n self.postMessage({\r\n cacheName,\r\n stream: \"resume\",\r\n meta,\r\n hookId,\r\n httpStatus,\r\n error,\r\n });\r\n};\r\n\r\nconst callerResponseStreamChunk = (\r\n cacheName: string,\r\n data: ArrayBuffer,\r\n hookId?: string | null,\r\n error: WorkerErrorPayload = NO_ERROR,\r\n): void => {\r\n const buffer = data.byteLength ? data : EMPTY_BUFFER;\r\n const payload = { cacheName, stream: \"chunk\", data: buffer, hookId, error };\r\n self.postMessage(payload, buffer.byteLength > 0 ? [buffer] : []);\r\n};\r\n\r\nconst callerResponseStreamEnd = (\r\n cacheName: string,\r\n hookId?: string | null,\r\n error: WorkerErrorPayload = NO_ERROR,\r\n): void => {\r\n self.postMessage({ cacheName, stream: \"end\", hookId, error });\r\n};\r\n\r\nconst transferableBuffer = (view: Uint8Array): ArrayBuffer =>\r\n view.byteOffset === 0 && view.byteLength === view.buffer.byteLength\r\n ? (view.buffer as ArrayBuffer)\r\n : view.slice(0).buffer;\r\n\r\nconst store = Object.create(null) as Record<string, unknown>;\r\nconst normalizeKey = (key: string) => key.toLocaleLowerCase();\r\nconst get = <TData>(key: string): TData | undefined => store[normalizeKey(key)] as TData | undefined;\r\nconst set = <TData>(key: string, value: TData): void => {\r\n store[normalizeKey(key)] = value;\r\n};\r\nconst remove = (key: string): void => {\r\n delete store[normalizeKey(key)];\r\n};\r\n\r\nconst isNonEmptyString = (v: unknown): v is string => typeof v === \"string\" && v.trim() !== \"\";\r\n\r\n/** Returns headers without Content-Type (either casing). Use when FormData sets it automatically. */\r\nconst omitContentType = (headers: Record<string, string>): Record<string, string> => {\r\n const rest = { ...headers };\r\n delete rest[\"Content-Type\"];\r\n delete rest[\"content-type\"];\r\n return rest;\r\n};\r\n\r\nconst isBinaryResponse = (r: unknown): r is BinaryParseResult =>\r\n typeof r === \"object\" &&\r\n r !== null &&\r\n BINARY_MARKER in r &&\r\n (r as unknown as BinaryParseResult).data instanceof ArrayBuffer;\r\n\r\nconst commit = <TData>(cacheName: string, data: TData, hookId?: string | null, httpStatus?: number): void => {\r\n if (!cacheName) {\r\n callerResponse(\"\", null, hookId, undefined, makeError(\"Invalid commit: cacheName is required\"));\r\n return;\r\n }\r\n set(cacheName, data); // set() normalizes internally - avoid double-normalizing here\r\n callerResponse(cacheName, data, hookId, httpStatus);\r\n};\r\n\r\n/**\r\n * Parses response based on content-type.\r\n * Returns parsed data for JSON/text, or binary result with BINARY_MARKER, data (ArrayBuffer), contentType, contentDisposition.\r\n */\r\nconst parseResponseByContentType = async (response: Response): Promise<unknown> => {\r\n const contentType = response.headers.get(\"content-type\")?.toLocaleLowerCase() || \"\";\r\n const contentLength = response.headers.get(\"content-length\");\r\n\r\n // No content\r\n if (response.status === 204 || contentLength === \"0\") {\r\n return null;\r\n }\r\n\r\n // JSON types - read as text first since chunked responses (no Content-Length) can still be\r\n // empty; parsing \"\" directly with response.json() throws even though an empty JSON body is\r\n // a legitimate, recoverable case rather than a real parse failure.\r\n if (contentType.includes(\"json\")) {\r\n const text = await response.text();\r\n if (text.trim() === \"\") {\r\n return null;\r\n }\r\n return JSON.parse(text);\r\n }\r\n\r\n // Text-based types\r\n if (\r\n contentType.startsWith(\"text/\") ||\r\n contentType.includes(\"xml\") ||\r\n contentType.includes(\"javascript\") ||\r\n contentType.includes(\"x-www-form-urlencoded\")\r\n ) {\r\n return await response.text();\r\n }\r\n\r\n // Binary types (known or fallback) - use arrayBuffer for zero-copy transfer to client\r\n const arrayBuffer = await response.arrayBuffer();\r\n return {\r\n [BINARY_MARKER]: true as const,\r\n data: arrayBuffer,\r\n contentType,\r\n contentDisposition: response.headers.get(\"content-disposition\"),\r\n };\r\n};\r\n\r\n/** File/Blob use fileFieldName (default \"Files\"); all other fields use property name (key). */\r\nconst appendToFormData = (\r\n formData: FormData,\r\n key: string,\r\n value: unknown,\r\n fileFieldName: string = DEFAULT_FILES_FIELD,\r\n visited?: WeakSet<object>,\r\n): boolean => {\r\n if (value instanceof File) {\r\n formData.append(fileFieldName, value, value.name);\r\n return true;\r\n }\r\n\r\n if (value instanceof Blob) {\r\n formData.append(fileFieldName, value, \"blob\");\r\n return true;\r\n }\r\n\r\n if (value !== null && value !== undefined && typeof value === \"object\") {\r\n const set = visited ?? new WeakSet<object>();\r\n if (set.has(value)) return false;\r\n set.add(value);\r\n if (Array.isArray(value)) {\r\n let hasFile = false;\r\n let i = 0;\r\n while (i < value.length) {\r\n hasFile = appendToFormData(formData, key ? `${key}.${i}` : String(i), value[i], fileFieldName, set) || hasFile;\r\n i++;\r\n }\r\n return hasFile;\r\n }\r\n let hasFile = false;\r\n const keys = Object.keys(value);\r\n let ki = 0;\r\n while (ki < keys.length) {\r\n const k = keys[ki] as string;\r\n hasFile =\r\n appendToFormData(\r\n formData,\r\n key ? `${key}.${k}` : k,\r\n (value as Record<string, unknown>)[k],\r\n fileFieldName,\r\n set,\r\n ) || hasFile;\r\n\r\n ki++;\r\n }\r\n return hasFile;\r\n }\r\n\r\n if (value !== undefined && value !== null) {\r\n const primitive = value as string | number | boolean | bigint;\r\n formData.append(key, String(primitive));\r\n }\r\n return false;\r\n};\r\n\r\nconst createFormDataIfBlobOrFile = (\r\n payload: unknown,\r\n fileFieldName: string = DEFAULT_FILES_FIELD,\r\n formDataKey: string = DEFAULT_FILES_FIELD,\r\n): FormData | null => {\r\n if (payload === null || payload === undefined || typeof payload !== \"object\") {\r\n return null;\r\n }\r\n\r\n const formData = new FormData();\r\n const visited = new WeakSet<object>();\r\n const hasFile = appendToFormData(formData, formDataKey, payload, fileFieldName, visited);\r\n return hasFile ? formData : null;\r\n};\r\n\r\nconst getContentType = (headers: Record<string, string> = {}): string =>\r\n headers[\"Content-Type\"] || headers[\"content-type\"] || \"application/json\";\r\n\r\nconst getPayloadType = (payload: unknown): string => {\r\n switch (true) {\r\n case payload instanceof FormData:\r\n return \"formdata\";\r\n case payload instanceof Blob:\r\n return \"blob\";\r\n case payload instanceof ArrayBuffer:\r\n return \"arraybuffer\";\r\n case ArrayBuffer.isView(payload):\r\n return \"arraybufferview\";\r\n case typeof ReadableStream !== \"undefined\" && payload instanceof ReadableStream:\r\n return \"stream\";\r\n case typeof payload === \"string\":\r\n return \"string\";\r\n default:\r\n return \"object\";\r\n }\r\n};\r\n\r\nconst buildJsonBody = (payload: unknown): BodyInit => JSON.stringify(payload);\r\n\r\n/**\r\n * Builds a URL-encoded body from a flat object. Values must be primitives (string/number/boolean) -\r\n * nested objects/arrays cannot be represented and throw rather than silently serializing to\r\n * \"[object Object]\". null/undefined values are skipped.\r\n */\r\nconst buildUrlEncodedBody = (payload: Record<string, unknown>): BodyInit => {\r\n const params = new URLSearchParams();\r\n const keys = Object.keys(payload);\r\n let i = 0;\r\n while (i < keys.length) {\r\n const key = keys[i] as string;\r\n const value = payload[key];\r\n if (value !== null && value !== undefined) {\r\n if (typeof value === \"object\") {\r\n throw new Error(`Cannot url-encode non-primitive value for key \"${key}\"`);\r\n }\r\n //params.append(key, String(value as string | number | boolean | bigint));\r\n // params.append(key, String(value));\r\n params.append(key, (value as string | number | boolean | bigint).toString());\r\n }\r\n i++;\r\n }\r\n return params.toString();\r\n};\r\n\r\nconst buildTextBody = (payload: unknown): BodyInit => String(payload);\r\n\r\n/**\r\n * Builds body and headers for fetch. Each branch handles one payload type; add new cases here for new body types.\r\n *\r\n * Object payloads are always checked for nested File/Blob values first (createFormDataIfBlobOrFile).\r\n * If any are found, the request is automatically sent as multipart/form-data and any Content-Type\r\n * header the caller passed in is overwritten/omitted - the browser must set its own Content-Type\r\n * (including the multipart boundary) for the body to be parsed correctly server-side. Callers no\r\n * longer need to manually set Content-Type: multipart/form-data to get file uploads to work; it is\r\n * detected automatically, including files nested arbitrarily deep in the payload (e.g.\r\n * { photos: File[], videos: File[] }). Every File/Blob found is appended under the same\r\n * fileFieldName (default \"Files\", override via formDataFileFieldName) regardless of which property\r\n * it came from - this matches the common API convention of collecting all uploaded files under one\r\n * repeated field name. If a caller does pass Content-Type: multipart/form-data but the payload has\r\n * no actual File/Blob in it, we fall back to JSON and correct the header rather than sending a JSON\r\n * body mislabeled as multipart.\r\n */\r\nconst prepareRequestBody = (\r\n payload: unknown,\r\n headers: Record<string, string>,\r\n options?: { formDataFileFieldName?: string; formDataKey?: string },\r\n): { body?: BodyInit; headers: Record<string, string> } => {\r\n const payloadType = getPayloadType(payload);\r\n\r\n switch (payloadType) {\r\n case \"formdata\":\r\n return {\r\n body: payload as FormData,\r\n headers: omitContentType({ ...headers }),\r\n };\r\n case \"blob\":\r\n return { body: payload as Blob, headers: { ...headers } };\r\n case \"arraybuffer\":\r\n return { body: payload as ArrayBuffer, headers: { ...headers } };\r\n case \"arraybufferview\":\r\n return { body: payload as BodyInit, headers: { ...headers } };\r\n case \"stream\":\r\n return {\r\n body: payload as ReadableStream<Uint8Array>,\r\n headers: { ...headers },\r\n };\r\n case \"string\":\r\n return { body: payload as string, headers: { ...headers } };\r\n case \"object\": {\r\n const fileFieldName = options?.formDataFileFieldName ?? DEFAULT_FILES_FIELD;\r\n const formDataKey = options?.formDataKey ?? DEFAULT_FILES_FIELD;\r\n\r\n // Auto-detect File/Blob anywhere in the payload (including nested, e.g. { photos: File[] }).\r\n // If found, always send as multipart/form-data - Content-Type is omitted so the browser\r\n // sets it itself (including the boundary).\r\n const formData = createFormDataIfBlobOrFile(payload, fileFieldName, formDataKey);\r\n if (formData) {\r\n return { body: formData, headers: omitContentType({ ...headers }) };\r\n }\r\n\r\n const h = { ...headers };\r\n let contentType = getContentType(h);\r\n\r\n // No File/Blob found: a declared multipart/form-data would produce an invalid body\r\n // (JSON string labeled as multipart), so fall back to JSON and fix the header.\r\n if (contentType.includes(\"multipart/form-data\")) {\r\n contentType = \"application/json\";\r\n delete h[\"Content-Type\"];\r\n delete h[\"content-type\"];\r\n }\r\n\r\n let body: BodyInit;\r\n if (contentType.includes(\"application/x-www-form-urlencoded\")) {\r\n body = buildUrlEncodedBody(payload as Record<string, unknown>);\r\n } else if (contentType.startsWith(\"text/\") || contentType.includes(\"xml\")) {\r\n body = buildTextBody(payload);\r\n } else {\r\n body = buildJsonBody(payload);\r\n }\r\n\r\n if (!h[\"Content-Type\"] && !h[\"content-type\"]) {\r\n h[\"Content-Type\"] = contentType;\r\n }\r\n return { body, headers: h };\r\n }\r\n\r\n default:\r\n return { headers: { ...headers } };\r\n }\r\n};\r\n\r\nconst inFlightControllers: AbortControllers = new Map();\r\nconst inFlightByCacheName = new Map<string, Promise<void>>();\r\n\r\nconst apiRequest = async <TData>(\r\n cacheName: string,\r\n payload: TData | FormData | null,\r\n {\r\n url,\r\n method,\r\n headers = {},\r\n mode = \"cors\",\r\n credentials = \"same-origin\",\r\n responseType,\r\n timeoutMs,\r\n formDataFileFieldName,\r\n formDataKey,\r\n retries,\r\n }: WorkerApiRequest,\r\n requestId?: string | null,\r\n hookId?: string | null,\r\n): Promise<void> => {\r\n const methodLower = method.toLocaleLowerCase();\r\n const responseTypeLower = responseType?.toLocaleLowerCase();\r\n\r\n // Early return (cached then fresh) allowed for any HTTP method, except when response is binary or streaming.\r\n const skipInFlightDedupe = responseTypeLower === \"binary\" || responseTypeLower === \"stream\";\r\n if (!skipInFlightDedupe) {\r\n const existing = inFlightByCacheName.get(cacheName);\r\n if (existing) {\r\n // Joining an in-flight request by cacheName: this caller does not get its own\r\n // AbortController registered (only the original request's requestId is tracked in\r\n // inFlightControllers below), so calling cancel with this caller's requestId is a no-op -\r\n // the original in-flight request keeps running for whoever else is awaiting it too.\r\n const cached = get(cacheName);\r\n if (cached !== undefined) callerResponse(cacheName, cached, hookId);\r\n await existing;\r\n const fresh = get(cacheName);\r\n if (fresh !== undefined) callerResponse(cacheName, fresh, hookId);\r\n return;\r\n }\r\n }\r\n\r\n const controller = new AbortController();\r\n if (requestId) {\r\n inFlightControllers.set(requestId, controller);\r\n }\r\n\r\n let timeoutId: ReturnType<typeof setTimeout> | undefined;\r\n if (timeoutMs != null && timeoutMs > 0) {\r\n timeoutId = setTimeout(() => controller.abort(), timeoutMs);\r\n }\r\n\r\n const promise = (async (): Promise<void> => {\r\n const fetchOptions: RequestInit = {\r\n method,\r\n mode,\r\n credentials,\r\n signal: controller.signal,\r\n };\r\n\r\n try {\r\n if (methodLower !== \"get\" && payload != null) {\r\n const prepareOptions: {\r\n formDataFileFieldName?: string;\r\n formDataKey?: string;\r\n } = {};\r\n if (formDataFileFieldName != null && formDataFileFieldName !== \"\")\r\n prepareOptions.formDataFileFieldName = formDataFileFieldName;\r\n if (formDataKey != null && formDataKey !== \"\") prepareOptions.formDataKey = formDataKey;\r\n // Body preparation (JSON.stringify, FormData building, url-encoding) can throw\r\n // synchronously (e.g. circular references, non-primitive url-encoded values). This must\r\n // stay inside the try/catch below - a throw here previously rejected this IIFE with no\r\n // handler, left the caller waiting on a postMessage that never arrives, and skipped the\r\n // finally block, permanently leaking this cacheName/requestId from the in-flight maps.\r\n const { body, headers: processedHeaders } = prepareRequestBody(payload, headers, prepareOptions);\r\n if (body !== undefined) fetchOptions.body = body;\r\n fetchOptions.headers = processedHeaders;\r\n } else {\r\n fetchOptions.headers = omitContentType({ ...headers });\r\n }\r\n\r\n if (responseTypeLower === \"stream\") {\r\n const maxRetries = Math.min(retries ?? 3, 5);\r\n let bytesReceived = 0;\r\n let streamError: WorkerErrorPayload = NO_ERROR;\r\n let attempt = 0;\r\n while (attempt <= maxRetries) {\r\n try {\r\n const reqHeaders =\r\n methodLower === \"get\" ? omitContentType({ ...fetchOptions.headers }) : { ...fetchOptions.headers };\r\n if (bytesReceived > 0) reqHeaders[\"Range\"] = `bytes=${bytesReceived}-`;\r\n const streamResponse = await fetch(url, {\r\n ...fetchOptions,\r\n headers: reqHeaders,\r\n });\r\n if (streamResponse.status >= 400) {\r\n streamError = makeError(streamResponse.statusText || DEFAULT_ERROR);\r\n break;\r\n }\r\n if (streamResponse.status === 204) {\r\n callerResponseStreamEnd(cacheName, hookId);\r\n return;\r\n }\r\n if (streamResponse.status === 416) break;\r\n const contentType = streamResponse.headers.get(\"content-type\") ?? undefined;\r\n const meta: BinaryResponseMeta = {\r\n contentDisposition: streamResponse.headers.get(\"content-disposition\") ?? null,\r\n ...(contentType !== undefined && { contentType }),\r\n };\r\n if (bytesReceived === 0) callerResponseStreamStart(cacheName, meta, hookId, streamResponse.status);\r\n else callerResponseStreamResume(cacheName, meta, hookId, streamResponse.status);\r\n const body = streamResponse.body;\r\n if (!body) {\r\n callerResponseStreamEnd(cacheName, hookId);\r\n return;\r\n }\r\n const reader = body.getReader();\r\n let skipRemaining = streamResponse.status === 200 && bytesReceived > 0 ? bytesReceived : 0;\r\n while (true) {\r\n const { done, value } = await reader.read();\r\n if (done) break;\r\n if (!value || value.byteLength === 0) continue;\r\n if (skipRemaining > 0) {\r\n if (value.byteLength <= skipRemaining) {\r\n skipRemaining -= value.byteLength;\r\n continue;\r\n }\r\n const offset = skipRemaining;\r\n skipRemaining = 0;\r\n const tail = value.subarray(offset);\r\n callerResponseStreamChunk(cacheName, transferableBuffer(tail), hookId);\r\n bytesReceived += tail.byteLength;\r\n } else {\r\n callerResponseStreamChunk(cacheName, transferableBuffer(value), hookId);\r\n bytesReceived += value.byteLength;\r\n }\r\n }\r\n break;\r\n } catch (err) {\r\n streamError =\r\n (err as Error).name === \"AbortError\" ? makeError(\"Request aborted\") : makeError((err as Error).message);\r\n if (attempt === maxRetries) break;\r\n }\r\n attempt++;\r\n }\r\n callerResponseStreamEnd(cacheName, hookId, streamError);\r\n return;\r\n }\r\n\r\n const response = await fetch(url, fetchOptions);\r\n\r\n if (response.status >= 400) {\r\n callerResponse(cacheName, null, hookId, response.status, makeError(response.statusText || DEFAULT_ERROR));\r\n return;\r\n }\r\n\r\n if (response.status === 204) {\r\n set(cacheName, null); // set() normalizes internally - avoid double-normalizing here\r\n callerResponse(cacheName, null, hookId, 204);\r\n return;\r\n }\r\n\r\n const responseData = await parseResponseByContentType(response);\r\n\r\n if (isBinaryResponse(responseData)) {\r\n callerResponseBinary(\r\n cacheName,\r\n responseData.data,\r\n {\r\n contentType: responseData.contentType,\r\n contentDisposition: responseData.contentDisposition ?? null,\r\n },\r\n hookId,\r\n response.status,\r\n );\r\n } else {\r\n commit(cacheName, responseData, hookId, response.status);\r\n }\r\n } catch (error) {\r\n if ((error as Error).name === \"AbortError\") {\r\n callerResponse(cacheName, null, hookId, undefined, makeError(\"Request aborted\"));\r\n return;\r\n }\r\n const err = error as Error;\r\n callerResponse(cacheName, null, hookId, undefined, makeError(err.message));\r\n } finally {\r\n if (timeoutId != null) clearTimeout(timeoutId);\r\n if (requestId) {\r\n inFlightControllers.delete(requestId);\r\n }\r\n inFlightByCacheName.delete(cacheName);\r\n }\r\n })();\r\n\r\n if (!skipInFlightDedupe) {\r\n inFlightByCacheName.set(cacheName, promise);\r\n }\r\n\r\n await promise;\r\n};\r\n\r\nconst onRequest = <TData>(dataRequest: DataRequest<TData>): void => {\r\n const { cacheName, type, payload, request, requestId, hookId } = dataRequest;\r\n const responseCacheName = dataRequest.cacheName ?? \"\";\r\n\r\n if (!isNonEmptyString(type)) {\r\n callerResponse(responseCacheName, null, hookId, undefined, makeError(\"Invalid request: type is required\"));\r\n return;\r\n }\r\n const lowerType = normalizeKey(type);\r\n\r\n if (lowerType === \"cancel\") {\r\n if (requestId) onCancel(requestId);\r\n return;\r\n }\r\n\r\n if (!isNonEmptyString(cacheName)) {\r\n callerResponse(responseCacheName, null, hookId, undefined, makeError(\"Invalid request: cacheName is required\"));\r\n return;\r\n }\r\n const lowerCacheName = normalizeKey(cacheName);\r\n\r\n if (lowerType === \"get\") {\r\n const requestedData = get(lowerCacheName);\r\n if (requestedData === undefined) {\r\n callerResponse(lowerCacheName, null, hookId, undefined, makeError(\"Cache miss\"));\r\n } else {\r\n callerResponse(lowerCacheName, requestedData, hookId);\r\n }\r\n } else if (lowerType === \"set\") {\r\n if (!request) {\r\n if (payload == null) {\r\n callerResponse(\r\n responseCacheName,\r\n null,\r\n hookId,\r\n undefined,\r\n makeError(\"Invalid request: payload is required for set\"),\r\n );\r\n return;\r\n }\r\n set(lowerCacheName, payload);\r\n } else {\r\n const methodLower = normalizeKey(request.method);\r\n if (methodLower !== \"get\" && payload == null) {\r\n callerResponse(\r\n responseCacheName,\r\n null,\r\n hookId,\r\n undefined,\r\n makeError(\"Invalid request: payload is required for non-GET API request\"),\r\n );\r\n return;\r\n }\r\n void apiRequest(lowerCacheName, payload ?? null, request, requestId, hookId);\r\n }\r\n } else if (lowerType === \"delete\") {\r\n remove(lowerCacheName);\r\n callerResponse(lowerCacheName, { deleted: true }, hookId);\r\n }\r\n};\r\n\r\n/**\r\n * Aborts the in-flight request registered under requestId, if any. Note: if that request was\r\n * joined/deduped by another caller via inFlightByCacheName (same cacheName, request already in\r\n * flight), this only aborts the original request's controller - the joined caller was never\r\n * registered with its own controller/requestId, so it has nothing to cancel independently.\r\n */\r\nconst onCancel = (requestId: string): void => {\r\n const controller = inFlightControllers.get(requestId);\r\n if (controller) {\r\n controller.abort();\r\n inFlightControllers.delete(requestId);\r\n }\r\n};\r\n\r\n/**\r\n * Incoming messages from the main thread. Expects payload shape { dataRequest?: DataRequest }.\r\n * Responses via postMessage: { cacheName, data?, meta?, hookId?, httpStatus?, error }.\r\n * error is always present: { message: \"\" } when no error, { message: \"...\" } when the request failed.\r\n */\r\nonmessage = (event: MessageEvent<WorkerMessageData>): void => {\r\n const payload = event.data;\r\n if (payload === null || typeof payload !== \"object\") return;\r\n const dataRequest = payload.dataRequest;\r\n if (dataRequest !== undefined) onRequest(dataRequest);\r\n};\r\n"],"names":["set","hasFile"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mainframework/api-request-worker",
3
- "version": "1.0.2",
3
+ "version": "1.0.3",
4
4
  "description": "Offloads API requests and application state to a Web Worker to keep the UI thread fast.",
5
5
  "type": "module",
6
6
  "main": "./dist/shared/output/vanilla.js",
@@ -65,30 +65,30 @@
65
65
  "license": "MIT",
66
66
  "devDependencies": {
67
67
  "@eslint/js": "^10.0.1",
68
- "@mainframework/is-deep-equal": "^1.0.10",
68
+ "@mainframework/is-deep-equal": "^1.0.11",
69
69
  "@rollup/plugin-node-resolve": "^16.0.3",
70
70
  "@rollup/plugin-replace": "^6.0.3",
71
71
  "@testing-library/dom": "^10.4.1",
72
72
  "@testing-library/react": "^16.3.2",
73
- "@types/react": "^19.2.14",
74
- "@typescript-eslint/eslint-plugin": "^8.59.2",
75
- "@typescript-eslint/parser": "^8.59.2",
76
- "esbuild": "^0.28.0",
77
- "eslint": "10.3.0",
73
+ "@types/react": "^19.2.17",
74
+ "@typescript-eslint/eslint-plugin": "^8.62.1",
75
+ "@typescript-eslint/parser": "^8.62.1",
76
+ "esbuild": "^0.28.1",
77
+ "eslint": "10.6.0",
78
78
  "eslint-plugin-react": "^7.37.5",
79
79
  "eslint-plugin-react-hooks": "^7.1.1",
80
- "globals": "^17.6.0",
80
+ "globals": "^17.7.0",
81
81
  "husky": "^9.1.7",
82
- "lint-staged": "^17.0.2",
83
- "prettier": "^3.8.3",
84
- "react": "^19.2.6",
85
- "react-dom": "^19.2.6",
82
+ "lint-staged": "^17.0.8",
83
+ "prettier": "^3.9.4",
84
+ "react": "^19.2.7",
85
+ "react-dom": "^19.2.7",
86
86
  "rimraf": "^6.1.3",
87
- "rollup": "^4.60.3",
87
+ "rollup": "^4.62.2",
88
88
  "rollup-plugin-dts": "^6.4.1",
89
89
  "rollup-plugin-esbuild": "^6.2.1",
90
90
  "tslib": "^2.8.1",
91
91
  "typescript": "^6.0.3",
92
- "typescript-eslint": "^8.59.2"
92
+ "typescript-eslint": "^8.62.1"
93
93
  }
94
94
  }