@osmix/core 0.0.2 → 0.1.1

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 (104) hide show
  1. package/CHANGELOG.md +60 -0
  2. package/README.md +118 -107
  3. package/dist/src/entities.d.ts +103 -9
  4. package/dist/src/entities.d.ts.map +1 -1
  5. package/dist/src/entities.js +101 -11
  6. package/dist/src/entities.js.map +1 -1
  7. package/dist/src/ids.d.ts +82 -13
  8. package/dist/src/ids.d.ts.map +1 -1
  9. package/dist/src/ids.js +103 -31
  10. package/dist/src/ids.js.map +1 -1
  11. package/dist/src/index.d.ts +31 -5
  12. package/dist/src/index.d.ts.map +1 -1
  13. package/dist/src/index.js +33 -5
  14. package/dist/src/index.js.map +1 -1
  15. package/dist/src/nodes.d.ts +91 -21
  16. package/dist/src/nodes.d.ts.map +1 -1
  17. package/dist/src/nodes.js +191 -44
  18. package/dist/src/nodes.js.map +1 -1
  19. package/dist/src/osm.d.ts +99 -0
  20. package/dist/src/osm.d.ts.map +1 -0
  21. package/dist/src/osm.js +165 -0
  22. package/dist/src/osm.js.map +1 -0
  23. package/dist/src/relations.d.ts +112 -20
  24. package/dist/src/relations.d.ts.map +1 -1
  25. package/dist/src/relations.js +298 -35
  26. package/dist/src/relations.js.map +1 -1
  27. package/dist/src/stringtable.d.ts +78 -14
  28. package/dist/src/stringtable.d.ts.map +1 -1
  29. package/dist/src/stringtable.js +105 -26
  30. package/dist/src/stringtable.js.map +1 -1
  31. package/dist/src/tags.d.ts +117 -18
  32. package/dist/src/tags.d.ts.map +1 -1
  33. package/dist/src/tags.js +177 -30
  34. package/dist/src/tags.js.map +1 -1
  35. package/dist/src/typed-arrays.d.ts +85 -11
  36. package/dist/src/typed-arrays.d.ts.map +1 -1
  37. package/dist/src/typed-arrays.js +88 -9
  38. package/dist/src/typed-arrays.js.map +1 -1
  39. package/dist/src/utils.d.ts +35 -1
  40. package/dist/src/utils.d.ts.map +1 -1
  41. package/dist/src/utils.js +69 -10
  42. package/dist/src/utils.js.map +1 -1
  43. package/dist/src/ways.d.ts +91 -27
  44. package/dist/src/ways.d.ts.map +1 -1
  45. package/dist/src/ways.js +229 -69
  46. package/dist/src/ways.js.map +1 -1
  47. package/dist/test/memory.test.d.ts +7 -0
  48. package/dist/test/memory.test.d.ts.map +1 -0
  49. package/dist/test/memory.test.js +29 -0
  50. package/dist/test/memory.test.js.map +1 -0
  51. package/dist/test/mock-osm.d.ts +3 -3
  52. package/dist/test/mock-osm.d.ts.map +1 -1
  53. package/dist/test/mock-osm.js +3 -3
  54. package/dist/test/mock-osm.js.map +1 -1
  55. package/dist/test/tags-search.test.d.ts +2 -0
  56. package/dist/test/tags-search.test.d.ts.map +1 -0
  57. package/dist/test/tags-search.test.js +56 -0
  58. package/dist/test/tags-search.test.js.map +1 -0
  59. package/dist/test/typed-arrays.test.js +19 -17
  60. package/dist/test/typed-arrays.test.js.map +1 -1
  61. package/package.json +11 -13
  62. package/src/entities.ts +147 -22
  63. package/src/ids.ts +126 -45
  64. package/src/index.ts +34 -5
  65. package/src/nodes.ts +248 -58
  66. package/src/osm.ts +222 -0
  67. package/src/relations.ts +396 -54
  68. package/src/stringtable.ts +123 -36
  69. package/src/tags.ts +220 -46
  70. package/src/typed-arrays.ts +97 -10
  71. package/src/types/geoflatbush.d.ts +37 -0
  72. package/src/types/geokdbush.d.ts +37 -0
  73. package/src/types/kdbush.d.ts +24 -6
  74. package/src/utils.ts +80 -14
  75. package/src/ways.ts +260 -84
  76. package/test/memory.test.ts +38 -0
  77. package/test/mock-osm.ts +8 -8
  78. package/test/tags-search.test.ts +60 -0
  79. package/test/typed-arrays.test.ts +5 -6
  80. package/dist/src/osmix.d.ts +0 -88
  81. package/dist/src/osmix.d.ts.map +0 -1
  82. package/dist/src/osmix.js +0 -438
  83. package/dist/src/osmix.js.map +0 -1
  84. package/dist/test/extract.bench.d.ts +0 -2
  85. package/dist/test/extract.bench.d.ts.map +0 -1
  86. package/dist/test/extract.bench.js +0 -23
  87. package/dist/test/extract.bench.js.map +0 -1
  88. package/dist/test/extract.test.d.ts +0 -2
  89. package/dist/test/extract.test.d.ts.map +0 -1
  90. package/dist/test/extract.test.js +0 -127
  91. package/dist/test/extract.test.js.map +0 -1
  92. package/dist/test/read.test.d.ts +0 -2
  93. package/dist/test/read.test.d.ts.map +0 -1
  94. package/dist/test/read.test.js +0 -17
  95. package/dist/test/read.test.js.map +0 -1
  96. package/dist/test/write.test.d.ts +0 -2
  97. package/dist/test/write.test.d.ts.map +0 -1
  98. package/dist/test/write.test.js +0 -55
  99. package/dist/test/write.test.js.map +0 -1
  100. package/src/osmix.ts +0 -556
  101. package/test/extract.bench.ts +0 -29
  102. package/test/extract.test.ts +0 -161
  103. package/test/read.test.ts +0 -22
  104. package/test/write.test.ts +0 -69
@@ -1,4 +1,38 @@
1
+ /**
2
+ * Utility functions for @osmix/core.
3
+ * @module
4
+ */
1
5
  import type { GeoBbox2D, LonLat } from "@osmix/shared/types";
2
- export declare function throttle<T extends unknown[]>(func: (...args: T) => void, timeFrame: number): (...args: T) => void;
6
+ /**
7
+ * Compute the bounding box of a set of coordinates.
8
+ * Returns `[minLon, minLat, maxLon, maxLat]`.
9
+ */
3
10
  export declare function bboxFromLonLats(lonLats: LonLat[]): GeoBbox2D;
11
+ /**
12
+ * Hash state that can be incrementally updated with multiple buffers.
13
+ */
14
+ export declare class ContentHasher {
15
+ private hash;
16
+ /**
17
+ * Update the hash with a typed array's underlying bytes.
18
+ */
19
+ update(data: ArrayBufferView | ArrayBuffer): this;
20
+ /**
21
+ * Update the hash with a number (as 8 bytes).
22
+ */
23
+ updateNumber(n: number): this;
24
+ /**
25
+ * Get the final hash as a hex string.
26
+ */
27
+ digest(): string;
28
+ /**
29
+ * Get the raw hash value.
30
+ */
31
+ digestNumber(): number;
32
+ }
33
+ /**
34
+ * Create a content hash from multiple typed arrays.
35
+ * Returns a hex string suitable for use as a content identifier.
36
+ */
37
+ export declare function hashBuffers(...buffers: (ArrayBufferView | ArrayBuffer)[]): string;
4
38
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAE5D,wBAAgB,QAAQ,CAAC,CAAC,SAAS,OAAO,EAAE,EAC3C,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,IAAI,EAC1B,SAAS,EAAE,MAAM,IAGT,GAAG,MAAM,CAAC,UAOlB;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,SAAS,CAY5D"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAE5D;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,SAAS,CAY5D;AAmBD;;GAEG;AACH,qBAAa,aAAa;IACzB,OAAO,CAAC,IAAI,CAAmB;IAE/B;;OAEG;IACH,MAAM,CAAC,IAAI,EAAE,eAAe,GAAG,WAAW,GAAG,IAAI;IAOjD;;OAEG;IACH,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAM7B;;OAEG;IACH,MAAM,IAAI,MAAM;IAIhB;;OAEG;IACH,YAAY,IAAI,MAAM;CAGtB;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAC1B,GAAG,OAAO,EAAE,CAAC,eAAe,GAAG,WAAW,CAAC,EAAE,GAC3C,MAAM,CAMR"}
package/dist/src/utils.js CHANGED
@@ -1,13 +1,11 @@
1
- export function throttle(func, timeFrame) {
2
- let lastTime = 0;
3
- return (...args) => {
4
- const now = Date.now();
5
- if (now - lastTime >= timeFrame) {
6
- func(...args);
7
- lastTime = now;
8
- }
9
- };
10
- }
1
+ /**
2
+ * Utility functions for @osmix/core.
3
+ * @module
4
+ */
5
+ /**
6
+ * Compute the bounding box of a set of coordinates.
7
+ * Returns `[minLon, minLat, maxLon, maxLat]`.
8
+ */
11
9
  export function bboxFromLonLats(lonLats) {
12
10
  let minLon = Number.POSITIVE_INFINITY;
13
11
  let minLat = Number.POSITIVE_INFINITY;
@@ -25,4 +23,65 @@ export function bboxFromLonLats(lonLats) {
25
23
  }
26
24
  return [minLon, minLat, maxLon, maxLat];
27
25
  }
26
+ // FNV-1a hash constants (32-bit)
27
+ const FNV_OFFSET_BASIS = 2166136261;
28
+ const FNV_PRIME = 16777619;
29
+ /**
30
+ * FNV-1a hash implementation for Uint8Array.
31
+ * Fast, non-cryptographic hash suitable for content comparison.
32
+ */
33
+ function fnv1aHash(data, initialHash = FNV_OFFSET_BASIS) {
34
+ let hash = initialHash;
35
+ for (let i = 0; i < data.length; i++) {
36
+ hash ^= data[i];
37
+ hash = Math.imul(hash, FNV_PRIME) >>> 0;
38
+ }
39
+ return hash >>> 0;
40
+ }
41
+ /**
42
+ * Hash state that can be incrementally updated with multiple buffers.
43
+ */
44
+ export class ContentHasher {
45
+ hash = FNV_OFFSET_BASIS;
46
+ /**
47
+ * Update the hash with a typed array's underlying bytes.
48
+ */
49
+ update(data) {
50
+ const buffer = data instanceof ArrayBuffer ? data : data.buffer;
51
+ const bytes = new Uint8Array(buffer);
52
+ this.hash = fnv1aHash(bytes, this.hash);
53
+ return this;
54
+ }
55
+ /**
56
+ * Update the hash with a number (as 8 bytes).
57
+ */
58
+ updateNumber(n) {
59
+ const buffer = new ArrayBuffer(8);
60
+ new Float64Array(buffer)[0] = n;
61
+ return this.update(buffer);
62
+ }
63
+ /**
64
+ * Get the final hash as a hex string.
65
+ */
66
+ digest() {
67
+ return this.hash.toString(16).padStart(8, "0");
68
+ }
69
+ /**
70
+ * Get the raw hash value.
71
+ */
72
+ digestNumber() {
73
+ return this.hash;
74
+ }
75
+ }
76
+ /**
77
+ * Create a content hash from multiple typed arrays.
78
+ * Returns a hex string suitable for use as a content identifier.
79
+ */
80
+ export function hashBuffers(...buffers) {
81
+ const hasher = new ContentHasher();
82
+ for (const buffer of buffers) {
83
+ hasher.update(buffer);
84
+ }
85
+ return hasher.digest();
86
+ }
28
87
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,QAAQ,CACvB,IAA0B,EAC1B,SAAiB;IAEjB,IAAI,QAAQ,GAAG,CAAC,CAAA;IAChB,OAAO,CAAC,GAAG,IAAO,EAAE,EAAE;QACrB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACtB,IAAI,GAAG,GAAG,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAA;YACb,QAAQ,GAAG,GAAG,CAAA;QACf,CAAC;IACF,CAAC,CAAA;AACF,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAiB;IAChD,IAAI,MAAM,GAAG,MAAM,CAAC,iBAAiB,CAAA;IACrC,IAAI,MAAM,GAAG,MAAM,CAAC,iBAAiB,CAAA;IACrC,IAAI,MAAM,GAAG,MAAM,CAAC,iBAAiB,CAAA;IACrC,IAAI,MAAM,GAAG,MAAM,CAAC,iBAAiB,CAAA;IACrC,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,OAAO,EAAE,CAAC;QAClC,IAAI,GAAG,GAAG,MAAM;YAAE,MAAM,GAAG,GAAG,CAAA;QAC9B,IAAI,GAAG,GAAG,MAAM;YAAE,MAAM,GAAG,GAAG,CAAA;QAC9B,IAAI,GAAG,GAAG,MAAM;YAAE,MAAM,GAAG,GAAG,CAAA;QAC9B,IAAI,GAAG,GAAG,MAAM;YAAE,MAAM,GAAG,GAAG,CAAA;IAC/B,CAAC;IACD,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;AACxC,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,OAAiB;IAChD,IAAI,MAAM,GAAG,MAAM,CAAC,iBAAiB,CAAA;IACrC,IAAI,MAAM,GAAG,MAAM,CAAC,iBAAiB,CAAA;IACrC,IAAI,MAAM,GAAG,MAAM,CAAC,iBAAiB,CAAA;IACrC,IAAI,MAAM,GAAG,MAAM,CAAC,iBAAiB,CAAA;IACrC,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,OAAO,EAAE,CAAC;QAClC,IAAI,GAAG,GAAG,MAAM;YAAE,MAAM,GAAG,GAAG,CAAA;QAC9B,IAAI,GAAG,GAAG,MAAM;YAAE,MAAM,GAAG,GAAG,CAAA;QAC9B,IAAI,GAAG,GAAG,MAAM;YAAE,MAAM,GAAG,GAAG,CAAA;QAC9B,IAAI,GAAG,GAAG,MAAM;YAAE,MAAM,GAAG,GAAG,CAAA;IAC/B,CAAC;IACD,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;AACxC,CAAC;AAED,iCAAiC;AACjC,MAAM,gBAAgB,GAAG,UAAU,CAAA;AACnC,MAAM,SAAS,GAAG,QAAQ,CAAA;AAE1B;;;GAGG;AACH,SAAS,SAAS,CAAC,IAAgB,EAAE,WAAW,GAAG,gBAAgB;IAClE,IAAI,IAAI,GAAG,WAAW,CAAA;IACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAW,CAAA;QACzB,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,CAAA;IACxC,CAAC;IACD,OAAO,IAAI,KAAK,CAAC,CAAA;AAClB,CAAC;AAED;;GAEG;AACH,MAAM,OAAO,aAAa;IACjB,IAAI,GAAG,gBAAgB,CAAA;IAE/B;;OAEG;IACH,MAAM,CAAC,IAAmC;QACzC,MAAM,MAAM,GAAG,IAAI,YAAY,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAA;QAC/D,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAA;QACpC,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;QACvC,OAAO,IAAI,CAAA;IACZ,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,CAAS;QACrB,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,CAAA;QACjC,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;QAC/B,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IAC3B,CAAC;IAED;;OAEG;IACH,MAAM;QACL,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;IAC/C,CAAC;IAED;;OAEG;IACH,YAAY;QACX,OAAO,IAAI,CAAC,IAAI,CAAA;IACjB,CAAC;CACD;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAC1B,GAAG,OAA0C;IAE7C,MAAM,MAAM,GAAG,IAAI,aAAa,EAAE,CAAA;IAClC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC9B,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IACtB,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,EAAE,CAAA;AACvB,CAAC"}
@@ -1,42 +1,106 @@
1
- import type { OsmTags, OsmWay } from "@osmix/json";
2
1
  import type { OsmPbfWay } from "@osmix/pbf";
3
- import type { GeoBbox2D, LonLat } from "@osmix/shared/types";
2
+ import type { GeoBbox2D, LonLat, OsmTags, OsmWay } from "@osmix/shared/types";
4
3
  import Flatbush from "flatbush";
5
4
  import { Entities, type EntitiesTransferables } from "./entities";
6
- import { type IdOrIndex, Ids } from "./ids";
5
+ import { type IdOrIndex } from "./ids";
7
6
  import type { Nodes } from "./nodes";
8
7
  import type StringTable from "./stringtable";
9
- import { Tags } from "./tags";
10
- import { type BufferType, ResizeableTypedArray } from "./typed-arrays";
11
- export interface WaysTransferables extends EntitiesTransferables {
12
- refStart: BufferType;
13
- refCount: BufferType;
14
- refs: BufferType;
15
- bbox: BufferType;
16
- spatialIndex: BufferType;
8
+ import { type BufferType } from "./typed-arrays";
9
+ import type { ContentHasher } from "./utils";
10
+ export interface WaysTransferables<T extends BufferType = BufferType> extends EntitiesTransferables<T> {
11
+ refStart: T;
12
+ refCount: T;
13
+ refs: T;
14
+ bbox: T;
15
+ /** Optional - can be rebuilt via buildSpatialIndex() */
16
+ spatialIndex?: T;
17
17
  }
18
18
  export declare class Ways extends Entities<OsmWay> {
19
- spatialIndex: Flatbush;
20
- refStart: ResizeableTypedArray<Uint32Array>;
21
- refCount: ResizeableTypedArray<Uint16Array>;
22
- refs: ResizeableTypedArray<Float64Array>;
23
- bbox: ResizeableTypedArray<Float64Array>;
24
- static from(stringTable: StringTable, wits: WaysTransferables): Ways;
25
- constructor(stringTable: StringTable, idIndex?: Ids, tagIndex?: Tags);
26
- transferables(): WaysTransferables;
27
- addWay(way: OsmWay): void;
19
+ private spatialIndex;
20
+ private spatialIndexBuilt;
21
+ private refStart;
22
+ private refCount;
23
+ private refs;
24
+ private bbox;
25
+ private nodes;
26
+ /**
27
+ * Create a new Ways index.
28
+ */
29
+ constructor(stringTable: StringTable, nodes: Nodes, transferables?: WaysTransferables);
30
+ /**
31
+ * Add a single way to the index.
32
+ */
33
+ addWay(way: OsmWay): number;
28
34
  /**
29
35
  * Bulk add ways directly from a PBF PrimitiveBlock.
30
36
  */
31
- addWays(ways: OsmPbfWay[], blockStringIndexMap: Map<number, number>, filter?: (way: OsmWay) => OsmWay | null): number;
37
+ addWays(ways: OsmPbfWay[], blockStringIndexMap: Uint32Array, filter?: (way: OsmWay) => OsmWay | null): number;
38
+ /**
39
+ * Compact the internal arrays to free up memory.
40
+ */
32
41
  buildEntityIndex(): void;
33
- buildSpatialIndex(nodeIndex: Nodes): Flatbush;
42
+ /**
43
+ * Build the spatial index for ways.
44
+ * If bbox data already exists (e.g., loaded from storage), reuses it.
45
+ */
46
+ buildSpatialIndex(): Flatbush;
47
+ /**
48
+ * Check if the spatial index has been built.
49
+ */
50
+ hasSpatialIndex(): boolean;
51
+ /**
52
+ * Get the full way entity.
53
+ */
34
54
  getFullEntity(index: number, id: number, tags?: OsmTags): OsmWay;
35
- getRefIds(index: number): Uint8Array<ArrayBuffer> | Int8Array<ArrayBuffer> | Uint8ClampedArray<ArrayBuffer> | Int16Array<ArrayBuffer> | Uint16Array<ArrayBuffer> | Int32Array<ArrayBuffer> | Uint32Array<ArrayBuffer> | Float32Array<ArrayBuffer> | Float64Array<ArrayBuffer>;
36
- getBbox(idOrIndex: IdOrIndex): GeoBbox2D;
37
- getLine(index: number, nodeIndex: Nodes): Float64Array<ArrayBuffer>;
38
- getCoordinates(index: number, nodeIndex: Nodes): LonLat[];
55
+ /**
56
+ * Get the node IDs referenced by a way.
57
+ */
58
+ getRefIds(index: number): number[];
59
+ /**
60
+ * Get the bounding box of a way.
61
+ */
62
+ getEntityBbox(idOrIndex: IdOrIndex): GeoBbox2D;
63
+ /**
64
+ * Get the coordinates of a way as a flat array.
65
+ */
66
+ getLine(index: number): Float64Array<ArrayBuffer>;
67
+ /**
68
+ * Get the coordinates of a way as an array of [lon, lat] pairs.
69
+ */
70
+ getCoordinates(index: number): LonLat[];
71
+ /**
72
+ * Find way indexes that intersect a bounding box.
73
+ */
39
74
  intersects(bbox: GeoBbox2D, filterFn?: (index: number) => boolean): number[];
40
- neighbors(x: number, y: number, maxResults?: number, maxDistance?: number): number[];
75
+ /**
76
+ * Find way indexes near a point using great-circle distance.
77
+ * @param lon - Longitude in degrees.
78
+ * @param lat - Latitude in degrees.
79
+ * @param maxResults - Maximum number of results to return.
80
+ * @param maxDistanceKm - Maximum distance in kilometers.
81
+ * @returns Array of way indexes sorted by distance.
82
+ */
83
+ neighbors(lon: number, lat: number, maxResults?: number, maxDistanceKm?: number): number[];
84
+ /**
85
+ * Get ways within a bounding box.
86
+ */
87
+ withinBbox(bbox: GeoBbox2D, include?: (index: number) => boolean): {
88
+ ids: Float64Array;
89
+ positions: Float64Array;
90
+ startIndices: Uint32Array;
91
+ };
92
+ /**
93
+ * Get transferable objects for passing to another thread.
94
+ * Only includes spatialIndex if it has been built.
95
+ */
96
+ transferables(): WaysTransferables;
97
+ /**
98
+ * Get the approximate memory requirements for a given number of ways in bytes.
99
+ */
100
+ static getBytesRequired(count: number): number;
101
+ /**
102
+ * Update a ContentHasher with way-specific data (node references).
103
+ */
104
+ updateHash(hasher: ContentHasher): ContentHasher;
41
105
  }
42
106
  //# sourceMappingURL=ways.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ways.d.ts","sourceRoot":"","sources":["../../src/ways.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5D,OAAO,QAAQ,MAAM,UAAU,CAAA;AAC/B,OAAO,EAAE,QAAQ,EAAE,KAAK,qBAAqB,EAAE,MAAM,YAAY,CAAA;AACjE,OAAO,EAAE,KAAK,SAAS,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAC3C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,KAAK,WAAW,MAAM,eAAe,CAAA;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,EAEN,KAAK,UAAU,EAGf,oBAAoB,EACpB,MAAM,gBAAgB,CAAA;AAEvB,MAAM,WAAW,iBAAkB,SAAQ,qBAAqB;IAC/D,QAAQ,EAAE,UAAU,CAAA;IACpB,QAAQ,EAAE,UAAU,CAAA;IACpB,IAAI,EAAE,UAAU,CAAA;IAChB,IAAI,EAAE,UAAU,CAAA;IAChB,YAAY,EAAE,UAAU,CAAA;CACxB;AAED,qBAAa,IAAK,SAAQ,QAAQ,CAAC,MAAM,CAAC;IACzC,YAAY,EAAE,QAAQ,CAAkB;IAExC,QAAQ,EAAE,oBAAoB,CAAC,WAAW,CAAC,CAAA;IAC3C,QAAQ,EAAE,oBAAoB,CAAC,WAAW,CAAC,CAAA;IAG3C,IAAI,EAAE,oBAAoB,CAAC,YAAY,CAAC,CAAA;IAGxC,IAAI,EAAE,oBAAoB,CAAC,YAAY,CAAC,CAAA;IAExC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,iBAAiB;gBAYjD,WAAW,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,IAAI;IAQpE,aAAa,IAAI,iBAAiB;IAYlC,MAAM,CAAC,GAAG,EAAE,MAAM;IAQlB;;OAEG;IACH,OAAO,CACN,IAAI,EAAE,SAAS,EAAE,EACjB,mBAAmB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EACxC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI;IAuCxC,gBAAgB;IAMhB,iBAAiB,CAAC,SAAS,EAAE,KAAK;IAkClC,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM;IAQhE,SAAS,CAAC,KAAK,EAAE,MAAM;IAMvB,OAAO,CAAC,SAAS,EAAE,SAAS,GAAG,SAAS;IAWxC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK;IAavC,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,GAAG,MAAM,EAAE;IAsBzD,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,GAAG,MAAM,EAAE;IAU5E,SAAS,CACR,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,UAAU,CAAC,EAAE,MAAM,EACnB,WAAW,CAAC,EAAE,MAAM,GAClB,MAAM,EAAE;CAGX"}
1
+ {"version":3,"file":"ways.d.ts","sourceRoot":"","sources":["../../src/ways.ts"],"names":[],"mappings":"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"}