@osmix/shared 0.0.11 → 0.0.13
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 +82 -0
- package/dist/bbox-intersects.d.ts +1 -1
- package/dist/bbox-intersects.d.ts.map +1 -1
- package/dist/color.d.ts +1 -1
- package/dist/color.d.ts.map +1 -1
- package/dist/coordinates.d.ts +1 -1
- package/dist/coordinates.d.ts.map +1 -1
- package/dist/relation-kind.d.ts +1 -1
- package/dist/relation-kind.d.ts.map +1 -1
- package/dist/relation-multipolygon.d.ts +1 -1
- package/dist/relation-multipolygon.d.ts.map +1 -1
- package/dist/stream-to-bytes.js +1 -1
- package/dist/stream-to-bytes.js.map +1 -1
- package/dist/tile.d.ts +13 -1
- package/dist/tile.d.ts.map +1 -1
- package/dist/tile.js +15 -0
- package/dist/tile.js.map +1 -1
- package/dist/transform-bytes.js +2 -2
- package/dist/transform-bytes.js.map +1 -1
- package/dist/utils.d.ts +1 -1
- package/dist/utils.d.ts.map +1 -1
- package/dist/way-is-area.d.ts +1 -1
- package/dist/way-is-area.d.ts.map +1 -1
- package/package.json +12 -47
- package/src/bbox-intersects.ts +1 -1
- package/src/color.ts +1 -1
- package/src/coordinates.ts +1 -1
- package/src/relation-kind.ts +1 -1
- package/src/relation-multipolygon.ts +1 -1
- package/src/stream-to-bytes.ts +1 -1
- package/src/tile.ts +18 -1
- package/src/transform-bytes.ts +2 -2
- package/src/utils.ts +1 -1
- package/src/way-is-area.ts +1 -1
- package/test/csv-parse-stream.test.ts +67 -0
- package/test/haversine-distance.test.ts +8 -0
- package/test/relation-kind.test.ts +426 -0
- package/test/relation-multipolygon.test.ts +265 -0
- package/test/utils.test.ts +103 -0
- package/test/way-is-area.test.ts +42 -0
- package/tsconfig/base.json +2 -0
- package/tsconfig.build.json +5 -0
- package/tsconfig.json +9 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# @osmix/shared
|
|
2
|
+
|
|
3
|
+
## 0.0.13
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- aba4bd8: Fix for nodejs package imports
|
|
8
|
+
|
|
9
|
+
## 0.0.12
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- 2a634cb: Fix publishing
|
|
14
|
+
|
|
15
|
+
## 0.0.11
|
|
16
|
+
|
|
17
|
+
### Patch Changes
|
|
18
|
+
|
|
19
|
+
- 3c8ee95: Fix and simplify package exports
|
|
20
|
+
|
|
21
|
+
## 0.0.10
|
|
22
|
+
|
|
23
|
+
### Patch Changes
|
|
24
|
+
|
|
25
|
+
- 12728ed: Replace `csv-parse` usage in `@osmix/gtfs` with a browser-friendly shared streaming CSV parser in `@osmix/shared`, adapted from `mafintosh/csv-parser` parsing behavior.
|
|
26
|
+
|
|
27
|
+
## 0.0.9
|
|
28
|
+
|
|
29
|
+
### Patch Changes
|
|
30
|
+
|
|
31
|
+
- f32e4ee: General cleanup
|
|
32
|
+
|
|
33
|
+
## 0.0.8
|
|
34
|
+
|
|
35
|
+
### Patch Changes
|
|
36
|
+
|
|
37
|
+
- f468db5: Fix publishing (2)
|
|
38
|
+
|
|
39
|
+
## 0.0.7
|
|
40
|
+
|
|
41
|
+
### Patch Changes
|
|
42
|
+
|
|
43
|
+
- 68d6bd8: Fix publishing for packages.
|
|
44
|
+
|
|
45
|
+
## 0.0.6
|
|
46
|
+
|
|
47
|
+
### Patch Changes
|
|
48
|
+
|
|
49
|
+
- 0cd8a2e: Explore patterns for extending Osmix worker
|
|
50
|
+
|
|
51
|
+
## 0.0.5
|
|
52
|
+
|
|
53
|
+
### Patch Changes
|
|
54
|
+
|
|
55
|
+
- bb629cf: Simplify raster drawing when geometry is smaller than a pixel
|
|
56
|
+
- edbb26b: Handle more Relation types
|
|
57
|
+
- 69a36bd: Switch Nodes coordinate storage to Int32Array
|
|
58
|
+
|
|
59
|
+
## 0.0.4
|
|
60
|
+
|
|
61
|
+
### Patch Changes
|
|
62
|
+
|
|
63
|
+
- 572cbd8: Raster tile updates
|
|
64
|
+
- d001d9a: Refactor to align around new main external API
|
|
65
|
+
|
|
66
|
+
## 0.0.3
|
|
67
|
+
|
|
68
|
+
### Patch Changes
|
|
69
|
+
|
|
70
|
+
- b4a3ff2: Improve Relation handling and display
|
|
71
|
+
|
|
72
|
+
## 0.0.2
|
|
73
|
+
|
|
74
|
+
### Patch Changes
|
|
75
|
+
|
|
76
|
+
- 33d9c12: Modify types to take Uint8Array<ArrayBufferLike> for compatiblity
|
|
77
|
+
|
|
78
|
+
## 0.0.1
|
|
79
|
+
|
|
80
|
+
### Patch Changes
|
|
81
|
+
|
|
82
|
+
- Initial release
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bbox-intersects.d.ts","sourceRoot":"","sources":["../src/bbox-intersects.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"bbox-intersects.d.ts","sourceRoot":"","sources":["../src/bbox-intersects.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAE3C;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,WActE"}
|
package/dist/color.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Rgba } from "./types";
|
|
1
|
+
import type { Rgba } from "./types.ts";
|
|
2
2
|
export declare function normalizeHexColor(value: string | number | null | undefined): string | undefined;
|
|
3
3
|
export declare function hexColorToRgba(value: string | number | null | undefined): Rgba | undefined;
|
|
4
4
|
//# sourceMappingURL=color.d.ts.map
|
package/dist/color.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"color.d.ts","sourceRoot":"","sources":["../src/color.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"color.d.ts","sourceRoot":"","sources":["../src/color.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAItC,wBAAgB,iBAAiB,CAChC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,GACvC,MAAM,GAAG,SAAS,CAiBpB;AAED,wBAAgB,cAAc,CAC7B,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,GACvC,IAAI,GAAG,SAAS,CASlB"}
|
package/dist/coordinates.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coordinates.d.ts","sourceRoot":"","sources":["../src/coordinates.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"coordinates.d.ts","sourceRoot":"","sources":["../src/coordinates.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAE3C;;;GAGG;AACH,eAAO,MAAM,eAAe,WAAM,CAAA;AAElC;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CACjC,IAAI,EAAE,SAAS,GACb,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAOlE"}
|
package/dist/relation-kind.d.ts
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
*
|
|
8
8
|
* @module
|
|
9
9
|
*/
|
|
10
|
-
import type { LonLat, OsmRelation, OsmWay, RelationKind, RelationKindMetadata } from "./types";
|
|
10
|
+
import type { LonLat, OsmRelation, OsmWay, RelationKind, RelationKindMetadata } from "./types.ts";
|
|
11
11
|
/**
|
|
12
12
|
* Get the semantic kind of a relation based on its type tag.
|
|
13
13
|
* Based on [OSM relation documentation](https://wiki.openstreetmap.org/wiki/Relation):
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relation-kind.d.ts","sourceRoot":"","sources":["../src/relation-kind.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACX,MAAM,EACN,WAAW,EAEX,MAAM,EACN,YAAY,EACZ,oBAAoB,EACpB,MAAM,
|
|
1
|
+
{"version":3,"file":"relation-kind.d.ts","sourceRoot":"","sources":["../src/relation-kind.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACX,MAAM,EACN,WAAW,EAEX,MAAM,EACN,YAAY,EACZ,oBAAoB,EACpB,MAAM,YAAY,CAAA;AAEnB;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,WAAW,GAAG,YAAY,CA4CnE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACtC,QAAQ,EAAE,WAAW,GACnB,oBAAoB,CAyCtB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,WAAW,GAAG,OAAO,CAE7D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,WAAW,GAAG,OAAO,CAE7D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,WAAW,GAAG,OAAO,CAE9D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,WAAW,GAAG,OAAO,CAE9D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,WAAW,GAAG,OAAO,CAE9D;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CACvC,QAAQ,EAAE,WAAW,EACrB,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,EACxC,kBAAkB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,GACxD,MAAM,EAAE,EAAE,CAmCZ;AAqJD;;;GAGG;AACH,wBAAgB,qBAAqB,CACpC,QAAQ,EAAE,WAAW,EACrB,kBAAkB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,GACxD,MAAM,EAAE,CAWV;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACrC,QAAQ,EAAE,WAAW,EACrB,WAAW,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,WAAW,GAAG,IAAI,EACvD,QAAQ,SAAK,EACb,OAAO,cAAoB,GACzB;IACF,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,SAAS,EAAE,MAAM,EAAE,CAAA;CACnB,CA4DA"}
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
*
|
|
10
10
|
* @module
|
|
11
11
|
*/
|
|
12
|
-
import type { LonLat, OsmRelation, OsmRelationMember, OsmWay } from "./types";
|
|
12
|
+
import type { LonLat, OsmRelation, OsmRelationMember, OsmWay } from "./types.ts";
|
|
13
13
|
/**
|
|
14
14
|
* Get way members from a relation, grouped by role (outer/inner).
|
|
15
15
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relation-multipolygon.d.ts","sourceRoot":"","sources":["../src/relation-multipolygon.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"relation-multipolygon.d.ts","sourceRoot":"","sources":["../src/relation-multipolygon.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAEhF;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,WAAW,GAAG;IAC3D,KAAK,EAAE,iBAAiB,EAAE,CAAA;IAC1B,KAAK,EAAE,iBAAiB,EAAE,CAAA;CAC1B,CAeA;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,EAAE,CAwGnE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CACjC,QAAQ,EAAE,WAAW,EACrB,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,EACxC,kBAAkB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,GACxD,MAAM,EAAE,EAAE,EAAE,CAwDd"}
|
package/dist/stream-to-bytes.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream-to-bytes.js","sourceRoot":"","sources":["../src/stream-to-bytes.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"stream-to-bytes.js","sourceRoot":"","sources":["../src/stream-to-bytes.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAE/C;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAClC,MAA+C;IAE/C,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,CAAA;IACjC,MAAM,MAAM,GAA8B,EAAE,CAAA;IAE5C,OAAO,IAAI,EAAE,CAAC;QACb,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAA;QAE3C,IAAI,IAAI,EAAE,CAAC;YACV,MAAK;QACN,CAAC;QAED,IAAI,KAAK,KAAK,SAAS;YAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC5C,CAAC;IAED,OAAO,WAAW,CAAC,MAAM,CAAC,CAAA;AAC3B,CAAC"}
|
package/dist/tile.d.ts
CHANGED
|
@@ -7,7 +7,9 @@
|
|
|
7
7
|
*
|
|
8
8
|
* @module
|
|
9
9
|
*/
|
|
10
|
-
import
|
|
10
|
+
import { pointToTileFraction } from "@mapbox/tilebelt";
|
|
11
|
+
import type { GeoBbox2D, LonLat, Tile, TilePxBbox, XY } from "./types.ts";
|
|
12
|
+
export { pointToTileFraction };
|
|
11
13
|
/**
|
|
12
14
|
* Get the geographic bounding box of a tile.
|
|
13
15
|
* Returns [west, south, east, north].
|
|
@@ -22,6 +24,16 @@ export declare function bboxToTilePx(bbox: GeoBbox2D, tile: Tile, tileSize?: num
|
|
|
22
24
|
* Returns [x, y] in pixels relative to the top-left of the tile.
|
|
23
25
|
*/
|
|
24
26
|
export declare function llToTilePx(ll: LonLat, tile: Tile, tileSize?: number): XY;
|
|
27
|
+
/**
|
|
28
|
+
* Convert lon/lat bounds to Web Mercator tile range for a zoom.
|
|
29
|
+
*/
|
|
30
|
+
export declare function bboxToTileRange(bbox: GeoBbox2D, zoom: number): {
|
|
31
|
+
minX: number;
|
|
32
|
+
minY: number;
|
|
33
|
+
maxX: number;
|
|
34
|
+
maxY: number;
|
|
35
|
+
count: number;
|
|
36
|
+
};
|
|
25
37
|
/**
|
|
26
38
|
* Convert tile pixel coordinates to geographic coordinates.
|
|
27
39
|
*/
|
package/dist/tile.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tile.d.ts","sourceRoot":"","sources":["../src/tile.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;
|
|
1
|
+
{"version":3,"file":"tile.d.ts","sourceRoot":"","sources":["../src/tile.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,YAAY,CAAA;AAIzE,OAAO,EAAE,mBAAmB,EAAE,CAAA;AAW9B;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,SAAS,CAOhD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC3B,IAAI,EAAE,SAAS,EACf,IAAI,EAAE,IAAI,EACV,QAAQ,SAAM,GACZ,UAAU,CAIZ;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,SAAM,GAAG,EAAE,CAMrE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM;;;;;;EAU5D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,SAAM,GAAG,MAAM,CAKzE;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC9B,EAAE,EAAE,EAAE,EACN,cAAc,EAAE,MAAM,GAAG,SAAS,GAChC,EAAE,CASJ"}
|
package/dist/tile.js
CHANGED
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
*/
|
|
10
10
|
import { pointToTileFraction } from "@mapbox/tilebelt";
|
|
11
11
|
const RADIANS_TO_DEGREES = 180 / Math.PI;
|
|
12
|
+
export { pointToTileFraction };
|
|
12
13
|
function tile2lon(x, z) {
|
|
13
14
|
return (x / 2 ** z) * 360 - 180;
|
|
14
15
|
}
|
|
@@ -47,6 +48,20 @@ export function llToTilePx(ll, tile, tileSize = 256) {
|
|
|
47
48
|
const y = (tf[1] - ty) * tileSize;
|
|
48
49
|
return [x, y];
|
|
49
50
|
}
|
|
51
|
+
/**
|
|
52
|
+
* Convert lon/lat bounds to Web Mercator tile range for a zoom.
|
|
53
|
+
*/
|
|
54
|
+
export function bboxToTileRange(bbox, zoom) {
|
|
55
|
+
const [west, south, east, north] = bbox;
|
|
56
|
+
const [xA, yA] = pointToTileFraction(west, north, zoom);
|
|
57
|
+
const [xB, yB] = pointToTileFraction(east, south, zoom);
|
|
58
|
+
const minX = Math.min(xA, xB);
|
|
59
|
+
const maxX = Math.max(xA, xB);
|
|
60
|
+
const minY = Math.min(yA, yB);
|
|
61
|
+
const maxY = Math.max(yA, yB);
|
|
62
|
+
const count = (maxX - minX + 1) * (maxY - minY + 1);
|
|
63
|
+
return { minX, minY, maxX, maxY, count };
|
|
64
|
+
}
|
|
50
65
|
/**
|
|
51
66
|
* Convert tile pixel coordinates to geographic coordinates.
|
|
52
67
|
*/
|
package/dist/tile.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tile.js","sourceRoot":"","sources":["../src/tile.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAGtD,MAAM,kBAAkB,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,CAAA;AAExC,SAAS,QAAQ,CAAC,CAAS,EAAE,CAAS;IACrC,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,CAAA;AAChC,CAAC;AAED,SAAS,QAAQ,CAAC,CAAS,EAAE,CAAS;IACrC,MAAM,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IAC9C,OAAO,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAC1E,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,IAAU;IACpC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,CAAA;IACzB,MAAM,CAAC,GAAG,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;IAC1B,MAAM,CAAC,GAAG,QAAQ,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAA;IAC9B,MAAM,CAAC,GAAG,QAAQ,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAA;IAC9B,MAAM,CAAC,GAAG,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;IAC1B,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;AACpB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAC3B,IAAe,EACf,IAAU,EACV,QAAQ,GAAG,GAAG;IAEd,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAA;IACnE,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAA;IACnE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;AAChC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,EAAU,EAAE,IAAU,EAAE,QAAQ,GAAG,GAAG;IAChE,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,CAAA;IACzB,MAAM,EAAE,GAAG,mBAAmB,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IAChD,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,QAAQ,CAAA;IACjC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,QAAQ,CAAA;IACjC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,EAAM,EAAE,IAAU,EAAE,QAAQ,GAAG,GAAG;IAChE,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,CAAA;IACzB,MAAM,GAAG,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,EAAE,EAAE,EAAE,CAAC,CAAA;IAC/C,MAAM,GAAG,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,EAAE,EAAE,EAAE,CAAC,CAAA;IAC/C,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;AAClB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAC9B,EAAM,EACN,cAAkC;IAElC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAC7B,OAAO,cAAc,KAAK,QAAQ;QACjC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,cAAc,EAAE,cAAc,CAAC;QACxC,CAAC,CAAC,cAAc,CAAA;IAClB,OAAO;QACN,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjD,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACjD,CAAA;AACF,CAAC"}
|
|
1
|
+
{"version":3,"file":"tile.js","sourceRoot":"","sources":["../src/tile.ts"],"names":[],"mappings":"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"}
|
package/dist/transform-bytes.js
CHANGED
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
*
|
|
6
6
|
* @module
|
|
7
7
|
*/
|
|
8
|
-
import { bytesToStream } from "./bytes-to-stream";
|
|
9
|
-
import { streamToBytes } from "./stream-to-bytes";
|
|
8
|
+
import { bytesToStream } from "./bytes-to-stream.js";
|
|
9
|
+
import { streamToBytes } from "./stream-to-bytes.js";
|
|
10
10
|
/**
|
|
11
11
|
* Pipe a byte array through a TransformStream and return the result.
|
|
12
12
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transform-bytes.js","sourceRoot":"","sources":["../src/transform-bytes.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"transform-bytes.js","sourceRoot":"","sources":["../src/transform-bytes.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAEpD;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CACnC,KAA8B,EAC9B,eAGC;IAED,OAAO,aAAa,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,CAAA;AACxE,CAAC"}
|
package/dist/utils.d.ts
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*
|
|
7
7
|
* @module
|
|
8
8
|
*/
|
|
9
|
-
import type { GeoBbox2D, LonLat, OsmEntity, OsmEntityType, OsmNode, OsmRelation, OsmWay } from "./types";
|
|
9
|
+
import type { GeoBbox2D, LonLat, OsmEntity, OsmEntityType, OsmNode, OsmRelation, OsmWay } from "./types.ts";
|
|
10
10
|
/** Type guard: check if entity is a Node. */
|
|
11
11
|
export declare function isNode(entity: OsmEntity): entity is OsmNode;
|
|
12
12
|
/** Check if two nodes are equal (position, tags, and info). */
|
package/dist/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EACX,SAAS,EACT,MAAM,EACN,SAAS,EACT,aAAa,EACb,OAAO,EACP,WAAW,EACX,MAAM,EACN,MAAM,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EACX,SAAS,EACT,MAAM,EACN,SAAS,EACT,aAAa,EACb,OAAO,EACP,WAAW,EACX,MAAM,EACN,MAAM,YAAY,CAAA;AASnB,6CAA6C;AAC7C,wBAAgB,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,IAAI,OAAO,CAE3D;AAED,+DAA+D;AAC/D,wBAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,WAEjD;AAED,4CAA4C;AAC5C,wBAAgB,KAAK,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,IAAI,MAAM,CAEzD;AAED,iDAAiD;AACjD,wBAAgB,UAAU,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,IAAI,WAAW,CAEnE;AAED,0DAA0D;AAC1D,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,WAE9C;AAED,kEAAkE;AAClE,wBAAgB,eAAe,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,WAE7D;AAED,2EAA2E;AAC3E,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,WAO/D;AAED,wEAAwE;AACxE,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,GAAG,aAAa,CAK9D;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,WAAW,GAAG,OAAO,CAErE;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,SAAS,CAY5D"}
|
package/dist/way-is-area.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"way-is-area.d.ts","sourceRoot":"","sources":["../src/way-is-area.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"way-is-area.d.ts","sourceRoot":"","sources":["../src/way-is-area.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAqDxC;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CA+B/C"}
|
package/package.json
CHANGED
|
@@ -1,70 +1,35 @@
|
|
|
1
1
|
{
|
|
2
|
-
"$schema": "https://json.schemastore.org/package",
|
|
3
2
|
"name": "@osmix/shared",
|
|
4
3
|
"type": "module",
|
|
5
|
-
"version": "0.0.
|
|
4
|
+
"version": "0.0.13",
|
|
6
5
|
"description": "Shared utilities for Osmix",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "git+https://github.com/conveyal/osmix.git"
|
|
10
|
+
},
|
|
7
11
|
"exports": {
|
|
8
12
|
"./tsconfig/base.json": "./tsconfig/base.json",
|
|
9
13
|
"./tsconfig/test.json": "./tsconfig/test.json",
|
|
10
14
|
"./tsconfig/app.json": "./tsconfig/app.json",
|
|
11
15
|
"./*": {
|
|
12
|
-
"
|
|
13
|
-
"
|
|
14
|
-
"default": "./dist/*.js"
|
|
15
|
-
}
|
|
16
|
-
},
|
|
17
|
-
"typesVersions": {
|
|
18
|
-
"*": {
|
|
19
|
-
"tsconfig/base.json": [
|
|
20
|
-
"tsconfig/base.json"
|
|
21
|
-
],
|
|
22
|
-
"tsconfig/test.json": [
|
|
23
|
-
"tsconfig/test.json"
|
|
24
|
-
],
|
|
25
|
-
"tsconfig/app.json": [
|
|
26
|
-
"tsconfig/app.json"
|
|
27
|
-
],
|
|
28
|
-
"*": [
|
|
29
|
-
"src/*"
|
|
30
|
-
]
|
|
16
|
+
"default": "./dist/*.js",
|
|
17
|
+
"types": "./dist/*.d.ts"
|
|
31
18
|
}
|
|
32
19
|
},
|
|
33
|
-
"publishConfig": {
|
|
34
|
-
"access": "public"
|
|
35
|
-
},
|
|
36
|
-
"license": "MIT",
|
|
37
|
-
"repository": {
|
|
38
|
-
"type": "git",
|
|
39
|
-
"url": "git+https://github.com/conveyal/osmix.git"
|
|
40
|
-
},
|
|
41
|
-
"homepage": "https://github.com/conveyal/osmix#readme",
|
|
42
|
-
"bugs": {
|
|
43
|
-
"url": "https://github.com/conveyal/osmix/issues"
|
|
44
|
-
},
|
|
45
|
-
"sideEffects": false,
|
|
46
20
|
"scripts": {
|
|
47
21
|
"build": "tsc -p tsconfig.build.json",
|
|
48
22
|
"bench": "bun test --bench",
|
|
49
|
-
"prepare": "bun run build",
|
|
50
|
-
"release": "bun publish",
|
|
51
23
|
"test": "bun test",
|
|
52
24
|
"typecheck": "tsgo --noEmit"
|
|
53
25
|
},
|
|
54
26
|
"devDependencies": {
|
|
55
|
-
"@types/bun": "
|
|
56
|
-
"typescript": "
|
|
27
|
+
"@types/bun": "^1.3.9",
|
|
28
|
+
"typescript": "^5.9.0"
|
|
57
29
|
},
|
|
58
30
|
"dependencies": {
|
|
59
31
|
"@mapbox/tilebelt": "^2.0.3",
|
|
60
|
-
"dequal": "
|
|
32
|
+
"dequal": "^2.0.3",
|
|
61
33
|
"lineclip": "^2.0.0"
|
|
62
|
-
}
|
|
63
|
-
"files": [
|
|
64
|
-
"dist",
|
|
65
|
-
"src",
|
|
66
|
-
"tsconfig",
|
|
67
|
-
"README.md",
|
|
68
|
-
"LICENSE"
|
|
69
|
-
]
|
|
34
|
+
}
|
|
70
35
|
}
|
package/src/bbox-intersects.ts
CHANGED
package/src/color.ts
CHANGED
package/src/coordinates.ts
CHANGED
package/src/relation-kind.ts
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* @module
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
|
-
import type { LonLat, OsmRelation, OsmRelationMember, OsmWay } from "./types"
|
|
13
|
+
import type { LonLat, OsmRelation, OsmRelationMember, OsmWay } from "./types.ts"
|
|
14
14
|
|
|
15
15
|
/**
|
|
16
16
|
* Get way members from a relation, grouped by role (outer/inner).
|
package/src/stream-to-bytes.ts
CHANGED
package/src/tile.ts
CHANGED
|
@@ -9,10 +9,12 @@
|
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
11
|
import { pointToTileFraction } from "@mapbox/tilebelt"
|
|
12
|
-
import type { GeoBbox2D, LonLat, Tile, TilePxBbox, XY } from "./types"
|
|
12
|
+
import type { GeoBbox2D, LonLat, Tile, TilePxBbox, XY } from "./types.ts"
|
|
13
13
|
|
|
14
14
|
const RADIANS_TO_DEGREES = 180 / Math.PI
|
|
15
15
|
|
|
16
|
+
export { pointToTileFraction }
|
|
17
|
+
|
|
16
18
|
function tile2lon(x: number, z: number): number {
|
|
17
19
|
return (x / 2 ** z) * 360 - 180
|
|
18
20
|
}
|
|
@@ -60,6 +62,21 @@ export function llToTilePx(ll: LonLat, tile: Tile, tileSize = 256): XY {
|
|
|
60
62
|
return [x, y]
|
|
61
63
|
}
|
|
62
64
|
|
|
65
|
+
/**
|
|
66
|
+
* Convert lon/lat bounds to Web Mercator tile range for a zoom.
|
|
67
|
+
*/
|
|
68
|
+
export function bboxToTileRange(bbox: GeoBbox2D, zoom: number) {
|
|
69
|
+
const [west, south, east, north] = bbox
|
|
70
|
+
const [xA, yA] = pointToTileFraction(west, north, zoom)
|
|
71
|
+
const [xB, yB] = pointToTileFraction(east, south, zoom)
|
|
72
|
+
const minX = Math.min(xA, xB)
|
|
73
|
+
const maxX = Math.max(xA, xB)
|
|
74
|
+
const minY = Math.min(yA, yB)
|
|
75
|
+
const maxY = Math.max(yA, yB)
|
|
76
|
+
const count = (maxX - minX + 1) * (maxY - minY + 1)
|
|
77
|
+
return { minX, minY, maxX, maxY, count }
|
|
78
|
+
}
|
|
79
|
+
|
|
63
80
|
/**
|
|
64
81
|
* Convert tile pixel coordinates to geographic coordinates.
|
|
65
82
|
*/
|
package/src/transform-bytes.ts
CHANGED
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
* @module
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
-
import { bytesToStream } from "./bytes-to-stream"
|
|
10
|
-
import { streamToBytes } from "./stream-to-bytes"
|
|
9
|
+
import { bytesToStream } from "./bytes-to-stream.ts"
|
|
10
|
+
import { streamToBytes } from "./stream-to-bytes.ts"
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
13
|
* Pipe a byte array through a TransformStream and return the result.
|
package/src/utils.ts
CHANGED
package/src/way-is-area.ts
CHANGED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { describe, expect, it } from "bun:test"
|
|
2
|
+
import {
|
|
3
|
+
CsvParseStream,
|
|
4
|
+
type CsvParseStreamOptions,
|
|
5
|
+
} from "../src/csv-parse-stream"
|
|
6
|
+
|
|
7
|
+
async function parseCsv(
|
|
8
|
+
chunks: string[],
|
|
9
|
+
opts: CsvParseStreamOptions = {},
|
|
10
|
+
): Promise<Record<string, string>[]> {
|
|
11
|
+
const source = new ReadableStream<string>({
|
|
12
|
+
start(controller) {
|
|
13
|
+
for (const chunk of chunks) controller.enqueue(chunk)
|
|
14
|
+
controller.close()
|
|
15
|
+
},
|
|
16
|
+
})
|
|
17
|
+
|
|
18
|
+
const parsed = source.pipeThrough(new CsvParseStream(opts))
|
|
19
|
+
return Array.fromAsync(parsed)
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
describe("CsvParseStream", () => {
|
|
23
|
+
it("parses basic header + rows", async () => {
|
|
24
|
+
const rows = await parseCsv(["id,name\n1,Alice\n2,Bob\n"])
|
|
25
|
+
expect(rows).toEqual([
|
|
26
|
+
{ id: "1", name: "Alice" },
|
|
27
|
+
{ id: "2", name: "Bob" },
|
|
28
|
+
])
|
|
29
|
+
})
|
|
30
|
+
|
|
31
|
+
it("handles quoted fields with commas and escaped quotes", async () => {
|
|
32
|
+
const rows = await parseCsv([
|
|
33
|
+
'id,name,notes\n1,"Alice, A.","says ""hi"""\n',
|
|
34
|
+
])
|
|
35
|
+
|
|
36
|
+
expect(rows).toEqual([{ id: "1", name: "Alice, A.", notes: 'says "hi"' }])
|
|
37
|
+
})
|
|
38
|
+
|
|
39
|
+
it("handles fields split across chunks", async () => {
|
|
40
|
+
const rows = await parseCsv([
|
|
41
|
+
"id,name,notes\n1,Alice,",
|
|
42
|
+
'"line one',
|
|
43
|
+
' and two"\n2,Bob,ok\n',
|
|
44
|
+
])
|
|
45
|
+
|
|
46
|
+
expect(rows).toEqual([
|
|
47
|
+
{ id: "1", name: "Alice", notes: "line one and two" },
|
|
48
|
+
{ id: "2", name: "Bob", notes: "ok" },
|
|
49
|
+
])
|
|
50
|
+
})
|
|
51
|
+
|
|
52
|
+
it("supports comment skipping + header/value mapping", async () => {
|
|
53
|
+
const rows = await parseCsv(
|
|
54
|
+
["# comment\n", "id,name\n", "1,Alice\n", "2,Bob\n"],
|
|
55
|
+
{
|
|
56
|
+
skipComments: true,
|
|
57
|
+
mapHeaders: ({ header }) => header.toUpperCase(),
|
|
58
|
+
mapValues: ({ value }) => value.trim(),
|
|
59
|
+
},
|
|
60
|
+
)
|
|
61
|
+
|
|
62
|
+
expect(rows).toEqual([
|
|
63
|
+
{ ID: "1", NAME: "Alice" },
|
|
64
|
+
{ ID: "2", NAME: "Bob" },
|
|
65
|
+
])
|
|
66
|
+
})
|
|
67
|
+
})
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { expect, test } from "bun:test"
|
|
2
|
+
import { haversineDistance } from "../src/haversine-distance"
|
|
3
|
+
|
|
4
|
+
test("haversineDistance", () => {
|
|
5
|
+
const p1: [number, number] = [-75.343, 39.984]
|
|
6
|
+
const p2: [number, number] = [-75.534, 39.123]
|
|
7
|
+
expect(haversineDistance(p1, p2)).toBeCloseTo(97129.2211, 3)
|
|
8
|
+
})
|