@g9tm/syncdata 1.5.0 → 1.5.2
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.
- package/LICENSE.md +21 -21
- package/PARITY.md +96 -96
- package/README.md +71 -71
- package/THIRD-PARTY-NOTICES.md +31 -31
- package/dist/abstractions/digest.js.map +1 -1
- package/dist/abstractions/enums.js.map +1 -1
- package/dist/abstractions/errors.js.map +1 -1
- package/dist/abstractions/guid.js.map +1 -1
- package/dist/abstractions/key.js.map +1 -1
- package/dist/abstractions/long.js.map +1 -1
- package/dist/abstractions/parameters.js.map +1 -1
- package/dist/brotli-js/decode.js.map +1 -1
- package/dist/brotli-js/index.js.map +1 -1
- package/dist/client/engine.js.map +1 -1
- package/dist/client/model.js.map +1 -1
- package/dist/client/progress.js.map +1 -1
- package/dist/client/runs.js.map +1 -1
- package/dist/client/storeTypes.js.map +1 -1
- package/dist/client/transport.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/internal/abort.js.map +1 -1
- package/dist/internal/base64.js.map +1 -1
- package/dist/internal/dotnetFormat.js.map +1 -1
- package/dist/internal/md5.js.map +1 -1
- package/dist/internal/sha256.js.map +1 -1
- package/dist/internal/utf8.js.map +1 -1
- package/dist/node/index.js.map +1 -1
- package/dist/node/snapshotFileSink.js.map +1 -1
- package/dist/node/sqliteDriver.js.map +1 -1
- package/dist/protocol/dtos.js.map +1 -1
- package/dist/protocol/protocol.js.map +1 -1
- package/dist/protocol/rowBatch/columnLayout.js.map +1 -1
- package/dist/protocol/rowBatch/format.js.map +1 -1
- package/dist/protocol/rowBatch/reader.js.map +1 -1
- package/dist/protocol/rowBatch/writer.js.map +1 -1
- package/dist/protocol/wire.js.map +1 -1
- package/dist/signalr/index.js.map +1 -1
- package/dist/signalr/protocols.js.map +1 -1
- package/dist/signalr/transport.d.ts +7 -3
- package/dist/signalr/transport.js +2 -1
- package/dist/signalr/transport.js.map +1 -1
- package/dist/sqlite/apply.js.map +1 -1
- package/dist/sqlite/commands.js.map +1 -1
- package/dist/sqlite/connection.js.map +1 -1
- package/dist/sqlite/driver.js.map +1 -1
- package/dist/sqlite/index.js.map +1 -1
- package/dist/sqlite/internals.js.map +1 -1
- package/dist/sqlite/options.js.map +1 -1
- package/dist/sqlite/push.js.map +1 -1
- package/dist/sqlite/query.js.map +1 -1
- package/dist/sqlite/revocation.js.map +1 -1
- package/dist/sqlite/sql.js +113 -113
- package/dist/sqlite/sql.js.map +1 -1
- package/dist/sqlite/store.js.map +1 -1
- package/dist/sqlite/values.js.map +1 -1
- package/dist/testing/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abort.js","sourceRoot":"","sources":["../../src/internal/abort.ts"],"names":[],"mappings":"AAAA,wHAAwH;AACxH,kGAAkG;AAWlG,MAAM,cAAc;IAApB;QACE,YAAO,GAAG,KAAK,CAAC;QAChB,WAAM,GAAY,SAAS,CAAC;QAC5B,YAAO,GAAqC,IAAI,CAAC;QAChC,eAAU,GAAe,EAAE,CAAC;IAgC/C,CAAC;IA9BC,gBAAgB,CAAC,KAAc,EAAE,QAAkB;QACjD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC;IAED,mBAAmB,CAAC,KAAc,EAAE,QAAkB;QACpD,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAChD,IAAI,KAAK,IAAI,CAAC;YAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACnD,CAAC;IAED,gBAAgB;IAChB,IAAI,CAAC,MAAe;QAClB,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO;QACzB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACpE,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,IAAI,CAAC;gBACH,QAAQ,EAAE,CAAC;YACb,CAAC;YAAC,MAAM,CAAC;gBACP,sCAAsC;YACxC,CAAC;QACH,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,IAAI,CAAC;gBACH,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1B,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAQD,MAAM,UAAU,qBAAqB;IACnC,MAAM,MAAM,GAAI,UAAgE,CAAC,eAAe,CAAC;IACjG,IAAI,OAAO,MAAM,KAAK,UAAU;QAAE,OAAO,IAAI,MAAM,EAAE,CAAC;IACtD,MAAM,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;IACpC,OAAO;QACL,MAAM,EAAE,MAAgC;QACxC,KAAK,EAAE,CAAC,MAAgB,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;KAC9F,CAAC;AACJ,CAAC;AAED,kHAAkH;AAClH,MAAM,UAAU,OAAO,CAAC,MAAsC,EAAE,QAAkB;IAChF,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,QAAQ,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,MAAM,QAAQ,GAAG,GAAS,EAAE;QAC1B,IAAI,IAAI;YAAE,OAAO;QACjB,IAAI,GAAG,IAAI,CAAC;QACZ,QAAQ,EAAE,CAAC;IACb,CAAC,CAAC;IACD,MAAmC,CAAC,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACzE,OAAO,GAAG,EAAE;QACV,IAAI,GAAG,IAAI,CAAC;QACX,MAAmC,CAAC,mBAAmB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC9E,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,IAAI;IACX,kBAAkB;AACpB,CAAC;AAED,+GAA+G;AAC/G,MAAM,UAAU,WAAW,CAAC,GAAG,OAA2C;IACxE,MAAM,UAAU,GAAG,qBAAqB,EAAE,CAAC;IAC3C,MAAM,YAAY,GAAmB,EAAE,CAAC;IACxC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACjG,CAAC;IACD,OAAO;QACL,MAAM,EAAE,UAAU,CAAC,MAAM;QACzB,KAAK,EAAE,CAAC,MAAgB,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC;QACrD,OAAO,EAAE,GAAG,EAAE;YACZ,KAAK,MAAM,WAAW,IAAI,YAAY;gBAAE,WAAW,EAAE,CAAC;QACxD,CAAC;KACF,CAAC;AACJ,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,iBAAiB,CAAC,OAAO,GAAG,6BAA6B;IACvE,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;IACjC,KAAK,CAAC,IAAI,GAAG,YAAY,CAAC;IAC1B,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,MAAsC;IACnE,IAAI,MAAM,IAAI,MAAM,CAAC,OAAO;QAAE,MAAM,iBAAiB,EAAE,CAAC;AAC1D,CAAC;AAED,+BAA+B;AAC/B,MAAM,UAAU,KAAK,CAAC,EAAU,EAAE,MAA2B;IAC3D,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC3C,IAAI,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YAC7B,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC;YAC5B,OAAO;QACT,CAAC;QACD,IAAI,WAAW,GAAe,IAAI,CAAC;QACnC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,WAAW,EAAE,CAAC;YACd,OAAO,EAAE,CAAC;QACZ,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QACpB,WAAW,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE;YACjC,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,kGAAkG;AAClG,MAAM,UAAU,gBAAgB;IAC9B,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;AAChE,CAAC","sourcesContent":["// Cancellation (the CancellationToken twin) over AbortSignal. Lynx has AbortController on globalThis; a runtime without\n// one gets a minimal stand-in with the same surface, so the library never depends on it existing.\n\ntype Listener = () => void;\n\ninterface MinimalSignal {\n readonly aborted: boolean;\n readonly reason: unknown;\n addEventListener(type: 'abort', listener: Listener, options?: { once?: boolean }): void;\n removeEventListener(type: 'abort', listener: Listener): void;\n}\n\nclass FallbackSignal implements MinimalSignal {\n aborted = false;\n reason: unknown = undefined;\n onabort: ((this: unknown) => void) | null = null;\n private readonly _listeners: Listener[] = [];\n\n addEventListener(_type: 'abort', listener: Listener): void {\n this._listeners.push(listener);\n }\n\n removeEventListener(_type: 'abort', listener: Listener): void {\n const index = this._listeners.indexOf(listener);\n if (index >= 0) this._listeners.splice(index, 1);\n }\n\n /** @internal */\n fire(reason: unknown): void {\n if (this.aborted) return;\n this.aborted = true;\n this.reason = reason;\n const listeners = this._listeners.splice(0, this._listeners.length);\n for (const listener of listeners) {\n try {\n listener();\n } catch {\n // a listener must not stop the others\n }\n }\n if (this.onabort) {\n try {\n this.onabort.call(this);\n } catch {\n // ignore\n }\n }\n }\n}\n\n/** An AbortController (native when the runtime has one). */\nexport interface G9AbortController {\n readonly signal: AbortSignal;\n abort(reason?: unknown): void;\n}\n\nexport function createAbortController(): G9AbortController {\n const Native = (globalThis as { AbortController?: new () => G9AbortController }).AbortController;\n if (typeof Native === 'function') return new Native();\n const signal = new FallbackSignal();\n return {\n signal: signal as unknown as AbortSignal,\n abort: (reason?: unknown) => signal.fire(reason === undefined ? cancellationError() : reason),\n };\n}\n\n/** Calls `callback` once when `signal` aborts (at once when it already has); returns the unsubscribe function. */\nexport function onAbort(signal: AbortSignal | null | undefined, callback: Listener): () => void {\n if (!signal) return noop;\n if (signal.aborted) {\n callback();\n return noop;\n }\n let done = false;\n const listener = (): void => {\n if (done) return;\n done = true;\n callback();\n };\n (signal as unknown as MinimalSignal).addEventListener('abort', listener);\n return () => {\n done = true;\n (signal as unknown as MinimalSignal).removeEventListener('abort', listener);\n };\n}\n\nfunction noop(): void {\n // nothing to undo\n}\n\n/** A controller that aborts when any of `signals` does (`CancellationTokenSource.CreateLinkedTokenSource`). */\nexport function linkSignals(...signals: (AbortSignal | null | undefined)[]): G9AbortController & { dispose(): void } {\n const controller = createAbortController();\n const unsubscribes: (() => void)[] = [];\n for (const signal of signals) {\n unsubscribes.push(onAbort(signal, () => controller.abort(signal ? signal.reason : undefined)));\n }\n return {\n signal: controller.signal,\n abort: (reason?: unknown) => controller.abort(reason),\n dispose: () => {\n for (const unsubscribe of unsubscribes) unsubscribe();\n },\n };\n}\n\n/** The error a cancelled operation rejects with (name `AbortError`, like DOM's). */\nexport function cancellationError(message = 'The operation was canceled.'): Error {\n const error = new Error(message);\n error.name = 'AbortError';\n return error;\n}\n\nexport function throwIfAborted(signal: AbortSignal | null | undefined): void {\n if (signal && signal.aborted) throw cancellationError();\n}\n\n/** `Task.Delay(ms, token)`. */\nexport function delay(ms: number, signal?: AbortSignal | null): Promise<void> {\n return new Promise<void>((resolve, reject) => {\n if (signal && signal.aborted) {\n reject(cancellationError());\n return;\n }\n let unsubscribe: () => void = noop;\n const timer = setTimeout(() => {\n unsubscribe();\n resolve();\n }, Math.max(0, ms));\n unsubscribe = onAbort(signal, () => {\n clearTimeout(timer);\n reject(cancellationError());\n });\n });\n}\n\n/** Lets the event loop run (Lynx: keeps the background thread responsive during long applies). */\nexport function yieldToEventLoop(): Promise<void> {\n return new Promise<void>((resolve) => setTimeout(resolve, 0));\n}\n"]}
|
|
1
|
+
{"version":3,"file":"abort.js","sourceRoot":"","sources":["../../src/internal/abort.ts"],"names":[],"mappings":"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","sourcesContent":["// Cancellation (the CancellationToken twin) over AbortSignal. Lynx has AbortController on globalThis; a runtime without\r\n// one gets a minimal stand-in with the same surface, so the library never depends on it existing.\r\n\r\ntype Listener = () => void;\r\n\r\ninterface MinimalSignal {\r\n readonly aborted: boolean;\r\n readonly reason: unknown;\r\n addEventListener(type: 'abort', listener: Listener, options?: { once?: boolean }): void;\r\n removeEventListener(type: 'abort', listener: Listener): void;\r\n}\r\n\r\nclass FallbackSignal implements MinimalSignal {\r\n aborted = false;\r\n reason: unknown = undefined;\r\n onabort: ((this: unknown) => void) | null = null;\r\n private readonly _listeners: Listener[] = [];\r\n\r\n addEventListener(_type: 'abort', listener: Listener): void {\r\n this._listeners.push(listener);\r\n }\r\n\r\n removeEventListener(_type: 'abort', listener: Listener): void {\r\n const index = this._listeners.indexOf(listener);\r\n if (index >= 0) this._listeners.splice(index, 1);\r\n }\r\n\r\n /** @internal */\r\n fire(reason: unknown): void {\r\n if (this.aborted) return;\r\n this.aborted = true;\r\n this.reason = reason;\r\n const listeners = this._listeners.splice(0, this._listeners.length);\r\n for (const listener of listeners) {\r\n try {\r\n listener();\r\n } catch {\r\n // a listener must not stop the others\r\n }\r\n }\r\n if (this.onabort) {\r\n try {\r\n this.onabort.call(this);\r\n } catch {\r\n // ignore\r\n }\r\n }\r\n }\r\n}\r\n\r\n/** An AbortController (native when the runtime has one). */\r\nexport interface G9AbortController {\r\n readonly signal: AbortSignal;\r\n abort(reason?: unknown): void;\r\n}\r\n\r\nexport function createAbortController(): G9AbortController {\r\n const Native = (globalThis as { AbortController?: new () => G9AbortController }).AbortController;\r\n if (typeof Native === 'function') return new Native();\r\n const signal = new FallbackSignal();\r\n return {\r\n signal: signal as unknown as AbortSignal,\r\n abort: (reason?: unknown) => signal.fire(reason === undefined ? cancellationError() : reason),\r\n };\r\n}\r\n\r\n/** Calls `callback` once when `signal` aborts (at once when it already has); returns the unsubscribe function. */\r\nexport function onAbort(signal: AbortSignal | null | undefined, callback: Listener): () => void {\r\n if (!signal) return noop;\r\n if (signal.aborted) {\r\n callback();\r\n return noop;\r\n }\r\n let done = false;\r\n const listener = (): void => {\r\n if (done) return;\r\n done = true;\r\n callback();\r\n };\r\n (signal as unknown as MinimalSignal).addEventListener('abort', listener);\r\n return () => {\r\n done = true;\r\n (signal as unknown as MinimalSignal).removeEventListener('abort', listener);\r\n };\r\n}\r\n\r\nfunction noop(): void {\r\n // nothing to undo\r\n}\r\n\r\n/** A controller that aborts when any of `signals` does (`CancellationTokenSource.CreateLinkedTokenSource`). */\r\nexport function linkSignals(...signals: (AbortSignal | null | undefined)[]): G9AbortController & { dispose(): void } {\r\n const controller = createAbortController();\r\n const unsubscribes: (() => void)[] = [];\r\n for (const signal of signals) {\r\n unsubscribes.push(onAbort(signal, () => controller.abort(signal ? signal.reason : undefined)));\r\n }\r\n return {\r\n signal: controller.signal,\r\n abort: (reason?: unknown) => controller.abort(reason),\r\n dispose: () => {\r\n for (const unsubscribe of unsubscribes) unsubscribe();\r\n },\r\n };\r\n}\r\n\r\n/** The error a cancelled operation rejects with (name `AbortError`, like DOM's). */\r\nexport function cancellationError(message = 'The operation was canceled.'): Error {\r\n const error = new Error(message);\r\n error.name = 'AbortError';\r\n return error;\r\n}\r\n\r\nexport function throwIfAborted(signal: AbortSignal | null | undefined): void {\r\n if (signal && signal.aborted) throw cancellationError();\r\n}\r\n\r\n/** `Task.Delay(ms, token)`. */\r\nexport function delay(ms: number, signal?: AbortSignal | null): Promise<void> {\r\n return new Promise<void>((resolve, reject) => {\r\n if (signal && signal.aborted) {\r\n reject(cancellationError());\r\n return;\r\n }\r\n let unsubscribe: () => void = noop;\r\n const timer = setTimeout(() => {\r\n unsubscribe();\r\n resolve();\r\n }, Math.max(0, ms));\r\n unsubscribe = onAbort(signal, () => {\r\n clearTimeout(timer);\r\n reject(cancellationError());\r\n });\r\n });\r\n}\r\n\r\n/** Lets the event loop run (Lynx: keeps the background thread responsive during long applies). */\r\nexport function yieldToEventLoop(): Promise<void> {\r\n return new Promise<void>((resolve) => setTimeout(resolve, 0));\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base64.js","sourceRoot":"","sources":["../../src/internal/base64.ts"],"names":[],"mappings":"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","sourcesContent":["// Base64 helpers that work in browsers, WebViews, Node and Lynx without Buffer, btoa or atob (Lynx's background\n// thread has none of them). They use the native Uint8Array.prototype.toBase64 / Uint8Array.fromBase64 (ES2026) when\n// the runtime has them, and a table-driven codec otherwise.\n\ntype NativeToBase64 = { toBase64?: () => string };\ntype NativeFromBase64 = { fromBase64?: (text: string) => Uint8Array };\n\nconst ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\nconst ENCODE: string[] = [];\nconst DECODE = new Int16Array(256).fill(-1);\nfor (let i = 0; i < ALPHABET.length; i++) {\n ENCODE[i] = ALPHABET.charAt(i);\n DECODE[ALPHABET.charCodeAt(i)] = i;\n}\n// base64url digits decode too (they never collide with the standard ones).\nDECODE['-'.charCodeAt(0)] = 62;\nDECODE['_'.charCodeAt(0)] = 63;\n\n/** Standard (RFC 4648, padded) base64 of `bytes` — what System.Text.Json writes and reads for `byte[]`. */\nexport function bytesToBase64(bytes: Uint8Array): string {\n const native = (bytes as unknown as NativeToBase64).toBase64;\n if (typeof native === 'function') return native.call(bytes);\n return bytesToBase64Js(bytes);\n}\n\n/** The table-driven encoder (exported for tests; use {@link bytesToBase64}). */\nexport function bytesToBase64Js(bytes: Uint8Array): string {\n const parts: string[] = [];\n const length = bytes.length;\n const whole = length - (length % 3);\n let line = '';\n for (let i = 0; i < whole; i += 3) {\n const n = (bytes[i]! << 16) | (bytes[i + 1]! << 8) | bytes[i + 2]!;\n line += ENCODE[n >>> 18]! + ENCODE[(n >>> 12) & 63]! + ENCODE[(n >>> 6) & 63]! + ENCODE[n & 63]!;\n // Joining bounded pieces keeps string building linear on engines without rope strings.\n if (line.length >= 8192) {\n parts.push(line);\n line = '';\n }\n }\n const rest = length - whole;\n if (rest === 1) {\n const n = bytes[whole]! << 16;\n line += ENCODE[n >>> 18]! + ENCODE[(n >>> 12) & 63]! + '==';\n } else if (rest === 2) {\n const n = (bytes[whole]! << 16) | (bytes[whole + 1]! << 8);\n line += ENCODE[n >>> 18]! + ENCODE[(n >>> 12) & 63]! + ENCODE[(n >>> 6) & 63]! + '=';\n }\n parts.push(line);\n return parts.join('');\n}\n\n/** Decodes standard or url-safe base64 (padding optional, whitespace ignored). Throws on any other character. */\nexport function base64ToBytes(text: string): Uint8Array {\n const native = (Uint8Array as unknown as NativeFromBase64).fromBase64;\n if (typeof native === 'function') {\n try {\n return native(text);\n } catch {\n // Fall through to the table codec, which also accepts url-safe digits and missing padding.\n }\n }\n return base64ToBytesJs(text);\n}\n\n/** The table-driven decoder (exported for tests; use {@link base64ToBytes}). */\nexport function base64ToBytesJs(text: string): Uint8Array {\n const out = new Uint8Array(Math.floor((text.length * 3) / 4) + 3);\n let size = 0;\n let buffer = 0;\n let bits = 0;\n for (let i = 0; i < text.length; i++) {\n const code = text.charCodeAt(i);\n if (code === 61 /* = */) break;\n if (code === 32 || code === 9 || code === 10 || code === 13) continue;\n const value = code < 256 ? DECODE[code]! : -1;\n if (value < 0) throw new SyntaxError(`Invalid base64 character at position ${i}.`);\n buffer = ((buffer << 6) | value) & 0xffffff;\n bits += 6;\n if (bits >= 8) {\n bits -= 8;\n out[size++] = (buffer >>> bits) & 0xff;\n }\n }\n return out.subarray(0, size);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"base64.js","sourceRoot":"","sources":["../../src/internal/base64.ts"],"names":[],"mappings":"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","sourcesContent":["// Base64 helpers that work in browsers, WebViews, Node and Lynx without Buffer, btoa or atob (Lynx's background\r\n// thread has none of them). They use the native Uint8Array.prototype.toBase64 / Uint8Array.fromBase64 (ES2026) when\r\n// the runtime has them, and a table-driven codec otherwise.\r\n\r\ntype NativeToBase64 = { toBase64?: () => string };\r\ntype NativeFromBase64 = { fromBase64?: (text: string) => Uint8Array };\r\n\r\nconst ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\r\nconst ENCODE: string[] = [];\r\nconst DECODE = new Int16Array(256).fill(-1);\r\nfor (let i = 0; i < ALPHABET.length; i++) {\r\n ENCODE[i] = ALPHABET.charAt(i);\r\n DECODE[ALPHABET.charCodeAt(i)] = i;\r\n}\r\n// base64url digits decode too (they never collide with the standard ones).\r\nDECODE['-'.charCodeAt(0)] = 62;\r\nDECODE['_'.charCodeAt(0)] = 63;\r\n\r\n/** Standard (RFC 4648, padded) base64 of `bytes` — what System.Text.Json writes and reads for `byte[]`. */\r\nexport function bytesToBase64(bytes: Uint8Array): string {\r\n const native = (bytes as unknown as NativeToBase64).toBase64;\r\n if (typeof native === 'function') return native.call(bytes);\r\n return bytesToBase64Js(bytes);\r\n}\r\n\r\n/** The table-driven encoder (exported for tests; use {@link bytesToBase64}). */\r\nexport function bytesToBase64Js(bytes: Uint8Array): string {\r\n const parts: string[] = [];\r\n const length = bytes.length;\r\n const whole = length - (length % 3);\r\n let line = '';\r\n for (let i = 0; i < whole; i += 3) {\r\n const n = (bytes[i]! << 16) | (bytes[i + 1]! << 8) | bytes[i + 2]!;\r\n line += ENCODE[n >>> 18]! + ENCODE[(n >>> 12) & 63]! + ENCODE[(n >>> 6) & 63]! + ENCODE[n & 63]!;\r\n // Joining bounded pieces keeps string building linear on engines without rope strings.\r\n if (line.length >= 8192) {\r\n parts.push(line);\r\n line = '';\r\n }\r\n }\r\n const rest = length - whole;\r\n if (rest === 1) {\r\n const n = bytes[whole]! << 16;\r\n line += ENCODE[n >>> 18]! + ENCODE[(n >>> 12) & 63]! + '==';\r\n } else if (rest === 2) {\r\n const n = (bytes[whole]! << 16) | (bytes[whole + 1]! << 8);\r\n line += ENCODE[n >>> 18]! + ENCODE[(n >>> 12) & 63]! + ENCODE[(n >>> 6) & 63]! + '=';\r\n }\r\n parts.push(line);\r\n return parts.join('');\r\n}\r\n\r\n/** Decodes standard or url-safe base64 (padding optional, whitespace ignored). Throws on any other character. */\r\nexport function base64ToBytes(text: string): Uint8Array {\r\n const native = (Uint8Array as unknown as NativeFromBase64).fromBase64;\r\n if (typeof native === 'function') {\r\n try {\r\n return native(text);\r\n } catch {\r\n // Fall through to the table codec, which also accepts url-safe digits and missing padding.\r\n }\r\n }\r\n return base64ToBytesJs(text);\r\n}\r\n\r\n/** The table-driven decoder (exported for tests; use {@link base64ToBytes}). */\r\nexport function base64ToBytesJs(text: string): Uint8Array {\r\n const out = new Uint8Array(Math.floor((text.length * 3) / 4) + 3);\r\n let size = 0;\r\n let buffer = 0;\r\n let bits = 0;\r\n for (let i = 0; i < text.length; i++) {\r\n const code = text.charCodeAt(i);\r\n if (code === 61 /* = */) break;\r\n if (code === 32 || code === 9 || code === 10 || code === 13) continue;\r\n const value = code < 256 ? DECODE[code]! : -1;\r\n if (value < 0) throw new SyntaxError(`Invalid base64 character at position ${i}.`);\r\n buffer = ((buffer << 6) | value) & 0xffffff;\r\n bits += 6;\r\n if (bits >= 8) {\r\n bits -= 8;\r\n out[size++] = (buffer >>> bits) & 0xff;\r\n }\r\n }\r\n return out.subarray(0, size);\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dotnetFormat.js","sourceRoot":"","sources":["../../src/internal/dotnetFormat.ts"],"names":[],"mappings":"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","sourcesContent":["// Invariant-culture number text exactly as .NET writes it, where G9SyncData hashes or stores that text: a computed\n// column's canonical text (G9CSyncDigest.CanonicalText) and the TEXT storage of decimals.\n\n/**\n * `double.ToString(CultureInfo.InvariantCulture)` (.NET Core 3.0+): the shortest round-trip digits, in fixed notation\n * unless the decimal exponent is 17 or more, or below -4, then `d.dddE+XX` (the golden vectors pin both edges).\n */\nexport function formatDouble(value: number): string {\n if (value !== value) return 'NaN';\n if (value === Infinity) return 'Infinity';\n if (value === -Infinity) return '-Infinity';\n if (value === 0) return 1 / value < 0 ? '-0' : '0';\n const negative = value < 0;\n // toExponential() without an argument gives the shortest digits that round-trip, like .NET's.\n const text = Math.abs(value).toExponential();\n const e = text.indexOf('e');\n const digits = text.slice(0, e).replace('.', '');\n const exponent = parseInt(text.slice(e + 1), 10);\n const scale = exponent + 1;\n let out: string;\n if (scale > 17 || scale < -3) {\n const abs = Math.abs(exponent);\n out = digits.charAt(0) + (digits.length > 1 ? '.' + digits.slice(1) : '') + 'E' + (exponent < 0 ? '-' : '+') + (abs < 10 ? '0' : '') + abs;\n } else if (scale <= 0) {\n out = '0.' + repeat('0', -scale) + digits;\n } else if (scale >= digits.length) {\n out = digits + repeat('0', scale - digits.length);\n } else {\n out = digits.slice(0, scale) + '.' + digits.slice(scale);\n }\n return negative ? '-' + out : out;\n}\n\nfunction repeat(text: string, count: number): string {\n let out = '';\n for (let i = 0; i < count; i++) out += text;\n return out;\n}\n\n/** The parts of a .NET `decimal`: 96-bit magnitude as three 32-bit words, a scale 0..28 and a sign. */\nexport interface DecimalParts {\n lo: number;\n mid: number;\n hi: number;\n scale: number;\n negative: boolean;\n}\n\n/** Divides a 96-bit magnitude (three uint32 words, little-endian order) by a small divisor, in place; returns the remainder. */\nfunction divide96(words: number[], divisor: number): number {\n let remainder = 0;\n for (let i = 2; i >= 0; i--) {\n // Two 16-bit steps keep every intermediate below 2^53.\n const word = words[i] as number;\n let v = remainder * 65536 + (word >>> 16);\n const qHigh = Math.floor(v / divisor);\n remainder = v - qHigh * divisor;\n v = remainder * 65536 + (word & 0xffff);\n const qLow = Math.floor(v / divisor);\n remainder = v - qLow * divisor;\n words[i] = ((qHigh << 16) | qLow) >>> 0;\n }\n return remainder;\n}\n\n/** `decimal.ToString(CultureInfo.InvariantCulture)`: every digit of the magnitude, the scale kept (`1.50`, `0.000`). */\nexport function formatDecimal(parts: DecimalParts): string {\n const words = [parts.lo >>> 0, parts.mid >>> 0, parts.hi >>> 0];\n let digits = '';\n while (words[0] !== 0 || words[1] !== 0 || words[2] !== 0) {\n const chunk = String(divide96(words, 10000000));\n digits = (words[0] !== 0 || words[1] !== 0 || words[2] !== 0 ? '0000000'.slice(chunk.length) + chunk : chunk) + digits;\n }\n if (digits === '') digits = '0';\n const scale = parts.scale;\n if (scale > 0) {\n while (digits.length <= scale) digits = '0' + digits;\n digits = digits.slice(0, digits.length - scale) + '.' + digits.slice(digits.length - scale);\n }\n const zero = parts.lo === 0 && parts.mid === 0 && parts.hi === 0;\n return parts.negative && !zero ? '-' + digits : digits;\n}\n\nconst DOUBLE_POWERS_10 = [\n 1, 1e1, 1e2, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13, 1e14, 1e15, 1e16, 1e17, 1e18, 1e19, 1e20, 1e21, 1e22, 1e23, 1e24, 1e25,\n 1e26, 1e27, 1e28,\n];\n\n/**\n * `(double)decimal` exactly as .NET computes it (`DecCalc.VarR8FromDec`): `((double)low64 + (double)high · 2^64) /\n * 10^scale`, each step an IEEE double operation, so the result matches .NET to the bit (it is not always the correctly\n * rounded value, and must not be: the server compares what .NET stored).\n */\nexport function decimalToDouble(parts: DecimalParts): number {\n const low64 = (parts.mid >>> 0) * 4294967296 + (parts.lo >>> 0);\n const value = (low64 + (parts.hi >>> 0) * 18446744073709552000) / (DOUBLE_POWERS_10[parts.scale] as number);\n return parts.negative ? -value : value;\n}\n\n/**\n * Parses invariant decimal text (`decimal.Parse(text, NumberStyles.Number | NumberStyles.AllowExponent, Invariant)`\n * for the forms SQLite and .NET produce: sign, digits, one '.', an optional exponent). Digits past 28 significant are\n * rounded half to even… as .NET does (to the 96-bit limit). Returns null for text that is not a number.\n */\nexport function parseDecimal(text: string): DecimalParts | null {\n const m = /^\\s*([+-]?)(\\d*)(?:\\.(\\d*))?(?:[eE]([+-]?\\d+))?\\s*$/.exec(text);\n if (!m) return null;\n const intPart = m[2] ?? '';\n const fracPart = m[3] ?? '';\n if (intPart === '' && fracPart === '') return null;\n let digits = (intPart + fracPart).replace(/^0+/, '');\n let scale = fracPart.length - (m[4] ? parseInt(m[4], 10) : 0);\n if (digits === '') return { lo: 0, mid: 0, hi: 0, scale: Math.max(0, Math.min(28, scale)), negative: m[1] === '-' };\n // Negative scale: append zeros (the value is an integer).\n while (scale < 0) {\n digits += '0';\n scale++;\n }\n // Too many digits for 96 bits or a scale past 28: round away the excess, half to even.\n while (scale > 28 || !fits96(digits)) {\n if (scale === 0) return null; // overflow\n const last = digits.charCodeAt(digits.length - 1) - 48;\n digits = digits.slice(0, -1);\n scale--;\n if (last > 5 || (last === 5 && (digits.length === 0 || (digits.charCodeAt(digits.length - 1) - 48) % 2 === 1))) digits = incrementDigits(digits);\n if (digits === '') digits = '0';\n }\n const words = toWords(digits);\n return { lo: words[0] as number, mid: words[1] as number, hi: words[2] as number, scale, negative: m[1] === '-' };\n}\n\nfunction incrementDigits(digits: string): string {\n const chars = digits.split('');\n let i = chars.length - 1;\n while (i >= 0) {\n if (chars[i] === '9') {\n chars[i] = '0';\n i--;\n } else {\n chars[i] = String.fromCharCode((chars[i] as string).charCodeAt(0) + 1);\n return chars.join('');\n }\n }\n return '1' + chars.join('');\n}\n\nconst MAX_96 = '79228162514264337593543950335';\n\nfunction fits96(digits: string): boolean {\n const d = digits.replace(/^0+/, '');\n return d.length < MAX_96.length || (d.length === MAX_96.length && d <= MAX_96);\n}\n\nfunction toWords(digits: string): number[] {\n // 16-bit limbs, little-endian; value = value * 10 + digit.\n const limbs = [0, 0, 0, 0, 0, 0];\n for (let i = 0; i < digits.length; i++) {\n let carry = digits.charCodeAt(i) - 48;\n for (let k = 0; k < 6; k++) {\n const v = (limbs[k] as number) * 10 + carry;\n limbs[k] = v & 0xffff;\n carry = Math.floor(v / 65536);\n }\n }\n return [\n (((limbs[1] as number) << 16) | (limbs[0] as number)) >>> 0,\n (((limbs[3] as number) << 16) | (limbs[2] as number)) >>> 0,\n (((limbs[5] as number) << 16) | (limbs[4] as number)) >>> 0,\n ];\n}\n\n/**\n * `(decimal)double` exactly as .NET converts it (`new decimal(double)`, VarDecFromR8): the value rounded to 15\n * significant digits, then trailing zeros dropped. Throws `RangeError` for NaN, infinities and |value| ≥ 7.9e28.\n */\nexport function doubleToDecimal(value: number): DecimalParts {\n if (!isFinite(value)) throw new RangeError('Value was either too large or too small for a Decimal.');\n if (value === 0) return { lo: 0, mid: 0, hi: 0, scale: 0, negative: false };\n if (Math.abs(value) >= 7.9228162514264338e28) throw new RangeError('Value was either too large or too small for a Decimal.');\n if (Math.abs(value) < 1e-28) return { lo: 0, mid: 0, hi: 0, scale: 0, negative: value < 0 };\n // 15 significant digits (toExponential(14) rounds half-even on the exact binary value, like .NET's double→decimal).\n const text = Math.abs(value).toExponential(14);\n const e = text.indexOf('e');\n let digits = text.slice(0, e).replace('.', '');\n const exponent = parseInt(text.slice(e + 1), 10);\n digits = digits.replace(/0+$/, '');\n if (digits === '') digits = '0';\n // value = digits × 10^(exponent − (digits.length − 1))\n let scale = digits.length - 1 - exponent;\n if (scale > 28) {\n // Fewer digits fit: drop to scale 28 with rounding.\n const parsed = parseDecimal(digits + 'e' + String(-scale));\n if (!parsed) throw new RangeError('Value was either too large or too small for a Decimal.');\n parsed.negative = value < 0;\n return parsed;\n }\n while (scale < 0) {\n digits += '0';\n scale++;\n }\n const words = toWords(digits);\n return { lo: words[0] as number, mid: words[1] as number, hi: words[2] as number, scale, negative: value < 0 };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"dotnetFormat.js","sourceRoot":"","sources":["../../src/internal/dotnetFormat.ts"],"names":[],"mappings":"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","sourcesContent":["// Invariant-culture number text exactly as .NET writes it, where G9SyncData hashes or stores that text: a computed\r\n// column's canonical text (G9CSyncDigest.CanonicalText) and the TEXT storage of decimals.\r\n\r\n/**\r\n * `double.ToString(CultureInfo.InvariantCulture)` (.NET Core 3.0+): the shortest round-trip digits, in fixed notation\r\n * unless the decimal exponent is 17 or more, or below -4, then `d.dddE+XX` (the golden vectors pin both edges).\r\n */\r\nexport function formatDouble(value: number): string {\r\n if (value !== value) return 'NaN';\r\n if (value === Infinity) return 'Infinity';\r\n if (value === -Infinity) return '-Infinity';\r\n if (value === 0) return 1 / value < 0 ? '-0' : '0';\r\n const negative = value < 0;\r\n // toExponential() without an argument gives the shortest digits that round-trip, like .NET's.\r\n const text = Math.abs(value).toExponential();\r\n const e = text.indexOf('e');\r\n const digits = text.slice(0, e).replace('.', '');\r\n const exponent = parseInt(text.slice(e + 1), 10);\r\n const scale = exponent + 1;\r\n let out: string;\r\n if (scale > 17 || scale < -3) {\r\n const abs = Math.abs(exponent);\r\n out = digits.charAt(0) + (digits.length > 1 ? '.' + digits.slice(1) : '') + 'E' + (exponent < 0 ? '-' : '+') + (abs < 10 ? '0' : '') + abs;\r\n } else if (scale <= 0) {\r\n out = '0.' + repeat('0', -scale) + digits;\r\n } else if (scale >= digits.length) {\r\n out = digits + repeat('0', scale - digits.length);\r\n } else {\r\n out = digits.slice(0, scale) + '.' + digits.slice(scale);\r\n }\r\n return negative ? '-' + out : out;\r\n}\r\n\r\nfunction repeat(text: string, count: number): string {\r\n let out = '';\r\n for (let i = 0; i < count; i++) out += text;\r\n return out;\r\n}\r\n\r\n/** The parts of a .NET `decimal`: 96-bit magnitude as three 32-bit words, a scale 0..28 and a sign. */\r\nexport interface DecimalParts {\r\n lo: number;\r\n mid: number;\r\n hi: number;\r\n scale: number;\r\n negative: boolean;\r\n}\r\n\r\n/** Divides a 96-bit magnitude (three uint32 words, little-endian order) by a small divisor, in place; returns the remainder. */\r\nfunction divide96(words: number[], divisor: number): number {\r\n let remainder = 0;\r\n for (let i = 2; i >= 0; i--) {\r\n // Two 16-bit steps keep every intermediate below 2^53.\r\n const word = words[i] as number;\r\n let v = remainder * 65536 + (word >>> 16);\r\n const qHigh = Math.floor(v / divisor);\r\n remainder = v - qHigh * divisor;\r\n v = remainder * 65536 + (word & 0xffff);\r\n const qLow = Math.floor(v / divisor);\r\n remainder = v - qLow * divisor;\r\n words[i] = ((qHigh << 16) | qLow) >>> 0;\r\n }\r\n return remainder;\r\n}\r\n\r\n/** `decimal.ToString(CultureInfo.InvariantCulture)`: every digit of the magnitude, the scale kept (`1.50`, `0.000`). */\r\nexport function formatDecimal(parts: DecimalParts): string {\r\n const words = [parts.lo >>> 0, parts.mid >>> 0, parts.hi >>> 0];\r\n let digits = '';\r\n while (words[0] !== 0 || words[1] !== 0 || words[2] !== 0) {\r\n const chunk = String(divide96(words, 10000000));\r\n digits = (words[0] !== 0 || words[1] !== 0 || words[2] !== 0 ? '0000000'.slice(chunk.length) + chunk : chunk) + digits;\r\n }\r\n if (digits === '') digits = '0';\r\n const scale = parts.scale;\r\n if (scale > 0) {\r\n while (digits.length <= scale) digits = '0' + digits;\r\n digits = digits.slice(0, digits.length - scale) + '.' + digits.slice(digits.length - scale);\r\n }\r\n const zero = parts.lo === 0 && parts.mid === 0 && parts.hi === 0;\r\n return parts.negative && !zero ? '-' + digits : digits;\r\n}\r\n\r\nconst DOUBLE_POWERS_10 = [\r\n 1, 1e1, 1e2, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13, 1e14, 1e15, 1e16, 1e17, 1e18, 1e19, 1e20, 1e21, 1e22, 1e23, 1e24, 1e25,\r\n 1e26, 1e27, 1e28,\r\n];\r\n\r\n/**\r\n * `(double)decimal` exactly as .NET computes it (`DecCalc.VarR8FromDec`): `((double)low64 + (double)high · 2^64) /\r\n * 10^scale`, each step an IEEE double operation, so the result matches .NET to the bit (it is not always the correctly\r\n * rounded value, and must not be: the server compares what .NET stored).\r\n */\r\nexport function decimalToDouble(parts: DecimalParts): number {\r\n const low64 = (parts.mid >>> 0) * 4294967296 + (parts.lo >>> 0);\r\n const value = (low64 + (parts.hi >>> 0) * 18446744073709552000) / (DOUBLE_POWERS_10[parts.scale] as number);\r\n return parts.negative ? -value : value;\r\n}\r\n\r\n/**\r\n * Parses invariant decimal text (`decimal.Parse(text, NumberStyles.Number | NumberStyles.AllowExponent, Invariant)`\r\n * for the forms SQLite and .NET produce: sign, digits, one '.', an optional exponent). Digits past 28 significant are\r\n * rounded half to even… as .NET does (to the 96-bit limit). Returns null for text that is not a number.\r\n */\r\nexport function parseDecimal(text: string): DecimalParts | null {\r\n const m = /^\\s*([+-]?)(\\d*)(?:\\.(\\d*))?(?:[eE]([+-]?\\d+))?\\s*$/.exec(text);\r\n if (!m) return null;\r\n const intPart = m[2] ?? '';\r\n const fracPart = m[3] ?? '';\r\n if (intPart === '' && fracPart === '') return null;\r\n let digits = (intPart + fracPart).replace(/^0+/, '');\r\n let scale = fracPart.length - (m[4] ? parseInt(m[4], 10) : 0);\r\n if (digits === '') return { lo: 0, mid: 0, hi: 0, scale: Math.max(0, Math.min(28, scale)), negative: m[1] === '-' };\r\n // Negative scale: append zeros (the value is an integer).\r\n while (scale < 0) {\r\n digits += '0';\r\n scale++;\r\n }\r\n // Too many digits for 96 bits or a scale past 28: round away the excess, half to even.\r\n while (scale > 28 || !fits96(digits)) {\r\n if (scale === 0) return null; // overflow\r\n const last = digits.charCodeAt(digits.length - 1) - 48;\r\n digits = digits.slice(0, -1);\r\n scale--;\r\n if (last > 5 || (last === 5 && (digits.length === 0 || (digits.charCodeAt(digits.length - 1) - 48) % 2 === 1))) digits = incrementDigits(digits);\r\n if (digits === '') digits = '0';\r\n }\r\n const words = toWords(digits);\r\n return { lo: words[0] as number, mid: words[1] as number, hi: words[2] as number, scale, negative: m[1] === '-' };\r\n}\r\n\r\nfunction incrementDigits(digits: string): string {\r\n const chars = digits.split('');\r\n let i = chars.length - 1;\r\n while (i >= 0) {\r\n if (chars[i] === '9') {\r\n chars[i] = '0';\r\n i--;\r\n } else {\r\n chars[i] = String.fromCharCode((chars[i] as string).charCodeAt(0) + 1);\r\n return chars.join('');\r\n }\r\n }\r\n return '1' + chars.join('');\r\n}\r\n\r\nconst MAX_96 = '79228162514264337593543950335';\r\n\r\nfunction fits96(digits: string): boolean {\r\n const d = digits.replace(/^0+/, '');\r\n return d.length < MAX_96.length || (d.length === MAX_96.length && d <= MAX_96);\r\n}\r\n\r\nfunction toWords(digits: string): number[] {\r\n // 16-bit limbs, little-endian; value = value * 10 + digit.\r\n const limbs = [0, 0, 0, 0, 0, 0];\r\n for (let i = 0; i < digits.length; i++) {\r\n let carry = digits.charCodeAt(i) - 48;\r\n for (let k = 0; k < 6; k++) {\r\n const v = (limbs[k] as number) * 10 + carry;\r\n limbs[k] = v & 0xffff;\r\n carry = Math.floor(v / 65536);\r\n }\r\n }\r\n return [\r\n (((limbs[1] as number) << 16) | (limbs[0] as number)) >>> 0,\r\n (((limbs[3] as number) << 16) | (limbs[2] as number)) >>> 0,\r\n (((limbs[5] as number) << 16) | (limbs[4] as number)) >>> 0,\r\n ];\r\n}\r\n\r\n/**\r\n * `(decimal)double` exactly as .NET converts it (`new decimal(double)`, VarDecFromR8): the value rounded to 15\r\n * significant digits, then trailing zeros dropped. Throws `RangeError` for NaN, infinities and |value| ≥ 7.9e28.\r\n */\r\nexport function doubleToDecimal(value: number): DecimalParts {\r\n if (!isFinite(value)) throw new RangeError('Value was either too large or too small for a Decimal.');\r\n if (value === 0) return { lo: 0, mid: 0, hi: 0, scale: 0, negative: false };\r\n if (Math.abs(value) >= 7.9228162514264338e28) throw new RangeError('Value was either too large or too small for a Decimal.');\r\n if (Math.abs(value) < 1e-28) return { lo: 0, mid: 0, hi: 0, scale: 0, negative: value < 0 };\r\n // 15 significant digits (toExponential(14) rounds half-even on the exact binary value, like .NET's double→decimal).\r\n const text = Math.abs(value).toExponential(14);\r\n const e = text.indexOf('e');\r\n let digits = text.slice(0, e).replace('.', '');\r\n const exponent = parseInt(text.slice(e + 1), 10);\r\n digits = digits.replace(/0+$/, '');\r\n if (digits === '') digits = '0';\r\n // value = digits × 10^(exponent − (digits.length − 1))\r\n let scale = digits.length - 1 - exponent;\r\n if (scale > 28) {\r\n // Fewer digits fit: drop to scale 28 with rounding.\r\n const parsed = parseDecimal(digits + 'e' + String(-scale));\r\n if (!parsed) throw new RangeError('Value was either too large or too small for a Decimal.');\r\n parsed.negative = value < 0;\r\n return parsed;\r\n }\r\n while (scale < 0) {\r\n digits += '0';\r\n scale++;\r\n }\r\n const words = toWords(digits);\r\n return { lo: words[0] as number, mid: words[1] as number, hi: words[2] as number, scale, negative: value < 0 };\r\n}\r\n"]}
|
package/dist/internal/md5.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"md5.js","sourceRoot":"","sources":["../../src/internal/md5.ts"],"names":[],"mappings":"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","sourcesContent":["// One-shot MD5 (RFC 1321), the twin of G9SyncData.Abstractions/G9CMd5.cs: the reconciliation hash's bucketing\n// function (ADR-0012), not a security boundary. Lynx has no WebCrypto (and WebCrypto has no MD5).\n\nconst K = new Int32Array([\n 0xd76aa478, 0xe8c7b756, 0x242070db, 0xc1bdceee, 0xf57c0faf, 0x4787c62a, 0xa8304613, 0xfd469501,\n 0x698098d8, 0x8b44f7af, 0xffff5bb1, 0x895cd7be, 0x6b901122, 0xfd987193, 0xa679438e, 0x49b40821,\n 0xf61e2562, 0xc040b340, 0x265e5a51, 0xe9b6c7aa, 0xd62f105d, 0x02441453, 0xd8a1e681, 0xe7d3fbc8,\n 0x21e1cde6, 0xc33707d6, 0xf4d50d87, 0x455a14ed, 0xa9e3e905, 0xfcefa3f8, 0x676f02d9, 0x8d2a4c8a,\n 0xfffa3942, 0x8771f681, 0x6d9d6122, 0xfde5380c, 0xa4beea44, 0x4bdecfa9, 0xf6bb4b60, 0xbebfbc70,\n 0x289b7ec6, 0xeaa127fa, 0xd4ef3085, 0x04881d05, 0xd9d4d039, 0xe6db99e5, 0x1fa27cf8, 0xc4ac5665,\n 0xf4292244, 0x432aff97, 0xab9423a7, 0xfc93a039, 0x655b59c3, 0x8f0ccc92, 0xffeff47d, 0x85845dd1,\n 0x6fa87e4f, 0xfe2ce6e0, 0xa3014314, 0x4e0811a1, 0xf7537e82, 0xbd3af235, 0x2ad7d2bb, 0xeb86d391,\n]);\n\nconst S = [\n 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 4,\n 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21,\n];\n\nconst G = new Int32Array(64);\nfor (let i = 0; i < 64; i++) {\n G[i] = i < 16 ? i : i < 32 ? (5 * i + 1) & 15 : i < 48 ? (3 * i + 5) & 15 : (7 * i) & 15;\n}\n\nconst M = new Int32Array(16);\nconst TAIL = new Uint8Array(128);\n\nfunction block(data: Uint8Array, offset: number, state: Int32Array): void {\n for (let i = 0; i < 16; i++) {\n const j = offset + i * 4;\n M[i] = (data[j] as number) | ((data[j + 1] as number) << 8) | ((data[j + 2] as number) << 16) | ((data[j + 3] as number) << 24);\n }\n let a = state[0] as number;\n let b = state[1] as number;\n let c = state[2] as number;\n let d = state[3] as number;\n for (let i = 0; i < 64; i++) {\n let f: number;\n switch (i >> 4) {\n case 0:\n f = (b & c) | (~b & d);\n break;\n case 1:\n f = (d & b) | (~d & c);\n break;\n case 2:\n f = b ^ c ^ d;\n break;\n default:\n f = c ^ (b | ~d);\n break;\n }\n const next = d;\n d = c;\n c = b;\n const sum = (a + f + (K[i] as number) + (M[G[i] as number] as number)) | 0;\n const s = S[i] as number;\n b = (b + ((sum << s) | (sum >>> (32 - s)))) | 0;\n a = next;\n }\n state[0] = ((state[0] as number) + a) | 0;\n state[1] = ((state[1] as number) + b) | 0;\n state[2] = ((state[2] as number) + c) | 0;\n state[3] = ((state[3] as number) + d) | 0;\n}\n\n/** Writes the 16-byte MD5 of `source` to `destination` (offset 0) and returns it. */\nexport function md5(source: Uint8Array, destination: Uint8Array = new Uint8Array(16)): Uint8Array {\n const state = new Int32Array([0x67452301, 0xefcdab89 | 0, 0x98badcfe | 0, 0x10325476]);\n const length = source.length;\n const full = length - (length % 64);\n for (let offset = 0; offset < full; offset += 64) block(source, offset, state);\n\n // The tail, the 0x80 marker and the bit length: one or two final blocks.\n TAIL.fill(0);\n const remaining = length - full;\n for (let i = 0; i < remaining; i++) TAIL[i] = source[full + i] as number;\n TAIL[remaining] = 0x80;\n const tailBytes = remaining < 56 ? 64 : 128;\n const bitsLow = (length * 8) >>> 0;\n const bitsHigh = Math.floor(length / 0x20000000) >>> 0;\n const at = tailBytes - 8;\n TAIL[at] = bitsLow & 0xff;\n TAIL[at + 1] = (bitsLow >>> 8) & 0xff;\n TAIL[at + 2] = (bitsLow >>> 16) & 0xff;\n TAIL[at + 3] = (bitsLow >>> 24) & 0xff;\n TAIL[at + 4] = bitsHigh & 0xff;\n TAIL[at + 5] = (bitsHigh >>> 8) & 0xff;\n TAIL[at + 6] = (bitsHigh >>> 16) & 0xff;\n TAIL[at + 7] = (bitsHigh >>> 24) & 0xff;\n for (let offset = 0; offset < tailBytes; offset += 64) block(TAIL, offset, state);\n\n for (let i = 0; i < 4; i++) {\n const word = state[i] as number;\n destination[i * 4] = word & 0xff;\n destination[i * 4 + 1] = (word >>> 8) & 0xff;\n destination[i * 4 + 2] = (word >>> 16) & 0xff;\n destination[i * 4 + 3] = (word >>> 24) & 0xff;\n }\n return destination;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"md5.js","sourceRoot":"","sources":["../../src/internal/md5.ts"],"names":[],"mappings":"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","sourcesContent":["// One-shot MD5 (RFC 1321), the twin of G9SyncData.Abstractions/G9CMd5.cs: the reconciliation hash's bucketing\r\n// function (ADR-0012), not a security boundary. Lynx has no WebCrypto (and WebCrypto has no MD5).\r\n\r\nconst K = new Int32Array([\r\n 0xd76aa478, 0xe8c7b756, 0x242070db, 0xc1bdceee, 0xf57c0faf, 0x4787c62a, 0xa8304613, 0xfd469501,\r\n 0x698098d8, 0x8b44f7af, 0xffff5bb1, 0x895cd7be, 0x6b901122, 0xfd987193, 0xa679438e, 0x49b40821,\r\n 0xf61e2562, 0xc040b340, 0x265e5a51, 0xe9b6c7aa, 0xd62f105d, 0x02441453, 0xd8a1e681, 0xe7d3fbc8,\r\n 0x21e1cde6, 0xc33707d6, 0xf4d50d87, 0x455a14ed, 0xa9e3e905, 0xfcefa3f8, 0x676f02d9, 0x8d2a4c8a,\r\n 0xfffa3942, 0x8771f681, 0x6d9d6122, 0xfde5380c, 0xa4beea44, 0x4bdecfa9, 0xf6bb4b60, 0xbebfbc70,\r\n 0x289b7ec6, 0xeaa127fa, 0xd4ef3085, 0x04881d05, 0xd9d4d039, 0xe6db99e5, 0x1fa27cf8, 0xc4ac5665,\r\n 0xf4292244, 0x432aff97, 0xab9423a7, 0xfc93a039, 0x655b59c3, 0x8f0ccc92, 0xffeff47d, 0x85845dd1,\r\n 0x6fa87e4f, 0xfe2ce6e0, 0xa3014314, 0x4e0811a1, 0xf7537e82, 0xbd3af235, 0x2ad7d2bb, 0xeb86d391,\r\n]);\r\n\r\nconst S = [\r\n 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 4,\r\n 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21,\r\n];\r\n\r\nconst G = new Int32Array(64);\r\nfor (let i = 0; i < 64; i++) {\r\n G[i] = i < 16 ? i : i < 32 ? (5 * i + 1) & 15 : i < 48 ? (3 * i + 5) & 15 : (7 * i) & 15;\r\n}\r\n\r\nconst M = new Int32Array(16);\r\nconst TAIL = new Uint8Array(128);\r\n\r\nfunction block(data: Uint8Array, offset: number, state: Int32Array): void {\r\n for (let i = 0; i < 16; i++) {\r\n const j = offset + i * 4;\r\n M[i] = (data[j] as number) | ((data[j + 1] as number) << 8) | ((data[j + 2] as number) << 16) | ((data[j + 3] as number) << 24);\r\n }\r\n let a = state[0] as number;\r\n let b = state[1] as number;\r\n let c = state[2] as number;\r\n let d = state[3] as number;\r\n for (let i = 0; i < 64; i++) {\r\n let f: number;\r\n switch (i >> 4) {\r\n case 0:\r\n f = (b & c) | (~b & d);\r\n break;\r\n case 1:\r\n f = (d & b) | (~d & c);\r\n break;\r\n case 2:\r\n f = b ^ c ^ d;\r\n break;\r\n default:\r\n f = c ^ (b | ~d);\r\n break;\r\n }\r\n const next = d;\r\n d = c;\r\n c = b;\r\n const sum = (a + f + (K[i] as number) + (M[G[i] as number] as number)) | 0;\r\n const s = S[i] as number;\r\n b = (b + ((sum << s) | (sum >>> (32 - s)))) | 0;\r\n a = next;\r\n }\r\n state[0] = ((state[0] as number) + a) | 0;\r\n state[1] = ((state[1] as number) + b) | 0;\r\n state[2] = ((state[2] as number) + c) | 0;\r\n state[3] = ((state[3] as number) + d) | 0;\r\n}\r\n\r\n/** Writes the 16-byte MD5 of `source` to `destination` (offset 0) and returns it. */\r\nexport function md5(source: Uint8Array, destination: Uint8Array = new Uint8Array(16)): Uint8Array {\r\n const state = new Int32Array([0x67452301, 0xefcdab89 | 0, 0x98badcfe | 0, 0x10325476]);\r\n const length = source.length;\r\n const full = length - (length % 64);\r\n for (let offset = 0; offset < full; offset += 64) block(source, offset, state);\r\n\r\n // The tail, the 0x80 marker and the bit length: one or two final blocks.\r\n TAIL.fill(0);\r\n const remaining = length - full;\r\n for (let i = 0; i < remaining; i++) TAIL[i] = source[full + i] as number;\r\n TAIL[remaining] = 0x80;\r\n const tailBytes = remaining < 56 ? 64 : 128;\r\n const bitsLow = (length * 8) >>> 0;\r\n const bitsHigh = Math.floor(length / 0x20000000) >>> 0;\r\n const at = tailBytes - 8;\r\n TAIL[at] = bitsLow & 0xff;\r\n TAIL[at + 1] = (bitsLow >>> 8) & 0xff;\r\n TAIL[at + 2] = (bitsLow >>> 16) & 0xff;\r\n TAIL[at + 3] = (bitsLow >>> 24) & 0xff;\r\n TAIL[at + 4] = bitsHigh & 0xff;\r\n TAIL[at + 5] = (bitsHigh >>> 8) & 0xff;\r\n TAIL[at + 6] = (bitsHigh >>> 16) & 0xff;\r\n TAIL[at + 7] = (bitsHigh >>> 24) & 0xff;\r\n for (let offset = 0; offset < tailBytes; offset += 64) block(TAIL, offset, state);\r\n\r\n for (let i = 0; i < 4; i++) {\r\n const word = state[i] as number;\r\n destination[i * 4] = word & 0xff;\r\n destination[i * 4 + 1] = (word >>> 8) & 0xff;\r\n destination[i * 4 + 2] = (word >>> 16) & 0xff;\r\n destination[i * 4 + 3] = (word >>> 24) & 0xff;\r\n }\r\n return destination;\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sha256.js","sourceRoot":"","sources":["../../src/internal/sha256.ts"],"names":[],"mappings":"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","sourcesContent":["// FIPS 180-4 SHA-256 (copied from @g9tm/signalr-supernetcore-client, bytes only). Lynx has no WebCrypto.\n\nconst K = new Int32Array([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2,\n]);\n\nconst INITIAL = [0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19];\n\n/** Incremental SHA-256 hasher (internal; the public entry point is {@link sha256Hex}). */\nexport class Sha256 {\n private readonly _state = new Int32Array(INITIAL);\n private readonly _w = new Int32Array(64);\n private readonly _block = new Uint8Array(64);\n private _blockLength = 0;\n private _totalBytes = 0;\n private _finished = false;\n\n /** Adds `data` to the hash. */\n update(data: Uint8Array): this {\n if (this._finished) throw new Error('SHA-256 digest was already computed; create a new hasher.');\n const length = data.length;\n this._totalBytes += length;\n let offset = 0;\n\n if (this._blockLength > 0) {\n const take = Math.min(64 - this._blockLength, length);\n this._block.set(data.subarray(0, take), this._blockLength);\n this._blockLength += take;\n offset = take;\n if (this._blockLength === 64) {\n this._compress(this._block, 0);\n this._blockLength = 0;\n }\n }\n\n while (offset + 64 <= length) {\n this._compress(data, offset);\n offset += 64;\n }\n\n if (offset < length) {\n this._block.set(data.subarray(offset), 0);\n this._blockLength = length - offset;\n }\n return this;\n }\n\n /** Finishes the hash and returns the 32-byte digest. The hasher cannot be updated afterwards. */\n digest(): Uint8Array {\n if (this._finished) throw new Error('SHA-256 digest was already computed; create a new hasher.');\n this._finished = true;\n\n const block = this._block;\n let used = this._blockLength;\n block[used++] = 0x80;\n if (used > 56) {\n block.fill(0, used);\n this._compress(block, 0);\n used = 0;\n }\n block.fill(0, used, 56);\n\n // Message length in bits as a 64-bit big-endian integer (exact for inputs below 2^50 bytes).\n const bytes = this._totalBytes;\n const high = Math.floor(bytes / 0x20000000);\n const low = (bytes * 8) >>> 0;\n block[56] = high >>> 24;\n block[57] = (high >>> 16) & 0xff;\n block[58] = (high >>> 8) & 0xff;\n block[59] = high & 0xff;\n block[60] = low >>> 24;\n block[61] = (low >>> 16) & 0xff;\n block[62] = (low >>> 8) & 0xff;\n block[63] = low & 0xff;\n this._compress(block, 0);\n\n const out = new Uint8Array(32);\n for (let i = 0; i < 8; i++) {\n const word = this._state[i]!;\n out[i * 4] = word >>> 24;\n out[i * 4 + 1] = (word >>> 16) & 0xff;\n out[i * 4 + 2] = (word >>> 8) & 0xff;\n out[i * 4 + 3] = word & 0xff;\n }\n return out;\n }\n\n /** Finishes the hash and returns it as lower-case hex. */\n hexDigest(): string {\n return toHex(this.digest());\n }\n\n private _compress(data: Uint8Array, offset: number): void {\n const w = this._w;\n for (let i = 0; i < 16; i++) {\n const j = offset + i * 4;\n w[i] = (data[j]! << 24) | (data[j + 1]! << 16) | (data[j + 2]! << 8) | data[j + 3]!;\n }\n for (let i = 16; i < 64; i++) {\n const x = w[i - 15]!;\n const y = w[i - 2]!;\n const s0 = ((x >>> 7) | (x << 25)) ^ ((x >>> 18) | (x << 14)) ^ (x >>> 3);\n const s1 = ((y >>> 17) | (y << 15)) ^ ((y >>> 19) | (y << 13)) ^ (y >>> 10);\n w[i] = (w[i - 16]! + s0 + w[i - 7]! + s1) | 0;\n }\n\n const state = this._state;\n let a = state[0]!;\n let b = state[1]!;\n let c = state[2]!;\n let d = state[3]!;\n let e = state[4]!;\n let f = state[5]!;\n let g = state[6]!;\n let h = state[7]!;\n\n for (let i = 0; i < 64; i++) {\n const s1 = ((e >>> 6) | (e << 26)) ^ ((e >>> 11) | (e << 21)) ^ ((e >>> 25) | (e << 7));\n const ch = (e & f) ^ (~e & g);\n const t1 = (h + s1 + ch + K[i]! + w[i]!) | 0;\n const s0 = ((a >>> 2) | (a << 30)) ^ ((a >>> 13) | (a << 19)) ^ ((a >>> 22) | (a << 10));\n const maj = (a & b) ^ (a & c) ^ (b & c);\n const t2 = (s0 + maj) | 0;\n h = g;\n g = f;\n f = e;\n e = (d + t1) | 0;\n d = c;\n c = b;\n b = a;\n a = (t1 + t2) | 0;\n }\n\n state[0] = (state[0]! + a) | 0;\n state[1] = (state[1]! + b) | 0;\n state[2] = (state[2]! + c) | 0;\n state[3] = (state[3]! + d) | 0;\n state[4] = (state[4]! + e) | 0;\n state[5] = (state[5]! + f) | 0;\n state[6] = (state[6]! + g) | 0;\n state[7] = (state[7]! + h) | 0;\n }\n}\n\nconst HEX: string[] = [];\nfor (let i = 0; i < 256; i++) HEX.push((i < 16 ? '0' : '') + i.toString(16));\n\n/** Lower-case hex of `bytes` (.NET `Convert.ToHexStringLower`). */\nexport function toHex(bytes: Uint8Array): string {\n let out = '';\n for (let i = 0; i < bytes.length; i++) out += HEX[bytes[i] as number] as string;\n return out;\n}\n\n/** SHA-256 of `bytes`. */\nexport function sha256(bytes: Uint8Array): Uint8Array {\n return new Sha256().update(bytes).digest();\n}\n"]}
|
|
1
|
+
{"version":3,"file":"sha256.js","sourceRoot":"","sources":["../../src/internal/sha256.ts"],"names":[],"mappings":"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","sourcesContent":["// FIPS 180-4 SHA-256 (copied from @g9tm/signalr-supernetcore-client, bytes only). Lynx has no WebCrypto.\r\n\r\nconst K = new Int32Array([\r\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\r\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\r\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\r\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\r\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\r\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\r\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\r\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2,\r\n]);\r\n\r\nconst INITIAL = [0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19];\r\n\r\n/** Incremental SHA-256 hasher (internal; the public entry point is {@link sha256Hex}). */\r\nexport class Sha256 {\r\n private readonly _state = new Int32Array(INITIAL);\r\n private readonly _w = new Int32Array(64);\r\n private readonly _block = new Uint8Array(64);\r\n private _blockLength = 0;\r\n private _totalBytes = 0;\r\n private _finished = false;\r\n\r\n /** Adds `data` to the hash. */\r\n update(data: Uint8Array): this {\r\n if (this._finished) throw new Error('SHA-256 digest was already computed; create a new hasher.');\r\n const length = data.length;\r\n this._totalBytes += length;\r\n let offset = 0;\r\n\r\n if (this._blockLength > 0) {\r\n const take = Math.min(64 - this._blockLength, length);\r\n this._block.set(data.subarray(0, take), this._blockLength);\r\n this._blockLength += take;\r\n offset = take;\r\n if (this._blockLength === 64) {\r\n this._compress(this._block, 0);\r\n this._blockLength = 0;\r\n }\r\n }\r\n\r\n while (offset + 64 <= length) {\r\n this._compress(data, offset);\r\n offset += 64;\r\n }\r\n\r\n if (offset < length) {\r\n this._block.set(data.subarray(offset), 0);\r\n this._blockLength = length - offset;\r\n }\r\n return this;\r\n }\r\n\r\n /** Finishes the hash and returns the 32-byte digest. The hasher cannot be updated afterwards. */\r\n digest(): Uint8Array {\r\n if (this._finished) throw new Error('SHA-256 digest was already computed; create a new hasher.');\r\n this._finished = true;\r\n\r\n const block = this._block;\r\n let used = this._blockLength;\r\n block[used++] = 0x80;\r\n if (used > 56) {\r\n block.fill(0, used);\r\n this._compress(block, 0);\r\n used = 0;\r\n }\r\n block.fill(0, used, 56);\r\n\r\n // Message length in bits as a 64-bit big-endian integer (exact for inputs below 2^50 bytes).\r\n const bytes = this._totalBytes;\r\n const high = Math.floor(bytes / 0x20000000);\r\n const low = (bytes * 8) >>> 0;\r\n block[56] = high >>> 24;\r\n block[57] = (high >>> 16) & 0xff;\r\n block[58] = (high >>> 8) & 0xff;\r\n block[59] = high & 0xff;\r\n block[60] = low >>> 24;\r\n block[61] = (low >>> 16) & 0xff;\r\n block[62] = (low >>> 8) & 0xff;\r\n block[63] = low & 0xff;\r\n this._compress(block, 0);\r\n\r\n const out = new Uint8Array(32);\r\n for (let i = 0; i < 8; i++) {\r\n const word = this._state[i]!;\r\n out[i * 4] = word >>> 24;\r\n out[i * 4 + 1] = (word >>> 16) & 0xff;\r\n out[i * 4 + 2] = (word >>> 8) & 0xff;\r\n out[i * 4 + 3] = word & 0xff;\r\n }\r\n return out;\r\n }\r\n\r\n /** Finishes the hash and returns it as lower-case hex. */\r\n hexDigest(): string {\r\n return toHex(this.digest());\r\n }\r\n\r\n private _compress(data: Uint8Array, offset: number): void {\r\n const w = this._w;\r\n for (let i = 0; i < 16; i++) {\r\n const j = offset + i * 4;\r\n w[i] = (data[j]! << 24) | (data[j + 1]! << 16) | (data[j + 2]! << 8) | data[j + 3]!;\r\n }\r\n for (let i = 16; i < 64; i++) {\r\n const x = w[i - 15]!;\r\n const y = w[i - 2]!;\r\n const s0 = ((x >>> 7) | (x << 25)) ^ ((x >>> 18) | (x << 14)) ^ (x >>> 3);\r\n const s1 = ((y >>> 17) | (y << 15)) ^ ((y >>> 19) | (y << 13)) ^ (y >>> 10);\r\n w[i] = (w[i - 16]! + s0 + w[i - 7]! + s1) | 0;\r\n }\r\n\r\n const state = this._state;\r\n let a = state[0]!;\r\n let b = state[1]!;\r\n let c = state[2]!;\r\n let d = state[3]!;\r\n let e = state[4]!;\r\n let f = state[5]!;\r\n let g = state[6]!;\r\n let h = state[7]!;\r\n\r\n for (let i = 0; i < 64; i++) {\r\n const s1 = ((e >>> 6) | (e << 26)) ^ ((e >>> 11) | (e << 21)) ^ ((e >>> 25) | (e << 7));\r\n const ch = (e & f) ^ (~e & g);\r\n const t1 = (h + s1 + ch + K[i]! + w[i]!) | 0;\r\n const s0 = ((a >>> 2) | (a << 30)) ^ ((a >>> 13) | (a << 19)) ^ ((a >>> 22) | (a << 10));\r\n const maj = (a & b) ^ (a & c) ^ (b & c);\r\n const t2 = (s0 + maj) | 0;\r\n h = g;\r\n g = f;\r\n f = e;\r\n e = (d + t1) | 0;\r\n d = c;\r\n c = b;\r\n b = a;\r\n a = (t1 + t2) | 0;\r\n }\r\n\r\n state[0] = (state[0]! + a) | 0;\r\n state[1] = (state[1]! + b) | 0;\r\n state[2] = (state[2]! + c) | 0;\r\n state[3] = (state[3]! + d) | 0;\r\n state[4] = (state[4]! + e) | 0;\r\n state[5] = (state[5]! + f) | 0;\r\n state[6] = (state[6]! + g) | 0;\r\n state[7] = (state[7]! + h) | 0;\r\n }\r\n}\r\n\r\nconst HEX: string[] = [];\r\nfor (let i = 0; i < 256; i++) HEX.push((i < 16 ? '0' : '') + i.toString(16));\r\n\r\n/** Lower-case hex of `bytes` (.NET `Convert.ToHexStringLower`). */\r\nexport function toHex(bytes: Uint8Array): string {\r\n let out = '';\r\n for (let i = 0; i < bytes.length; i++) out += HEX[bytes[i] as number] as string;\r\n return out;\r\n}\r\n\r\n/** SHA-256 of `bytes`. */\r\nexport function sha256(bytes: Uint8Array): Uint8Array {\r\n return new Sha256().update(bytes).digest();\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utf8.js","sourceRoot":"","sources":["../../src/internal/utf8.ts"],"names":[],"mappings":"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","sourcesContent":["// UTF-8 without TextEncoder/TextDecoder: Lynx's background thread (PrimJS) has neither. The native codecs are used\n// where they exist; the fallbacks follow the WHATWG encoder/decoder (lone surrogates become U+FFFD, invalid bytes\n// decode to U+FFFD), so both paths produce the same bytes and text.\n\ninterface Encoder {\n encode(text: string): Uint8Array;\n}\ninterface Decoder {\n decode(bytes: Uint8Array): string;\n}\n\nfunction nativeEncoder(): Encoder | null {\n try {\n const ctor = (globalThis as { TextEncoder?: new () => Encoder }).TextEncoder;\n return typeof ctor === 'function' ? new ctor() : null;\n } catch {\n return null;\n }\n}\n\nfunction nativeDecoder(): Decoder | null {\n try {\n const ctor = (globalThis as { TextDecoder?: new (label?: string) => Decoder }).TextDecoder;\n return typeof ctor === 'function' ? new ctor('utf-8') : null;\n } catch {\n return null;\n }\n}\n\nconst encoder = nativeEncoder();\nconst decoder = nativeDecoder();\n\n/** UTF-8 bytes of `text`. */\nexport function utf8Encode(text: string): Uint8Array {\n if (encoder) return encoder.encode(text);\n return utf8EncodeJs(text);\n}\n\n/** Text of UTF-8 `bytes`. */\nexport function utf8Decode(bytes: Uint8Array): string {\n if (decoder) return decoder.decode(bytes);\n return utf8DecodeJs(bytes);\n}\n\n/** The pure-JS encoder (exported for tests; use {@link utf8Encode}). */\nexport function utf8EncodeJs(text: string): Uint8Array {\n const out = new Uint8Array(text.length * 3);\n let p = 0;\n for (let i = 0; i < text.length; i++) {\n let c = text.charCodeAt(i);\n if (c < 0x80) {\n out[p++] = c;\n continue;\n }\n if (c < 0x800) {\n out[p++] = 0xc0 | (c >> 6);\n out[p++] = 0x80 | (c & 63);\n continue;\n }\n if (c >= 0xd800 && c <= 0xdfff) {\n const next = i + 1 < text.length ? text.charCodeAt(i + 1) : 0;\n if (c <= 0xdbff && next >= 0xdc00 && next <= 0xdfff) {\n c = 0x10000 + ((c - 0xd800) << 10) + (next - 0xdc00);\n i++;\n out[p++] = 0xf0 | (c >> 18);\n out[p++] = 0x80 | ((c >> 12) & 63);\n out[p++] = 0x80 | ((c >> 6) & 63);\n out[p++] = 0x80 | (c & 63);\n continue;\n }\n c = 0xfffd; // lone surrogate\n }\n out[p++] = 0xe0 | (c >> 12);\n out[p++] = 0x80 | ((c >> 6) & 63);\n out[p++] = 0x80 | (c & 63);\n }\n return out.slice(0, p);\n}\n\n/** The pure-JS decoder, the WHATWG UTF-8 decode algorithm (exported for tests; use {@link utf8Decode}). */\nexport function utf8DecodeJs(bytes: Uint8Array): string {\n const parts: string[] = [];\n let units: number[] = [];\n const emit = (cp: number): void => {\n if (cp >= 0x10000) {\n cp -= 0x10000;\n units.push(0xd800 + (cp >> 10), 0xdc00 + (cp & 0x3ff));\n } else {\n units.push(cp);\n }\n if (units.length >= 8192) {\n parts.push(String.fromCharCode.apply(null, units));\n units = [];\n }\n };\n\n let codePoint = 0;\n let needed = 0;\n let seen = 0;\n let lower = 0x80;\n let upper = 0xbf;\n for (let i = 0; i < bytes.length; i++) {\n const b = bytes[i]!;\n if (needed === 0) {\n if (b <= 0x7f) emit(b);\n else if (b >= 0xc2 && b <= 0xdf) {\n needed = 1;\n codePoint = b & 0x1f;\n } else if (b >= 0xe0 && b <= 0xef) {\n if (b === 0xe0) lower = 0xa0;\n if (b === 0xed) upper = 0x9f;\n needed = 2;\n codePoint = b & 0x0f;\n } else if (b >= 0xf0 && b <= 0xf4) {\n if (b === 0xf0) lower = 0x90;\n if (b === 0xf4) upper = 0x8f;\n needed = 3;\n codePoint = b & 0x07;\n } else emit(0xfffd);\n continue;\n }\n if (b < lower || b > upper) {\n // Not a valid continuation: the sequence so far is one error, and this byte is processed again on its own.\n codePoint = needed = seen = 0;\n lower = 0x80;\n upper = 0xbf;\n emit(0xfffd);\n i--;\n continue;\n }\n lower = 0x80;\n upper = 0xbf;\n codePoint = (codePoint << 6) | (b & 0x3f);\n if (++seen === needed) {\n emit(codePoint);\n codePoint = needed = seen = 0;\n }\n }\n if (needed !== 0) emit(0xfffd);\n parts.push(String.fromCharCode.apply(null, units));\n return parts.join('');\n}\n"]}
|
|
1
|
+
{"version":3,"file":"utf8.js","sourceRoot":"","sources":["../../src/internal/utf8.ts"],"names":[],"mappings":"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","sourcesContent":["// UTF-8 without TextEncoder/TextDecoder: Lynx's background thread (PrimJS) has neither. The native codecs are used\r\n// where they exist; the fallbacks follow the WHATWG encoder/decoder (lone surrogates become U+FFFD, invalid bytes\r\n// decode to U+FFFD), so both paths produce the same bytes and text.\r\n\r\ninterface Encoder {\r\n encode(text: string): Uint8Array;\r\n}\r\ninterface Decoder {\r\n decode(bytes: Uint8Array): string;\r\n}\r\n\r\nfunction nativeEncoder(): Encoder | null {\r\n try {\r\n const ctor = (globalThis as { TextEncoder?: new () => Encoder }).TextEncoder;\r\n return typeof ctor === 'function' ? new ctor() : null;\r\n } catch {\r\n return null;\r\n }\r\n}\r\n\r\nfunction nativeDecoder(): Decoder | null {\r\n try {\r\n const ctor = (globalThis as { TextDecoder?: new (label?: string) => Decoder }).TextDecoder;\r\n return typeof ctor === 'function' ? new ctor('utf-8') : null;\r\n } catch {\r\n return null;\r\n }\r\n}\r\n\r\nconst encoder = nativeEncoder();\r\nconst decoder = nativeDecoder();\r\n\r\n/** UTF-8 bytes of `text`. */\r\nexport function utf8Encode(text: string): Uint8Array {\r\n if (encoder) return encoder.encode(text);\r\n return utf8EncodeJs(text);\r\n}\r\n\r\n/** Text of UTF-8 `bytes`. */\r\nexport function utf8Decode(bytes: Uint8Array): string {\r\n if (decoder) return decoder.decode(bytes);\r\n return utf8DecodeJs(bytes);\r\n}\r\n\r\n/** The pure-JS encoder (exported for tests; use {@link utf8Encode}). */\r\nexport function utf8EncodeJs(text: string): Uint8Array {\r\n const out = new Uint8Array(text.length * 3);\r\n let p = 0;\r\n for (let i = 0; i < text.length; i++) {\r\n let c = text.charCodeAt(i);\r\n if (c < 0x80) {\r\n out[p++] = c;\r\n continue;\r\n }\r\n if (c < 0x800) {\r\n out[p++] = 0xc0 | (c >> 6);\r\n out[p++] = 0x80 | (c & 63);\r\n continue;\r\n }\r\n if (c >= 0xd800 && c <= 0xdfff) {\r\n const next = i + 1 < text.length ? text.charCodeAt(i + 1) : 0;\r\n if (c <= 0xdbff && next >= 0xdc00 && next <= 0xdfff) {\r\n c = 0x10000 + ((c - 0xd800) << 10) + (next - 0xdc00);\r\n i++;\r\n out[p++] = 0xf0 | (c >> 18);\r\n out[p++] = 0x80 | ((c >> 12) & 63);\r\n out[p++] = 0x80 | ((c >> 6) & 63);\r\n out[p++] = 0x80 | (c & 63);\r\n continue;\r\n }\r\n c = 0xfffd; // lone surrogate\r\n }\r\n out[p++] = 0xe0 | (c >> 12);\r\n out[p++] = 0x80 | ((c >> 6) & 63);\r\n out[p++] = 0x80 | (c & 63);\r\n }\r\n return out.slice(0, p);\r\n}\r\n\r\n/** The pure-JS decoder, the WHATWG UTF-8 decode algorithm (exported for tests; use {@link utf8Decode}). */\r\nexport function utf8DecodeJs(bytes: Uint8Array): string {\r\n const parts: string[] = [];\r\n let units: number[] = [];\r\n const emit = (cp: number): void => {\r\n if (cp >= 0x10000) {\r\n cp -= 0x10000;\r\n units.push(0xd800 + (cp >> 10), 0xdc00 + (cp & 0x3ff));\r\n } else {\r\n units.push(cp);\r\n }\r\n if (units.length >= 8192) {\r\n parts.push(String.fromCharCode.apply(null, units));\r\n units = [];\r\n }\r\n };\r\n\r\n let codePoint = 0;\r\n let needed = 0;\r\n let seen = 0;\r\n let lower = 0x80;\r\n let upper = 0xbf;\r\n for (let i = 0; i < bytes.length; i++) {\r\n const b = bytes[i]!;\r\n if (needed === 0) {\r\n if (b <= 0x7f) emit(b);\r\n else if (b >= 0xc2 && b <= 0xdf) {\r\n needed = 1;\r\n codePoint = b & 0x1f;\r\n } else if (b >= 0xe0 && b <= 0xef) {\r\n if (b === 0xe0) lower = 0xa0;\r\n if (b === 0xed) upper = 0x9f;\r\n needed = 2;\r\n codePoint = b & 0x0f;\r\n } else if (b >= 0xf0 && b <= 0xf4) {\r\n if (b === 0xf0) lower = 0x90;\r\n if (b === 0xf4) upper = 0x8f;\r\n needed = 3;\r\n codePoint = b & 0x07;\r\n } else emit(0xfffd);\r\n continue;\r\n }\r\n if (b < lower || b > upper) {\r\n // Not a valid continuation: the sequence so far is one error, and this byte is processed again on its own.\r\n codePoint = needed = seen = 0;\r\n lower = 0x80;\r\n upper = 0xbf;\r\n emit(0xfffd);\r\n i--;\r\n continue;\r\n }\r\n lower = 0x80;\r\n upper = 0xbf;\r\n codePoint = (codePoint << 6) | (b & 0x3f);\r\n if (++seen === needed) {\r\n emit(codePoint);\r\n codePoint = needed = seen = 0;\r\n }\r\n }\r\n if (needed !== 0) emit(0xfffd);\r\n parts.push(String.fromCharCode.apply(null, units));\r\n return parts.join('');\r\n}\r\n"]}
|
package/dist/node/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/node/index.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAC9B,8GAA8G;AAC9G,+CAA+C;AAC/C,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAChF,OAAO,EAAE,2BAA2B,EAA4B,MAAM,gCAAgC,CAAC;AAGvG,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAE7D,2CAA2C;AAC3C,MAAM,UAAU,sBAAsB;IACpC,OAAO;QACL,UAAU,CAAC,UAAsB,EAAE,cAAsB;YACvD,MAAM,GAAG,GAAG,oBAAoB,CAAC,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;YACnG,IAAI,GAAG,CAAC,MAAM,KAAK,cAAc;gBAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,GAAG,CAAC,MAAM,WAAW,cAAc,YAAY,CAAC,CAAC;YAC9H,OAAO,IAAI,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QAChE,CAAC;KACF,CAAC;AACJ,CAAC;AAED,8CAA8C;AAC9C,MAAM,UAAU,oBAAoB;IAClC,OAAO;QACL,QAAQ,CAAC,IAAgB,EAAE,OAAe,EAAE,MAAc;YACxD,MAAM,GAAG,GAAG,kBAAkB,CAAC,IAAI,EAAE;gBACnC,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,oBAAoB,CAAC,EAAE,OAAO,EAAE,CAAC,SAAS,CAAC,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC,SAAS,CAAC,sBAAsB,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE;aAC/I,CAAC,CAAC;YACH,OAAO,IAAI,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QAChE,CAAC;KACF,CAAC;AACJ,CAAC;AAED,yFAAyF;AACzF,MAAM,UAAU,aAAa;IAC3B,MAAM,YAAY,GAAG,sBAAsB,EAAE,CAAC;IAC9C,2BAA2B,CAAC,YAAY,CAAC,CAAC;IAC1C,OAAO,YAAY,CAAC;AACtB,CAAC","sourcesContent":["/// <reference types=\"node\" />\n// @g9tm/syncdata/node — Node helpers: the node:sqlite reference driver and Brotli through node:zlib (the same\n// quality 4 / window 22 the .NET writer uses).\nimport { brotliCompressSync, brotliDecompressSync, constants } from 'node:zlib';\nimport { setDefaultFrameDecompressor, type G9FrameDecompressor } from '../protocol/rowBatch/reader.js';\nimport type { G9FrameCompressor } from '../protocol/rowBatch/writer.js';\n\nexport { nodeSqliteDriver, G9NodeSqliteError } from './sqliteDriver.js';\nexport { nodeSnapshotFileSink } from './snapshotFileSink.js';\n\n/** A frame decompressor over node:zlib. */\nexport function nodeBrotliDecompressor(): G9FrameDecompressor {\n return {\n decompress(compressed: Uint8Array, expectedLength: number): Uint8Array {\n const out = brotliDecompressSync(compressed, { maxOutputLength: Math.max(1, expectedLength + 1) });\n if (out.length !== expectedLength) throw new Error(`Brotli body decoded to ${out.length} bytes, ${expectedLength} expected.`);\n return new Uint8Array(out.buffer, out.byteOffset, out.length);\n },\n };\n}\n\n/** A push-frame compressor over node:zlib. */\nexport function nodeBrotliCompressor(): G9FrameCompressor {\n return {\n compress(body: Uint8Array, quality: number, window: number): Uint8Array {\n const out = brotliCompressSync(body, {\n params: { [constants.BROTLI_PARAM_QUALITY]: quality, [constants.BROTLI_PARAM_LGWIN]: window, [constants.BROTLI_PARAM_SIZE_HINT]: body.length },\n });\n return new Uint8Array(out.buffer, out.byteOffset, out.length);\n },\n };\n}\n\n/** Makes node:zlib the process-wide frame decompressor (setDefaultFrameDecompressor). */\nexport function useNodeBrotli(): G9FrameDecompressor {\n const decompressor = nodeBrotliDecompressor();\n setDefaultFrameDecompressor(decompressor);\n return decompressor;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/node/index.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAC9B,8GAA8G;AAC9G,+CAA+C;AAC/C,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAChF,OAAO,EAAE,2BAA2B,EAA4B,MAAM,gCAAgC,CAAC;AAGvG,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAE7D,2CAA2C;AAC3C,MAAM,UAAU,sBAAsB;IACpC,OAAO;QACL,UAAU,CAAC,UAAsB,EAAE,cAAsB;YACvD,MAAM,GAAG,GAAG,oBAAoB,CAAC,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;YACnG,IAAI,GAAG,CAAC,MAAM,KAAK,cAAc;gBAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,GAAG,CAAC,MAAM,WAAW,cAAc,YAAY,CAAC,CAAC;YAC9H,OAAO,IAAI,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QAChE,CAAC;KACF,CAAC;AACJ,CAAC;AAED,8CAA8C;AAC9C,MAAM,UAAU,oBAAoB;IAClC,OAAO;QACL,QAAQ,CAAC,IAAgB,EAAE,OAAe,EAAE,MAAc;YACxD,MAAM,GAAG,GAAG,kBAAkB,CAAC,IAAI,EAAE;gBACnC,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,oBAAoB,CAAC,EAAE,OAAO,EAAE,CAAC,SAAS,CAAC,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC,SAAS,CAAC,sBAAsB,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE;aAC/I,CAAC,CAAC;YACH,OAAO,IAAI,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QAChE,CAAC;KACF,CAAC;AACJ,CAAC;AAED,yFAAyF;AACzF,MAAM,UAAU,aAAa;IAC3B,MAAM,YAAY,GAAG,sBAAsB,EAAE,CAAC;IAC9C,2BAA2B,CAAC,YAAY,CAAC,CAAC;IAC1C,OAAO,YAAY,CAAC;AACtB,CAAC","sourcesContent":["/// <reference types=\"node\" />\r\n// @g9tm/syncdata/node — Node helpers: the node:sqlite reference driver and Brotli through node:zlib (the same\r\n// quality 4 / window 22 the .NET writer uses).\r\nimport { brotliCompressSync, brotliDecompressSync, constants } from 'node:zlib';\r\nimport { setDefaultFrameDecompressor, type G9FrameDecompressor } from '../protocol/rowBatch/reader.js';\r\nimport type { G9FrameCompressor } from '../protocol/rowBatch/writer.js';\r\n\r\nexport { nodeSqliteDriver, G9NodeSqliteError } from './sqliteDriver.js';\r\nexport { nodeSnapshotFileSink } from './snapshotFileSink.js';\r\n\r\n/** A frame decompressor over node:zlib. */\r\nexport function nodeBrotliDecompressor(): G9FrameDecompressor {\r\n return {\r\n decompress(compressed: Uint8Array, expectedLength: number): Uint8Array {\r\n const out = brotliDecompressSync(compressed, { maxOutputLength: Math.max(1, expectedLength + 1) });\r\n if (out.length !== expectedLength) throw new Error(`Brotli body decoded to ${out.length} bytes, ${expectedLength} expected.`);\r\n return new Uint8Array(out.buffer, out.byteOffset, out.length);\r\n },\r\n };\r\n}\r\n\r\n/** A push-frame compressor over node:zlib. */\r\nexport function nodeBrotliCompressor(): G9FrameCompressor {\r\n return {\r\n compress(body: Uint8Array, quality: number, window: number): Uint8Array {\r\n const out = brotliCompressSync(body, {\r\n params: { [constants.BROTLI_PARAM_QUALITY]: quality, [constants.BROTLI_PARAM_LGWIN]: window, [constants.BROTLI_PARAM_SIZE_HINT]: body.length },\r\n });\r\n return new Uint8Array(out.buffer, out.byteOffset, out.length);\r\n },\r\n };\r\n}\r\n\r\n/** Makes node:zlib the process-wide frame decompressor (setDefaultFrameDecompressor). */\r\nexport function useNodeBrotli(): G9FrameDecompressor {\r\n const decompressor = nodeBrotliDecompressor();\r\n setDefaultFrameDecompressor(decompressor);\r\n return decompressor;\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snapshotFileSink.js","sourceRoot":"","sources":["../../src/node/snapshotFileSink.ts"],"names":[],"mappings":"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","sourcesContent":["/// <reference types=\"node\" />\n// The Node implementation of G9SnapshotFileSink (ADR-0072): Brotli through node:zlib, SHA-256 through node:crypto, positional\n// writes through node:fs. The Lynx package implements the same contract natively; the store never sees the bytes of a file.\nimport { createHash } from 'node:crypto';\nimport { closeSync, fsyncSync, mkdirSync, openSync, readdirSync, readSync, rmSync, statSync, writeSync, ftruncateSync } from 'node:fs';\nimport { join } from 'node:path';\nimport { brotliDecompressSync } from 'node:zlib';\nimport type { G9SnapshotFileSink } from '../sqlite/options.js';\n\n/** A snapshot-file sink writing into `directory` (created when missing). */\nexport function nodeSnapshotFileSink(directory: string): G9SnapshotFileSink {\n return {\n directory,\n\n async create(path: string, size: number): Promise<void> {\n mkdirSync(directory, { recursive: true });\n const fd = openSync(path, 'w');\n try {\n ftruncateSync(fd, size);\n } finally {\n closeSync(fd);\n }\n },\n\n async writeSegment(path: string, offset: number, compressed: Uint8Array, length: number, sha256: string, sync: boolean): Promise<void> {\n const raw = brotliDecompressSync(compressed, { maxOutputLength: Math.max(1, length + 1) });\n if (raw.length !== length) throw new Error(`The segment decompressed to ${raw.length} bytes, ${length} expected.`);\n const hash = createHash('sha256').update(raw).digest('hex');\n if (hash !== sha256) throw new Error('The segment fails its SHA-256.');\n const fd = openSync(path, 'r+');\n try {\n let written = 0;\n while (written < raw.length) written += writeSync(fd, raw, written, raw.length - written, offset + written);\n if (sync) fsyncSync(fd);\n } finally {\n closeSync(fd);\n }\n },\n\n async size(path: string): Promise<number | null> {\n try {\n return statSync(path).size;\n } catch {\n return null;\n }\n },\n\n async head(path: string, length: number): Promise<Uint8Array> {\n const out = new Uint8Array(length);\n const fd = openSync(path, 'r');\n try {\n let read = 0;\n while (read < length) {\n const n = readSync(fd, out, read, length - read, read);\n if (n === 0) break;\n read += n;\n }\n return read === length ? out : out.subarray(0, read);\n } finally {\n closeSync(fd);\n }\n },\n\n async remove(path: string): Promise<void> {\n rmSync(path, { force: true });\n },\n\n async list(target: string): Promise<string[]> {\n try {\n return readdirSync(target).map((name) => join(target, name));\n } catch {\n return [];\n }\n },\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"snapshotFileSink.js","sourceRoot":"","sources":["../../src/node/snapshotFileSink.ts"],"names":[],"mappings":"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","sourcesContent":["/// <reference types=\"node\" />\r\n// The Node implementation of G9SnapshotFileSink (ADR-0072): Brotli through node:zlib, SHA-256 through node:crypto, positional\r\n// writes through node:fs. The Lynx package implements the same contract natively; the store never sees the bytes of a file.\r\nimport { createHash } from 'node:crypto';\r\nimport { closeSync, fsyncSync, mkdirSync, openSync, readdirSync, readSync, rmSync, statSync, writeSync, ftruncateSync } from 'node:fs';\r\nimport { join } from 'node:path';\r\nimport { brotliDecompressSync } from 'node:zlib';\r\nimport type { G9SnapshotFileSink } from '../sqlite/options.js';\r\n\r\n/** A snapshot-file sink writing into `directory` (created when missing). */\r\nexport function nodeSnapshotFileSink(directory: string): G9SnapshotFileSink {\r\n return {\r\n directory,\r\n\r\n async create(path: string, size: number): Promise<void> {\r\n mkdirSync(directory, { recursive: true });\r\n const fd = openSync(path, 'w');\r\n try {\r\n ftruncateSync(fd, size);\r\n } finally {\r\n closeSync(fd);\r\n }\r\n },\r\n\r\n async writeSegment(path: string, offset: number, compressed: Uint8Array, length: number, sha256: string, sync: boolean): Promise<void> {\r\n const raw = brotliDecompressSync(compressed, { maxOutputLength: Math.max(1, length + 1) });\r\n if (raw.length !== length) throw new Error(`The segment decompressed to ${raw.length} bytes, ${length} expected.`);\r\n const hash = createHash('sha256').update(raw).digest('hex');\r\n if (hash !== sha256) throw new Error('The segment fails its SHA-256.');\r\n const fd = openSync(path, 'r+');\r\n try {\r\n let written = 0;\r\n while (written < raw.length) written += writeSync(fd, raw, written, raw.length - written, offset + written);\r\n if (sync) fsyncSync(fd);\r\n } finally {\r\n closeSync(fd);\r\n }\r\n },\r\n\r\n async size(path: string): Promise<number | null> {\r\n try {\r\n return statSync(path).size;\r\n } catch {\r\n return null;\r\n }\r\n },\r\n\r\n async head(path: string, length: number): Promise<Uint8Array> {\r\n const out = new Uint8Array(length);\r\n const fd = openSync(path, 'r');\r\n try {\r\n let read = 0;\r\n while (read < length) {\r\n const n = readSync(fd, out, read, length - read, read);\r\n if (n === 0) break;\r\n read += n;\r\n }\r\n return read === length ? out : out.subarray(0, read);\r\n } finally {\r\n closeSync(fd);\r\n }\r\n },\r\n\r\n async remove(path: string): Promise<void> {\r\n rmSync(path, { force: true });\r\n },\r\n\r\n async list(target: string): Promise<string[]> {\r\n try {\r\n return readdirSync(target).map((name) => join(target, name));\r\n } catch {\r\n return [];\r\n }\r\n },\r\n };\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqliteDriver.js","sourceRoot":"","sources":["../../src/node/sqliteDriver.ts"],"names":[],"mappings":"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","sourcesContent":["/// <reference types=\"node\" />\n// The Node reference G9SqliteDriver over node:sqlite (Node ≥ 22.13), structurally the driver G9LynxControls tests its\n// SQL against (@g9lynx/testing createNodeTestDriver). Safe integers bind as INTEGER (node binds a plain number as REAL),\n// int64 beyond 2^53 travels as `{ int64 }` tags, BLOBs as ArrayBuffers. Node only.\nimport { existsSync, mkdirSync } from 'node:fs';\nimport { dirname } from 'node:path';\nimport { DatabaseSync, type StatementSync } from 'node:sqlite';\nimport type {\n G9DriverCapabilities,\n G9DriverStatement,\n G9OpenOptions,\n G9RunOptions,\n G9SessionToken,\n G9SqlResult,\n G9SqlValue,\n G9SqliteDriver,\n G9TxToken,\n} from '../sqlite/driver.js';\n\ninterface Session {\n readonly token: G9SessionToken;\n readonly db: DatabaseSync;\n readonly statements: Map<string, StatementSync>;\n tx: G9TxToken | null;\n lastInsertRowId: G9SqlValue;\n}\n\n/** A driver error with the shape the store classifies (`code` + SQLite's `sqliteCode`). */\nexport class G9NodeSqliteError extends Error {\n readonly code: string;\n readonly sqliteCode: number | undefined;\n\n constructor(code: string, message: string, sqliteCode?: number, cause?: unknown) {\n super(message);\n this.name = 'G9SqliteError';\n this.code = code;\n this.sqliteCode = sqliteCode;\n if (cause !== undefined) Object.defineProperty(this, 'cause', { value: cause, enumerable: false, writable: true, configurable: true });\n }\n}\n\nfunction codeFor(resultCode: number): string {\n switch (resultCode & 0xff) {\n case 5:\n return 'busy';\n case 6:\n return 'locked';\n case 19:\n return 'constraint';\n case 11:\n case 26:\n return 'corrupt';\n case 8:\n return 'readonly';\n case 13:\n return 'full';\n case 9:\n return 'interrupted';\n case 21:\n return 'misuse';\n case 14:\n return 'not-found';\n default:\n return 'other';\n }\n}\n\nfunction toError(error: unknown, sql?: string): G9NodeSqliteError {\n if (error instanceof G9NodeSqliteError) return error;\n const e = error as { errcode?: number; message?: string };\n const sqliteCode = typeof e?.errcode === 'number' ? e.errcode : undefined;\n return new G9NodeSqliteError(sqliteCode !== undefined ? codeFor(sqliteCode) : 'misuse', (e?.message ?? String(error)) + (sql ? ` [${sql}]` : ''), sqliteCode, error);\n}\n\nfunction bind(value: G9SqlValue): null | number | bigint | string | Uint8Array {\n if (value === null || typeof value === 'string') return value;\n if (typeof value === 'number') {\n if (Number.isNaN(value)) throw new G9NodeSqliteError('misuse', 'NaN is not a SQL value.');\n return Number.isSafeInteger(value) ? BigInt(value) : value;\n }\n if (value instanceof ArrayBuffer) return value.byteLength === 0 ? new Uint8Array(0) : new Uint8Array(value);\n if (typeof value === 'object' && typeof (value as { int64?: unknown }).int64 === 'string') return BigInt((value as { int64: string }).int64);\n throw new G9NodeSqliteError('misuse', `Not a G9SqlValue (${typeof value}).`);\n}\n\nfunction read(value: unknown): G9SqlValue {\n if (typeof value === 'bigint') {\n const n = Number(value);\n return Number.isSafeInteger(n) ? n : { int64: value.toString() };\n }\n if (ArrayBuffer.isView(value)) {\n const copy = new Uint8Array(value.byteLength);\n copy.set(new Uint8Array(value.buffer, value.byteOffset, value.byteLength));\n return copy.buffer;\n }\n return value as G9SqlValue;\n}\n\nlet seed = 0;\n\n/** The node:sqlite G9SqliteDriver (tests, tools, Node hosts). */\nexport function nodeSqliteDriver(options: { name?: string } = {}): G9SqliteDriver {\n const sessions = new Map<string, Session>();\n const owners = new Map<string, Session>();\n\n const session = (token: G9SessionToken): Session => {\n const s = sessions.get(token);\n if (!s) throw new G9NodeSqliteError('misuse', 'The database session is closed or unknown.');\n return s;\n };\n\n const prepare = (s: Session, sql: string): StatementSync => {\n let statement = s.statements.get(sql);\n if (!statement) {\n statement = s.db.prepare(sql);\n statement.setReadBigInts(true);\n statement.setReturnArrays(true);\n if (s.statements.size > 500) s.statements.clear();\n s.statements.set(sql, statement);\n }\n return statement;\n };\n\n const execute = (s: Session, statement: G9DriverStatement, maxRows: number | undefined): G9SqlResult => {\n const prepared = prepare(s, statement.sql);\n const args = statement.params.map(bind);\n const columns = prepared.columns().map((c) => c.name);\n if (columns.length > 0) {\n const rows: G9SqlValue[][] = [];\n for (const row of prepared.iterate(...args) as Iterable<unknown[]>) {\n if (maxRows !== undefined && rows.length >= maxRows) throw new G9NodeSqliteError('too-many-rows', `More than ${maxRows} rows.`);\n rows.push(row.map(read));\n }\n return { columns, rows, changes: 0, lastInsertRowId: s.lastInsertRowId };\n }\n const result = prepared.run(...args);\n s.lastInsertRowId = read(result.lastInsertRowid);\n return { columns: [], rows: [], changes: Number(result.changes), lastInsertRowId: s.lastInsertRowId };\n };\n\n return {\n name: options.name ?? 'node-sqlite',\n\n async capabilities(): Promise<G9DriverCapabilities> {\n const db = new DatabaseSync(':memory:');\n try {\n const row = db.prepare('SELECT sqlite_version() AS v').get() as { v: string };\n return { sqliteVersion: row.v, maxVariables: 32766, json1: true, returning: true, upsert: true, interrupt: false };\n } finally {\n db.close();\n }\n },\n\n async open(open: G9OpenOptions): Promise<G9SessionToken> {\n const memory = open.path === ':memory:' || open.path === '';\n if (!memory && !open.create && !existsSync(open.path)) throw new G9NodeSqliteError('not-found', `Database file does not exist: ${open.path}`);\n if (!memory && open.create) mkdirSync(dirname(open.path), { recursive: true });\n let db: DatabaseSync;\n try {\n db = new DatabaseSync(open.path || ':memory:', { readOnly: open.readOnly === true });\n } catch (error) {\n throw toError(error);\n }\n const pragmas = open.pragmas ?? {};\n try {\n if (pragmas.journalMode) db.exec(`PRAGMA journal_mode=${pragmas.journalMode.toUpperCase()}`);\n db.exec(`PRAGMA synchronous=${open.durability === 'normal' ? 'NORMAL' : 'FULL'}`);\n if (pragmas.busyTimeoutMs !== undefined) db.exec(`PRAGMA busy_timeout=${Math.max(0, Math.floor(pragmas.busyTimeoutMs))}`);\n if (pragmas.foreignKeys !== undefined) db.exec(`PRAGMA foreign_keys=${pragmas.foreignKeys ? 'ON' : 'OFF'}`);\n } catch (error) {\n db.close();\n throw toError(error);\n }\n const token = `node-session-${++seed}` as G9SessionToken;\n sessions.set(token, { token, db, statements: new Map(), tx: null, lastInsertRowId: 0 });\n return token;\n },\n\n async run(token: G9SessionToken, statements: readonly G9DriverStatement[], run: G9RunOptions = {}): Promise<G9SqlResult[]> {\n const s = session(token);\n if (run.tx !== undefined && s.tx !== run.tx) throw new G9NodeSqliteError('misuse', 'The transaction is finished or belongs to another session.');\n if (run.tx === undefined && s.tx !== null) throw new G9NodeSqliteError('misuse', 'A transaction is open on this session; pass its token (tx).');\n if (run.signal?.aborted) throw new G9NodeSqliteError('cancelled', 'Cancelled before the batch started.');\n const atomic = run.atomic === true && run.tx === undefined && statements.length > 0;\n if (atomic) s.db.exec('BEGIN');\n const results: G9SqlResult[] = [];\n try {\n for (const statement of statements) {\n try {\n results.push(execute(s, statement, run.maxRows));\n } catch (error) {\n throw toError(error, statement.sql);\n }\n }\n if (atomic) s.db.exec('COMMIT');\n } catch (error) {\n if (atomic) {\n try {\n s.db.exec('ROLLBACK');\n } catch {\n // already rolled back\n }\n }\n throw toError(error);\n }\n return results;\n },\n\n async begin(token: G9SessionToken, mode: 'deferred' | 'immediate'): Promise<G9TxToken> {\n const s = session(token);\n if (s.tx !== null) throw new G9NodeSqliteError('misuse', 'A transaction is already open on this session.');\n try {\n s.db.exec(mode === 'immediate' ? 'BEGIN IMMEDIATE' : 'BEGIN DEFERRED');\n } catch (error) {\n throw toError(error);\n }\n const tx = `node-tx-${++seed}` as G9TxToken;\n s.tx = tx;\n owners.set(tx, s);\n return tx;\n },\n\n async commit(tx: G9TxToken): Promise<void> {\n const s = owners.get(tx);\n if (!s || s.tx !== tx) throw new G9NodeSqliteError('misuse', 'The transaction is finished or unknown.');\n try {\n s.db.exec('COMMIT');\n } catch (error) {\n throw toError(error);\n }\n s.tx = null;\n owners.delete(tx);\n },\n\n async rollback(tx: G9TxToken): Promise<void> {\n const s = owners.get(tx);\n if (!s || s.tx !== tx) throw new G9NodeSqliteError('misuse', 'The transaction is finished or unknown.');\n s.tx = null;\n owners.delete(tx);\n try {\n s.db.exec('ROLLBACK');\n } catch {\n // SQLite may already have rolled back\n }\n },\n\n async close(token: G9SessionToken): Promise<void> {\n const s = session(token);\n sessions.delete(token);\n if (s.tx) owners.delete(s.tx);\n s.statements.clear();\n s.db.close();\n },\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"sqliteDriver.js","sourceRoot":"","sources":["../../src/node/sqliteDriver.ts"],"names":[],"mappings":"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","sourcesContent":["/// <reference types=\"node\" />\r\n// The Node reference G9SqliteDriver over node:sqlite (Node ≥ 22.13), structurally the driver G9LynxControls tests its\r\n// SQL against (@g9lynx/testing createNodeTestDriver). Safe integers bind as INTEGER (node binds a plain number as REAL),\r\n// int64 beyond 2^53 travels as `{ int64 }` tags, BLOBs as ArrayBuffers. Node only.\r\nimport { existsSync, mkdirSync } from 'node:fs';\r\nimport { dirname } from 'node:path';\r\nimport { DatabaseSync, type StatementSync } from 'node:sqlite';\r\nimport type {\r\n G9DriverCapabilities,\r\n G9DriverStatement,\r\n G9OpenOptions,\r\n G9RunOptions,\r\n G9SessionToken,\r\n G9SqlResult,\r\n G9SqlValue,\r\n G9SqliteDriver,\r\n G9TxToken,\r\n} from '../sqlite/driver.js';\r\n\r\ninterface Session {\r\n readonly token: G9SessionToken;\r\n readonly db: DatabaseSync;\r\n readonly statements: Map<string, StatementSync>;\r\n tx: G9TxToken | null;\r\n lastInsertRowId: G9SqlValue;\r\n}\r\n\r\n/** A driver error with the shape the store classifies (`code` + SQLite's `sqliteCode`). */\r\nexport class G9NodeSqliteError extends Error {\r\n readonly code: string;\r\n readonly sqliteCode: number | undefined;\r\n\r\n constructor(code: string, message: string, sqliteCode?: number, cause?: unknown) {\r\n super(message);\r\n this.name = 'G9SqliteError';\r\n this.code = code;\r\n this.sqliteCode = sqliteCode;\r\n if (cause !== undefined) Object.defineProperty(this, 'cause', { value: cause, enumerable: false, writable: true, configurable: true });\r\n }\r\n}\r\n\r\nfunction codeFor(resultCode: number): string {\r\n switch (resultCode & 0xff) {\r\n case 5:\r\n return 'busy';\r\n case 6:\r\n return 'locked';\r\n case 19:\r\n return 'constraint';\r\n case 11:\r\n case 26:\r\n return 'corrupt';\r\n case 8:\r\n return 'readonly';\r\n case 13:\r\n return 'full';\r\n case 9:\r\n return 'interrupted';\r\n case 21:\r\n return 'misuse';\r\n case 14:\r\n return 'not-found';\r\n default:\r\n return 'other';\r\n }\r\n}\r\n\r\nfunction toError(error: unknown, sql?: string): G9NodeSqliteError {\r\n if (error instanceof G9NodeSqliteError) return error;\r\n const e = error as { errcode?: number; message?: string };\r\n const sqliteCode = typeof e?.errcode === 'number' ? e.errcode : undefined;\r\n return new G9NodeSqliteError(sqliteCode !== undefined ? codeFor(sqliteCode) : 'misuse', (e?.message ?? String(error)) + (sql ? ` [${sql}]` : ''), sqliteCode, error);\r\n}\r\n\r\nfunction bind(value: G9SqlValue): null | number | bigint | string | Uint8Array {\r\n if (value === null || typeof value === 'string') return value;\r\n if (typeof value === 'number') {\r\n if (Number.isNaN(value)) throw new G9NodeSqliteError('misuse', 'NaN is not a SQL value.');\r\n return Number.isSafeInteger(value) ? BigInt(value) : value;\r\n }\r\n if (value instanceof ArrayBuffer) return value.byteLength === 0 ? new Uint8Array(0) : new Uint8Array(value);\r\n if (typeof value === 'object' && typeof (value as { int64?: unknown }).int64 === 'string') return BigInt((value as { int64: string }).int64);\r\n throw new G9NodeSqliteError('misuse', `Not a G9SqlValue (${typeof value}).`);\r\n}\r\n\r\nfunction read(value: unknown): G9SqlValue {\r\n if (typeof value === 'bigint') {\r\n const n = Number(value);\r\n return Number.isSafeInteger(n) ? n : { int64: value.toString() };\r\n }\r\n if (ArrayBuffer.isView(value)) {\r\n const copy = new Uint8Array(value.byteLength);\r\n copy.set(new Uint8Array(value.buffer, value.byteOffset, value.byteLength));\r\n return copy.buffer;\r\n }\r\n return value as G9SqlValue;\r\n}\r\n\r\nlet seed = 0;\r\n\r\n/** The node:sqlite G9SqliteDriver (tests, tools, Node hosts). */\r\nexport function nodeSqliteDriver(options: { name?: string } = {}): G9SqliteDriver {\r\n const sessions = new Map<string, Session>();\r\n const owners = new Map<string, Session>();\r\n\r\n const session = (token: G9SessionToken): Session => {\r\n const s = sessions.get(token);\r\n if (!s) throw new G9NodeSqliteError('misuse', 'The database session is closed or unknown.');\r\n return s;\r\n };\r\n\r\n const prepare = (s: Session, sql: string): StatementSync => {\r\n let statement = s.statements.get(sql);\r\n if (!statement) {\r\n statement = s.db.prepare(sql);\r\n statement.setReadBigInts(true);\r\n statement.setReturnArrays(true);\r\n if (s.statements.size > 500) s.statements.clear();\r\n s.statements.set(sql, statement);\r\n }\r\n return statement;\r\n };\r\n\r\n const execute = (s: Session, statement: G9DriverStatement, maxRows: number | undefined): G9SqlResult => {\r\n const prepared = prepare(s, statement.sql);\r\n const args = statement.params.map(bind);\r\n const columns = prepared.columns().map((c) => c.name);\r\n if (columns.length > 0) {\r\n const rows: G9SqlValue[][] = [];\r\n for (const row of prepared.iterate(...args) as Iterable<unknown[]>) {\r\n if (maxRows !== undefined && rows.length >= maxRows) throw new G9NodeSqliteError('too-many-rows', `More than ${maxRows} rows.`);\r\n rows.push(row.map(read));\r\n }\r\n return { columns, rows, changes: 0, lastInsertRowId: s.lastInsertRowId };\r\n }\r\n const result = prepared.run(...args);\r\n s.lastInsertRowId = read(result.lastInsertRowid);\r\n return { columns: [], rows: [], changes: Number(result.changes), lastInsertRowId: s.lastInsertRowId };\r\n };\r\n\r\n return {\r\n name: options.name ?? 'node-sqlite',\r\n\r\n async capabilities(): Promise<G9DriverCapabilities> {\r\n const db = new DatabaseSync(':memory:');\r\n try {\r\n const row = db.prepare('SELECT sqlite_version() AS v').get() as { v: string };\r\n return { sqliteVersion: row.v, maxVariables: 32766, json1: true, returning: true, upsert: true, interrupt: false };\r\n } finally {\r\n db.close();\r\n }\r\n },\r\n\r\n async open(open: G9OpenOptions): Promise<G9SessionToken> {\r\n const memory = open.path === ':memory:' || open.path === '';\r\n if (!memory && !open.create && !existsSync(open.path)) throw new G9NodeSqliteError('not-found', `Database file does not exist: ${open.path}`);\r\n if (!memory && open.create) mkdirSync(dirname(open.path), { recursive: true });\r\n let db: DatabaseSync;\r\n try {\r\n db = new DatabaseSync(open.path || ':memory:', { readOnly: open.readOnly === true });\r\n } catch (error) {\r\n throw toError(error);\r\n }\r\n const pragmas = open.pragmas ?? {};\r\n try {\r\n if (pragmas.journalMode) db.exec(`PRAGMA journal_mode=${pragmas.journalMode.toUpperCase()}`);\r\n db.exec(`PRAGMA synchronous=${open.durability === 'normal' ? 'NORMAL' : 'FULL'}`);\r\n if (pragmas.busyTimeoutMs !== undefined) db.exec(`PRAGMA busy_timeout=${Math.max(0, Math.floor(pragmas.busyTimeoutMs))}`);\r\n if (pragmas.foreignKeys !== undefined) db.exec(`PRAGMA foreign_keys=${pragmas.foreignKeys ? 'ON' : 'OFF'}`);\r\n } catch (error) {\r\n db.close();\r\n throw toError(error);\r\n }\r\n const token = `node-session-${++seed}` as G9SessionToken;\r\n sessions.set(token, { token, db, statements: new Map(), tx: null, lastInsertRowId: 0 });\r\n return token;\r\n },\r\n\r\n async run(token: G9SessionToken, statements: readonly G9DriverStatement[], run: G9RunOptions = {}): Promise<G9SqlResult[]> {\r\n const s = session(token);\r\n if (run.tx !== undefined && s.tx !== run.tx) throw new G9NodeSqliteError('misuse', 'The transaction is finished or belongs to another session.');\r\n if (run.tx === undefined && s.tx !== null) throw new G9NodeSqliteError('misuse', 'A transaction is open on this session; pass its token (tx).');\r\n if (run.signal?.aborted) throw new G9NodeSqliteError('cancelled', 'Cancelled before the batch started.');\r\n const atomic = run.atomic === true && run.tx === undefined && statements.length > 0;\r\n if (atomic) s.db.exec('BEGIN');\r\n const results: G9SqlResult[] = [];\r\n try {\r\n for (const statement of statements) {\r\n try {\r\n results.push(execute(s, statement, run.maxRows));\r\n } catch (error) {\r\n throw toError(error, statement.sql);\r\n }\r\n }\r\n if (atomic) s.db.exec('COMMIT');\r\n } catch (error) {\r\n if (atomic) {\r\n try {\r\n s.db.exec('ROLLBACK');\r\n } catch {\r\n // already rolled back\r\n }\r\n }\r\n throw toError(error);\r\n }\r\n return results;\r\n },\r\n\r\n async begin(token: G9SessionToken, mode: 'deferred' | 'immediate'): Promise<G9TxToken> {\r\n const s = session(token);\r\n if (s.tx !== null) throw new G9NodeSqliteError('misuse', 'A transaction is already open on this session.');\r\n try {\r\n s.db.exec(mode === 'immediate' ? 'BEGIN IMMEDIATE' : 'BEGIN DEFERRED');\r\n } catch (error) {\r\n throw toError(error);\r\n }\r\n const tx = `node-tx-${++seed}` as G9TxToken;\r\n s.tx = tx;\r\n owners.set(tx, s);\r\n return tx;\r\n },\r\n\r\n async commit(tx: G9TxToken): Promise<void> {\r\n const s = owners.get(tx);\r\n if (!s || s.tx !== tx) throw new G9NodeSqliteError('misuse', 'The transaction is finished or unknown.');\r\n try {\r\n s.db.exec('COMMIT');\r\n } catch (error) {\r\n throw toError(error);\r\n }\r\n s.tx = null;\r\n owners.delete(tx);\r\n },\r\n\r\n async rollback(tx: G9TxToken): Promise<void> {\r\n const s = owners.get(tx);\r\n if (!s || s.tx !== tx) throw new G9NodeSqliteError('misuse', 'The transaction is finished or unknown.');\r\n s.tx = null;\r\n owners.delete(tx);\r\n try {\r\n s.db.exec('ROLLBACK');\r\n } catch {\r\n // SQLite may already have rolled back\r\n }\r\n },\r\n\r\n async close(token: G9SessionToken): Promise<void> {\r\n const s = session(token);\r\n sessions.delete(token);\r\n if (s.tx) owners.delete(s.tx);\r\n s.statements.clear();\r\n s.db.close();\r\n },\r\n };\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dtos.js","sourceRoot":"","sources":["../../src/protocol/dtos.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAG5D,4FAA4F;AAC5F,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,EAAE,EAAE,CAAC;IACL,OAAO,EAAE,CAAC;IACV,SAAS,EAAE,CAAC;IACZ,cAAc,EAAE,CAAC;IACjB,OAAO,EAAE,CAAC;IACV,iBAAiB,EAAE,CAAC;IACpB,SAAS,EAAE,CAAC;CACJ,CAAC;AAGX,uDAAuD;AACvD,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,QAAQ,EAAE,CAAC;IACX,KAAK,EAAE,CAAC;IACR,QAAQ,EAAE,CAAC;IACX,+GAA+G;IAC/G,YAAY,EAAE,CAAC;CACP,CAAC;AAGX,wEAAwE;AACxE,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,EAAE,EAAE,CAAC;IACL,QAAQ,EAAE,CAAC;IACX,UAAU,EAAE,CAAC;CACL,CAAC;AAYX,qCAAqC;AACrC,MAAM,UAAU,oBAAoB,CAAC,KAAoB;;IACvD,OAAO,IAAI,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,OAAO,EAAE,MAAA,KAAK,CAAC,OAAO,mCAAI,IAAI,EAAE,CAAC,CAAC;AACxH,CAAC;AAED,uCAAuC;AACvC,MAAM,UAAU,aAAa,CAAC,SAA0B;IACtD,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC,OAAO,EAAE,CAAC;AAC1H,CAAC","sourcesContent":["// Twins of G9SyncData.Protocol/Dtos/*.cs. Property names are the camelCase of the .NET names (the JSON wire names);\n// the MessagePack codec maps them to the PascalCase keys Nerdbank.MessagePack writes. .NET `long` values are numbers\n// except where they must stay exact: reconciliation digests and conflict masks are G9Long.\nimport type { G9EConflictPolicy, G9EMoveOutPolicy, G9ESyncColumnType, G9ESyncDirection } from '../abstractions/enums.js';\nimport { G9SyncException } from '../abstractions/errors.js';\nimport type { G9Long } from '../abstractions/long.js';\n\n/** What a subscription must do next, as decided by the server (`G9ESubscriptionAction`). */\nexport const G9ESubscriptionAction = {\n Ok: 0,\n Initial: 1,\n Reconcile: 2,\n ResyncRequired: 3,\n Unknown: 4,\n InvalidParameters: 5,\n Forbidden: 6,\n} as const;\nexport type G9ESubscriptionAction = (typeof G9ESubscriptionAction)[keyof typeof G9ESubscriptionAction];\n\n/** Kind of a planned pull part (`G9EPullPartKind`). */\nexport const G9EPullPartKind = {\n Snapshot: 0,\n Delta: 1,\n Backfill: 2,\n /** A subscription's snapshot as a SQLite file (ADR-0072), streamed as file segments (`G9DtSyncChunk.file`). */\n SnapshotFile: 3,\n} as const;\nexport type G9EPullPartKind = (typeof G9EPullPartKind)[keyof typeof G9EPullPartKind];\n\n/** Outcome of a command executed by the server (`G9ECommandStatus`). */\nexport const G9ECommandStatus = {\n Ok: 0,\n Rejected: 1,\n Superseded: 2,\n} as const;\nexport type G9ECommandStatus = (typeof G9ECommandStatus)[keyof typeof G9ECommandStatus];\n\n// ---------------------------------------------------------------- common\n\nexport interface G9DtSyncError {\n code: string;\n message: string;\n retryable: boolean;\n details?: string | null;\n}\n\n/** `G9DtSyncError.ToException()`. */\nexport function syncErrorToException(error: G9DtSyncError): G9SyncException {\n return new G9SyncException(error.code, error.message, { retryable: error.retryable, details: error.details ?? null });\n}\n\n/** `G9DtSyncError.From(exception)`. */\nexport function syncErrorFrom(exception: G9SyncException): G9DtSyncError {\n return { code: exception.code, message: exception.message, retryable: exception.retryable, details: exception.details };\n}\n\nexport interface G9DtColumnModel {\n name: string;\n type: G9ESyncColumnType;\n nullable: boolean;\n}\n\n/** A subscription as the client holds it: name, canonical parameters and its sync state. */\nexport interface G9DtSubscriptionRef {\n name: string;\n parameters: { [name: string]: string };\n /** Opaque server cursor of the last completed pull. Null before the first pull. */\n cursor?: string | null;\n definitionHash?: string | null;\n authHash?: string | null;\n}\n\n/** Resume point after a chunk. Only chunks that carry one are safe restart points. */\nexport interface G9DtPullContinuation {\n partIndex: number;\n afterKey?: string | null;\n nextSequence: number;\n}\n\n/** One unit of a data stream; `payload` is a G9RowBatch frame. */\nexport interface G9DtSyncChunk {\n sequence: number;\n payload?: Uint8Array | null;\n rowCount: number;\n subscriptionKey?: string | null;\n isFinal: boolean;\n continuation?: G9DtPullContinuation | null;\n reconcileSummary?: G9DtReconcileSummary | null;\n /** Set when the chunk carries a snapshot-file segment (ADR-0072): `payload` is then the segment, Brotli-compressed on its own. */\n file?: G9DtFileSegment | null;\n}\n\n/** Server → client hint that tables changed. */\nexport interface G9DtChangesAvailable {\n tables: string[];\n}\n\n// ---------------------------------------------------------------- hello\n\nexport interface G9DtClientTableModel {\n name: string;\n keyColumn: string;\n keyType: G9ESyncColumnType;\n columns: G9DtColumnModel[];\n}\n\nexport interface G9DtHelloRequest {\n clientId: string;\n appVersion?: string | null;\n protocolVersion: number;\n tables: G9DtClientTableModel[];\n subscriptions: G9DtSubscriptionRef[];\n}\n\nexport interface G9DtColumnTypeMismatch {\n name: string;\n clientType: G9ESyncColumnType;\n serverType: G9ESyncColumnType;\n}\n\n/** The column set both sides agreed on for one table. */\nexport interface G9DtNegotiatedTable {\n tableId: number;\n name: string;\n keyColumn: string;\n keyType: G9ESyncColumnType;\n columns: G9DtColumnModel[];\n computedColumns: string[];\n readOnlyColumns: string[];\n missingColumns: string[];\n typeMismatchColumns: G9DtColumnTypeMismatch[];\n direction: G9ESyncDirection;\n conflictPolicy: G9EConflictPolicy;\n}\n\nexport interface G9DtParameterDefinition {\n name: string;\n type: G9ESyncColumnType;\n required: boolean;\n isList: boolean;\n}\n\nexport interface G9DtSubscriptionDependency {\n name: string;\n required: boolean;\n}\n\nexport interface G9DtSubscriptionDefinition {\n name: string;\n parameters: G9DtParameterDefinition[];\n dependsOn: G9DtSubscriptionDependency[];\n tables: string[];\n ephemeral: boolean;\n ttlSeconds: number;\n heavy: boolean;\n moveOutPolicy: G9EMoveOutPolicy;\n reconcileIntervalMinutes: number;\n definitionHash: string;\n}\n\nexport interface G9DtSubscriptionState {\n key: string;\n action: G9ESubscriptionAction;\n definitionHash?: string | null;\n authHash?: string | null;\n message?: string | null;\n}\n\nexport interface G9DtHelloResult {\n epoch: string;\n /** Server clock at the answer, epoch milliseconds UTC (.NET `DateTime ServerTimeUtc`). */\n serverTimeUtcMs: number;\n protocolVersion: number;\n tables: G9DtNegotiatedTable[];\n unknownTables: string[];\n definitions: G9DtSubscriptionDefinition[];\n subscriptions: G9DtSubscriptionState[];\n maxPushRows: number;\n maxPushBytes: number;\n error?: G9DtSyncError | null;\n}\n\n// ---------------------------------------------------------------- push / pull\n\nexport interface G9DtTableColumns {\n tableId: number;\n columns: string[];\n}\n\nexport interface G9DtRowRef {\n tableId: number;\n key: string;\n}\n\nexport interface G9DtCommand {\n commandId: string;\n sequence: number;\n name: string;\n version: number;\n payload: string;\n createdUtcMs: number;\n touched: G9DtRowRef[];\n}\n\nexport interface G9DtCommandResult {\n commandId: string;\n status: G9ECommandStatus;\n code?: string | null;\n message?: string | null;\n result?: string | null;\n}\n\nexport interface G9DtPushRequest {\n clientId: string;\n batchId: number;\n subscriptions: G9DtSubscriptionRef[];\n tables: G9DtTableColumns[];\n commands: G9DtCommand[];\n heldTables: G9DtTableColumns[];\n frameVersion: number;\n}\n\nexport interface G9DtAcceptedRows {\n tableId: number;\n keys: string[];\n versions: number[];\n deleted: boolean[];\n}\n\nexport interface G9DtRowRejection {\n tableId: number;\n key: string;\n code: string;\n message?: string | null;\n sqlState?: string | null;\n constraint?: string | null;\n column?: string | null;\n details?: string | null;\n}\n\nexport interface G9DtRowConflict {\n tableId: number;\n key: string;\n code: string;\n /** Bits (push column order) the server changed after the client's base version; -1 when unknown. */\n serverChangedMask: G9Long;\n partiallyApplied: boolean;\n}\n\nexport interface G9DtPushResult {\n batchId: number;\n alreadyApplied: boolean;\n accepted: G9DtAcceptedRows[];\n rejections: G9DtRowRejection[];\n conflicts: G9DtRowConflict[];\n canonicalFrames: Uint8Array[];\n commandResults: G9DtCommandResult[];\n error?: G9DtSyncError | null;\n}\n\nexport interface G9DtBackfillRequest {\n tableId: number;\n columns: string[];\n}\n\nexport interface G9DtPullRequest {\n clientId: string;\n subscriptions: G9DtSubscriptionRef[];\n tables: G9DtTableColumns[];\n backfills: G9DtBackfillRequest[];\n frameVersion: number;\n /** Set when the client accepts large first downloads as SQLite snapshot files (ADR-0072); absent = rows only. */\n snapshotFiles?: G9DtSnapshotFileRequest | null;\n}\n\nexport interface G9DtPlannedPart {\n subscriptionKey: string;\n /** 0 for a snapshot-file part, whose tables are in `file`. */\n tableId: number;\n kind: G9EPullPartKind;\n rows: number;\n estimatedBytes: number;\n /** The file a snapshot-file part delivers; null for every other kind. */\n file?: G9DtPlannedFile | null;\n}\n\n// ---------------------------------------------------------------- snapshot files (ADR-0072)\n\n/** The client's offer to receive snapshot files: its storage forms and the shape of every table it receives. */\nexport interface G9DtSnapshotFileRequest {\n formatVersion: number;\n storage: G9DtSnapshotFileStorage;\n tables: G9DtSnapshotFileTable[];\n minRows: number;\n maxBytes: number;\n maxFiles: number;\n}\n\nexport interface G9DtSnapshotFileStorage {\n dateTimeAsTicks: boolean;\n dateTimeFormat: string;\n decimalAsText: boolean;\n}\n\n/** One device table: local name, key and synced columns in LOCAL order, declared indexes. */\nexport interface G9DtSnapshotFileTable {\n tableId: number;\n localName: string;\n keyColumn: string;\n keyType: G9ESyncColumnType;\n columns: G9DtColumnModel[];\n indexes: G9DtSnapshotFileIndex[];\n}\n\nexport interface G9DtSnapshotFileIndex {\n name: string;\n columns: string[];\n unique: boolean;\n}\n\nexport interface G9DtPlannedFile {\n fileId: string;\n /** When the server's state the file holds was taken (epoch ms UTC; .NET `DateTime SnapshotUtc`). */\n snapshotUtcMs: number;\n tables: G9DtPlannedFileTable[];\n}\n\nexport interface G9DtPlannedFileTable {\n tableId: number;\n rows: number;\n}\n\n/** One segment of a snapshot file: `length` raw bytes at `offset`, compressed on its own. */\nexport interface G9DtFileSegment {\n fileId: string;\n index: number;\n offset: number;\n length: number;\n /** SHA-256 of the raw segment, lower-case hex. */\n sha256: string;\n /** Set on the first segment a stream sends for the file (also after a resume). */\n manifest?: G9DtSnapshotFileManifest | null;\n}\n\nexport interface G9DtSnapshotFileManifest {\n fileId: string;\n formatVersion: number;\n bytes: number;\n segmentBytes: number;\n segments: number;\n sha256: string;\n compression: string;\n /** Epoch ms UTC (.NET `DateTime BuiltUtc`). */\n builtUtcMs: number;\n tables: G9DtSnapshotFileTableInfo[];\n}\n\nexport interface G9DtSnapshotFileTableInfo {\n tableId: number;\n name: string;\n versionTable: string;\n rows: number;\n}\n\nexport interface G9DtSubscriptionCursor {\n key: string;\n cursor: string;\n definitionHash: string;\n authHash: string;\n}\n\nexport interface G9DtPullPlan {\n token: string;\n parts: G9DtPlannedPart[];\n totalRows: number;\n estimatedBytes: number;\n cursors: G9DtSubscriptionCursor[];\n skipped: G9DtSubscriptionState[];\n error?: G9DtSyncError | null;\n}\n\nexport interface G9DtTableDigest {\n tableId: number;\n computedColumns: string[];\n /** 256 bucket digests (XOR of row hashes). */\n digests: G9Long[];\n /** 256 bucket row counts. */\n counts: number[];\n}\n\nexport interface G9DtReconcileRequest {\n clientId: string;\n subscription: G9DtSubscriptionRef;\n tables: G9DtTableDigest[];\n frameVersion: number;\n}\n\nexport interface G9DtTableBuckets {\n tableId: number;\n buckets: number[];\n}\n\nexport interface G9DtReconcileSummary {\n cursor: string;\n definitionHash: string;\n authHash: string;\n mismatched: G9DtTableBuckets[];\n}\n\nexport interface G9DtFetchRowsRequest {\n clientId: string;\n subscription: G9DtSubscriptionRef;\n tableId: number;\n keys: string[];\n columns: string[];\n frameVersion: number;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"dtos.js","sourceRoot":"","sources":["../../src/protocol/dtos.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAG5D,4FAA4F;AAC5F,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,EAAE,EAAE,CAAC;IACL,OAAO,EAAE,CAAC;IACV,SAAS,EAAE,CAAC;IACZ,cAAc,EAAE,CAAC;IACjB,OAAO,EAAE,CAAC;IACV,iBAAiB,EAAE,CAAC;IACpB,SAAS,EAAE,CAAC;CACJ,CAAC;AAGX,uDAAuD;AACvD,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,QAAQ,EAAE,CAAC;IACX,KAAK,EAAE,CAAC;IACR,QAAQ,EAAE,CAAC;IACX,+GAA+G;IAC/G,YAAY,EAAE,CAAC;CACP,CAAC;AAGX,wEAAwE;AACxE,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,EAAE,EAAE,CAAC;IACL,QAAQ,EAAE,CAAC;IACX,UAAU,EAAE,CAAC;CACL,CAAC;AAYX,qCAAqC;AACrC,MAAM,UAAU,oBAAoB,CAAC,KAAoB;;IACvD,OAAO,IAAI,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,OAAO,EAAE,MAAA,KAAK,CAAC,OAAO,mCAAI,IAAI,EAAE,CAAC,CAAC;AACxH,CAAC;AAED,uCAAuC;AACvC,MAAM,UAAU,aAAa,CAAC,SAA0B;IACtD,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC,OAAO,EAAE,CAAC;AAC1H,CAAC","sourcesContent":["// Twins of G9SyncData.Protocol/Dtos/*.cs. Property names are the camelCase of the .NET names (the JSON wire names);\r\n// the MessagePack codec maps them to the PascalCase keys Nerdbank.MessagePack writes. .NET `long` values are numbers\r\n// except where they must stay exact: reconciliation digests and conflict masks are G9Long.\r\nimport type { G9EConflictPolicy, G9EMoveOutPolicy, G9ESyncColumnType, G9ESyncDirection } from '../abstractions/enums.js';\r\nimport { G9SyncException } from '../abstractions/errors.js';\r\nimport type { G9Long } from '../abstractions/long.js';\r\n\r\n/** What a subscription must do next, as decided by the server (`G9ESubscriptionAction`). */\r\nexport const G9ESubscriptionAction = {\r\n Ok: 0,\r\n Initial: 1,\r\n Reconcile: 2,\r\n ResyncRequired: 3,\r\n Unknown: 4,\r\n InvalidParameters: 5,\r\n Forbidden: 6,\r\n} as const;\r\nexport type G9ESubscriptionAction = (typeof G9ESubscriptionAction)[keyof typeof G9ESubscriptionAction];\r\n\r\n/** Kind of a planned pull part (`G9EPullPartKind`). */\r\nexport const G9EPullPartKind = {\r\n Snapshot: 0,\r\n Delta: 1,\r\n Backfill: 2,\r\n /** A subscription's snapshot as a SQLite file (ADR-0072), streamed as file segments (`G9DtSyncChunk.file`). */\r\n SnapshotFile: 3,\r\n} as const;\r\nexport type G9EPullPartKind = (typeof G9EPullPartKind)[keyof typeof G9EPullPartKind];\r\n\r\n/** Outcome of a command executed by the server (`G9ECommandStatus`). */\r\nexport const G9ECommandStatus = {\r\n Ok: 0,\r\n Rejected: 1,\r\n Superseded: 2,\r\n} as const;\r\nexport type G9ECommandStatus = (typeof G9ECommandStatus)[keyof typeof G9ECommandStatus];\r\n\r\n// ---------------------------------------------------------------- common\r\n\r\nexport interface G9DtSyncError {\r\n code: string;\r\n message: string;\r\n retryable: boolean;\r\n details?: string | null;\r\n}\r\n\r\n/** `G9DtSyncError.ToException()`. */\r\nexport function syncErrorToException(error: G9DtSyncError): G9SyncException {\r\n return new G9SyncException(error.code, error.message, { retryable: error.retryable, details: error.details ?? null });\r\n}\r\n\r\n/** `G9DtSyncError.From(exception)`. */\r\nexport function syncErrorFrom(exception: G9SyncException): G9DtSyncError {\r\n return { code: exception.code, message: exception.message, retryable: exception.retryable, details: exception.details };\r\n}\r\n\r\nexport interface G9DtColumnModel {\r\n name: string;\r\n type: G9ESyncColumnType;\r\n nullable: boolean;\r\n}\r\n\r\n/** A subscription as the client holds it: name, canonical parameters and its sync state. */\r\nexport interface G9DtSubscriptionRef {\r\n name: string;\r\n parameters: { [name: string]: string };\r\n /** Opaque server cursor of the last completed pull. Null before the first pull. */\r\n cursor?: string | null;\r\n definitionHash?: string | null;\r\n authHash?: string | null;\r\n}\r\n\r\n/** Resume point after a chunk. Only chunks that carry one are safe restart points. */\r\nexport interface G9DtPullContinuation {\r\n partIndex: number;\r\n afterKey?: string | null;\r\n nextSequence: number;\r\n}\r\n\r\n/** One unit of a data stream; `payload` is a G9RowBatch frame. */\r\nexport interface G9DtSyncChunk {\r\n sequence: number;\r\n payload?: Uint8Array | null;\r\n rowCount: number;\r\n subscriptionKey?: string | null;\r\n isFinal: boolean;\r\n continuation?: G9DtPullContinuation | null;\r\n reconcileSummary?: G9DtReconcileSummary | null;\r\n /** Set when the chunk carries a snapshot-file segment (ADR-0072): `payload` is then the segment, Brotli-compressed on its own. */\r\n file?: G9DtFileSegment | null;\r\n}\r\n\r\n/** Server → client hint that tables changed. */\r\nexport interface G9DtChangesAvailable {\r\n tables: string[];\r\n}\r\n\r\n// ---------------------------------------------------------------- hello\r\n\r\nexport interface G9DtClientTableModel {\r\n name: string;\r\n keyColumn: string;\r\n keyType: G9ESyncColumnType;\r\n columns: G9DtColumnModel[];\r\n}\r\n\r\nexport interface G9DtHelloRequest {\r\n clientId: string;\r\n appVersion?: string | null;\r\n protocolVersion: number;\r\n tables: G9DtClientTableModel[];\r\n subscriptions: G9DtSubscriptionRef[];\r\n}\r\n\r\nexport interface G9DtColumnTypeMismatch {\r\n name: string;\r\n clientType: G9ESyncColumnType;\r\n serverType: G9ESyncColumnType;\r\n}\r\n\r\n/** The column set both sides agreed on for one table. */\r\nexport interface G9DtNegotiatedTable {\r\n tableId: number;\r\n name: string;\r\n keyColumn: string;\r\n keyType: G9ESyncColumnType;\r\n columns: G9DtColumnModel[];\r\n computedColumns: string[];\r\n readOnlyColumns: string[];\r\n missingColumns: string[];\r\n typeMismatchColumns: G9DtColumnTypeMismatch[];\r\n direction: G9ESyncDirection;\r\n conflictPolicy: G9EConflictPolicy;\r\n}\r\n\r\nexport interface G9DtParameterDefinition {\r\n name: string;\r\n type: G9ESyncColumnType;\r\n required: boolean;\r\n isList: boolean;\r\n}\r\n\r\nexport interface G9DtSubscriptionDependency {\r\n name: string;\r\n required: boolean;\r\n}\r\n\r\nexport interface G9DtSubscriptionDefinition {\r\n name: string;\r\n parameters: G9DtParameterDefinition[];\r\n dependsOn: G9DtSubscriptionDependency[];\r\n tables: string[];\r\n ephemeral: boolean;\r\n ttlSeconds: number;\r\n heavy: boolean;\r\n moveOutPolicy: G9EMoveOutPolicy;\r\n reconcileIntervalMinutes: number;\r\n definitionHash: string;\r\n}\r\n\r\nexport interface G9DtSubscriptionState {\r\n key: string;\r\n action: G9ESubscriptionAction;\r\n definitionHash?: string | null;\r\n authHash?: string | null;\r\n message?: string | null;\r\n}\r\n\r\nexport interface G9DtHelloResult {\r\n epoch: string;\r\n /** Server clock at the answer, epoch milliseconds UTC (.NET `DateTime ServerTimeUtc`). */\r\n serverTimeUtcMs: number;\r\n protocolVersion: number;\r\n tables: G9DtNegotiatedTable[];\r\n unknownTables: string[];\r\n definitions: G9DtSubscriptionDefinition[];\r\n subscriptions: G9DtSubscriptionState[];\r\n maxPushRows: number;\r\n maxPushBytes: number;\r\n error?: G9DtSyncError | null;\r\n}\r\n\r\n// ---------------------------------------------------------------- push / pull\r\n\r\nexport interface G9DtTableColumns {\r\n tableId: number;\r\n columns: string[];\r\n}\r\n\r\nexport interface G9DtRowRef {\r\n tableId: number;\r\n key: string;\r\n}\r\n\r\nexport interface G9DtCommand {\r\n commandId: string;\r\n sequence: number;\r\n name: string;\r\n version: number;\r\n payload: string;\r\n createdUtcMs: number;\r\n touched: G9DtRowRef[];\r\n}\r\n\r\nexport interface G9DtCommandResult {\r\n commandId: string;\r\n status: G9ECommandStatus;\r\n code?: string | null;\r\n message?: string | null;\r\n result?: string | null;\r\n}\r\n\r\nexport interface G9DtPushRequest {\r\n clientId: string;\r\n batchId: number;\r\n subscriptions: G9DtSubscriptionRef[];\r\n tables: G9DtTableColumns[];\r\n commands: G9DtCommand[];\r\n heldTables: G9DtTableColumns[];\r\n frameVersion: number;\r\n}\r\n\r\nexport interface G9DtAcceptedRows {\r\n tableId: number;\r\n keys: string[];\r\n versions: number[];\r\n deleted: boolean[];\r\n}\r\n\r\nexport interface G9DtRowRejection {\r\n tableId: number;\r\n key: string;\r\n code: string;\r\n message?: string | null;\r\n sqlState?: string | null;\r\n constraint?: string | null;\r\n column?: string | null;\r\n details?: string | null;\r\n}\r\n\r\nexport interface G9DtRowConflict {\r\n tableId: number;\r\n key: string;\r\n code: string;\r\n /** Bits (push column order) the server changed after the client's base version; -1 when unknown. */\r\n serverChangedMask: G9Long;\r\n partiallyApplied: boolean;\r\n}\r\n\r\nexport interface G9DtPushResult {\r\n batchId: number;\r\n alreadyApplied: boolean;\r\n accepted: G9DtAcceptedRows[];\r\n rejections: G9DtRowRejection[];\r\n conflicts: G9DtRowConflict[];\r\n canonicalFrames: Uint8Array[];\r\n commandResults: G9DtCommandResult[];\r\n error?: G9DtSyncError | null;\r\n}\r\n\r\nexport interface G9DtBackfillRequest {\r\n tableId: number;\r\n columns: string[];\r\n}\r\n\r\nexport interface G9DtPullRequest {\r\n clientId: string;\r\n subscriptions: G9DtSubscriptionRef[];\r\n tables: G9DtTableColumns[];\r\n backfills: G9DtBackfillRequest[];\r\n frameVersion: number;\r\n /** Set when the client accepts large first downloads as SQLite snapshot files (ADR-0072); absent = rows only. */\r\n snapshotFiles?: G9DtSnapshotFileRequest | null;\r\n}\r\n\r\nexport interface G9DtPlannedPart {\r\n subscriptionKey: string;\r\n /** 0 for a snapshot-file part, whose tables are in `file`. */\r\n tableId: number;\r\n kind: G9EPullPartKind;\r\n rows: number;\r\n estimatedBytes: number;\r\n /** The file a snapshot-file part delivers; null for every other kind. */\r\n file?: G9DtPlannedFile | null;\r\n}\r\n\r\n// ---------------------------------------------------------------- snapshot files (ADR-0072)\r\n\r\n/** The client's offer to receive snapshot files: its storage forms and the shape of every table it receives. */\r\nexport interface G9DtSnapshotFileRequest {\r\n formatVersion: number;\r\n storage: G9DtSnapshotFileStorage;\r\n tables: G9DtSnapshotFileTable[];\r\n minRows: number;\r\n maxBytes: number;\r\n maxFiles: number;\r\n}\r\n\r\nexport interface G9DtSnapshotFileStorage {\r\n dateTimeAsTicks: boolean;\r\n dateTimeFormat: string;\r\n decimalAsText: boolean;\r\n}\r\n\r\n/** One device table: local name, key and synced columns in LOCAL order, declared indexes. */\r\nexport interface G9DtSnapshotFileTable {\r\n tableId: number;\r\n localName: string;\r\n keyColumn: string;\r\n keyType: G9ESyncColumnType;\r\n columns: G9DtColumnModel[];\r\n indexes: G9DtSnapshotFileIndex[];\r\n}\r\n\r\nexport interface G9DtSnapshotFileIndex {\r\n name: string;\r\n columns: string[];\r\n unique: boolean;\r\n}\r\n\r\nexport interface G9DtPlannedFile {\r\n fileId: string;\r\n /** When the server's state the file holds was taken (epoch ms UTC; .NET `DateTime SnapshotUtc`). */\r\n snapshotUtcMs: number;\r\n tables: G9DtPlannedFileTable[];\r\n}\r\n\r\nexport interface G9DtPlannedFileTable {\r\n tableId: number;\r\n rows: number;\r\n}\r\n\r\n/** One segment of a snapshot file: `length` raw bytes at `offset`, compressed on its own. */\r\nexport interface G9DtFileSegment {\r\n fileId: string;\r\n index: number;\r\n offset: number;\r\n length: number;\r\n /** SHA-256 of the raw segment, lower-case hex. */\r\n sha256: string;\r\n /** Set on the first segment a stream sends for the file (also after a resume). */\r\n manifest?: G9DtSnapshotFileManifest | null;\r\n}\r\n\r\nexport interface G9DtSnapshotFileManifest {\r\n fileId: string;\r\n formatVersion: number;\r\n bytes: number;\r\n segmentBytes: number;\r\n segments: number;\r\n sha256: string;\r\n compression: string;\r\n /** Epoch ms UTC (.NET `DateTime BuiltUtc`). */\r\n builtUtcMs: number;\r\n tables: G9DtSnapshotFileTableInfo[];\r\n}\r\n\r\nexport interface G9DtSnapshotFileTableInfo {\r\n tableId: number;\r\n name: string;\r\n versionTable: string;\r\n rows: number;\r\n}\r\n\r\nexport interface G9DtSubscriptionCursor {\r\n key: string;\r\n cursor: string;\r\n definitionHash: string;\r\n authHash: string;\r\n}\r\n\r\nexport interface G9DtPullPlan {\r\n token: string;\r\n parts: G9DtPlannedPart[];\r\n totalRows: number;\r\n estimatedBytes: number;\r\n cursors: G9DtSubscriptionCursor[];\r\n skipped: G9DtSubscriptionState[];\r\n error?: G9DtSyncError | null;\r\n}\r\n\r\nexport interface G9DtTableDigest {\r\n tableId: number;\r\n computedColumns: string[];\r\n /** 256 bucket digests (XOR of row hashes). */\r\n digests: G9Long[];\r\n /** 256 bucket row counts. */\r\n counts: number[];\r\n}\r\n\r\nexport interface G9DtReconcileRequest {\r\n clientId: string;\r\n subscription: G9DtSubscriptionRef;\r\n tables: G9DtTableDigest[];\r\n frameVersion: number;\r\n}\r\n\r\nexport interface G9DtTableBuckets {\r\n tableId: number;\r\n buckets: number[];\r\n}\r\n\r\nexport interface G9DtReconcileSummary {\r\n cursor: string;\r\n definitionHash: string;\r\n authHash: string;\r\n mismatched: G9DtTableBuckets[];\r\n}\r\n\r\nexport interface G9DtFetchRowsRequest {\r\n clientId: string;\r\n subscription: G9DtSubscriptionRef;\r\n tableId: number;\r\n keys: string[];\r\n columns: string[];\r\n frameVersion: number;\r\n}\r\n"]}
|