geolibre-wasm 0.6.0 → 0.7.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.
package/geolibre-cli.wasm CHANGED
Binary file
@@ -262,6 +262,58 @@ export class GeoTiffReader {
262
262
  readonly width: number;
263
263
  }
264
264
 
265
+ export class PmtilesExtractor {
266
+ free(): void;
267
+ [Symbol.dispose](): void;
268
+ /**
269
+ * Hand back the bytes of one `wanted_json()` range, identified by its
270
+ * offset. Ranges may be fed in any order.
271
+ */
272
+ feed(offset: number, bytes: Uint8Array): void;
273
+ /**
274
+ * Assemble the extracted archive. Consumes the extractor's buffers; the
275
+ * returned `Uint8Array` is a complete `.pmtiles` file.
276
+ */
277
+ finish(): Uint8Array;
278
+ /**
279
+ * Source archive header as JSON (`{}` until the first feed): zooms,
280
+ * bounds, tile type/compression, tile counts. Lets a UI validate the
281
+ * request and describe the source before committing to the download.
282
+ */
283
+ header_json(): string;
284
+ /**
285
+ * Plan an extraction of `min_zoom..=max_zoom` tiles intersecting the
286
+ * WGS84 bbox. Zooms are clamped to what the source archive contains once
287
+ * its header arrives; `min_zoom` 0 keeps the basemap usable zoomed out.
288
+ */
289
+ constructor(min_lon: number, min_lat: number, max_lon: number, max_lat: number, min_zoom: number, max_zoom: number);
290
+ /**
291
+ * Progress as JSON: `{"phase":"header|directories|data|done",
292
+ * "tiles_selected":n,"blobs_total":n,"data_bytes_total":n,
293
+ * "data_bytes_received":n,"estimated_output_bytes":n}`.
294
+ */
295
+ progress_json(): string;
296
+ /**
297
+ * Coalesce tile-data requests whose byte gap is at most this (default
298
+ * 65,536). Larger values trade overfetch for fewer HTTP round-trips.
299
+ */
300
+ set_max_range_gap(max_gap: number): void;
301
+ /**
302
+ * Cap on addressed tiles (default 2,000,000). Raise for huge desktop
303
+ * extracts; lower to fail fast in memory-constrained embeds.
304
+ */
305
+ set_max_tiles(max_tiles: number): void;
306
+ /**
307
+ * Outstanding byte ranges the host should fetch, as a JSON array of
308
+ * `{"offset":n,"length":n}`. Empty array when nothing is outstanding.
309
+ */
310
+ wanted_json(): string;
311
+ /**
312
+ * True once every needed range has been fed; `finish()` is then valid.
313
+ */
314
+ readonly done: boolean;
315
+ }
316
+
265
317
  /**
266
318
  * Install a panic hook so Rust panics surface as readable `console.error`
267
319
  * messages instead of an opaque `RuntimeError: unreachable`.
@@ -392,6 +444,7 @@ export interface InitOutput {
392
444
  readonly __wbg_cogbuilder_free: (a: number, b: number) => void;
393
445
  readonly __wbg_cogstream_free: (a: number, b: number) => void;
394
446
  readonly __wbg_geotiffreader_free: (a: number, b: number) => void;
447
+ readonly __wbg_pmtilesextractor_free: (a: number, b: number) => void;
395
448
  readonly cogbuilder_new: (a: number, b: number, c: number) => number;
396
449
  readonly cogbuilder_set_bigtiff: (a: number, b: number) => void;
397
450
  readonly cogbuilder_set_compression: (a: number, b: number, c: number, d: number) => void;
@@ -459,6 +512,15 @@ export interface InitOutput {
459
512
  readonly lidar_read_intensity: (a: number, b: number, c: number, d: number, e: number) => void;
460
513
  readonly lidar_read_xyz: (a: number, b: number, c: number, d: number, e: number) => void;
461
514
  readonly morans_i: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
515
+ readonly pmtilesextractor_done: (a: number) => number;
516
+ readonly pmtilesextractor_feed: (a: number, b: number, c: number, d: number, e: number) => void;
517
+ readonly pmtilesextractor_finish: (a: number, b: number) => void;
518
+ readonly pmtilesextractor_header_json: (a: number, b: number) => void;
519
+ readonly pmtilesextractor_new: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => void;
520
+ readonly pmtilesextractor_progress_json: (a: number, b: number) => void;
521
+ readonly pmtilesextractor_set_max_range_gap: (a: number, b: number, c: number) => void;
522
+ readonly pmtilesextractor_set_max_tiles: (a: number, b: number, c: number) => void;
523
+ readonly pmtilesextractor_wanted_json: (a: number, b: number) => void;
462
524
  readonly transform_bbox_epsg: (a: number, b: number, c: number, d: number, e: number) => void;
463
525
  readonly transform_points_epsg: (a: number, b: number, c: number, d: number, e: number) => void;
464
526
  readonly vector_formats: (a: number) => void;
package/geolibre_wasm.js CHANGED
@@ -1071,6 +1071,225 @@ export class GeoTiffReader {
1071
1071
  }
1072
1072
  if (Symbol.dispose) GeoTiffReader.prototype[Symbol.dispose] = GeoTiffReader.prototype.free;
1073
1073
 
1074
+ export class PmtilesExtractor {
1075
+ __destroy_into_raw() {
1076
+ const ptr = this.__wbg_ptr;
1077
+ this.__wbg_ptr = 0;
1078
+ PmtilesExtractorFinalization.unregister(this);
1079
+ return ptr;
1080
+ }
1081
+ free() {
1082
+ const ptr = this.__destroy_into_raw();
1083
+ wasm.__wbg_pmtilesextractor_free(ptr, 0);
1084
+ }
1085
+ /**
1086
+ * True once every needed range has been fed; `finish()` is then valid.
1087
+ * @returns {boolean}
1088
+ */
1089
+ get done() {
1090
+ const ret = wasm.pmtilesextractor_done(this.__wbg_ptr);
1091
+ return ret !== 0;
1092
+ }
1093
+ /**
1094
+ * Hand back the bytes of one `wanted_json()` range, identified by its
1095
+ * offset. Ranges may be fed in any order.
1096
+ * @param {number} offset
1097
+ * @param {Uint8Array} bytes
1098
+ */
1099
+ feed(offset, bytes) {
1100
+ try {
1101
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
1102
+ const ptr0 = passArray8ToWasm0(bytes, wasm.__wbindgen_export2);
1103
+ const len0 = WASM_VECTOR_LEN;
1104
+ wasm.pmtilesextractor_feed(retptr, this.__wbg_ptr, offset, ptr0, len0);
1105
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
1106
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
1107
+ if (r1) {
1108
+ throw takeObject(r0);
1109
+ }
1110
+ } finally {
1111
+ wasm.__wbindgen_add_to_stack_pointer(16);
1112
+ }
1113
+ }
1114
+ /**
1115
+ * Assemble the extracted archive. Consumes the extractor's buffers; the
1116
+ * returned `Uint8Array` is a complete `.pmtiles` file.
1117
+ * @returns {Uint8Array}
1118
+ */
1119
+ finish() {
1120
+ try {
1121
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
1122
+ wasm.pmtilesextractor_finish(retptr, this.__wbg_ptr);
1123
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
1124
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
1125
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
1126
+ var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);
1127
+ if (r3) {
1128
+ throw takeObject(r2);
1129
+ }
1130
+ var v1 = getArrayU8FromWasm0(r0, r1).slice();
1131
+ wasm.__wbindgen_export(r0, r1 * 1, 1);
1132
+ return v1;
1133
+ } finally {
1134
+ wasm.__wbindgen_add_to_stack_pointer(16);
1135
+ }
1136
+ }
1137
+ /**
1138
+ * Source archive header as JSON (`{}` until the first feed): zooms,
1139
+ * bounds, tile type/compression, tile counts. Lets a UI validate the
1140
+ * request and describe the source before committing to the download.
1141
+ * @returns {string}
1142
+ */
1143
+ header_json() {
1144
+ let deferred2_0;
1145
+ let deferred2_1;
1146
+ try {
1147
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
1148
+ wasm.pmtilesextractor_header_json(retptr, this.__wbg_ptr);
1149
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
1150
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
1151
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
1152
+ var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);
1153
+ var ptr1 = r0;
1154
+ var len1 = r1;
1155
+ if (r3) {
1156
+ ptr1 = 0; len1 = 0;
1157
+ throw takeObject(r2);
1158
+ }
1159
+ deferred2_0 = ptr1;
1160
+ deferred2_1 = len1;
1161
+ return getStringFromWasm0(ptr1, len1);
1162
+ } finally {
1163
+ wasm.__wbindgen_add_to_stack_pointer(16);
1164
+ wasm.__wbindgen_export(deferred2_0, deferred2_1, 1);
1165
+ }
1166
+ }
1167
+ /**
1168
+ * Plan an extraction of `min_zoom..=max_zoom` tiles intersecting the
1169
+ * WGS84 bbox. Zooms are clamped to what the source archive contains once
1170
+ * its header arrives; `min_zoom` 0 keeps the basemap usable zoomed out.
1171
+ * @param {number} min_lon
1172
+ * @param {number} min_lat
1173
+ * @param {number} max_lon
1174
+ * @param {number} max_lat
1175
+ * @param {number} min_zoom
1176
+ * @param {number} max_zoom
1177
+ */
1178
+ constructor(min_lon, min_lat, max_lon, max_lat, min_zoom, max_zoom) {
1179
+ try {
1180
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
1181
+ wasm.pmtilesextractor_new(retptr, min_lon, min_lat, max_lon, max_lat, min_zoom, max_zoom);
1182
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
1183
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
1184
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
1185
+ if (r2) {
1186
+ throw takeObject(r1);
1187
+ }
1188
+ this.__wbg_ptr = r0;
1189
+ PmtilesExtractorFinalization.register(this, this.__wbg_ptr, this);
1190
+ return this;
1191
+ } finally {
1192
+ wasm.__wbindgen_add_to_stack_pointer(16);
1193
+ }
1194
+ }
1195
+ /**
1196
+ * Progress as JSON: `{"phase":"header|directories|data|done",
1197
+ * "tiles_selected":n,"blobs_total":n,"data_bytes_total":n,
1198
+ * "data_bytes_received":n,"estimated_output_bytes":n}`.
1199
+ * @returns {string}
1200
+ */
1201
+ progress_json() {
1202
+ let deferred2_0;
1203
+ let deferred2_1;
1204
+ try {
1205
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
1206
+ wasm.pmtilesextractor_progress_json(retptr, this.__wbg_ptr);
1207
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
1208
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
1209
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
1210
+ var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);
1211
+ var ptr1 = r0;
1212
+ var len1 = r1;
1213
+ if (r3) {
1214
+ ptr1 = 0; len1 = 0;
1215
+ throw takeObject(r2);
1216
+ }
1217
+ deferred2_0 = ptr1;
1218
+ deferred2_1 = len1;
1219
+ return getStringFromWasm0(ptr1, len1);
1220
+ } finally {
1221
+ wasm.__wbindgen_add_to_stack_pointer(16);
1222
+ wasm.__wbindgen_export(deferred2_0, deferred2_1, 1);
1223
+ }
1224
+ }
1225
+ /**
1226
+ * Coalesce tile-data requests whose byte gap is at most this (default
1227
+ * 65,536). Larger values trade overfetch for fewer HTTP round-trips.
1228
+ * @param {number} max_gap
1229
+ */
1230
+ set_max_range_gap(max_gap) {
1231
+ try {
1232
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
1233
+ wasm.pmtilesextractor_set_max_range_gap(retptr, this.__wbg_ptr, max_gap);
1234
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
1235
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
1236
+ if (r1) {
1237
+ throw takeObject(r0);
1238
+ }
1239
+ } finally {
1240
+ wasm.__wbindgen_add_to_stack_pointer(16);
1241
+ }
1242
+ }
1243
+ /**
1244
+ * Cap on addressed tiles (default 2,000,000). Raise for huge desktop
1245
+ * extracts; lower to fail fast in memory-constrained embeds.
1246
+ * @param {number} max_tiles
1247
+ */
1248
+ set_max_tiles(max_tiles) {
1249
+ try {
1250
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
1251
+ wasm.pmtilesextractor_set_max_tiles(retptr, this.__wbg_ptr, max_tiles);
1252
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
1253
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
1254
+ if (r1) {
1255
+ throw takeObject(r0);
1256
+ }
1257
+ } finally {
1258
+ wasm.__wbindgen_add_to_stack_pointer(16);
1259
+ }
1260
+ }
1261
+ /**
1262
+ * Outstanding byte ranges the host should fetch, as a JSON array of
1263
+ * `{"offset":n,"length":n}`. Empty array when nothing is outstanding.
1264
+ * @returns {string}
1265
+ */
1266
+ wanted_json() {
1267
+ let deferred2_0;
1268
+ let deferred2_1;
1269
+ try {
1270
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
1271
+ wasm.pmtilesextractor_wanted_json(retptr, this.__wbg_ptr);
1272
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
1273
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
1274
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
1275
+ var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);
1276
+ var ptr1 = r0;
1277
+ var len1 = r1;
1278
+ if (r3) {
1279
+ ptr1 = 0; len1 = 0;
1280
+ throw takeObject(r2);
1281
+ }
1282
+ deferred2_0 = ptr1;
1283
+ deferred2_1 = len1;
1284
+ return getStringFromWasm0(ptr1, len1);
1285
+ } finally {
1286
+ wasm.__wbindgen_add_to_stack_pointer(16);
1287
+ wasm.__wbindgen_export(deferred2_0, deferred2_1, 1);
1288
+ }
1289
+ }
1290
+ }
1291
+ if (Symbol.dispose) PmtilesExtractor.prototype[Symbol.dispose] = PmtilesExtractor.prototype.free;
1292
+
1074
1293
  /**
1075
1294
  * Install a panic hook so Rust panics surface as readable `console.error`
1076
1295
  * messages instead of an opaque `RuntimeError: unreachable`.
@@ -1646,6 +1865,9 @@ const CogStreamFinalization = (typeof FinalizationRegistry === 'undefined')
1646
1865
  const GeoTiffReaderFinalization = (typeof FinalizationRegistry === 'undefined')
1647
1866
  ? { register: () => {}, unregister: () => {} }
1648
1867
  : new FinalizationRegistry(ptr => wasm.__wbg_geotiffreader_free(ptr, 1));
1868
+ const PmtilesExtractorFinalization = (typeof FinalizationRegistry === 'undefined')
1869
+ ? { register: () => {}, unregister: () => {} }
1870
+ : new FinalizationRegistry(ptr => wasm.__wbg_pmtilesextractor_free(ptr, 1));
1649
1871
 
1650
1872
  function addHeapObject(obj) {
1651
1873
  if (heap_next === heap.length) heap.push(heap.length + 1);
Binary file
@@ -5,6 +5,7 @@ export const __start: () => void;
5
5
  export const __wbg_cogbuilder_free: (a: number, b: number) => void;
6
6
  export const __wbg_cogstream_free: (a: number, b: number) => void;
7
7
  export const __wbg_geotiffreader_free: (a: number, b: number) => void;
8
+ export const __wbg_pmtilesextractor_free: (a: number, b: number) => void;
8
9
  export const cogbuilder_new: (a: number, b: number, c: number) => number;
9
10
  export const cogbuilder_set_bigtiff: (a: number, b: number) => void;
10
11
  export const cogbuilder_set_compression: (a: number, b: number, c: number, d: number) => void;
@@ -72,6 +73,15 @@ export const lidar_read_classification: (a: number, b: number, c: number, d: num
72
73
  export const lidar_read_intensity: (a: number, b: number, c: number, d: number, e: number) => void;
73
74
  export const lidar_read_xyz: (a: number, b: number, c: number, d: number, e: number) => void;
74
75
  export const morans_i: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
76
+ export const pmtilesextractor_done: (a: number) => number;
77
+ export const pmtilesextractor_feed: (a: number, b: number, c: number, d: number, e: number) => void;
78
+ export const pmtilesextractor_finish: (a: number, b: number) => void;
79
+ export const pmtilesextractor_header_json: (a: number, b: number) => void;
80
+ export const pmtilesextractor_new: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => void;
81
+ export const pmtilesextractor_progress_json: (a: number, b: number) => void;
82
+ export const pmtilesextractor_set_max_range_gap: (a: number, b: number, c: number) => void;
83
+ export const pmtilesextractor_set_max_tiles: (a: number, b: number, c: number) => void;
84
+ export const pmtilesextractor_wanted_json: (a: number, b: number) => void;
75
85
  export const transform_bbox_epsg: (a: number, b: number, c: number, d: number, e: number) => void;
76
86
  export const transform_points_epsg: (a: number, b: number, c: number, d: number, e: number) => void;
77
87
  export const vector_formats: (a: number) => void;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "geolibre-wasm",
3
3
  "type": "module",
4
- "version": "0.6.0",
4
+ "version": "0.7.0",
5
5
  "description": "Pure-Rust geospatial toolkit (whitebox_next_gen) compiled to WebAssembly (WASI) for GeoLibre's in-browser tool execution",
6
6
  "license": "MIT",
7
7
  "repository": {