@loradb/lora-wasm 0.5.6 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/README.md +17 -16
  2. package/dist/index.d.ts +21 -31
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +27 -35
  5. package/dist/index.js.map +1 -1
  6. package/dist/loader-node.d.ts +1 -1
  7. package/dist/snapshot.d.ts +49 -16
  8. package/dist/snapshot.d.ts.map +1 -1
  9. package/dist/snapshot.js +35 -53
  10. package/dist/snapshot.js.map +1 -1
  11. package/dist/types.d.ts +13 -2
  12. package/dist/types.d.ts.map +1 -1
  13. package/dist/types.js +8 -0
  14. package/dist/types.js.map +1 -1
  15. package/dist/worker-client.d.ts +20 -20
  16. package/dist/worker-client.d.ts.map +1 -1
  17. package/dist/worker-client.js +21 -21
  18. package/dist/worker-client.js.map +1 -1
  19. package/dist/worker-protocol.d.ts +5 -2
  20. package/dist/worker-protocol.d.ts.map +1 -1
  21. package/dist/worker.js +7 -4
  22. package/dist/worker.js.map +1 -1
  23. package/package.json +1 -1
  24. package/pkg-bundler/README.md +17 -16
  25. package/pkg-bundler/lora_wasm.d.ts +13 -11
  26. package/pkg-bundler/lora_wasm_bg.js +116 -29
  27. package/pkg-bundler/lora_wasm_bg.wasm +0 -0
  28. package/pkg-bundler/lora_wasm_bg.wasm.d.ts +2 -2
  29. package/pkg-bundler/package.json +1 -1
  30. package/pkg-node/README.md +17 -16
  31. package/pkg-node/lora_wasm.d.ts +13 -11
  32. package/pkg-node/lora_wasm.js +116 -29
  33. package/pkg-node/lora_wasm_bg.wasm +0 -0
  34. package/pkg-node/lora_wasm_bg.wasm.d.ts +2 -2
  35. package/pkg-node/package.json +1 -1
  36. package/pkg-web/README.md +17 -16
  37. package/pkg-web/lora_wasm.d.ts +15 -13
  38. package/pkg-web/lora_wasm.js +99 -29
  39. package/pkg-web/lora_wasm_bg.wasm +0 -0
  40. package/pkg-web/lora_wasm_bg.wasm.d.ts +2 -2
  41. package/pkg-web/package.json +1 -1
package/README.md CHANGED
@@ -116,14 +116,17 @@ useful for tests and for swapping execution backends behind the same API.
116
116
 
117
117
  ## Snapshots
118
118
 
119
- WASM has no filesystem access, so `saveSnapshot()` defaults to a `Uint8Array`.
120
- It also accepts typed formats: `"base64"` returns base64 text, `"blob"` returns
121
- a `Blob`, and `"download"` triggers a browser download from the main thread.
122
-
123
- `loadSnapshot` accepts a `WasmSnapshotSource`: `Uint8Array`, `ArrayBuffer`,
124
- `Blob`/`File`, `Response`, web `ReadableStream`, string URL, or `URL`. It does
125
- not include Node `Buffer`; use `Uint8Array` bytes when running the WASM package
126
- from Node.
119
+ WASM has no filesystem access, so snapshots never accept string paths.
120
+ `saveSnapshot()` defaults to `Uint8Array`, and can also return `ArrayBuffer`,
121
+ `Blob`, `Response`, `ReadableStream`, or an object `URL`. `loadSnapshot`
122
+ accepts `URL`, `Uint8Array`, `ArrayBuffer`, `Blob`, `Response`, and web
123
+ `ReadableStream<Uint8Array | ArrayBuffer>`. The bytes use the database
124
+ snapshot codec (`LORACOL1`) and can be loaded by native LoraDB. Older store
125
+ snapshots (`LORASNAP`) are still accepted by `loadSnapshot` for compatibility.
126
+ Snapshot bytes are uncompressed by default; pass `{ compression: "gzip" }` or
127
+ `{ compression: { format: "gzip", level: 1 } }` to save smaller
128
+ WASM-portable snapshots. Gzip levels `0..9` are supported; level `1` is the
129
+ fast default.
127
130
 
128
131
  ```ts
129
132
  import { createDatabase } from "lora-wasm";
@@ -131,20 +134,18 @@ import { createDatabase } from "lora-wasm";
131
134
  const db = await createDatabase();
132
135
  await db.execute("CREATE (:Person {name: 'Alice'})");
133
136
 
134
- const bytes = await db.saveSnapshotToBytes();
135
- const sameBytes = await db.saveSnapshot("binary");
136
- const blob = await db.saveSnapshot({ format: "blob" });
137
- await db.saveSnapshot({ format: "download", filename: "graph.lorasnap" });
137
+ const bytes = await db.saveSnapshot();
138
+ const compressed = await db.saveSnapshot({ compression: "gzip" });
139
+ const blob = await db.saveSnapshot({ format: "blob", compression: "gzip" });
140
+ const response = await db.saveSnapshot({ format: "response" });
138
141
 
139
142
  await db.loadSnapshot(bytes);
143
+ await db.loadSnapshot(compressed);
140
144
  await db.loadSnapshot(blob);
141
- await db.loadSnapshot(new Response(bytes).body!);
145
+ await db.loadSnapshot(response);
142
146
  await db.loadSnapshot(new URL("/graph.lorasnap", location.href));
143
147
  ```
144
148
 
145
- `loadSnapshotFromBytes(bytes)` remains available for the narrow
146
- `Uint8Array`-only path.
147
-
148
149
  ## Typed value model
149
150
 
150
151
  | TS type | Runtime shape |
package/dist/index.d.ts CHANGED
@@ -18,15 +18,14 @@
18
18
  import type { LoraParams, LoraValue, QueryResult } from "./types.js";
19
19
  import { WasmDatabase } from "./loader-node.js";
20
20
  import type { WorkerDatabase } from "./worker-client.js";
21
- import type { WasmSnapshotSource } from "./snapshot.js";
21
+ import type { WasmSnapshotByteOptions, WasmSnapshotLoadOptions, WasmSnapshotSource } from "./snapshot.js";
22
22
  export * from "./types.js";
23
23
  export { createWorkerDatabase, type WorkerDatabase, type WorkerLike, } from "./worker-client.js";
24
- export type { WasmSnapshotSaveFormat, WasmSnapshotSaveOptions, WasmSnapshotSource, } from "./snapshot.js";
24
+ export type { WasmSnapshotByteOptions, WasmSnapshotCompression, WasmSnapshotEncryption, WasmSnapshotLoadOptions, WasmSnapshotPasswordParams, WasmSnapshotSaveFormat, WasmSnapshotSaveOptions, WasmSnapshotSource, } from "./snapshot.js";
25
25
  /**
26
- * Metadata returned by `saveSnapshotToBytes` / `loadSnapshotFromBytes`.
27
- * Mirrors the Rust `SnapshotMeta` struct and matches the shape used by
28
- * every other binding — `walLsn` is reserved for the future
29
- * WAL/checkpoint hybrid and is `null` for pure snapshots.
26
+ * Metadata returned by `loadSnapshot`.
27
+ * Mirrors the Rust `SnapshotMeta` struct. WASM saves the database snapshot
28
+ * codec and accepts legacy store snapshots on load for compatibility.
30
29
  */
31
30
  export interface SnapshotMeta {
32
31
  formatVersion: number;
@@ -80,39 +79,30 @@ declare class DatabaseImpl {
80
79
  clear(): Promise<void>;
81
80
  nodeCount(): Promise<number>;
82
81
  relationshipCount(): Promise<number>;
83
- /**
84
- * Serialize the current graph to a `Uint8Array`. WASM has no filesystem
85
- * access — the caller is responsible for persisting the bytes (IndexedDB,
86
- * localStorage, fetch POST, `fs.writeFileSync` in Node, etc.) and passing
87
- * them back to `loadSnapshotFromBytes` on a future database instance.
88
- */
89
- saveSnapshotToBytes(): Promise<Uint8Array>;
90
82
  saveSnapshot(): Promise<Uint8Array>;
91
- saveSnapshot(format: "binary"): Promise<Uint8Array>;
92
- saveSnapshot(format: "base64"): Promise<string>;
93
- saveSnapshot(format: "blob"): Promise<Blob>;
94
- saveSnapshot(format: "download"): Promise<void>;
83
+ saveSnapshot(options: WasmSnapshotByteOptions): Promise<Uint8Array>;
95
84
  saveSnapshot(options: {
96
- format: "binary";
97
- }): Promise<Uint8Array>;
85
+ format?: "bytes";
86
+ } & WasmSnapshotByteOptions): Promise<Uint8Array>;
98
87
  saveSnapshot(options: {
99
- format: "base64";
100
- }): Promise<string>;
88
+ format: "arrayBuffer";
89
+ } & WasmSnapshotByteOptions): Promise<ArrayBuffer>;
101
90
  saveSnapshot(options: {
102
91
  format: "blob";
103
92
  mimeType?: string;
104
- }): Promise<Blob>;
93
+ } & WasmSnapshotByteOptions): Promise<Blob>;
105
94
  saveSnapshot(options: {
106
- format: "download";
107
- filename?: string;
95
+ format: "response";
108
96
  mimeType?: string;
109
- }): Promise<void>;
110
- /**
111
- * Replace the current graph state with a snapshot decoded from `bytes`.
112
- * Returns metadata describing the restored snapshot.
113
- */
114
- loadSnapshotFromBytes(bytes: Uint8Array): Promise<SnapshotMeta>;
115
- loadSnapshot(source: WasmSnapshotSource): Promise<SnapshotMeta>;
97
+ } & WasmSnapshotByteOptions): Promise<Response>;
98
+ saveSnapshot(options: {
99
+ format: "stream";
100
+ } & WasmSnapshotByteOptions): Promise<ReadableStream<Uint8Array>>;
101
+ saveSnapshot(options: {
102
+ format: "url";
103
+ mimeType?: string;
104
+ } & WasmSnapshotByteOptions): Promise<URL>;
105
+ loadSnapshot(source: WasmSnapshotSource, options?: WasmSnapshotLoadOptions): Promise<SnapshotMeta>;
116
106
  /** Release the underlying wasm handle. Subsequent calls will throw. */
117
107
  dispose(): void;
118
108
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../ts/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EACV,UAAU,EACV,SAAS,EACT,WAAW,EACZ,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,YAAY,EAAoB,MAAM,kBAAkB,CAAC;AAElE,OAAO,KAAK,EAAE,cAAc,EAAc,MAAM,oBAAoB,CAAC;AAQrE,OAAO,KAAK,EAEV,kBAAkB,EACnB,MAAM,eAAe,CAAC;AAEvB,cAAc,YAAY,CAAC;AAC3B,OAAO,EACL,oBAAoB,EACpB,KAAK,cAAc,EACnB,KAAK,UAAU,GAChB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,sBAAsB,EACtB,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,eAAe,CAAC;AAEvB;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED,MAAM,WAAW,qBAAqB;IACpC;;;;;;;;;OASG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,aAAa,CAAC;IAC5C;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,MAAM,eAAe,GACvB,YAAY,GACZ,WAAW,GACX,WAAW,GACX,UAAU,GACV,IAAI,GACJ,IAAI,CAAC;AAET,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,SAAS,CACxB,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAC/D,SAAQ,qBAAqB,CAAC,CAAC,CAAC;IAChC,OAAO,IAAI,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACxC,OAAO,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IACxB,KAAK,IAAI,IAAI,CAAC;CACf;AAiFD;;;;;;;GAOG;AACH,cAAM,YAAY;;gBAGJ,KAAK,EAAE,YAAY,CAAC,OAAO,YAAY,CAAC;IAI9C,OAAO,CACX,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,EAC/D,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAS9D,MAAM,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,EACpE,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,UAAU,GAClB,SAAS,CAAC,CAAC,CAAC;IAWf,IAAI,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,EAClE,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,UAAU,GAClB,SAAS,CAAC,CAAC,CAAC;IAIT,WAAW,CACf,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,EAE/D,UAAU,EAAE,oBAAoB,EAAE,EAClC,IAAI,GAAE,eAA8B,GACnC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IAW3B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;IAI5B,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC;IAI1C;;;;;OAKG;IACG,mBAAmB,IAAI,OAAO,CAAC,UAAU,CAAC;IAQhD,YAAY,IAAI,OAAO,CAAC,UAAU,CAAC;IACnC,YAAY,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC;IACnD,YAAY,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;IAC/C,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAC3C,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAC/C,YAAY,CAAC,OAAO,EAAE;QAAE,MAAM,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC,UAAU,CAAC;IAChE,YAAY,CAAC,OAAO,EAAE;QAAE,MAAM,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAC5D,YAAY,CAAC,OAAO,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAC3E,YAAY,CAAC,OAAO,EAAE;QAAE,MAAM,EAAE,UAAU,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBlG;;;OAGG;IACG,qBAAqB,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC;IAQ/D,YAAY,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,YAAY,CAAC;IAUrE,uEAAuE;IACvE,OAAO,IAAI,IAAI;CAGhB;AAED;;;;;GAKG;AACH,MAAM,MAAM,QAAQ,GAAG,YAAY,GAAG,cAAc,CAAC;AAgCrD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,wBAAwB,IAAI,OAAO,CAAC,YAAY,CAAC,CAGtE;AAED,wBAAsB,cAAc,CAClC,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,QAAQ,CAAC,CAwBnB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../ts/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -18,7 +18,7 @@
18
18
  import { wrapError } from "./types.js";
19
19
  import { WasmDatabase, init as wasmInit } from "./loader-node.js";
20
20
  import { createWorkerDatabase } from "./worker-client.js";
21
- import { downloadSnapshotBytes, resolveSnapshotSaveFormat, snapshotBytesToBase64, snapshotBytesToBlob, snapshotSourceToBytes, } from "./snapshot.js";
21
+ import { snapshotAsArrayBuffer, snapshotAsBlob, snapshotAsObjectUrl, snapshotAsReadableStream, snapshotAsResponse, readSnapshotSource, } from "./snapshot.js";
22
22
  export * from "./types.js";
23
23
  export { createWorkerDatabase, } from "./worker-client.js";
24
24
  class NativeRowStream {
@@ -141,48 +141,40 @@ class DatabaseImpl {
141
141
  return this.#inner.relationshipCount();
142
142
  }
143
143
  /**
144
- * Serialize the current graph to a `Uint8Array`. WASM has no filesystem
145
- * access — the caller is responsible for persisting the bytes (IndexedDB,
146
- * localStorage, fetch POST, `fs.writeFileSync` in Node, etc.) and passing
147
- * them back to `loadSnapshotFromBytes` on a future database instance.
144
+ * Serialize the current graph to a host-friendly snapshot object. WASM has
145
+ * no filesystem access; callers persist the returned bytes/Blob/stream/URL
146
+ * through host-provided storage.
148
147
  */
149
- async saveSnapshotToBytes() {
148
+ async saveSnapshot(options) {
150
149
  try {
151
- return this.#inner.saveSnapshotToBytes();
152
- }
153
- catch (err) {
154
- throw wrapError(err);
155
- }
156
- }
157
- async saveSnapshot(target) {
158
- const options = resolveSnapshotSaveFormat(target);
159
- const bytes = await this.saveSnapshotToBytes();
160
- switch (options.format) {
161
- case "binary":
162
- return bytes;
163
- case "base64":
164
- return snapshotBytesToBase64(bytes);
165
- case "blob":
166
- return snapshotBytesToBlob(bytes, options.mimeType);
167
- case "download":
168
- return downloadSnapshotBytes(bytes, options.filename, options.mimeType);
169
- }
170
- }
171
- /**
172
- * Replace the current graph state with a snapshot decoded from `bytes`.
173
- * Returns metadata describing the restored snapshot.
174
- */
175
- async loadSnapshotFromBytes(bytes) {
176
- try {
177
- return this.#inner.loadSnapshotFromBytes(bytes);
150
+ const native = this.#inner;
151
+ const bytes = native.saveSnapshot(options ?? null);
152
+ const format = options && "format" in options ? options.format ?? "bytes" : "bytes";
153
+ const mimeType = options && "mimeType" in options ? options.mimeType : undefined;
154
+ switch (format) {
155
+ case "bytes":
156
+ return bytes;
157
+ case "arrayBuffer":
158
+ return snapshotAsArrayBuffer(bytes);
159
+ case "blob":
160
+ return snapshotAsBlob(bytes, mimeType);
161
+ case "response":
162
+ return snapshotAsResponse(bytes, mimeType);
163
+ case "stream":
164
+ return snapshotAsReadableStream(bytes);
165
+ case "url":
166
+ return snapshotAsObjectUrl(bytes, mimeType);
167
+ }
178
168
  }
179
169
  catch (err) {
180
170
  throw wrapError(err);
181
171
  }
182
172
  }
183
- async loadSnapshot(source) {
173
+ async loadSnapshot(source, options) {
184
174
  try {
185
- return this.#inner.loadSnapshotFromBytes(await snapshotSourceToBytes(source));
175
+ const bytes = await readSnapshotSource(source);
176
+ const native = this.#inner;
177
+ return native.loadSnapshot(bytes, options ?? null);
186
178
  }
187
179
  catch (err) {
188
180
  throw wrapError(err);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../ts/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../ts/index.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,7 @@ export interface NativeModule {
8
8
  init: () => void;
9
9
  }
10
10
  /**
11
- * Shape of the snapshot metadata emitted by `loadSnapshotFromBytes`. The
11
+ * Shape of the snapshot metadata emitted by `loadSnapshot`. The
12
12
  * native Rust layer returns this as a plain JS object via `serde-wasm-bindgen`.
13
13
  */
14
14
  export interface NativeSnapshotMeta {
@@ -1,22 +1,55 @@
1
- export type WasmSnapshotSource = string | URL | Uint8Array | ArrayBuffer | Blob | Response | ReadableStream<Uint8Array | ArrayBuffer>;
2
- export type WasmSnapshotSaveFormat = "binary" | "base64" | "blob" | "download";
3
- export type WasmSnapshotSaveOptions = {
4
- format: "binary";
1
+ export type WasmSnapshotSource = URL | Uint8Array | ArrayBuffer | Blob | Response | ReadableStream<Uint8Array | ArrayBuffer>;
2
+ export type WasmSnapshotCompression = "none" | "gzip" | {
3
+ format: "none";
5
4
  } | {
6
- format: "base64";
5
+ format: "gzip";
6
+ level?: number;
7
+ };
8
+ export interface WasmSnapshotPasswordParams {
9
+ memoryCostKib?: number;
10
+ timeCost?: number;
11
+ parallelism?: number;
12
+ }
13
+ export type WasmSnapshotEncryption = {
14
+ type?: "password" | "passphrase";
15
+ keyId?: string;
16
+ password: string;
17
+ params?: WasmSnapshotPasswordParams;
7
18
  } | {
19
+ type: "key" | "rawKey" | "raw_key";
20
+ keyId?: string;
21
+ key: number[];
22
+ };
23
+ export interface WasmSnapshotByteOptions {
24
+ compression?: WasmSnapshotCompression;
25
+ encryption?: WasmSnapshotEncryption | null;
26
+ }
27
+ export interface WasmSnapshotLoadOptions {
28
+ credentials?: WasmSnapshotEncryption | null;
29
+ encryption?: WasmSnapshotEncryption | null;
30
+ }
31
+ export type WasmSnapshotSaveFormat = "bytes" | "arrayBuffer" | "blob" | "response" | "stream" | "url";
32
+ export type WasmSnapshotSaveOptions = ({
33
+ format?: "bytes";
34
+ } & WasmSnapshotByteOptions) | ({
35
+ format: "arrayBuffer";
36
+ } & WasmSnapshotByteOptions) | ({
8
37
  format: "blob";
9
38
  mimeType?: string;
10
- } | {
11
- format: "download";
12
- filename?: string;
39
+ } & WasmSnapshotByteOptions) | ({
40
+ format: "response";
13
41
  mimeType?: string;
14
- };
15
- export type WasmSnapshotSaveTarget = WasmSnapshotSaveFormat | WasmSnapshotSaveOptions | undefined;
16
- export declare function bytesToUint8Array(bytes: Uint8Array | ArrayBuffer): Uint8Array;
17
- export declare function snapshotBytesToBase64(bytes: Uint8Array): string;
18
- export declare function snapshotBytesToBlob(bytes: Uint8Array, mimeType?: string): Blob;
19
- export declare function downloadSnapshotBytes(bytes: Uint8Array, filename?: string, mimeType?: string): void;
20
- export declare function resolveSnapshotSaveFormat(target: WasmSnapshotSaveTarget): WasmSnapshotSaveOptions;
21
- export declare function snapshotSourceToBytes(source: WasmSnapshotSource): Promise<Uint8Array>;
42
+ } & WasmSnapshotByteOptions) | ({
43
+ format: "stream";
44
+ } & WasmSnapshotByteOptions) | ({
45
+ format: "url";
46
+ mimeType?: string;
47
+ } & WasmSnapshotByteOptions);
48
+ export declare function asUint8Array(bytes: Uint8Array | ArrayBuffer): Uint8Array;
49
+ export declare function snapshotAsArrayBuffer(bytes: Uint8Array): ArrayBuffer;
50
+ export declare function snapshotAsBlob(bytes: Uint8Array, mimeType?: string): Blob;
51
+ export declare function snapshotAsResponse(bytes: Uint8Array, mimeType?: string): Response;
52
+ export declare function snapshotAsReadableStream(bytes: Uint8Array): ReadableStream<Uint8Array>;
53
+ export declare function snapshotAsObjectUrl(bytes: Uint8Array, mimeType?: string): URL;
54
+ export declare function readSnapshotSource(source: WasmSnapshotSource): Promise<Uint8Array>;
22
55
  //# sourceMappingURL=snapshot.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../ts/snapshot.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,kBAAkB,GAC1B,MAAM,GACN,GAAG,GACH,UAAU,GACV,WAAW,GACX,IAAI,GACJ,QAAQ,GACR,cAAc,CAAC,UAAU,GAAG,WAAW,CAAC,CAAC;AAC7C,MAAM,MAAM,sBAAsB,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;AAC/E,MAAM,MAAM,uBAAuB,GAC/B;IAAE,MAAM,EAAE,QAAQ,CAAA;CAAE,GACpB;IAAE,MAAM,EAAE,QAAQ,CAAA;CAAE,GACpB;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GACrC;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AACjE,MAAM,MAAM,sBAAsB,GAC9B,sBAAsB,GACtB,uBAAuB,GACvB,SAAS,CAAC;AAKd,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,GAAG,UAAU,CAK7E;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAe/D;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,UAAU,EACjB,QAAQ,SAA6B,GACpC,IAAI,CAIN;AAED,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,UAAU,EACjB,QAAQ,SAA4B,EACpC,QAAQ,SAA6B,GACpC,IAAI,CAsCN;AAED,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,sBAAsB,GAC7B,uBAAuB,CAQzB;AAED,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,kBAAkB,GACzB,OAAO,CAAC,UAAU,CAAC,CAkBrB"}
1
+ {"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../ts/snapshot.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,kBAAkB,GAC1B,GAAG,GACH,UAAU,GACV,WAAW,GACX,IAAI,GACJ,QAAQ,GACR,cAAc,CAAC,UAAU,GAAG,WAAW,CAAC,CAAC;AAE7C,MAAM,MAAM,uBAAuB,GAC/B,MAAM,GACN,MAAM,GACN;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,GAClB;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvC,MAAM,WAAW,0BAA0B;IACzC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,sBAAsB,GAC9B;IACE,IAAI,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,0BAA0B,CAAC;CACrC,GACD;IACE,IAAI,EAAE,KAAK,GAAG,QAAQ,GAAG,SAAS,CAAC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,EAAE,CAAC;CACf,CAAC;AAEN,MAAM,WAAW,uBAAuB;IACtC,WAAW,CAAC,EAAE,uBAAuB,CAAC;IACtC,UAAU,CAAC,EAAE,sBAAsB,GAAG,IAAI,CAAC;CAC5C;AAED,MAAM,WAAW,uBAAuB;IACtC,WAAW,CAAC,EAAE,sBAAsB,GAAG,IAAI,CAAC;IAC5C,UAAU,CAAC,EAAE,sBAAsB,GAAG,IAAI,CAAC;CAC5C;AAED,MAAM,MAAM,sBAAsB,GAC9B,OAAO,GACP,aAAa,GACb,MAAM,GACN,UAAU,GACV,QAAQ,GACR,KAAK,CAAC;AAEV,MAAM,MAAM,uBAAuB,GAC/B,CAAC;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,uBAAuB,CAAC,GAChD,CAAC;IAAE,MAAM,EAAE,aAAa,CAAA;CAAE,GAAG,uBAAuB,CAAC,GACrD,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,uBAAuB,CAAC,GACjE,CAAC;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,uBAAuB,CAAC,GACrE,CAAC;IAAE,MAAM,EAAE,QAAQ,CAAA;CAAE,GAAG,uBAAuB,CAAC,GAChD,CAAC;IAAE,MAAM,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,uBAAuB,CAAC,CAAC;AAIrE,wBAAgB,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,GAAG,UAAU,CAKxE;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,CAIpE;AAED,wBAAgB,cAAc,CAC5B,KAAK,EAAE,UAAU,EACjB,QAAQ,SAA6B,GACpC,IAAI,CAEN;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,UAAU,EACjB,QAAQ,SAA6B,GACpC,QAAQ,CAIV;AAED,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,UAAU,GAChB,cAAc,CAAC,UAAU,CAAC,CAS5B;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,UAAU,EACjB,QAAQ,SAA6B,GACpC,GAAG,CAKL;AAED,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,kBAAkB,GACzB,OAAO,CAAC,UAAU,CAAC,CAsBrB"}
package/dist/snapshot.js CHANGED
@@ -1,79 +1,61 @@
1
1
  const DEFAULT_SNAPSHOT_MIME_TYPE = "application/octet-stream";
2
- const DEFAULT_SNAPSHOT_FILENAME = "lora-snapshot.bin";
3
- export function bytesToUint8Array(bytes) {
2
+ export function asUint8Array(bytes) {
4
3
  if (bytes instanceof Uint8Array) {
5
4
  return bytes;
6
5
  }
7
6
  return new Uint8Array(bytes);
8
7
  }
9
- export function snapshotBytesToBase64(bytes) {
10
- const buffer = globalThis.Buffer;
11
- if (buffer) {
12
- return buffer.from(bytes).toString("base64");
13
- }
14
- const chunkSize = 0x8000;
15
- let binary = "";
16
- for (let offset = 0; offset < bytes.byteLength; offset += chunkSize) {
17
- const chunk = bytes.subarray(offset, offset + chunkSize);
18
- binary += String.fromCharCode(...chunk);
19
- }
20
- return btoa(binary);
21
- }
22
- export function snapshotBytesToBlob(bytes, mimeType = DEFAULT_SNAPSHOT_MIME_TYPE) {
8
+ export function snapshotAsArrayBuffer(bytes) {
23
9
  const copy = new Uint8Array(bytes.byteLength);
24
10
  copy.set(bytes);
25
- return new Blob([copy.buffer], { type: mimeType });
11
+ return copy.buffer;
26
12
  }
27
- export function downloadSnapshotBytes(bytes, filename = DEFAULT_SNAPSHOT_FILENAME, mimeType = DEFAULT_SNAPSHOT_MIME_TYPE) {
28
- const doc = globalThis.document;
29
- const urlApi = globalThis.URL;
30
- if (!doc || !urlApi?.createObjectURL) {
31
- throw new Error("LORA_ERROR: snapshot download requires a browser document");
32
- }
33
- const url = urlApi.createObjectURL(snapshotBytesToBlob(bytes, mimeType));
34
- const anchor = doc.createElement("a");
35
- anchor.href = url;
36
- anchor.download = filename;
37
- if (anchor.style) {
38
- anchor.style.display = "none";
39
- }
40
- doc.body?.appendChild(anchor);
41
- try {
42
- anchor.click();
43
- }
44
- finally {
45
- anchor.remove?.();
46
- setTimeout(() => urlApi.revokeObjectURL(url), 0);
47
- }
13
+ export function snapshotAsBlob(bytes, mimeType = DEFAULT_SNAPSHOT_MIME_TYPE) {
14
+ return new Blob([snapshotAsArrayBuffer(bytes)], { type: mimeType });
48
15
  }
49
- export function resolveSnapshotSaveFormat(target) {
50
- if (target === undefined) {
51
- return { format: "binary" };
52
- }
53
- if (typeof target === "string") {
54
- return { format: target };
16
+ export function snapshotAsResponse(bytes, mimeType = DEFAULT_SNAPSHOT_MIME_TYPE) {
17
+ return new Response(snapshotAsArrayBuffer(bytes), {
18
+ headers: { "content-type": mimeType },
19
+ });
20
+ }
21
+ export function snapshotAsReadableStream(bytes) {
22
+ const copy = new Uint8Array(bytes.byteLength);
23
+ copy.set(bytes);
24
+ return new ReadableStream({
25
+ start(controller) {
26
+ controller.enqueue(copy);
27
+ controller.close();
28
+ },
29
+ });
30
+ }
31
+ export function snapshotAsObjectUrl(bytes, mimeType = DEFAULT_SNAPSHOT_MIME_TYPE) {
32
+ if (typeof URL === "undefined" || typeof URL.createObjectURL !== "function") {
33
+ throw new Error("LORA_ERROR: snapshot URL output requires URL.createObjectURL");
55
34
  }
56
- return target;
35
+ return new URL(URL.createObjectURL(snapshotAsBlob(bytes, mimeType)));
57
36
  }
58
- export async function snapshotSourceToBytes(source) {
37
+ export async function readSnapshotSource(source) {
59
38
  if (source instanceof Uint8Array || source instanceof ArrayBuffer) {
60
- return bytesToUint8Array(source);
39
+ return asUint8Array(source);
61
40
  }
62
41
  if (typeof Blob !== "undefined" && source instanceof Blob) {
63
42
  return new Uint8Array(await source.arrayBuffer());
64
43
  }
65
44
  if (typeof Response !== "undefined" && source instanceof Response) {
66
- return responseToBytes(source);
45
+ return readSnapshotResponse(source);
46
+ }
47
+ if (source instanceof URL) {
48
+ return readSnapshotResponse(await fetch(source));
67
49
  }
68
50
  if (isReadableStream(source)) {
69
- return readableStreamToBytes(source);
51
+ return readSnapshotStream(source);
70
52
  }
71
- return responseToBytes(await fetch(source));
53
+ throw new Error("LORA_ERROR: unsupported snapshot source");
72
54
  }
73
55
  function isReadableStream(source) {
74
56
  return typeof source.getReader === "function";
75
57
  }
76
- async function readableStreamToBytes(stream) {
58
+ async function readSnapshotStream(stream) {
77
59
  const reader = stream.getReader();
78
60
  const chunks = [];
79
61
  let total = 0;
@@ -89,7 +71,7 @@ async function readableStreamToBytes(stream) {
89
71
  }
90
72
  return merged;
91
73
  }
92
- const chunk = bytesToUint8Array(value);
74
+ const chunk = asUint8Array(value);
93
75
  chunks.push(chunk);
94
76
  total += chunk.byteLength;
95
77
  }
@@ -98,7 +80,7 @@ async function readableStreamToBytes(stream) {
98
80
  reader.releaseLock();
99
81
  }
100
82
  }
101
- async function responseToBytes(response) {
83
+ async function readSnapshotResponse(response) {
102
84
  if (!response.ok) {
103
85
  throw new Error(`LORA_ERROR: snapshot fetch failed (${response.status} ${response.statusText})`);
104
86
  }
@@ -1 +1 @@
1
- {"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../ts/snapshot.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../ts/snapshot.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -19,7 +19,7 @@
19
19
  */
20
20
  export type LoraParam = null | boolean | number | string | LoraParam[] | {
21
21
  [key: string]: LoraParam;
22
- } | LoraDate | LoraTime | LoraLocalTime | LoraDateTime | LoraLocalDateTime | LoraDuration | LoraPoint | LoraVector;
22
+ } | LoraDate | LoraTime | LoraLocalTime | LoraDateTime | LoraLocalDateTime | LoraDuration | LoraPoint | LoraVector | LoraBinary;
23
23
  export type LoraParams = Record<string, LoraParam>;
24
24
  export interface LoraNode {
25
25
  kind: "node";
@@ -165,9 +165,18 @@ export interface LoraVector {
165
165
  coordinateType: LoraVectorCoordinateType;
166
166
  values: number[];
167
167
  }
168
+ /**
169
+ * Segmented binary/blob value. Each segment is a byte array; concatenate
170
+ * segments in order to reconstruct the logical binary value.
171
+ */
172
+ export interface LoraBinary {
173
+ kind: "binary";
174
+ length: number;
175
+ segments: number[][];
176
+ }
168
177
  export type LoraValue = null | boolean | number | string | LoraValue[] | {
169
178
  [key: string]: LoraValue;
170
- } | LoraNode | LoraRelationship | LoraPath | LoraDate | LoraTime | LoraLocalTime | LoraDateTime | LoraLocalDateTime | LoraDuration | LoraPoint | LoraVector;
179
+ } | LoraNode | LoraRelationship | LoraPath | LoraDate | LoraTime | LoraLocalTime | LoraDateTime | LoraLocalDateTime | LoraDuration | LoraPoint | LoraVector | LoraBinary;
171
180
  export type QueryRow<T extends Record<string, LoraValue> = Record<string, LoraValue>> = T;
172
181
  export interface QueryResult<T extends Record<string, LoraValue> = Record<string, LoraValue>> {
173
182
  columns: string[];
@@ -178,6 +187,7 @@ export declare function isRelationship(v: LoraValue): v is LoraRelationship;
178
187
  export declare function isPath(v: LoraValue): v is LoraPath;
179
188
  export declare function isPoint(v: LoraValue): v is LoraPoint;
180
189
  export declare function isVector(v: LoraValue): v is LoraVector;
190
+ export declare function isBinary(v: LoraValue): v is LoraBinary;
181
191
  export declare function isTemporal(v: LoraValue): v is LoraTemporal;
182
192
  export declare const date: (iso: string) => LoraDate;
183
193
  export declare const time: (iso: string) => LoraTime;
@@ -191,6 +201,7 @@ export declare const duration: (iso: string) => LoraDuration;
191
201
  * back into the next query) work without any conversion.
192
202
  */
193
203
  export declare const vector: (values: number[], dimension: number, coordinateType: LoraVectorCoordinateType) => LoraVector;
204
+ export declare const binary: (segments: number[][]) => LoraBinary;
194
205
  export declare const cartesian: (x: number, y: number) => LoraCartesianPoint;
195
206
  export declare const cartesian3d: (x: number, y: number, z: number) => LoraCartesianPoint3D;
196
207
  export declare const wgs84: (longitude: number, latitude: number) => LoraWgs84Point;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../ts/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../ts/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js CHANGED
@@ -29,6 +29,9 @@ export function isPoint(v) {
29
29
  export function isVector(v) {
30
30
  return typeof v === "object" && v !== null && !Array.isArray(v) && v.kind === "vector";
31
31
  }
32
+ export function isBinary(v) {
33
+ return typeof v === "object" && v !== null && !Array.isArray(v) && v.kind === "binary";
34
+ }
32
35
  export function isTemporal(v) {
33
36
  if (typeof v !== "object" || v === null || Array.isArray(v))
34
37
  return false;
@@ -55,6 +58,11 @@ export const duration = (iso) => ({ kind: "duration", iso });
55
58
  * back into the next query) work without any conversion.
56
59
  */
57
60
  export const vector = (values, dimension, coordinateType) => ({ kind: "vector", dimension, coordinateType, values });
61
+ export const binary = (segments) => ({
62
+ kind: "binary",
63
+ length: segments.reduce((sum, segment) => sum + segment.length, 0),
64
+ segments,
65
+ });
58
66
  export const cartesian = (x, y) => ({
59
67
  kind: "point",
60
68
  srid: 7203,