@cereusdb/minimal 0.1.2 → 0.3.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.
@@ -27,11 +27,19 @@ export class CereusDB {
27
27
  * Requires the full GDAL-enabled build.
28
28
  */
29
29
  register_geotiff_buffer(table_name: string, data: Uint8Array): void;
30
+ /**
31
+ * Register browser-backed object stores for ranged/listing reads.
32
+ */
33
+ register_object_stores(config: any): void;
30
34
  /**
31
35
  * Register a Uint8Array containing Parquet data as a named table.
32
36
  * Use for files obtained via the browser File API.
33
37
  */
34
38
  register_parquet_buffer(table_name: string, data: Uint8Array): Promise<void>;
39
+ /**
40
+ * Register a remote Parquet object or prefix as a DataFusion listing table.
41
+ */
42
+ register_parquet_table(table_name: string, table_url: string, options: any): Promise<void>;
35
43
  /**
36
44
  * Register a raster buffer as a single-column raster table.
37
45
  * Requires the full GDAL-enabled build.
@@ -60,6 +68,9 @@ export class CereusDB {
60
68
  tables(): any;
61
69
  /**
62
70
  * Get version information.
71
+ *
72
+ * Release builds set `CEREUSDB_VERSION` to the full npm version, including
73
+ * prerelease suffixes; other builds fall back to the crate version.
63
74
  */
64
75
  version(): string;
65
76
  }
@@ -81,7 +92,9 @@ export interface InitOutput {
81
92
  readonly cereusdb_drop_table: (a: number, b: number, c: number) => [number, number];
82
93
  readonly cereusdb_register_geojson: (a: number, b: number, c: number, d: number, e: number) => [number, number];
83
94
  readonly cereusdb_register_geotiff_buffer: (a: number, b: number, c: number, d: number, e: number) => [number, number];
95
+ readonly cereusdb_register_object_stores: (a: number, b: any) => [number, number];
84
96
  readonly cereusdb_register_parquet_buffer: (a: number, b: number, c: number, d: number, e: number) => any;
97
+ readonly cereusdb_register_parquet_table: (a: number, b: number, c: number, d: number, e: number, f: any) => any;
85
98
  readonly cereusdb_register_raster_buffer: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
86
99
  readonly cereusdb_register_remote_parquet: (a: number, b: number, c: number, d: number, e: number) => any;
87
100
  readonly cereusdb_sql: (a: number, b: number, c: number) => any;
@@ -96,8 +109,16 @@ export interface InitOutput {
96
109
  readonly abort: () => void;
97
110
  readonly emscripten_builtin_free: (a: number) => void;
98
111
  readonly emscripten_builtin_malloc: (a: number) => number;
112
+ readonly rust_zstd_wasm_shim_calloc: (a: number, b: number) => number;
113
+ readonly rust_zstd_wasm_shim_free: (a: number) => void;
114
+ readonly rust_zstd_wasm_shim_malloc: (a: number) => number;
115
+ readonly rust_zstd_wasm_shim_memcmp: (a: number, b: number, c: number) => number;
116
+ readonly rust_zstd_wasm_shim_memcpy: (a: number, b: number, c: number) => number;
117
+ readonly rust_zstd_wasm_shim_memmove: (a: number, b: number, c: number) => number;
118
+ readonly rust_zstd_wasm_shim_memset: (a: number, b: number, c: number) => number;
119
+ readonly rust_zstd_wasm_shim_qsort: (a: number, b: number, c: number, d: number) => void;
99
120
  readonly __cpp_exception: WebAssembly.Tag;
100
- readonly wasm_bindgen__closure__destroy__hcd35ec5c66a281ba: (a: number, b: number) => void;
121
+ readonly wasm_bindgen__closure__destroy__h8db467765ce434ac: (a: number, b: number) => void;
101
122
  readonly wasm_bindgen__convert__closures_____invoke__h7573a8a64f443504: (a: number, b: number, c: any) => [number, number];
102
123
  readonly wasm_bindgen__convert__closures_____invoke__h3bcc27440de746c0: (a: number, b: number, c: any, d: any) => void;
103
124
  readonly __wbindgen_malloc: (a: number, b: number) => number;
@@ -1,4 +1,4 @@
1
- import { createEnvImports, createWasiImports, setMemory } from "./env_shim.js?v=ehfix-20260406-1";
1
+ import { createEnvImports, createWasiImports, setMemory } from "./env_shim.js?v=emsdk6-20261001-2";
2
2
  const __env = createEnvImports();
3
3
  const __wasi = createWasiImports();
4
4
  /* @ts-self-types="./cereusdb.d.ts" */
@@ -110,6 +110,22 @@ export class CereusDB {
110
110
  throw takeFromExternrefTable0(ret[0]);
111
111
  }
112
112
  }
113
+ /**
114
+ * Register browser-backed object stores for ranged/listing reads.
115
+ * @param {any} config
116
+ */
117
+ register_object_stores(config) {
118
+ let ret;
119
+ __wbg_termination_guard();
120
+ try {
121
+ ret = wasm.cereusdb_register_object_stores(this.__wbg_ptr, config);;
122
+ } catch(e) {
123
+ __wbg_handle_catch(e);
124
+ }
125
+ if (ret[1]) {
126
+ throw takeFromExternrefTable0(ret[0]);
127
+ }
128
+ }
113
129
  /**
114
130
  * Register a Uint8Array containing Parquet data as a named table.
115
131
  * Use for files obtained via the browser File API.
@@ -131,6 +147,27 @@ export class CereusDB {
131
147
  }
132
148
  return ret;
133
149
  }
150
+ /**
151
+ * Register a remote Parquet object or prefix as a DataFusion listing table.
152
+ * @param {string} table_name
153
+ * @param {string} table_url
154
+ * @param {any} options
155
+ * @returns {Promise<void>}
156
+ */
157
+ register_parquet_table(table_name, table_url, options) {
158
+ const ptr0 = passStringToWasm0(table_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
159
+ const len0 = WASM_VECTOR_LEN;
160
+ const ptr1 = passStringToWasm0(table_url, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
161
+ const len1 = WASM_VECTOR_LEN;
162
+ let ret;
163
+ __wbg_termination_guard();
164
+ try {
165
+ ret = wasm.cereusdb_register_parquet_table(this.__wbg_ptr, ptr0, len0, ptr1, len1, options);;
166
+ } catch(e) {
167
+ __wbg_handle_catch(e);
168
+ }
169
+ return ret;
170
+ }
134
171
  /**
135
172
  * Register a raster buffer as a single-column raster table.
136
173
  * Requires the full GDAL-enabled build.
@@ -234,6 +271,9 @@ export class CereusDB {
234
271
  }
235
272
  /**
236
273
  * Get version information.
274
+ *
275
+ * Release builds set `CEREUSDB_VERSION` to the full npm version, including
276
+ * prerelease suffixes; other builds fall back to the crate version.
237
277
  * @returns {string}
238
278
  */
239
279
  version() {
@@ -265,9 +305,9 @@ const import1 = __env;
265
305
  const import2 = __env;
266
306
  const import3 = __env;
267
307
  const import4 = __env;
268
- const import5 = __wasi;
308
+ const import5 = __env;
269
309
  const import6 = __wasi;
270
- const import7 = __env;
310
+ const import7 = __wasi;
271
311
  const import8 = __env;
272
312
  const import9 = __wasi;
273
313
 
@@ -491,8 +531,8 @@ function __wbg_get_imports() {
491
531
  return ret;
492
532
  },
493
533
  __wbindgen_cast_0000000000000001: function(arg0, arg1) {
494
- // Cast intrinsic for `Closure(Closure { dtor_idx: 4230, function: Function { arguments: [Externref], shim_idx: 19295, ret: Result(Unit), inner_ret: Some(Result(Unit)) }, mutable: true }) -> Externref`.
495
- const ret = makeMutClosure(arg0, arg1, wasm.wasm_bindgen__closure__destroy__hcd35ec5c66a281ba, wasm_bindgen__convert__closures_____invoke__h7573a8a64f443504);
534
+ // Cast intrinsic for `Closure(Closure { dtor_idx: 4534, function: Function { arguments: [Externref], shim_idx: 20198, ret: Result(Unit), inner_ret: Some(Result(Unit)) }, mutable: true }) -> Externref`.
535
+ const ret = makeMutClosure(arg0, arg1, wasm.wasm_bindgen__closure__destroy__h8db467765ce434ac, wasm_bindgen__convert__closures_____invoke__h7573a8a64f443504);
496
536
  return ret;
497
537
  },
498
538
  __wbindgen_cast_0000000000000002: function(arg0, arg1) {
@@ -519,9 +559,9 @@ function __wbg_get_imports() {
519
559
  "env": import2,
520
560
  "env": import3,
521
561
  "env": import4,
522
- "wasi_snapshot_preview1": import5,
562
+ "env": import5,
523
563
  "wasi_snapshot_preview1": import6,
524
- "env": import7,
564
+ "wasi_snapshot_preview1": import7,
525
565
  "env": import8,
526
566
  "wasi_snapshot_preview1": import9,
527
567
  };
Binary file
@@ -14,7 +14,9 @@ export const cereusdb_create: () => [number, number, number];
14
14
  export const cereusdb_drop_table: (a: number, b: number, c: number) => [number, number];
15
15
  export const cereusdb_register_geojson: (a: number, b: number, c: number, d: number, e: number) => [number, number];
16
16
  export const cereusdb_register_geotiff_buffer: (a: number, b: number, c: number, d: number, e: number) => [number, number];
17
+ export const cereusdb_register_object_stores: (a: number, b: any) => [number, number];
17
18
  export const cereusdb_register_parquet_buffer: (a: number, b: number, c: number, d: number, e: number) => any;
19
+ export const cereusdb_register_parquet_table: (a: number, b: number, c: number, d: number, e: number, f: any) => any;
18
20
  export const cereusdb_register_raster_buffer: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
19
21
  export const cereusdb_register_remote_parquet: (a: number, b: number, c: number, d: number, e: number) => any;
20
22
  export const cereusdb_sql: (a: number, b: number, c: number) => any;
@@ -29,8 +31,16 @@ export const realloc: (a: number, b: number) => number;
29
31
  export const abort: () => void;
30
32
  export const emscripten_builtin_free: (a: number) => void;
31
33
  export const emscripten_builtin_malloc: (a: number) => number;
34
+ export const rust_zstd_wasm_shim_calloc: (a: number, b: number) => number;
35
+ export const rust_zstd_wasm_shim_free: (a: number) => void;
36
+ export const rust_zstd_wasm_shim_malloc: (a: number) => number;
37
+ export const rust_zstd_wasm_shim_memcmp: (a: number, b: number, c: number) => number;
38
+ export const rust_zstd_wasm_shim_memcpy: (a: number, b: number, c: number) => number;
39
+ export const rust_zstd_wasm_shim_memmove: (a: number, b: number, c: number) => number;
40
+ export const rust_zstd_wasm_shim_memset: (a: number, b: number, c: number) => number;
41
+ export const rust_zstd_wasm_shim_qsort: (a: number, b: number, c: number, d: number) => void;
32
42
  export const __cpp_exception: WebAssembly.Tag;
33
- export const wasm_bindgen__closure__destroy__hcd35ec5c66a281ba: (a: number, b: number) => void;
43
+ export const wasm_bindgen__closure__destroy__h8db467765ce434ac: (a: number, b: number) => void;
34
44
  export const wasm_bindgen__convert__closures_____invoke__h7573a8a64f443504: (a: number, b: number, c: any) => [number, number];
35
45
  export const wasm_bindgen__convert__closures_____invoke__h3bcc27440de746c0: (a: number, b: number, c: any, d: any) => void;
36
46
  export const __wbindgen_malloc: (a: number, b: number) => number;
@@ -26,6 +26,48 @@ function writeU64(ptr, value) {
26
26
  }
27
27
  }
28
28
 
29
+ const _textDecoder = new TextDecoder();
30
+ const _pendingOutput = new Map();
31
+
32
+ // Gathers a WASI iovec array. Writers such as musl's fwrite retry until every
33
+ // byte is reported as written, so the full length must always be returned.
34
+ function readIovs(iovs, iovcnt) {
35
+ const view = getDataView();
36
+ if (!view) {
37
+ return { bytes: new Uint8Array(0), length: 0 };
38
+ }
39
+ let length = 0;
40
+ for (let i = 0; i < iovcnt; i++) {
41
+ length += view.getUint32(iovs + i * 8 + 4, true);
42
+ }
43
+ const bytes = new Uint8Array(length);
44
+ let offset = 0;
45
+ for (let i = 0; i < iovcnt; i++) {
46
+ const ptr = view.getUint32(iovs + i * 8, true);
47
+ const len = view.getUint32(iovs + i * 8 + 4, true);
48
+ bytes.set(new Uint8Array(_memory.buffer, ptr, len), offset);
49
+ offset += len;
50
+ }
51
+ return { bytes, length };
52
+ }
53
+
54
+ // Forwards stdout/stderr from the C/C++ libraries (GDAL, PROJ, ...) to the
55
+ // console, one line at a time.
56
+ function forwardOutput(fd, bytes) {
57
+ if (fd !== 1 && fd !== 2) {
58
+ return;
59
+ }
60
+ const text = (_pendingOutput.get(fd) ?? "") + _textDecoder.decode(bytes);
61
+ const lines = text.split("\n");
62
+ _pendingOutput.set(fd, lines.pop());
63
+ const log = fd === 2 ? console.warn : console.log;
64
+ for (const line of lines) {
65
+ if (line.trim()) {
66
+ log(`[cereusdb] ${line}`);
67
+ }
68
+ }
69
+ }
70
+
29
71
  function createCppException(ptr, type, destructor, message = "C++ exception") {
30
72
  const error = new WebAssembly.RuntimeError(message);
31
73
  error.__cxa_exception_ptr = ptr >>> 0;
@@ -60,7 +102,10 @@ export function createEnvImports() {
60
102
 
61
103
  // Minimal C++ EH shims. These are enough to satisfy instantiation and
62
104
  // propagate exceptions back to JS on paths that actually throw.
105
+ // LLVM in Emscripten < 6 calls _Unwind_CallPersonality; newer versions
106
+ // import the personality routine directly.
63
107
  _Unwind_CallPersonality: () => 0,
108
+ __gxx_wasm_personality_v0: () => 0,
64
109
  __cxa_begin_catch: (ptr) => {
65
110
  const value = ptr >>> 0;
66
111
  _caughtCxaExceptions.push(value);
@@ -109,6 +154,7 @@ export function createEnvImports() {
109
154
  __syscall_prlimit64: () => UNSUPPORTED_ERRNO,
110
155
  __syscall_dup3: () => UNSUPPORTED_ERRNO,
111
156
  __syscall_pipe: () => UNSUPPORTED_ERRNO,
157
+ __syscall_pipe2: () => UNSUPPORTED_ERRNO,
112
158
  __syscall_wait4: () => UNSUPPORTED_ERRNO,
113
159
  __syscall_getuid32: () => 0,
114
160
  __syscall_geteuid32: () => 0,
@@ -143,16 +189,18 @@ export function createEnvImports() {
143
189
  export function createWasiImports() {
144
190
  return {
145
191
  fd_close: () => 0,
146
- fd_write: (_fd, _iovs, _iovcnt, pnum) => {
147
- writeU32(pnum, 0);
192
+ fd_write: (fd, iovs, iovcnt, pnum) => {
193
+ const { bytes, length } = readIovs(iovs, iovcnt);
194
+ forwardOutput(fd, bytes);
195
+ writeU32(pnum, length);
148
196
  return 0;
149
197
  },
150
198
  fd_read: (_fd, _iovs, _iovcnt, pnum) => {
151
199
  writeU32(pnum, 0);
152
200
  return 0;
153
201
  },
154
- fd_pwrite: (_fd, _iovs, _iovcnt, _offset, pnum) => {
155
- writeU32(pnum, 0);
202
+ fd_pwrite: (_fd, iovs, iovcnt, _offset, pnum) => {
203
+ writeU32(pnum, readIovs(iovs, iovcnt).length);
156
204
  return 0;
157
205
  },
158
206
  fd_pread: (_fd, _iovs, _iovcnt, _offset, pnum) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cereusdb/minimal",
3
- "version": "0.1.2",
3
+ "version": "0.3.0",
4
4
  "description": "Minimal CereusDB browser package with GEOS-backed spatial SQL",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -11,6 +11,10 @@
11
11
  "types": "./dist/index.d.ts",
12
12
  "import": "./dist/index.js"
13
13
  },
14
+ "./external": {
15
+ "types": "./dist/external.d.ts",
16
+ "import": "./dist/external.js"
17
+ },
14
18
  "./wasm": "./dist/wasm/cereusdb_bg.wasm",
15
19
  "./wasm/*": "./dist/wasm/*"
16
20
  },