@osmix/core 0.0.6 → 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 (124) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/{core/src → src}/entities.d.ts +6 -0
  3. package/dist/src/entities.d.ts.map +1 -0
  4. package/dist/{core/src → src}/entities.js +7 -0
  5. package/dist/src/entities.js.map +1 -0
  6. package/dist/{core/src → src}/ids.d.ts +6 -0
  7. package/dist/src/ids.d.ts.map +1 -0
  8. package/dist/{core/src → src}/ids.js +7 -0
  9. package/dist/src/ids.js.map +1 -0
  10. package/dist/src/index.d.ts.map +1 -0
  11. package/dist/src/index.js.map +1 -0
  12. package/dist/{core/src → src}/nodes.d.ts +5 -0
  13. package/dist/src/nodes.d.ts.map +1 -0
  14. package/dist/{core/src → src}/nodes.js +9 -0
  15. package/dist/src/nodes.js.map +1 -0
  16. package/dist/{core/src → src}/osm.d.ts +25 -0
  17. package/dist/src/osm.d.ts.map +1 -0
  18. package/dist/{core/src → src}/osm.js +45 -0
  19. package/dist/src/osm.js.map +1 -0
  20. package/dist/{core/src → src}/relations.d.ts +5 -0
  21. package/dist/src/relations.d.ts.map +1 -0
  22. package/dist/{core/src → src}/relations.js +12 -0
  23. package/dist/src/relations.js.map +1 -0
  24. package/dist/{core/src → src}/stringtable.d.ts +6 -0
  25. package/dist/src/stringtable.d.ts.map +1 -0
  26. package/dist/{core/src → src}/stringtable.js +10 -0
  27. package/dist/src/stringtable.js.map +1 -0
  28. package/dist/{core/src → src}/tags.d.ts +6 -0
  29. package/dist/src/tags.d.ts.map +1 -0
  30. package/dist/{core/src → src}/tags.js +11 -0
  31. package/dist/src/tags.js.map +1 -0
  32. package/dist/src/typed-arrays.d.ts.map +1 -0
  33. package/dist/src/typed-arrays.js.map +1 -0
  34. package/dist/src/utils.d.ts +38 -0
  35. package/dist/src/utils.d.ts.map +1 -0
  36. package/dist/src/utils.js +87 -0
  37. package/dist/src/utils.js.map +1 -0
  38. package/dist/{core/src → src}/ways.d.ts +5 -0
  39. package/dist/src/ways.d.ts.map +1 -0
  40. package/dist/{core/src → src}/ways.js +10 -0
  41. package/dist/src/ways.js.map +1 -0
  42. package/dist/test/memory.test.d.ts.map +1 -0
  43. package/dist/test/memory.test.js.map +1 -0
  44. package/dist/test/mock-osm.d.ts.map +1 -0
  45. package/dist/test/mock-osm.js.map +1 -0
  46. package/dist/test/tags-search.test.d.ts.map +1 -0
  47. package/dist/test/tags-search.test.js.map +1 -0
  48. package/dist/test/typed-arrays.test.d.ts.map +1 -0
  49. package/dist/test/typed-arrays.test.js.map +1 -0
  50. package/package.json +2 -2
  51. package/src/entities.ts +9 -0
  52. package/src/ids.ts +9 -0
  53. package/src/nodes.ts +11 -0
  54. package/src/osm.ts +48 -0
  55. package/src/relations.ts +14 -1
  56. package/src/stringtable.ts +12 -0
  57. package/src/tags.ts +13 -0
  58. package/src/utils.ts +71 -0
  59. package/src/ways.ts +12 -0
  60. package/tsconfig.json +1 -7
  61. package/dist/core/src/entities.d.ts.map +0 -1
  62. package/dist/core/src/entities.js.map +0 -1
  63. package/dist/core/src/ids.d.ts.map +0 -1
  64. package/dist/core/src/ids.js.map +0 -1
  65. package/dist/core/src/index.d.ts.map +0 -1
  66. package/dist/core/src/index.js.map +0 -1
  67. package/dist/core/src/nodes.d.ts.map +0 -1
  68. package/dist/core/src/nodes.js.map +0 -1
  69. package/dist/core/src/osm.d.ts.map +0 -1
  70. package/dist/core/src/osm.js.map +0 -1
  71. package/dist/core/src/relations.d.ts.map +0 -1
  72. package/dist/core/src/relations.js.map +0 -1
  73. package/dist/core/src/stringtable.d.ts.map +0 -1
  74. package/dist/core/src/stringtable.js.map +0 -1
  75. package/dist/core/src/tags.d.ts.map +0 -1
  76. package/dist/core/src/tags.js.map +0 -1
  77. package/dist/core/src/typed-arrays.d.ts.map +0 -1
  78. package/dist/core/src/typed-arrays.js.map +0 -1
  79. package/dist/core/src/utils.d.ts +0 -11
  80. package/dist/core/src/utils.d.ts.map +0 -1
  81. package/dist/core/src/utils.js +0 -26
  82. package/dist/core/src/utils.js.map +0 -1
  83. package/dist/core/src/ways.d.ts.map +0 -1
  84. package/dist/core/src/ways.js.map +0 -1
  85. package/dist/core/test/memory.test.d.ts.map +0 -1
  86. package/dist/core/test/memory.test.js.map +0 -1
  87. package/dist/core/test/mock-osm.d.ts.map +0 -1
  88. package/dist/core/test/mock-osm.js.map +0 -1
  89. package/dist/core/test/tags-search.test.d.ts.map +0 -1
  90. package/dist/core/test/tags-search.test.js.map +0 -1
  91. package/dist/core/test/typed-arrays.test.d.ts.map +0 -1
  92. package/dist/core/test/typed-arrays.test.js.map +0 -1
  93. package/dist/osmix/src/extract.d.ts +0 -43
  94. package/dist/osmix/src/extract.d.ts.map +0 -1
  95. package/dist/osmix/src/extract.js +0 -156
  96. package/dist/osmix/src/extract.js.map +0 -1
  97. package/dist/osmix/src/pbf.d.ts +0 -55
  98. package/dist/osmix/src/pbf.d.ts.map +0 -1
  99. package/dist/osmix/src/pbf.js +0 -187
  100. package/dist/osmix/src/pbf.js.map +0 -1
  101. package/dist/osmix/src/utils.d.ts +0 -36
  102. package/dist/osmix/src/utils.d.ts.map +0 -1
  103. package/dist/osmix/src/utils.js +0 -108
  104. package/dist/osmix/src/utils.js.map +0 -1
  105. package/dist/osmix/test/extract.bench.d.ts +0 -2
  106. package/dist/osmix/test/extract.bench.d.ts.map +0 -1
  107. package/dist/osmix/test/extract.bench.js +0 -26
  108. package/dist/osmix/test/extract.bench.js.map +0 -1
  109. package/dist/osmix/test/extract.test.d.ts +0 -2
  110. package/dist/osmix/test/extract.test.d.ts.map +0 -1
  111. package/dist/osmix/test/extract.test.js +0 -392
  112. package/dist/osmix/test/extract.test.js.map +0 -1
  113. /package/dist/{core/src → src}/index.d.ts +0 -0
  114. /package/dist/{core/src → src}/index.js +0 -0
  115. /package/dist/{core/src → src}/typed-arrays.d.ts +0 -0
  116. /package/dist/{core/src → src}/typed-arrays.js +0 -0
  117. /package/dist/{core/test → test}/memory.test.d.ts +0 -0
  118. /package/dist/{core/test → test}/memory.test.js +0 -0
  119. /package/dist/{core/test → test}/mock-osm.d.ts +0 -0
  120. /package/dist/{core/test → test}/mock-osm.js +0 -0
  121. /package/dist/{core/test → test}/tags-search.test.d.ts +0 -0
  122. /package/dist/{core/test → test}/tags-search.test.js +0 -0
  123. /package/dist/{core/test → test}/typed-arrays.test.d.ts +0 -0
  124. /package/dist/{core/test → test}/typed-arrays.test.js +0 -0
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Utility functions for @osmix/core.
3
+ * @module
4
+ */
5
+ import type { GeoBbox2D, LonLat } from "@osmix/shared/types";
6
+ /**
7
+ * Compute the bounding box of a set of coordinates.
8
+ * Returns `[minLon, minLat, maxLon, maxLat]`.
9
+ */
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;
38
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,87 @@
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
+ */
9
+ export function bboxFromLonLats(lonLats) {
10
+ let minLon = Number.POSITIVE_INFINITY;
11
+ let minLat = Number.POSITIVE_INFINITY;
12
+ let maxLon = Number.NEGATIVE_INFINITY;
13
+ let maxLat = Number.NEGATIVE_INFINITY;
14
+ for (const [lon, lat] of lonLats) {
15
+ if (lon < minLon)
16
+ minLon = lon;
17
+ if (lat < minLat)
18
+ minLat = lat;
19
+ if (lon > maxLon)
20
+ maxLon = lon;
21
+ if (lat > maxLat)
22
+ maxLat = lat;
23
+ }
24
+ return [minLon, minLat, maxLon, maxLat];
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
+ }
87
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
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"}
@@ -6,6 +6,7 @@ import { type IdOrIndex } from "./ids";
6
6
  import type { Nodes } from "./nodes";
7
7
  import type StringTable from "./stringtable";
8
8
  import { type BufferType } from "./typed-arrays";
9
+ import type { ContentHasher } from "./utils";
9
10
  export interface WaysTransferables<T extends BufferType = BufferType> extends EntitiesTransferables<T> {
10
11
  refStart: T;
11
12
  refCount: T;
@@ -97,5 +98,9 @@ export declare class Ways extends Entities<OsmWay> {
97
98
  * Get the approximate memory requirements for a given number of ways in bytes.
98
99
  */
99
100
  static getBytesRequired(count: number): number;
101
+ /**
102
+ * Update a ContentHasher with way-specific data (node references).
103
+ */
104
+ updateHash(hasher: ContentHasher): ContentHasher;
100
105
  }
101
106
  //# sourceMappingURL=ways.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ways.d.ts","sourceRoot":"","sources":["../../src/ways.ts"],"names":[],"mappings":"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"}
@@ -332,5 +332,15 @@ export class Ways extends Entities {
332
332
  count * 4 * Float64Array.BYTES_PER_ELEMENT + // bbox
333
333
  spatialIndexBytes);
334
334
  }
335
+ /**
336
+ * Update a ContentHasher with way-specific data (node references).
337
+ */
338
+ updateHash(hasher) {
339
+ return super
340
+ .updateHash(hasher)
341
+ .update(this.refStart.array)
342
+ .update(this.refCount.array)
343
+ .update(this.refs.array);
344
+ }
335
345
  }
336
346
  //# sourceMappingURL=ways.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ways.js","sourceRoot":"","sources":["../../src/ways.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.test.d.ts","sourceRoot":"","sources":["../../test/memory.test.ts"],"names":[],"mappings":"AAGA,wBAAgB,4BAA4B,CAC3C,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM;;;;;EAYrB"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.test.js","sourceRoot":"","sources":["../../test/memory.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,UAAU,CAAA;AAC/C,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAE/C,MAAM,UAAU,4BAA4B,CAC3C,SAAiB,EACjB,QAAgB,EAChB,aAAqB;IAErB,MAAM,UAAU,GAAG,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAA;IACpD,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAA;IACjD,MAAM,cAAc,GAAG,SAAS,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAA;IAEhE,OAAO;QACN,KAAK,EAAE,UAAU;QACjB,IAAI,EAAE,SAAS;QACf,SAAS,EAAE,cAAc;QACzB,KAAK,EAAE,UAAU,GAAG,SAAS,GAAG,cAAc;KAC9C,CAAA;AACF,CAAC;AAED,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACpC,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QAC1D,MAAM,SAAS,GAAG,4BAA4B,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;QACxD,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;QAC1C,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;QACzC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;QAC9C,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,CAC3B,SAAS,CAAC,KAAK,GAAG,SAAS,CAAC,IAAI,GAAG,SAAS,CAAC,SAAS,CACtD,CAAA;IACF,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QAC1D,MAAM,SAAS,GAAG,4BAA4B,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;QAC/D,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;QAC1C,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;QACzC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAA;IAC/D,CAAC,CAAC,CAAA;AACH,CAAC,CAAC,CAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock-osm.d.ts","sourceRoot":"","sources":["../../test/mock-osm.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAA;AAmChC;;GAEG;AACH,wBAAgB,aAAa,IAAI,GAAG,CAOnC;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,IAAI,GAAG,CAqFpC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock-osm.js","sourceRoot":"","sources":["../../test/mock-osm.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tags-search.test.d.ts","sourceRoot":"","sources":["../../test/tags-search.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tags-search.test.js","sourceRoot":"","sources":["../../test/tags-search.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typed-arrays.test.d.ts","sourceRoot":"","sources":["../../test/typed-arrays.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typed-arrays.test.js","sourceRoot":"","sources":["../../test/typed-arrays.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "$schema": "https://json.schemastore.org/package",
3
3
  "name": "@osmix/core",
4
4
  "type": "module",
5
- "version": "0.0.6",
5
+ "version": "0.1.1",
6
6
  "description": "An OSM PBF reader, writer, and merge tool written in TypeScript",
7
7
  "main": "./src/index.ts",
8
8
  "publishConfig": {
@@ -32,7 +32,7 @@
32
32
  },
33
33
  "sideEffects": false,
34
34
  "scripts": {
35
- "build": "tsc",
35
+ "build": "tsc --excludeDirectories test",
36
36
  "bench": "bun test --bench",
37
37
  "prepublishOnly": "tsc",
38
38
  "test": "bun test",
package/src/entities.ts CHANGED
@@ -16,6 +16,7 @@ import type {
16
16
  import type { IdOrIndex, Ids, IdsTransferables } from "./ids"
17
17
  import type { Tags, TagsTransferables } from "./tags"
18
18
  import type { BufferType } from "./typed-arrays"
19
+ import type { ContentHasher } from "./utils"
19
20
 
20
21
  /**
21
22
  * Serializable representation of an Entities collection for worker transfer.
@@ -208,4 +209,12 @@ export abstract class Entities<T extends OsmEntity> {
208
209
  if (val === undefined) return entities
209
210
  return entities.filter((entity) => entity.tags?.[key] === val)
210
211
  }
212
+
213
+ /**
214
+ * Update a ContentHasher with this entity collection's base data (IDs and tags).
215
+ * Subclasses should override to add entity-specific data.
216
+ */
217
+ updateHash(hasher: ContentHasher): ContentHasher {
218
+ return this.ids.updateHash(this.tags.updateHash(hasher))
219
+ }
211
220
  }
package/src/ids.ts CHANGED
@@ -13,6 +13,7 @@ import {
13
13
  type BufferType,
14
14
  ResizeableTypedArray as RTA,
15
15
  } from "./typed-arrays"
16
+ import type { ContentHasher } from "./utils"
16
17
 
17
18
  /**
18
19
  * Union type for looking up entities by either OSM ID or internal array index.
@@ -279,4 +280,12 @@ export class Ids {
279
280
  Math.ceil(count / BLOCK_SIZE) * Float64Array.BYTES_PER_ELEMENT // anchors
280
281
  )
281
282
  }
283
+
284
+ /**
285
+ * Update a ContentHasher with the IDs data.
286
+ * Uses the sorted IDs for consistent hashing regardless of insertion order.
287
+ */
288
+ updateHash(hasher: ContentHasher): ContentHasher {
289
+ return hasher.update(this.idsSorted)
290
+ }
282
291
  }
package/src/nodes.ts CHANGED
@@ -13,6 +13,7 @@ import {
13
13
  type BufferType,
14
14
  ResizeableTypedArray as RTA,
15
15
  } from "./typed-arrays"
16
+ import type { ContentHasher } from "./utils"
16
17
 
17
18
  export interface NodesTransferables<T extends BufferType = BufferType>
18
19
  extends EntitiesTransferables<T> {
@@ -390,4 +391,14 @@ export class Nodes extends Entities<OsmNode> {
390
391
  spatialIndexBytes
391
392
  )
392
393
  }
394
+
395
+ /**
396
+ * Update a ContentHasher with node-specific data (coordinates).
397
+ */
398
+ override updateHash(hasher: ContentHasher): ContentHasher {
399
+ return super
400
+ .updateHash(hasher)
401
+ .update(this.lons.array)
402
+ .update(this.lats.array)
403
+ }
393
404
  }
package/src/osm.ts CHANGED
@@ -4,11 +4,13 @@ import { Nodes, type NodesTransferables } from "./nodes"
4
4
  import { Relations, type RelationsTransferables } from "./relations"
5
5
  import StringTable, { type StringTableTransferables } from "./stringtable"
6
6
  import type { BufferType } from "./typed-arrays"
7
+ import { ContentHasher } from "./utils"
7
8
  import { Ways, type WaysTransferables } from "./ways"
8
9
 
9
10
  export interface OsmTransferables<T extends BufferType = BufferType> {
10
11
  id: string
11
12
  header: OsmPbfHeaderBlock
13
+ contentHash: string
12
14
  stringTable: StringTableTransferables<T>
13
15
  nodes: NodesTransferables<T>
14
16
  ways: WaysTransferables<T>
@@ -46,6 +48,7 @@ export class Osm {
46
48
  readonly relations: Relations
47
49
 
48
50
  private indexBuilt = false
51
+ private _contentHash = ""
49
52
 
50
53
  /**
51
54
  * Create a new OSM Entity index.
@@ -71,6 +74,7 @@ export class Osm {
71
74
  this.ways,
72
75
  opts.relations.transferables(),
73
76
  )
77
+ this._contentHash = opts._contentHash
74
78
  this.indexBuilt = true
75
79
  } else {
76
80
  this.stringTable = new StringTable(opts.stringTable)
@@ -82,6 +86,7 @@ export class Osm {
82
86
  this.ways,
83
87
  opts.relations,
84
88
  )
89
+ this._contentHash = opts.contentHash
85
90
  this.indexBuilt = true
86
91
  }
87
92
  } else {
@@ -94,6 +99,7 @@ export class Osm {
94
99
 
95
100
  /**
96
101
  * Build the internal indexes for all entities.
102
+ * Also computes the content hash after indexes are built.
97
103
  */
98
104
  buildIndexes() {
99
105
  this.stringTable.buildIndex()
@@ -101,6 +107,8 @@ export class Osm {
101
107
  this.ways.buildIndex()
102
108
  this.relations.buildIndex()
103
109
  this.indexBuilt = true
110
+ // Compute content hash after indexes are built
111
+ this._contentHash = this.computeContentHash()
104
112
  }
105
113
 
106
114
  /**
@@ -165,10 +173,50 @@ export class Osm {
165
173
  return {
166
174
  id: this.id,
167
175
  header: this.header,
176
+ contentHash: this._contentHash,
168
177
  stringTable: this.stringTable.transferables(),
169
178
  nodes: this.nodes.transferables(),
170
179
  ways: this.ways.transferables(),
171
180
  relations: this.relations.transferables(),
172
181
  }
173
182
  }
183
+
184
+ /**
185
+ * Get the content hash of this OSM dataset.
186
+ * The hash is computed when indexes are built.
187
+ *
188
+ * @returns A hex string hash uniquely identifying the content.
189
+ */
190
+ contentHash(): string {
191
+ return this._contentHash
192
+ }
193
+
194
+ /**
195
+ * Check if this OSM dataset has identical content to another.
196
+ * Uses the pre-computed content hash for fast comparison.
197
+ *
198
+ * @param other - The other Osm instance to compare with.
199
+ * @returns True if both datasets have identical content.
200
+ */
201
+ isEqual(other: Osm | null | undefined): boolean {
202
+ if (!other) return false
203
+ return this._contentHash === other._contentHash
204
+ }
205
+
206
+ /**
207
+ * Compute a content hash of all underlying data.
208
+ * This hash uniquely identifies the dataset content regardless of metadata.
209
+ *
210
+ * @returns A hex string hash of the content.
211
+ */
212
+ private computeContentHash(): string {
213
+ const hasher = new ContentHasher()
214
+ // Hash string table first (shared by all entities)
215
+ this.stringTable.updateHash(hasher)
216
+ // Hash each entity collection
217
+ this.nodes.updateHash(hasher)
218
+ this.ways.updateHash(hasher)
219
+ this.relations.updateHash(hasher)
220
+ return hasher.digest()
221
+ }
174
222
  }
package/src/relations.ts CHANGED
@@ -31,7 +31,7 @@ import {
31
31
  IdArrayType,
32
32
  ResizeableTypedArray as RTA,
33
33
  } from "./typed-arrays"
34
- import { bboxFromLonLats } from "./utils"
34
+ import { bboxFromLonLats, type ContentHasher } from "./utils"
35
35
  import type { Ways } from "./ways"
36
36
 
37
37
  const RELATION_MEMBER_TYPES: OsmEntityType[] = ["node", "way", "relation"]
@@ -547,4 +547,17 @@ export class Relations extends Entities<OsmRelation> {
547
547
  spatialIndexBytes
548
548
  )
549
549
  }
550
+
551
+ /**
552
+ * Update a ContentHasher with relation-specific data (members).
553
+ */
554
+ override updateHash(hasher: ContentHasher): ContentHasher {
555
+ return super
556
+ .updateHash(hasher)
557
+ .update(this.memberStart.array)
558
+ .update(this.memberCount.array)
559
+ .update(this.memberRefs.array)
560
+ .update(this.memberTypes.array)
561
+ .update(this.memberRoles.array)
562
+ }
550
563
  }
@@ -9,6 +9,7 @@
9
9
 
10
10
  import type { OsmPbfStringTable } from "@osmix/pbf"
11
11
  import { type BufferType, ResizeableTypedArray as RTA } from "./typed-arrays"
12
+ import type { ContentHasher } from "./utils"
12
13
 
13
14
  /**
14
15
  * Serializable state for worker transfer.
@@ -192,4 +193,15 @@ export default class StringTable {
192
193
  this.ensureReverseIndex()
193
194
  return this.stringToIndex.get(str) ?? -1
194
195
  }
196
+
197
+ /**
198
+ * Update a ContentHasher with the string table's data.
199
+ * Hashes the bytes, start offsets, and counts.
200
+ */
201
+ updateHash(hasher: ContentHasher): ContentHasher {
202
+ return hasher
203
+ .update(this.bytes.array)
204
+ .update(this.start.array)
205
+ .update(this.count.array)
206
+ }
195
207
  }
package/src/tags.ts CHANGED
@@ -11,6 +11,7 @@
11
11
  import type { OsmTags } from "@osmix/shared/types"
12
12
  import StringTable from "./stringtable"
13
13
  import { type BufferType, ResizeableTypedArray as RTA } from "./typed-arrays"
14
+ import type { ContentHasher } from "./utils"
14
15
 
15
16
  /**
16
17
  * Serializable state for worker transfer.
@@ -280,4 +281,16 @@ export class Tags {
280
281
  tagIndex.indexBuilt = true
281
282
  return tagIndex
282
283
  }
284
+
285
+ /**
286
+ * Update a ContentHasher with the tags data.
287
+ * Hashes tag keys and values for each entity.
288
+ */
289
+ updateHash(hasher: ContentHasher): ContentHasher {
290
+ return hasher
291
+ .update(this.tagStart.array)
292
+ .update(this.tagCount.array)
293
+ .update(this.tagKeys.array)
294
+ .update(this.tagVals.array)
295
+ }
283
296
  }
package/src/utils.ts CHANGED
@@ -22,3 +22,74 @@ export function bboxFromLonLats(lonLats: LonLat[]): GeoBbox2D {
22
22
  }
23
23
  return [minLon, minLat, maxLon, maxLat]
24
24
  }
25
+
26
+ // FNV-1a hash constants (32-bit)
27
+ const FNV_OFFSET_BASIS = 2166136261
28
+ const FNV_PRIME = 16777619
29
+
30
+ /**
31
+ * FNV-1a hash implementation for Uint8Array.
32
+ * Fast, non-cryptographic hash suitable for content comparison.
33
+ */
34
+ function fnv1aHash(data: Uint8Array, initialHash = FNV_OFFSET_BASIS): number {
35
+ let hash = initialHash
36
+ for (let i = 0; i < data.length; i++) {
37
+ hash ^= data[i] as number
38
+ hash = Math.imul(hash, FNV_PRIME) >>> 0
39
+ }
40
+ return hash >>> 0
41
+ }
42
+
43
+ /**
44
+ * Hash state that can be incrementally updated with multiple buffers.
45
+ */
46
+ export class ContentHasher {
47
+ private hash = FNV_OFFSET_BASIS
48
+
49
+ /**
50
+ * Update the hash with a typed array's underlying bytes.
51
+ */
52
+ update(data: ArrayBufferView | ArrayBuffer): this {
53
+ const buffer = data instanceof ArrayBuffer ? data : data.buffer
54
+ const bytes = new Uint8Array(buffer)
55
+ this.hash = fnv1aHash(bytes, this.hash)
56
+ return this
57
+ }
58
+
59
+ /**
60
+ * Update the hash with a number (as 8 bytes).
61
+ */
62
+ updateNumber(n: number): this {
63
+ const buffer = new ArrayBuffer(8)
64
+ new Float64Array(buffer)[0] = n
65
+ return this.update(buffer)
66
+ }
67
+
68
+ /**
69
+ * Get the final hash as a hex string.
70
+ */
71
+ digest(): string {
72
+ return this.hash.toString(16).padStart(8, "0")
73
+ }
74
+
75
+ /**
76
+ * Get the raw hash value.
77
+ */
78
+ digestNumber(): number {
79
+ return this.hash
80
+ }
81
+ }
82
+
83
+ /**
84
+ * Create a content hash from multiple typed arrays.
85
+ * Returns a hex string suitable for use as a content identifier.
86
+ */
87
+ export function hashBuffers(
88
+ ...buffers: (ArrayBufferView | ArrayBuffer)[]
89
+ ): string {
90
+ const hasher = new ContentHasher()
91
+ for (const buffer of buffers) {
92
+ hasher.update(buffer)
93
+ }
94
+ return hasher.digest()
95
+ }
package/src/ways.ts CHANGED
@@ -13,6 +13,7 @@ import {
13
13
  IdArrayType,
14
14
  ResizeableTypedArray as RTA,
15
15
  } from "./typed-arrays"
16
+ import type { ContentHasher } from "./utils"
16
17
 
17
18
  export interface WaysTransferables<T extends BufferType = BufferType>
18
19
  extends EntitiesTransferables<T> {
@@ -402,4 +403,15 @@ export class Ways extends Entities<OsmWay> {
402
403
  spatialIndexBytes
403
404
  )
404
405
  }
406
+
407
+ /**
408
+ * Update a ContentHasher with way-specific data (node references).
409
+ */
410
+ override updateHash(hasher: ContentHasher): ContentHasher {
411
+ return super
412
+ .updateHash(hasher)
413
+ .update(this.refStart.array)
414
+ .update(this.refCount.array)
415
+ .update(this.refs.array)
416
+ }
405
417
  }
package/tsconfig.json CHANGED
@@ -2,13 +2,7 @@
2
2
  "$schema": "https://json.schemastore.org/tsconfig",
3
3
  "extends": "@osmix/shared/tsconfig/base.json",
4
4
  "exclude": ["node_modules", "dist"],
5
- "include": [
6
- "src",
7
- "test",
8
- "../osmix/src/extract.ts",
9
- "../osmix/test/extract.test.ts",
10
- "../osmix/test/extract.bench.ts"
11
- ],
5
+ "include": ["src", "test"],
12
6
  "compilerOptions": {
13
7
  "outDir": "./dist"
14
8
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"entities.d.ts","sourceRoot":"","sources":["../../../src/entities.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACX,SAAS,EACT,SAAS,EACT,aAAa,EACb,OAAO,EACP,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAA;AAC7D,OAAO,KAAK,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAA;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAEhD;;;GAGG;AACH,MAAM,WAAW,qBAAqB,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU,CACvE,SAAQ,gBAAgB,CAAC,CAAC,CAAC,EAC1B,iBAAiB,CAAC,CAAC,CAAC;CAAG;AAEzB;;;;;;;GAOG;AACH,8BAAsB,QAAQ,CAAC,CAAC,SAAS,SAAS;IACjD,mFAAmF;IACnF,SAAS,EAAE,aAAa,CAAA;IACxB,4BAA4B;IAC5B,GAAG,EAAE,GAAG,CAAA;IACR,6BAA6B;IAC7B,IAAI,EAAE,IAAI,CAAA;IAEV,2CAA2C;IAC3C,SAAS,CAAC,UAAU,UAAQ;IAE5B;;;;;OAKG;gBACS,SAAS,EAAE,aAAa,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI;IAM1D;;OAEG;IACH,aAAa,IAAI,qBAAqB;IAOtC;;OAEG;IACH,OAAO;IAIP,6CAA6C;IAC7C,IAAI,IAAI,WAEP;IAED;;;;OAIG;IACH,QAAQ,CAAC,gBAAgB,IAAI,IAAI;IAEjC;;;OAGG;IACH,UAAU;IAUV;;;;;OAKG;IACH,QAAQ,CAAC,aAAa,CAAC,SAAS,EAAE,SAAS,GAAG,SAAS;IAEvD;;;;;;;OAOG;IACH,QAAQ,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,CAAC;IAEpE;;OAEG;IACH,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM;IAC/D,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,MAAM;IAa5C;;OAEG;IACH,GAAG,CAAC,SAAS,EAAE,SAAS,GAAG,CAAC,GAAG,IAAI;IAMnC;;OAEG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC;IAQ5B;;OAEG;IACH,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE;IAU1C;;OAEG;IACF,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC;IAMlC;;OAEG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI;IAO7B;;OAEG;IACF,MAAM,IAAI,SAAS,CAAC,CAAC,CAAC;IAQvB;;OAEG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE;CAQtC"}