@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.
- package/CHANGELOG.md +18 -0
- package/dist/{core/src → src}/entities.d.ts +6 -0
- package/dist/src/entities.d.ts.map +1 -0
- package/dist/{core/src → src}/entities.js +7 -0
- package/dist/src/entities.js.map +1 -0
- package/dist/{core/src → src}/ids.d.ts +6 -0
- package/dist/src/ids.d.ts.map +1 -0
- package/dist/{core/src → src}/ids.js +7 -0
- package/dist/src/ids.js.map +1 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js.map +1 -0
- package/dist/{core/src → src}/nodes.d.ts +5 -0
- package/dist/src/nodes.d.ts.map +1 -0
- package/dist/{core/src → src}/nodes.js +9 -0
- package/dist/src/nodes.js.map +1 -0
- package/dist/{core/src → src}/osm.d.ts +25 -0
- package/dist/src/osm.d.ts.map +1 -0
- package/dist/{core/src → src}/osm.js +45 -0
- package/dist/src/osm.js.map +1 -0
- package/dist/{core/src → src}/relations.d.ts +5 -0
- package/dist/src/relations.d.ts.map +1 -0
- package/dist/{core/src → src}/relations.js +12 -0
- package/dist/src/relations.js.map +1 -0
- package/dist/{core/src → src}/stringtable.d.ts +6 -0
- package/dist/src/stringtable.d.ts.map +1 -0
- package/dist/{core/src → src}/stringtable.js +10 -0
- package/dist/src/stringtable.js.map +1 -0
- package/dist/{core/src → src}/tags.d.ts +6 -0
- package/dist/src/tags.d.ts.map +1 -0
- package/dist/{core/src → src}/tags.js +11 -0
- package/dist/src/tags.js.map +1 -0
- package/dist/src/typed-arrays.d.ts.map +1 -0
- package/dist/src/typed-arrays.js.map +1 -0
- package/dist/src/utils.d.ts +38 -0
- package/dist/src/utils.d.ts.map +1 -0
- package/dist/src/utils.js +87 -0
- package/dist/src/utils.js.map +1 -0
- package/dist/{core/src → src}/ways.d.ts +5 -0
- package/dist/src/ways.d.ts.map +1 -0
- package/dist/{core/src → src}/ways.js +10 -0
- package/dist/src/ways.js.map +1 -0
- package/dist/test/memory.test.d.ts.map +1 -0
- package/dist/test/memory.test.js.map +1 -0
- package/dist/test/mock-osm.d.ts.map +1 -0
- package/dist/test/mock-osm.js.map +1 -0
- package/dist/test/tags-search.test.d.ts.map +1 -0
- package/dist/test/tags-search.test.js.map +1 -0
- package/dist/test/typed-arrays.test.d.ts.map +1 -0
- package/dist/test/typed-arrays.test.js.map +1 -0
- package/package.json +2 -2
- package/src/entities.ts +9 -0
- package/src/ids.ts +9 -0
- package/src/nodes.ts +11 -0
- package/src/osm.ts +48 -0
- package/src/relations.ts +14 -1
- package/src/stringtable.ts +12 -0
- package/src/tags.ts +13 -0
- package/src/utils.ts +71 -0
- package/src/ways.ts +12 -0
- package/tsconfig.json +1 -7
- package/dist/core/src/entities.d.ts.map +0 -1
- package/dist/core/src/entities.js.map +0 -1
- package/dist/core/src/ids.d.ts.map +0 -1
- package/dist/core/src/ids.js.map +0 -1
- package/dist/core/src/index.d.ts.map +0 -1
- package/dist/core/src/index.js.map +0 -1
- package/dist/core/src/nodes.d.ts.map +0 -1
- package/dist/core/src/nodes.js.map +0 -1
- package/dist/core/src/osm.d.ts.map +0 -1
- package/dist/core/src/osm.js.map +0 -1
- package/dist/core/src/relations.d.ts.map +0 -1
- package/dist/core/src/relations.js.map +0 -1
- package/dist/core/src/stringtable.d.ts.map +0 -1
- package/dist/core/src/stringtable.js.map +0 -1
- package/dist/core/src/tags.d.ts.map +0 -1
- package/dist/core/src/tags.js.map +0 -1
- package/dist/core/src/typed-arrays.d.ts.map +0 -1
- package/dist/core/src/typed-arrays.js.map +0 -1
- package/dist/core/src/utils.d.ts +0 -11
- package/dist/core/src/utils.d.ts.map +0 -1
- package/dist/core/src/utils.js +0 -26
- package/dist/core/src/utils.js.map +0 -1
- package/dist/core/src/ways.d.ts.map +0 -1
- package/dist/core/src/ways.js.map +0 -1
- package/dist/core/test/memory.test.d.ts.map +0 -1
- package/dist/core/test/memory.test.js.map +0 -1
- package/dist/core/test/mock-osm.d.ts.map +0 -1
- package/dist/core/test/mock-osm.js.map +0 -1
- package/dist/core/test/tags-search.test.d.ts.map +0 -1
- package/dist/core/test/tags-search.test.js.map +0 -1
- package/dist/core/test/typed-arrays.test.d.ts.map +0 -1
- package/dist/core/test/typed-arrays.test.js.map +0 -1
- package/dist/osmix/src/extract.d.ts +0 -43
- package/dist/osmix/src/extract.d.ts.map +0 -1
- package/dist/osmix/src/extract.js +0 -156
- package/dist/osmix/src/extract.js.map +0 -1
- package/dist/osmix/src/pbf.d.ts +0 -55
- package/dist/osmix/src/pbf.d.ts.map +0 -1
- package/dist/osmix/src/pbf.js +0 -187
- package/dist/osmix/src/pbf.js.map +0 -1
- package/dist/osmix/src/utils.d.ts +0 -36
- package/dist/osmix/src/utils.d.ts.map +0 -1
- package/dist/osmix/src/utils.js +0 -108
- package/dist/osmix/src/utils.js.map +0 -1
- package/dist/osmix/test/extract.bench.d.ts +0 -2
- package/dist/osmix/test/extract.bench.d.ts.map +0 -1
- package/dist/osmix/test/extract.bench.js +0 -26
- package/dist/osmix/test/extract.bench.js.map +0 -1
- package/dist/osmix/test/extract.test.d.ts +0 -2
- package/dist/osmix/test/extract.test.d.ts.map +0 -1
- package/dist/osmix/test/extract.test.js +0 -392
- package/dist/osmix/test/extract.test.js.map +0 -1
- /package/dist/{core/src → src}/index.d.ts +0 -0
- /package/dist/{core/src → src}/index.js +0 -0
- /package/dist/{core/src → src}/typed-arrays.d.ts +0 -0
- /package/dist/{core/src → src}/typed-arrays.js +0 -0
- /package/dist/{core/test → test}/memory.test.d.ts +0 -0
- /package/dist/{core/test → test}/memory.test.js +0 -0
- /package/dist/{core/test → test}/mock-osm.d.ts +0 -0
- /package/dist/{core/test → test}/mock-osm.js +0 -0
- /package/dist/{core/test → test}/tags-search.test.d.ts +0 -0
- /package/dist/{core/test → test}/tags-search.test.js +0 -0
- /package/dist/{core/test → test}/typed-arrays.test.d.ts +0 -0
- /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":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,UAAU,CAAA;AAE/C,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AACpC,OAAO,WAAW,MAAM,oBAAoB,CAAA;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAElC,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACrC,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACrC,MAAM,EAAE,GAAG,IAAI,WAAW,EAAE,CAAA;QAC5B,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC,CAAA;QAC3B,MAAM,KAAK,GAAY,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAAA;QACxE,MAAM,KAAK,GAAY,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAA;QACvE,MAAM,KAAK,GAAY,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAA;QACjD,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QACpB,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QACpB,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QACpB,KAAK,CAAC,UAAU,EAAE,CAAA;QAElB,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QACpC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAA;QACvC,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;QAC3C,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA;QAChC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;QACzC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA;QAC/B,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;QACpC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IACzB,CAAC,CAAC,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACpC,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACrC,MAAM,EAAE,GAAG,IAAI,WAAW,EAAE,CAAA;QAC5B,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC,CAAA;QAC3B,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;QAChC,MAAM,IAAI,GAAW;YACpB,EAAE,EAAE,EAAE;YACN,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YACZ,IAAI,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE;SAChC,CAAA;QACD,MAAM,IAAI,GAAW,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAAA;QACpE,MAAM,IAAI,GAAW;YACpB,EAAE,EAAE,EAAE;YACN,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YACZ,IAAI,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE;SACxC,CAAA;QACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QACjB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QACjB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QACjB,IAAI,CAAC,UAAU,EAAE,CAAA;QAEjB,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;QACzC,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;QACxC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;QAC1C,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;QAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QACnC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;QACrC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;QACxC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;IAC/B,CAAC,CAAC,CAAA;AACH,CAAC,CAAC,CAAA"}
|
|
@@ -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.
|
|
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
|
}
|
package/src/stringtable.ts
CHANGED
|
@@ -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"}
|