@loaders.gl/flatgeobuf 4.1.0-alpha.6 → 4.1.0-alpha.7
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/LICENSE +9 -0
- package/dist/flatgeobuf/3.27.2/LICENSE +29 -0
- package/dist/flatgeobuf/3.27.2/README.md +45 -0
- package/dist/flatgeobuf/3.27.2/column-meta.d.ts +14 -0
- package/dist/flatgeobuf/3.27.2/column-meta.d.ts.map +1 -0
- package/dist/flatgeobuf/3.27.2/column-meta.js +2 -0
- package/dist/flatgeobuf/3.27.2/column-meta.js.map +1 -0
- package/dist/flatgeobuf/3.27.2/config.d.ts +10 -0
- package/dist/flatgeobuf/3.27.2/config.d.ts.map +1 -0
- package/dist/flatgeobuf/3.27.2/config.js +16 -0
- package/dist/flatgeobuf/3.27.2/config.js.map +1 -0
- package/dist/flatgeobuf/3.27.2/constants.d.ts +3 -0
- package/dist/flatgeobuf/3.27.2/constants.d.ts.map +1 -0
- package/dist/flatgeobuf/3.27.2/constants.js +3 -0
- package/dist/flatgeobuf/3.27.2/constants.js.map +1 -0
- package/dist/flatgeobuf/3.27.2/crs-meta.d.ts +9 -0
- package/dist/flatgeobuf/3.27.2/crs-meta.d.ts.map +1 -0
- package/dist/flatgeobuf/3.27.2/crs-meta.js +2 -0
- package/dist/flatgeobuf/3.27.2/crs-meta.js.map +1 -0
- package/dist/flatgeobuf/3.27.2/dumptree.d.ts +2 -0
- package/dist/flatgeobuf/3.27.2/dumptree.d.ts.map +1 -0
- package/dist/flatgeobuf/3.27.2/dumptree.js +61 -0
- package/dist/flatgeobuf/3.27.2/dumptree.js.map +1 -0
- package/dist/flatgeobuf/3.27.2/feature.d.ts +2 -0
- package/dist/flatgeobuf/3.27.2/feature.d.ts.map +1 -0
- package/dist/flatgeobuf/3.27.2/feature.js +3 -0
- package/dist/flatgeobuf/3.27.2/feature.js.map +1 -0
- package/dist/flatgeobuf/3.27.2/flat-geobuf/column-type.d.ts +18 -0
- package/dist/flatgeobuf/3.27.2/flat-geobuf/column-type.d.ts.map +1 -0
- package/dist/flatgeobuf/3.27.2/flat-geobuf/column-type.js +19 -0
- package/dist/flatgeobuf/3.27.2/flat-geobuf/column-type.js.map +1 -0
- package/dist/flatgeobuf/3.27.2/flat-geobuf/column.d.ts +39 -0
- package/dist/flatgeobuf/3.27.2/flat-geobuf/column.d.ts.map +1 -0
- package/dist/flatgeobuf/3.27.2/flat-geobuf/column.js +121 -0
- package/dist/flatgeobuf/3.27.2/flat-geobuf/column.js.map +1 -0
- package/dist/flatgeobuf/3.27.2/flat-geobuf/crs.d.ts +29 -0
- package/dist/flatgeobuf/3.27.2/flat-geobuf/crs.d.ts.map +1 -0
- package/dist/flatgeobuf/3.27.2/flat-geobuf/crs.js +79 -0
- package/dist/flatgeobuf/3.27.2/flat-geobuf/crs.js.map +1 -0
- package/dist/flatgeobuf/3.27.2/flat-geobuf/feature.d.ts +29 -0
- package/dist/flatgeobuf/3.27.2/flat-geobuf/feature.d.ts.map +1 -0
- package/dist/flatgeobuf/3.27.2/flat-geobuf/feature.js +95 -0
- package/dist/flatgeobuf/3.27.2/flat-geobuf/feature.js.map +1 -0
- package/dist/flatgeobuf/3.27.2/flat-geobuf/geometry-type.d.ts +21 -0
- package/dist/flatgeobuf/3.27.2/flat-geobuf/geometry-type.d.ts.map +1 -0
- package/dist/flatgeobuf/3.27.2/flat-geobuf/geometry-type.js +22 -0
- package/dist/flatgeobuf/3.27.2/flat-geobuf/geometry-type.js.map +1 -0
- package/dist/flatgeobuf/3.27.2/flat-geobuf/geometry.d.ts +75 -0
- package/dist/flatgeobuf/3.27.2/flat-geobuf/geometry.d.ts.map +1 -0
- package/dist/flatgeobuf/3.27.2/flat-geobuf/geometry.js +214 -0
- package/dist/flatgeobuf/3.27.2/flat-geobuf/geometry.js.map +1 -0
- package/dist/flatgeobuf/3.27.2/flat-geobuf/header.d.ts +59 -0
- package/dist/flatgeobuf/3.27.2/flat-geobuf/header.d.ts.map +1 -0
- package/dist/flatgeobuf/3.27.2/flat-geobuf/header.js +166 -0
- package/dist/flatgeobuf/3.27.2/flat-geobuf/header.js.map +1 -0
- package/dist/flatgeobuf/3.27.2/flat-geobuf.d.ts +6 -0
- package/dist/flatgeobuf/3.27.2/flat-geobuf.d.ts.map +1 -0
- package/dist/flatgeobuf/3.27.2/flat-geobuf.js +6 -0
- package/dist/flatgeobuf/3.27.2/flat-geobuf.js.map +1 -0
- package/dist/flatgeobuf/3.27.2/generic/feature.d.ts +19 -0
- package/dist/flatgeobuf/3.27.2/generic/feature.d.ts.map +1 -0
- package/dist/flatgeobuf/3.27.2/generic/feature.js +220 -0
- package/dist/flatgeobuf/3.27.2/generic/feature.js.map +1 -0
- package/dist/flatgeobuf/3.27.2/generic/featurecollection.d.ts +18 -0
- package/dist/flatgeobuf/3.27.2/generic/featurecollection.d.ts.map +1 -0
- package/dist/flatgeobuf/3.27.2/generic/featurecollection.js +162 -0
- package/dist/flatgeobuf/3.27.2/generic/featurecollection.js.map +1 -0
- package/dist/flatgeobuf/3.27.2/generic/geometry.d.ts +33 -0
- package/dist/flatgeobuf/3.27.2/generic/geometry.d.ts.map +1 -0
- package/dist/flatgeobuf/3.27.2/generic/geometry.js +81 -0
- package/dist/flatgeobuf/3.27.2/generic/geometry.js.map +1 -0
- package/dist/flatgeobuf/3.27.2/generic/header.d.ts +5 -0
- package/dist/flatgeobuf/3.27.2/generic/header.d.ts.map +1 -0
- package/dist/flatgeobuf/3.27.2/generic/header.js +27 -0
- package/dist/flatgeobuf/3.27.2/generic/header.js.map +1 -0
- package/dist/flatgeobuf/3.27.2/generic.d.ts +16 -0
- package/dist/flatgeobuf/3.27.2/generic.d.ts.map +1 -0
- package/dist/flatgeobuf/3.27.2/generic.js +9 -0
- package/dist/flatgeobuf/3.27.2/generic.js.map +1 -0
- package/dist/flatgeobuf/3.27.2/geojson/feature.d.ts +8 -0
- package/dist/flatgeobuf/3.27.2/geojson/feature.d.ts.map +1 -0
- package/dist/flatgeobuf/3.27.2/geojson/feature.js +13 -0
- package/dist/flatgeobuf/3.27.2/geojson/feature.js.map +1 -0
- package/dist/flatgeobuf/3.27.2/geojson/featurecollection.d.ts +8 -0
- package/dist/flatgeobuf/3.27.2/geojson/featurecollection.d.ts.map +1 -0
- package/dist/flatgeobuf/3.27.2/geojson/featurecollection.js +54 -0
- package/dist/flatgeobuf/3.27.2/geojson/featurecollection.js.map +1 -0
- package/dist/flatgeobuf/3.27.2/geojson/geometry.d.ts +13 -0
- package/dist/flatgeobuf/3.27.2/geojson/geometry.d.ts.map +1 -0
- package/dist/flatgeobuf/3.27.2/geojson/geometry.js +118 -0
- package/dist/flatgeobuf/3.27.2/geojson/geometry.js.map +1 -0
- package/dist/flatgeobuf/3.27.2/geojson.d.ts +17 -0
- package/dist/flatgeobuf/3.27.2/geojson.d.ts.map +1 -0
- package/dist/flatgeobuf/3.27.2/geojson.js +10 -0
- package/dist/flatgeobuf/3.27.2/geojson.js.map +1 -0
- package/dist/flatgeobuf/3.27.2/header-meta.d.ts +17 -0
- package/dist/flatgeobuf/3.27.2/header-meta.d.ts.map +1 -0
- package/dist/flatgeobuf/3.27.2/header-meta.js +46 -0
- package/dist/flatgeobuf/3.27.2/header-meta.js.map +1 -0
- package/dist/flatgeobuf/3.27.2/header.d.ts +2 -0
- package/dist/flatgeobuf/3.27.2/header.d.ts.map +1 -0
- package/dist/flatgeobuf/3.27.2/header.js +3 -0
- package/dist/flatgeobuf/3.27.2/header.js.map +1 -0
- package/dist/flatgeobuf/3.27.2/http-reader.d.ts +41 -0
- package/dist/flatgeobuf/3.27.2/http-reader.d.ts.map +1 -0
- package/dist/flatgeobuf/3.27.2/http-reader.js +193 -0
- package/dist/flatgeobuf/3.27.2/http-reader.js.map +1 -0
- package/dist/flatgeobuf/3.27.2/index.d.ts +14 -0
- package/dist/flatgeobuf/3.27.2/index.d.ts.map +1 -0
- package/dist/flatgeobuf/3.27.2/index.js +16 -0
- package/dist/flatgeobuf/3.27.2/index.js.map +1 -0
- package/dist/flatgeobuf/3.27.2/logger.d.ts +15 -0
- package/dist/flatgeobuf/3.27.2/logger.d.ts.map +1 -0
- package/dist/flatgeobuf/3.27.2/logger.js +65 -0
- package/dist/flatgeobuf/3.27.2/logger.js.map +1 -0
- package/dist/flatgeobuf/3.27.2/packedrtree.d.ts +43 -0
- package/dist/flatgeobuf/3.27.2/packedrtree.d.ts.map +1 -0
- package/dist/flatgeobuf/3.27.2/packedrtree.js +138 -0
- package/dist/flatgeobuf/3.27.2/packedrtree.js.map +1 -0
- package/dist/flatgeobuf/3.27.2/streams/utils.d.ts +7 -0
- package/dist/flatgeobuf/3.27.2/streams/utils.d.ts.map +1 -0
- package/dist/flatgeobuf/3.27.2/streams/utils.js +67 -0
- package/dist/flatgeobuf/3.27.2/streams/utils.js.map +1 -0
- package/dist/flatgeobuf/3.27.2/types/jsts.d.ts +23 -0
- package/dist/flatgeobuf/3.27.2/types/slice.d.ts +16 -0
- package/dist/flatgeobuf-loader.js +1 -1
- package/dist/index.cjs +1547 -6
- package/dist/lib/binary-geometries.d.ts +1 -1
- package/dist/lib/binary-geometries.d.ts.map +1 -1
- package/dist/lib/binary-geometries.js.map +1 -1
- package/dist/lib/get-schema-from-fgb-header.d.ts +1 -1
- package/dist/lib/get-schema-from-fgb-header.d.ts.map +1 -1
- package/dist/lib/get-schema-from-fgb-header.js.map +1 -1
- package/dist/lib/parse-flatgeobuf.d.ts +1 -1
- package/dist/lib/parse-flatgeobuf.d.ts.map +1 -1
- package/dist/lib/parse-flatgeobuf.js +3 -3
- package/dist/lib/parse-flatgeobuf.js.map +1 -1
- package/package.json +8 -5
- package/src/LICENSE +9 -0
- package/src/flatgeobuf/3.27.2/LICENSE +29 -0
- package/src/flatgeobuf/3.27.2/README.md +45 -0
- package/src/flatgeobuf/3.27.2/column-meta.ts +14 -0
- package/src/flatgeobuf/3.27.2/config.ts +19 -0
- package/src/flatgeobuf/3.27.2/constants.ts +4 -0
- package/src/flatgeobuf/3.27.2/crs-meta.ts +8 -0
- package/src/flatgeobuf/3.27.2/dumptree.ts +82 -0
- package/src/flatgeobuf/3.27.2/feature.ts +3 -0
- package/src/flatgeobuf/3.27.2/flat-geobuf/column-type.ts +19 -0
- package/src/flatgeobuf/3.27.2/flat-geobuf/column.ts +170 -0
- package/src/flatgeobuf/3.27.2/flat-geobuf/crs.ts +114 -0
- package/src/flatgeobuf/3.27.2/flat-geobuf/feature.ts +140 -0
- package/src/flatgeobuf/3.27.2/flat-geobuf/geometry-type.ts +22 -0
- package/src/flatgeobuf/3.27.2/flat-geobuf/geometry.ts +382 -0
- package/src/flatgeobuf/3.27.2/flat-geobuf/header.ts +246 -0
- package/src/flatgeobuf/3.27.2/flat-geobuf.ts +7 -0
- package/src/flatgeobuf/3.27.2/generic/feature.ts +243 -0
- package/src/flatgeobuf/3.27.2/generic/featurecollection.ts +227 -0
- package/src/flatgeobuf/3.27.2/generic/geometry.ts +120 -0
- package/src/flatgeobuf/3.27.2/generic/header.ts +32 -0
- package/src/flatgeobuf/3.27.2/generic.ts +33 -0
- package/src/flatgeobuf/3.27.2/geojson/feature.ts +20 -0
- package/src/flatgeobuf/3.27.2/geojson/featurecollection.ts +101 -0
- package/src/flatgeobuf/3.27.2/geojson/geometry.ts +142 -0
- package/src/flatgeobuf/3.27.2/geojson.ts +37 -0
- package/src/flatgeobuf/3.27.2/header-meta.ts +66 -0
- package/src/flatgeobuf/3.27.2/header.ts +3 -0
- package/src/flatgeobuf/3.27.2/http-reader.ts +351 -0
- package/src/flatgeobuf/3.27.2/index.ts +19 -0
- package/src/flatgeobuf/3.27.2/logger.ts +51 -0
- package/src/flatgeobuf/3.27.2/packedrtree.ts +255 -0
- package/src/flatgeobuf/3.27.2/streams/utils.ts +80 -0
- package/src/flatgeobuf/3.27.2/types/jsts.d.ts +23 -0
- package/src/flatgeobuf/3.27.2/types/slice.d.ts +16 -0
- package/src/lib/binary-geometries.ts +2 -2
- package/src/lib/get-schema-from-fgb-header.ts +1 -1
- package/src/lib/parse-flatgeobuf.ts +4 -4
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
export let LogLevel = function (LogLevel) {
|
|
2
|
+
LogLevel[LogLevel["Debug"] = 0] = "Debug";
|
|
3
|
+
LogLevel[LogLevel["Info"] = 1] = "Info";
|
|
4
|
+
LogLevel[LogLevel["Warn"] = 2] = "Warn";
|
|
5
|
+
LogLevel[LogLevel["Error"] = 3] = "Error";
|
|
6
|
+
return LogLevel;
|
|
7
|
+
}({});
|
|
8
|
+
export default class Logger {
|
|
9
|
+
static debug() {
|
|
10
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
11
|
+
args[_key] = arguments[_key];
|
|
12
|
+
}
|
|
13
|
+
this.log(LogLevel.Debug, ...args);
|
|
14
|
+
}
|
|
15
|
+
static info() {
|
|
16
|
+
for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
|
17
|
+
args[_key2] = arguments[_key2];
|
|
18
|
+
}
|
|
19
|
+
this.log(LogLevel.Info, ...args);
|
|
20
|
+
}
|
|
21
|
+
static warn() {
|
|
22
|
+
for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
|
|
23
|
+
args[_key3] = arguments[_key3];
|
|
24
|
+
}
|
|
25
|
+
this.log(LogLevel.Warn, ...args);
|
|
26
|
+
}
|
|
27
|
+
static error() {
|
|
28
|
+
for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
|
|
29
|
+
args[_key4] = arguments[_key4];
|
|
30
|
+
}
|
|
31
|
+
this.log(LogLevel.Error, ...args);
|
|
32
|
+
}
|
|
33
|
+
static log(level) {
|
|
34
|
+
if (this.logLevel > level) {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
for (var _len5 = arguments.length, args = new Array(_len5 > 1 ? _len5 - 1 : 0), _key5 = 1; _key5 < _len5; _key5++) {
|
|
38
|
+
args[_key5 - 1] = arguments[_key5];
|
|
39
|
+
}
|
|
40
|
+
switch (level) {
|
|
41
|
+
case LogLevel.Debug:
|
|
42
|
+
{
|
|
43
|
+
console.debug(...args);
|
|
44
|
+
break;
|
|
45
|
+
}
|
|
46
|
+
case LogLevel.Info:
|
|
47
|
+
{
|
|
48
|
+
console.info(...args);
|
|
49
|
+
break;
|
|
50
|
+
}
|
|
51
|
+
case LogLevel.Warn:
|
|
52
|
+
{
|
|
53
|
+
console.warn(...args);
|
|
54
|
+
break;
|
|
55
|
+
}
|
|
56
|
+
case LogLevel.Error:
|
|
57
|
+
{
|
|
58
|
+
console.error(...args);
|
|
59
|
+
break;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
Logger.logLevel = LogLevel.Warn;
|
|
65
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","names":["LogLevel","Logger","debug","_len","arguments","length","args","Array","_key","log","Debug","info","_len2","_key2","Info","warn","_len3","_key3","Warn","error","_len4","_key4","Error","level","logLevel","_len5","_key5","console"],"sources":["../../../src/flatgeobuf/3.27.2/logger.ts"],"sourcesContent":["export enum LogLevel {\n Debug,\n Info,\n Warn,\n Error\n}\n\nexport default class Logger {\n static logLevel: LogLevel = LogLevel.Warn;\n\n static debug(...args: any[]): void {\n this.log(LogLevel.Debug, ...args);\n }\n\n static info(...args: any[]): void {\n this.log(LogLevel.Info, ...args);\n }\n\n static warn(...args: any[]): void {\n this.log(LogLevel.Warn, ...args);\n }\n\n static error(...args: any[]): void {\n this.log(LogLevel.Error, ...args);\n }\n\n static log(level: LogLevel, ...args: any[]): void {\n if (this.logLevel > level) {\n return;\n }\n\n switch (level) {\n case LogLevel.Debug: {\n console.debug(...args);\n break;\n }\n case LogLevel.Info: {\n console.info(...args);\n break;\n }\n case LogLevel.Warn: {\n console.warn(...args);\n break;\n }\n case LogLevel.Error: {\n console.error(...args);\n break;\n }\n }\n }\n}\n"],"mappings":"AAAA,WAAYA,QAAQ,aAARA,QAAQ;EAARA,QAAQ,CAARA,QAAQ;EAARA,QAAQ,CAARA,QAAQ;EAARA,QAAQ,CAARA,QAAQ;EAARA,QAAQ,CAARA,QAAQ;EAAA,OAARA,QAAQ;AAAA;AAOpB,eAAe,MAAMC,MAAM,CAAC;EAG1B,OAAOC,KAAKA,CAAA,EAAuB;IAAA,SAAAC,IAAA,GAAAC,SAAA,CAAAC,MAAA,EAAnBC,IAAI,OAAAC,KAAA,CAAAJ,IAAA,GAAAK,IAAA,MAAAA,IAAA,GAAAL,IAAA,EAAAK,IAAA;MAAJF,IAAI,CAAAE,IAAA,IAAAJ,SAAA,CAAAI,IAAA;IAAA;IAClB,IAAI,CAACC,GAAG,CAACT,QAAQ,CAACU,KAAK,EAAE,GAAGJ,IAAI,CAAC;EACnC;EAEA,OAAOK,IAAIA,CAAA,EAAuB;IAAA,SAAAC,KAAA,GAAAR,SAAA,CAAAC,MAAA,EAAnBC,IAAI,OAAAC,KAAA,CAAAK,KAAA,GAAAC,KAAA,MAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA;MAAJP,IAAI,CAAAO,KAAA,IAAAT,SAAA,CAAAS,KAAA;IAAA;IACjB,IAAI,CAACJ,GAAG,CAACT,QAAQ,CAACc,IAAI,EAAE,GAAGR,IAAI,CAAC;EAClC;EAEA,OAAOS,IAAIA,CAAA,EAAuB;IAAA,SAAAC,KAAA,GAAAZ,SAAA,CAAAC,MAAA,EAAnBC,IAAI,OAAAC,KAAA,CAAAS,KAAA,GAAAC,KAAA,MAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA;MAAJX,IAAI,CAAAW,KAAA,IAAAb,SAAA,CAAAa,KAAA;IAAA;IACjB,IAAI,CAACR,GAAG,CAACT,QAAQ,CAACkB,IAAI,EAAE,GAAGZ,IAAI,CAAC;EAClC;EAEA,OAAOa,KAAKA,CAAA,EAAuB;IAAA,SAAAC,KAAA,GAAAhB,SAAA,CAAAC,MAAA,EAAnBC,IAAI,OAAAC,KAAA,CAAAa,KAAA,GAAAC,KAAA,MAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA;MAAJf,IAAI,CAAAe,KAAA,IAAAjB,SAAA,CAAAiB,KAAA;IAAA;IAClB,IAAI,CAACZ,GAAG,CAACT,QAAQ,CAACsB,KAAK,EAAE,GAAGhB,IAAI,CAAC;EACnC;EAEA,OAAOG,GAAGA,CAACc,KAAe,EAAwB;IAChD,IAAI,IAAI,CAACC,QAAQ,GAAGD,KAAK,EAAE;MACzB;IACF;IAAC,SAAAE,KAAA,GAAArB,SAAA,CAAAC,MAAA,EAH4BC,IAAI,OAAAC,KAAA,CAAAkB,KAAA,OAAAA,KAAA,WAAAC,KAAA,MAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA;MAAJpB,IAAI,CAAAoB,KAAA,QAAAtB,SAAA,CAAAsB,KAAA;IAAA;IAKjC,QAAQH,KAAK;MACX,KAAKvB,QAAQ,CAACU,KAAK;QAAE;UACnBiB,OAAO,CAACzB,KAAK,CAAC,GAAGI,IAAI,CAAC;UACtB;QACF;MACA,KAAKN,QAAQ,CAACc,IAAI;QAAE;UAClBa,OAAO,CAAChB,IAAI,CAAC,GAAGL,IAAI,CAAC;UACrB;QACF;MACA,KAAKN,QAAQ,CAACkB,IAAI;QAAE;UAClBS,OAAO,CAACZ,IAAI,CAAC,GAAGT,IAAI,CAAC;UACrB;QACF;MACA,KAAKN,QAAQ,CAACsB,KAAK;QAAE;UACnBK,OAAO,CAACR,KAAK,CAAC,GAAGb,IAAI,CAAC;UACtB;QACF;IACF;EACF;AACF;AA3CqBL,MAAM,CAClBuB,QAAQ,GAAaxB,QAAQ,CAACkB,IAAI"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
export declare const NODE_ITEM_BYTE_LEN: number;
|
|
2
|
+
/**
|
|
3
|
+
* @deprecated Use `NODE_ITEM_BYTE_LEN` instead.
|
|
4
|
+
*/
|
|
5
|
+
export declare const NODE_ITEM_LEN: number;
|
|
6
|
+
export declare const DEFAULT_NODE_SIZE = 16;
|
|
7
|
+
export interface Rect {
|
|
8
|
+
minX: number;
|
|
9
|
+
minY: number;
|
|
10
|
+
maxX: number;
|
|
11
|
+
maxY: number;
|
|
12
|
+
}
|
|
13
|
+
export declare function calcTreeSize(numItems: number, nodeSize: number): number;
|
|
14
|
+
/**
|
|
15
|
+
* returns [levelOffset, numNodes] for each level
|
|
16
|
+
*/
|
|
17
|
+
export declare function generateLevelBounds(numItems: number, nodeSize: number): Array<[number, number]>;
|
|
18
|
+
type ReadNodeFn = (treeOffset: number, size: number) => Promise<ArrayBuffer>;
|
|
19
|
+
/**
|
|
20
|
+
* A feature found to be within the bounding box `rect`
|
|
21
|
+
*
|
|
22
|
+
* (offset, index)
|
|
23
|
+
* `offset`: Byte offset in feature data section
|
|
24
|
+
* `index`: feature number
|
|
25
|
+
* `featureLength`: featureLength, except for the last element
|
|
26
|
+
*/
|
|
27
|
+
export type SearchResult = [number, number, number | null];
|
|
28
|
+
/**
|
|
29
|
+
* Yield's a `SearchResult` for each feature within the bounds of `rect`.
|
|
30
|
+
*
|
|
31
|
+
* Every node in the FGB index tree has a bounding rect, all of the nodes children
|
|
32
|
+
* are contained within that bounding rect. The leaf nodes of the tree represent
|
|
33
|
+
* the features of the collection.
|
|
34
|
+
*
|
|
35
|
+
* As we traverse the tree, starting from the root, we'll need to read more data
|
|
36
|
+
* from the index. When we don't already have this range data buffered locally,
|
|
37
|
+
* an HTTP fetch is triggered. For performance, we merge adjacent and nearby
|
|
38
|
+
* request ranges into a single request, reasoning that fetching a few extra
|
|
39
|
+
* bytes is a good tradeoff if it means we can reduce the number of requests.
|
|
40
|
+
*/
|
|
41
|
+
export declare function streamSearch(numItems: number, nodeSize: number, rect: Rect, readNode: ReadNodeFn): AsyncGenerator<SearchResult, void, unknown>;
|
|
42
|
+
export {};
|
|
43
|
+
//# sourceMappingURL=packedrtree.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"packedrtree.d.ts","sourceRoot":"","sources":["../../../src/flatgeobuf/3.27.2/packedrtree.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,kBAAkB,EAAE,MAAkB,CAAC;AACpD;;GAEG;AACH,eAAO,MAAM,aAAa,QAAqB,CAAC;AAOhD,eAAO,MAAM,iBAAiB,KAAK,CAAC;AAEpC,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CASvE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAyB/F;AAED,KAAK,UAAU,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;AAE7E;;;;;;;GAOG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;AAE3D;;;;;;;;;;;;GAYG;AACH,wBAAuB,YAAY,CACjC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,UAAU,GACnB,cAAc,CAAC,YAAY,EAAE,IAAI,EAAE,OAAO,CAAC,CAgK7C"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import Config from './config.js';
|
|
2
|
+
import Logger from './logger.js';
|
|
3
|
+
export const NODE_ITEM_BYTE_LEN = 8 * 4 + 8;
|
|
4
|
+
export const NODE_ITEM_LEN = NODE_ITEM_BYTE_LEN;
|
|
5
|
+
export const DEFAULT_NODE_SIZE = 16;
|
|
6
|
+
export function calcTreeSize(numItems, nodeSize) {
|
|
7
|
+
nodeSize = Math.min(Math.max(Number(nodeSize), 2), 65535);
|
|
8
|
+
let n = numItems;
|
|
9
|
+
let numNodes = n;
|
|
10
|
+
do {
|
|
11
|
+
n = Math.ceil(n / nodeSize);
|
|
12
|
+
numNodes += n;
|
|
13
|
+
} while (n !== 1);
|
|
14
|
+
return numNodes * NODE_ITEM_BYTE_LEN;
|
|
15
|
+
}
|
|
16
|
+
export function generateLevelBounds(numItems, nodeSize) {
|
|
17
|
+
if (nodeSize < 2) throw new Error('Node size must be at least 2');
|
|
18
|
+
if (numItems === 0) throw new Error('Number of items must be greater than 0');
|
|
19
|
+
let n = numItems;
|
|
20
|
+
let numNodes = n;
|
|
21
|
+
const levelNumNodes = [n];
|
|
22
|
+
do {
|
|
23
|
+
n = Math.ceil(n / nodeSize);
|
|
24
|
+
numNodes += n;
|
|
25
|
+
levelNumNodes.push(n);
|
|
26
|
+
} while (n !== 1);
|
|
27
|
+
const levelOffsets = [];
|
|
28
|
+
n = numNodes;
|
|
29
|
+
for (const size of levelNumNodes) {
|
|
30
|
+
levelOffsets.push(n - size);
|
|
31
|
+
n -= size;
|
|
32
|
+
}
|
|
33
|
+
const levelBounds = [];
|
|
34
|
+
for (let i = 0; i < levelNumNodes.length; i++) levelBounds.push([levelOffsets[i], levelOffsets[i] + levelNumNodes[i]]);
|
|
35
|
+
return levelBounds;
|
|
36
|
+
}
|
|
37
|
+
export async function* streamSearch(numItems, nodeSize, rect, readNode) {
|
|
38
|
+
class NodeRange {
|
|
39
|
+
constructor(nodes, level) {
|
|
40
|
+
this._level = void 0;
|
|
41
|
+
this.nodes = void 0;
|
|
42
|
+
this._level = level;
|
|
43
|
+
this.nodes = nodes;
|
|
44
|
+
}
|
|
45
|
+
level() {
|
|
46
|
+
return this._level;
|
|
47
|
+
}
|
|
48
|
+
startNodeIdx() {
|
|
49
|
+
return this.nodes[0];
|
|
50
|
+
}
|
|
51
|
+
endNodeIdx() {
|
|
52
|
+
return this.nodes[1];
|
|
53
|
+
}
|
|
54
|
+
extendEndNodeIdx(newIdx) {
|
|
55
|
+
console.assert(newIdx > this.nodes[1]);
|
|
56
|
+
this.nodes[1] = newIdx;
|
|
57
|
+
}
|
|
58
|
+
toString() {
|
|
59
|
+
return `[NodeRange level: ${this._level}, nodes: ${this.nodes[0]}-${this.nodes[1]}]`;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
const {
|
|
63
|
+
minX,
|
|
64
|
+
minY,
|
|
65
|
+
maxX,
|
|
66
|
+
maxY
|
|
67
|
+
} = rect;
|
|
68
|
+
Logger.info(`tree items: ${numItems}, nodeSize: ${nodeSize}`);
|
|
69
|
+
const levelBounds = generateLevelBounds(numItems, nodeSize);
|
|
70
|
+
const firstLeafNodeIdx = levelBounds[0][0];
|
|
71
|
+
const rootNodeRange = (() => {
|
|
72
|
+
const range = [0, 1];
|
|
73
|
+
const level = levelBounds.length - 1;
|
|
74
|
+
return new NodeRange(range, level);
|
|
75
|
+
})();
|
|
76
|
+
const queue = [rootNodeRange];
|
|
77
|
+
Logger.debug(`starting stream search with queue: ${queue}, numItems: ${numItems}, nodeSize: ${nodeSize}, levelBounds: ${levelBounds}`);
|
|
78
|
+
while (queue.length != 0) {
|
|
79
|
+
const nodeRange = queue.shift();
|
|
80
|
+
Logger.debug(`popped node: ${nodeRange}, queueLength: ${queue.length}`);
|
|
81
|
+
const nodeRangeStartIdx = nodeRange.startNodeIdx();
|
|
82
|
+
const isLeafNode = nodeRangeStartIdx >= firstLeafNodeIdx;
|
|
83
|
+
const nodeRangeEndIdx = (() => {
|
|
84
|
+
const [, levelBound] = levelBounds[nodeRange.level()];
|
|
85
|
+
const nodeIdx = Math.min(nodeRange.endNodeIdx() + nodeSize, levelBound);
|
|
86
|
+
if (isLeafNode && nodeIdx < levelBound) {
|
|
87
|
+
return nodeIdx + 1;
|
|
88
|
+
}
|
|
89
|
+
return nodeIdx;
|
|
90
|
+
})();
|
|
91
|
+
const numNodesInRange = nodeRangeEndIdx - nodeRangeStartIdx;
|
|
92
|
+
const buffer = await readNode(nodeRangeStartIdx * NODE_ITEM_BYTE_LEN, numNodesInRange * NODE_ITEM_BYTE_LEN);
|
|
93
|
+
const dataView = new DataView(buffer);
|
|
94
|
+
for (let nodeIdx = nodeRangeStartIdx; nodeIdx < nodeRangeEndIdx; nodeIdx++) {
|
|
95
|
+
const nodeIdxInDataView = nodeIdx - nodeRangeStartIdx;
|
|
96
|
+
const dataViewByteStart = nodeIdxInDataView * NODE_ITEM_BYTE_LEN;
|
|
97
|
+
if (maxX < dataView.getFloat64(dataViewByteStart + 0, true)) continue;
|
|
98
|
+
if (maxY < dataView.getFloat64(dataViewByteStart + 8, true)) continue;
|
|
99
|
+
if (minX > dataView.getFloat64(dataViewByteStart + 16, true)) continue;
|
|
100
|
+
if (minY > dataView.getFloat64(dataViewByteStart + 24, true)) continue;
|
|
101
|
+
const offset = dataView.getBigUint64(dataViewByteStart + 32, true);
|
|
102
|
+
if (isLeafNode) {
|
|
103
|
+
const featureByteOffset = offset;
|
|
104
|
+
const featureLength = (() => {
|
|
105
|
+
if (nodeIdx < numItems - 1) {
|
|
106
|
+
const nextPos = (nodeIdxInDataView + 1) * NODE_ITEM_BYTE_LEN;
|
|
107
|
+
const nextOffset = dataView.getBigUint64(nextPos + 32, true);
|
|
108
|
+
return nextOffset - featureByteOffset;
|
|
109
|
+
}
|
|
110
|
+
return null;
|
|
111
|
+
})();
|
|
112
|
+
const featureIdx = nodeIdx - firstLeafNodeIdx;
|
|
113
|
+
yield [Number(featureByteOffset), featureIdx, Number(featureLength)];
|
|
114
|
+
continue;
|
|
115
|
+
}
|
|
116
|
+
const firstChildNodeIdx = offset;
|
|
117
|
+
const extraRequestThresholdNodes = Config.global.extraRequestThreshold() / NODE_ITEM_BYTE_LEN;
|
|
118
|
+
const nearestNodeRange = queue[queue.length - 1];
|
|
119
|
+
if (nearestNodeRange !== undefined && nearestNodeRange.level() == nodeRange.level() - 1 && firstChildNodeIdx < nearestNodeRange.endNodeIdx() + extraRequestThresholdNodes) {
|
|
120
|
+
Logger.debug(`Merging "nodeRange" request into existing range: ${nearestNodeRange}, newEndNodeIdx: ${nearestNodeRange.endNodeIdx()} -> ${firstChildNodeIdx}`);
|
|
121
|
+
nearestNodeRange.extendEndNodeIdx(Number(firstChildNodeIdx));
|
|
122
|
+
continue;
|
|
123
|
+
}
|
|
124
|
+
const newNodeRange = (() => {
|
|
125
|
+
const level = nodeRange.level() - 1;
|
|
126
|
+
const range = [Number(firstChildNodeIdx), Number(firstChildNodeIdx) + 1];
|
|
127
|
+
return new NodeRange(range, level);
|
|
128
|
+
})();
|
|
129
|
+
if (nearestNodeRange !== undefined && nearestNodeRange.level() == newNodeRange.level()) {
|
|
130
|
+
Logger.info(`Same level, but too far away. Pushing new request for nodeIdx: ${firstChildNodeIdx} rather than merging with distant ${nearestNodeRange}`);
|
|
131
|
+
} else {
|
|
132
|
+
Logger.info(`Pushing new level for ${newNodeRange} onto queue with nearestNodeRange: ${nearestNodeRange} since there's not already a range for this level.`);
|
|
133
|
+
}
|
|
134
|
+
queue.push(newNodeRange);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=packedrtree.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"packedrtree.js","names":["Config","Logger","NODE_ITEM_BYTE_LEN","NODE_ITEM_LEN","DEFAULT_NODE_SIZE","calcTreeSize","numItems","nodeSize","Math","min","max","Number","n","numNodes","ceil","generateLevelBounds","Error","levelNumNodes","push","levelOffsets","size","levelBounds","i","length","streamSearch","rect","readNode","NodeRange","constructor","nodes","level","_level","startNodeIdx","endNodeIdx","extendEndNodeIdx","newIdx","console","assert","toString","minX","minY","maxX","maxY","info","firstLeafNodeIdx","rootNodeRange","range","queue","debug","nodeRange","shift","nodeRangeStartIdx","isLeafNode","nodeRangeEndIdx","levelBound","nodeIdx","numNodesInRange","buffer","dataView","DataView","nodeIdxInDataView","dataViewByteStart","getFloat64","offset","getBigUint64","featureByteOffset","featureLength","nextPos","nextOffset","featureIdx","firstChildNodeIdx","extraRequestThresholdNodes","global","extraRequestThreshold","nearestNodeRange","undefined","newNodeRange"],"sources":["../../../src/flatgeobuf/3.27.2/packedrtree.ts"],"sourcesContent":["import Config from './config.js';\nimport Logger from './logger.js';\n\nexport const NODE_ITEM_BYTE_LEN: number = 8 * 4 + 8;\n/**\n * @deprecated Use `NODE_ITEM_BYTE_LEN` instead.\n */\nexport const NODE_ITEM_LEN = NODE_ITEM_BYTE_LEN;\n\n// default branching factor of a node in the rtree\n//\n// actual value will be specified in the header but\n// this can be useful for having reasonably sized guesses for fetch-sizes when\n// streaming results\nexport const DEFAULT_NODE_SIZE = 16;\n\nexport interface Rect {\n minX: number;\n minY: number;\n maxX: number;\n maxY: number;\n}\n\nexport function calcTreeSize(numItems: number, nodeSize: number): number {\n nodeSize = Math.min(Math.max(Number(nodeSize), 2), 65535);\n let n = numItems;\n let numNodes = n;\n do {\n n = Math.ceil(n / nodeSize);\n numNodes += n;\n } while (n !== 1);\n return numNodes * NODE_ITEM_BYTE_LEN;\n}\n\n/**\n * returns [levelOffset, numNodes] for each level\n */\nexport function generateLevelBounds(numItems: number, nodeSize: number): Array<[number, number]> {\n if (nodeSize < 2) throw new Error('Node size must be at least 2');\n if (numItems === 0) throw new Error('Number of items must be greater than 0');\n\n // number of nodes per level in bottom-up order\n let n = numItems;\n let numNodes = n;\n const levelNumNodes = [n];\n do {\n n = Math.ceil(n / nodeSize);\n numNodes += n;\n levelNumNodes.push(n);\n } while (n !== 1);\n\n // bounds per level in reversed storage order (top-down)\n const levelOffsets: Array<number> = [];\n n = numNodes;\n for (const size of levelNumNodes) {\n levelOffsets.push(n - size);\n n -= size;\n }\n const levelBounds: Array<[number, number]> = [];\n for (let i = 0; i < levelNumNodes.length; i++)\n levelBounds.push([levelOffsets[i], levelOffsets[i] + levelNumNodes[i]]);\n return levelBounds;\n}\n\ntype ReadNodeFn = (treeOffset: number, size: number) => Promise<ArrayBuffer>;\n\n/**\n * A feature found to be within the bounding box `rect`\n *\n * (offset, index)\n * `offset`: Byte offset in feature data section\n * `index`: feature number\n * `featureLength`: featureLength, except for the last element\n */\nexport type SearchResult = [number, number, number | null];\n\n/**\n * Yield's a `SearchResult` for each feature within the bounds of `rect`.\n *\n * Every node in the FGB index tree has a bounding rect, all of the nodes children\n * are contained within that bounding rect. The leaf nodes of the tree represent\n * the features of the collection.\n *\n * As we traverse the tree, starting from the root, we'll need to read more data\n * from the index. When we don't already have this range data buffered locally,\n * an HTTP fetch is triggered. For performance, we merge adjacent and nearby\n * request ranges into a single request, reasoning that fetching a few extra\n * bytes is a good tradeoff if it means we can reduce the number of requests.\n */\nexport async function* streamSearch(\n numItems: number,\n nodeSize: number,\n rect: Rect,\n readNode: ReadNodeFn\n): AsyncGenerator<SearchResult, void, unknown> {\n type NodeIdx = number;\n class NodeRange {\n _level: number;\n nodes: [NodeIdx, NodeIdx];\n constructor(nodes: [NodeIdx, NodeIdx], level: number) {\n this._level = level;\n this.nodes = nodes;\n }\n\n level(): number {\n return this._level;\n }\n\n startNodeIdx(): NodeIdx {\n return this.nodes[0];\n }\n\n endNodeIdx(): NodeIdx {\n return this.nodes[1];\n }\n\n extendEndNodeIdx(newIdx: number) {\n console.assert(newIdx > this.nodes[1]);\n this.nodes[1] = newIdx;\n }\n\n toString(): string {\n return `[NodeRange level: ${this._level}, nodes: ${this.nodes[0]}-${this.nodes[1]}]`;\n }\n }\n\n const {minX, minY, maxX, maxY} = rect;\n Logger.info(`tree items: ${numItems}, nodeSize: ${nodeSize}`);\n const levelBounds = generateLevelBounds(numItems, nodeSize);\n const firstLeafNodeIdx = levelBounds[0][0];\n\n const rootNodeRange: NodeRange = (() => {\n const range: [number, number] = [0, 1];\n const level = levelBounds.length - 1;\n return new NodeRange(range, level);\n })();\n\n const queue: Array<NodeRange> = [rootNodeRange];\n\n Logger.debug(\n `starting stream search with queue: ${queue}, numItems: ${numItems}, nodeSize: ${nodeSize}, levelBounds: ${levelBounds}`\n );\n\n while (queue.length != 0) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const nodeRange = queue.shift()!;\n\n Logger.debug(`popped node: ${nodeRange}, queueLength: ${queue.length}`);\n\n const nodeRangeStartIdx = nodeRange.startNodeIdx();\n const isLeafNode = nodeRangeStartIdx >= firstLeafNodeIdx;\n\n // find the end index of the node\n const nodeRangeEndIdx = (() => {\n const [, levelBound] = levelBounds[nodeRange.level()];\n const nodeIdx = Math.min(nodeRange.endNodeIdx() + nodeSize, levelBound);\n\n if (isLeafNode && nodeIdx < levelBound) {\n // We can infer the length of *this* feature by getting the start of the *next*\n // feature, so we get an extra node.\n // This approach doesn't work for the final node in the index,\n // but in that case we know that the feature runs to the end of the FGB file and\n // could make an open ended range request to get \"the rest of the data\".\n return nodeIdx + 1;\n }\n return nodeIdx;\n })();\n\n const numNodesInRange = nodeRangeEndIdx - nodeRangeStartIdx;\n\n const buffer = await readNode(\n nodeRangeStartIdx * NODE_ITEM_BYTE_LEN,\n numNodesInRange * NODE_ITEM_BYTE_LEN\n );\n\n const dataView = new DataView(buffer);\n for (let nodeIdx = nodeRangeStartIdx; nodeIdx < nodeRangeEndIdx; nodeIdx++) {\n const nodeIdxInDataView = nodeIdx - nodeRangeStartIdx;\n const dataViewByteStart = nodeIdxInDataView * NODE_ITEM_BYTE_LEN;\n if (maxX < dataView.getFloat64(dataViewByteStart + 0, true)) continue; // maxX < nodeMinX\n if (maxY < dataView.getFloat64(dataViewByteStart + 8, true)) continue; // maxY < nodeMinY\n if (minX > dataView.getFloat64(dataViewByteStart + 16, true)) continue; // minX > nodeMaxX\n if (minY > dataView.getFloat64(dataViewByteStart + 24, true)) continue; // minY > nodeMaxY\n\n // `offset` is:\n // For leaf nodes: the byte-offset into the feature buffer.\n // For inner nodes: the node-idx of its first child.\n const offset = dataView.getBigUint64(dataViewByteStart + 32, true);\n\n if (isLeafNode) {\n const featureByteOffset = offset;\n const featureLength = (() => {\n if (nodeIdx < numItems - 1) {\n // Since features are tightly packed, we infer the\n // length of _this_ feature by measuring to the _next_\n // feature's start.\n const nextPos = (nodeIdxInDataView + 1) * NODE_ITEM_BYTE_LEN;\n // console.debug(`nodeIdx: ${nodeIdx} of ${numItems}, nodeRangeStartIdx: ${nodeRangeStartIdx}, nextPos: ${nextPos}, dataView.byteLength: ${dataView.byteLength}`,);\n const nextOffset = dataView.getBigUint64(nextPos + 32, true);\n return nextOffset - featureByteOffset;\n }\n // This is the last feature - there's no \"next\" feature\n // to measure to, so we can't know it's length.\n return null;\n })();\n\n // Logger.debug(`featureByteOffset: ${featureByteOffset}, nodeIdx: ${nodeIdx}, featureLength: ${featureLength}`);\n const featureIdx = nodeIdx - firstLeafNodeIdx;\n yield [Number(featureByteOffset), featureIdx, Number(featureLength)];\n continue;\n }\n\n const firstChildNodeIdx = offset;\n\n // request up to this many nodes if it means we can eliminate an\n // extra request\n const extraRequestThresholdNodes = Config.global.extraRequestThreshold() / NODE_ITEM_BYTE_LEN;\n\n // Since we're traversing the tree by monotonically increasing byte\n // offset, the most recently enqueued node range will be the\n // nearest, and thus presents the best candidate for merging.\n const nearestNodeRange = queue[queue.length - 1];\n if (\n nearestNodeRange !== undefined &&\n nearestNodeRange.level() == nodeRange.level() - 1 &&\n firstChildNodeIdx < nearestNodeRange.endNodeIdx() + extraRequestThresholdNodes\n ) {\n Logger.debug(\n `Merging \"nodeRange\" request into existing range: ${nearestNodeRange}, newEndNodeIdx: ${nearestNodeRange.endNodeIdx()} -> ${firstChildNodeIdx}`\n );\n nearestNodeRange.extendEndNodeIdx(Number(firstChildNodeIdx));\n continue;\n }\n\n const newNodeRange: NodeRange = (() => {\n const level = nodeRange.level() - 1;\n const range: [number, number] = [Number(firstChildNodeIdx), Number(firstChildNodeIdx) + 1];\n return new NodeRange(range, level);\n })();\n\n // We're going to add a new node range - log the reason\n if (nearestNodeRange !== undefined && nearestNodeRange.level() == newNodeRange.level()) {\n Logger.info(\n `Same level, but too far away. Pushing new request for nodeIdx: ${firstChildNodeIdx} rather than merging with distant ${nearestNodeRange}`\n );\n } else {\n Logger.info(\n `Pushing new level for ${newNodeRange} onto queue with nearestNodeRange: ${nearestNodeRange} since there's not already a range for this level.`\n );\n }\n\n queue.push(newNodeRange);\n }\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { ReadableStream } from 'web-streams-polyfill';
|
|
3
|
+
import { Readable } from 'stream';
|
|
4
|
+
export declare function arrayToStream(array: ArrayBuffer): ReadableStream;
|
|
5
|
+
export declare function takeAsync(asyncIterable: AsyncIterable<any>, count?: number): Promise<any[]>;
|
|
6
|
+
export declare function nodeToWeb(nodeStream: Readable): ReadableStream;
|
|
7
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/flatgeobuf/3.27.2/streams/utils.ts"],"names":[],"mappings":";AAAA,OAAO,EAAC,cAAc,EAAC,MAAM,sBAAsB,CAAC;AAEpD,OAAO,EAAC,QAAQ,EAAC,MAAM,QAAQ,CAAC;AAEhC,wBAAgB,aAAa,CAAC,KAAK,EAAE,WAAW,GAAG,cAAc,CAYhE;AAED,wBAAsB,SAAS,CAC7B,aAAa,EAAE,aAAa,CAAC,GAAG,CAAC,EACjC,KAAK,SAAW,GACf,OAAO,CAAC,GAAG,EAAE,CAAC,CAShB;AAED,wBAAgB,SAAS,CAAC,UAAU,EAAE,QAAQ,GAAG,cAAc,CA+C9D"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { ReadableStream } from 'web-streams-polyfill';
|
|
2
|
+
import { ReadableStreamBuffer } from 'stream-buffers';
|
|
3
|
+
export function arrayToStream(array) {
|
|
4
|
+
const myReadableStreamBuffer = new ReadableStreamBuffer({
|
|
5
|
+
frequency: 10,
|
|
6
|
+
chunkSize: 2048
|
|
7
|
+
});
|
|
8
|
+
myReadableStreamBuffer.put(Buffer.from(array));
|
|
9
|
+
myReadableStreamBuffer.stop();
|
|
10
|
+
const webReader = nodeToWeb(myReadableStreamBuffer);
|
|
11
|
+
return webReader;
|
|
12
|
+
}
|
|
13
|
+
export async function takeAsync(asyncIterable) {
|
|
14
|
+
let count = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Infinity;
|
|
15
|
+
const result = [];
|
|
16
|
+
const iterator = asyncIterable[Symbol.asyncIterator]();
|
|
17
|
+
while (result.length < count) {
|
|
18
|
+
const {
|
|
19
|
+
value,
|
|
20
|
+
done
|
|
21
|
+
} = await iterator.next();
|
|
22
|
+
if (done) break;
|
|
23
|
+
result.push(value);
|
|
24
|
+
}
|
|
25
|
+
return result;
|
|
26
|
+
}
|
|
27
|
+
export function nodeToWeb(nodeStream) {
|
|
28
|
+
let destroyed = false;
|
|
29
|
+
const listeners = {};
|
|
30
|
+
function start(controller) {
|
|
31
|
+
listeners.data = onData;
|
|
32
|
+
listeners.end = onData;
|
|
33
|
+
listeners.end = onDestroy;
|
|
34
|
+
listeners.close = onDestroy;
|
|
35
|
+
listeners.error = onDestroy;
|
|
36
|
+
for (const name in listeners) nodeStream.on(name, listeners[name]);
|
|
37
|
+
nodeStream.pause();
|
|
38
|
+
function onData(chunk) {
|
|
39
|
+
if (destroyed) return;
|
|
40
|
+
controller.enqueue(chunk);
|
|
41
|
+
nodeStream.pause();
|
|
42
|
+
}
|
|
43
|
+
function onDestroy(err) {
|
|
44
|
+
if (destroyed) return;
|
|
45
|
+
destroyed = true;
|
|
46
|
+
for (const name in listeners) nodeStream.removeListener(name, listeners[name]);
|
|
47
|
+
if (err) controller.error(err);else controller.close();
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
function pull() {
|
|
51
|
+
if (destroyed) return;
|
|
52
|
+
nodeStream.resume();
|
|
53
|
+
}
|
|
54
|
+
function cancel() {
|
|
55
|
+
destroyed = true;
|
|
56
|
+
for (const name in listeners) nodeStream.removeListener(name, listeners[name]);
|
|
57
|
+
nodeStream.push(null);
|
|
58
|
+
nodeStream.pause();
|
|
59
|
+
nodeStream.destroy();
|
|
60
|
+
}
|
|
61
|
+
return new ReadableStream({
|
|
62
|
+
start,
|
|
63
|
+
pull,
|
|
64
|
+
cancel
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","names":["ReadableStream","ReadableStreamBuffer","arrayToStream","array","myReadableStreamBuffer","frequency","chunkSize","put","Buffer","from","stop","webReader","nodeToWeb","takeAsync","asyncIterable","count","arguments","length","undefined","Infinity","result","iterator","Symbol","asyncIterator","value","done","next","push","nodeStream","destroyed","listeners","start","controller","data","onData","end","onDestroy","close","error","name","on","pause","chunk","enqueue","err","removeListener","pull","resume","cancel","destroy"],"sources":["../../../../src/flatgeobuf/3.27.2/streams/utils.ts"],"sourcesContent":["import {ReadableStream} from 'web-streams-polyfill';\nimport {ReadableStreamBuffer} from 'stream-buffers';\nimport {Readable} from 'stream';\n\nexport function arrayToStream(array: ArrayBuffer): ReadableStream {\n const myReadableStreamBuffer = new ReadableStreamBuffer({\n frequency: 10, // in milliseconds.\n chunkSize: 2048 // in bytes.\n });\n\n myReadableStreamBuffer.put(Buffer.from(array));\n myReadableStreamBuffer.stop();\n\n const webReader = nodeToWeb(myReadableStreamBuffer as any);\n\n return webReader;\n}\n\nexport async function takeAsync(\n asyncIterable: AsyncIterable<any>,\n count = Infinity\n): Promise<any[]> {\n const result: any[] = [];\n const iterator = asyncIterable[Symbol.asyncIterator]();\n while (result.length < count) {\n const {value, done} = await iterator.next();\n if (done) break;\n result.push(value);\n }\n return result;\n}\n\nexport function nodeToWeb(nodeStream: Readable): ReadableStream {\n let destroyed = false;\n const listeners: any = {};\n\n function start(controller: ReadableStreamDefaultController) {\n listeners.data = onData;\n listeners.end = onData;\n listeners.end = onDestroy;\n listeners.close = onDestroy;\n listeners.error = onDestroy;\n for (const name in listeners) nodeStream.on(name, listeners[name]);\n\n nodeStream.pause();\n\n function onData(chunk: Buffer) {\n if (destroyed) return;\n controller.enqueue(chunk);\n nodeStream.pause();\n }\n\n function onDestroy(err: Error) {\n if (destroyed) return;\n destroyed = true;\n\n for (const name in listeners) nodeStream.removeListener(name, listeners[name]);\n\n if (err) controller.error(err);\n else controller.close();\n }\n }\n\n function pull() {\n if (destroyed) return;\n nodeStream.resume();\n }\n\n function cancel() {\n destroyed = true;\n\n for (const name in listeners) nodeStream.removeListener(name, listeners[name]);\n\n nodeStream.push(null);\n nodeStream.pause();\n nodeStream.destroy();\n }\n\n return new ReadableStream({start, pull, cancel});\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
declare module 'jsts/org/locationtech/jts/io/GeoJSONWriter.js' {
|
|
2
|
+
export default class GeoJSONWriter {
|
|
3
|
+
write(geometry: any): any;
|
|
4
|
+
}
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
declare module 'jsts/org/locationtech/jts/io/WKTReader.js' {
|
|
8
|
+
export default class WKTReader {
|
|
9
|
+
read(): any;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
declare module 'jsts/org/locationtech/jts/geom/Envelope.js' {
|
|
14
|
+
export default class Envelope {
|
|
15
|
+
constructor(minx: number, maxx: number, miny: number, maxy: number);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
declare module 'jsts/org/locationtech/jts/geom/GeometryFactory.js' {
|
|
20
|
+
export default class GeometryFactory {
|
|
21
|
+
toGeometry(e: any): any;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
declare module 'slice-source' {
|
|
2
|
+
function slice(source: ReadableStream | SliceSource): SliceSource;
|
|
3
|
+
|
|
4
|
+
interface SliceChunk {
|
|
5
|
+
value: Uint8Array;
|
|
6
|
+
done: boolean;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
interface SliceSource {
|
|
10
|
+
slice(length: number): Promise<Uint8Array>;
|
|
11
|
+
read(): Promise<SliceChunk>;
|
|
12
|
+
cancel(): Promise<void>;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export = slice;
|
|
16
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { parseFlatGeobuf, parseFlatGeobufInBatches } from "./lib/parse-flatgeobuf.js";
|
|
2
|
-
const VERSION = typeof "4.1.0-alpha.
|
|
2
|
+
const VERSION = typeof "4.1.0-alpha.7" !== 'undefined' ? "4.1.0-alpha.7" : 'latest';
|
|
3
3
|
const FGB_MAGIC_NUMBER = [0x66, 0x67, 0x62, 0x03, 0x66, 0x67, 0x62, 0x01];
|
|
4
4
|
export const FlatGeobufWorkerLoader = {
|
|
5
5
|
id: 'flatgeobuf',
|