@osmix/core 0.1.8 → 0.2.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.
- package/CHANGELOG.md +37 -0
- package/LICENSE +21 -0
- package/README.md +86 -69
- package/dist/contracts.d.ts +26 -0
- package/dist/contracts.d.ts.map +1 -0
- package/dist/contracts.js +1 -0
- package/dist/contracts.js.map +1 -0
- package/dist/entities.d.ts +1 -1
- package/dist/entities.d.ts.map +1 -1
- package/dist/entities.js +2 -7
- package/dist/entities.js.map +1 -1
- package/dist/ids.d.ts +2 -0
- package/dist/ids.d.ts.map +1 -1
- package/dist/ids.js +23 -15
- package/dist/ids.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -1
- package/dist/index.js.map +1 -1
- package/dist/mocks.d.ts.map +1 -1
- package/dist/mocks.js.map +1 -1
- package/dist/nodes.d.ts +9 -3
- package/dist/nodes.d.ts.map +1 -1
- package/dist/nodes.js +6 -13
- package/dist/nodes.js.map +1 -1
- package/dist/osm.d.ts +1 -1
- package/dist/osm.d.ts.map +1 -1
- package/dist/osm.js +1 -4
- package/dist/osm.js.map +1 -1
- package/dist/relations.d.ts +3 -2
- package/dist/relations.d.ts.map +1 -1
- package/dist/relations.js +15 -9
- package/dist/relations.js.map +1 -1
- package/dist/stringtable.d.ts.map +1 -1
- package/dist/stringtable.js +4 -13
- package/dist/stringtable.js.map +1 -1
- package/dist/tags.d.ts +1 -1
- package/dist/tags.d.ts.map +1 -1
- package/dist/tags.js.map +1 -1
- package/dist/typed-arrays.d.ts +1 -1
- package/dist/typed-arrays.d.ts.map +1 -1
- package/dist/typed-arrays.js.map +1 -1
- package/dist/ways.d.ts +2 -1
- package/dist/ways.d.ts.map +1 -1
- package/dist/ways.js +18 -18
- package/dist/ways.js.map +1 -1
- package/package.json +46 -31
- package/src/contracts.ts +28 -0
- package/src/entities.ts +179 -194
- package/src/ids.ts +228 -235
- package/src/index.ts +12 -9
- package/src/mocks.ts +114 -113
- package/src/nodes.ts +364 -397
- package/src/osm.ts +196 -207
- package/src/relations.ts +530 -558
- package/src/stringtable.ts +174 -183
- package/src/tags.ts +263 -271
- package/src/typed-arrays.ts +184 -194
- package/src/types/geoflatbush.d.ts +28 -33
- package/src/types/geokdbush.d.ts +28 -33
- package/src/types/kdbush.d.ts +34 -34
- package/src/ways.ts +381 -405
- package/test/ids.bench.ts +29 -0
- package/test/ids.test.ts +84 -0
- package/test/memory.test.ts +29 -30
- package/test/relations.bench.ts +27 -0
- package/test/relations.test.ts +101 -0
- package/test/tags-search.test.ts +76 -56
- package/test/typed-arrays.test.ts +100 -99
- package/tsconfig.build.json +6 -3
- package/tsconfig.json +7 -7
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,42 @@
|
|
|
1
1
|
# @osmix/core
|
|
2
2
|
|
|
3
|
+
## 0.2.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 368d103: Split shared concerns into `@osmix/types`, `@osmix/geo`, and `@osmix/test-utils`. Add `OsmReader`/`OsmWriter` contracts, curated `osmix` facade exports, and dependency guardrails.
|
|
8
|
+
- c7a5a35: Harden parsing, loading, changeset generation, worker orchestration, and package verification across Osmix.
|
|
9
|
+
|
|
10
|
+
- `@osmix/pbf`, `@osmix/json`, and `@osmix/load` now validate PBF framing and decompression limits, normalize every supported input form, apply timestamp granularity consistently, translate tags before filtering, remove dangling filtered references, and build every requested spatial index.
|
|
11
|
+
- `@osmix/core` now returns `null` for unknown node-coordinate lookups, safely handles incomplete geometry, caches relation-to-way membership, and avoids repeated ID lookups and per-entity object allocation during sorted iteration.
|
|
12
|
+
- `@osmix/change` now preserves relation references during deduplication, escapes OSC XML attributes, applies changesets non-destructively, allocates collision-free IDs for empty or unsorted data, and resolves pending intersection geometry safely. Its intersection runtime is now vendored and strictly typed, removing the upstream test/build dependency graph.
|
|
13
|
+
- `osmix` now preserves sliced typed-array views during transfer, disposes and terminates owned workers reliably, uses collision-safe worker registries, and supports all documented PBF input forms across local and remote APIs.
|
|
14
|
+
- `@osmix/geojson`, `@osmix/vt`, and `@osmix/shortbread` now consume nullable or read-only geometry data without aliasing or mutation hazards.
|
|
15
|
+
- `@osmix/gtfs` and `@osmix/router` documentation now uses the current archive, routing, transfer, and distance APIs.
|
|
16
|
+
- `@osmix/shared` and `@osmix/test-utils` add executable package smoke coverage for byte streams and checked-in fixtures.
|
|
17
|
+
- Public package examples are classified as compilable or schematic and are checked against current exports and argument types.
|
|
18
|
+
|
|
19
|
+
### Patch Changes
|
|
20
|
+
|
|
21
|
+
- Updated dependencies [368d103]
|
|
22
|
+
- Updated dependencies [368d103]
|
|
23
|
+
- Updated dependencies [c7a5a35]
|
|
24
|
+
- @osmix/shared@0.1.0
|
|
25
|
+
- @osmix/geo@0.1.0
|
|
26
|
+
- @osmix/types@0.1.0
|
|
27
|
+
|
|
28
|
+
## 0.1.10
|
|
29
|
+
|
|
30
|
+
### Patch Changes
|
|
31
|
+
|
|
32
|
+
- d67e38d: Bump dependencies to latest majors and adopt TypeScript 7 RC
|
|
33
|
+
|
|
34
|
+
## 0.1.9
|
|
35
|
+
|
|
36
|
+
### Patch Changes
|
|
37
|
+
|
|
38
|
+
- 6144903: Use published kdbush package for pnpm compatibility
|
|
39
|
+
|
|
3
40
|
## 0.1.8
|
|
4
41
|
|
|
5
42
|
### Patch Changes
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Conveyal
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -13,7 +13,7 @@ In-memory OSM entity storage with spatial indexing. Provides core data structure
|
|
|
13
13
|
## Installation
|
|
14
14
|
|
|
15
15
|
```sh
|
|
16
|
-
|
|
16
|
+
pnpm add @osmix/core
|
|
17
17
|
```
|
|
18
18
|
|
|
19
19
|
## Usage
|
|
@@ -22,89 +22,93 @@ bun add @osmix/core
|
|
|
22
22
|
|
|
23
23
|
`@osmix/core` provides the in-memory data structures. To parse `.osm.pbf` files, use the high-level `osmix` package:
|
|
24
24
|
|
|
25
|
-
```ts
|
|
26
|
-
import { fromPbf } from "osmix"
|
|
25
|
+
```ts check-docs monaco-pbf
|
|
26
|
+
import { fromPbf } from "osmix";
|
|
27
27
|
|
|
28
|
-
const osm = await fromPbf(
|
|
29
|
-
console.log(osm.nodes.size, osm.ways.size, osm.relations.size)
|
|
28
|
+
const osm = await fromPbf(monacoPbf);
|
|
29
|
+
console.log(osm.nodes.size, osm.ways.size, osm.relations.size);
|
|
30
30
|
```
|
|
31
31
|
|
|
32
32
|
### Building data directly
|
|
33
33
|
|
|
34
34
|
For synthetic data or tests, instantiate `Osm` directly and call `buildIndexes()` / `buildSpatialIndexes()` before querying:
|
|
35
35
|
|
|
36
|
-
```ts
|
|
37
|
-
import { Osm } from "@osmix/core"
|
|
36
|
+
```ts check-docs
|
|
37
|
+
import { Osm } from "@osmix/core";
|
|
38
38
|
|
|
39
|
-
const osm = new Osm({ id: "fixture" })
|
|
39
|
+
const osm = new Osm({ id: "fixture" });
|
|
40
40
|
|
|
41
41
|
osm.nodes.addNode({
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
})
|
|
42
|
+
id: 1,
|
|
43
|
+
lon: -122.4,
|
|
44
|
+
lat: 47.6,
|
|
45
|
+
tags: { amenity: "cafe" },
|
|
46
|
+
});
|
|
47
47
|
|
|
48
48
|
osm.ways.addWay({
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
})
|
|
49
|
+
id: 10,
|
|
50
|
+
refs: [1],
|
|
51
|
+
tags: { highway: "service" },
|
|
52
|
+
});
|
|
53
53
|
|
|
54
|
-
osm.buildIndexes()
|
|
55
|
-
osm.buildSpatialIndexes()
|
|
54
|
+
osm.buildIndexes();
|
|
55
|
+
osm.buildSpatialIndexes();
|
|
56
56
|
```
|
|
57
57
|
|
|
58
58
|
### Querying entities
|
|
59
59
|
|
|
60
|
-
```ts
|
|
60
|
+
```ts check-docs osm
|
|
61
61
|
// Get by ID
|
|
62
|
-
const node = osm.nodes.getById(123)
|
|
63
|
-
const way = osm.ways.get({ id: 456 })
|
|
62
|
+
const node = osm.nodes.getById(123);
|
|
63
|
+
const way = osm.ways.get({ id: 456 });
|
|
64
64
|
|
|
65
65
|
// Iterate all entities
|
|
66
66
|
for (const node of osm.nodes) {
|
|
67
|
-
|
|
67
|
+
console.log(node.id, node.lon, node.lat);
|
|
68
68
|
}
|
|
69
69
|
|
|
70
70
|
// Iterate sorted by ID (useful for PBF export)
|
|
71
71
|
for (const way of osm.ways.sorted()) {
|
|
72
|
-
|
|
72
|
+
console.log(way.id, way.refs);
|
|
73
73
|
}
|
|
74
74
|
|
|
75
75
|
// Search by tag key
|
|
76
|
-
const highways = osm.ways.search("highway")
|
|
77
|
-
const cafes = osm.nodes.search("amenity", "cafe")
|
|
76
|
+
const highways = osm.ways.search("highway");
|
|
77
|
+
const cafes = osm.nodes.search("amenity", "cafe");
|
|
78
78
|
```
|
|
79
79
|
|
|
80
80
|
### Spatial queries
|
|
81
81
|
|
|
82
|
-
```ts
|
|
82
|
+
```ts check-docs osm
|
|
83
83
|
// Bounding box query
|
|
84
|
-
const bbox: [number, number, number, number] = [-122.34, 47.57, -122.
|
|
85
|
-
const { ids, positions } = osm.nodes.withinBbox(bbox)
|
|
86
|
-
const { ids: wayIds, positions: wayCoords, startIndices } = osm.ways.withinBbox(bbox)
|
|
84
|
+
const bbox: [number, number, number, number] = [-122.34, 47.57, -122.3, 47.61];
|
|
85
|
+
const { ids, positions } = osm.nodes.withinBbox(bbox);
|
|
86
|
+
const { ids: wayIds, positions: wayCoords, startIndices } = osm.ways.withinBbox(bbox);
|
|
87
87
|
|
|
88
88
|
// Radius query (uses great-circle distance)
|
|
89
|
-
const nearbyIndexes = osm.nodes.findIndexesWithinRadius(-122.4, 47.6, 10) // 10km
|
|
89
|
+
const nearbyIndexes = osm.nodes.findIndexesWithinRadius(-122.4, 47.6, 10); // 10km
|
|
90
90
|
|
|
91
91
|
// Get entities from indexes
|
|
92
|
-
const nearbyNodes = nearbyIndexes.map((i) => osm.nodes.getByIndex(i))
|
|
92
|
+
const nearbyNodes = nearbyIndexes.map((i) => osm.nodes.getByIndex(i));
|
|
93
93
|
|
|
94
94
|
// Ways/relations use Flatbush for bounding-box intersection
|
|
95
|
-
const intersectingWays = osm.ways.intersects(bbox)
|
|
96
|
-
const nearestWays = osm.ways.neighbors(-122.4, 47.6, 5, 10) // 5 results, 10km max
|
|
95
|
+
const intersectingWays = osm.ways.intersects(bbox);
|
|
96
|
+
const nearestWays = osm.ways.neighbors(-122.4, 47.6, 5, 10); // 5 results, 10km max
|
|
97
97
|
```
|
|
98
98
|
|
|
99
99
|
### Transferring between workers
|
|
100
100
|
|
|
101
|
-
|
|
101
|
+
The following is schematic worker wiring; use the facade's worker helpers for production orchestration:
|
|
102
|
+
|
|
103
|
+
```ts schematic
|
|
104
|
+
import { collectTransferables, Osm } from "osmix";
|
|
105
|
+
|
|
102
106
|
// In the main thread
|
|
103
|
-
const transferables = osm.transferables()
|
|
104
|
-
worker.postMessage(transferables,
|
|
107
|
+
const transferables = osm.transferables();
|
|
108
|
+
worker.postMessage(transferables, collectTransferables(transferables));
|
|
105
109
|
|
|
106
110
|
// In the worker
|
|
107
|
-
const osm = new Osm(transferables)
|
|
111
|
+
const osm = new Osm(transferables);
|
|
108
112
|
// Index is already built, ready for queries
|
|
109
113
|
```
|
|
110
114
|
|
|
@@ -112,39 +116,39 @@ const osm = new Osm(transferables)
|
|
|
112
116
|
|
|
113
117
|
### Classes
|
|
114
118
|
|
|
115
|
-
| Class
|
|
116
|
-
|
|
117
|
-
| `Osm`
|
|
118
|
-
| `Nodes`
|
|
119
|
-
| `Ways`
|
|
120
|
-
| `Relations`
|
|
121
|
-
| `StringTable` | Deduplicated UTF-8 string storage for tags
|
|
122
|
-
| `Tags`
|
|
119
|
+
| Class | Description |
|
|
120
|
+
| ------------- | ------------------------------------------------------------------- |
|
|
121
|
+
| `Osm` | Main container with nodes, ways, relations, and shared string table |
|
|
122
|
+
| `Nodes` | Node storage with KDBush spatial index |
|
|
123
|
+
| `Ways` | Way storage with Flatbush spatial index |
|
|
124
|
+
| `Relations` | Relation storage with Flatbush spatial index |
|
|
125
|
+
| `StringTable` | Deduplicated UTF-8 string storage for tags |
|
|
126
|
+
| `Tags` | Bidirectional tag storage (entity→tags, key→entities) |
|
|
123
127
|
|
|
124
128
|
### Osm Methods
|
|
125
129
|
|
|
126
|
-
| Method
|
|
127
|
-
|
|
128
|
-
| `buildIndexes()`
|
|
129
|
-
| `buildSpatialIndexes()` | Build spatial indexes for all entity types
|
|
130
|
-
| `bbox()`
|
|
131
|
-
| `info()`
|
|
132
|
-
| `transferables()`
|
|
133
|
-
| `isReady()`
|
|
130
|
+
| Method | Description |
|
|
131
|
+
| ----------------------- | ------------------------------------------------------ |
|
|
132
|
+
| `buildIndexes()` | Finalize ID, tag, and entity indexes after adding data |
|
|
133
|
+
| `buildSpatialIndexes()` | Build spatial indexes for all entity types |
|
|
134
|
+
| `bbox()` | Get bounding box of all entities |
|
|
135
|
+
| `info()` | Get summary info (id, bbox, header, stats) |
|
|
136
|
+
| `transferables()` | Get serializable buffers for worker transfer |
|
|
137
|
+
| `isReady()` | Check if all indexes are built |
|
|
134
138
|
|
|
135
139
|
### Entity Collection Methods
|
|
136
140
|
|
|
137
|
-
| Method
|
|
138
|
-
|
|
139
|
-
| `getById(id)`
|
|
140
|
-
| `get({ id } \| { index })`
|
|
141
|
-
| `getByIndex(index)`
|
|
142
|
-
| `search(key, value?)`
|
|
143
|
-
| `withinBbox(bbox)`
|
|
144
|
-
| `findIndexesWithinRadius(lon, lat, km)` | Find nearby entities (nodes)
|
|
145
|
-
| `intersects(bbox)`
|
|
146
|
-
| `neighbors(lon, lat, max, maxKm)`
|
|
147
|
-
| `sorted()`
|
|
141
|
+
| Method | Description |
|
|
142
|
+
| --------------------------------------- | ----------------------------------------------- |
|
|
143
|
+
| `getById(id)` | Get entity by OSM ID |
|
|
144
|
+
| `get({ id } \| { index })` | Get by ID or internal index |
|
|
145
|
+
| `getByIndex(index)` | Get by internal array index |
|
|
146
|
+
| `search(key, value?)` | Find entities with tag key (and optional value) |
|
|
147
|
+
| `withinBbox(bbox)` | Get entities within bounding box |
|
|
148
|
+
| `findIndexesWithinRadius(lon, lat, km)` | Find nearby entities (nodes) |
|
|
149
|
+
| `intersects(bbox)` | Find intersecting entities (ways/relations) |
|
|
150
|
+
| `neighbors(lon, lat, max, maxKm)` | Find nearest entities (ways/relations) |
|
|
151
|
+
| `sorted()` | Iterator over entities sorted by ID |
|
|
148
152
|
|
|
149
153
|
## Environment and Limitations
|
|
150
154
|
|
|
@@ -155,6 +159,7 @@ const osm = new Osm(transferables)
|
|
|
155
159
|
## Related Packages
|
|
156
160
|
|
|
157
161
|
- [`osmix`](../osmix/README.md) — High-level API for loading PBF files and worker orchestration.
|
|
162
|
+
- [`@osmix/load`](../load/README.md) — PBF loading, geographic extracts, and export into `Osm` indexes.
|
|
158
163
|
- [`@osmix/pbf`](../pbf/README.md) — Low-level PBF parsing and serialization.
|
|
159
164
|
- [`@osmix/json`](../json/README.md) — JSON entity conversion.
|
|
160
165
|
- [`@osmix/geojson`](../geojson/README.md) — Convert entities to GeoJSON features.
|
|
@@ -163,9 +168,21 @@ const osm = new Osm(transferables)
|
|
|
163
168
|
## Development
|
|
164
169
|
|
|
165
170
|
```sh
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
171
|
+
pnpm run test packages/core
|
|
172
|
+
pnpm run typecheck packages/core
|
|
173
|
+
pnpm run lint packages/core
|
|
169
174
|
```
|
|
170
175
|
|
|
171
|
-
Run `
|
|
176
|
+
Run `pnpm run check` at the repo root before publishing.
|
|
177
|
+
|
|
178
|
+
## Test helpers
|
|
179
|
+
|
|
180
|
+
Mock OSM datasets for tests are available via a separate entrypoint (not re-exported from the main package):
|
|
181
|
+
|
|
182
|
+
```ts check-docs
|
|
183
|
+
import { createMockBaseOsm, createMockPatchOsm } from "@osmix/core/mocks";
|
|
184
|
+
|
|
185
|
+
const base = createMockBaseOsm();
|
|
186
|
+
const patch = createMockPatchOsm();
|
|
187
|
+
console.log(base.id, patch.id);
|
|
188
|
+
```
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { GeoBbox2D } from "@osmix/types";
|
|
2
|
+
import type { Nodes } from "./nodes.ts";
|
|
3
|
+
import type { Relations } from "./relations.ts";
|
|
4
|
+
import type { Ways } from "./ways.ts";
|
|
5
|
+
/**
|
|
6
|
+
* Read-only contract for tile encoders, exporters, and spatial queries.
|
|
7
|
+
*
|
|
8
|
+
* Encoders only need entity accessors and spatial indexes; they do not mutate
|
|
9
|
+
* the underlying dataset. The concrete {@link Osm} class satisfies this interface.
|
|
10
|
+
*/
|
|
11
|
+
export interface OsmReader {
|
|
12
|
+
readonly id: string;
|
|
13
|
+
readonly nodes: Nodes;
|
|
14
|
+
readonly ways: Ways;
|
|
15
|
+
readonly relations: Relations;
|
|
16
|
+
bbox(): GeoBbox2D;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Write contract for format importers that populate an in-memory index.
|
|
20
|
+
*/
|
|
21
|
+
export interface OsmWriter extends OsmReader {
|
|
22
|
+
buildIndexes(): void;
|
|
23
|
+
buildSpatialIndexes(): void;
|
|
24
|
+
isReady(): boolean;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=contracts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../src/contracts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEtC;;;;;GAKG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,IAAI,IAAI,SAAS,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,SAAU,SAAQ,SAAS;IAC1C,YAAY,IAAI,IAAI,CAAC;IACrB,mBAAmB,IAAI,IAAI,CAAC;IAC5B,OAAO,IAAI,OAAO,CAAC;CACpB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=contracts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contracts.js","sourceRoot":"","sources":["../src/contracts.ts"],"names":[],"mappings":""}
|
package/dist/entities.d.ts
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* @module
|
|
8
8
|
*/
|
|
9
9
|
import type { ContentHasher } from "@osmix/shared/content-hasher";
|
|
10
|
-
import type { GeoBbox2D, OsmEntity, OsmEntityType, OsmTags } from "@osmix/
|
|
10
|
+
import type { GeoBbox2D, OsmEntity, OsmEntityType, OsmTags } from "@osmix/types";
|
|
11
11
|
import type { IdOrIndex, Ids, IdsTransferables } from "./ids.ts";
|
|
12
12
|
import type { Tags, TagsTransferables } from "./tags.ts";
|
|
13
13
|
import type { BufferType } from "./typed-arrays.ts";
|
package/dist/entities.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entities.d.ts","sourceRoot":"","sources":["../src/entities.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,
|
|
1
|
+
{"version":3,"file":"entities.d.ts","sourceRoot":"","sources":["../src/entities.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEjF,OAAO,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AACjE,OAAO,KAAK,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD;;;GAGG;AACH,MAAM,WAAW,qBAAqB,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU,CACtE,SAAQ,gBAAgB,CAAC,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC;CAAG;AAEtD;;;;;;;GAOG;AACH,8BAAsB,QAAQ,CAAC,CAAC,SAAS,SAAS;IAChD,mFAAmF;IACnF,SAAS,EAAE,aAAa,CAAC;IACzB,4BAA4B;IAC5B,GAAG,EAAE,GAAG,CAAC;IACT,6BAA6B;IAC7B,IAAI,EAAE,IAAI,CAAC;IAEX,2CAA2C;IAC3C,SAAS,CAAC,UAAU,UAAS;IAE7B;;;;;OAKG;IACH,YAAY,SAAS,EAAE,aAAa,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAIzD;IAED;;OAEG;IACH,aAAa,IAAI,qBAAqB,CAKrC;IAED;;OAEG;IACH,OAAO,YAEN;IAED,6CAA6C;IAC7C,IAAI,IAAI,WAEP;IAED;;;;OAIG;IACH,QAAQ,CAAC,gBAAgB,IAAI,IAAI,CAAC;IAElC;;;OAGG;IACH,UAAU,SAQT;IAED;;;;;OAKG;IACH,QAAQ,CAAC,aAAa,CAAC,SAAS,EAAE,SAAS,GAAG,SAAS,CAAC;IAExD;;;;;;;OAOG;IACH,QAAQ,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC;IAErE;;OAEG;IACH,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAChE,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC;IAY7C;;OAEG;IACH,GAAG,CAAC,SAAS,EAAE,SAAS,GAAG,CAAC,GAAG,IAAI,CAIlC;IAED;;OAEG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,CAE3B;IAED;;OAEG;IACH,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,CAQzC;IAED;;OAEG;IACF,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAIjC;IAED;;OAEG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI,CAI5B;IAED;;OAEG;IACF,MAAM,IAAI,SAAS,CAAC,CAAC,CAAC,CAItB;IAED;;OAEG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,CAKrC;IAED;;;OAGG;IACH,UAAU,CAAC,MAAM,EAAE,aAAa,GAAG,aAAa,CAE/C;CACF"}
|
package/dist/entities.js
CHANGED
|
@@ -129,10 +129,7 @@ export class Entities {
|
|
|
129
129
|
* Iterate over entities sorted by ID.
|
|
130
130
|
*/
|
|
131
131
|
*sorted() {
|
|
132
|
-
for (const id of this.ids.
|
|
133
|
-
const index = this.ids.getIndexFromId(id);
|
|
134
|
-
if (index === -1)
|
|
135
|
-
throw Error(`Entity not found at id ${id}`);
|
|
132
|
+
for (const [id, index] of this.ids.sortedEntries()) {
|
|
136
133
|
yield this.getFullEntity(index, id, this.tags.getTags(index));
|
|
137
134
|
}
|
|
138
135
|
}
|
|
@@ -141,9 +138,7 @@ export class Entities {
|
|
|
141
138
|
*/
|
|
142
139
|
search(key, val) {
|
|
143
140
|
const keyIndex = this.tags.find(key);
|
|
144
|
-
const entities = this.tags
|
|
145
|
-
.hasKey(keyIndex)
|
|
146
|
-
.map((index) => this.getByIndex(index));
|
|
141
|
+
const entities = this.tags.hasKey(keyIndex).map((index) => this.getByIndex(index));
|
|
147
142
|
if (val === undefined)
|
|
148
143
|
return entities;
|
|
149
144
|
return entities.filter((entity) => entity.tags?.[key] === val);
|
package/dist/entities.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entities.js","sourceRoot":"","sources":["../src/entities.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"entities.js","sourceRoot":"","sources":["../src/entities.ts"],"names":[],"mappings":"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"}
|
package/dist/ids.d.ts
CHANGED
|
@@ -101,6 +101,8 @@ export declare class Ids {
|
|
|
101
101
|
idOrIndex(i: IdOrIndex): [index: number, id: number];
|
|
102
102
|
/** Returns the sorted array of IDs for iteration. */
|
|
103
103
|
get sorted(): Float64Array<ArrayBufferLike>;
|
|
104
|
+
/** @internal Iterate sorted IDs with their original storage positions. */
|
|
105
|
+
sortedEntries(): Generator<readonly [id: number, index: number]>;
|
|
104
106
|
/**
|
|
105
107
|
* Get transferable buffers for passing to another thread.
|
|
106
108
|
* @returns Serializable representation of this index.
|
package/dist/ids.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ids.d.ts","sourceRoot":"","sources":["../src/ids.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,
|
|
1
|
+
{"version":3,"file":"ids.d.ts","sourceRoot":"","sources":["../src/ids.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAElE,OAAO,EAAqB,KAAK,UAAU,EAA+B,MAAM,mBAAmB,CAAC;AAEpG;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAS3D;;GAEG;AACH,MAAM,WAAW,gBAAgB,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU;IACjE,qCAAqC;IACrC,GAAG,EAAE,CAAC,CAAC;IACP,sEAAsE;IACtE,SAAS,EAAE,CAAC,CAAC;IACb,uDAAuD;IACvD,uBAAuB,EAAE,CAAC,CAAC;IAC3B,mDAAmD;IACnD,OAAO,EAAE,CAAC,CAAC;IACX,oDAAoD;IACpD,YAAY,EAAE,OAAO,CAAC;CACvB;AAED;;;;;GAKG;AACH,qBAAa,GAAG;IACd,iCAAiC;IACjC,OAAO,CAAC,GAAG,CAAoB;IAC/B,2CAA2C;IAC3C,OAAO,CAAC,UAAU,CAAS;IAC3B,4EAA4E;IAC5E,OAAO,CAAC,YAAY,CAAQ;IAC5B,2CAA2C;IAC3C,OAAO,CAAC,SAAS,CAAe;IAChC,+DAA+D;IAC/D,OAAO,CAAC,uBAAuB,CAAc;IAC7C,8EAA8E;IAC9E,OAAO,CAAC,OAAO,CAAe;IAE9B;;;OAGG;IACH,YAAY,aAAa,CAAC,EAAE,gBAAgB,EAc3C;IAED,0CAA0C;IAC1C,IAAI,IAAI,WAEP;IAED,4EAA4E;IAC5E,OAAO,YAEN;IAED,4DAA4D;IAC5D,QAAQ,YAEP;IAED;;;;;OAKG;IACH,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAItB;IAED;;;;OAIG;IACH,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAExB;IAED;;;;OAIG;IACH,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAEvB;IAED;;;;;OAKG;IACH,UAAU,SA6CT;IAED;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAmCjC;IAED;;OAEG;IACH,SAAS,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,CAGnD;IAED,qDAAqD;IACrD,IAAI,MAAM,kCAET;IAED,0EAA0E;IACzE,aAAa,IAAI,SAAS,CAAC,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAQhE;IAED;;;OAGG;IACH,aAAa,IAAI,gBAAgB,CAQhC;IAED;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,MAAM,UAQpC;IAED;;;OAGG;IACH,UAAU,CAAC,MAAM,EAAE,aAAa,GAAG,aAAa,CAE/C;CACF"}
|
package/dist/ids.js
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* @module
|
|
8
8
|
*/
|
|
9
9
|
import { assertValue } from "@osmix/shared/assert";
|
|
10
|
-
import { BufferConstructor, ResizeableTypedArray as RTA
|
|
10
|
+
import { BufferConstructor, ResizeableTypedArray as RTA } from "./typed-arrays.js";
|
|
11
11
|
/**
|
|
12
12
|
* Number of IDs per anchor block for the two-level binary search.
|
|
13
13
|
* Smaller values increase anchor array size but speed up block-level search;
|
|
@@ -110,22 +110,20 @@ export class Ids {
|
|
|
110
110
|
const posBuffer = new BufferConstructor(this.size * Uint32Array.BYTES_PER_ELEMENT);
|
|
111
111
|
this.idsSorted = new Float64Array(idsBuffer);
|
|
112
112
|
this.sortedIdPositionToIndex = new Uint32Array(posBuffer);
|
|
113
|
-
//
|
|
113
|
+
// Sort positions by ID, using the original position as a deterministic
|
|
114
|
+
// tie-breaker for duplicate IDs.
|
|
115
|
+
const sortedPositions = new Uint32Array(this.size);
|
|
116
|
+
for (let i = 0; i < this.size; i++)
|
|
117
|
+
sortedPositions[i] = i;
|
|
118
|
+
sortedPositions.sort((a, b) => {
|
|
119
|
+
const idDifference = this.ids.array[a] - this.ids.array[b];
|
|
120
|
+
return idDifference === 0 ? a - b : idDifference;
|
|
121
|
+
});
|
|
114
122
|
for (let i = 0; i < this.size; i++) {
|
|
115
|
-
|
|
116
|
-
this.
|
|
123
|
+
const position = sortedPositions[i];
|
|
124
|
+
this.idsSorted[i] = this.ids.array[position];
|
|
125
|
+
this.sortedIdPositionToIndex[i] = position;
|
|
117
126
|
}
|
|
118
|
-
// Sort by id, carrying position; use native sort on chunks or a custom radix/merge for stability.
|
|
119
|
-
// For simplicity:
|
|
120
|
-
const tmp = Array.from({ length: this.size }, (_, i) => ({
|
|
121
|
-
id: this.idsSorted[i],
|
|
122
|
-
pos: this.sortedIdPositionToIndex[i],
|
|
123
|
-
}));
|
|
124
|
-
tmp.sort((a, b) => a.id - b.id);
|
|
125
|
-
tmp.forEach(({ id, pos }, i) => {
|
|
126
|
-
this.idsSorted[i] = id;
|
|
127
|
-
this.sortedIdPositionToIndex[i] = pos;
|
|
128
|
-
});
|
|
129
127
|
}
|
|
130
128
|
else {
|
|
131
129
|
// Point to the same array
|
|
@@ -206,6 +204,16 @@ export class Ids {
|
|
|
206
204
|
get sorted() {
|
|
207
205
|
return this.idsSorted;
|
|
208
206
|
}
|
|
207
|
+
/** @internal Iterate sorted IDs with their original storage positions. */
|
|
208
|
+
*sortedEntries() {
|
|
209
|
+
for (let i = 0; i < this.idsSorted.length; i++) {
|
|
210
|
+
const id = this.idsSorted[i];
|
|
211
|
+
const index = this.sortedIdPositionToIndex[i];
|
|
212
|
+
assertValue(id, "Sorted ID is undefined");
|
|
213
|
+
assertValue(index, "Sorted position is undefined");
|
|
214
|
+
yield [id, index];
|
|
215
|
+
}
|
|
216
|
+
}
|
|
209
217
|
/**
|
|
210
218
|
* Get transferable buffers for passing to another thread.
|
|
211
219
|
* @returns Serializable representation of this index.
|
package/dist/ids.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ids.js","sourceRoot":"","sources":["../src/ids.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,
|
|
1
|
+
{"version":3,"file":"ids.js","sourceRoot":"","sources":["../src/ids.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
* @module @osmix/core
|
|
23
23
|
*/
|
|
24
24
|
export type { IdOrIndex } from "./ids.ts";
|
|
25
|
-
export
|
|
25
|
+
export type { OsmReader, OsmWriter } from "./contracts.ts";
|
|
26
26
|
export * from "./nodes.ts";
|
|
27
27
|
export * from "./osm.ts";
|
|
28
28
|
export * from "./relations.ts";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AASH,YAAY,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC1C,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3D,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,OAAO,EAAE,iBAAiB,EAAE,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACvE,cAAc,WAAW,CAAC"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAWH,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,OAAO,EAAE,iBAAiB,EAAmB,MAAM,mBAAmB,CAAC;AACvE,cAAc,WAAW,CAAC"}
|
package/dist/mocks.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mocks.d.ts","sourceRoot":"","sources":["../src/mocks.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mocks.d.ts","sourceRoot":"","sources":["../src/mocks.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAmC/B;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,GAAG,CAOvC;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,IAAI,GAAG,CAqFxC"}
|
package/dist/mocks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mocks.js","sourceRoot":"","sources":["../src/mocks.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mocks.js","sourceRoot":"","sources":["../src/mocks.ts"],"names":[],"mappings":"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"}
|