@moyodb/sdk 1.3.0 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/CONTRIBUTING.md +46 -0
  2. package/README.md +4 -2
  3. package/dist/assets/browser-worker-p7uX85l-.js +4 -0
  4. package/dist/assets/browser-worker-p7uX85l-.js.map +1 -0
  5. package/dist/assets/shared-worker-BALTqEUe.js +2 -0
  6. package/dist/assets/shared-worker-BALTqEUe.js.map +1 -0
  7. package/dist/chunks/{indexing-CKtbpaZn.js → indexing-DdpU69Fd.js} +344 -185
  8. package/dist/chunks/indexing-DdpU69Fd.js.map +1 -0
  9. package/dist/codec.d.ts.map +1 -1
  10. package/dist/compression.d.ts.map +1 -1
  11. package/dist/demo.d.ts.map +1 -1
  12. package/dist/engine/README.md +4 -2
  13. package/dist/engine/moyodb_engine.d.ts +4 -2
  14. package/dist/engine/moyodb_engine.js +45 -22
  15. package/dist/engine/moyodb_engine_bg.wasm +0 -0
  16. package/dist/engine/moyodb_engine_bg.wasm.d.ts +3 -2
  17. package/dist/engine/package.json +1 -1
  18. package/dist/engine/snippets/{moyodb-engine-54a406e33b0fb849 → moyodb-engine-1f8134232168280b}/js/opfs_shim.js +8 -2
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/indexing.d.ts +7 -0
  21. package/dist/indexing.d.ts.map +1 -1
  22. package/dist/moyodb-sdk.js +1265 -872
  23. package/dist/moyodb-sdk.js.map +1 -1
  24. package/dist/node-engine.js +411 -81
  25. package/dist/node-engine.js.map +1 -1
  26. package/dist/node.js +354 -74
  27. package/dist/node.js.map +1 -1
  28. package/dist/registry.d.ts.map +1 -1
  29. package/dist/subscriptions.d.ts.map +1 -1
  30. package/dist/worker-api.d.ts +2 -5
  31. package/dist/worker-api.d.ts.map +1 -1
  32. package/dist/worker-client.d.ts.map +1 -1
  33. package/dist/worker-protocol.d.ts +7 -2
  34. package/dist/worker-protocol.d.ts.map +1 -1
  35. package/dist/worker-server.d.ts.map +1 -1
  36. package/dist/worker.d.ts +12 -5
  37. package/dist/worker.d.ts.map +1 -1
  38. package/package.json +5 -3
  39. package/dist/assets/browser-worker-DBt51gsS.js +0 -4
  40. package/dist/assets/browser-worker-DBt51gsS.js.map +0 -1
  41. package/dist/assets/shared-worker-NdniRuEL.js +0 -2
  42. package/dist/assets/shared-worker-NdniRuEL.js.map +0 -1
  43. package/dist/chunks/indexing-CKtbpaZn.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"indexing-DdpU69Fd.js","names":[],"sources":["../../src/internal.ts","../../src/worker-protocol.ts","../../src/errors.ts","../../src/codec.ts","../../src/indexing.ts"],"sourcesContent":["export function isRecord(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === 'object';\n}\n\nexport function compareStringsByCodeUnit(left: string, right: string): number {\n if (left < right) {\n return -1;\n }\n return left > right ? 1 : 0;\n}\n\n/**\n * Delays above 2^31-1 do not fit in the platform timer word. Node fires them\n * after 1ms; other runtimes can wrap them to zero. Clamp instead of aborting.\n */\nexport const MAX_TIMER_DELAY_MS = 2_147_483_647;\n\nexport function clampTimerDelayMs(delayMs: number): number {\n if (!Number.isFinite(delayMs) || delayMs <= 0) {\n return 0;\n }\n return delayMs > MAX_TIMER_DELAY_MS ? MAX_TIMER_DELAY_MS : delayMs;\n}\n\nexport function withTimeout<T>(promise: Promise<T>, timeoutMs: number, fallback: T): Promise<T> {\n return new Promise((resolve) => {\n const timeout = setTimeout(() => resolve(fallback), clampTimerDelayMs(timeoutMs));\n promise.then(\n (value) => {\n clearTimeout(timeout);\n resolve(value);\n },\n () => {\n clearTimeout(timeout);\n resolve(fallback);\n }\n );\n });\n}\n","import type { IndexScanPage, WorkerApi, WorkerScanPage } from './worker-api';\nimport type { BatchOp } from './types';\nimport { isRecord } from './internal';\n\nexport const WORKER_PROTOCOL_VERSION = 1;\nexport const WORKER_PROTOCOL_READY = 'moyodb:worker-protocol:ready';\nexport const WORKER_PROTOCOL_REQUEST = 'moyodb:worker-protocol:request';\nexport const WORKER_PROTOCOL_RESPONSE = 'moyodb:worker-protocol:response';\nexport const WORKER_PROTOCOL_REQUEST_BATCH = 'moyodb:worker-protocol:request-batch';\nexport const WORKER_PROTOCOL_RESPONSE_BATCH = 'moyodb:worker-protocol:response-batch';\nexport const MAX_WORKER_BATCH_MESSAGES = 128;\nexport const MAX_WORKER_BATCH_BYTES = 1024 * 1024;\n\nexport const WORKER_COMMANDS = [\n 'open',\n 'close',\n 'destroy',\n 'deleteDB',\n 'begin',\n 'commit',\n 'rollback',\n 'autocommit',\n 'createStore',\n 'dropStore',\n 'clearStore',\n 'get',\n 'getMany',\n 'has',\n 'put',\n 'putMany',\n 'delete',\n 'deleteMany',\n 'applyBatch',\n 'scan',\n 'scanPage',\n 'closeCursor',\n 'getByIndex',\n 'scanByIndex',\n 'scanByIndexPage',\n 'getIndexes',\n 'reconcileIndexes',\n 'listStores',\n 'getVersion',\n 'changesSince',\n 'setSchemaVersion',\n 'exportSnapshot',\n 'importSnapshot',\n 'reset',\n 'compact',\n 'rebuild',\n 'stats',\n 'storageInfo',\n 'requestPersistence',\n 'setFailpoint'\n] as const;\n\nexport type WorkerCommand = (typeof WORKER_COMMANDS)[number];\n\ntype WorkerMethod<M extends WorkerCommand> = WorkerApi[M] extends (...args: infer Args) => Promise<infer Result>\n ? { args: Args; result: Result }\n : never;\n\nexport type WorkerCommandArgs<M extends WorkerCommand> = WorkerMethod<M>['args'];\nexport type WorkerCommandResult<M extends WorkerCommand> = WorkerMethod<M>['result'];\n/** Arguments of an autocommit command without the leading transaction id. */\nexport type AutocommitArgs<M extends AutocommitCommand> =\n WorkerCommandArgs<M> extends [number, ...infer Rest] ? Rest : never;\n\nexport const AUTOCOMMIT_COMMANDS = [\n 'get',\n 'getMany',\n 'has',\n 'put',\n 'putMany',\n 'delete',\n 'deleteMany',\n 'applyBatch',\n 'scan',\n 'getByIndex',\n 'scanByIndex',\n 'createStore',\n 'dropStore',\n 'clearStore'\n] as const;\n\n/**\n * Commands supported in one autocommit request. The worker replies after\n * commit (readwrite) or rollback (readonly).\n */\nexport type AutocommitCommand = (typeof AUTOCOMMIT_COMMANDS)[number];\n\nconst AUTOCOMMIT_COMMAND_SET = new Set<string>(AUTOCOMMIT_COMMANDS);\n\nexport function isAutocommitCommand(value: unknown): value is AutocommitCommand {\n return typeof value === 'string' && AUTOCOMMIT_COMMAND_SET.has(value);\n}\n\nexport type PackedBatchOpKey = {\n kind: 'put' | 'delete';\n key: Uint8Array;\n};\n\ntype PreparedWorkerCommandArgs<M extends WorkerCommand> = WorkerCommandArgs<M> | unknown[];\n\nconst PACKED_BINARY_LIST_V1 = 'moyodb:packed-binary-list:v1';\nconst PACKED_NULLABLE_BINARY_LIST_V1 = 'moyodb:packed-nullable-binary-list:v1';\nconst PACKED_SCAN_ROWS_V1 = 'moyodb:packed-scan-rows:v1';\nconst PACKED_ENGINE_SCAN_ROWS_V1 = 'moyodb:packed-engine-scan-rows:v1';\nconst PACKED_BATCH_OPS_V1 = 'moyodb:packed-batch-ops:v1';\n// Engine getMany format: u32 count | count x u32 length | concatenated values.\n// Integers are little-endian; u32::MAX marks a missing value. No repacking is needed.\nconst PACKED_OPTIONAL_VALUES_V1 = 'moyodb:packed-optional-values:v1';\nconst BATCH_OP_DELETE = 0;\nconst BATCH_OP_PUT = 1;\nconst U32_MAX = 0xffff_ffff;\nconst MAX_PACKED_RESPONSE_BYTES = 16 * 1024 * 1024;\nconst EMPTY_TRANSFERABLES: Transferable[] = [];\n\ninterface PackedBinaryListV1 {\n __moyodbPacked: typeof PACKED_BINARY_LIST_V1;\n bytes: Uint8Array;\n}\n\ninterface PackedNullableBinaryListV1 {\n __moyodbPacked: typeof PACKED_NULLABLE_BINARY_LIST_V1;\n bytes: Uint8Array;\n}\n\ninterface PackedScanRowsV1 {\n __moyodbPacked: typeof PACKED_SCAN_ROWS_V1;\n bytes: Uint8Array;\n}\nexport interface PackedEngineScanRowsV1 {\n __moyodbPacked: typeof PACKED_ENGINE_SCAN_ROWS_V1;\n bytes: Uint8Array;\n}\n\ninterface PackedBatchOpsV1 {\n __moyodbPacked: typeof PACKED_BATCH_OPS_V1;\n bytes: Uint8Array;\n}\n\nexport interface PackedOptionalValuesV1 {\n __moyodbPacked: typeof PACKED_OPTIONAL_VALUES_V1;\n bytes: Uint8Array;\n}\n\ninterface PackedBytes {\n __moyodbPacked: string;\n bytes: Uint8Array;\n}\n\ninterface PackedIndexScanPage {\n rows: PackedScanRowsV1 | IndexScanPage['rows'];\n cursor: Uint8Array | null;\n}\n\nexport type WorkerProtocolReadyMessage = {\n type: typeof WORKER_PROTOCOL_READY;\n version: typeof WORKER_PROTOCOL_VERSION;\n /** Enables batching; omitted by peers that use single messages. */\n batching?: 1;\n};\n\nexport type WorkerProtocolRequestMessage = {\n [M in WorkerCommand]: {\n type: typeof WORKER_PROTOCOL_REQUEST;\n version: typeof WORKER_PROTOCOL_VERSION;\n id: number;\n command: M;\n args: PreparedWorkerCommandArgs<M>;\n };\n}[WorkerCommand];\n\nexport interface WorkerProtocolRequestBatchMessage {\n type: typeof WORKER_PROTOCOL_REQUEST_BATCH;\n version: typeof WORKER_PROTOCOL_VERSION;\n requests: WorkerProtocolRequestMessage[];\n}\n\nexport interface SerializedWorkerError {\n name: string;\n code?: string;\n message: string;\n stack?: string;\n}\n\nexport type WorkerProtocolSuccessMessage = {\n [M in WorkerCommand]: {\n type: typeof WORKER_PROTOCOL_RESPONSE;\n version: typeof WORKER_PROTOCOL_VERSION;\n id: number;\n ok: true;\n result: WorkerCommandResult<M>;\n };\n}[WorkerCommand];\n\nexport interface WorkerProtocolErrorMessage {\n type: typeof WORKER_PROTOCOL_RESPONSE;\n version: typeof WORKER_PROTOCOL_VERSION;\n id: number;\n ok: false;\n error: SerializedWorkerError;\n}\n\nexport type WorkerProtocolResponseMessage = WorkerProtocolSuccessMessage | WorkerProtocolErrorMessage;\n\nexport interface WorkerProtocolResponseBatchMessage {\n type: typeof WORKER_PROTOCOL_RESPONSE_BATCH;\n version: typeof WORKER_PROTOCOL_VERSION;\n responses: WorkerProtocolResponseMessage[];\n}\n\nconst WORKER_COMMAND_SET = new Set<string>(WORKER_COMMANDS);\n\nexport function isWorkerCommand(value: unknown): value is WorkerCommand {\n return typeof value === 'string' && WORKER_COMMAND_SET.has(value);\n}\n\nexport function isWorkerProtocolReadyMessage(value: unknown): value is WorkerProtocolReadyMessage {\n return (\n isWorkerProtocolReadyEnvelope(value) &&\n value.version === WORKER_PROTOCOL_VERSION &&\n (value.batching === undefined || value.batching === 1)\n );\n}\n\nexport function isWorkerProtocolReadyEnvelope(\n value: unknown\n): value is { type: typeof WORKER_PROTOCOL_READY; version?: unknown; batching?: unknown } {\n return isRecord(value) && value.type === WORKER_PROTOCOL_READY;\n}\n\nexport function isWorkerProtocolResponseMessage(value: unknown): value is WorkerProtocolResponseMessage {\n return (\n isRecord(value) &&\n value.type === WORKER_PROTOCOL_RESPONSE &&\n value.version === WORKER_PROTOCOL_VERSION &&\n typeof value.id === 'number' &&\n Number.isSafeInteger(value.id) &&\n typeof value.ok === 'boolean'\n );\n}\n\nexport function isWorkerProtocolRequestMessage(value: unknown): value is WorkerProtocolRequestMessage {\n return (\n isRecord(value) &&\n value.type === WORKER_PROTOCOL_REQUEST &&\n value.version === WORKER_PROTOCOL_VERSION &&\n typeof value.id === 'number' &&\n Number.isSafeInteger(value.id) &&\n typeof value.command === 'string' &&\n Array.isArray(value.args)\n );\n}\n\nexport function isWorkerProtocolRequestBatchMessage(value: unknown): value is WorkerProtocolRequestBatchMessage {\n return isWorkerProtocolBatch(value, WORKER_PROTOCOL_REQUEST_BATCH, 'requests');\n}\n\nexport function isWorkerProtocolResponseBatchMessage(value: unknown): value is WorkerProtocolResponseBatchMessage {\n if (!isWorkerProtocolBatch(value, WORKER_PROTOCOL_RESPONSE_BATCH, 'responses')) {\n return false;\n }\n for (const response of (value as WorkerProtocolResponseBatchMessage).responses) {\n if (!isWorkerProtocolResponseMessage(response)) return false;\n }\n return true;\n}\n\nfunction isWorkerProtocolBatch(value: unknown, type: string, items: string): boolean {\n return (\n isRecord(value) &&\n value.type === type &&\n value.version === WORKER_PROTOCOL_VERSION &&\n Array.isArray(value[items]) &&\n value[items].length > 0 &&\n value[items].length <= MAX_WORKER_BATCH_MESSAGES\n );\n}\n\nexport function isWorkerProtocolEnvelope(value: unknown): value is { type: string; id?: unknown } {\n return (\n isRecord(value) &&\n (value.type === WORKER_PROTOCOL_REQUEST ||\n value.type === WORKER_PROTOCOL_RESPONSE ||\n value.type === WORKER_PROTOCOL_REQUEST_BATCH ||\n value.type === WORKER_PROTOCOL_RESPONSE_BATCH ||\n value.type === WORKER_PROTOCOL_READY)\n );\n}\n\nexport function serializeWorkerError(error: unknown): SerializedWorkerError {\n if (isRecord(error)) {\n const code = stringOrUndefined(error.code);\n const name = stringOrUndefined(error.name) ?? code ?? 'Error';\n return {\n name,\n code,\n message: stringOrUndefined(error.message) ?? 'Unknown error',\n stack: stringOrUndefined(error.stack)\n };\n }\n return {\n name: 'Error',\n message: String(error)\n };\n}\n\nexport function deserializeWorkerError(error: unknown): Error {\n if (\n !isRecord(error) ||\n typeof error.name !== 'string' ||\n typeof error.message !== 'string' ||\n (error.code !== undefined && typeof error.code !== 'string') ||\n (error.stack !== undefined && typeof error.stack !== 'string')\n ) {\n throw workerProtocolError('WorkerProtocolError', 'invalid serialized worker error');\n }\n const deserialized = new Error(error.message);\n deserialized.name = error.name || error.code || 'Error';\n if (error.stack) {\n deserialized.stack = error.stack;\n }\n if (error.code) {\n defineErrorCode(deserialized, error.code);\n }\n return deserialized;\n}\n\nexport function workerProtocolError(name: string, message: string, code = name): Error {\n const error = new Error(message);\n error.name = name;\n defineErrorCode(error, code);\n return error;\n}\n\nfunction defineErrorCode(error: Error, code: string): void {\n Object.defineProperty(error, 'code', {\n value: code,\n enumerable: true,\n configurable: true\n });\n}\n\nexport function prepareWorkerCommandPayload<M extends WorkerCommand>(\n command: M,\n args: WorkerCommandArgs<M>\n): { args: PreparedWorkerCommandArgs<M>; transfer: Transferable[] } {\n if (command === 'autocommit') {\n const [mode, inner, innerArgs] = args as WorkerCommandArgs<'autocommit'>;\n if (isAutocommitCommand(inner) && Array.isArray(innerArgs)) {\n // The normal packer expects a transaction ID. Use a placeholder, then remove it.\n const prepared = prepareWorkerCommandPayload(inner, [0, ...innerArgs] as never);\n return {\n args: [mode, inner, (prepared.args as unknown[]).slice(1)],\n transfer: prepared.transfer\n };\n }\n }\n\n if (\n command === 'get' ||\n command === 'has' ||\n command === 'delete' ||\n command === 'getByIndex' ||\n command === 'put'\n ) {\n const keyIndex = command === 'getByIndex' ? 3 : 2;\n let copiedArgs: unknown[] | null = null;\n let transfer: Transferable[] | null = null;\n for (let index = keyIndex; index <= (command === 'put' ? 3 : keyIndex); index += 1) {\n const value = args[index];\n if (\n value instanceof Uint8Array &&\n value.buffer instanceof ArrayBuffer &&\n (value.byteOffset !== 0 || value.byteLength !== value.buffer.byteLength)\n ) {\n const owned = copyToOwnedUint8Array(value);\n copiedArgs ??= [...args];\n copiedArgs[index] = owned;\n (transfer ??= []).push(owned.buffer);\n }\n }\n if (copiedArgs !== null) {\n return { args: copiedArgs, transfer: transfer ?? EMPTY_TRANSFERABLES };\n }\n }\n\n if (command === 'importSnapshot') {\n const data = args[0];\n if (data instanceof Uint8Array) {\n const owned = copyToOwnedUint8Array(data);\n return {\n args: [owned] as WorkerCommandArgs<M>,\n transfer: [owned.buffer]\n };\n }\n }\n\n if (command === 'getMany' || command === 'deleteMany') {\n const [txId, store, keys] = args as WorkerCommandArgs<'getMany'> | WorkerCommandArgs<'deleteMany'>;\n if (Array.isArray(keys) && keys.length > 0) {\n const packed = packBinaryList(keys);\n return {\n args: [txId, store, packed],\n transfer: [packed.bytes.buffer]\n };\n }\n }\n\n if (command === 'putMany') {\n const [txId, store, entries, options] = args as WorkerCommandArgs<'putMany'>;\n if (Array.isArray(entries) && entries.length > 0) {\n const packed = packBinaryPairs(entries);\n return {\n args: [txId, store, packed, options],\n transfer: [packed.bytes.buffer]\n };\n }\n }\n\n if (command === 'applyBatch') {\n const [txId, store, ops] = args as WorkerCommandArgs<'applyBatch'>;\n if (Array.isArray(ops) && ops.length > 0) {\n const packed = packBatchOps(ops);\n return {\n args: [txId, store, packed],\n transfer: [packed.bytes.buffer]\n };\n }\n }\n\n return { args, transfer: EMPTY_TRANSFERABLES };\n}\n\nexport function decodeWorkerCommandPayload<M extends WorkerCommand>(\n command: M,\n args: PreparedWorkerCommandArgs<M>\n): WorkerCommandArgs<M> {\n if (command === 'autocommit') {\n const [mode, inner, innerArgs] = args as WorkerCommandArgs<'autocommit'>;\n if (isAutocommitCommand(inner) && Array.isArray(innerArgs)) {\n const decoded = decodeWorkerCommandPayload(inner, [0, ...innerArgs]) as unknown[];\n return [mode, inner, decoded.slice(1)] as WorkerCommandArgs<M>;\n }\n }\n\n if (command === 'getMany' || command === 'deleteMany') {\n const [txId, store, keys] = args as WorkerCommandArgs<'getMany'> | WorkerCommandArgs<'deleteMany'>;\n if (!Array.isArray(keys)) {\n if (!isPackedPayload(keys, PACKED_BINARY_LIST_V1)) {\n throw workerProtocolError('WorkerProtocolError', 'invalid packed binary-list argument');\n }\n return [txId, store, unpackBinaryList(keys)] as WorkerCommandArgs<M>;\n }\n }\n\n if (command === 'putMany') {\n const [txId, store, entries, options] = args as WorkerCommandArgs<'putMany'>;\n if (!Array.isArray(entries)) {\n if (!isPackedPayload(entries, PACKED_BINARY_LIST_V1)) {\n throw workerProtocolError('WorkerProtocolError', 'invalid packed putMany argument');\n }\n return [txId, store, unpackPutManyPayload(entries, false), options] as WorkerCommandArgs<M>;\n }\n }\n\n if (command === 'applyBatch') {\n const [txId, store, ops] = args as WorkerCommandArgs<'applyBatch'>;\n if (!Array.isArray(ops)) {\n if (!isPackedPayload(ops, PACKED_BATCH_OPS_V1)) {\n throw workerProtocolError('WorkerProtocolError', 'invalid packed batch argument');\n }\n return [txId, store, unpackBatchPayload(ops, false)] as WorkerCommandArgs<M>;\n }\n }\n\n return args;\n}\n\nexport function packedBinaryListBytes(value: unknown): Uint8Array | null {\n return isPackedPayload(value, PACKED_BINARY_LIST_V1) ? value.bytes : null;\n}\n\nexport function packedBatchOpsBytes(value: unknown): Uint8Array | null {\n return isPackedPayload(value, PACKED_BATCH_OPS_V1) ? value.bytes : null;\n}\n\nexport function unpackPackedBinaryList(bytes: Uint8Array): Uint8Array[] {\n return unpackBinaryList({ __moyodbPacked: PACKED_BINARY_LIST_V1, bytes });\n}\n\nexport function unpackPackedBinaryPairs(bytes: Uint8Array): Array<[Uint8Array, Uint8Array]> {\n return unpackPutManyPayload({ __moyodbPacked: PACKED_BINARY_LIST_V1, bytes }, false);\n}\n\nexport function unpackPackedBinaryPairKeys(bytes: Uint8Array): Uint8Array[] {\n return unpackPutManyPayload({ __moyodbPacked: PACKED_BINARY_LIST_V1, bytes }, true);\n}\n\nexport function unpackPackedBatchOps(bytes: Uint8Array): Array<BatchOp> {\n return unpackBatchPayload({ __moyodbPacked: PACKED_BATCH_OPS_V1, bytes }, false);\n}\n\nexport function unpackPackedBatchOpKeys(bytes: Uint8Array): PackedBatchOpKey[] {\n return unpackBatchPayload({ __moyodbPacked: PACKED_BATCH_OPS_V1, bytes }, true);\n}\n\nexport function packedOptionalValues(bytes: Uint8Array): PackedOptionalValuesV1 {\n return { __moyodbPacked: PACKED_OPTIONAL_VALUES_V1, bytes };\n}\n\nexport function unpackPackedOptionalValues(bytes: Uint8Array): Array<Uint8Array | null> {\n if (!(bytes instanceof Uint8Array) || bytes.byteLength < 4) {\n throw workerProtocolError('WorkerProtocolError', 'invalid packed optional-values payload');\n }\n const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n const count = view.getUint32(0, true);\n const metadataBytes = checkedByteCount(count, 4, 'packed optional-values metadata');\n const payloadOffset = checkedAdd(4, metadataBytes, 'packed optional-values header');\n if (payloadOffset > bytes.byteLength) {\n throw workerProtocolError('WorkerProtocolError', 'packed optional-values metadata exceeds payload length');\n }\n const items = new Array<Uint8Array | null>(count);\n let readOffset = payloadOffset;\n for (let index = 0; index < count; index += 1) {\n const byteLength = view.getUint32(4 + index * 4, true);\n if (byteLength === U32_MAX) {\n items[index] = null;\n continue;\n }\n const end = readOffset + byteLength;\n if (end > bytes.byteLength) {\n throw workerProtocolError('WorkerProtocolError', 'packed optional-values item exceeds payload length');\n }\n items[index] = bytes.subarray(readOffset, end);\n readOffset = end;\n }\n if (readOffset !== bytes.byteLength) {\n throw workerProtocolError('WorkerProtocolError', 'packed optional-values payload has trailing bytes');\n }\n return items;\n}\n\nexport function prepareWorkerResponsePayload<M extends WorkerCommand>(\n command: M,\n result: WorkerCommandResult<M>\n): { result: unknown; transfer: Transferable[] } {\n if (\n (command === 'scan' || command === 'scanByIndex') &&\n (isPackedEngineScanRows(result) || isPackedPayload(result, PACKED_SCAN_ROWS_V1))\n ) {\n return { result, transfer: collectDirectBinaryTransferable(result.bytes) };\n }\n if (command === 'scanPage') {\n const page = result as WorkerScanPage;\n if (isRecord(page) && (isPackedEngineScanRows(page.rows) || isPackedPayload(page.rows, PACKED_SCAN_ROWS_V1))) {\n return { result: page, transfer: collectDirectBinaryTransferable(page.rows.bytes) };\n }\n if (isRecord(page) && Array.isArray(page.rows)) {\n const packed = packScanRows(page.rows);\n return {\n result: { ...page, rows: packed ?? page.rows },\n transfer: packed ? [packed.bytes.buffer] : collectTransferablesForValue(page.rows)\n };\n }\n }\n if (command === 'getMany' && isPackedPayload(result, PACKED_OPTIONAL_VALUES_V1)) {\n return {\n result,\n transfer: collectDirectBinaryTransferable(result.bytes)\n };\n }\n\n if (command === 'scanByIndexPage') {\n const page = result as WorkerCommandResult<'scanByIndexPage'>;\n if (isRecord(page) && isPackedPayload(page.rows, PACKED_SCAN_ROWS_V1)) {\n return { result: page, transfer: collectTransferablesForValue(page) };\n }\n if (isRecord(page) && Array.isArray(page.rows)) {\n const packed = page.rows.length > 0 ? packScanRows(page.rows) : null;\n const response: PackedIndexScanPage = { rows: packed ?? page.rows, cursor: page.cursor };\n const transfer = packed ? [packed.bytes.buffer] : collectTransferablesForValue(page.rows);\n const cursorBuffer = directBinaryTransferable(page.cursor);\n return {\n result: response,\n transfer: cursorBuffer === null ? transfer : [...transfer, cursorBuffer]\n };\n }\n }\n\n if (command === 'getMany') {\n const values = result as WorkerCommandResult<'getMany'>;\n if (Array.isArray(values) && values.length > 0) {\n const packed = packNullableBinaryList(values);\n if (packed) {\n return {\n result: packed,\n transfer: [packed.bytes.buffer]\n };\n }\n }\n return {\n result,\n transfer: collectTransferablesForValue(result)\n };\n }\n\n if (command === 'scan' || command === 'scanByIndex') {\n const rows = result as WorkerCommandResult<'scan'>;\n if (Array.isArray(rows) && rows.length > 0) {\n const packed = packScanRows(rows);\n if (packed) {\n return {\n result: packed,\n transfer: [packed.bytes.buffer]\n };\n }\n }\n return {\n result,\n transfer: collectTransferablesForValue(result)\n };\n }\n\n if (command === 'get' || command === 'getByIndex' || command === 'exportSnapshot') {\n return {\n result,\n transfer: collectDirectBinaryTransferable(result)\n };\n }\n\n if (command === 'changesSince') {\n return {\n result,\n transfer: collectChangeFeedTransferables(result)\n };\n }\n\n // Remaining result types contain no binary payloads, so they need no buffer walk.\n return {\n result,\n transfer: []\n };\n}\n\nexport function decodeWorkerResponsePayload<M extends WorkerCommand>(\n command: M,\n result: unknown\n): WorkerCommandResult<M> {\n if (command === 'scanPage') {\n if (\n !isRecord(result) ||\n typeof result.done !== 'boolean' ||\n typeof result.bytes !== 'number' ||\n !Number.isSafeInteger(result.bytes) ||\n result.bytes < 4 ||\n (result.cursorId !== undefined &&\n (typeof result.cursorId !== 'number' ||\n !Number.isSafeInteger(result.cursorId) ||\n result.cursorId <= 0)) ||\n (result.done ? result.cursorId !== undefined : result.cursorId === undefined)\n ) {\n throw workerProtocolError('WorkerProtocolError', 'invalid scan page response');\n }\n const rows = isPackedEngineScanRows(result.rows)\n ? unpackPackedScanRows(result.rows.bytes)\n : isPackedPayload(result.rows, PACKED_SCAN_ROWS_V1)\n ? unpackScanRows(result.rows)\n : result.rows;\n if (!Array.isArray(rows)) throw workerProtocolError('WorkerProtocolError', 'invalid scan page rows');\n let bytes = 4;\n for (const row of rows) {\n if (!isRecord(row) || !(row.key instanceof Uint8Array) || !(row.value instanceof Uint8Array)) {\n throw workerProtocolError('WorkerProtocolError', 'invalid scan page row');\n }\n bytes += 8 + row.key.byteLength + row.value.byteLength;\n }\n if (bytes !== result.bytes) throw workerProtocolError('WorkerProtocolError', 'scan page byte count mismatch');\n return { rows, cursorId: result.cursorId, done: result.done, bytes: result.bytes } as WorkerCommandResult<M>;\n }\n if ((command === 'scan' || command === 'scanByIndex') && isPackedEngineScanRows(result)) {\n return unpackPackedScanRows(result.bytes) as WorkerCommandResult<M>;\n }\n if (command === 'getMany' && isPackedPayload(result, PACKED_NULLABLE_BINARY_LIST_V1)) {\n return unpackNullableBinaryList(result);\n }\n\n if (command === 'getMany' && isPackedPayload(result, PACKED_OPTIONAL_VALUES_V1)) {\n return unpackPackedOptionalValues(result.bytes) as WorkerCommandResult<M>;\n }\n\n if (command === 'getMany' && !Array.isArray(result)) {\n throw workerProtocolError('WorkerProtocolError', 'invalid packed getMany response');\n }\n\n if (command === 'scanByIndexPage') {\n if (\n !isRecord(result) ||\n (!Array.isArray(result.rows) && !isPackedPayload(result.rows, PACKED_SCAN_ROWS_V1)) ||\n (result.cursor !== null && !(result.cursor instanceof Uint8Array))\n ) {\n throw workerProtocolError('WorkerProtocolError', 'invalid packed index scan page response');\n }\n const rows = isPackedPayload(result.rows, PACKED_SCAN_ROWS_V1) ? unpackScanRows(result.rows) : result.rows;\n return { rows, cursor: result.cursor } as WorkerCommandResult<M>;\n }\n\n if ((command === 'scan' || command === 'scanByIndex') && isPackedPayload(result, PACKED_SCAN_ROWS_V1)) {\n return unpackScanRows(result);\n }\n\n if ((command === 'scan' || command === 'scanByIndex') && !Array.isArray(result)) {\n throw workerProtocolError('WorkerProtocolError', 'invalid packed scan response');\n }\n\n return result;\n}\nexport function packedScanRows(bytes: Uint8Array): PackedEngineScanRowsV1 {\n return { __moyodbPacked: PACKED_ENGINE_SCAN_ROWS_V1, bytes };\n}\nfunction isPackedEngineScanRows(value: unknown): value is PackedEngineScanRowsV1 {\n return isRecord(value) && value.__moyodbPacked === PACKED_ENGINE_SCAN_ROWS_V1 && value.bytes instanceof Uint8Array;\n}\nexport function unpackPackedScanRows(bytes: Uint8Array): Array<{ key: Uint8Array; value: Uint8Array }> {\n if (!(bytes instanceof Uint8Array) || bytes.byteLength < 4) {\n throw workerProtocolError('WorkerProtocolError', 'invalid engine scan packet');\n }\n const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n const count = view.getUint32(0, true);\n if (count > (bytes.byteLength - 4) / 8) {\n throw workerProtocolError('WorkerProtocolError', 'engine scan row count exceeds packet length');\n }\n const rows = new Array<{ key: Uint8Array; value: Uint8Array }>(count);\n let offset = 4;\n for (let index = 0; index < count; index += 1) {\n if (offset + 8 > bytes.byteLength)\n throw workerProtocolError('WorkerProtocolError', 'truncated engine scan row');\n const keyLength = view.getUint32(offset, true);\n const valueLength = view.getUint32(offset + 4, true);\n const keyStart = offset + 8;\n const valueStart = keyStart + keyLength;\n const end = valueStart + valueLength;\n if (end > bytes.byteLength)\n throw workerProtocolError('WorkerProtocolError', 'engine scan row exceeds packet length');\n rows[index] = { key: bytes.subarray(keyStart, valueStart), value: bytes.subarray(valueStart, end) };\n offset = end;\n }\n if (offset !== bytes.byteLength)\n throw workerProtocolError('WorkerProtocolError', 'engine scan packet has trailing bytes');\n return rows;\n}\n\nexport function collectTransferablesForValue(value: unknown): Transferable[] {\n const direct = directBinaryTransferable(value);\n if (direct !== null) {\n return [direct];\n }\n if (value === null || value === undefined || typeof value !== 'object') {\n return EMPTY_TRANSFERABLES;\n }\n\n const buffers = new Set<ArrayBuffer>();\n const seen = new WeakSet<object>();\n collectTransferableBuffers(value, buffers, seen);\n return buffers.size === 0 ? EMPTY_TRANSFERABLES : Array.from(buffers);\n}\n\n/**\n * Capture the message before batching can observe later mutations. Listed\n * transferables move into the snapshot; other ArrayBuffers are cloned.\n * SharedArrayBuffers remain shared. byteLength is a batch-size estimate.\n */\nexport function captureWorkerPayload<T>(\n value: T,\n transfer: Transferable[]\n): { value: T; transfer: Transferable[]; byteLength: number } {\n const captured =\n transfer.length > 0\n ? structuredClone(value, { transfer: transfer.length === 1 ? transfer : Array.from(new Set(transfer)) })\n : structuredClone(value);\n const buffers = new Set<ArrayBuffer>();\n const seen = new WeakSet<object>();\n let byteLength = 0;\n const visit = (item: unknown): void => {\n if (typeof item === 'string') {\n byteLength += 8 + item.length * 2;\n return;\n }\n if (item === null || typeof item !== 'object') {\n byteLength += 8;\n return;\n }\n if (seen.has(item)) return;\n seen.add(item);\n byteLength += 8;\n if (item instanceof ArrayBuffer) {\n buffers.add(item);\n byteLength += item.byteLength;\n } else if (typeof SharedArrayBuffer !== 'undefined' && item instanceof SharedArrayBuffer) {\n byteLength += item.byteLength;\n } else if (ArrayBuffer.isView(item)) {\n visit(item.buffer);\n } else if (Array.isArray(item)) {\n for (const child of item) visit(child);\n } else if (item instanceof Map) {\n for (const [key, child] of item) {\n visit(key);\n visit(child);\n }\n } else if (item instanceof Set) {\n for (const child of item) visit(child);\n } else {\n const record = item as Record<string, unknown>;\n for (const key in record) {\n if (Object.prototype.hasOwnProperty.call(record, key)) {\n byteLength += 8 + key.length * 2;\n visit(record[key]);\n }\n }\n }\n };\n visit(captured);\n return {\n value: captured,\n transfer: buffers.size === 0 ? EMPTY_TRANSFERABLES : Array.from(buffers),\n byteLength\n };\n}\n\nfunction collectDirectBinaryTransferable(value: unknown): Transferable[] {\n const direct = directBinaryTransferable(value);\n return direct === null ? EMPTY_TRANSFERABLES : [direct];\n}\n\nfunction directBinaryTransferable(value: unknown): ArrayBuffer | null {\n if (value instanceof ArrayBuffer) {\n return value;\n }\n if (ArrayBuffer.isView(value)) {\n const buffer = value.buffer;\n if (buffer instanceof ArrayBuffer && value.byteOffset === 0 && value.byteLength === buffer.byteLength) {\n return buffer;\n }\n }\n return null;\n}\n\nfunction collectChangeFeedTransferables(value: unknown): Transferable[] {\n if (!isRecord(value) || !Array.isArray(value.changes) || value.changes.length === 0) {\n return EMPTY_TRANSFERABLES;\n }\n\n let buffers: Set<ArrayBuffer> | null = null;\n for (const change of value.changes) {\n if (!isRecord(change)) {\n continue;\n }\n const key = directBinaryTransferable(change.key);\n if (key !== null) {\n buffers ??= new Set<ArrayBuffer>();\n buffers.add(key);\n }\n const changedValue = directBinaryTransferable(change.value);\n if (changedValue !== null) {\n buffers ??= new Set<ArrayBuffer>();\n buffers.add(changedValue);\n }\n }\n return buffers === null || buffers.size === 0 ? EMPTY_TRANSFERABLES : Array.from(buffers);\n}\n\nfunction collectTransferableBuffers(value: unknown, buffers: Set<ArrayBuffer>, seen: WeakSet<object>): void {\n if (value === null || value === undefined) {\n return;\n }\n if (value instanceof ArrayBuffer) {\n buffers.add(value);\n return;\n }\n if (ArrayBuffer.isView(value)) {\n const buffer = value.buffer;\n if (buffer instanceof ArrayBuffer && value.byteOffset === 0 && value.byteLength === buffer.byteLength) {\n buffers.add(buffer);\n }\n return;\n }\n if (typeof value !== 'object') {\n return;\n }\n const object = value;\n if (seen.has(object)) {\n return;\n }\n seen.add(object);\n if (Array.isArray(value)) {\n for (const item of value) {\n collectTransferableBuffers(item, buffers, seen);\n }\n return;\n }\n const record = value as Record<string, unknown>;\n for (const key in record) {\n if (Object.prototype.hasOwnProperty.call(record, key)) {\n collectTransferableBuffers(record[key], buffers, seen);\n }\n }\n}\n\nfunction packBinaryPairs(entries: Array<[Uint8Array, Uint8Array]>): PackedBinaryListV1 {\n const entryCount = entries.length;\n const count = checkedU32(entryCount * 2, 'packed putMany item count');\n const metadataBytes = checkedByteCount(count, 4, 'packed putMany metadata');\n let payloadBytes = 0;\n for (let index = 0; index < entryCount; index += 1) {\n const entry = entries[index];\n const key = entry[0];\n const value = entry[1];\n if (!(key instanceof Uint8Array) || !(value instanceof Uint8Array)) {\n throw workerProtocolError('WorkerProtocolError', 'putMany entry key/value is not a Uint8Array');\n }\n const keyLength = checkedU32(key.byteLength, 'putMany key length');\n const valueLength = checkedU32(value.byteLength, 'putMany value length');\n payloadBytes += keyLength + valueLength;\n if (payloadBytes > U32_MAX) {\n throw workerProtocolError('WorkerProtocolError', 'packed putMany payload exceeds 32-bit payload limit');\n }\n }\n const payloadOffset = checkedAdd(4, metadataBytes, 'packed putMany header');\n const totalBytes = checkedAdd(payloadOffset, payloadBytes, 'packed putMany total');\n const bytes = new Uint8Array(totalBytes);\n const view = new DataView(bytes.buffer);\n view.setUint32(0, count, true);\n let metadataOffset = 4;\n let writeOffset = payloadOffset;\n for (let index = 0; index < entryCount; index += 1) {\n const entry = entries[index];\n const key = entry[0];\n const value = entry[1];\n const keyLength = key.byteLength;\n const valueLength = value.byteLength;\n view.setUint32(metadataOffset, keyLength, true);\n metadataOffset += 4;\n view.setUint32(metadataOffset, valueLength, true);\n metadataOffset += 4;\n bytes.set(key, writeOffset);\n writeOffset += keyLength;\n bytes.set(value, writeOffset);\n writeOffset += valueLength;\n }\n return {\n __moyodbPacked: PACKED_BINARY_LIST_V1,\n bytes\n };\n}\n\nfunction packBinaryList(items: Uint8Array[]): PackedBinaryListV1 {\n const count = items.length;\n const metadataBytes = checkedByteCount(count, 4, 'packed binary-list metadata');\n let payloadBytes = 0;\n for (let index = 0; index < count; index += 1) {\n const item = items[index];\n if (!(item instanceof Uint8Array)) {\n throw workerProtocolError('WorkerProtocolError', 'binary-list payload item is not a Uint8Array');\n }\n const itemLength = checkedU32(item.byteLength, 'binary-list item length');\n payloadBytes += itemLength;\n if (payloadBytes > U32_MAX) {\n throw workerProtocolError('WorkerProtocolError', 'packed binary-list payload exceeds 32-bit payload limit');\n }\n }\n const payloadOffset = checkedAdd(4, metadataBytes, 'packed binary-list header');\n const totalBytes = checkedAdd(payloadOffset, payloadBytes, 'packed binary-list total');\n const bytes = new Uint8Array(totalBytes);\n const view = new DataView(bytes.buffer);\n view.setUint32(0, count, true);\n let metadataOffset = 4;\n let writeOffset = payloadOffset;\n for (let index = 0; index < count; index += 1) {\n const item = items[index];\n const itemLength = item.byteLength;\n view.setUint32(metadataOffset, itemLength, true);\n metadataOffset += 4;\n bytes.set(item, writeOffset);\n writeOffset += itemLength;\n }\n return {\n __moyodbPacked: PACKED_BINARY_LIST_V1,\n bytes\n };\n}\n\nfunction unpackBinaryList(payload: PackedBytes): Uint8Array[] {\n const bytes = payload.bytes;\n if (!(bytes instanceof Uint8Array) || bytes.byteLength < 4) {\n throw workerProtocolError('WorkerProtocolError', 'invalid packed binary-list payload');\n }\n const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n const count = view.getUint32(0, true);\n const metadataBytes = checkedByteCount(count, 4, 'packed binary-list metadata');\n const payloadOffset = checkedAdd(4, metadataBytes, 'packed binary-list header');\n if (payloadOffset > bytes.byteLength) {\n throw workerProtocolError('WorkerProtocolError', 'packed binary-list metadata exceeds payload length');\n }\n\n const items = new Array<Uint8Array>(count);\n let metadataOffset = 4;\n let readOffset = payloadOffset;\n for (let index = 0; index < count; index += 1) {\n const byteLength = view.getUint32(metadataOffset, true);\n metadataOffset += 4;\n const end = readOffset + byteLength;\n if (end > U32_MAX || end > bytes.byteLength) {\n throw workerProtocolError('WorkerProtocolError', 'packed binary-list item exceeds payload length');\n }\n items[index] = bytes.subarray(readOffset, end);\n readOffset = end;\n }\n if (readOffset !== bytes.byteLength) {\n throw workerProtocolError('WorkerProtocolError', 'packed binary-list payload has trailing bytes');\n }\n return items;\n}\n\nfunction unpackPutManyPayload(payload: PackedBytes, keysOnly: true): Uint8Array[];\nfunction unpackPutManyPayload(payload: PackedBytes, keysOnly: false): Array<[Uint8Array, Uint8Array]>;\nfunction unpackPutManyPayload(payload: PackedBytes, keysOnly: boolean): Uint8Array[] | Array<[Uint8Array, Uint8Array]> {\n const bytes = payload.bytes;\n if (!(bytes instanceof Uint8Array) || bytes.byteLength < 4) {\n throw workerProtocolError('WorkerProtocolError', 'invalid packed putMany payload');\n }\n const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n const itemCount = view.getUint32(0, true);\n if (itemCount % 2 !== 0) {\n throw workerProtocolError('WorkerProtocolError', 'packed putMany payload has an odd item count');\n }\n const metadataBytes = checkedByteCount(itemCount, 4, 'packed putMany metadata');\n const payloadOffset = checkedAdd(4, metadataBytes, 'packed putMany header');\n if (payloadOffset > bytes.byteLength) {\n throw workerProtocolError('WorkerProtocolError', 'packed putMany metadata exceeds payload length');\n }\n\n const entryCount = itemCount / 2;\n const entries = new Array<Uint8Array | [Uint8Array, Uint8Array]>(entryCount);\n let metadataOffset = 4;\n let readOffset = payloadOffset;\n for (let index = 0; index < entryCount; index += 1) {\n const keyLength = view.getUint32(metadataOffset, true);\n const valueLength = view.getUint32(metadataOffset + 4, true);\n metadataOffset += 8;\n\n const keyEnd = readOffset + keyLength;\n if (keyEnd > U32_MAX || keyEnd > bytes.byteLength) {\n throw workerProtocolError('WorkerProtocolError', 'packed putMany key exceeds payload length');\n }\n const valueEnd = keyEnd + valueLength;\n if (valueEnd > U32_MAX || valueEnd > bytes.byteLength) {\n throw workerProtocolError('WorkerProtocolError', 'packed putMany value exceeds payload length');\n }\n if (keysOnly) {\n entries[index] = bytes.subarray(readOffset, keyEnd);\n } else {\n entries[index] = [bytes.subarray(readOffset, keyEnd), bytes.subarray(keyEnd, valueEnd)];\n }\n readOffset = valueEnd;\n }\n if (readOffset !== bytes.byteLength) {\n throw workerProtocolError('WorkerProtocolError', 'packed putMany payload has trailing bytes');\n }\n return entries as Uint8Array[] | Array<[Uint8Array, Uint8Array]>;\n}\n\nfunction packNullableBinaryList(items: Array<Uint8Array | null>): PackedNullableBinaryListV1 | null {\n const count = items.length;\n const metadataBytes = checkedByteCount(count, 5, 'packed nullable binary-list metadata');\n let payloadBytes = 0;\n for (let index = 0; index < count; index += 1) {\n const item = items[index];\n if (item === null) {\n continue;\n }\n if (!(item instanceof Uint8Array)) {\n throw workerProtocolError(\n 'WorkerProtocolError',\n 'nullable binary-list payload item is not a Uint8Array or null'\n );\n }\n const itemLength = checkedU32(item.byteLength, 'nullable binary-list item length');\n payloadBytes += itemLength;\n if (payloadBytes > U32_MAX) {\n throw workerProtocolError(\n 'WorkerProtocolError',\n 'packed nullable binary-list payload exceeds 32-bit payload limit'\n );\n }\n }\n const payloadOffset = checkedAdd(4, metadataBytes, 'packed nullable binary-list header');\n const totalBytes = checkedAdd(payloadOffset, payloadBytes, 'packed nullable binary-list total');\n if (totalBytes > MAX_PACKED_RESPONSE_BYTES) {\n return null;\n }\n const bytes = new Uint8Array(totalBytes);\n const view = new DataView(bytes.buffer);\n view.setUint32(0, count, true);\n let metadataOffset = 4;\n let writeOffset = payloadOffset;\n for (let index = 0; index < count; index += 1) {\n const item = items[index];\n if (item === null) {\n view.setUint8(metadataOffset, 0);\n view.setUint32(metadataOffset + 1, 0, true);\n metadataOffset += 5;\n continue;\n }\n const itemLength = item.byteLength;\n view.setUint8(metadataOffset, 1);\n view.setUint32(metadataOffset + 1, itemLength, true);\n metadataOffset += 5;\n bytes.set(item, writeOffset);\n writeOffset += itemLength;\n }\n return {\n __moyodbPacked: PACKED_NULLABLE_BINARY_LIST_V1,\n bytes\n };\n}\n\nfunction unpackNullableBinaryList(payload: PackedBytes): Array<Uint8Array | null> {\n const bytes = payload.bytes;\n if (!(bytes instanceof Uint8Array) || bytes.byteLength < 4) {\n throw workerProtocolError('WorkerProtocolError', 'invalid packed nullable binary-list payload');\n }\n const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n const count = view.getUint32(0, true);\n const metadataBytes = checkedByteCount(count, 5, 'packed nullable binary-list metadata');\n const payloadOffset = checkedAdd(4, metadataBytes, 'packed nullable binary-list header');\n if (payloadOffset > bytes.byteLength) {\n throw workerProtocolError('WorkerProtocolError', 'packed nullable binary-list metadata exceeds payload length');\n }\n\n const items = new Array<Uint8Array | null>(count);\n let metadataOffset = 4;\n let readOffset = payloadOffset;\n for (let index = 0; index < count; index += 1) {\n const present = view.getUint8(metadataOffset);\n const byteLength = view.getUint32(metadataOffset + 1, true);\n metadataOffset += 5;\n if (present === 0) {\n if (byteLength !== 0) {\n throw workerProtocolError(\n 'WorkerProtocolError',\n 'packed nullable binary-list null item has a payload length'\n );\n }\n items[index] = null;\n continue;\n }\n if (present !== 1) {\n throw workerProtocolError(\n 'WorkerProtocolError',\n `packed nullable binary-list item has invalid presence byte: ${present}`\n );\n }\n const end = readOffset + byteLength;\n if (end > U32_MAX || end > bytes.byteLength) {\n throw workerProtocolError('WorkerProtocolError', 'packed nullable binary-list item exceeds payload length');\n }\n items[index] = bytes.subarray(readOffset, end);\n readOffset = end;\n }\n if (readOffset !== bytes.byteLength) {\n throw workerProtocolError('WorkerProtocolError', 'packed nullable binary-list payload has trailing bytes');\n }\n return items;\n}\n\nfunction packScanRows(rows: Array<{ key: Uint8Array; value: Uint8Array }>): PackedScanRowsV1 | null {\n const count = rows.length;\n const metadataBytes = checkedByteCount(count, 8, 'packed scan row metadata');\n let payloadBytes = 0;\n for (let index = 0; index < count; index += 1) {\n const row = rows[index];\n if (!isRecord(row) || !(row.key instanceof Uint8Array) || !(row.value instanceof Uint8Array)) {\n throw workerProtocolError('WorkerProtocolError', 'scan row payload key/value is not a Uint8Array');\n }\n const keyLength = checkedU32(row.key.byteLength, 'scan row key length');\n const valueLength = checkedU32(row.value.byteLength, 'scan row value length');\n payloadBytes += keyLength + valueLength;\n if (payloadBytes > U32_MAX) {\n throw workerProtocolError('WorkerProtocolError', 'packed scan row payload exceeds 32-bit payload limit');\n }\n }\n const payloadOffset = checkedAdd(4, metadataBytes, 'packed scan row header');\n const totalBytes = checkedAdd(payloadOffset, payloadBytes, 'packed scan row total');\n if (totalBytes > MAX_PACKED_RESPONSE_BYTES) {\n return null;\n }\n const bytes = new Uint8Array(totalBytes);\n const view = new DataView(bytes.buffer);\n view.setUint32(0, count, true);\n let metadataOffset = 4;\n let writeOffset = payloadOffset;\n for (let index = 0; index < count; index += 1) {\n const row = rows[index];\n const key = row.key;\n const value = row.value;\n const keyLength = key.byteLength;\n const valueLength = value.byteLength;\n view.setUint32(metadataOffset, keyLength, true);\n view.setUint32(metadataOffset + 4, valueLength, true);\n metadataOffset += 8;\n bytes.set(key, writeOffset);\n writeOffset += keyLength;\n bytes.set(value, writeOffset);\n writeOffset += valueLength;\n }\n return {\n __moyodbPacked: PACKED_SCAN_ROWS_V1,\n bytes\n };\n}\n\nfunction unpackScanRows(payload: PackedBytes): Array<{ key: Uint8Array; value: Uint8Array }> {\n const bytes = payload.bytes;\n if (!(bytes instanceof Uint8Array) || bytes.byteLength < 4) {\n throw workerProtocolError('WorkerProtocolError', 'invalid packed scan row payload');\n }\n const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n const count = view.getUint32(0, true);\n const metadataBytes = checkedByteCount(count, 8, 'packed scan row metadata');\n const payloadOffset = checkedAdd(4, metadataBytes, 'packed scan row header');\n if (payloadOffset > bytes.byteLength) {\n throw workerProtocolError('WorkerProtocolError', 'packed scan row metadata exceeds payload length');\n }\n\n const rows = new Array<{ key: Uint8Array; value: Uint8Array }>(count);\n let metadataOffset = 4;\n let readOffset = payloadOffset;\n for (let index = 0; index < count; index += 1) {\n const keyLength = view.getUint32(metadataOffset, true);\n const valueLength = view.getUint32(metadataOffset + 4, true);\n metadataOffset += 8;\n const keyEnd = readOffset + keyLength;\n if (keyEnd > U32_MAX || keyEnd > bytes.byteLength) {\n throw workerProtocolError('WorkerProtocolError', 'packed scan row key exceeds payload length');\n }\n const valueEnd = keyEnd + valueLength;\n if (valueEnd > U32_MAX || valueEnd > bytes.byteLength) {\n throw workerProtocolError('WorkerProtocolError', 'packed scan row value exceeds payload length');\n }\n rows[index] = {\n key: bytes.subarray(readOffset, keyEnd),\n value: bytes.subarray(keyEnd, valueEnd)\n };\n readOffset = valueEnd;\n }\n if (readOffset !== bytes.byteLength) {\n throw workerProtocolError('WorkerProtocolError', 'packed scan row payload has trailing bytes');\n }\n return rows;\n}\n\nfunction packBatchOps(ops: Array<BatchOp>): PackedBatchOpsV1 {\n const count = ops.length;\n const metadataBytes = checkedByteCount(count, 9, 'packed batch metadata');\n let payloadBytes = 0;\n for (let index = 0; index < count; index += 1) {\n const op: unknown = ops[index];\n if (!isRecord(op) || (op.kind !== 'put' && op.kind !== 'delete')) {\n throw workerProtocolError('WorkerProtocolError', 'batch operation kind is not put or delete');\n }\n if (!(op.key instanceof Uint8Array)) {\n throw workerProtocolError('WorkerProtocolError', 'batch operation key is not a Uint8Array');\n }\n const keyLength = checkedU32(op.key.byteLength, 'batch operation key length');\n payloadBytes += keyLength;\n if (payloadBytes > U32_MAX) {\n throw workerProtocolError('WorkerProtocolError', 'packed batch payload exceeds 32-bit payload limit');\n }\n if (op.kind === 'put') {\n if (!(op.value instanceof Uint8Array)) {\n throw workerProtocolError('WorkerProtocolError', 'batch put value is not a Uint8Array');\n }\n const valueLength = checkedU32(op.value.byteLength, 'batch put value length');\n payloadBytes += valueLength;\n if (payloadBytes > U32_MAX) {\n throw workerProtocolError('WorkerProtocolError', 'packed batch payload exceeds 32-bit payload limit');\n }\n }\n }\n const payloadOffset = checkedAdd(4, metadataBytes, 'packed batch header');\n const totalBytes = checkedAdd(payloadOffset, payloadBytes, 'packed batch total');\n const bytes = new Uint8Array(totalBytes);\n const view = new DataView(bytes.buffer);\n view.setUint32(0, count, true);\n let metadataOffset = 4;\n let writeOffset = payloadOffset;\n for (let index = 0; index < count; index += 1) {\n const op = ops[index];\n const key = op.key;\n const keyLength = key.byteLength;\n const valueLength = op.kind === 'put' ? op.value.byteLength : 0;\n view.setUint8(metadataOffset, op.kind === 'put' ? BATCH_OP_PUT : BATCH_OP_DELETE);\n view.setUint32(metadataOffset + 1, keyLength, true);\n view.setUint32(metadataOffset + 5, valueLength, true);\n metadataOffset += 9;\n bytes.set(key, writeOffset);\n writeOffset += keyLength;\n if (op.kind === 'put') {\n bytes.set(op.value, writeOffset);\n writeOffset += valueLength;\n }\n }\n return {\n __moyodbPacked: PACKED_BATCH_OPS_V1,\n bytes\n };\n}\n\nfunction unpackBatchPayload(payload: PackedBytes, keysOnly: true): PackedBatchOpKey[];\nfunction unpackBatchPayload(payload: PackedBytes, keysOnly: false): Array<BatchOp>;\nfunction unpackBatchPayload(payload: PackedBytes, keysOnly: boolean): PackedBatchOpKey[] | Array<BatchOp> {\n const bytes = payload.bytes;\n if (!(bytes instanceof Uint8Array) || bytes.byteLength < 4) {\n throw workerProtocolError('WorkerProtocolError', 'invalid packed batch payload');\n }\n const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n const count = view.getUint32(0, true);\n const metadataBytes = checkedByteCount(count, 9, 'packed batch metadata');\n const payloadOffset = checkedAdd(4, metadataBytes, 'packed batch header');\n if (payloadOffset > bytes.byteLength) {\n throw workerProtocolError('WorkerProtocolError', 'packed batch metadata exceeds payload length');\n }\n\n const ops = new Array<BatchOp | PackedBatchOpKey>(count);\n let metadataOffset = 4;\n let readOffset = payloadOffset;\n for (let index = 0; index < count; index += 1) {\n const kind = view.getUint8(metadataOffset);\n const keyLength = view.getUint32(metadataOffset + 1, true);\n const valueLength = view.getUint32(metadataOffset + 5, true);\n metadataOffset += 9;\n\n const keyEnd = readOffset + keyLength;\n if (keyEnd > U32_MAX || keyEnd > bytes.byteLength) {\n throw workerProtocolError('WorkerProtocolError', 'packed batch key exceeds payload length');\n }\n const key = bytes.subarray(readOffset, keyEnd);\n readOffset = keyEnd;\n\n if (kind === BATCH_OP_DELETE) {\n if (valueLength !== 0) {\n throw workerProtocolError('WorkerProtocolError', 'packed delete operation has a value payload');\n }\n ops[index] = { kind: 'delete', key };\n continue;\n }\n\n if (kind !== BATCH_OP_PUT) {\n throw workerProtocolError('WorkerProtocolError', `packed batch operation has invalid kind byte: ${kind}`);\n }\n const valueEnd = readOffset + valueLength;\n if (valueEnd > U32_MAX || valueEnd > bytes.byteLength) {\n throw workerProtocolError('WorkerProtocolError', 'packed batch value exceeds payload length');\n }\n if (keysOnly) {\n ops[index] = { kind: 'put', key };\n } else {\n ops[index] = { kind: 'put', key, value: bytes.subarray(readOffset, valueEnd) };\n }\n readOffset = valueEnd;\n }\n if (readOffset !== bytes.byteLength) {\n throw workerProtocolError('WorkerProtocolError', 'packed batch payload has trailing bytes');\n }\n return ops as PackedBatchOpKey[] | Array<BatchOp>;\n}\n\nfunction isPackedPayload(value: unknown, tag: string): value is PackedBytes {\n return isRecord(value) && value.__moyodbPacked === tag && value.bytes instanceof Uint8Array;\n}\n\nfunction checkedByteCount(count: number, itemBytes: number, what: string): number {\n if (!Number.isSafeInteger(count) || count < 0) {\n throw workerProtocolError('WorkerProtocolError', `${what} count is invalid: ${count}`);\n }\n return checkedU32(count * itemBytes, what);\n}\n\nfunction checkedAdd(left: number, right: number, what: string): number {\n const total = left + right;\n return checkedU32(total, what);\n}\n\nfunction checkedU32(value: number, what: string): number {\n if (!Number.isSafeInteger(value) || value < 0 || value > U32_MAX) {\n throw workerProtocolError('WorkerProtocolError', `${what} exceeds 32-bit payload limit`);\n }\n return value;\n}\n\nfunction copyToOwnedUint8Array(value: Uint8Array): Uint8Array {\n const owned = new Uint8Array(value.byteLength);\n owned.set(value);\n return owned;\n}\n\nfunction stringOrUndefined(value: unknown): string | undefined {\n return typeof value === 'string' ? value : undefined;\n}\n","export class MoyoDbError extends Error {\n constructor(name: string, message: string) {\n super(message);\n this.name = name;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\nexport class UnsupportedPlatformError extends MoyoDbError {\n constructor(message: string) {\n super('UnsupportedPlatformError', message);\n }\n}\nexport class DatabaseBusyError extends MoyoDbError {\n constructor(message: string) {\n super('DatabaseBusyError', message);\n }\n}\nexport class CorruptionError extends MoyoDbError {\n constructor(message: string) {\n super('CorruptionError', message);\n }\n}\nexport class StoreExistsError extends MoyoDbError {\n constructor(message: string) {\n super('StoreExistsError', message);\n }\n}\nexport class StoreNotFoundError extends MoyoDbError {\n constructor(message: string) {\n super('StoreNotFoundError', message);\n }\n}\nexport class IndexNotFoundError extends MoyoDbError {\n constructor(message: string) {\n super('IndexNotFoundError', message);\n }\n}\nexport class ConstraintError extends MoyoDbError {\n constructor(message: string) {\n super('ConstraintError', message);\n }\n}\nexport class UniqueIndexConstraintError extends ConstraintError {\n constructor(message: string) {\n super(message);\n this.name = 'UniqueIndexConstraintError';\n }\n}\nexport class WriteTransactionAlreadyOpenError extends MoyoDbError {\n constructor(message = 'write transaction already open') {\n super('WriteTransactionAlreadyOpenError', message);\n }\n}\nexport class TransactionConflictError extends MoyoDbError {\n constructor(message = 'transaction snapshot is stale; start a new transaction') {\n super('TransactionConflictError', message);\n }\n}\nexport class ReadonlyTransactionError extends MoyoDbError {\n constructor(message = 'readonly transaction cannot perform this operation') {\n super('ReadonlyTransactionError', message);\n }\n}\nexport class TransactionClosedError extends MoyoDbError {\n constructor(message = 'transaction is already closed') {\n super('TransactionClosedError', message);\n }\n}\nexport class DatabaseClosedError extends MoyoDbError {\n constructor(message = 'database handle is closed') {\n super('DatabaseClosedError', message);\n }\n}\nexport class ValueTooLargeError extends MoyoDbError {\n constructor(message: string) {\n super('ValueTooLargeError', message);\n }\n}\nexport class KeyTooLargeError extends MoyoDbError {\n constructor(message: string) {\n super('KeyTooLargeError', message);\n }\n}\nexport class StoreNameTooLongError extends MoyoDbError {\n constructor(message: string) {\n super('StoreNameTooLongError', message);\n }\n}\nexport class ReservedStoreNameError extends MoyoDbError {\n constructor(message: string) {\n super('ReservedStoreNameError', message);\n }\n}\nexport class InvalidRangeError extends MoyoDbError {\n constructor(message: string) {\n super('InvalidRangeError', message);\n }\n}\nexport class StorageError extends MoyoDbError {\n constructor(message: string) {\n super('StorageError', message);\n }\n}\nexport class SerializationError extends MoyoDbError {\n constructor(message: string) {\n super('SerializationError', message);\n }\n}\nexport class InjectedFailureError extends MoyoDbError {\n constructor(message: string) {\n super('InjectedFailureError', message);\n }\n}\nexport class ChangeFeedCompactedError extends MoyoDbError {\n constructor(message: string) {\n super('ChangeFeedCompactedError', message);\n }\n}\n/**\n * The engine state could not be trusted, or automatic recovery failed.\n * A failed commit may already be durable. The worker attempts recovery before\n * a new transaction and after a failed commit. Recovery discards all open transactions.\n */\nexport class RecoveryRequiredError extends MoyoDbError {\n constructor(message: string) {\n super('RecoveryRequiredError', message);\n }\n}\nexport class InternalError extends MoyoDbError {\n constructor(message: string) {\n super('InternalError', message);\n }\n}\nexport class InvalidOpenOptionsError extends MoyoDbError {\n constructor(message: string) {\n super('InvalidOpenOptionsError', message);\n }\n}\nexport class VersionError extends MoyoDbError {\n constructor(message: string) {\n super('VersionError', message);\n }\n}\ntype ErrorPayload = {\n code?: string;\n name?: string;\n message?: string;\n};\ntype ErrorConstructor = new (message: string) => Error;\nconst ERROR_CONSTRUCTORS = {\n UnsupportedPlatformError,\n DatabaseBusyError,\n CorruptionError,\n StoreExistsError,\n StoreNotFoundError,\n IndexNotFoundError,\n ConstraintError,\n UniqueIndexConstraintError,\n WriteTransactionAlreadyOpenError,\n TransactionConflictError,\n ReadonlyTransactionError,\n TransactionClosedError,\n DatabaseClosedError,\n ValueTooLargeError,\n KeyTooLargeError,\n StoreNameTooLongError,\n ReservedStoreNameError,\n InvalidRangeError,\n StorageError,\n SerializationError,\n InjectedFailureError,\n ChangeFeedCompactedError,\n RecoveryRequiredError,\n InternalError,\n InvalidOpenOptionsError,\n VersionError\n} satisfies Record<string, ErrorConstructor>;\n\nfunction instantiateError(code: string, message: string): Error {\n if (Object.prototype.hasOwnProperty.call(ERROR_CONSTRUCTORS, code)) {\n const ErrorConstructor = ERROR_CONSTRUCTORS[code as keyof typeof ERROR_CONSTRUCTORS];\n return new ErrorConstructor(message);\n }\n const err = new Error(message);\n err.name = code;\n return err;\n}\n\nexport function normalizeError(error: unknown): Error {\n if (error instanceof MoyoDbError) {\n return error;\n }\n if (error instanceof Error) {\n if (error.name === 'Error') {\n return error;\n }\n return instantiateError(error.name, error.message);\n }\n const payload = error as ErrorPayload | undefined;\n const code = payload?.code ?? payload?.name ?? 'Error';\n const message = payload?.message ?? String(error);\n return instantiateError(code, message);\n}\n","import type { Range } from './types';\nconst encoder = new TextEncoder();\nconst decoder = new TextDecoder();\nconst jsonDecoder = new TextDecoder('utf-8', { fatal: true });\nconst TYPE_NULL = 0x10;\nconst TYPE_FALSE = 0x20;\nconst TYPE_TRUE = 0x21;\nconst TYPE_NUMBER = 0x30;\nconst TYPE_STRING = 0x40;\nconst TYPE_BYTES = 0x50;\nconst COMPOUND_ESCAPE = 0x00;\nconst COMPOUND_ESCAPE_CONT = 0xff;\nconst COMPOUND_TERM = 0x00;\nconst F64_MASK = BigInt('0xffffffffffffffff');\nconst sortableNumberBytes = new Uint8Array(9);\nconst sortableNumberView = new DataView(sortableNumberBytes.buffer);\nexport type CompoundKeyPart = string | number | boolean | null | Uint8Array;\nexport type IndexKeyPrimitive = CompoundKeyPart;\nexport function utf8Encode(value: string): Uint8Array {\n return encoder.encode(value);\n}\nexport function utf8Decode(bytes: Uint8Array): string {\n return decoder.decode(bytes);\n}\nexport function jsonEncode(value: unknown): Uint8Array {\n const serialized = JSON.stringify(value) as string | undefined;\n if (serialized === undefined) {\n throw new TypeError('value has no JSON representation');\n }\n return utf8Encode(serialized);\n}\nexport function jsonDecode<T>(bytes: Uint8Array): T {\n return JSON.parse(jsonDecoder.decode(bytes)) as T;\n}\nexport function u64Key(value: bigint | number): Uint8Array {\n if (typeof value === 'number' && (!Number.isSafeInteger(value) || value < 0)) {\n throw new RangeError('u64Key number inputs must be safe non-negative integers; use bigint for larger values');\n }\n const asBigInt = typeof value === 'bigint' ? value : BigInt(value);\n if (asBigInt < 0n) {\n throw new RangeError('u64Key only accepts non-negative values');\n }\n if (asBigInt > F64_MASK) {\n throw new RangeError('u64Key value exceeds the unsigned 64-bit range');\n }\n const buf = new ArrayBuffer(8);\n const view = new DataView(buf);\n view.setBigUint64(0, asBigInt, false);\n return new Uint8Array(buf);\n}\nfunction isCompoundKeyPartList(\n value: CompoundKeyPart | ReadonlyArray<CompoundKeyPart>\n): value is ReadonlyArray<CompoundKeyPart> {\n return Array.isArray(value);\n}\nexport function indexKey(value: CompoundKeyPart | ReadonlyArray<CompoundKeyPart>): Uint8Array {\n if (isCompoundKeyPartList(value)) {\n return encodeCompoundKeyList(value);\n }\n return encodeCompoundKeyPart(value);\n}\nexport function compoundKey(...parts: CompoundKeyPart[]): Uint8Array {\n return encodeCompoundKeyList(parts);\n}\nexport function encodeIndexScalar(value: IndexKeyPrimitive): Uint8Array {\n return encodeCompoundKeyPart(value);\n}\nexport function encodeCompoundKeyParts(parts: ReadonlyArray<Uint8Array>): Uint8Array {\n return encodeCompoundBytes(parts);\n}\nexport function splitCompoundKey(key: Uint8Array): Uint8Array[] {\n const parts: Uint8Array[] = [];\n let index = 0;\n while (index < key.length) {\n const start = index;\n let length = 0;\n let closed = false;\n for (; index < key.length; index += 1) {\n const byte = key[index];\n if (byte !== COMPOUND_ESCAPE) {\n length += 1;\n continue;\n }\n const next = key[index + 1];\n if (next === COMPOUND_ESCAPE_CONT) {\n length += 1;\n index += 1;\n continue;\n }\n if (next === COMPOUND_TERM) {\n index += 2;\n closed = true;\n break;\n }\n throw new TypeError('invalid compound key encoding');\n }\n if (!closed) {\n throw new TypeError('compound key terminated unexpectedly');\n }\n const part = new Uint8Array(length);\n let offset = 0;\n for (let cursor = start; cursor < index - 2; cursor += 1) {\n const byte = key[cursor];\n if (byte !== COMPOUND_ESCAPE) {\n part[offset] = byte;\n offset += 1;\n continue;\n }\n part[offset] = COMPOUND_ESCAPE;\n offset += 1;\n cursor += 1;\n }\n parts.push(part);\n }\n return parts;\n}\nexport function prefixSuccessor(prefix: Uint8Array): Uint8Array | null {\n let end = prefix.length;\n while (end > 0 && prefix[end - 1] === 0xff) {\n end -= 1;\n }\n if (end === 0) {\n return null;\n }\n const out = new Uint8Array(end);\n out.set(end === prefix.length ? prefix : prefix.subarray(0, end));\n out[end - 1] += 1;\n return out;\n}\nexport function prefixRange(prefix: Uint8Array): Range {\n const upper = prefixSuccessor(prefix);\n return upper ? { gte: prefix, lt: upper } : { gte: prefix };\n}\nexport function compoundKeyRange(...parts: CompoundKeyPart[]): Range {\n return prefixRange(compoundKey(...parts));\n}\nfunction encodeCompoundKeyPart(value: CompoundKeyPart): Uint8Array {\n if (value === null) {\n return Uint8Array.of(TYPE_NULL);\n }\n if (typeof value === 'boolean') {\n return Uint8Array.of(value ? TYPE_TRUE : TYPE_FALSE);\n }\n if (typeof value === 'number') {\n return encodeSortableNumber(value);\n }\n if (typeof value === 'string') {\n return encodeStringKey(value);\n }\n if (value instanceof Uint8Array) {\n const out = new Uint8Array(1 + value.length);\n out[0] = TYPE_BYTES;\n out.set(value, 1);\n return out;\n }\n throw new TypeError('compound key parts must be string, number, boolean, null, or Uint8Array');\n}\nfunction encodeCompoundKeyList(parts: ReadonlyArray<CompoundKeyPart>): Uint8Array {\n let length = 0;\n for (let index = 0; index < parts.length; index += 1) {\n length += compoundPartEncodedLength(parts[index]);\n }\n const out = new Uint8Array(length);\n let offset = 0;\n for (let index = 0; index < parts.length; index += 1) {\n offset = writeCompoundPart(out, offset, parts[index]);\n }\n return out;\n}\nfunction compoundPartEncodedLength(value: CompoundKeyPart): number {\n if (value === null || typeof value === 'boolean') {\n return 3;\n }\n if (typeof value === 'number') {\n writeSortableNumber(sortableNumberView, value);\n return escapedByteLength(sortableNumberBytes) + 2;\n }\n if (typeof value === 'string') {\n return 1 + walkUtf8(value, null, 0, true) + 2;\n }\n if (value instanceof Uint8Array) {\n return 1 + escapedByteLength(value) + 2;\n }\n throw new TypeError('compound key parts must be string, number, boolean, null, or Uint8Array');\n}\nfunction writeCompoundPart(out: Uint8Array, offset: number, value: CompoundKeyPart): number {\n if (value === null) {\n out[offset] = TYPE_NULL;\n return writeTerminator(out, offset + 1);\n }\n if (typeof value === 'boolean') {\n out[offset] = value ? TYPE_TRUE : TYPE_FALSE;\n return writeTerminator(out, offset + 1);\n }\n if (typeof value === 'number') {\n writeSortableNumber(sortableNumberView, value);\n return writeTerminator(out, writeEscapedBytes(out, offset, sortableNumberBytes));\n }\n if (typeof value === 'string') {\n out[offset] = TYPE_STRING;\n return writeTerminator(out, walkUtf8(value, out, offset + 1, true));\n }\n if (value instanceof Uint8Array) {\n out[offset] = TYPE_BYTES;\n return writeTerminator(out, writeEscapedBytes(out, offset + 1, value));\n }\n throw new TypeError('compound key parts must be string, number, boolean, null, or Uint8Array');\n}\nfunction encodeCompoundBytes(parts: ReadonlyArray<Uint8Array>): Uint8Array {\n let length = 0;\n for (let index = 0; index < parts.length; index += 1) {\n length += escapedByteLength(parts[index]) + 2;\n }\n const out = new Uint8Array(length);\n let offset = 0;\n for (let index = 0; index < parts.length; index += 1) {\n offset = writeTerminator(out, writeEscapedBytes(out, offset, parts[index]));\n }\n return out;\n}\nfunction escapedByteLength(bytes: Uint8Array): number {\n let extra = 0;\n for (let index = 0; index < bytes.length; index += 1) {\n if (bytes[index] === COMPOUND_ESCAPE) {\n extra += 1;\n }\n }\n return bytes.length + extra;\n}\nfunction writeEscapedBytes(out: Uint8Array, offset: number, bytes: Uint8Array): number {\n for (let index = 0; index < bytes.length; index += 1) {\n const byte = bytes[index];\n if (byte === COMPOUND_ESCAPE) {\n out[offset] = COMPOUND_ESCAPE;\n out[offset + 1] = COMPOUND_ESCAPE_CONT;\n offset += 2;\n } else {\n out[offset] = byte;\n offset += 1;\n }\n }\n return offset;\n}\nfunction writeTerminator(out: Uint8Array, offset: number): number {\n out[offset] = COMPOUND_TERM;\n out[offset + 1] = COMPOUND_TERM;\n return offset + 2;\n}\nfunction encodeStringKey(value: string): Uint8Array {\n const length = walkUtf8(value, null, 0, false);\n const out = new Uint8Array(1 + length);\n out[0] = TYPE_STRING;\n walkUtf8(value, out, 1, false);\n return out;\n}\n// Reject lone surrogates so distinct keys cannot collapse to U+FFFD.\nfunction walkUtf8(value: string, out: Uint8Array | null, offset: number, escapeNul: boolean): number {\n for (let index = 0; index < value.length; index += 1) {\n const code = value.charCodeAt(index);\n if (code <= 0x7f) {\n if (escapeNul && code === 0) {\n if (out !== null) {\n out[offset] = COMPOUND_ESCAPE;\n out[offset + 1] = COMPOUND_ESCAPE_CONT;\n }\n offset += 2;\n } else {\n if (out !== null) {\n out[offset] = code;\n }\n offset += 1;\n }\n continue;\n }\n if (code <= 0x7ff) {\n if (out !== null) {\n out[offset] = 0xc0 | (code >> 6);\n out[offset + 1] = 0x80 | (code & 0x3f);\n }\n offset += 2;\n continue;\n }\n if (code >= 0xd800 && code <= 0xdbff) {\n const next = value.charCodeAt(index + 1);\n if (next >= 0xdc00 && next <= 0xdfff) {\n const point = ((code - 0xd800) << 10) + (next - 0xdc00) + 0x10000;\n if (out !== null) {\n out[offset] = 0xf0 | (point >> 18);\n out[offset + 1] = 0x80 | ((point >> 12) & 0x3f);\n out[offset + 2] = 0x80 | ((point >> 6) & 0x3f);\n out[offset + 3] = 0x80 | (point & 0x3f);\n }\n offset += 4;\n index += 1;\n continue;\n }\n }\n if (code >= 0xd800 && code <= 0xdfff) {\n throw new TypeError('compound key string parts must contain valid Unicode scalar values');\n }\n if (out !== null) {\n out[offset] = 0xe0 | (code >> 12);\n out[offset + 1] = 0x80 | ((code >> 6) & 0x3f);\n out[offset + 2] = 0x80 | (code & 0x3f);\n }\n offset += 3;\n }\n return offset;\n}\nfunction encodeSortableNumber(value: number): Uint8Array {\n const bytes = new Uint8Array(9);\n writeSortableNumber(new DataView(bytes.buffer), value);\n return bytes;\n}\nfunction writeSortableNumber(view: DataView, value: number): void {\n if (!Number.isFinite(value)) {\n throw new TypeError('compound key number parts must be finite');\n }\n const normalized = Object.is(value, -0) ? 0 : value;\n view.setUint8(0, TYPE_NUMBER);\n view.setFloat64(1, normalized, false);\n let bits = view.getBigUint64(1, false);\n bits = (bits & (1n << 63n)) !== 0n ? ~bits & F64_MASK : bits ^ (1n << 63n);\n view.setBigUint64(1, bits, false);\n}\n","import { InvalidOpenOptionsError, InvalidRangeError, ReservedStoreNameError, SerializationError } from './errors';\nimport { compareStringsByCodeUnit } from './internal';\nimport { encodeCompoundKeyParts, encodeIndexScalar, utf8Encode } from './codec';\nimport type { IndexDef, Range } from './types';\nconst fatalDecoder = new TextDecoder('utf-8', { fatal: true });\nconst MISSING = Symbol('moyodb.indexing.missing');\nconst FNV64_OFFSET = BigInt('0xcbf29ce484222325');\nconst FNV64_PRIME = BigInt('0x100000001b3');\nconst FNV64_MASK = BigInt('0xffffffffffffffff');\n// Persisted store names use this legacy namespace. Renaming requires a migration.\nconst INTERNAL_STORE_PREFIX = '__browserdb:';\nconst INTERNAL_INDEX_STORE_PREFIX = '__browserdb:index:';\nexport const INDEX_METADATA_STORE = '__browserdb:indexes';\nexport interface NormalizedIndexDef {\n store: string;\n name: string;\n keyPath: string[];\n compound: boolean;\n unique: boolean;\n internalStore: string;\n}\nexport interface DecodedIndexEntryKey {\n logicalKey: Uint8Array;\n primaryKey: Uint8Array;\n}\nexport function isInternalStoreName(name: string): boolean {\n return name.startsWith(INTERNAL_STORE_PREFIX);\n}\nexport function assertPublicStoreName(name: string): void {\n if (isInternalStoreName(name)) {\n throw new ReservedStoreNameError(`reserved store name: ${name}`);\n }\n}\nexport function normalizeIndexDefinitions(value: unknown): NormalizedIndexDef[] {\n if (value === undefined) {\n return [];\n }\n if (!Array.isArray(value)) {\n throw new InvalidOpenOptionsError('indexes must be an array');\n }\n const normalized: NormalizedIndexDef[] = [];\n const identities = new Set<string>();\n const internalStores = new Map<string, string>();\n for (const entry of value) {\n if (entry === null || typeof entry !== 'object' || Array.isArray(entry)) {\n throw new InvalidOpenOptionsError('each index definition must be an object');\n }\n const { store, name, keyPath, unique } = entry as {\n store?: unknown;\n name?: unknown;\n keyPath?: unknown;\n unique?: unknown;\n };\n if (typeof store !== 'string' || store.length === 0) {\n throw new InvalidOpenOptionsError('index store must be a non-empty string');\n }\n if (typeof name !== 'string' || name.length === 0) {\n throw new InvalidOpenOptionsError('index name must be a non-empty string');\n }\n assertPublicStoreName(store);\n const keyPathInfo = normalizeIndexKeyPath(keyPath);\n if (unique !== undefined && typeof unique !== 'boolean') {\n throw new InvalidOpenOptionsError('index unique must be a boolean');\n }\n const def: NormalizedIndexDef = {\n store,\n name,\n keyPath: keyPathInfo.paths,\n compound: keyPathInfo.compound,\n unique: unique ?? false,\n internalStore: makeInternalIndexStoreName(store, name)\n };\n const identity = indexDefinitionIdentity(def.store, def.name);\n if (identities.has(identity)) {\n throw new InvalidOpenOptionsError(`duplicate index definition ${def.store}.${def.name}`);\n }\n identities.add(identity);\n const mappedIdentity = internalStores.get(def.internalStore);\n if (mappedIdentity && mappedIdentity !== identity) {\n throw new InvalidOpenOptionsError(\n `index definitions ${mappedIdentity} and ${identity} map to the same internal store ${def.internalStore}`\n );\n }\n internalStores.set(def.internalStore, identity);\n normalized.push(def);\n }\n normalized.sort(compareNormalizedIndexDefinitions);\n return normalized;\n}\nexport function compareNormalizedIndexDefinitions(left: NormalizedIndexDef, right: NormalizedIndexDef): number {\n const storeCompare = compareStringsByCodeUnit(left.store, right.store);\n if (storeCompare !== 0) {\n return storeCompare;\n }\n const nameCompare = compareStringsByCodeUnit(left.name, right.name);\n if (nameCompare !== 0) {\n return nameCompare;\n }\n const uniqueCompare = Number(left.unique) - Number(right.unique);\n if (uniqueCompare !== 0) {\n return uniqueCompare;\n }\n return compareStringsByCodeUnit(serializeIndexKeyPath(left), serializeIndexKeyPath(right));\n}\nexport function indexDefinitionIdentity(store: string, name: string): string {\n return JSON.stringify([store, name]);\n}\nexport function findIndexDefinition(\n defs: ReadonlyArray<NormalizedIndexDef>,\n store: string,\n name: string\n): NormalizedIndexDef | null {\n return defs.find((def) => def.store === store && def.name === name) ?? null;\n}\nexport function indexesForStore(defs: ReadonlyArray<NormalizedIndexDef>, store: string): NormalizedIndexDef[] {\n return defs.filter((def) => def.store === store);\n}\nexport function encodeIndexMetadataKey(store: string, name: string): Uint8Array {\n return encodeCompoundKeyParts([utf8Encode(store), utf8Encode(name)]);\n}\nexport function encodeIndexMetadataValue(def: NormalizedIndexDef): Uint8Array {\n return utf8Encode(JSON.stringify(toPublicIndexDefinition(def)));\n}\nexport function decodeIndexMetadataValue(bytes: Uint8Array): NormalizedIndexDef {\n let parsed: unknown;\n try {\n parsed = JSON.parse(fatalDecoder.decode(bytes));\n const [def] = normalizeIndexDefinitions([parsed]);\n return def;\n } catch (error) {\n throw new SerializationError(`invalid persisted index metadata: ${String(error)}`);\n }\n}\nexport function encodeIndexEntryKey(logicalIndexKey: Uint8Array, primaryKey: Uint8Array): Uint8Array {\n const out = new Uint8Array(compoundEncodedLength(logicalIndexKey) + compoundEncodedLength(primaryKey));\n const primaryAt = writeCompoundPart(out, 0, logicalIndexKey);\n writeCompoundPart(out, primaryAt, primaryKey);\n return out;\n}\nexport function decodeIndexEntryKey(bytes: Uint8Array): DecodedIndexEntryKey {\n try {\n return decodeTwoPartIndexKey(bytes);\n } catch (error) {\n if (error instanceof SerializationError) {\n throw error;\n }\n throw new SerializationError(`invalid index entry key encoding: ${String(error)}`);\n }\n}\nexport function indexKeyExactRange(logicalIndexKey: Uint8Array): Range {\n const gte = encodeCompoundPrefix(logicalIndexKey);\n const lt = advanceEncodedPrefix(gte.slice());\n return lt ? { gte, lt } : { gte };\n}\n/** WASM `usize` is 32-bit, so this is the largest limit the engine can accept. */\nexport const MAX_ENGINE_SCAN_LIMIT = 0xffff_ffff;\n\n/**\n * Bounds and limits follow the engine `RangeSpec` contract.\n * Conflicting bounds and a limit the engine cannot store are `InvalidRangeError`.\n */\nexport function assertValidScanRange(range: Range = {}): void {\n if (range.gt !== undefined && range.gte !== undefined) {\n throw new InvalidRangeError('range cannot include both gt and gte');\n }\n if (range.lt !== undefined && range.lte !== undefined) {\n throw new InvalidRangeError('range cannot include both lt and lte');\n }\n if (\n range.limit !== undefined &&\n (!Number.isSafeInteger(range.limit) || range.limit < 0 || range.limit > MAX_ENGINE_SCAN_LIMIT)\n ) {\n throw new InvalidRangeError('limit must be an integer between 0 and 4294967295');\n }\n}\n\nexport function indexRangeToPhysicalRange(range: Range = {}): Range {\n assertValidScanRange(range);\n const physical: Range = {};\n if (range.reverse !== undefined) {\n physical.reverse = range.reverse;\n }\n if (range.limit !== undefined) {\n physical.limit = range.limit;\n }\n if (range.gte) {\n physical.gte = encodeCompoundPrefix(range.gte);\n }\n if (range.gt) {\n const lower = advanceEncodedPrefix(encodeCompoundPrefix(range.gt));\n if (lower) {\n physical.gte = lower;\n }\n }\n if (range.lt) {\n physical.lt = encodeCompoundPrefix(range.lt);\n }\n if (range.lte) {\n const upper = advanceEncodedPrefix(encodeCompoundPrefix(range.lte));\n if (upper) {\n physical.lt = upper;\n }\n }\n return physical;\n}\nexport function extractLogicalIndexKey(def: NormalizedIndexDef, valueBytes: Uint8Array): Uint8Array | null {\n return extractLogicalIndexKeyFromDocument(def, decodeIndexedDocument(valueBytes));\n}\n/**\n * Reuse the decoded document only within one synchronous mutation plan.\n * Lazy decoding preserves validation order. Do not retain the extractor\n * across operations or an await.\n */\nexport function createIndexKeyExtractor(valueBytes: Uint8Array): (def: NormalizedIndexDef) => Uint8Array | null {\n let decoded = false;\n let documentValue: unknown;\n return (def) => {\n if (!decoded) {\n documentValue = decodeIndexedDocument(valueBytes);\n decoded = true;\n }\n return extractLogicalIndexKeyFromDocument(def, documentValue);\n };\n}\nexport function extractLogicalIndexKeyFromDocument(def: NormalizedIndexDef, documentValue: unknown): Uint8Array | null {\n if (def.compound) {\n const parts: Uint8Array[] = [];\n for (const keyPath of def.keyPath) {\n const resolved = resolveKeyPath(documentValue, keyPath);\n if (resolved === MISSING) {\n return null;\n }\n parts.push(encodeDocumentIndexValue(resolved));\n }\n return encodeCompoundKeyParts(parts);\n }\n const resolved = resolveKeyPath(documentValue, def.keyPath[0]);\n if (resolved === MISSING) {\n return null;\n }\n return encodeDocumentIndexValue(resolved);\n}\nexport function serializeNormalizedIndexDefinitions(defs: ReadonlyArray<NormalizedIndexDef>): string {\n return JSON.stringify(toPublicIndexDefinitions(defs));\n}\nexport function cloneNormalizedIndexDefinitions(defs: ReadonlyArray<NormalizedIndexDef>): NormalizedIndexDef[] {\n return defs.map((def) => ({\n store: def.store,\n name: def.name,\n keyPath: [...def.keyPath],\n compound: def.compound,\n unique: def.unique,\n internalStore: def.internalStore\n }));\n}\nexport function toPublicIndexDefinitions(defs: ReadonlyArray<NormalizedIndexDef>): IndexDef[] {\n return defs.map(toPublicIndexDefinition);\n}\nfunction toPublicIndexDefinition(def: NormalizedIndexDef): IndexDef {\n return {\n store: def.store,\n name: def.name,\n keyPath: def.compound ? [...def.keyPath] : def.keyPath[0],\n unique: def.unique\n };\n}\nfunction normalizeIndexKeyPath(value: unknown): {\n paths: string[];\n compound: boolean;\n} {\n if (typeof value === 'string') {\n validateSingleKeyPath(value);\n return { paths: [value], compound: false };\n }\n if (\n !Array.isArray(value) ||\n value.length === 0 ||\n !value.every((item): item is string => typeof item === 'string')\n ) {\n throw new InvalidOpenOptionsError('index keyPath must be a non-empty string or non-empty string[]');\n }\n for (const path of value) {\n validateSingleKeyPath(path);\n }\n return { paths: [...value], compound: true };\n}\nfunction validateSingleKeyPath(value: string): void {\n if (value.length === 0) {\n throw new InvalidOpenOptionsError('index keyPath strings must be non-empty');\n }\n if (value.startsWith('.') || value.endsWith('.') || value.includes('..')) {\n throw new InvalidOpenOptionsError(`invalid index keyPath: ${value}`);\n }\n}\nfunction serializeIndexKeyPath(def: NormalizedIndexDef): string {\n return def.compound ? `[${def.keyPath.join(',')}]` : def.keyPath[0];\n}\nfunction makeInternalIndexStoreName(store: string, name: string): string {\n const storeToken = base64Url(utf8Encode(store));\n const nameToken = base64Url(utf8Encode(name));\n const candidate = `${INTERNAL_INDEX_STORE_PREFIX}${storeToken}:${nameToken}`;\n if (utf8Encode(candidate).length <= 255) {\n return candidate;\n }\n // Preserve the persisted hash format. Normalization rejects distinct\n // identities that map to the same internal store, including separator collisions.\n const payload = utf8Encode(`${store}\\u0000${name}`);\n return `${INTERNAL_INDEX_STORE_PREFIX}h:${fnv1a64Hex(payload)}`;\n}\nfunction base64Url(bytes: Uint8Array): string {\n let binary = '';\n for (const byte of bytes) {\n binary += String.fromCharCode(byte);\n }\n return btoa(binary).replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=+$/u, '');\n}\nfunction fnv1a64Hex(bytes: Uint8Array): string {\n let hash = FNV64_OFFSET;\n for (const byte of bytes) {\n hash ^= BigInt(byte);\n hash = (hash * FNV64_PRIME) & FNV64_MASK;\n }\n return hash.toString(16).padStart(16, '0');\n}\nexport function decodeIndexedDocument(bytes: Uint8Array): unknown {\n try {\n return JSON.parse(fatalDecoder.decode(bytes));\n } catch (error) {\n throw new SerializationError(`indexed values must be valid UTF-8 JSON: ${String(error)}`);\n }\n}\nfunction resolveKeyPath(root: unknown, keyPath: string): unknown {\n let current: unknown = root;\n for (const segment of keyPath.split('.')) {\n // JSON strings and numbers have no nested fields. Boxing them would index\n // UTF-16 code units and string length, which JSON.stringify does not preserve.\n if (current === null || typeof current !== 'object') {\n return MISSING;\n }\n if (!Object.hasOwn(current, segment)) {\n return MISSING;\n }\n current = Reflect.get(current, segment);\n }\n return current;\n}\nfunction encodeDocumentIndexValue(value: unknown): Uint8Array {\n if (\n value === null ||\n typeof value === 'string' ||\n typeof value === 'number' ||\n typeof value === 'boolean' ||\n value instanceof Uint8Array\n ) {\n try {\n return encodeIndexScalar(value);\n } catch (error) {\n if (error instanceof TypeError) {\n throw new SerializationError(`invalid indexed keyPath value: ${error.message}`);\n }\n throw error;\n }\n }\n throw new SerializationError(\n `indexed keyPath values must resolve to string, number, boolean, null, or Uint8Array; got ${describeValue(value)}`\n );\n}\nfunction describeValue(value: unknown): string {\n if (Array.isArray(value)) {\n return 'array';\n }\n return typeof value;\n}\nconst INDEX_KEY_ESCAPE = 0x00;\nconst INDEX_KEY_ESCAPE_CONT = 0xff;\nconst INDEX_KEY_TERM = 0x00;\nfunction compoundEncodedLength(part: Uint8Array): number {\n let zeros = 0;\n const length = part.length;\n for (let index = 0; index < length; index += 1) {\n if (part[index] === INDEX_KEY_ESCAPE) {\n zeros += 1;\n }\n }\n return length + zeros + 2;\n}\nfunction writeCompoundPart(out: Uint8Array, offset: number, part: Uint8Array): number {\n const length = part.length;\n for (let index = 0; index < length; index += 1) {\n const byte = part[index];\n if (byte === INDEX_KEY_ESCAPE) {\n out[offset] = INDEX_KEY_ESCAPE;\n out[offset + 1] = INDEX_KEY_ESCAPE_CONT;\n offset += 2;\n } else {\n out[offset] = byte;\n offset += 1;\n }\n }\n out[offset] = INDEX_KEY_TERM;\n out[offset + 1] = INDEX_KEY_TERM;\n return offset + 2;\n}\nfunction encodeCompoundPrefix(part: Uint8Array): Uint8Array {\n const out = new Uint8Array(compoundEncodedLength(part));\n writeCompoundPart(out, 0, part);\n return out;\n}\n// In-place prefixSuccessor. Compound prefixes end in 0x00, so the final byte\n// advances inside this buffer instead of allocating a second copy.\nfunction advanceEncodedPrefix(prefix: Uint8Array): Uint8Array | null {\n for (let index = prefix.length - 1; index >= 0; index -= 1) {\n if (prefix[index] !== 0xff) {\n prefix[index] += 1;\n return index + 1 === prefix.length ? prefix : prefix.subarray(0, index + 1);\n }\n }\n return null;\n}\n// Count both parts, then fill exact buffers. splitCompoundKey would also build a\n// temporary number list for every byte of every scanned index row.\nfunction decodeTwoPartIndexKey(bytes: Uint8Array): DecodedIndexEntryKey {\n const cursor = { unescaped: 0, end: 0 };\n if (!readCompoundPart(bytes, 0, cursor)) {\n throw new SerializationError('invalid index entry key encoding');\n }\n const logicalLength = cursor.unescaped;\n const primaryStart = cursor.end;\n if (!readCompoundPart(bytes, primaryStart, cursor)) {\n throw new SerializationError('invalid index entry key encoding');\n }\n const primaryLength = cursor.unescaped;\n let end = cursor.end;\n if (end !== bytes.length) {\n for (;;) {\n if (!readCompoundPart(bytes, end, cursor)) {\n throw new SerializationError('invalid index entry key encoding');\n }\n if (cursor.end <= end) {\n throw new TypeError('invalid compound key encoding');\n }\n end = cursor.end;\n if (end === bytes.length) {\n throw new SerializationError('invalid index entry key encoding');\n }\n }\n }\n const logicalKey = new Uint8Array(logicalLength);\n const primaryKey = new Uint8Array(primaryLength);\n copyUnescapedPart(bytes, 0, logicalKey);\n copyUnescapedPart(bytes, primaryStart, primaryKey);\n return { logicalKey, primaryKey };\n}\nfunction readCompoundPart(bytes: Uint8Array, start: number, cursor: { unescaped: number; end: number }): boolean {\n if (start >= bytes.length) {\n return false;\n }\n let unescaped = 0;\n for (let index = start; index < bytes.length; index += 1) {\n const byte = bytes[index];\n if (byte !== INDEX_KEY_ESCAPE) {\n unescaped += 1;\n continue;\n }\n const next = bytes[index + 1];\n if (next === INDEX_KEY_ESCAPE_CONT) {\n unescaped += 1;\n index += 1;\n continue;\n }\n if (next === INDEX_KEY_TERM) {\n cursor.unescaped = unescaped;\n cursor.end = index + 2;\n return true;\n }\n throw new TypeError('invalid compound key encoding');\n }\n throw new TypeError('compound key terminated unexpectedly');\n}\nfunction copyUnescapedPart(bytes: Uint8Array, start: number, out: Uint8Array): void {\n const needed = out.length;\n let offset = 0;\n for (let index = start; offset < needed; index += 1) {\n const byte = bytes[index];\n if (byte !== INDEX_KEY_ESCAPE) {\n out[offset] = byte;\n offset += 1;\n continue;\n }\n if (bytes[index + 1] === INDEX_KEY_ESCAPE_CONT) {\n out[offset] = INDEX_KEY_ESCAPE;\n offset += 1;\n index += 1;\n continue;\n }\n return;\n }\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../src/codec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAcrC,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,UAAU,CAAC;AAC5E,MAAM,MAAM,iBAAiB,GAAG,eAAe,CAAC;AAChD,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAEpD;AACD,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAEpD;AACD,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,CAMrD;AACD,wBAAgB,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,GAAG,CAAC,CAElD;AACD,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,CAezD;AAMD,wBAAgB,QAAQ,CAAC,KAAK,EAAE,eAAe,GAAG,aAAa,CAAC,eAAe,CAAC,GAAG,UAAU,CAK5F;AACD,wBAAgB,WAAW,CAAC,GAAG,KAAK,EAAE,eAAe,EAAE,GAAG,UAAU,CAEnE;AACD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,iBAAiB,GAAG,UAAU,CAEtE;AACD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,aAAa,CAAC,UAAU,CAAC,GAAG,UAAU,CAEnF;AACD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,UAAU,GAAG,UAAU,EAAE,CA2B9D;AACD,wBAAgB,eAAe,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,GAAG,IAAI,CASrE;AACD,wBAAgB,WAAW,CAAC,MAAM,EAAE,UAAU,GAAG,KAAK,CAGrD;AACD,wBAAgB,gBAAgB,CAAC,GAAG,KAAK,EAAE,eAAe,EAAE,GAAG,KAAK,CAEnE"}
1
+ {"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../src/codec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAgBrC,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,UAAU,CAAC;AAC5E,MAAM,MAAM,iBAAiB,GAAG,eAAe,CAAC;AAChD,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAEpD;AACD,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAEpD;AACD,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,CAMrD;AACD,wBAAgB,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,GAAG,CAAC,CAElD;AACD,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,CAezD;AAMD,wBAAgB,QAAQ,CAAC,KAAK,EAAE,eAAe,GAAG,aAAa,CAAC,eAAe,CAAC,GAAG,UAAU,CAK5F;AACD,wBAAgB,WAAW,CAAC,GAAG,KAAK,EAAE,eAAe,EAAE,GAAG,UAAU,CAEnE;AACD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,iBAAiB,GAAG,UAAU,CAEtE;AACD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,aAAa,CAAC,UAAU,CAAC,GAAG,UAAU,CAEnF;AACD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,UAAU,GAAG,UAAU,EAAE,CA6C9D;AACD,wBAAgB,eAAe,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,GAAG,IAAI,CAYrE;AACD,wBAAgB,WAAW,CAAC,MAAM,EAAE,UAAU,GAAG,KAAK,CAGrD;AACD,wBAAgB,gBAAgB,CAAC,GAAG,KAAK,EAAE,eAAe,EAAE,GAAG,KAAK,CAEnE"}
@@ -1 +1 @@
1
- {"version":3,"file":"compression.d.ts","sourceRoot":"","sources":["../src/compression.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AACxE,MAAM,MAAM,iBAAiB,GAAG,eAAe,GAAG,KAAK,CAAC;AAWxD,eAAO,MAAM,iCAAiC,OAAO,CAAC;AACtD,eAAO,MAAM,0CAA0C,KAAK,CAAC;AAC7D,eAAO,MAAM,sCAAsC,IAAI,CAAC;AACxD,eAAO,MAAM,2CAA2C,QAAY,CAAC;AACrE,eAAO,MAAM,8CAA8C,OAAO,CAAC;AACnE,eAAO,MAAM,8CAA8C,IAAI,CAAC;AAChE,eAAO,MAAM,sCAAsC,KAAuB,CAAC;AA+B3E,MAAM,MAAM,wBAAwB,GAAG;IACnC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC,CAAC;AAmIF,wBAAgB,2BAA2B,CACvC,KAAK,EAAE,UAAU,EACjB,WAAW,EAAE,QAAQ,GAAG,KAAK,GAC9B,wBAAwB,CAe1B;AACD,wBAAgB,6BAA6B,CACzC,MAAM,EAAE,wBAAwB,EAChC,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,MAAM,GACf,MAAM,CAUR;AAsHD,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,iBAAiB,CAc1E;AACD,wBAAsB,sBAAsB,CAAC,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC,CAgBnH;AACD,wBAAsB,sBAAsB,CACxC,KAAK,EAAE,UAAU,EACjB,OAAO,EAAE;IACL,MAAM,EAAE,OAAO,CAAC;CACnB,GACF,OAAO,CAAC,UAAU,CAAC,CAqDrB;AACD,wBAAsB,2BAA2B,CAC7C,QAAQ,EAAE,UAAU,EACpB,WAAW,EAAE,uBAAuB,GAAG,KAAK,GAC7C,OAAO,CAAC,UAAU,CAAC,CAUrB;AACD,wBAAsB,yBAAyB,CAAC,QAAQ,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAsCzF"}
1
+ {"version":3,"file":"compression.d.ts","sourceRoot":"","sources":["../src/compression.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AACxE,MAAM,MAAM,iBAAiB,GAAG,eAAe,GAAG,KAAK,CAAC;AAWxD,eAAO,MAAM,iCAAiC,OAAO,CAAC;AACtD,eAAO,MAAM,0CAA0C,KAAK,CAAC;AAC7D,eAAO,MAAM,sCAAsC,IAAI,CAAC;AACxD,eAAO,MAAM,2CAA2C,QAAY,CAAC;AACrE,eAAO,MAAM,8CAA8C,OAAO,CAAC;AACnE,eAAO,MAAM,8CAA8C,IAAI,CAAC;AAChE,eAAO,MAAM,sCAAsC,KAAuB,CAAC;AA+B3E,MAAM,MAAM,wBAAwB,GAAG;IACnC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC,CAAC;AA4JF,wBAAgB,2BAA2B,CACvC,KAAK,EAAE,UAAU,EACjB,WAAW,EAAE,QAAQ,GAAG,KAAK,GAC9B,wBAAwB,CAe1B;AACD,wBAAgB,6BAA6B,CACzC,MAAM,EAAE,wBAAwB,EAChC,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,MAAM,GACf,MAAM,CAUR;AAwJD,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,iBAAiB,CAc1E;AACD,wBAAsB,sBAAsB,CAAC,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC,CA6BnH;AACD,wBAAsB,sBAAsB,CACxC,KAAK,EAAE,UAAU,EACjB,OAAO,EAAE;IACL,MAAM,EAAE,OAAO,CAAC;CACnB,GACF,OAAO,CAAC,UAAU,CAAC,CAqDrB;AACD,wBAAsB,2BAA2B,CAC7C,QAAQ,EAAE,UAAU,EACpB,WAAW,EAAE,uBAAuB,GAAG,KAAK,GAC7C,OAAO,CAAC,UAAU,CAAC,CAyBrB;AACD,wBAAsB,yBAAyB,CAAC,QAAQ,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAsCzF"}
@@ -1 +1 @@
1
- {"version":3,"file":"demo.d.ts","sourceRoot":"","sources":["../src/demo.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,WAAW,EACX,eAAe,EACf,gBAAgB,EAChB,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,UAAU,EACV,MAAM,EACN,WAAW,EACX,eAAe,EACf,gBAAgB,EAChB,sBAAsB,EACtB,UAAU,EACV,UAAU,EAEb,MAAM,SAAS,CAAC;AAEjB,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,MAAM;QACZ,MAAM,EAAE;YACJ,MAAM,EAAE,OAAO,MAAM,CAAC;YACtB,eAAe,EAAE,OAAO,eAAe,CAAC;YACxC,QAAQ,EAAE,OAAO,QAAQ,CAAC;YAC1B,UAAU,EAAE,OAAO,UAAU,CAAC;YAC9B,UAAU,EAAE,OAAO,UAAU,CAAC;YAC9B,UAAU,EAAE,OAAO,UAAU,CAAC;YAC9B,UAAU,EAAE,OAAO,UAAU,CAAC;YAC9B,QAAQ,EAAE,OAAO,QAAQ,CAAC;YAC1B,WAAW,EAAE,OAAO,WAAW,CAAC;YAChC,gBAAgB,EAAE,OAAO,gBAAgB,CAAC;YAC1C,WAAW,EAAE,OAAO,WAAW,CAAC;YAChC,eAAe,EAAE,OAAO,eAAe,CAAC;YACxC,gBAAgB,EAAE,OAAO,gBAAgB,CAAC;YAC1C,sBAAsB,EAAE,OAAO,sBAAsB,CAAC;SACzD,CAAC;KACL;CACJ"}
1
+ {"version":3,"file":"demo.d.ts","sourceRoot":"","sources":["../src/demo.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,WAAW,EACX,eAAe,EACf,gBAAgB,EAChB,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,UAAU,EACV,MAAM,EACN,WAAW,EACX,eAAe,EACf,gBAAgB,EAChB,sBAAsB,EACtB,UAAU,EACV,UAAU,EAGb,MAAM,SAAS,CAAC;AAEjB,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,MAAM;QACZ,MAAM,EAAE;YACJ,MAAM,EAAE,OAAO,MAAM,CAAC;YACtB,eAAe,EAAE,OAAO,eAAe,CAAC;YACxC,QAAQ,EAAE,OAAO,QAAQ,CAAC;YAC1B,UAAU,EAAE,OAAO,UAAU,CAAC;YAC9B,UAAU,EAAE,OAAO,UAAU,CAAC;YAC9B,UAAU,EAAE,OAAO,UAAU,CAAC;YAC9B,UAAU,EAAE,OAAO,UAAU,CAAC;YAC9B,QAAQ,EAAE,OAAO,QAAQ,CAAC;YAC1B,WAAW,EAAE,OAAO,WAAW,CAAC;YAChC,gBAAgB,EAAE,OAAO,gBAAgB,CAAC;YAC1C,WAAW,EAAE,OAAO,WAAW,CAAC;YAChC,eAAe,EAAE,OAAO,eAAe,CAAC;YACxC,gBAAgB,EAAE,OAAO,gBAAgB,CAAC;YAC1C,sBAAsB,EAAE,OAAO,sBAAsB,CAAC;SACzD,CAAC;KACL;CACJ"}
@@ -19,7 +19,7 @@ Rust/WASM transactional database for browsers, Node.js, and native Rust applicat
19
19
 
20
20
  It provides ordered keys, typed records, SQL queries, indexes, snapshots, TTL, and recovery checks. Browser storage uses OPFS; Node.js and native Rust storage use local files. The SDK runs storage operations in a worker.
21
21
 
22
- Version 1.3.0 creates fresh databases with storage format 2. Format 1 databases are rejected before their files are changed; no in-place migration is provided. Self-contained snapshot versions 1–3 can be imported into a fresh format 2 database. The Release 1.0.1 public API, key and index encodings remain covered by historical fixtures. Unknown storage formats fail before modifying durable data.
22
+ Version 1.5.0 creates fresh databases with storage format 2. Format 1 databases are rejected before their files are changed; no in-place migration is provided. Self-contained snapshot versions 1–3 can be imported into a fresh format 2 database. The Release 1.0.1 public API, key and index encodings remain covered by historical fixtures. Unknown storage formats fail before modifying durable data.
23
23
 
24
24
  Large values use immutable contiguous `PAY2` extents in the main file. Leaf cells with value kind `External` (3) store a descriptor and an optional prefix. Payload bodies are flushed before their references enter the WAL. B-tree page and WAL record layouts retain `PAG1` and `WAL1`; the manifest's format version distinguishes the new storage contract.
25
25
 
@@ -30,7 +30,7 @@ New SDK stores use Snappy compression by default for values of at least 1,024 by
30
30
  ## Quick start
31
31
 
32
32
  ```bash
33
- npm install @moyodb/sdk@1.3.0
33
+ npm install @moyodb/sdk@1.5.0
34
34
  ```
35
35
 
36
36
  ```ts
@@ -68,6 +68,8 @@ const db = await openDB('app', { workerMode: 'shared' });
68
68
 
69
69
  Pages from the same origin share a storage owner through SharedWorker. Each client owns its transactions. Closing one handle preserves the other clients. When the page hosting the storage worker closes, another page reopens storage; database handles remain usable and active transactions receive invalidation.
70
70
 
71
+ Shared mode requires trusted same-origin scripts and clients. The selected hosting page supplies the storage worker endpoint. A client that supplies a different endpoint can observe other clients' operations, including uncommitted values and imported snapshots, and forge results. Session-local transaction and cursor IDs separate handle ownership and cleanup. They do not authenticate the storage endpoint or protect clients from a malicious host. Same-origin scripts already share access to the origin's OPFS and committed database state. Use separate origins for applications that do not trust each other.
72
+
71
73
  Read and write transactions can overlap. Readers retain their snapshots. Commits publish sequentially; a writer whose snapshot is stale closes with `TransactionConflictError` before writing its changes. Start a new transaction to retry. Schema upgrades have one migration owner.
72
74
 
73
75
  ```ts
@@ -70,6 +70,7 @@ export class WasmEngine {
70
70
  has_many(tx_id: bigint, store: string, keys: any): any;
71
71
  health(): any;
72
72
  import_snapshot(data: Uint8Array): bigint;
73
+ import_snapshot_into(target: WasmEngine, data: Uint8Array): bigint;
73
74
  list_store_configs(): any;
74
75
  list_stores(): any;
75
76
  needs_recovery(): boolean;
@@ -168,6 +169,7 @@ export interface InitOutput {
168
169
  readonly wasmengine_has_many: (a: number, b: number, c: bigint, d: number, e: number, f: number) => void;
169
170
  readonly wasmengine_health: (a: number, b: number) => void;
170
171
  readonly wasmengine_import_snapshot: (a: number, b: number, c: number, d: number) => void;
172
+ readonly wasmengine_import_snapshot_into: (a: number, b: number, c: number, d: number, e: number) => void;
171
173
  readonly wasmengine_list_store_configs: (a: number, b: number) => void;
172
174
  readonly wasmengine_list_stores: (a: number, b: number) => void;
173
175
  readonly wasmengine_needs_recovery: (a: number, b: number) => void;
@@ -189,8 +191,8 @@ export interface InitOutput {
189
191
  readonly wasmengine_set_failpoint: (a: number, b: number, c: number) => void;
190
192
  readonly wasmengine_set_schema_version: (a: number, b: number, c: bigint, d: bigint) => void;
191
193
  readonly wasmengine_stats: (a: number, b: number) => void;
192
- readonly __wasm_bindgen_func_elem_901: (a: number, b: number, c: number, d: number) => void;
193
- readonly __wasm_bindgen_func_elem_916: (a: number, b: number, c: number, d: number) => void;
194
+ readonly __wasm_bindgen_func_elem_968: (a: number, b: number, c: number, d: number) => void;
195
+ readonly __wasm_bindgen_func_elem_983: (a: number, b: number, c: number, d: number) => void;
194
196
  readonly __wbindgen_export: (a: number, b: number) => number;
195
197
  readonly __wbindgen_export2: (a: number, b: number, c: number, d: number) => number;
196
198
  readonly __wbindgen_export3: (a: number) => void;
@@ -1,5 +1,5 @@
1
1
  /* @ts-self-types="./moyodb_engine.d.ts" */
2
- import { opfsAppendOffset, opfsCleanupInactiveEntries, opfsCloseSession, opfsDbDirectorySize, opfsFlush, opfsLen, opfsOpenActiveDb, opfsOpenGenerationDb, opfsPrepareRebuildTarget, opfsReadActiveGeneration, opfsReadAtInto, opfsRemoveDb, opfsSwapActiveGeneration, opfsTruncate, opfsWriteAt } from './snippets/moyodb-engine-54a406e33b0fb849/js/opfs_shim.js';
2
+ import { opfsAppendOffset, opfsCleanupInactiveEntries, opfsCloseSession, opfsDbDirectorySize, opfsFlush, opfsLen, opfsOpenActiveDb, opfsOpenGenerationDb, opfsPrepareRebuildTarget, opfsReadActiveGeneration, opfsReadAtInto, opfsRemoveDb, opfsSwapActiveGeneration, opfsTruncate, opfsWriteAt } from './snippets/moyodb-engine-1f8134232168280b/js/opfs_shim.js';
3
3
 
4
4
 
5
5
  export class WasmEngine {
@@ -651,6 +651,29 @@ export class WasmEngine {
651
651
  wasm.__wbindgen_add_to_stack_pointer(16);
652
652
  }
653
653
  }
654
+ /**
655
+ * @param {WasmEngine} target
656
+ * @param {Uint8Array} data
657
+ * @returns {bigint}
658
+ */
659
+ import_snapshot_into(target, data) {
660
+ try {
661
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
662
+ _assertClass(target, WasmEngine);
663
+ const ptr0 = passArray8ToWasm0(data, wasm.__wbindgen_export);
664
+ const len0 = WASM_VECTOR_LEN;
665
+ wasm.wasmengine_import_snapshot_into(retptr, this.__wbg_ptr, target.__wbg_ptr, ptr0, len0);
666
+ var r0 = getDataViewMemory0().getBigInt64(retptr + 8 * 0, true);
667
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
668
+ var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);
669
+ if (r3) {
670
+ throw takeObject(r2);
671
+ }
672
+ return BigInt.asUintN(64, r0);
673
+ } finally {
674
+ wasm.__wbindgen_add_to_stack_pointer(16);
675
+ }
676
+ }
654
677
  /**
655
678
  * @returns {any}
656
679
  */
@@ -1364,7 +1387,7 @@ function __wbg_get_imports() {
1364
1387
  const a = state0.a;
1365
1388
  state0.a = 0;
1366
1389
  try {
1367
- return __wasm_bindgen_func_elem_916(a, state0.b, arg0, arg1);
1390
+ return __wasm_bindgen_func_elem_983(a, state0.b, arg0, arg1);
1368
1391
  } finally {
1369
1392
  state0.a = a;
1370
1393
  }
@@ -1391,53 +1414,53 @@ function __wbg_get_imports() {
1391
1414
  const ret = Date.now();
1392
1415
  return ret;
1393
1416
  },
1394
- __wbg_opfsAppendOffset_079e62a0918675a3: function() { return handleError(function (arg0, arg1) {
1417
+ __wbg_opfsAppendOffset_14d5fe1042317ab6: function() { return handleError(function (arg0, arg1) {
1395
1418
  const ret = opfsAppendOffset(arg0 >>> 0, arg1 >>> 0);
1396
1419
  return ret;
1397
1420
  }, arguments) ?? 0n; },
1398
- __wbg_opfsCleanupInactiveEntries_c6bf5d2d14dfe20d: function() { return handleError(function (arg0, arg1) {
1421
+ __wbg_opfsCleanupInactiveEntries_b6c40efd88612cda: function() { return handleError(function (arg0, arg1) {
1399
1422
  const ret = opfsCleanupInactiveEntries(getStringFromWasm0(arg0, arg1));
1400
1423
  return addHeapObject(ret);
1401
1424
  }, arguments); },
1402
- __wbg_opfsCloseSession_c5985f72939c3aba: function() { return handleError(function (arg0) {
1425
+ __wbg_opfsCloseSession_e9481d37882fdad8: function() { return handleError(function (arg0) {
1403
1426
  opfsCloseSession(arg0 >>> 0);
1404
1427
  }, arguments); },
1405
- __wbg_opfsDbDirectorySize_4ed1accc247da9a5: function() { return handleError(function (arg0, arg1) {
1428
+ __wbg_opfsDbDirectorySize_31df498e3794c22c: function() { return handleError(function (arg0, arg1) {
1406
1429
  const ret = opfsDbDirectorySize(getStringFromWasm0(arg0, arg1));
1407
1430
  return addHeapObject(ret);
1408
1431
  }, arguments); },
1409
- __wbg_opfsFlush_b002f278c816006a: function() { return handleError(function (arg0, arg1) {
1432
+ __wbg_opfsFlush_130c0826d269e6d3: function() { return handleError(function (arg0, arg1) {
1410
1433
  opfsFlush(arg0 >>> 0, arg1 >>> 0);
1411
1434
  }, arguments); },
1412
- __wbg_opfsLen_043f6eaf60974132: function() { return handleError(function (arg0, arg1) {
1435
+ __wbg_opfsLen_31c29330c9c3705d: function() { return handleError(function (arg0, arg1) {
1413
1436
  const ret = opfsLen(arg0 >>> 0, arg1 >>> 0);
1414
1437
  return ret;
1415
1438
  }, arguments) ?? 0n; },
1416
- __wbg_opfsOpenActiveDb_ef3b8f86c1e64ae9: function() { return handleError(function (arg0, arg1, arg2) {
1439
+ __wbg_opfsOpenActiveDb_38712316884cc515: function() { return handleError(function (arg0, arg1, arg2) {
1417
1440
  const ret = opfsOpenActiveDb(getStringFromWasm0(arg0, arg1), arg2 !== 0);
1418
1441
  return addHeapObject(ret);
1419
1442
  }, arguments); },
1420
- __wbg_opfsOpenGenerationDb_93d8ee20c6777ffc: function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) {
1443
+ __wbg_opfsOpenGenerationDb_554026d4c85473ba: function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) {
1421
1444
  const ret = opfsOpenGenerationDb(getStringFromWasm0(arg0, arg1), getStringFromWasm0(arg2, arg3), arg4 !== 0);
1422
1445
  return addHeapObject(ret);
1423
1446
  }, arguments); },
1424
- __wbg_opfsPrepareRebuildTarget_8de6202cb70e0cdb: function() { return handleError(function (arg0, arg1) {
1447
+ __wbg_opfsPrepareRebuildTarget_f7a9a73737f13e64: function() { return handleError(function (arg0, arg1) {
1425
1448
  const ret = opfsPrepareRebuildTarget(getStringFromWasm0(arg0, arg1));
1426
1449
  return addHeapObject(ret);
1427
1450
  }, arguments); },
1428
- __wbg_opfsReadActiveGeneration_671461e389e1c678: function() { return handleError(function (arg0, arg1) {
1451
+ __wbg_opfsReadActiveGeneration_d8aceb9ca38be6d7: function() { return handleError(function (arg0, arg1) {
1429
1452
  const ret = opfsReadActiveGeneration(getStringFromWasm0(arg0, arg1));
1430
1453
  return addHeapObject(ret);
1431
1454
  }, arguments); },
1432
- __wbg_opfsReadAtInto_43f6bbc2f7887ae6: function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) {
1455
+ __wbg_opfsReadAtInto_81672439f836e4d8: function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) {
1433
1456
  const ret = opfsReadAtInto(arg0 >>> 0, arg1 >>> 0, BigInt.asUintN(64, arg2), getArrayU8FromWasm0(arg3, arg4));
1434
1457
  return ret;
1435
1458
  }, arguments); },
1436
- __wbg_opfsRemoveDb_52e0544241d6db70: function() { return handleError(function (arg0, arg1) {
1459
+ __wbg_opfsRemoveDb_0a3cb0d4d82ebf45: function() { return handleError(function (arg0, arg1) {
1437
1460
  const ret = opfsRemoveDb(getStringFromWasm0(arg0, arg1));
1438
1461
  return addHeapObject(ret);
1439
1462
  }, arguments); },
1440
- __wbg_opfsSwapActiveGeneration_19bf7e9afad80e65: function() { return handleError(function (arg0, arg1, arg2, arg3, arg4, arg5) {
1463
+ __wbg_opfsSwapActiveGeneration_8a23e2bff27bdd8e: function() { return handleError(function (arg0, arg1, arg2, arg3, arg4, arg5) {
1441
1464
  let v0;
1442
1465
  if (arg4 !== 0) {
1443
1466
  v0 = getStringFromWasm0(arg4, arg5);
@@ -1446,10 +1469,10 @@ function __wbg_get_imports() {
1446
1469
  const ret = opfsSwapActiveGeneration(getStringFromWasm0(arg0, arg1), getStringFromWasm0(arg2, arg3), v0);
1447
1470
  return addHeapObject(ret);
1448
1471
  }, arguments); },
1449
- __wbg_opfsTruncate_ca91ef811dec439a: function() { return handleError(function (arg0, arg1, arg2) {
1472
+ __wbg_opfsTruncate_3b2d958af4b6461a: function() { return handleError(function (arg0, arg1, arg2) {
1450
1473
  opfsTruncate(arg0 >>> 0, arg1 >>> 0, BigInt.asUintN(64, arg2));
1451
1474
  }, arguments); },
1452
- __wbg_opfsWriteAt_b134ceb0781d605b: function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) {
1475
+ __wbg_opfsWriteAt_6190cee43776582a: function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) {
1453
1476
  const ret = opfsWriteAt(arg0 >>> 0, arg1 >>> 0, BigInt.asUintN(64, arg2), getArrayU8FromWasm0(arg3, arg4));
1454
1477
  return ret;
1455
1478
  }, arguments); },
@@ -1507,7 +1530,7 @@ function __wbg_get_imports() {
1507
1530
  },
1508
1531
  __wbindgen_generic_0000000000000001: function(arg0, arg1) {
1509
1532
  // Cast intrinsic for `Closure(Closure { owned: true, function: Function { arguments: [Externref], shim_idx: 113, ret: Result(Unit), inner_ret: Some(Result(Unit)) }, mutable: true }) -> Externref`.
1510
- const ret = makeMutClosure(arg0, arg1, __wasm_bindgen_func_elem_901);
1533
+ const ret = makeMutClosure(arg0, arg1, __wasm_bindgen_func_elem_968);
1511
1534
  return addHeapObject(ret);
1512
1535
  },
1513
1536
  __wbindgen_generic_0000000000000002: function(arg0) {
@@ -1549,14 +1572,14 @@ function __wbg_get_imports() {
1549
1572
  };
1550
1573
  }
1551
1574
 
1552
- function __wasm_bindgen_func_elem_916(arg0, arg1, arg2, arg3) {
1553
- wasm.__wasm_bindgen_func_elem_916(arg0, arg1, addHeapObject(arg2), addHeapObject(arg3));
1575
+ function __wasm_bindgen_func_elem_983(arg0, arg1, arg2, arg3) {
1576
+ wasm.__wasm_bindgen_func_elem_983(arg0, arg1, addHeapObject(arg2), addHeapObject(arg3));
1554
1577
  }
1555
1578
 
1556
- function __wasm_bindgen_func_elem_901(arg0, arg1, arg2) {
1579
+ function __wasm_bindgen_func_elem_968(arg0, arg1, arg2) {
1557
1580
  try {
1558
1581
  const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
1559
- wasm.__wasm_bindgen_func_elem_901(retptr, arg0, arg1, addHeapObject(arg2));
1582
+ wasm.__wasm_bindgen_func_elem_968(retptr, arg0, arg1, addHeapObject(arg2));
1560
1583
  var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
1561
1584
  var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
1562
1585
  if (r1) {
Binary file
@@ -38,6 +38,7 @@ export const wasmengine_has: (a: number, b: number, c: bigint, d: number, e: num
38
38
  export const wasmengine_has_many: (a: number, b: number, c: bigint, d: number, e: number, f: number) => void;
39
39
  export const wasmengine_health: (a: number, b: number) => void;
40
40
  export const wasmengine_import_snapshot: (a: number, b: number, c: number, d: number) => void;
41
+ export const wasmengine_import_snapshot_into: (a: number, b: number, c: number, d: number, e: number) => void;
41
42
  export const wasmengine_list_store_configs: (a: number, b: number) => void;
42
43
  export const wasmengine_list_stores: (a: number, b: number) => void;
43
44
  export const wasmengine_needs_recovery: (a: number, b: number) => void;
@@ -59,8 +60,8 @@ export const wasmengine_set_change_feed_policy: (a: number, b: number, c: bigint
59
60
  export const wasmengine_set_failpoint: (a: number, b: number, c: number) => void;
60
61
  export const wasmengine_set_schema_version: (a: number, b: number, c: bigint, d: bigint) => void;
61
62
  export const wasmengine_stats: (a: number, b: number) => void;
62
- export const __wasm_bindgen_func_elem_901: (a: number, b: number, c: number, d: number) => void;
63
- export const __wasm_bindgen_func_elem_916: (a: number, b: number, c: number, d: number) => void;
63
+ export const __wasm_bindgen_func_elem_968: (a: number, b: number, c: number, d: number) => void;
64
+ export const __wasm_bindgen_func_elem_983: (a: number, b: number, c: number, d: number) => void;
64
65
  export const __wbindgen_export: (a: number, b: number) => number;
65
66
  export const __wbindgen_export2: (a: number, b: number, c: number, d: number) => number;
66
67
  export const __wbindgen_export3: (a: number) => void;
@@ -2,7 +2,7 @@
2
2
  "name": "moyodb-engine",
3
3
  "type": "module",
4
4
  "description": "Rust/WASM transactional storage engine for browser and native file runtimes.",
5
- "version": "1.3.0",
5
+ "version": "1.5.0",
6
6
  "license": "SEE LICENSE IN ../../LICENSE",
7
7
  "repository": {
8
8
  "type": "git",