@osmix/core 0.1.10 → 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.
Files changed (70) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/LICENSE +21 -0
  3. package/README.md +86 -69
  4. package/dist/contracts.d.ts +26 -0
  5. package/dist/contracts.d.ts.map +1 -0
  6. package/dist/contracts.js +1 -0
  7. package/dist/contracts.js.map +1 -0
  8. package/dist/entities.d.ts +1 -1
  9. package/dist/entities.d.ts.map +1 -1
  10. package/dist/entities.js +2 -7
  11. package/dist/entities.js.map +1 -1
  12. package/dist/ids.d.ts +2 -0
  13. package/dist/ids.d.ts.map +1 -1
  14. package/dist/ids.js +23 -15
  15. package/dist/ids.js.map +1 -1
  16. package/dist/index.d.ts +1 -1
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +0 -1
  19. package/dist/index.js.map +1 -1
  20. package/dist/mocks.d.ts.map +1 -1
  21. package/dist/mocks.js.map +1 -1
  22. package/dist/nodes.d.ts +9 -3
  23. package/dist/nodes.d.ts.map +1 -1
  24. package/dist/nodes.js +6 -13
  25. package/dist/nodes.js.map +1 -1
  26. package/dist/osm.d.ts +1 -1
  27. package/dist/osm.d.ts.map +1 -1
  28. package/dist/osm.js +1 -4
  29. package/dist/osm.js.map +1 -1
  30. package/dist/relations.d.ts +3 -2
  31. package/dist/relations.d.ts.map +1 -1
  32. package/dist/relations.js +15 -9
  33. package/dist/relations.js.map +1 -1
  34. package/dist/stringtable.d.ts.map +1 -1
  35. package/dist/stringtable.js +4 -13
  36. package/dist/stringtable.js.map +1 -1
  37. package/dist/tags.d.ts +1 -1
  38. package/dist/tags.d.ts.map +1 -1
  39. package/dist/tags.js.map +1 -1
  40. package/dist/typed-arrays.d.ts.map +1 -1
  41. package/dist/typed-arrays.js.map +1 -1
  42. package/dist/ways.d.ts +2 -1
  43. package/dist/ways.d.ts.map +1 -1
  44. package/dist/ways.js +18 -18
  45. package/dist/ways.js.map +1 -1
  46. package/package.json +46 -31
  47. package/src/contracts.ts +28 -0
  48. package/src/entities.ts +179 -194
  49. package/src/ids.ts +228 -235
  50. package/src/index.ts +12 -9
  51. package/src/mocks.ts +114 -113
  52. package/src/nodes.ts +364 -397
  53. package/src/osm.ts +196 -207
  54. package/src/relations.ts +530 -558
  55. package/src/stringtable.ts +174 -183
  56. package/src/tags.ts +263 -271
  57. package/src/typed-arrays.ts +184 -194
  58. package/src/types/geoflatbush.d.ts +28 -33
  59. package/src/types/geokdbush.d.ts +28 -33
  60. package/src/types/kdbush.d.ts +34 -34
  61. package/src/ways.ts +381 -405
  62. package/test/ids.bench.ts +29 -0
  63. package/test/ids.test.ts +84 -0
  64. package/test/memory.test.ts +29 -30
  65. package/test/relations.bench.ts +27 -0
  66. package/test/relations.test.ts +101 -0
  67. package/test/tags-search.test.ts +76 -56
  68. package/test/typed-arrays.test.ts +100 -99
  69. package/tsconfig.build.json +6 -6
  70. package/tsconfig.json +7 -7
@@ -1 +1 @@
1
- {"version":3,"file":"ways.d.ts","sourceRoot":"","sources":["../src/ways.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ways.d.ts","sourceRoot":"","sources":["../src/ways.ts"],"names":[],"mappings":"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"}
package/dist/ways.js CHANGED
@@ -16,6 +16,12 @@ export class Ways extends Entities {
16
16
  bbox;
17
17
  // Node reference index
18
18
  nodes;
19
+ getNodeLonLat(id) {
20
+ const coordinate = this.nodes.getNodeLonLat({ id });
21
+ if (!coordinate)
22
+ throw Error(`Node ${id} not found for way geometry`);
23
+ return coordinate;
24
+ }
19
25
  /**
20
26
  * Create a new Ways index.
21
27
  */
@@ -64,15 +70,6 @@ export class Ways extends Entities {
64
70
  prevRefId += refId;
65
71
  return prevRefId;
66
72
  });
67
- const filteredWay = filter
68
- ? filter({
69
- id: way.id,
70
- refs,
71
- tags: this.tags.getTagsFromIndices(way.keys, way.vals),
72
- })
73
- : null;
74
- if (filter && filteredWay === null)
75
- continue;
76
73
  const tagKeys = way.keys.map((key) => {
77
74
  const index = blockStringIndexMap[key];
78
75
  if (index === undefined)
@@ -85,6 +82,15 @@ export class Ways extends Entities {
85
82
  throw Error("Tag value not found");
86
83
  return index;
87
84
  });
85
+ const filteredWay = filter
86
+ ? filter({
87
+ id: way.id,
88
+ refs,
89
+ tags: this.tags.getTagsFromIndices(tagKeys, tagValues),
90
+ })
91
+ : null;
92
+ if (filter && filteredWay === null)
93
+ continue;
88
94
  this.addEntity(way.id, tagKeys, tagValues);
89
95
  this.refStart.push(this.refs.length);
90
96
  this.refCount.push(filteredWay?.refs.length ?? refs.length);
@@ -135,7 +141,7 @@ export class Ways extends Entities {
135
141
  const count = this.refCount.at(i);
136
142
  for (let j = start; j < start + count; j++) {
137
143
  const refId = this.refs.at(j);
138
- const [lon, lat] = this.nodes.getNodeLonLat({ id: refId });
144
+ const [lon, lat] = this.getNodeLonLat(refId);
139
145
  if (lon < minX)
140
146
  minX = lon;
141
147
  if (lon > maxX)
@@ -205,7 +211,7 @@ export class Ways extends Entities {
205
211
  const line = new Float64Array(count * 2);
206
212
  for (let i = 0; i < count; i++) {
207
213
  const ref = this.refs.at(start + i);
208
- const [lon, lat] = this.nodes.getNodeLonLat({ id: ref });
214
+ const [lon, lat] = this.getNodeLonLat(ref);
209
215
  line[i * 2] = lon;
210
216
  line[i * 2 + 1] = lat;
211
217
  }
@@ -220,13 +226,7 @@ export class Ways extends Entities {
220
226
  const coords = [];
221
227
  for (let refIndex = start; refIndex < start + count; refIndex++) {
222
228
  const ref = this.refs.at(refIndex);
223
- const coord = this.nodes.getNodeLonLat({ id: ref });
224
- if (coord === undefined ||
225
- coord[0] === undefined ||
226
- coord[1] === undefined) {
227
- throw Error(`Invalid coordinate for way id ${this.ids.at(index)}, index ${index}, node ref ${ref}, ref index ${refIndex}`);
228
- }
229
- coords.push(coord);
229
+ coords.push(this.getNodeLonLat(ref));
230
230
  }
231
231
  return coords;
232
232
  }
package/dist/ways.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"ways.js","sourceRoot":"","sources":["../src/ways.ts"],"names":[],"mappings":"AAGA,OAAO,QAAQ,MAAM,UAAU,CAAA;AAC/B,OAAO,EAAE,MAAM,IAAI,SAAS,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,EAAE,QAAQ,EAA8B,MAAM,eAAe,CAAA;AACpE,OAAO,EAAkB,GAAG,EAAE,MAAM,UAAU,CAAA;AAG9C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EACN,iBAAiB,EAEjB,WAAW,EACX,oBAAoB,IAAI,GAAG,GAC3B,MAAM,mBAAmB,CAAA;AAY1B,MAAM,OAAO,IAAK,SAAQ,QAAgB;IACjC,YAAY,GAAa,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAA;IAChD,+DAA+D;IACvD,iBAAiB,GAAG,KAAK,CAAA;IAEzB,QAAQ,CAAkB;IAC1B,QAAQ,CAAkB,CAAC,8BAA8B;IAEjE,WAAW;IACH,IAAI,CAAmB;IAE/B,oDAAoD;IAC5C,IAAI,CAAmB;IAE/B,uBAAuB;IACf,KAAK,CAAO;IAEpB;;OAEG;IACH,YACC,WAAwB,EACxB,KAAY,EACZ,aAAiC;QAEjC,IAAI,aAAa,EAAE,CAAC;YACnB,KAAK,CAAC,KAAK,EAAE,IAAI,GAAG,CAAC,aAAa,CAAC,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC,CAAA;YAC1E,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAA;YAC7D,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAA;YAC7D,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,IAAI,CAAC,CAAA;YACrD,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,aAAa,CAAC,IAAI,CAAC,CAAA;YACtD,gEAAgE;YAChE,IAAI,aAAa,CAAC,YAAY,EAAE,UAAU,EAAE,CAAC;gBAC5C,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,CAAA;gBAC7D,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAA;YAC9B,CAAC;YACD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;QACvB,CAAC;aAAM,CAAC;YACP,KAAK,CAAC,KAAK,EAAE,IAAI,GAAG,EAAE,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAA;YAC9C,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,CAAA;YACpC,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,CAAA;YACpC,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,CAAA;YAChC,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,CAAA;QAClC,CAAC;QACD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;IACnB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,GAAW;QACjB,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAA;QACvD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACpC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACnC,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,IAAI;YAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAC/C,OAAO,QAAQ,CAAA;IAChB,CAAC;IAED;;OAEG;IACH,OAAO,CACN,IAAiB,EACjB,mBAAgC,EAChC,MAAuC;QAEvC,IAAI,KAAK,GAAG,CAAC,CAAA;QACb,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACxB,IAAI,SAAS,GAAG,CAAC,CAAA;YACjB,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;gBACnC,SAAS,IAAI,KAAK,CAAA;gBAClB,OAAO,SAAS,CAAA;YACjB,CAAC,CAAC,CAAA;YACF,MAAM,WAAW,GAAG,MAAM;gBACzB,CAAC,CAAC,MAAM,CAAC;oBACP,EAAE,EAAE,GAAG,CAAC,EAAE;oBACV,IAAI;oBACJ,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC;iBACtD,CAAC;gBACH,CAAC,CAAC,IAAI,CAAA;YACP,IAAI,MAAM,IAAI,WAAW,KAAK,IAAI;gBAAE,SAAQ;YAE5C,MAAM,OAAO,GAAa,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;gBAC9C,MAAM,KAAK,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAA;gBACtC,IAAI,KAAK,KAAK,SAAS;oBAAE,MAAM,KAAK,CAAC,mBAAmB,CAAC,CAAA;gBACzD,OAAO,KAAK,CAAA;YACb,CAAC,CAAC,CAAA;YACF,MAAM,SAAS,GAAa,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;gBAChD,MAAM,KAAK,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAA;gBACtC,IAAI,KAAK,KAAK,SAAS;oBAAE,MAAM,KAAK,CAAC,qBAAqB,CAAC,CAAA;gBAC3D,OAAO,KAAK,CAAA;YACb,CAAC,CAAC,CAAA;YAEF,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE,SAAS,CAAC,CAAA;YAC1C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YACpC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,CAAA;YAC3D,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,IAAI,IAAI,CAAC,CAAA;YAC7C,KAAK,EAAE,CAAA;QACR,CAAC;QACD,OAAO,KAAK,CAAA;IACb,CAAC;IAED;;OAEG;IACH,gBAAgB;QACf,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAA;QACvB,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAA;QACvB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAA;IACpB,CAAC;IAED;;;OAGG;IACH,iBAAiB;QAChB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;YAAE,MAAM,KAAK,CAAC,0BAA0B,CAAC,CAAA;QAClE,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC,YAAY,CAAA;QAE7C,IAAI,CAAC,YAAY,GAAG,IAAI,QAAQ,CAC/B,IAAI,CAAC,IAAI,EACT,GAAG,EACH,YAAY,EACZ,iBAAiB,CACjB,CAAA;QAED,kEAAkE;QAClE,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,CAAA;QACrD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,IAAI,IAAY,CAAA;YAChB,IAAI,IAAY,CAAA;YAChB,IAAI,IAAY,CAAA;YAChB,IAAI,IAAY,CAAA;YAEhB,IAAI,WAAW,EAAE,CAAC;gBACjB,yBAAyB;gBACzB,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;gBAC1B,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;gBAC9B,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;gBAC9B,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;YAC/B,CAAC;iBAAM,CAAC;gBACP,uCAAuC;gBACvC,IAAI,GAAG,MAAM,CAAC,iBAAiB,CAAA;gBAC/B,IAAI,GAAG,MAAM,CAAC,iBAAiB,CAAA;gBAC/B,IAAI,GAAG,MAAM,CAAC,iBAAiB,CAAA;gBAC/B,IAAI,GAAG,MAAM,CAAC,iBAAiB,CAAA;gBAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;gBACjC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;gBACjC,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,KAAK,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;oBAC7B,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;oBAC1D,IAAI,GAAG,GAAG,IAAI;wBAAE,IAAI,GAAG,GAAG,CAAA;oBAC1B,IAAI,GAAG,GAAG,IAAI;wBAAE,IAAI,GAAG,GAAG,CAAA;oBAC1B,IAAI,GAAG,GAAG,IAAI;wBAAE,IAAI,GAAG,GAAG,CAAA;oBAC1B,IAAI,GAAG,GAAG,IAAI;wBAAE,IAAI,GAAG,GAAG,CAAA;gBAC3B,CAAC;gBACD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBACpB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBACpB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBACpB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACrB,CAAC;YACD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;QAC9C,CAAC;QACD,wCAAwC;QACxC,IAAI,CAAC,WAAW,EAAE,CAAC;YAClB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAA;QACpB,CAAC;QACD,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAA;QAC1B,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAA;QAC7B,OAAO,IAAI,CAAC,YAAY,CAAA;IACzB,CAAC;IAED;;OAEG;IACH,eAAe;QACd,OAAO,IAAI,CAAC,iBAAiB,CAAA;IAC9B,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,KAAa,EAAE,EAAU,EAAE,IAAc;QACtD,OAAO;YACN,EAAE;YACF,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAChC,IAAI;SACJ,CAAA;IACF,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,KAAa;QACtB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,CAAA;QACrC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,CAAA;QACrC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,CAAC,CAAC,CAAA;IACzD,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,SAAoB;QACjC,MAAM,KAAK,GACV,OAAO,IAAI,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;QAC1E,OAAO;YACN,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC;YACvB,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;YAC3B,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;YAC3B,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;SAC3B,CAAA;IACF,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,KAAa;QACpB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,CAAA;QACrC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,CAAA;QACrC,MAAM,IAAI,GAAG,IAAI,YAAY,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;QACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;YAChC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;YACnC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAA;YACxD,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAA;YACjB,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAA;QACtB,CAAC;QACD,OAAO,IAAI,CAAA;IACZ,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,KAAa;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,CAAA;QACrC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,CAAA;QACrC,MAAM,MAAM,GAAuB,EAAE,CAAA;QACrC,KAAK,IAAI,QAAQ,GAAG,KAAK,EAAE,QAAQ,GAAG,KAAK,GAAG,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC;YACjE,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAA;YAClC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAA;YACnD,IACC,KAAK,KAAK,SAAS;gBACnB,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS;gBACtB,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,EACrB,CAAC;gBACF,MAAM,KAAK,CACV,iCAAiC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,KAAK,cAAc,GAAG,eAAe,QAAQ,EAAE,CAC7G,CAAA;YACF,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACnB,CAAC;QACD,OAAO,MAAM,CAAA;IACd,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,IAAe,EAAE,QAAqC;QAChE,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC;YAAE,OAAO,EAAE,CAAA;QAC9B,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAC9B,IAAI,CAAC,CAAC,CAAC,EACP,IAAI,CAAC,CAAC,CAAC,EACP,IAAI,CAAC,CAAC,CAAC,EACP,IAAI,CAAC,CAAC,CAAC,EACP,QAAQ,CACR,CAAA;IACF,CAAC;IAED;;;;;;;OAOG;IACH,SAAS,CACR,GAAW,EACX,GAAW,EACX,UAAmB,EACnB,aAAsB;QAEtB,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC;YAAE,OAAO,EAAE,CAAA;QAC9B,8DAA8D;QAC9D,OAAO,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,aAAa,CAAC,CAAA;IACzE,CAAC;IAED;;OAEG;IACH,UAAU,CACT,IAAe,EACf,OAAoC;QAMpC,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QACpD,MAAM,GAAG,GAAG,IAAI,YAAY,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;QAClD,MAAM,YAAY,GAAmB,EAAE,CAAA;QACvC,MAAM,eAAe,GAAG,IAAI,WAAW,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;QACjE,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;QAEtB,IAAI,IAAI,GAAG,CAAC,CAAA;QACZ,aAAa,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE;YACrC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAA;YAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;YAClC,IAAI,IAAI,GAAG,CAAC,MAAM,CAAA;YAClB,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YACtB,MAAM,SAAS,GAAG,eAAe,CAAC,CAAC,CAAC,CAAA;YACpC,IAAI,SAAS,KAAK,SAAS;gBAAE,MAAM,KAAK,CAAC,6BAA6B,CAAC,CAAA;YACvE,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,CAAA;QACpD,CAAC,CAAC,CAAA;QACF,MAAM,iBAAiB,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,CAAA;QAChD,IAAI,MAAM,GAAG,CAAC,CAAA;QACd,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;YAChC,iBAAiB,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;YAClC,MAAM,IAAI,GAAG,CAAC,MAAM,CAAA;QACrB,CAAC;QAED,OAAO;YACN,GAAG;YACH,SAAS,EAAE,iBAAiB;YAC5B,YAAY,EAAE,eAAe;SAC7B,CAAA;IACF,CAAC;IAED;;;OAGG;IACM,aAAa;QACrB,MAAM,IAAI,GAAG;YACZ,GAAG,KAAK,CAAC,aAAa,EAAE;YACxB,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM;YACpC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM;YACpC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM;YAC5B,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM;SAC5B,CAAA;QACD,6CAA6C;QAC7C,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC5B,OAAO,EAAE,GAAG,IAAI,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAA;QACzD,CAAC;QACD,OAAO,IAAI,CAAA;IACZ,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,KAAa;QACpC,IAAI,KAAK,KAAK,CAAC;YAAE,OAAO,CAAC,CAAA;QACzB,4BAA4B;QAC5B,IAAI,QAAQ,GAAG,KAAK,CAAA;QACpB,IAAI,CAAC,GAAG,KAAK,CAAA;QACb,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAChB,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAA;YACtB,QAAQ,IAAI,CAAC,CAAA;QACd,CAAC;QACD,MAAM,UAAU,GAAG,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAA;QACxD,MAAM,UAAU,GAAG,QAAQ,GAAG,CAAC,GAAG,YAAY,CAAC,iBAAiB,CAAA;QAChE,MAAM,iBAAiB,GAAG,CAAC,GAAG,UAAU,GAAG,UAAU,CAAA;QAErD,OAAO,CACN,GAAG,CAAC,gBAAgB,CAAC,KAAK,CAAC;YAC3B,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;YAC5B,KAAK,GAAG,WAAW,CAAC,iBAAiB,GAAG,WAAW;YACnD,KAAK,GAAG,WAAW,CAAC,iBAAiB,GAAG,WAAW;YACnD,KAAK,GAAG,CAAC,GAAG,YAAY,CAAC,iBAAiB,GAAG,OAAO;YACpD,iBAAiB,CACjB,CAAA;IACF,CAAC;IAED;;OAEG;IACM,UAAU,CAAC,MAAqB;QACxC,OAAO,KAAK;aACV,UAAU,CAAC,MAAM,CAAC;aAClB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;aAC3B,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;aAC3B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC1B,CAAC;CACD"}
1
+ {"version":3,"file":"ways.js","sourceRoot":"","sources":["../src/ways.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,32 +1,47 @@
1
1
  {
2
- "$schema": "https://json.schemastore.org/package.json",
3
- "name": "@osmix/core",
4
- "type": "module",
5
- "version": "0.1.10",
6
- "description": "An OSM PBF reader, writer, and merge tool written in TypeScript",
7
- "license": "MIT",
8
- "repository": {
9
- "type": "git",
10
- "url": "git+https://github.com/conveyal/osmix.git"
11
- },
12
- "main": "./dist/index.js",
13
- "scripts": {
14
- "build": "tsc -p tsconfig.build.json",
15
- "bench": "bun test --bench",
16
- "test": "bun test",
17
- "typecheck": "tsc --noEmit"
18
- },
19
- "devDependencies": {
20
- "@osmix/pbf": "0.0.9",
21
- "@types/bun": "^1.3.14",
22
- "typescript": "npm:typescript@rc"
23
- },
24
- "dependencies": {
25
- "@osmix/shared": "0.0.13",
26
- "flatbush": "^4.6.2",
27
- "geoflatbush": "^2.2.1",
28
- "geokdbush": "^2.1.0",
29
- "kdbush": "^4.1.0"
30
- },
31
- "types": "./dist/index.d.ts"
32
- }
2
+ "$schema": "https://json.schemastore.org/package.json",
3
+ "name": "@osmix/core",
4
+ "version": "0.2.0",
5
+ "description": "An OSM PBF reader, writer, and merge tool written in TypeScript",
6
+ "license": "MIT",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "git+https://github.com/conveyal/osmix.git"
10
+ },
11
+ "type": "module",
12
+ "main": "./dist/index.js",
13
+ "exports": {
14
+ ".": {
15
+ "types": "./dist/index.d.ts",
16
+ "default": "./dist/index.js"
17
+ },
18
+ "./contracts": {
19
+ "types": "./dist/contracts.d.ts",
20
+ "default": "./dist/contracts.js"
21
+ },
22
+ "./mocks": {
23
+ "types": "./dist/mocks.d.ts",
24
+ "default": "./dist/mocks.js"
25
+ }
26
+ },
27
+ "dependencies": {
28
+ "flatbush": "^4.6.2",
29
+ "geoflatbush": "^2.2.1",
30
+ "geokdbush": "^2.1.0",
31
+ "kdbush": "^4.1.0",
32
+ "@osmix/shared": "0.1.0",
33
+ "@osmix/geo": "0.1.0",
34
+ "@osmix/types": "0.1.0"
35
+ },
36
+ "devDependencies": {
37
+ "typescript": "7.0.1-rc",
38
+ "@osmix/pbf": "0.0.10"
39
+ },
40
+ "types": "./dist/index.d.ts",
41
+ "scripts": {
42
+ "build": "tsc -p tsconfig.build.json",
43
+ "bench": "vitest bench",
44
+ "test": "pnpm -w exec vitest run --project \"$npm_package_name\"",
45
+ "typecheck": "tsc --noEmit"
46
+ }
47
+ }
@@ -0,0 +1,28 @@
1
+ import type { GeoBbox2D } from "@osmix/types";
2
+
3
+ import type { Nodes } from "./nodes.ts";
4
+ import type { Relations } from "./relations.ts";
5
+ import type { Ways } from "./ways.ts";
6
+
7
+ /**
8
+ * Read-only contract for tile encoders, exporters, and spatial queries.
9
+ *
10
+ * Encoders only need entity accessors and spatial indexes; they do not mutate
11
+ * the underlying dataset. The concrete {@link Osm} class satisfies this interface.
12
+ */
13
+ export interface OsmReader {
14
+ readonly id: string;
15
+ readonly nodes: Nodes;
16
+ readonly ways: Ways;
17
+ readonly relations: Relations;
18
+ bbox(): GeoBbox2D;
19
+ }
20
+
21
+ /**
22
+ * Write contract for format importers that populate an in-memory index.
23
+ */
24
+ export interface OsmWriter extends OsmReader {
25
+ buildIndexes(): void;
26
+ buildSpatialIndexes(): void;
27
+ isReady(): boolean;
28
+ }
package/src/entities.ts CHANGED
@@ -7,24 +7,19 @@
7
7
  * @module
8
8
  */
9
9
 
10
- import type { ContentHasher } from "@osmix/shared/content-hasher"
11
- import type {
12
- GeoBbox2D,
13
- OsmEntity,
14
- OsmEntityType,
15
- OsmTags,
16
- } from "@osmix/shared/types"
17
- import type { IdOrIndex, Ids, IdsTransferables } from "./ids.ts"
18
- import type { Tags, TagsTransferables } from "./tags.ts"
19
- import type { BufferType } from "./typed-arrays.ts"
10
+ import type { ContentHasher } from "@osmix/shared/content-hasher";
11
+ import type { GeoBbox2D, OsmEntity, OsmEntityType, OsmTags } from "@osmix/types";
12
+
13
+ import type { IdOrIndex, Ids, IdsTransferables } from "./ids.ts";
14
+ import type { Tags, TagsTransferables } from "./tags.ts";
15
+ import type { BufferType } from "./typed-arrays.ts";
20
16
 
21
17
  /**
22
18
  * Serializable representation of an Entities collection for worker transfer.
23
19
  * Combines ID and tag transferables; subclasses add entity-specific data.
24
20
  */
25
21
  export interface EntitiesTransferables<T extends BufferType = BufferType>
26
- extends IdsTransferables<T>,
27
- TagsTransferables<T> {}
22
+ extends IdsTransferables<T>, TagsTransferables<T> {}
28
23
 
29
24
  /**
30
25
  * Abstract base for typed entity collections.
@@ -35,186 +30,176 @@ export interface EntitiesTransferables<T extends BufferType = BufferType>
35
30
  * 3. **Query**: Lookups and iteration enabled.
36
31
  */
37
32
  export abstract class Entities<T extends OsmEntity> {
38
- /** The type of entity stored in this collection ("node", "way", or "relation"). */
39
- indexType: OsmEntityType
40
- /** ID storage and lookup */
41
- ids: Ids
42
- /** Tag storage and search */
43
- tags: Tags
44
-
45
- /** Whether buildIndex() has been called */
46
- protected indexBuilt = false
47
-
48
- /**
49
- * Create a new Entities collection.
50
- * @param indexType - The entity type ("node", "way", or "relation").
51
- * @param ids - The ID storage instance.
52
- * @param tags - The tag storage instance.
53
- */
54
- constructor(indexType: OsmEntityType, ids: Ids, tags: Tags) {
55
- this.indexType = indexType
56
- this.ids = ids
57
- this.tags = tags
58
- }
59
-
60
- /**
61
- * Get transferable objects for passing to another thread.
62
- */
63
- transferables(): EntitiesTransferables {
64
- return {
65
- ...this.ids.transferables(),
66
- ...this.tags.transferables(),
67
- }
68
- }
69
-
70
- /**
71
- * Check if the index is built and ready for use.
72
- */
73
- isReady() {
74
- return this.ids.isReady() && this.tags.isReady() && this.indexBuilt
75
- }
76
-
77
- /** Number of entities in this collection. */
78
- get size() {
79
- return this.ids.size
80
- }
81
-
82
- /**
83
- * Compact entity-specific typed arrays.
84
- * Called by `buildIndex()` after ID and tag indexes are built.
85
- * @abstract
86
- */
87
- abstract buildEntityIndex(): void
88
-
89
- /**
90
- * Finalize indexes.
91
- * Must be called after adding entities and before querying.
92
- */
93
- buildIndex() {
94
- if (this.indexBuilt) return
95
- console.time(`${this.indexType}Index.buildIndex`)
96
- this.ids.buildIndex()
97
- this.tags.buildIndex()
98
- this.buildEntityIndex()
99
- this.indexBuilt = true
100
- console.timeEnd(`${this.indexType}Index.buildIndex`)
101
- }
102
-
103
- /**
104
- * Get the bounding box of an entity.
105
- * @param idOrIndex - Entity identifier (by ID or internal index).
106
- * @returns Geographic bounding box [minLon, minLat, maxLon, maxLat].
107
- * @abstract
108
- */
109
- abstract getEntityBbox(idOrIndex: IdOrIndex): GeoBbox2D
110
-
111
- /**
112
- * Reconstruct a full entity object from index data.
113
- * @param index - Internal array index.
114
- * @param id - OSM entity ID.
115
- * @param tags - Optional pre-fetched tags.
116
- * @returns The complete entity object.
117
- * @abstract
118
- */
119
- abstract getFullEntity(index: number, id: number, tags?: OsmTags): T
120
-
121
- /**
122
- * Add an entity to the index. Tags can be provided as an array of keys and values, or as an object.
123
- */
124
- addEntity(id: number, tags: number[], values: number[]): number
125
- addEntity(id: number, tags: OsmTags): number
126
- addEntity(id: number, tags: OsmTags | number[], values?: number[]): number {
127
- const entityIndex = this.ids.add(id)
128
- if (Array.isArray(tags)) {
129
- if (values === undefined)
130
- throw Error("Values are required when tags is an array")
131
- this.tags.addTagKeysAndValues(entityIndex, tags, values)
132
- } else {
133
- this.tags.addTags(entityIndex, tags)
134
- }
135
- return entityIndex
136
- }
137
-
138
- /**
139
- * Get an entity by ID or index.
140
- */
141
- get(idOrIndex: IdOrIndex): T | null {
142
- const [index, id] = this.ids.idOrIndex(idOrIndex)
143
- if (index === -1) return null
144
- return this.getFullEntity(index, id, this.tags.getTags(index))
145
- }
146
-
147
- /**
148
- * Get an entity by index.
149
- */
150
- getByIndex(index: number): T {
151
- return this.getFullEntity(
152
- index,
153
- this.ids.at(index),
154
- this.tags.getTags(index),
155
- )
156
- }
157
-
158
- /**
159
- * Get multiple entities by their indexes.
160
- */
161
- getEntitiesByIndex(indexes: number[]): T[] {
162
- const entities: T[] = []
163
- for (const index of indexes) {
164
- const entity = this.getByIndex(index)
165
- if (entity) entities.push(entity)
166
- else throw Error(`Entity not found at index ${index}`)
167
- }
168
- return entities
169
- }
170
-
171
- /**
172
- * Iterate over all entities in the index.
173
- */
174
- *[Symbol.iterator](): Generator<T> {
175
- for (let i = 0; i < this.size; i++) {
176
- yield this.getFullEntity(i, this.ids.at(i), this.tags.getTags(i))
177
- }
178
- }
179
-
180
- /**
181
- * Get an entity by ID.
182
- */
183
- getById(id: number): T | null {
184
- const index = this.ids.getIndexFromId(id)
185
- if (index !== -1)
186
- return this.getFullEntity(index, id, this.tags.getTags(index))
187
- return null
188
- }
189
-
190
- /**
191
- * Iterate over entities sorted by ID.
192
- */
193
- *sorted(): Generator<T> {
194
- for (const id of this.ids.sorted) {
195
- const index = this.ids.getIndexFromId(id)
196
- if (index === -1) throw Error(`Entity not found at id ${id}`)
197
- yield this.getFullEntity(index, id, this.tags.getTags(index))
198
- }
199
- }
200
-
201
- /**
202
- * Search for entities with a specific tag key and optional value.
203
- */
204
- search(key: string, val?: string): T[] {
205
- const keyIndex = this.tags.find(key)
206
- const entities = this.tags
207
- .hasKey(keyIndex)
208
- .map((index) => this.getByIndex(index))
209
- if (val === undefined) return entities
210
- return entities.filter((entity) => entity.tags?.[key] === val)
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
- }
33
+ /** The type of entity stored in this collection ("node", "way", or "relation"). */
34
+ indexType: OsmEntityType;
35
+ /** ID storage and lookup */
36
+ ids: Ids;
37
+ /** Tag storage and search */
38
+ tags: Tags;
39
+
40
+ /** Whether buildIndex() has been called */
41
+ protected indexBuilt = false;
42
+
43
+ /**
44
+ * Create a new Entities collection.
45
+ * @param indexType - The entity type ("node", "way", or "relation").
46
+ * @param ids - The ID storage instance.
47
+ * @param tags - The tag storage instance.
48
+ */
49
+ constructor(indexType: OsmEntityType, ids: Ids, tags: Tags) {
50
+ this.indexType = indexType;
51
+ this.ids = ids;
52
+ this.tags = tags;
53
+ }
54
+
55
+ /**
56
+ * Get transferable objects for passing to another thread.
57
+ */
58
+ transferables(): EntitiesTransferables {
59
+ return {
60
+ ...this.ids.transferables(),
61
+ ...this.tags.transferables(),
62
+ };
63
+ }
64
+
65
+ /**
66
+ * Check if the index is built and ready for use.
67
+ */
68
+ isReady() {
69
+ return this.ids.isReady() && this.tags.isReady() && this.indexBuilt;
70
+ }
71
+
72
+ /** Number of entities in this collection. */
73
+ get size() {
74
+ return this.ids.size;
75
+ }
76
+
77
+ /**
78
+ * Compact entity-specific typed arrays.
79
+ * Called by `buildIndex()` after ID and tag indexes are built.
80
+ * @abstract
81
+ */
82
+ abstract buildEntityIndex(): void;
83
+
84
+ /**
85
+ * Finalize indexes.
86
+ * Must be called after adding entities and before querying.
87
+ */
88
+ buildIndex() {
89
+ if (this.indexBuilt) return;
90
+ console.time(`${this.indexType}Index.buildIndex`);
91
+ this.ids.buildIndex();
92
+ this.tags.buildIndex();
93
+ this.buildEntityIndex();
94
+ this.indexBuilt = true;
95
+ console.timeEnd(`${this.indexType}Index.buildIndex`);
96
+ }
97
+
98
+ /**
99
+ * Get the bounding box of an entity.
100
+ * @param idOrIndex - Entity identifier (by ID or internal index).
101
+ * @returns Geographic bounding box [minLon, minLat, maxLon, maxLat].
102
+ * @abstract
103
+ */
104
+ abstract getEntityBbox(idOrIndex: IdOrIndex): GeoBbox2D;
105
+
106
+ /**
107
+ * Reconstruct a full entity object from index data.
108
+ * @param index - Internal array index.
109
+ * @param id - OSM entity ID.
110
+ * @param tags - Optional pre-fetched tags.
111
+ * @returns The complete entity object.
112
+ * @abstract
113
+ */
114
+ abstract getFullEntity(index: number, id: number, tags?: OsmTags): T;
115
+
116
+ /**
117
+ * Add an entity to the index. Tags can be provided as an array of keys and values, or as an object.
118
+ */
119
+ addEntity(id: number, tags: number[], values: number[]): number;
120
+ addEntity(id: number, tags: OsmTags): number;
121
+ addEntity(id: number, tags: OsmTags | number[], values?: number[]): number {
122
+ const entityIndex = this.ids.add(id);
123
+ if (Array.isArray(tags)) {
124
+ if (values === undefined) throw Error("Values are required when tags is an array");
125
+ this.tags.addTagKeysAndValues(entityIndex, tags, values);
126
+ } else {
127
+ this.tags.addTags(entityIndex, tags);
128
+ }
129
+ return entityIndex;
130
+ }
131
+
132
+ /**
133
+ * Get an entity by ID or index.
134
+ */
135
+ get(idOrIndex: IdOrIndex): T | null {
136
+ const [index, id] = this.ids.idOrIndex(idOrIndex);
137
+ if (index === -1) return null;
138
+ return this.getFullEntity(index, id, this.tags.getTags(index));
139
+ }
140
+
141
+ /**
142
+ * Get an entity by index.
143
+ */
144
+ getByIndex(index: number): T {
145
+ return this.getFullEntity(index, this.ids.at(index), this.tags.getTags(index));
146
+ }
147
+
148
+ /**
149
+ * Get multiple entities by their indexes.
150
+ */
151
+ getEntitiesByIndex(indexes: number[]): T[] {
152
+ const entities: T[] = [];
153
+ for (const index of indexes) {
154
+ const entity = this.getByIndex(index);
155
+ if (entity) entities.push(entity);
156
+ else throw Error(`Entity not found at index ${index}`);
157
+ }
158
+ return entities;
159
+ }
160
+
161
+ /**
162
+ * Iterate over all entities in the index.
163
+ */
164
+ *[Symbol.iterator](): Generator<T> {
165
+ for (let i = 0; i < this.size; i++) {
166
+ yield this.getFullEntity(i, this.ids.at(i), this.tags.getTags(i));
167
+ }
168
+ }
169
+
170
+ /**
171
+ * Get an entity by ID.
172
+ */
173
+ getById(id: number): T | null {
174
+ const index = this.ids.getIndexFromId(id);
175
+ if (index !== -1) return this.getFullEntity(index, id, this.tags.getTags(index));
176
+ return null;
177
+ }
178
+
179
+ /**
180
+ * Iterate over entities sorted by ID.
181
+ */
182
+ *sorted(): Generator<T> {
183
+ for (const [id, index] of this.ids.sortedEntries()) {
184
+ yield this.getFullEntity(index, id, this.tags.getTags(index));
185
+ }
186
+ }
187
+
188
+ /**
189
+ * Search for entities with a specific tag key and optional value.
190
+ */
191
+ search(key: string, val?: string): T[] {
192
+ const keyIndex = this.tags.find(key);
193
+ const entities = this.tags.hasKey(keyIndex).map((index) => this.getByIndex(index));
194
+ if (val === undefined) return entities;
195
+ return entities.filter((entity) => entity.tags?.[key] === val);
196
+ }
197
+
198
+ /**
199
+ * Update a ContentHasher with this entity collection's base data (IDs and tags).
200
+ * Subclasses should override to add entity-specific data.
201
+ */
202
+ updateHash(hasher: ContentHasher): ContentHasher {
203
+ return this.ids.updateHash(this.tags.updateHash(hasher));
204
+ }
220
205
  }