@osmix/core 0.2.0 → 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.
Files changed (87) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/README.md +54 -7
  3. package/dist/contracts.d.ts +2 -1
  4. package/dist/contracts.d.ts.map +1 -1
  5. package/dist/entities.d.ts +21 -1
  6. package/dist/entities.d.ts.map +1 -1
  7. package/dist/entities.js +52 -3
  8. package/dist/entities.js.map +1 -1
  9. package/dist/ids.d.ts +18 -5
  10. package/dist/ids.d.ts.map +1 -1
  11. package/dist/ids.js +68 -18
  12. package/dist/ids.js.map +1 -1
  13. package/dist/index.d.ts +6 -3
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +6 -3
  16. package/dist/index.js.map +1 -1
  17. package/dist/indirect-kd-index.d.ts +28 -0
  18. package/dist/indirect-kd-index.d.ts.map +1 -0
  19. package/dist/indirect-kd-index.js +163 -0
  20. package/dist/indirect-kd-index.js.map +1 -0
  21. package/dist/limits.d.ts +30 -0
  22. package/dist/limits.d.ts.map +1 -0
  23. package/dist/limits.js +51 -0
  24. package/dist/limits.js.map +1 -0
  25. package/dist/nodes.d.ts +28 -13
  26. package/dist/nodes.d.ts.map +1 -1
  27. package/dist/nodes.js +181 -51
  28. package/dist/nodes.js.map +1 -1
  29. package/dist/osm.d.ts +59 -3
  30. package/dist/osm.d.ts.map +1 -1
  31. package/dist/osm.js +31 -2
  32. package/dist/osm.js.map +1 -1
  33. package/dist/relations.d.ts +10 -4
  34. package/dist/relations.d.ts.map +1 -1
  35. package/dist/relations.js +66 -28
  36. package/dist/relations.js.map +1 -1
  37. package/dist/renumber.d.ts +23 -0
  38. package/dist/renumber.d.ts.map +1 -0
  39. package/dist/renumber.js +64 -0
  40. package/dist/renumber.js.map +1 -0
  41. package/dist/stringtable.d.ts +2 -1
  42. package/dist/stringtable.d.ts.map +1 -1
  43. package/dist/stringtable.js +5 -1
  44. package/dist/stringtable.js.map +1 -1
  45. package/dist/tags.d.ts +44 -11
  46. package/dist/tags.d.ts.map +1 -1
  47. package/dist/tags.js +153 -27
  48. package/dist/tags.js.map +1 -1
  49. package/dist/typed-arrays.d.ts +63 -48
  50. package/dist/typed-arrays.d.ts.map +1 -1
  51. package/dist/typed-arrays.js +184 -107
  52. package/dist/typed-arrays.js.map +1 -1
  53. package/dist/ways.d.ts +50 -2
  54. package/dist/ways.d.ts.map +1 -1
  55. package/dist/ways.js +212 -35
  56. package/dist/ways.js.map +1 -1
  57. package/package.json +11 -12
  58. package/src/contracts.ts +2 -1
  59. package/src/entities.ts +67 -4
  60. package/src/ids.ts +72 -22
  61. package/src/index.ts +13 -7
  62. package/src/indirect-kd-index.ts +212 -0
  63. package/src/limits.ts +73 -0
  64. package/src/nodes.ts +228 -54
  65. package/src/osm.ts +90 -4
  66. package/src/relations.ts +80 -30
  67. package/src/renumber.ts +80 -0
  68. package/src/stringtable.ts +15 -1
  69. package/src/tags.ts +173 -31
  70. package/src/typed-arrays.ts +225 -113
  71. package/src/ways.ts +233 -38
  72. package/test/entity-index-errors.test.ts +41 -0
  73. package/test/ids.bench.ts +11 -7
  74. package/test/ids.test.ts +38 -0
  75. package/test/limits.test.ts +83 -0
  76. package/test/no-shared-array-buffer.test.ts +41 -0
  77. package/test/nodes-spatial-index.test.ts +261 -0
  78. package/test/osm-bbox.test.ts +30 -0
  79. package/test/relations.bench.ts +9 -4
  80. package/test/relations.test.ts +52 -29
  81. package/test/renumber.test.ts +54 -0
  82. package/test/spatial-index-rebuild.test.ts +33 -0
  83. package/test/storage-compaction.test.ts +269 -0
  84. package/test/tags-search.test.ts +13 -0
  85. package/test/typed-arrays.test.ts +178 -59
  86. package/src/types/geokdbush.d.ts +0 -32
  87. package/src/types/kdbush.d.ts +0 -47
package/dist/nodes.js CHANGED
@@ -1,11 +1,22 @@
1
- import { microToDegrees, toMicroDegrees } from "@osmix/geo/coordinates";
1
+ import { microToDegrees, OSM_COORD_SCALE, toMicroDegrees } from "@osmix/geo/coordinates";
2
2
  import { assertValue } from "@osmix/shared/assert";
3
- import { around as geoAround } from "geokdbush";
4
- import KDBush from "kdbush";
5
3
  import { Entities } from "./entities.js";
6
4
  import { Ids } from "./ids.js";
5
+ import { IndirectKdIndex } from "./indirect-kd-index.js";
7
6
  import { Tags } from "./tags.js";
8
- import { BufferConstructor, ResizeableTypedArray as RTA } from "./typed-arrays.js";
7
+ import { ResizeableTypedArray as RTA } from "./typed-arrays.js";
8
+ const EARTH_RADIUS_KM = 6371.0088;
9
+ const COORDINATE_PADDING_DEGREES = 1 / OSM_COORD_SCALE;
10
+ export class SpatialIndexNotBuiltError extends Error {
11
+ code = "SPATIAL_INDEX_NOT_BUILT";
12
+ entityType = "node";
13
+ indexKind;
14
+ constructor(indexKind) {
15
+ super(`The ${indexKind} node spatial index has not been built.`);
16
+ this.name = "SpatialIndexNotBuiltError";
17
+ this.indexKind = indexKind;
18
+ }
19
+ }
9
20
  export class Nodes extends Entities {
10
21
  /**
11
22
  * Coordinates are stored as integer microdegrees (Int32Array).
@@ -13,17 +24,15 @@ export class Nodes extends Entities {
13
24
  */
14
25
  lons;
15
26
  lats;
16
- // Bbox stored in microdegrees internally
27
+ // Bounding box is exposed and transferred in degrees.
17
28
  bbox = [
18
29
  Number.MAX_SAFE_INTEGER,
19
30
  Number.MAX_SAFE_INTEGER,
20
31
  Number.MIN_SAFE_INTEGER,
21
32
  Number.MIN_SAFE_INTEGER,
22
33
  ];
23
- // Spatial index stores coordinates in degrees (Float64Array) for geokdbush compatibility
24
- spatialIndex = new KDBush(0, 128, Float64Array, BufferConstructor);
25
- // Track if spatial index was properly built (vs default empty)
26
- spatialIndexBuilt = false;
34
+ allSpatialIndex;
35
+ taggedSpatialIndex;
27
36
  /**
28
37
  * Create a new Nodes index.
29
38
  */
@@ -32,10 +41,11 @@ export class Nodes extends Entities {
32
41
  super("node", new Ids(transferables), new Tags(stringTable, transferables));
33
42
  this.lons = RTA.from(Int32Array, transferables.lons);
34
43
  this.lats = RTA.from(Int32Array, transferables.lats);
35
- // Only load spatial index if provided (not stored in IndexedDB)
36
- if (transferables.spatialIndex?.byteLength) {
37
- this.spatialIndex = KDBush.from(transferables.spatialIndex);
38
- this.spatialIndexBuilt = true;
44
+ if (transferables.allSpatialIndex !== undefined) {
45
+ this.allSpatialIndex = IndirectKdIndex.from(this.lons.array, this.lats.array, transferables.allSpatialIndex);
46
+ }
47
+ if (transferables.taggedSpatialIndex !== undefined) {
48
+ this.taggedSpatialIndex = IndirectKdIndex.from(this.lons.array, this.lats.array, transferables.taggedSpatialIndex);
39
49
  }
40
50
  this.bbox = transferables.bbox;
41
51
  this.indexBuilt = true;
@@ -44,8 +54,6 @@ export class Nodes extends Entities {
44
54
  super("node", new Ids(), new Tags(stringTable));
45
55
  this.lons = new RTA(Int32Array);
46
56
  this.lats = new RTA(Int32Array);
47
- // Spatial index uses Float64Array with degrees for geokdbush compatibility
48
- this.spatialIndex = new KDBush(0, 128, Float64Array, BufferConstructor);
49
57
  }
50
58
  }
51
59
  /**
@@ -156,33 +164,50 @@ export class Nodes extends Entities {
156
164
  this.lats.compact();
157
165
  }
158
166
  /**
159
- * Build the spatial index for nodes.
160
- * Spatial index stores degrees (Float64Array) for geokdbush compatibility.
167
+ * Build one of the independent node spatial indexes.
161
168
  */
162
- buildSpatialIndex() {
163
- console.time("NodeIndex.buildSpatialIndex");
164
- // Use Float64Array with degrees for geokdbush geographic queries
165
- this.spatialIndex = new KDBush(this.size, 64, Float64Array, BufferConstructor);
166
- for (let i = 0; i < this.size; i++) {
167
- // Convert microdegrees to degrees for spatial index
168
- const lon = microToDegrees(this.lons.at(i));
169
- const lat = microToDegrees(this.lats.at(i));
170
- this.spatialIndex.add(lon, lat);
169
+ buildSpatialIndex(kind = "all") {
170
+ if (this.hasSpatialIndex(kind))
171
+ return;
172
+ console.time(`NodeIndex.buildSpatialIndex.${kind}`);
173
+ if (kind === "all") {
174
+ this.allSpatialIndex = IndirectKdIndex.build(this.lons.array, this.lats.array, this.size, (indexes) => {
175
+ for (let i = 0; i < indexes.length; i++)
176
+ indexes[i] = i;
177
+ });
178
+ }
179
+ else {
180
+ this.taggedSpatialIndex = IndirectKdIndex.build(this.lons.array, this.lats.array, this.taggedSize, (indexes) => {
181
+ let position = 0;
182
+ for (const entityIndex of this.tags.taggedEntityIndexes()) {
183
+ indexes[position++] = entityIndex;
184
+ }
185
+ if (position !== indexes.length) {
186
+ throw new Error(`Expected ${indexes.length} tagged nodes while building index, received ${position}`);
187
+ }
188
+ });
171
189
  }
172
- this.spatialIndex.finish();
173
- this.spatialIndexBuilt = true;
174
- console.timeEnd("NodeIndex.buildSpatialIndex");
190
+ console.timeEnd(`NodeIndex.buildSpatialIndex.${kind}`);
175
191
  }
176
192
  /**
177
193
  * Check if the spatial index has been built.
178
194
  */
179
- hasSpatialIndex() {
180
- return this.spatialIndexBuilt;
195
+ hasSpatialIndex(kind = "all") {
196
+ return kind === "all"
197
+ ? this.allSpatialIndex !== undefined
198
+ : this.taggedSpatialIndex !== undefined;
199
+ }
200
+ /** Number of nodes that carry at least one tag. */
201
+ get taggedSize() {
202
+ return this.tags.taggedEntityCount;
181
203
  }
182
204
  /**
183
- * Get the bounding box of all nodes.
205
+ * Get the bounding box of all nodes, or `null` when there are no nodes.
184
206
  */
185
207
  getBbox() {
208
+ // The bbox starts inverted and only becomes valid once a node extends it.
209
+ if (this.bbox[0] > this.bbox[2] || this.bbox[1] > this.bbox[3])
210
+ return null;
186
211
  return this.bbox;
187
212
  }
188
213
  /**
@@ -224,20 +249,42 @@ export class Nodes extends Entities {
224
249
  * Find node indexes within a bounding box.
225
250
  */
226
251
  findIndexesWithinBbox(bbox) {
227
- // Spatial index stores degrees, so query with degrees directly
228
- return this.spatialIndex.range(bbox[0], bbox[1], bbox[2], bbox[3]);
252
+ return findIndexesWithinBbox(this.getSpatialIndex("all"), bbox);
253
+ }
254
+ /** Find tagged node indexes within a bounding box. */
255
+ findTaggedIndexesWithinBbox(bbox) {
256
+ return findIndexesWithinBbox(this.getSpatialIndex("tagged"), bbox);
229
257
  }
230
258
  /**
231
259
  * Find node indexes within a radius of a point.
232
- * Uses geokdbush for proper great-circle distance calculations.
260
+ * Uses an exact haversine-distance filter over a conservative KD bbox query.
233
261
  * @param lon - Longitude in degrees.
234
262
  * @param lat - Latitude in degrees.
235
263
  * @param radiusKm - Radius in kilometers.
236
264
  * @returns Array of node indexes within the radius.
237
265
  */
238
266
  findIndexesWithinRadius(lon, lat, radiusKm) {
239
- // Use geokdbush for proper geographic distance calculations
240
- return geoAround(this.spatialIndex, lon, lat, Number.POSITIVE_INFINITY, radiusKm);
267
+ const spatialIndex = this.getSpatialIndex("all");
268
+ if (!Number.isFinite(lon) || !Number.isFinite(lat)) {
269
+ throw new RangeError("Longitude and latitude must be finite numbers");
270
+ }
271
+ if (lat < -90 || lat > 90)
272
+ throw new RangeError("Latitude must be between -90 and 90");
273
+ if (Number.isNaN(radiusKm) || radiusKm < 0)
274
+ return [];
275
+ const normalizedLon = normalizeLongitude(lon);
276
+ const bbox = radiusBoundingBox(normalizedLon, lat, radiusKm);
277
+ const candidates = findIndexesWithinBbox(spatialIndex, bbox);
278
+ const matches = [];
279
+ for (const index of candidates) {
280
+ const nodeLon = microToDegrees(this.lons.at(index));
281
+ const nodeLat = microToDegrees(this.lats.at(index));
282
+ const distance = haversineDistanceKm(normalizedLon, lat, nodeLon, nodeLat);
283
+ if (distance <= radiusKm)
284
+ matches.push({ distance, index });
285
+ }
286
+ matches.sort((a, b) => a.distance - b.distance || a.index - b.index);
287
+ return matches.map(({ index }) => index);
241
288
  }
242
289
  /**
243
290
  * Get nodes within a bounding box.
@@ -269,7 +316,7 @@ export class Nodes extends Entities {
269
316
  }
270
317
  /**
271
318
  * Get transferable objects for passing to another thread.
272
- * Only includes spatialIndex if it has been built.
319
+ * Only includes spatial indexes that have been built.
273
320
  */
274
321
  transferables() {
275
322
  const base = {
@@ -278,28 +325,28 @@ export class Nodes extends Entities {
278
325
  lats: this.lats.array.buffer,
279
326
  bbox: this.bbox,
280
327
  };
281
- // Only include spatial index if it was built
282
- if (this.spatialIndexBuilt) {
283
- return { ...base, spatialIndex: this.spatialIndex.data };
284
- }
285
- return base;
328
+ return {
329
+ ...base,
330
+ ...(this.allSpatialIndex ? { allSpatialIndex: this.allSpatialIndex.buffer } : {}),
331
+ ...(this.taggedSpatialIndex ? { taggedSpatialIndex: this.taggedSpatialIndex.buffer } : {}),
332
+ };
286
333
  }
287
334
  /**
288
335
  * Get the approximate memory requirements for a given number of nodes in bytes.
289
336
  */
290
- static getBytesRequired(count) {
337
+ static getBytesRequired(count, taggedCount = count, tagCount = 0) {
291
338
  if (count === 0)
292
339
  return 0;
293
- const indexBytes = (count < 65536 ? 2 : 4) * count;
294
- // Spatial index stores coordinates in degrees (Float64Array)
295
- const coordsBytes = count * 2 * Float64Array.BYTES_PER_ELEMENT;
296
- const padding = (8 - (indexBytes % 8)) % 8;
297
- const spatialIndexBytes = 8 + indexBytes + coordsBytes + padding;
298
340
  return (Ids.getBytesRequired(count) +
299
- Tags.getBytesRequired(count) +
341
+ Tags.getBytesRequired(count, taggedCount, tagCount) +
300
342
  count * Int32Array.BYTES_PER_ELEMENT + // lons (stored in microdegrees)
301
343
  count * Int32Array.BYTES_PER_ELEMENT + // lats (stored in microdegrees)
302
- spatialIndexBytes);
344
+ Nodes.getSpatialIndexBytesRequired(count) +
345
+ Nodes.getSpatialIndexBytesRequired(taggedCount));
346
+ }
347
+ /** Exact bytes in an indirect node spatial-index permutation. */
348
+ static getSpatialIndexBytesRequired(count) {
349
+ return count * Uint32Array.BYTES_PER_ELEMENT;
303
350
  }
304
351
  /**
305
352
  * Update a ContentHasher with node-specific data (coordinates).
@@ -307,5 +354,88 @@ export class Nodes extends Entities {
307
354
  updateHash(hasher) {
308
355
  return super.updateHash(hasher).update(this.lons.array).update(this.lats.array);
309
356
  }
357
+ getSpatialIndex(kind) {
358
+ const index = kind === "all" ? this.allSpatialIndex : this.taggedSpatialIndex;
359
+ if (!index)
360
+ throw new SpatialIndexNotBuiltError(kind);
361
+ return index;
362
+ }
363
+ }
364
+ /**
365
+ * Round-trip float error tolerance for degree → microdegree conversion.
366
+ * `microToDegrees(x) * OSM_COORD_SCALE` can differ from `x` by a few ulps
367
+ * (~1e-6 at ±1.8e9), so ceil/floor without a tolerance could exclude a node
368
+ * whose exact stored coordinate sits on the query boundary.
369
+ */
370
+ const MICRO_EPSILON = 1e-5;
371
+ /** Smallest microdegree integer inside an inclusive degree lower bound. */
372
+ function microLowerBound(degrees) {
373
+ return Math.ceil(degrees * OSM_COORD_SCALE - MICRO_EPSILON);
374
+ }
375
+ /** Largest microdegree integer inside an inclusive degree upper bound. */
376
+ function microUpperBound(degrees) {
377
+ return Math.floor(degrees * OSM_COORD_SCALE + MICRO_EPSILON);
378
+ }
379
+ function findIndexesWithinBbox(index, bbox) {
380
+ const [minLon, minLat, maxLon, maxLat] = bbox;
381
+ if (minLat > maxLat)
382
+ return [];
383
+ const microMinLat = microLowerBound(minLat);
384
+ const microMaxLat = microUpperBound(maxLat);
385
+ if (microMinLat > microMaxLat)
386
+ return [];
387
+ let result;
388
+ if (minLon <= maxLon) {
389
+ result = index.range(microLowerBound(minLon), microMinLat, microUpperBound(maxLon), microMaxLat);
390
+ }
391
+ else {
392
+ result = index
393
+ .range(microLowerBound(minLon), microMinLat, 180 * OSM_COORD_SCALE, microMaxLat)
394
+ .concat(index.range(-180 * OSM_COORD_SCALE, microMinLat, microUpperBound(maxLon), microMaxLat));
395
+ }
396
+ return result;
397
+ }
398
+ function radiusBoundingBox(lon, lat, radiusKm) {
399
+ if (!Number.isFinite(radiusKm))
400
+ return [-180, -90, 180, 90];
401
+ const angularRadius = radiusKm / EARTH_RADIUS_KM;
402
+ if (angularRadius >= Math.PI)
403
+ return [-180, -90, 180, 90];
404
+ const latRadians = degreesToRadians(lat);
405
+ const minLatRadians = Math.max(-Math.PI / 2, latRadians - angularRadius);
406
+ const maxLatRadians = Math.min(Math.PI / 2, latRadians + angularRadius);
407
+ const minLat = Math.max(-90, radiansToDegrees(minLatRadians) - COORDINATE_PADDING_DEGREES);
408
+ const maxLat = Math.min(90, radiansToDegrees(maxLatRadians) + COORDINATE_PADDING_DEGREES);
409
+ if (angularRadius >= Math.PI / 2 ||
410
+ minLatRadians <= -Math.PI / 2 ||
411
+ maxLatRadians >= Math.PI / 2) {
412
+ return [-180, minLat, 180, maxLat];
413
+ }
414
+ const ratio = Math.sin(angularRadius) / Math.cos(latRadians);
415
+ const deltaLon = radiansToDegrees(Math.asin(Math.min(1, Math.max(-1, ratio)))) + COORDINATE_PADDING_DEGREES;
416
+ const rawMinLon = lon - deltaLon;
417
+ const rawMaxLon = lon + deltaLon;
418
+ return [normalizeLongitude(rawMinLon), minLat, normalizeLongitude(rawMaxLon), maxLat];
419
+ }
420
+ function haversineDistanceKm(lon1, lat1, lon2, lat2) {
421
+ const latDelta = degreesToRadians(lat2 - lat1);
422
+ const lonDelta = degreesToRadians(lon2 - lon1);
423
+ const lat1Radians = degreesToRadians(lat1);
424
+ const lat2Radians = degreesToRadians(lat2);
425
+ const a = Math.sin(latDelta / 2) ** 2 +
426
+ Math.sin(lonDelta / 2) ** 2 * Math.cos(lat1Radians) * Math.cos(lat2Radians);
427
+ return 2 * EARTH_RADIUS_KM * Math.atan2(Math.sqrt(a), Math.sqrt(Math.max(0, 1 - a)));
428
+ }
429
+ function normalizeLongitude(lon) {
430
+ if (lon >= -180 && lon <= 180)
431
+ return lon;
432
+ const normalized = ((((lon + 180) % 360) + 360) % 360) - 180;
433
+ return normalized === -180 && lon > 0 ? 180 : normalized;
434
+ }
435
+ function degreesToRadians(value) {
436
+ return value * (Math.PI / 180);
437
+ }
438
+ function radiansToDegrees(value) {
439
+ return value * (180 / Math.PI);
310
440
  }
311
441
  //# sourceMappingURL=nodes.js.map
package/dist/nodes.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"nodes.js","sourceRoot":"","sources":["../src/nodes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"nodes.js","sourceRoot":"","sources":["../src/nodes.ts"],"names":[],"mappings":"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"}
package/dist/osm.d.ts CHANGED
@@ -5,24 +5,77 @@ import { Relations, type RelationsTransferables } from "./relations.ts";
5
5
  import StringTable, { type StringTableTransferables } from "./stringtable.ts";
6
6
  import type { BufferType } from "./typed-arrays.ts";
7
7
  import { Ways, type WaysTransferables } from "./ways.ts";
8
+ export declare const OSM_TRANSFER_VERSION: 2;
9
+ export declare const OSM_CONTENT_HASH_VERSION: 2;
8
10
  export interface OsmTransferables<T extends BufferType = BufferType> {
11
+ transferVersion: typeof OSM_TRANSFER_VERSION;
12
+ contentHashVersion: typeof OSM_CONTENT_HASH_VERSION;
9
13
  id: string;
10
14
  header: OsmPbfHeaderBlock;
11
15
  contentHash: string;
16
+ loadDiagnostics?: OsmLoadDiagnostics;
12
17
  stringTable: StringTableTransferables<T>;
13
18
  nodes: NodesTransferables<T>;
14
19
  ways: WaysTransferables<T>;
15
20
  relations: RelationsTransferables<T>;
16
21
  }
22
+ export type OsmLoadProfile = "auto" | "full" | "view";
23
+ export type ResolvedOsmLoadProfile = Exclude<OsmLoadProfile, "auto">;
24
+ export interface OsmLoadDiagnosticReason {
25
+ code: string;
26
+ level: "info" | "warning";
27
+ message: string;
28
+ }
29
+ /** Plain-data diagnostics attached by loaders and safe to transfer between workers. */
30
+ export interface OsmLoadDiagnostics {
31
+ requestedProfile: OsmLoadProfile;
32
+ selectedProfile: ResolvedOsmLoadProfile;
33
+ reasons: OsmLoadDiagnosticReason[];
34
+ bytes: {
35
+ residentTypedBuffers: number;
36
+ projectedTypedBufferPeak: number;
37
+ largestPlannedAllocation: number;
38
+ storageBytes?: number;
39
+ };
40
+ budgets: {
41
+ workingSet?: number;
42
+ singleAllocation?: number;
43
+ allNodeSpatialIndex?: number;
44
+ arrayBufferCeiling?: number;
45
+ sharedArrayBufferCeiling?: number;
46
+ };
47
+ phaseTimingsMs: Record<string, number>;
48
+ counters: {
49
+ taggedNodes?: number;
50
+ taggedWays?: number;
51
+ taggedRelations?: number;
52
+ nodeTagPairs?: number;
53
+ wayTagPairs?: number;
54
+ relationTagPairs?: number;
55
+ wayReferences?: number;
56
+ missingWayReferences?: number;
57
+ relationMembers?: number;
58
+ };
59
+ }
17
60
  export interface OsmInfo {
18
61
  id: string;
19
- bbox: GeoBbox2D;
62
+ /** Bounding box of all nodes, or `null` when the dataset has no nodes. */
63
+ bbox: GeoBbox2D | null;
20
64
  header: OsmPbfHeaderBlock;
21
65
  stats: {
22
66
  nodes: number;
23
67
  ways: number;
24
68
  relations: number;
25
69
  };
70
+ spatialIndexes: {
71
+ nodes: {
72
+ all: boolean;
73
+ tagged: boolean;
74
+ };
75
+ ways: boolean;
76
+ relations: boolean;
77
+ };
78
+ loadDiagnostics?: OsmLoadDiagnostics;
26
79
  }
27
80
  export interface OsmOptions {
28
81
  id: string;
@@ -40,6 +93,7 @@ export declare class Osm {
40
93
  readonly relations: Relations;
41
94
  private indexBuilt;
42
95
  private _contentHash;
96
+ private _loadDiagnostics?;
43
97
  /**
44
98
  * Create a new OSM Entity index.
45
99
  */
@@ -62,13 +116,15 @@ export declare class Osm {
62
116
  */
63
117
  hasSpatialIndexes(): boolean;
64
118
  /**
65
- * Get the bounding box of all entities in the OSM index.
119
+ * Get the bounding box of all entities in the OSM index, or `null` when there are no nodes.
66
120
  */
67
- bbox(): GeoBbox2D;
121
+ bbox(): GeoBbox2D | null;
68
122
  /**
69
123
  * Get information about the OSM index.
70
124
  */
71
125
  info(): OsmInfo;
126
+ /** Attach loader-provided diagnostics for `info()` and worker transfer. */
127
+ setLoadDiagnostics(loadDiagnostics: OsmLoadDiagnostics | undefined): void;
72
128
  /**
73
129
  * Get transferable objects for passing to another thread.
74
130
  */
package/dist/osm.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"osm.d.ts","sourceRoot":"","sources":["../src/osm.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,EAAE,KAAK,EAAE,KAAK,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,KAAK,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxE,OAAO,WAAW,EAAE,EAAE,KAAK,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC9E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,KAAK,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAEzD,MAAM,WAAW,gBAAgB,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU;IACjE,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,iBAAiB,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,wBAAwB,CAAC,CAAC,CAAC,CAAC;IACzC,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC;IAC7B,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAC3B,SAAS,EAAE,sBAAsB,CAAC,CAAC,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,KAAK,EAAE;QACL,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,iBAAiB,CAAC;CAC3B;AAED;;GAEG;AACH,qBAAa,GAAG;IAEd,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;IAGnC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAE9B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,YAAY,CAAM;IAE1B;;OAEG;IACH,YAAY,IAAI,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,gBAAgB,GAAG,GAAG,EAiC9D;IAED;;;OAGG;IACH,YAAY,SAQX;IAED;;OAEG;IACH,OAAO,YAIN;IAED;;OAEG;IACH,mBAAmB,SAIlB;IAED;;OAEG;IACH,iBAAiB,IAAI,OAAO,CAM3B;IAED;;OAEG;IACH,IAAI,IAAI,SAAS,CAEhB;IAED;;OAEG;IACH,IAAI,IAAI,OAAO,CAWd;IAED;;OAEG;IACH,aAAa,IAAI,gBAAgB,CAUhC;IAED;;;;;OAKG;IACH,WAAW,IAAI,MAAM,CAEpB;IAED;;;;;;OAMG;IACH,OAAO,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAG9C;IAED;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB;CAU3B"}
1
+ {"version":3,"file":"osm.d.ts","sourceRoot":"","sources":["../src/osm.ts"],"names":[],"mappings":"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"}
package/dist/osm.js CHANGED
@@ -3,6 +3,8 @@ import { Nodes } from "./nodes.js";
3
3
  import { Relations } from "./relations.js";
4
4
  import StringTable, {} from "./stringtable.js";
5
5
  import { Ways } from "./ways.js";
6
+ export const OSM_TRANSFER_VERSION = 2;
7
+ export const OSM_CONTENT_HASH_VERSION = 2;
6
8
  /**
7
9
  * OSM Entity Index.
8
10
  */
@@ -17,6 +19,7 @@ export class Osm {
17
19
  relations;
18
20
  indexBuilt = false;
19
21
  _contentHash = "";
22
+ _loadDiagnostics;
20
23
  /**
21
24
  * Create a new OSM Entity index.
22
25
  */
@@ -33,14 +36,22 @@ export class Osm {
33
36
  this.ways = new Ways(this.stringTable, this.nodes, opts.ways.transferables());
34
37
  this.relations = new Relations(this.stringTable, this.nodes, this.ways, opts.relations.transferables());
35
38
  this._contentHash = opts._contentHash;
39
+ this._loadDiagnostics = opts._loadDiagnostics;
36
40
  this.indexBuilt = true;
37
41
  }
38
42
  else {
43
+ if (opts.transferVersion !== OSM_TRANSFER_VERSION) {
44
+ throw Error(`Unsupported OSM transfer version: ${String(opts.transferVersion)}. Expected ${String(OSM_TRANSFER_VERSION)}.`);
45
+ }
46
+ if (opts.contentHashVersion !== OSM_CONTENT_HASH_VERSION) {
47
+ throw Error(`Unsupported OSM content hash version: ${String(opts.contentHashVersion)}. Expected ${String(OSM_CONTENT_HASH_VERSION)}.`);
48
+ }
39
49
  this.stringTable = new StringTable(opts.stringTable);
40
50
  this.nodes = new Nodes(this.stringTable, opts.nodes);
41
51
  this.ways = new Ways(this.stringTable, this.nodes, opts.ways);
42
52
  this.relations = new Relations(this.stringTable, this.nodes, this.ways, opts.relations);
43
53
  this._contentHash = opts.contentHash;
54
+ this._loadDiagnostics = opts.loadDiagnostics;
44
55
  this.indexBuilt = true;
45
56
  }
46
57
  }
@@ -74,6 +85,7 @@ export class Osm {
74
85
  * Build spatial indexes for all entities.
75
86
  */
76
87
  buildSpatialIndexes() {
88
+ this.nodes.buildSpatialIndex("tagged");
77
89
  this.nodes.buildSpatialIndex();
78
90
  this.ways.buildSpatialIndex();
79
91
  this.relations.buildSpatialIndex();
@@ -83,11 +95,12 @@ export class Osm {
83
95
  */
84
96
  hasSpatialIndexes() {
85
97
  return (this.nodes.hasSpatialIndex() &&
98
+ this.nodes.hasSpatialIndex("tagged") &&
86
99
  this.ways.hasSpatialIndex() &&
87
100
  this.relations.hasSpatialIndex());
88
101
  }
89
102
  /**
90
- * Get the bounding box of all entities in the OSM index.
103
+ * Get the bounding box of all entities in the OSM index, or `null` when there are no nodes.
91
104
  */
92
105
  bbox() {
93
106
  return this.nodes.getBbox();
@@ -105,16 +118,32 @@ export class Osm {
105
118
  ways: this.ways.size,
106
119
  relations: this.relations.size,
107
120
  },
121
+ spatialIndexes: {
122
+ nodes: {
123
+ all: this.nodes.hasSpatialIndex("all"),
124
+ tagged: this.nodes.hasSpatialIndex("tagged"),
125
+ },
126
+ ways: this.ways.hasSpatialIndex(),
127
+ relations: this.relations.hasSpatialIndex(),
128
+ },
129
+ ...(this._loadDiagnostics ? { loadDiagnostics: this._loadDiagnostics } : {}),
108
130
  };
109
131
  }
132
+ /** Attach loader-provided diagnostics for `info()` and worker transfer. */
133
+ setLoadDiagnostics(loadDiagnostics) {
134
+ this._loadDiagnostics = loadDiagnostics;
135
+ }
110
136
  /**
111
137
  * Get transferable objects for passing to another thread.
112
138
  */
113
139
  transferables() {
114
140
  return {
141
+ transferVersion: OSM_TRANSFER_VERSION,
142
+ contentHashVersion: OSM_CONTENT_HASH_VERSION,
115
143
  id: this.id,
116
144
  header: this.header,
117
145
  contentHash: this._contentHash,
146
+ ...(this._loadDiagnostics ? { loadDiagnostics: this._loadDiagnostics } : {}),
118
147
  stringTable: this.stringTable.transferables(),
119
148
  nodes: this.nodes.transferables(),
120
149
  ways: this.ways.transferables(),
@@ -149,7 +178,7 @@ export class Osm {
149
178
  * @returns A hex string hash of the content.
150
179
  */
151
180
  computeContentHash() {
152
- const hasher = new ContentHasher();
181
+ const hasher = new ContentHasher().updateNumber(OSM_CONTENT_HASH_VERSION);
153
182
  // Hash string table first (shared by all entities)
154
183
  this.stringTable.updateHash(hasher);
155
184
  // Hash each entity collection
package/dist/osm.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"osm.js","sourceRoot":"","sources":["../src/osm.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAG7D,OAAO,EAAE,KAAK,EAA2B,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,SAAS,EAA+B,MAAM,gBAAgB,CAAC;AACxE,OAAO,WAAW,EAAE,EAAiC,MAAM,kBAAkB,CAAC;AAE9E,OAAO,EAAE,IAAI,EAA0B,MAAM,WAAW,CAAC;AA4BzD;;GAEG;AACH,MAAM,OAAO,GAAG;IACd,2CAA2C;IAClC,EAAE,CAAS;IACX,MAAM,CAAoB;IAEnC,gEAAgE;IACvD,WAAW,CAAc;IACzB,KAAK,CAAQ;IACb,IAAI,CAAO;IACX,SAAS,CAAY;IAEtB,UAAU,GAAG,KAAK,CAAC;IACnB,YAAY,GAAG,EAAE,CAAC;IAE1B;;OAEG;IACH,YAAY,IAAmD;QAC7D,IAAI,CAAC,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,SAAS,CAAC;QAChC,IAAI,CAAC,MAAM,GAAG,IAAI,EAAE,MAAM,IAAI;YAC5B,iBAAiB,EAAE,EAAE;YACrB,iBAAiB,EAAE,EAAE;SACtB,CAAC;QACF,IAAI,IAAI,IAAI,aAAa,IAAI,IAAI,EAAE,CAAC;YAClC,IAAI,IAAI,YAAY,GAAG,EAAE,CAAC;gBACxB,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC,CAAC;gBACrE,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC;gBACrE,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;gBAC9E,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,CAC5B,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,CAC/B,CAAC;gBACF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;gBACtC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACzB,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBACrD,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;gBACrD,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC9D,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;gBACxF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC;gBACrC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACzB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;YACrC,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACzC,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YACnD,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,YAAY;QACV,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;QAC9B,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;QACxB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QACvB,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;QAC5B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,+CAA+C;QAC/C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAChD,CAAC;IAED;;OAEG;IACH,OAAO;QACL,OAAO,CACL,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,UAAU,CAC3F,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,mBAAmB;QACjB,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC/B,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC9B,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,iBAAiB;QACf,OAAO,CACL,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE;YAC5B,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YAC3B,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,CACjC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,IAAI;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,IAAI;QACF,OAAO;YACL,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;YACjB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE;gBACL,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;gBACtB,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI;gBACpB,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI;aAC/B;SACF,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,aAAa;QACX,OAAO;YACL,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,WAAW,EAAE,IAAI,CAAC,YAAY;YAC9B,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE;YAC7C,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;YACjC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YAC/B,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE;SAC1C,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,WAAW;QACT,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED;;;;;;OAMG;IACH,OAAO,CAAC,KAA6B;QACnC,IAAI,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC;QACzB,OAAO,IAAI,CAAC,YAAY,KAAK,KAAK,CAAC,YAAY,CAAC;IAClD,CAAC;IAED;;;;;OAKG;IACK,kBAAkB;QACxB,MAAM,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;QACnC,mDAAmD;QACnD,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACpC,8BAA8B;QAC9B,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC9B,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC7B,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAClC,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC;IACzB,CAAC;CACF"}
1
+ {"version":3,"file":"osm.js","sourceRoot":"","sources":["../src/osm.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAG7D,OAAO,EAAE,KAAK,EAA2B,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,SAAS,EAA+B,MAAM,gBAAgB,CAAC;AACxE,OAAO,WAAW,EAAE,EAAiC,MAAM,kBAAkB,CAAC;AAE9E,OAAO,EAAE,IAAI,EAA0B,MAAM,WAAW,CAAC;AAEzD,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAU,CAAC;AAC/C,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAU,CAAC;AA+EnD;;GAEG;AACH,MAAM,OAAO,GAAG;IACd,2CAA2C;IAClC,EAAE,CAAS;IACX,MAAM,CAAoB;IAEnC,gEAAgE;IACvD,WAAW,CAAc;IACzB,KAAK,CAAQ;IACb,IAAI,CAAO;IACX,SAAS,CAAY;IAEtB,UAAU,GAAG,KAAK,CAAC;IACnB,YAAY,GAAG,EAAE,CAAC;IAClB,gBAAgB,CAAsB;IAE9C;;OAEG;IACH,YAAY,IAAmD;QAC7D,IAAI,CAAC,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,SAAS,CAAC;QAChC,IAAI,CAAC,MAAM,GAAG,IAAI,EAAE,MAAM,IAAI;YAC5B,iBAAiB,EAAE,EAAE;YACrB,iBAAiB,EAAE,EAAE;SACtB,CAAC;QACF,IAAI,IAAI,IAAI,aAAa,IAAI,IAAI,EAAE,CAAC;YAClC,IAAI,IAAI,YAAY,GAAG,EAAE,CAAC;gBACxB,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC,CAAC;gBACrE,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC;gBACrE,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;gBAC9E,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,CAC5B,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,CAC/B,CAAC;gBACF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;gBACtC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;gBAC9C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACzB,CAAC;iBAAM,CAAC;gBACN,IAAI,IAAI,CAAC,eAAe,KAAK,oBAAoB,EAAE,CAAC;oBAClD,MAAM,KAAK,CACT,qCAAqC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,cAAc,MAAM,CAAC,oBAAoB,CAAC,GAAG,CAC/G,CAAC;gBACJ,CAAC;gBACD,IAAI,IAAI,CAAC,kBAAkB,KAAK,wBAAwB,EAAE,CAAC;oBACzD,MAAM,KAAK,CACT,yCAAyC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,cAAc,MAAM,CAAC,wBAAwB,CAAC,GAAG,CAC1H,CAAC;gBACJ,CAAC;gBACD,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBACrD,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;gBACrD,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC9D,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;gBACxF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC;gBACrC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,eAAe,CAAC;gBAC7C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACzB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;YACrC,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACzC,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YACnD,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,YAAY;QACV,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;QAC9B,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;QACxB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QACvB,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;QAC5B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,+CAA+C;QAC/C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAChD,CAAC;IAED;;OAEG;IACH,OAAO;QACL,OAAO,CACL,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,UAAU,CAC3F,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,mBAAmB;QACjB,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QACvC,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC/B,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC9B,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,iBAAiB;QACf,OAAO,CACL,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE;YAC5B,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,QAAQ,CAAC;YACpC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YAC3B,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,CACjC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,IAAI;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,IAAI;QACF,OAAO;YACL,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;YACjB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE;gBACL,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;gBACtB,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI;gBACpB,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI;aAC/B;YACD,cAAc,EAAE;gBACd,KAAK,EAAE;oBACL,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC;oBACtC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,QAAQ,CAAC;iBAC7C;gBACD,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;gBACjC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE;aAC5C;YACD,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC7E,CAAC;IACJ,CAAC;IAED,2EAA2E;IAC3E,kBAAkB,CAAC,eAA+C;QAChE,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,aAAa;QACX,OAAO;YACL,eAAe,EAAE,oBAAoB;YACrC,kBAAkB,EAAE,wBAAwB;YAC5C,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,WAAW,EAAE,IAAI,CAAC,YAAY;YAC9B,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5E,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE;YAC7C,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;YACjC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YAC/B,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE;SAC1C,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,WAAW;QACT,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED;;;;;;OAMG;IACH,OAAO,CAAC,KAA6B;QACnC,IAAI,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC;QACzB,OAAO,IAAI,CAAC,YAAY,KAAK,KAAK,CAAC,YAAY,CAAC;IAClD,CAAC;IAED;;;;;OAKG;IACK,kBAAkB;QACxB,MAAM,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC,YAAY,CAAC,wBAAwB,CAAC,CAAC;QAC1E,mDAAmD;QACnD,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACpC,8BAA8B;QAC9B,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC9B,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC7B,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAClC,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC;IACzB,CAAC;CACF"}