@math.gl/dggs 5.0.0-alpha.2

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 (113) hide show
  1. package/LICENSE +140 -0
  2. package/README.md +7 -0
  3. package/dist/a5-decoder.d.ts +15 -0
  4. package/dist/a5-decoder.d.ts.map +1 -0
  5. package/dist/a5-decoder.js +36 -0
  6. package/dist/a5-decoder.js.map +1 -0
  7. package/dist/a5.cjs +77 -0
  8. package/dist/a5.cjs.map +6 -0
  9. package/dist/a5.d.ts +2 -0
  10. package/dist/a5.d.ts.map +1 -0
  11. package/dist/a5.js +5 -0
  12. package/dist/a5.js.map +1 -0
  13. package/dist/converters/s2-to-obb-points.d.ts +15 -0
  14. package/dist/converters/s2-to-obb-points.d.ts.map +1 -0
  15. package/dist/converters/s2-to-obb-points.js +60 -0
  16. package/dist/converters/s2-to-obb-points.js.map +1 -0
  17. package/dist/converters/s2-to-region.d.ts +6 -0
  18. package/dist/converters/s2-to-region.d.ts.map +1 -0
  19. package/dist/converters/s2-to-region.js +27 -0
  20. package/dist/converters/s2-to-region.js.map +1 -0
  21. package/dist/dggs-decoder.d.ts +37 -0
  22. package/dist/dggs-decoder.d.ts.map +1 -0
  23. package/dist/dggs-decoder.js +28 -0
  24. package/dist/dggs-decoder.js.map +1 -0
  25. package/dist/geohash-decoder.d.ts +17 -0
  26. package/dist/geohash-decoder.d.ts.map +1 -0
  27. package/dist/geohash-decoder.js +88 -0
  28. package/dist/geohash-decoder.js.map +1 -0
  29. package/dist/geohash.cjs +108 -0
  30. package/dist/geohash.cjs.map +6 -0
  31. package/dist/geohash.d.ts +2 -0
  32. package/dist/geohash.d.ts.map +1 -0
  33. package/dist/geohash.js +5 -0
  34. package/dist/geohash.js.map +1 -0
  35. package/dist/h3-decoder.d.ts +15 -0
  36. package/dist/h3-decoder.d.ts.map +1 -0
  37. package/dist/h3-decoder.js +46 -0
  38. package/dist/h3-decoder.js.map +1 -0
  39. package/dist/h3.cjs +87 -0
  40. package/dist/h3.cjs.map +6 -0
  41. package/dist/h3.d.ts +2 -0
  42. package/dist/h3.d.ts.map +1 -0
  43. package/dist/h3.js +5 -0
  44. package/dist/h3.js.map +1 -0
  45. package/dist/index.cjs +615 -0
  46. package/dist/index.cjs.map +6 -0
  47. package/dist/index.d.ts +24 -0
  48. package/dist/index.d.ts.map +1 -0
  49. package/dist/index.js +52 -0
  50. package/dist/index.js.map +1 -0
  51. package/dist/plus-code-decoder.d.ts +16 -0
  52. package/dist/plus-code-decoder.d.ts.map +1 -0
  53. package/dist/plus-code-decoder.js +50 -0
  54. package/dist/plus-code-decoder.js.map +1 -0
  55. package/dist/plus-code.cjs +88 -0
  56. package/dist/plus-code.cjs.map +6 -0
  57. package/dist/plus-code.d.ts +2 -0
  58. package/dist/plus-code.d.ts.map +1 -0
  59. package/dist/plus-code.js +5 -0
  60. package/dist/plus-code.js.map +1 -0
  61. package/dist/quadkey-decoder.d.ts +14 -0
  62. package/dist/quadkey-decoder.d.ts.map +1 -0
  63. package/dist/quadkey-decoder.js +86 -0
  64. package/dist/quadkey-decoder.js.map +1 -0
  65. package/dist/quadkey.cjs +106 -0
  66. package/dist/quadkey.cjs.map +6 -0
  67. package/dist/quadkey.d.ts +2 -0
  68. package/dist/quadkey.d.ts.map +1 -0
  69. package/dist/quadkey.js +5 -0
  70. package/dist/quadkey.js.map +1 -0
  71. package/dist/s2-decoder.d.ts +26 -0
  72. package/dist/s2-decoder.d.ts.map +1 -0
  73. package/dist/s2-decoder.js +76 -0
  74. package/dist/s2-decoder.js.map +1 -0
  75. package/dist/s2-geometry/s2-geometry.d.ts +13 -0
  76. package/dist/s2-geometry/s2-geometry.d.ts.map +1 -0
  77. package/dist/s2-geometry/s2-geometry.js +126 -0
  78. package/dist/s2-geometry/s2-geometry.js.map +1 -0
  79. package/dist/s2-geometry/s2-to-boundary.d.ts +14 -0
  80. package/dist/s2-geometry/s2-to-boundary.d.ts.map +1 -0
  81. package/dist/s2-geometry/s2-to-boundary.js +60 -0
  82. package/dist/s2-geometry/s2-to-boundary.js.map +1 -0
  83. package/dist/s2-geometry/s2-token.d.ts +13 -0
  84. package/dist/s2-geometry/s2-token.d.ts.map +1 -0
  85. package/dist/s2-geometry/s2-token.js +61 -0
  86. package/dist/s2-geometry/s2-token.js.map +1 -0
  87. package/dist/s2.cjs +278 -0
  88. package/dist/s2.cjs.map +6 -0
  89. package/dist/s2.d.ts +3 -0
  90. package/dist/s2.d.ts.map +1 -0
  91. package/dist/s2.js +6 -0
  92. package/dist/s2.js.map +1 -0
  93. package/package.json +80 -0
  94. package/src/a5-decoder.ts +42 -0
  95. package/src/a5.ts +5 -0
  96. package/src/converters/s2-to-obb-points.ts +78 -0
  97. package/src/converters/s2-to-region.ts +30 -0
  98. package/src/dggs-decoder.ts +71 -0
  99. package/src/geohash-decoder.ts +99 -0
  100. package/src/geohash.ts +5 -0
  101. package/src/h3-decoder.ts +53 -0
  102. package/src/h3.ts +5 -0
  103. package/src/index.ts +61 -0
  104. package/src/open-location-code.d.ts +19 -0
  105. package/src/plus-code-decoder.ts +56 -0
  106. package/src/plus-code.ts +5 -0
  107. package/src/quadkey-decoder.ts +98 -0
  108. package/src/quadkey.ts +5 -0
  109. package/src/s2-decoder.ts +87 -0
  110. package/src/s2-geometry/s2-geometry.ts +166 -0
  111. package/src/s2-geometry/s2-to-boundary.ts +76 -0
  112. package/src/s2-geometry/s2-token.ts +70 -0
  113. package/src/s2.ts +6 -0
package/dist/index.cjs ADDED
@@ -0,0 +1,615 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ // If the importer is in node compatibility mode or this is not an ESM
21
+ // file that has been converted to a CommonJS file using a Babel-
22
+ // compatible transform (i.e. "__esModule" has not been set), then set
23
+ // "default" to the CommonJS "module.exports" for node compatibility.
24
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
+ mod
26
+ ));
27
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
+
29
+ // dist/index.js
30
+ var index_exports = {};
31
+ __export(index_exports, {
32
+ A5Decoder: () => A5Decoder,
33
+ DGGS_DECODERS: () => DGGS_DECODERS,
34
+ GeohashDecoder: () => GeohashDecoder,
35
+ H3Decoder: () => H3Decoder,
36
+ PlusCodeDecoder: () => PlusCodeDecoder,
37
+ QuadkeyDecoder: () => QuadkeyDecoder,
38
+ S2Decoder: () => S2Decoder,
39
+ findDGGSCellColumn: () => findDGGSCellColumn,
40
+ getS2ChildIndex: () => getS2ChildIndex,
41
+ quadkeyToWorldBounds: () => quadkeyToWorldBounds
42
+ });
43
+ module.exports = __toCommonJS(index_exports);
44
+
45
+ // dist/a5-decoder.js
46
+ var import_a5_js = require("a5-js");
47
+
48
+ // dist/dggs-decoder.js
49
+ function getDGGSCellToken(cell, gridName) {
50
+ if (typeof cell !== "string") {
51
+ throw new Error(`${gridName} cell identifiers must be strings`);
52
+ }
53
+ return cell;
54
+ }
55
+ function getDGGSCellBounds(boundary) {
56
+ let west = Infinity;
57
+ let south = Infinity;
58
+ let east = -Infinity;
59
+ let north = -Infinity;
60
+ for (const [longitude, latitude] of boundary) {
61
+ west = Math.min(west, longitude);
62
+ south = Math.min(south, latitude);
63
+ east = Math.max(east, longitude);
64
+ north = Math.max(north, latitude);
65
+ }
66
+ return [
67
+ [west, south],
68
+ [east, north]
69
+ ];
70
+ }
71
+
72
+ // dist/a5-decoder.js
73
+ var A5Decoder = {
74
+ name: "a5",
75
+ hasNumericRepresentation: true,
76
+ cellColumnNames: [
77
+ "a5",
78
+ "a5Token",
79
+ "a5_token",
80
+ "a5Cell",
81
+ "a5_cell",
82
+ "a5CellId",
83
+ "a5_cell_id",
84
+ "pentagon"
85
+ ],
86
+ tokenToCell: (token) => (0, import_a5_js.hexToU64)(removeHexPrefix(token)),
87
+ cellToToken: (cell) => typeof cell === "string" ? removeHexPrefix(cell) : (0, import_a5_js.u64ToHex)(cell),
88
+ cellToLngLat: (cell) => (0, import_a5_js.cellToLonLat)(getA5CellIndex(cell)),
89
+ cellToBoundary: (cell) => getA5Boundary(cell),
90
+ cellToBoundaryFlat: (cell) => getA5Boundary(cell).flat(),
91
+ cellToBounds: (cell) => getDGGSCellBounds(getA5Boundary(cell))
92
+ };
93
+ function getA5CellIndex(cell) {
94
+ return typeof cell === "bigint" ? cell : (0, import_a5_js.hexToU64)(removeHexPrefix(cell));
95
+ }
96
+ function getA5Boundary(cell) {
97
+ return (0, import_a5_js.cellToBoundary)(getA5CellIndex(cell)).map(([longitude, latitude]) => [longitude, latitude]);
98
+ }
99
+ function removeHexPrefix(token) {
100
+ return token.startsWith("0x") || token.startsWith("0X") ? token.slice(2) : token;
101
+ }
102
+
103
+ // dist/geohash-decoder.js
104
+ var GeohashDecoder = {
105
+ name: "geohash",
106
+ hasNumericRepresentation: false,
107
+ cellColumnNames: ["geohash", "geohashId", "geohash_id"],
108
+ cellToLngLat: (cell) => getGeohashLngLat(getDGGSCellToken(cell, "GeoHash")),
109
+ cellToBoundary: (cell) => getGeohashBoundary(getDGGSCellToken(cell, "GeoHash")),
110
+ cellToBoundaryFlat: (cell) => getGeohashBoundaryFlat(getDGGSCellToken(cell, "GeoHash")),
111
+ cellToBounds: (cell) => getGeohashBounds(getDGGSCellToken(cell, "GeoHash"))
112
+ };
113
+ var BASE32_CODES = "0123456789bcdefghjkmnpqrstuvwxyz";
114
+ var BASE32_CODES_DICT = {};
115
+ for (let i = 0; i < BASE32_CODES.length; i++) {
116
+ BASE32_CODES_DICT[BASE32_CODES.charAt(i)] = i;
117
+ }
118
+ var MIN_LAT = -90;
119
+ var MAX_LAT = 90;
120
+ var MIN_LON = -180;
121
+ var MAX_LON = 180;
122
+ function getGeohashLngLat(geohash) {
123
+ const [[w, s], [e, n]] = getGeohashBounds(geohash);
124
+ return [(e + w) / 2, (n + s) / 2];
125
+ }
126
+ function getGeohashBoundary(geohash) {
127
+ const [[w, s], [e, n]] = getGeohashBounds(geohash);
128
+ return [
129
+ [e, n],
130
+ [e, s],
131
+ [w, s],
132
+ [w, n],
133
+ [e, n]
134
+ ];
135
+ }
136
+ function getGeohashBoundaryFlat(geohash) {
137
+ const [[w, s], [e, n]] = getGeohashBounds(geohash);
138
+ return [e, n, e, s, w, s, w, n, e, n];
139
+ }
140
+ function getGeohashBounds(geohash) {
141
+ let isLon = true;
142
+ let maxLat = MAX_LAT;
143
+ let minLat = MIN_LAT;
144
+ let maxLon = MAX_LON;
145
+ let minLon = MIN_LON;
146
+ let mid;
147
+ let hashValue = 0;
148
+ for (let i = 0, l = geohash.length; i < l; i++) {
149
+ const code = geohash[i].toLowerCase();
150
+ hashValue = BASE32_CODES_DICT[code];
151
+ for (let bits = 4; bits >= 0; bits--) {
152
+ const bit = hashValue >> bits & 1;
153
+ if (isLon) {
154
+ mid = (maxLon + minLon) / 2;
155
+ if (bit === 1) {
156
+ minLon = mid;
157
+ } else {
158
+ maxLon = mid;
159
+ }
160
+ } else {
161
+ mid = (maxLat + minLat) / 2;
162
+ if (bit === 1) {
163
+ minLat = mid;
164
+ } else {
165
+ maxLat = mid;
166
+ }
167
+ }
168
+ isLon = !isLon;
169
+ }
170
+ }
171
+ return [
172
+ [minLon, minLat],
173
+ [maxLon, maxLat]
174
+ ];
175
+ }
176
+
177
+ // dist/h3-decoder.js
178
+ var import_h3_js = require("h3-js");
179
+ var H3Decoder = {
180
+ name: "h3",
181
+ hasNumericRepresentation: true,
182
+ cellColumnNames: [
183
+ "h3",
184
+ "h3Index",
185
+ "h3_index",
186
+ "h3Cell",
187
+ "h3_cell",
188
+ "h3CellId",
189
+ "h3_cell_id",
190
+ "hexagon"
191
+ ],
192
+ tokenToCell: (token) => getBigIntFromHexToken(token),
193
+ cellToToken: (cell) => getH3Token(cell),
194
+ cellToLngLat: (cell) => getH3LngLat(cell),
195
+ cellToBoundary: (cell) => getH3Boundary(cell),
196
+ cellToBoundaryFlat: (cell) => getH3Boundary(cell).flat(),
197
+ cellToBounds: (cell) => getDGGSCellBounds(getH3Boundary(cell))
198
+ };
199
+ function getH3Token(cell) {
200
+ return typeof cell === "bigint" ? cell.toString(16) : removeHexPrefix2(cell);
201
+ }
202
+ function getH3LngLat(cell) {
203
+ const [latitude, longitude] = (0, import_h3_js.cellToLatLng)(getH3Token(cell));
204
+ return [longitude, latitude];
205
+ }
206
+ function getH3Boundary(cell) {
207
+ return (0, import_h3_js.cellToBoundary)(getH3Token(cell), true).map(([longitude, latitude]) => [
208
+ longitude,
209
+ latitude
210
+ ]);
211
+ }
212
+ function getBigIntFromHexToken(token) {
213
+ return BigInt(`0x${removeHexPrefix2(token)}`);
214
+ }
215
+ function removeHexPrefix2(token) {
216
+ return token.startsWith("0x") || token.startsWith("0X") ? token.slice(2) : token;
217
+ }
218
+
219
+ // dist/plus-code-decoder.js
220
+ var import_open_location_code = __toESM(require("open-location-code"), 1);
221
+ var openLocationCode = new import_open_location_code.default.OpenLocationCode();
222
+ var PlusCodeDecoder = {
223
+ name: "plus-code",
224
+ hasNumericRepresentation: false,
225
+ cellColumnNames: ["plusCode", "plus_code", "openLocationCode", "open_location_code", "olc"],
226
+ cellToLngLat: (cell) => getPlusCodeLngLat(cell),
227
+ cellToBoundary: (cell) => getPlusCodeBoundary(decodePlusCode(cell)),
228
+ cellToBoundaryFlat: (cell) => {
229
+ const area = decodePlusCode(cell);
230
+ return getPlusCodeBoundary(area).flat();
231
+ },
232
+ cellToBounds: (cell) => {
233
+ const area = decodePlusCode(cell);
234
+ return [
235
+ [area.longitudeLo, area.latitudeLo],
236
+ [area.longitudeHi, area.latitudeHi]
237
+ ];
238
+ }
239
+ };
240
+ function getPlusCodeLngLat(cell) {
241
+ const area = decodePlusCode(cell);
242
+ return [area.longitudeCenter, area.latitudeCenter];
243
+ }
244
+ function decodePlusCode(cell) {
245
+ const code = getDGGSCellToken(cell, "Plus Code");
246
+ if (!openLocationCode.isFull(code)) {
247
+ throw new Error(`Plus Code decoder requires a full code: ${code}`);
248
+ }
249
+ return openLocationCode.decode(code);
250
+ }
251
+ function getPlusCodeBoundary(area) {
252
+ const { longitudeLo: west, latitudeLo: south, longitudeHi: east, latitudeHi: north } = area;
253
+ return [
254
+ [east, north],
255
+ [east, south],
256
+ [west, south],
257
+ [west, north],
258
+ [east, north]
259
+ ];
260
+ }
261
+
262
+ // dist/quadkey-decoder.js
263
+ var TILE_SIZE = 512;
264
+ var QuadkeyDecoder = {
265
+ name: "quadkey",
266
+ hasNumericRepresentation: false,
267
+ cellColumnNames: ["quadkey", "quadkeyId", "quadkey_id"],
268
+ cellToLngLat: (cell) => getQuadkeyLngLat(getDGGSCellToken(cell, "Quadkey")),
269
+ cellToBoundary: (cell) => getQuadkeyBoundary(getDGGSCellToken(cell, "Quadkey")),
270
+ cellToBoundaryFlat: (cell) => getQuadkeyBoundaryFlat(getDGGSCellToken(cell, "Quadkey")),
271
+ cellToBounds: (cell) => getQuadkeyBounds(getDGGSCellToken(cell, "Quadkey"))
272
+ };
273
+ function getQuadkeyLngLat(quadkey) {
274
+ const [topLeft, bottomRight] = quadkeyToWorldBounds(quadkey);
275
+ const [w, n] = worldToLngLat(topLeft);
276
+ const [e, s] = worldToLngLat(bottomRight);
277
+ return [(e + w) / 2, (s + n) / 2];
278
+ }
279
+ function getQuadkeyBoundary(quadkey) {
280
+ const [topLeft, bottomRight] = quadkeyToWorldBounds(quadkey);
281
+ const [w, n] = worldToLngLat(topLeft);
282
+ const [e, s] = worldToLngLat(bottomRight);
283
+ return [
284
+ [e, n],
285
+ [e, s],
286
+ [w, s],
287
+ [w, n],
288
+ [e, n]
289
+ ];
290
+ }
291
+ function getQuadkeyBoundaryFlat(quadkey) {
292
+ const [topLeft, bottomRight] = quadkeyToWorldBounds(quadkey);
293
+ const [w, n] = worldToLngLat(topLeft);
294
+ const [e, s] = worldToLngLat(bottomRight);
295
+ return [e, n, e, s, w, s, w, n, e, n];
296
+ }
297
+ function getQuadkeyBounds(quadkey) {
298
+ const [topLeft, bottomRight] = quadkeyToWorldBounds(quadkey);
299
+ const [w, n] = worldToLngLat(topLeft);
300
+ const [e, s] = worldToLngLat(bottomRight);
301
+ return [
302
+ [w, s],
303
+ [e, n]
304
+ ];
305
+ }
306
+ function quadkeyToWorldBounds(quadkey) {
307
+ let x = 0;
308
+ let y = 0;
309
+ let mask = 1 << quadkey.length;
310
+ const scale = mask / TILE_SIZE;
311
+ for (let i = 0; i < quadkey.length; i++) {
312
+ mask >>= 1;
313
+ const q = parseInt(quadkey[i], 10);
314
+ if (q % 2)
315
+ x |= mask;
316
+ if (q > 1)
317
+ y |= mask;
318
+ }
319
+ return [
320
+ [x / scale, TILE_SIZE - y / scale],
321
+ [(x + 0.99) / scale, TILE_SIZE - (y + 0.99) / scale]
322
+ ];
323
+ }
324
+ var PI = Math.PI;
325
+ var PI_4 = PI / 4;
326
+ var RADIANS_TO_DEGREES = 180 / PI;
327
+ function worldToLngLat(xy) {
328
+ const [x, y] = xy;
329
+ const lambda2 = x / TILE_SIZE * (2 * PI) - PI;
330
+ const phi2 = 2 * (Math.atan(Math.exp(y / TILE_SIZE * (2 * PI) - PI)) - PI_4);
331
+ return [lambda2 * RADIANS_TO_DEGREES, phi2 * RADIANS_TO_DEGREES];
332
+ }
333
+
334
+ // dist/s2-geometry/s2-token.js
335
+ function getS2IndexFromToken(token) {
336
+ if (token === "X") {
337
+ token = "";
338
+ }
339
+ const paddedToken = token.padEnd(16, "0");
340
+ return BigInt(`0x${paddedToken}`);
341
+ }
342
+ function getS2TokenFromIndex(cellId) {
343
+ if (cellId === 0n) {
344
+ return "X";
345
+ }
346
+ let numZeroDigits = countTrailingZeros(cellId);
347
+ const remainder = numZeroDigits % 4;
348
+ numZeroDigits = (numZeroDigits - remainder) / 4;
349
+ const trailingZeroHexChars = numZeroDigits;
350
+ numZeroDigits *= 4;
351
+ const x = cellId >> BigInt(numZeroDigits);
352
+ const hexString = x.toString(16).replace(/0+$/, "");
353
+ const zeroString = Array(17 - trailingZeroHexChars - hexString.length).join("0");
354
+ return zeroString + hexString;
355
+ }
356
+ function getS2ChildIndex(s2Index, index) {
357
+ const newLsb = lsb(s2Index) >> 2n;
358
+ const childCellId = s2Index + BigInt(2 * index + 1 - 4) * newLsb;
359
+ return childCellId;
360
+ }
361
+ function lsb(cellId) {
362
+ return cellId & cellId + 1n;
363
+ }
364
+ function countTrailingZeros(n) {
365
+ let count = 0;
366
+ while (n % 2n === 0n) {
367
+ n /= 2n;
368
+ count++;
369
+ }
370
+ return count;
371
+ }
372
+
373
+ // dist/s2-geometry/s2-geometry.js
374
+ function getS2Cell(s2Index) {
375
+ const key = toHilbertQuadkey(s2Index);
376
+ const s2cell = fromHilbertQuadKey(key);
377
+ return s2cell;
378
+ }
379
+ var FACE_BITS = 3;
380
+ var MAX_LEVEL = 30;
381
+ var POS_BITS = 2 * MAX_LEVEL + 1;
382
+ var RADIAN_TO_DEGREE = 180 / Math.PI;
383
+ function fromHilbertQuadKey(hilbertQuadkey) {
384
+ const parts = hilbertQuadkey.split("/");
385
+ const face = parseInt(parts[0], 10);
386
+ const position = parts[1] || "";
387
+ const maxLevel = position.length;
388
+ let level = 0;
389
+ const point = [0, 0];
390
+ for (let i = maxLevel - 1; i >= 0; i--) {
391
+ level = maxLevel - i;
392
+ const bit = position[i];
393
+ let rx = 0;
394
+ let ry = 0;
395
+ if (bit === "1") {
396
+ ry = 1;
397
+ } else if (bit === "2") {
398
+ rx = 1;
399
+ ry = 1;
400
+ } else if (bit === "3") {
401
+ rx = 1;
402
+ }
403
+ const val = Math.pow(2, level - 1);
404
+ rotateAndFlipQuadrant(val, point, rx, ry);
405
+ point[0] += val * rx;
406
+ point[1] += val * ry;
407
+ }
408
+ if (face % 2 === 1) {
409
+ const t = point[0];
410
+ point[0] = point[1];
411
+ point[1] = t;
412
+ }
413
+ return { face, ij: point, level };
414
+ }
415
+ function toHilbertQuadkey(id) {
416
+ let bin = id.toString(2);
417
+ while (bin.length < FACE_BITS + POS_BITS) {
418
+ bin = "0" + bin;
419
+ }
420
+ const lsbIndex = bin.lastIndexOf("1");
421
+ const faceB = bin.substring(0, 3);
422
+ const posB = bin.substring(3, lsbIndex);
423
+ const levelN = posB.length / 2;
424
+ const faceS = BigInt(`0b${faceB}`).toString(10);
425
+ let posS = "";
426
+ if (levelN !== 0) {
427
+ posS = BigInt(`0b${posB}`).toString(4);
428
+ while (posS.length < levelN) {
429
+ posS = "0" + posS;
430
+ }
431
+ }
432
+ return `${faceS}/${posS}`;
433
+ }
434
+ function IJToST(ij, order, offsets) {
435
+ const maxSize = 1 << order;
436
+ return [(ij[0] + offsets[0]) / maxSize, (ij[1] + offsets[1]) / maxSize];
437
+ }
438
+ function singleSTtoUV(st) {
439
+ if (st >= 0.5) {
440
+ return 1 / 3 * (4 * st * st - 1);
441
+ }
442
+ return 1 / 3 * (1 - 4 * (1 - st) * (1 - st));
443
+ }
444
+ function STToUV(st) {
445
+ return [singleSTtoUV(st[0]), singleSTtoUV(st[1])];
446
+ }
447
+ function FaceUVToXYZ(face, [u, v]) {
448
+ switch (face) {
449
+ case 0:
450
+ return [1, u, v];
451
+ case 1:
452
+ return [-u, 1, v];
453
+ case 2:
454
+ return [-u, -v, 1];
455
+ case 3:
456
+ return [-1, -v, -u];
457
+ case 4:
458
+ return [v, -1, -u];
459
+ case 5:
460
+ return [v, u, -1];
461
+ default:
462
+ throw new Error("Invalid face");
463
+ }
464
+ }
465
+ function XYZToLngLat([x, y, z]) {
466
+ const lat = Math.atan2(z, Math.sqrt(x * x + y * y));
467
+ const lng = Math.atan2(y, x);
468
+ return [lng * RADIAN_TO_DEGREE, lat * RADIAN_TO_DEGREE];
469
+ }
470
+ function rotateAndFlipQuadrant(n, point, rx, ry) {
471
+ if (ry === 0) {
472
+ if (rx === 1) {
473
+ point[0] = n - 1 - point[0];
474
+ point[1] = n - 1 - point[1];
475
+ }
476
+ const x = point[0];
477
+ point[0] = point[1];
478
+ point[1] = x;
479
+ }
480
+ }
481
+
482
+ // dist/s2-geometry/s2-to-boundary.js
483
+ var MAX_RESOLUTION = 100;
484
+ function getS2GeoBounds(s2Index) {
485
+ const s2Cell = getS2Cell(s2Index);
486
+ return getS2GeoBoundsFromCell(s2Cell);
487
+ }
488
+ function getS2GeoBoundsFromCell({ face, ij, level }) {
489
+ const offsets = [
490
+ [0, 0],
491
+ [0, 1],
492
+ [1, 1],
493
+ [1, 0],
494
+ [0, 0]
495
+ ];
496
+ const resolution = Math.max(1, Math.ceil(MAX_RESOLUTION * Math.pow(2, -level)));
497
+ const result = new Float64Array(4 * resolution * 2 + 2);
498
+ let ptIndex = 0;
499
+ let prevLng = 0;
500
+ for (let i = 0; i < 4; i++) {
501
+ const offset = offsets[i].slice(0);
502
+ const nextOffset = offsets[i + 1];
503
+ const stepI = (nextOffset[0] - offset[0]) / resolution;
504
+ const stepJ = (nextOffset[1] - offset[1]) / resolution;
505
+ for (let j = 0; j < resolution; j++) {
506
+ offset[0] += stepI;
507
+ offset[1] += stepJ;
508
+ const st = IJToST(ij, level, offset);
509
+ const uv = STToUV(st);
510
+ const xyz = FaceUVToXYZ(face, uv);
511
+ const lngLat = XYZToLngLat(xyz);
512
+ if (Math.abs(lngLat[1]) > 89.999) {
513
+ lngLat[0] = prevLng;
514
+ }
515
+ const deltaLng = lngLat[0] - prevLng;
516
+ lngLat[0] += deltaLng > 180 ? -360 : deltaLng < -180 ? 360 : 0;
517
+ result[ptIndex++] = lngLat[0];
518
+ result[ptIndex++] = lngLat[1];
519
+ prevLng = lngLat[0];
520
+ }
521
+ }
522
+ result[ptIndex++] = result[0];
523
+ result[ptIndex++] = result[1];
524
+ return result;
525
+ }
526
+
527
+ // dist/s2-decoder.js
528
+ var S2Decoder = {
529
+ name: "s2",
530
+ hasNumericRepresentation: true,
531
+ cellColumnNames: ["s2", "s2Token", "s2_token", "s2Cell", "s2_cell", "s2CellId", "s2_cell_id"],
532
+ tokenToCell: (s2Token) => getS2IndexFromToken(s2Token),
533
+ cellToToken: (cell) => typeof cell === "string" ? cell : getS2TokenFromIndex(cell),
534
+ cellToLngLat: (cell) => getS2LngLat(cell),
535
+ cellToBoundary: (cell) => getS2Boundary(cell),
536
+ cellToBoundaryFlat: (cell) => getS2BoundaryFlat(cell),
537
+ cellToBounds: (cell) => getS2Bounds(cell)
538
+ };
539
+ function getS2LngLat(cell) {
540
+ const s2Index = getS2CellIndex(cell);
541
+ const s2Cell = getS2Cell(s2Index);
542
+ const st = IJToST(s2Cell.ij, s2Cell.level, [0.5, 0.5]);
543
+ const uv = STToUV(st);
544
+ const xyz = FaceUVToXYZ(s2Cell.face, uv);
545
+ const lngLat = XYZToLngLat(xyz);
546
+ return lngLat;
547
+ }
548
+ function getS2BoundaryFlat(cell) {
549
+ const s2Index = getS2CellIndex(cell);
550
+ const float64Array = getS2GeoBounds(s2Index);
551
+ return Array.from(float64Array);
552
+ }
553
+ function getS2Boundary(cell) {
554
+ const flatBoundary = getS2BoundaryFlat(cell);
555
+ const boundary = [];
556
+ for (let i = 0; i < flatBoundary.length; i += 2) {
557
+ boundary.push([flatBoundary[i], flatBoundary[i + 1]]);
558
+ }
559
+ return boundary;
560
+ }
561
+ function getS2Bounds(cell) {
562
+ const flatBoundary = getS2Boundary(cell);
563
+ let xmin = Infinity;
564
+ let ymin = Infinity;
565
+ let xmax = -Infinity;
566
+ let ymax = -Infinity;
567
+ for (const [x, y] of flatBoundary) {
568
+ if (x < xmin)
569
+ xmin = x;
570
+ if (x > xmax)
571
+ xmax = x;
572
+ if (y < ymin)
573
+ ymin = y;
574
+ if (y > ymax)
575
+ ymax = y;
576
+ }
577
+ return [
578
+ [xmin, ymin],
579
+ [xmax, ymax]
580
+ ];
581
+ }
582
+ function getS2CellIndex(cell) {
583
+ return typeof cell === "bigint" ? cell : getS2IndexFromToken(cell);
584
+ }
585
+
586
+ // dist/index.js
587
+ var DGGS_DECODERS = [
588
+ A5Decoder,
589
+ GeohashDecoder,
590
+ H3Decoder,
591
+ PlusCodeDecoder,
592
+ QuadkeyDecoder,
593
+ S2Decoder
594
+ ];
595
+ function findDGGSCellColumn(columnNames, decoders = DGGS_DECODERS) {
596
+ const actualNames = /* @__PURE__ */ new Map();
597
+ for (const columnName of columnNames) {
598
+ actualNames.set(columnName.toLowerCase(), columnName);
599
+ }
600
+ let match = null;
601
+ for (const decoder of decoders) {
602
+ for (const candidate of decoder.cellColumnNames) {
603
+ const columnName = actualNames.get(candidate.toLowerCase());
604
+ if (!columnName) {
605
+ continue;
606
+ }
607
+ if (match && (match.decoder !== decoder || match.columnName !== columnName)) {
608
+ return null;
609
+ }
610
+ match = { columnName, decoder };
611
+ }
612
+ }
613
+ return match;
614
+ }
615
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/index.ts", "../src/a5-decoder.ts", "../src/dggs-decoder.ts", "../src/geohash-decoder.ts", "../src/h3-decoder.ts", "../src/plus-code-decoder.ts", "../src/quadkey-decoder.ts", "../src/s2-geometry/s2-token.ts", "../src/s2-geometry/s2-geometry.ts", "../src/s2-geometry/s2-to-boundary.ts", "../src/s2-decoder.ts"],
4
+ "mappings": "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",
5
+ "names": ["removeHexPrefix", "OpenLocationCodePackage"]
6
+ }
@@ -0,0 +1,24 @@
1
+ import { type DGGSCell, type DGGSCellColumn, type DGGSDecoder } from "./dggs-decoder.js";
2
+ import { A5Decoder } from "./a5-decoder.js";
3
+ import { GeohashDecoder } from "./geohash-decoder.js";
4
+ import { H3Decoder } from "./h3-decoder.js";
5
+ import { PlusCodeDecoder } from "./plus-code-decoder.js";
6
+ import { S2Decoder } from "./s2-decoder.js";
7
+ export { type DGGSCell, type DGGSCellColumn, type DGGSDecoder };
8
+ export { A5Decoder };
9
+ export { GeohashDecoder };
10
+ export { H3Decoder };
11
+ export { PlusCodeDecoder };
12
+ export { QuadkeyDecoder, quadkeyToWorldBounds } from "./quadkey-decoder.js";
13
+ export { S2Decoder };
14
+ export { getS2ChildIndex } from "./s2-geometry/s2-token.js";
15
+ /** Lightweight decoders bundled with this module. */
16
+ export declare const DGGS_DECODERS: readonly DGGSDecoder[];
17
+ /**
18
+ * Finds a conventional DGGS cell column by name.
19
+ *
20
+ * Returns `null` when there is no match or when columns from more than one
21
+ * decoder match. Callers should ask the user to choose in the ambiguous case.
22
+ */
23
+ export declare function findDGGSCellColumn(columnNames: Iterable<string>, decoders?: readonly DGGSDecoder[]): DGGSCellColumn | null;
24
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,KAAK,QAAQ,EAAE,KAAK,cAAc,EAAE,KAAK,WAAW,EAAC,0BAAuB;AACpF,OAAO,EAAC,SAAS,EAAC,wBAAqB;AACvC,OAAO,EAAC,cAAc,EAAC,6BAA0B;AACjD,OAAO,EAAC,SAAS,EAAC,wBAAqB;AACvC,OAAO,EAAC,eAAe,EAAC,+BAA4B;AAEpD,OAAO,EAAC,SAAS,EAAC,wBAAqB;AAEvC,OAAO,EAAC,KAAK,QAAQ,EAAE,KAAK,cAAc,EAAE,KAAK,WAAW,EAAC,CAAC;AAC9D,OAAO,EAAC,SAAS,EAAC,CAAC;AACnB,OAAO,EAAC,cAAc,EAAC,CAAC;AACxB,OAAO,EAAC,SAAS,EAAC,CAAC;AACnB,OAAO,EAAC,eAAe,EAAC,CAAC;AACzB,OAAO,EAAC,cAAc,EAAE,oBAAoB,EAAC,6BAA0B;AACvE,OAAO,EAAC,SAAS,EAAC,CAAC;AACnB,OAAO,EAAC,eAAe,EAAC,kCAA+B;AAEvD,qDAAqD;AACrD,eAAO,MAAM,aAAa,EAAE,SAAS,WAAW,EAO/C,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,EAC7B,QAAQ,GAAE,SAAS,WAAW,EAAkB,GAC/C,cAAc,GAAG,IAAI,CAoBvB"}