@loaders.gl/flatgeobuf 4.2.0-alpha.5 → 4.2.0-alpha.6
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/dist/dist.dev.js +34 -33
- package/dist/dist.min.js +2 -2
- package/dist/flatgeobuf/3.27.2/config.js +3 -6
- package/dist/flatgeobuf/3.27.2/flat-geobuf/column.js +2 -4
- package/dist/flatgeobuf/3.27.2/flat-geobuf/crs.js +2 -4
- package/dist/flatgeobuf/3.27.2/flat-geobuf/feature.js +2 -4
- package/dist/flatgeobuf/3.27.2/flat-geobuf/geometry.js +2 -4
- package/dist/flatgeobuf/3.27.2/flat-geobuf/header.js +2 -4
- package/dist/flatgeobuf/3.27.2/http-reader.js +14 -8
- package/dist/flatgeobuf/3.27.2/logger.js +2 -3
- package/dist/flatgeobuf/3.27.2/packedrtree.js +2 -0
- package/dist/flatgeobuf-loader.js +1 -1
- package/dist/flatgeobuf-worker.js +40 -35
- package/dist/index.cjs +56 -54
- package/dist/index.cjs.map +2 -2
- package/package.json +5 -4
- package/src/flatgeobuf/3.27.2/.DS_Store +0 -0
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
class Config {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
}
|
|
1
|
+
export default class Config {
|
|
2
|
+
static global = new Config();
|
|
3
|
+
_extraRequestThreshold = 256 * 1024;
|
|
5
4
|
/**
|
|
6
5
|
* Fetch up to this many extra bytes if it will eliminate an extra request
|
|
7
6
|
*/
|
|
@@ -15,5 +14,3 @@ class Config {
|
|
|
15
14
|
this._extraRequestThreshold = bytes;
|
|
16
15
|
}
|
|
17
16
|
}
|
|
18
|
-
Config.global = new Config();
|
|
19
|
-
export default Config;
|
|
@@ -2,10 +2,8 @@
|
|
|
2
2
|
import * as flatbuffers from 'flatbuffers';
|
|
3
3
|
import { ColumnType } from "../flat-geobuf/column-type.js";
|
|
4
4
|
export class Column {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
this.bb_pos = 0;
|
|
8
|
-
}
|
|
5
|
+
bb = null;
|
|
6
|
+
bb_pos = 0;
|
|
9
7
|
__init(i, bb) {
|
|
10
8
|
this.bb_pos = i;
|
|
11
9
|
this.bb = bb;
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
// automatically generated by the FlatBuffers compiler, do not modify
|
|
2
2
|
import * as flatbuffers from 'flatbuffers';
|
|
3
3
|
export class Crs {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
this.bb_pos = 0;
|
|
7
|
-
}
|
|
4
|
+
bb = null;
|
|
5
|
+
bb_pos = 0;
|
|
8
6
|
__init(i, bb) {
|
|
9
7
|
this.bb_pos = i;
|
|
10
8
|
this.bb = bb;
|
|
@@ -3,10 +3,8 @@ import * as flatbuffers from 'flatbuffers';
|
|
|
3
3
|
import { Column } from "../flat-geobuf/column.js";
|
|
4
4
|
import { Geometry } from "../flat-geobuf/geometry.js";
|
|
5
5
|
export class Feature {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
this.bb_pos = 0;
|
|
9
|
-
}
|
|
6
|
+
bb = null;
|
|
7
|
+
bb_pos = 0;
|
|
10
8
|
__init(i, bb) {
|
|
11
9
|
this.bb_pos = i;
|
|
12
10
|
this.bb = bb;
|
|
@@ -2,10 +2,8 @@
|
|
|
2
2
|
import * as flatbuffers from 'flatbuffers';
|
|
3
3
|
import { GeometryType } from "../flat-geobuf/geometry-type.js";
|
|
4
4
|
export class Geometry {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
this.bb_pos = 0;
|
|
8
|
-
}
|
|
5
|
+
bb = null;
|
|
6
|
+
bb_pos = 0;
|
|
9
7
|
__init(i, bb) {
|
|
10
8
|
this.bb_pos = i;
|
|
11
9
|
this.bb = bb;
|
|
@@ -4,10 +4,8 @@ import { Column } from "../flat-geobuf/column.js";
|
|
|
4
4
|
import { Crs } from "../flat-geobuf/crs.js";
|
|
5
5
|
import { GeometryType } from "../flat-geobuf/geometry-type.js";
|
|
6
6
|
export class Header {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
this.bb_pos = 0;
|
|
10
|
-
}
|
|
7
|
+
bb = null;
|
|
8
|
+
bb_pos = 0;
|
|
11
9
|
__init(i, bb) {
|
|
12
10
|
this.bb_pos = i;
|
|
13
11
|
this.bb = bb;
|
|
@@ -7,6 +7,10 @@ import Logger from "./logger.js";
|
|
|
7
7
|
import { fromByteBuffer } from "./header-meta.js";
|
|
8
8
|
import { Feature } from "./flat-geobuf/feature.js";
|
|
9
9
|
export class HttpReader {
|
|
10
|
+
headerClient;
|
|
11
|
+
header;
|
|
12
|
+
headerLength;
|
|
13
|
+
indexLength;
|
|
10
14
|
constructor(headerClient, header, headerLength, indexLength) {
|
|
11
15
|
this.headerClient = headerClient;
|
|
12
16
|
this.header = header;
|
|
@@ -170,13 +174,14 @@ export class HttpReader {
|
|
|
170
174
|
}
|
|
171
175
|
}
|
|
172
176
|
class BufferedHttpRangeClient {
|
|
177
|
+
httpClient;
|
|
178
|
+
bytesEverUsed = 0;
|
|
179
|
+
bytesEverFetched = 0;
|
|
180
|
+
buffer = new ArrayBuffer(0);
|
|
181
|
+
// Byte offset of `buffer` with respect to the beginning of the file being
|
|
182
|
+
// buffered
|
|
183
|
+
head = 0;
|
|
173
184
|
constructor(source) {
|
|
174
|
-
this.bytesEverUsed = 0;
|
|
175
|
-
this.bytesEverFetched = 0;
|
|
176
|
-
this.buffer = new ArrayBuffer(0);
|
|
177
|
-
// Byte offset of `buffer` with respect to the beginning of the file being
|
|
178
|
-
// buffered
|
|
179
|
-
this.head = 0;
|
|
180
185
|
if (typeof source === 'string') {
|
|
181
186
|
this.httpClient = new HttpRangeClient(source);
|
|
182
187
|
}
|
|
@@ -210,9 +215,10 @@ class BufferedHttpRangeClient {
|
|
|
210
215
|
}
|
|
211
216
|
}
|
|
212
217
|
class HttpRangeClient {
|
|
218
|
+
url;
|
|
219
|
+
requestsEverMade = 0;
|
|
220
|
+
bytesEverRequested = 0;
|
|
213
221
|
constructor(url) {
|
|
214
|
-
this.requestsEverMade = 0;
|
|
215
|
-
this.bytesEverRequested = 0;
|
|
216
222
|
this.url = url;
|
|
217
223
|
}
|
|
218
224
|
async getRange(begin, length, purpose) {
|
|
@@ -5,7 +5,8 @@ export var LogLevel;
|
|
|
5
5
|
LogLevel[LogLevel["Warn"] = 2] = "Warn";
|
|
6
6
|
LogLevel[LogLevel["Error"] = 3] = "Error";
|
|
7
7
|
})(LogLevel || (LogLevel = {}));
|
|
8
|
-
class Logger {
|
|
8
|
+
export default class Logger {
|
|
9
|
+
static logLevel = LogLevel.Warn;
|
|
9
10
|
static debug(...args) {
|
|
10
11
|
this.log(LogLevel.Debug, ...args);
|
|
11
12
|
}
|
|
@@ -42,5 +43,3 @@ class Logger {
|
|
|
42
43
|
}
|
|
43
44
|
}
|
|
44
45
|
}
|
|
45
|
-
Logger.logLevel = LogLevel.Warn;
|
|
46
|
-
export default Logger;
|
|
@@ -65,6 +65,8 @@ export function generateLevelBounds(numItems, nodeSize) {
|
|
|
65
65
|
*/
|
|
66
66
|
export async function* streamSearch(numItems, nodeSize, rect, readNode) {
|
|
67
67
|
class NodeRange {
|
|
68
|
+
_level;
|
|
69
|
+
nodes;
|
|
68
70
|
constructor(nodes, level) {
|
|
69
71
|
this._level = level;
|
|
70
72
|
this.nodes = nodes;
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
import { parseFlatGeobuf, parseFlatGeobufInBatches } from "./lib/parse-flatgeobuf.js";
|
|
5
5
|
// __VERSION__ is injected by babel-plugin-version-inline
|
|
6
6
|
// @ts-ignore TS2304: Cannot find name '__VERSION__'.
|
|
7
|
-
const VERSION = typeof "4.2.0-alpha.
|
|
7
|
+
const VERSION = typeof "4.2.0-alpha.5" !== 'undefined' ? "4.2.0-alpha.5" : 'latest';
|
|
8
8
|
// FGB\3FGB\1
|
|
9
9
|
const FGB_MAGIC_NUMBER = [0x66, 0x67, 0x62, 0x03, 0x66, 0x67, 0x62, 0x01];
|
|
10
10
|
export const FlatGeobufWorkerLoader = {
|
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
(() => {
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
5
|
+
var __publicField = (obj, key, value) => {
|
|
6
|
+
__defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
7
|
+
return value;
|
|
8
|
+
};
|
|
9
|
+
|
|
3
10
|
// ../worker-utils/src/lib/node/worker_threads-browser.ts
|
|
4
11
|
var parentPort = null;
|
|
5
12
|
|
|
@@ -59,7 +66,9 @@
|
|
|
59
66
|
}
|
|
60
67
|
getParentPort().then((parentPort2) => {
|
|
61
68
|
if (parentPort2) {
|
|
62
|
-
parentPort2.on("message",
|
|
69
|
+
parentPort2.on("message", (message) => {
|
|
70
|
+
handleMessage(message);
|
|
71
|
+
});
|
|
63
72
|
parentPort2.on("exit", () => console.debug("Node worker closing"));
|
|
64
73
|
} else {
|
|
65
74
|
globalThis.onmessage = handleMessage;
|
|
@@ -6080,10 +6089,8 @@
|
|
|
6080
6089
|
|
|
6081
6090
|
// src/flatgeobuf/3.27.2/flat-geobuf/geometry.ts
|
|
6082
6091
|
var Geometry = class {
|
|
6083
|
-
|
|
6084
|
-
|
|
6085
|
-
this.bb_pos = 0;
|
|
6086
|
-
}
|
|
6092
|
+
bb = null;
|
|
6093
|
+
bb_pos = 0;
|
|
6087
6094
|
__init(i, bb) {
|
|
6088
6095
|
this.bb_pos = i;
|
|
6089
6096
|
this.bb = bb;
|
|
@@ -6392,10 +6399,8 @@
|
|
|
6392
6399
|
|
|
6393
6400
|
// src/flatgeobuf/3.27.2/flat-geobuf/column.ts
|
|
6394
6401
|
var Column = class {
|
|
6395
|
-
|
|
6396
|
-
|
|
6397
|
-
this.bb_pos = 0;
|
|
6398
|
-
}
|
|
6402
|
+
bb = null;
|
|
6403
|
+
bb_pos = 0;
|
|
6399
6404
|
__init(i, bb) {
|
|
6400
6405
|
this.bb_pos = i;
|
|
6401
6406
|
this.bb = bb;
|
|
@@ -6512,10 +6517,8 @@
|
|
|
6512
6517
|
|
|
6513
6518
|
// src/flatgeobuf/3.27.2/flat-geobuf/feature.ts
|
|
6514
6519
|
var Feature = class {
|
|
6515
|
-
|
|
6516
|
-
|
|
6517
|
-
this.bb_pos = 0;
|
|
6518
|
-
}
|
|
6520
|
+
bb = null;
|
|
6521
|
+
bb_pos = 0;
|
|
6519
6522
|
__init(i, bb) {
|
|
6520
6523
|
this.bb_pos = i;
|
|
6521
6524
|
this.bb = bb;
|
|
@@ -6794,10 +6797,8 @@
|
|
|
6794
6797
|
|
|
6795
6798
|
// src/flatgeobuf/3.27.2/flat-geobuf/crs.ts
|
|
6796
6799
|
var Crs = class {
|
|
6797
|
-
|
|
6798
|
-
|
|
6799
|
-
this.bb_pos = 0;
|
|
6800
|
-
}
|
|
6800
|
+
bb = null;
|
|
6801
|
+
bb_pos = 0;
|
|
6801
6802
|
__init(i, bb) {
|
|
6802
6803
|
this.bb_pos = i;
|
|
6803
6804
|
this.bb = bb;
|
|
@@ -6873,10 +6874,8 @@
|
|
|
6873
6874
|
|
|
6874
6875
|
// src/flatgeobuf/3.27.2/flat-geobuf/header.ts
|
|
6875
6876
|
var Header = class {
|
|
6876
|
-
|
|
6877
|
-
|
|
6878
|
-
this.bb_pos = 0;
|
|
6879
|
-
}
|
|
6877
|
+
bb = null;
|
|
6878
|
+
bb_pos = 0;
|
|
6880
6879
|
__init(i, bb) {
|
|
6881
6880
|
this.bb_pos = i;
|
|
6882
6881
|
this.bb = bb;
|
|
@@ -8200,9 +8199,7 @@
|
|
|
8200
8199
|
|
|
8201
8200
|
// src/flatgeobuf/3.27.2/config.ts
|
|
8202
8201
|
var _Config = class {
|
|
8203
|
-
|
|
8204
|
-
this._extraRequestThreshold = 256 * 1024;
|
|
8205
|
-
}
|
|
8202
|
+
_extraRequestThreshold = 256 * 1024;
|
|
8206
8203
|
/**
|
|
8207
8204
|
* Fetch up to this many extra bytes if it will eliminate an extra request
|
|
8208
8205
|
*/
|
|
@@ -8217,7 +8214,7 @@
|
|
|
8217
8214
|
}
|
|
8218
8215
|
};
|
|
8219
8216
|
var Config = _Config;
|
|
8220
|
-
Config
|
|
8217
|
+
__publicField(Config, "global", new _Config());
|
|
8221
8218
|
|
|
8222
8219
|
// src/flatgeobuf/3.27.2/logger.ts
|
|
8223
8220
|
var Logger = class {
|
|
@@ -8257,7 +8254,7 @@
|
|
|
8257
8254
|
}
|
|
8258
8255
|
}
|
|
8259
8256
|
};
|
|
8260
|
-
Logger
|
|
8257
|
+
__publicField(Logger, "logLevel", 2 /* Warn */);
|
|
8261
8258
|
|
|
8262
8259
|
// src/flatgeobuf/3.27.2/packedrtree.ts
|
|
8263
8260
|
var NODE_ITEM_BYTE_LEN = 8 * 4 + 8;
|
|
@@ -8298,6 +8295,8 @@
|
|
|
8298
8295
|
}
|
|
8299
8296
|
async function* streamSearch(numItems, nodeSize, rect, readNode) {
|
|
8300
8297
|
class NodeRange {
|
|
8298
|
+
_level;
|
|
8299
|
+
nodes;
|
|
8301
8300
|
constructor(nodes, level) {
|
|
8302
8301
|
this._level = level;
|
|
8303
8302
|
this.nodes = nodes;
|
|
@@ -8421,6 +8420,10 @@
|
|
|
8421
8420
|
|
|
8422
8421
|
// src/flatgeobuf/3.27.2/http-reader.ts
|
|
8423
8422
|
var HttpReader = class {
|
|
8423
|
+
headerClient;
|
|
8424
|
+
header;
|
|
8425
|
+
headerLength;
|
|
8426
|
+
indexLength;
|
|
8424
8427
|
constructor(headerClient, header, headerLength, indexLength) {
|
|
8425
8428
|
this.headerClient = headerClient;
|
|
8426
8429
|
this.header = header;
|
|
@@ -8571,13 +8574,14 @@
|
|
|
8571
8574
|
}
|
|
8572
8575
|
};
|
|
8573
8576
|
var BufferedHttpRangeClient = class {
|
|
8577
|
+
httpClient;
|
|
8578
|
+
bytesEverUsed = 0;
|
|
8579
|
+
bytesEverFetched = 0;
|
|
8580
|
+
buffer = new ArrayBuffer(0);
|
|
8581
|
+
// Byte offset of `buffer` with respect to the beginning of the file being
|
|
8582
|
+
// buffered
|
|
8583
|
+
head = 0;
|
|
8574
8584
|
constructor(source) {
|
|
8575
|
-
this.bytesEverUsed = 0;
|
|
8576
|
-
this.bytesEverFetched = 0;
|
|
8577
|
-
this.buffer = new ArrayBuffer(0);
|
|
8578
|
-
// Byte offset of `buffer` with respect to the beginning of the file being
|
|
8579
|
-
// buffered
|
|
8580
|
-
this.head = 0;
|
|
8581
8585
|
if (typeof source === "string") {
|
|
8582
8586
|
this.httpClient = new HttpRangeClient(source);
|
|
8583
8587
|
} else if (source instanceof HttpRangeClient) {
|
|
@@ -8609,9 +8613,10 @@
|
|
|
8609
8613
|
}
|
|
8610
8614
|
};
|
|
8611
8615
|
var HttpRangeClient = class {
|
|
8616
|
+
url;
|
|
8617
|
+
requestsEverMade = 0;
|
|
8618
|
+
bytesEverRequested = 0;
|
|
8612
8619
|
constructor(url) {
|
|
8613
|
-
this.requestsEverMade = 0;
|
|
8614
|
-
this.bytesEverRequested = 0;
|
|
8615
8620
|
this.url = url;
|
|
8616
8621
|
}
|
|
8617
8622
|
async getRange(begin, length, purpose) {
|
|
@@ -8855,7 +8860,7 @@
|
|
|
8855
8860
|
}
|
|
8856
8861
|
|
|
8857
8862
|
// src/flatgeobuf-loader.ts
|
|
8858
|
-
var VERSION = true ? "4.2.0-alpha.
|
|
8863
|
+
var VERSION = true ? "4.2.0-alpha.5" : "latest";
|
|
8859
8864
|
var FGB_MAGIC_NUMBER = [102, 103, 98, 3, 102, 103, 98, 1];
|
|
8860
8865
|
var FlatGeobufWorkerLoader = {
|
|
8861
8866
|
id: "flatgeobuf",
|
package/dist/index.cjs
CHANGED
|
@@ -5,6 +5,7 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
|
5
5
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
6
|
var __getProtoOf = Object.getPrototypeOf;
|
|
7
7
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
8
9
|
var __export = (target, all) => {
|
|
9
10
|
for (var name in all)
|
|
10
11
|
__defProp(target, name, { get: all[name], enumerable: true });
|
|
@@ -26,6 +27,10 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
26
27
|
mod
|
|
27
28
|
));
|
|
28
29
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
30
|
+
var __publicField = (obj, key, value) => {
|
|
31
|
+
__defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
32
|
+
return value;
|
|
33
|
+
};
|
|
29
34
|
|
|
30
35
|
// dist/index.js
|
|
31
36
|
var dist_exports = {};
|
|
@@ -264,10 +269,8 @@ var GeometryType2;
|
|
|
264
269
|
// dist/flatgeobuf/3.27.2/flat-geobuf/geometry.js
|
|
265
270
|
var flatbuffers = __toESM(require("flatbuffers"), 1);
|
|
266
271
|
var Geometry = class {
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
this.bb_pos = 0;
|
|
270
|
-
}
|
|
272
|
+
bb = null;
|
|
273
|
+
bb_pos = 0;
|
|
271
274
|
__init(i, bb) {
|
|
272
275
|
this.bb_pos = i;
|
|
273
276
|
this.bb = bb;
|
|
@@ -580,10 +583,8 @@ var flatbuffers3 = __toESM(require("flatbuffers"), 1);
|
|
|
580
583
|
// dist/flatgeobuf/3.27.2/flat-geobuf/column.js
|
|
581
584
|
var flatbuffers2 = __toESM(require("flatbuffers"), 1);
|
|
582
585
|
var Column = class {
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
this.bb_pos = 0;
|
|
586
|
-
}
|
|
586
|
+
bb = null;
|
|
587
|
+
bb_pos = 0;
|
|
587
588
|
__init(i, bb) {
|
|
588
589
|
this.bb_pos = i;
|
|
589
590
|
this.bb = bb;
|
|
@@ -700,10 +701,8 @@ var Column = class {
|
|
|
700
701
|
|
|
701
702
|
// dist/flatgeobuf/3.27.2/flat-geobuf/feature.js
|
|
702
703
|
var Feature = class {
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
this.bb_pos = 0;
|
|
706
|
-
}
|
|
704
|
+
bb = null;
|
|
705
|
+
bb_pos = 0;
|
|
707
706
|
__init(i, bb) {
|
|
708
707
|
this.bb_pos = i;
|
|
709
708
|
this.bb = bb;
|
|
@@ -910,10 +909,8 @@ var flatbuffers6 = __toESM(require("flatbuffers"), 1);
|
|
|
910
909
|
// dist/flatgeobuf/3.27.2/flat-geobuf/crs.js
|
|
911
910
|
var flatbuffers5 = __toESM(require("flatbuffers"), 1);
|
|
912
911
|
var Crs = class {
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
this.bb_pos = 0;
|
|
916
|
-
}
|
|
912
|
+
bb = null;
|
|
913
|
+
bb_pos = 0;
|
|
917
914
|
__init(i, bb) {
|
|
918
915
|
this.bb_pos = i;
|
|
919
916
|
this.bb = bb;
|
|
@@ -989,10 +986,8 @@ var Crs = class {
|
|
|
989
986
|
|
|
990
987
|
// dist/flatgeobuf/3.27.2/flat-geobuf/header.js
|
|
991
988
|
var Header = class {
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
this.bb_pos = 0;
|
|
995
|
-
}
|
|
989
|
+
bb = null;
|
|
990
|
+
bb_pos = 0;
|
|
996
991
|
__init(i, bb) {
|
|
997
992
|
this.bb_pos = i;
|
|
998
993
|
this.bb = bb;
|
|
@@ -1203,10 +1198,8 @@ var flatbuffers7 = __toESM(require("flatbuffers"), 1);
|
|
|
1203
1198
|
var import_repeater = require("@repeaterjs/repeater");
|
|
1204
1199
|
|
|
1205
1200
|
// dist/flatgeobuf/3.27.2/config.js
|
|
1206
|
-
var
|
|
1207
|
-
|
|
1208
|
-
this._extraRequestThreshold = 256 * 1024;
|
|
1209
|
-
}
|
|
1201
|
+
var _Config = class {
|
|
1202
|
+
_extraRequestThreshold = 256 * 1024;
|
|
1210
1203
|
/**
|
|
1211
1204
|
* Fetch up to this many extra bytes if it will eliminate an extra request
|
|
1212
1205
|
*/
|
|
@@ -1220,8 +1213,8 @@ var Config = class {
|
|
|
1220
1213
|
this._extraRequestThreshold = bytes;
|
|
1221
1214
|
}
|
|
1222
1215
|
};
|
|
1223
|
-
Config
|
|
1224
|
-
|
|
1216
|
+
var Config = _Config;
|
|
1217
|
+
__publicField(Config, "global", new _Config());
|
|
1225
1218
|
|
|
1226
1219
|
// dist/flatgeobuf/3.27.2/logger.js
|
|
1227
1220
|
var LogLevel;
|
|
@@ -1268,8 +1261,7 @@ var Logger = class {
|
|
|
1268
1261
|
}
|
|
1269
1262
|
}
|
|
1270
1263
|
};
|
|
1271
|
-
Logger
|
|
1272
|
-
var logger_default = Logger;
|
|
1264
|
+
__publicField(Logger, "logLevel", LogLevel.Warn);
|
|
1273
1265
|
|
|
1274
1266
|
// dist/flatgeobuf/3.27.2/packedrtree.js
|
|
1275
1267
|
var NODE_ITEM_BYTE_LEN = 8 * 4 + 8;
|
|
@@ -1310,6 +1302,8 @@ function generateLevelBounds(numItems, nodeSize) {
|
|
|
1310
1302
|
}
|
|
1311
1303
|
async function* streamSearch(numItems, nodeSize, rect, readNode) {
|
|
1312
1304
|
class NodeRange {
|
|
1305
|
+
_level;
|
|
1306
|
+
nodes;
|
|
1313
1307
|
constructor(nodes, level) {
|
|
1314
1308
|
this._level = level;
|
|
1315
1309
|
this.nodes = nodes;
|
|
@@ -1332,7 +1326,7 @@ async function* streamSearch(numItems, nodeSize, rect, readNode) {
|
|
|
1332
1326
|
}
|
|
1333
1327
|
}
|
|
1334
1328
|
const { minX, minY, maxX, maxY } = rect;
|
|
1335
|
-
|
|
1329
|
+
Logger.info(`tree items: ${numItems}, nodeSize: ${nodeSize}`);
|
|
1336
1330
|
const levelBounds = generateLevelBounds(numItems, nodeSize);
|
|
1337
1331
|
const firstLeafNodeIdx = levelBounds[0][0];
|
|
1338
1332
|
const rootNodeRange = (() => {
|
|
@@ -1341,10 +1335,10 @@ async function* streamSearch(numItems, nodeSize, rect, readNode) {
|
|
|
1341
1335
|
return new NodeRange(range, level);
|
|
1342
1336
|
})();
|
|
1343
1337
|
const queue = [rootNodeRange];
|
|
1344
|
-
|
|
1338
|
+
Logger.debug(`starting stream search with queue: ${queue}, numItems: ${numItems}, nodeSize: ${nodeSize}, levelBounds: ${levelBounds}`);
|
|
1345
1339
|
while (queue.length != 0) {
|
|
1346
1340
|
const nodeRange = queue.shift();
|
|
1347
|
-
|
|
1341
|
+
Logger.debug(`popped node: ${nodeRange}, queueLength: ${queue.length}`);
|
|
1348
1342
|
const nodeRangeStartIdx = nodeRange.startNodeIdx();
|
|
1349
1343
|
const isLeafNode = nodeRangeStartIdx >= firstLeafNodeIdx;
|
|
1350
1344
|
const nodeRangeEndIdx = (() => {
|
|
@@ -1385,10 +1379,10 @@ async function* streamSearch(numItems, nodeSize, rect, readNode) {
|
|
|
1385
1379
|
continue;
|
|
1386
1380
|
}
|
|
1387
1381
|
const firstChildNodeIdx = offset;
|
|
1388
|
-
const extraRequestThresholdNodes =
|
|
1382
|
+
const extraRequestThresholdNodes = Config.global.extraRequestThreshold() / NODE_ITEM_BYTE_LEN;
|
|
1389
1383
|
const nearestNodeRange = queue[queue.length - 1];
|
|
1390
1384
|
if (nearestNodeRange !== void 0 && nearestNodeRange.level() == nodeRange.level() - 1 && firstChildNodeIdx < nearestNodeRange.endNodeIdx() + extraRequestThresholdNodes) {
|
|
1391
|
-
|
|
1385
|
+
Logger.debug(`Merging "nodeRange" request into existing range: ${nearestNodeRange}, newEndNodeIdx: ${nearestNodeRange.endNodeIdx()} -> ${firstChildNodeIdx}`);
|
|
1392
1386
|
nearestNodeRange.extendEndNodeIdx(Number(firstChildNodeIdx));
|
|
1393
1387
|
continue;
|
|
1394
1388
|
}
|
|
@@ -1398,9 +1392,9 @@ async function* streamSearch(numItems, nodeSize, rect, readNode) {
|
|
|
1398
1392
|
return new NodeRange(range, level);
|
|
1399
1393
|
})();
|
|
1400
1394
|
if (nearestNodeRange !== void 0 && nearestNodeRange.level() == newNodeRange.level()) {
|
|
1401
|
-
|
|
1395
|
+
Logger.info(`Same level, but too far away. Pushing new request for nodeIdx: ${firstChildNodeIdx} rather than merging with distant ${nearestNodeRange}`);
|
|
1402
1396
|
} else {
|
|
1403
|
-
|
|
1397
|
+
Logger.info(`Pushing new level for ${newNodeRange} onto queue with nearestNodeRange: ${nearestNodeRange} since there's not already a range for this level.`);
|
|
1404
1398
|
}
|
|
1405
1399
|
queue.push(newNodeRange);
|
|
1406
1400
|
}
|
|
@@ -1422,6 +1416,10 @@ var SIZE_PREFIX_LEN = 4;
|
|
|
1422
1416
|
|
|
1423
1417
|
// dist/flatgeobuf/3.27.2/http-reader.js
|
|
1424
1418
|
var HttpReader = class {
|
|
1419
|
+
headerClient;
|
|
1420
|
+
header;
|
|
1421
|
+
headerLength;
|
|
1422
|
+
indexLength;
|
|
1425
1423
|
constructor(headerClient, header, headerLength, indexLength) {
|
|
1426
1424
|
this.headerClient = headerClient;
|
|
1427
1425
|
this.header = header;
|
|
@@ -1446,14 +1444,14 @@ var HttpReader = class {
|
|
|
1446
1444
|
return result;
|
|
1447
1445
|
})();
|
|
1448
1446
|
const minReqLength = assumedHeaderLength + assumedIndexLength;
|
|
1449
|
-
|
|
1447
|
+
Logger.debug(`fetching header. minReqLength: ${minReqLength} (assumedHeaderLength: ${assumedHeaderLength}, assumedIndexLength: ${assumedIndexLength})`);
|
|
1450
1448
|
{
|
|
1451
1449
|
const bytes2 = new Uint8Array(await headerClient.getRange(0, 8, minReqLength, "header"));
|
|
1452
1450
|
if (!bytes2.subarray(0, 3).every((v, i) => magicbytes[i] === v)) {
|
|
1453
|
-
|
|
1451
|
+
Logger.error(`bytes: ${bytes2} != ${magicbytes}`);
|
|
1454
1452
|
throw new Error("Not a FlatGeobuf file");
|
|
1455
1453
|
}
|
|
1456
|
-
|
|
1454
|
+
Logger.debug("magic bytes look good");
|
|
1457
1455
|
}
|
|
1458
1456
|
let headerLength;
|
|
1459
1457
|
{
|
|
@@ -1463,13 +1461,13 @@ var HttpReader = class {
|
|
|
1463
1461
|
if (headerLength > HEADER_MAX_BUFFER_SIZE || headerLength < 8) {
|
|
1464
1462
|
throw new Error("Invalid header size");
|
|
1465
1463
|
}
|
|
1466
|
-
|
|
1464
|
+
Logger.debug(`headerLength: ${headerLength}`);
|
|
1467
1465
|
}
|
|
1468
1466
|
const bytes = await headerClient.getRange(12, headerLength, minReqLength, "header");
|
|
1469
1467
|
const bb = new flatbuffers7.ByteBuffer(new Uint8Array(bytes));
|
|
1470
1468
|
const header = fromByteBuffer(bb);
|
|
1471
1469
|
const indexLength = calcTreeSize(header.featuresCount, header.indexNodeSize);
|
|
1472
|
-
|
|
1470
|
+
Logger.debug("completed: opening http reader");
|
|
1473
1471
|
return new HttpReader(headerClient, header, headerLength, indexLength);
|
|
1474
1472
|
}
|
|
1475
1473
|
async *selectBbox(rect) {
|
|
@@ -1485,7 +1483,7 @@ var HttpReader = class {
|
|
|
1485
1483
|
const [featureOffset, ,] = searchResult;
|
|
1486
1484
|
let [, , featureLength] = searchResult;
|
|
1487
1485
|
if (!featureLength) {
|
|
1488
|
-
|
|
1486
|
+
Logger.info("final feature");
|
|
1489
1487
|
featureLength = 4;
|
|
1490
1488
|
}
|
|
1491
1489
|
if (currentBatch.length == 0) {
|
|
@@ -1494,8 +1492,8 @@ var HttpReader = class {
|
|
|
1494
1492
|
}
|
|
1495
1493
|
const prevFeature = currentBatch[currentBatch.length - 1];
|
|
1496
1494
|
const gap = featureOffset - (prevFeature[0] + prevFeature[1]);
|
|
1497
|
-
if (gap >
|
|
1498
|
-
|
|
1495
|
+
if (gap > Config.global.extraRequestThreshold()) {
|
|
1496
|
+
Logger.info(`Pushing new feature batch, since gap ${gap} was too large`);
|
|
1499
1497
|
batches.push(currentBatch);
|
|
1500
1498
|
currentBatch = [];
|
|
1501
1499
|
}
|
|
@@ -1553,11 +1551,14 @@ var HttpReader = class {
|
|
|
1553
1551
|
}
|
|
1554
1552
|
};
|
|
1555
1553
|
var BufferedHttpRangeClient = class {
|
|
1554
|
+
httpClient;
|
|
1555
|
+
bytesEverUsed = 0;
|
|
1556
|
+
bytesEverFetched = 0;
|
|
1557
|
+
buffer = new ArrayBuffer(0);
|
|
1558
|
+
// Byte offset of `buffer` with respect to the beginning of the file being
|
|
1559
|
+
// buffered
|
|
1560
|
+
head = 0;
|
|
1556
1561
|
constructor(source) {
|
|
1557
|
-
this.bytesEverUsed = 0;
|
|
1558
|
-
this.bytesEverFetched = 0;
|
|
1559
|
-
this.buffer = new ArrayBuffer(0);
|
|
1560
|
-
this.head = 0;
|
|
1561
1562
|
if (typeof source === "string") {
|
|
1562
1563
|
this.httpClient = new HttpRangeClient(source);
|
|
1563
1564
|
} else if (source instanceof HttpRangeClient) {
|
|
@@ -1575,7 +1576,7 @@ var BufferedHttpRangeClient = class {
|
|
|
1575
1576
|
}
|
|
1576
1577
|
const lengthToFetch = Math.max(length, minReqLength);
|
|
1577
1578
|
this.bytesEverFetched += lengthToFetch;
|
|
1578
|
-
|
|
1579
|
+
Logger.debug(`requesting for new Range: ${start}-${start + lengthToFetch - 1}`);
|
|
1579
1580
|
this.buffer = await this.httpClient.getRange(start, lengthToFetch, purpose);
|
|
1580
1581
|
this.head = start;
|
|
1581
1582
|
return this.buffer.slice(0, length);
|
|
@@ -1585,20 +1586,21 @@ var BufferedHttpRangeClient = class {
|
|
|
1585
1586
|
const used = this.bytesEverUsed;
|
|
1586
1587
|
const requested = this.bytesEverFetched;
|
|
1587
1588
|
const efficiency = (100 * used / requested).toFixed(2);
|
|
1588
|
-
|
|
1589
|
+
Logger.info(`${category} bytes used/requested: ${used} / ${requested} = ${efficiency}%`);
|
|
1589
1590
|
}
|
|
1590
1591
|
};
|
|
1591
1592
|
var HttpRangeClient = class {
|
|
1593
|
+
url;
|
|
1594
|
+
requestsEverMade = 0;
|
|
1595
|
+
bytesEverRequested = 0;
|
|
1592
1596
|
constructor(url) {
|
|
1593
|
-
this.requestsEverMade = 0;
|
|
1594
|
-
this.bytesEverRequested = 0;
|
|
1595
1597
|
this.url = url;
|
|
1596
1598
|
}
|
|
1597
1599
|
async getRange(begin, length, purpose) {
|
|
1598
1600
|
this.requestsEverMade += 1;
|
|
1599
1601
|
this.bytesEverRequested += length;
|
|
1600
1602
|
const range = `bytes=${begin}-${begin + length - 1}`;
|
|
1601
|
-
|
|
1603
|
+
Logger.info(`request: #${this.requestsEverMade}, purpose: ${purpose}), bytes: (this_request: ${length}, ever: ${this.bytesEverRequested}), Range: ${range}`);
|
|
1602
1604
|
const response = await fetch(this.url, {
|
|
1603
1605
|
headers: {
|
|
1604
1606
|
Range: range
|
|
@@ -1684,7 +1686,7 @@ async function* deserializeStream(stream, fromFeature2, headerMetaFn) {
|
|
|
1684
1686
|
}
|
|
1685
1687
|
async function* deserializeFiltered(url, rect, fromFeature2, headerMetaFn) {
|
|
1686
1688
|
const reader = await HttpReader.open(url);
|
|
1687
|
-
|
|
1689
|
+
Logger.debug("opened reader");
|
|
1688
1690
|
if (headerMetaFn)
|
|
1689
1691
|
headerMetaFn(reader.header);
|
|
1690
1692
|
for await (const feature of reader.selectBbox(rect)) {
|
|
@@ -1835,7 +1837,7 @@ async function* parseFlatGeobufInBatchesToGeoJSON(stream, options) {
|
|
|
1835
1837
|
}
|
|
1836
1838
|
|
|
1837
1839
|
// dist/flatgeobuf-loader.js
|
|
1838
|
-
var VERSION = true ? "4.2.0-alpha.
|
|
1840
|
+
var VERSION = true ? "4.2.0-alpha.5" : "latest";
|
|
1839
1841
|
var FGB_MAGIC_NUMBER = [102, 103, 98, 3, 102, 103, 98, 1];
|
|
1840
1842
|
var FlatGeobufWorkerLoader = {
|
|
1841
1843
|
id: "flatgeobuf",
|