@xyo-network/quadkey 5.3.30 → 5.4.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/README.md CHANGED
@@ -38,758 +38,6 @@ bun add {{name}}
38
38
 
39
39
  See the [LICENSE](LICENSE) file for license rights and limitations (LGPL-3.0-only).
40
40
 
41
- ## Reference
42
-
43
- ### packages
44
-
45
- ### sdk-utils
46
-
47
- ### packages
48
-
49
- ### quadkey
50
-
51
- ### .temp-typedoc
52
-
53
- ### classes
54
-
55
- ### <a id="Quadkey"></a>Quadkey
56
-
57
- [**@xyo-network/quadkey**](#../README)
58
-
59
- ***
60
-
61
- ## Constructors
62
-
63
- ### Constructor
64
-
65
- ```ts
66
- new Quadkey(key?): Quadkey;
67
- ```
68
-
69
- ### Parameters
70
-
71
- #### key?
72
-
73
- `bigint` = `0n`
74
-
75
- ### Returns
76
-
77
- `Quadkey`
78
-
79
- ## Properties
80
-
81
- ### Zero
82
-
83
- ```ts
84
- readonly static Zero: Quadkey;
85
- ```
86
-
87
- ***
88
-
89
- ### root
90
-
91
- ```ts
92
- readonly static root: Quadkey;
93
- ```
94
-
95
- ***
96
-
97
- ### type
98
-
99
- ```ts
100
- readonly static type: "Quadkey" = 'Quadkey';
101
- ```
102
-
103
- ***
104
-
105
- ### key
106
-
107
- ```ts
108
- key: bigint;
109
- ```
110
-
111
- ***
112
-
113
- ### type
114
-
115
- ```ts
116
- type: string = Quadkey.type;
117
- ```
118
-
119
- ## Accessors
120
-
121
- ### base10String
122
-
123
- ### Get Signature
124
-
125
- ```ts
126
- get base10String(): string;
127
- ```
128
-
129
- #### Returns
130
-
131
- `string`
132
-
133
- ***
134
-
135
- ### base16String
136
-
137
- ### Get Signature
138
-
139
- ```ts
140
- get base16String(): string;
141
- ```
142
-
143
- #### Returns
144
-
145
- `string`
146
-
147
- ***
148
-
149
- ### base4Hash
150
-
151
- ### Get Signature
152
-
153
- ```ts
154
- get base4Hash(): string;
155
- ```
156
-
157
- #### Returns
158
-
159
- `string`
160
-
161
- ***
162
-
163
- ### base4HashLabel
164
-
165
- ### Get Signature
166
-
167
- ```ts
168
- get base4HashLabel(): string;
169
- ```
170
-
171
- #### Returns
172
-
173
- `string`
174
-
175
- ***
176
-
177
- ### boundingBox
178
-
179
- ### Get Signature
180
-
181
- ```ts
182
- get boundingBox(): MercatorBoundingBox;
183
- ```
184
-
185
- #### Returns
186
-
187
- `MercatorBoundingBox`
188
-
189
- ***
190
-
191
- ### center
192
-
193
- ### Get Signature
194
-
195
- ```ts
196
- get center(): LngLat;
197
- ```
198
-
199
- #### Returns
200
-
201
- `LngLat`
202
-
203
- ***
204
-
205
- ### children
206
-
207
- ### Get Signature
208
-
209
- ```ts
210
- get children(): Quadkey[];
211
- ```
212
-
213
- #### Returns
214
-
215
- `Quadkey`[]
216
-
217
- ***
218
-
219
- ### gridLocation
220
-
221
- ### Get Signature
222
-
223
- ```ts
224
- get gridLocation(): object;
225
- ```
226
-
227
- #### Returns
228
-
229
- `object`
230
-
231
- ##### col
232
-
233
- ```ts
234
- col: number;
235
- ```
236
-
237
- ##### row
238
-
239
- ```ts
240
- row: number;
241
- ```
242
-
243
- ##### zoom
244
-
245
- ```ts
246
- zoom: number;
247
- ```
248
-
249
- ***
250
-
251
- ### id
252
-
253
- ### Get Signature
254
-
255
- ```ts
256
- get id(): bigint;
257
- ```
258
-
259
- #### Returns
260
-
261
- `bigint`
262
-
263
- ***
264
-
265
- ### parent
266
-
267
- ### Get Signature
268
-
269
- ```ts
270
- get parent(): Quadkey | undefined;
271
- ```
272
-
273
- #### Returns
274
-
275
- `Quadkey` \| `undefined`
276
-
277
- ***
278
-
279
- ### siblings
280
-
281
- ### Get Signature
282
-
283
- ```ts
284
- get siblings(): Quadkey[];
285
- ```
286
-
287
- #### Returns
288
-
289
- `Quadkey`[]
290
-
291
- ***
292
-
293
- ### tile
294
-
295
- ### Get Signature
296
-
297
- ```ts
298
- get tile(): MercatorTile;
299
- ```
300
-
301
- #### Returns
302
-
303
- `MercatorTile`
304
-
305
- ***
306
-
307
- ### valid
308
-
309
- ### Get Signature
310
-
311
- ```ts
312
- get valid(): boolean;
313
- ```
314
-
315
- #### Returns
316
-
317
- `boolean`
318
-
319
- ***
320
-
321
- ### zoom
322
-
323
- ### Get Signature
324
-
325
- ```ts
326
- get zoom(): number;
327
- ```
328
-
329
- #### Returns
330
-
331
- `number`
332
-
333
- ## Methods
334
-
335
- ### from()
336
-
337
- ```ts
338
- static from(zoom, id): Quadkey;
339
- ```
340
-
341
- ### Parameters
342
-
343
- #### zoom
344
-
345
- `number`
346
-
347
- #### id
348
-
349
- `bigint`
350
-
351
- ### Returns
352
-
353
- `Quadkey`
354
-
355
- ***
356
-
357
- ### fromArrayBuffer()
358
-
359
- ```ts
360
- static fromArrayBuffer(zoom, id): Quadkey;
361
- ```
362
-
363
- ### Parameters
364
-
365
- #### zoom
366
-
367
- `number`
368
-
369
- #### id
370
-
371
- `ArrayBuffer`
372
-
373
- ### Returns
374
-
375
- `Quadkey`
376
-
377
- ***
378
-
379
- ### fromBase16String()
380
-
381
- ```ts
382
- static fromBase16String(value): Quadkey;
383
- ```
384
-
385
- ### Parameters
386
-
387
- #### value
388
-
389
- `string`
390
-
391
- ### Returns
392
-
393
- `Quadkey`
394
-
395
- ***
396
-
397
- ### fromBase4String()
398
-
399
- ```ts
400
- static fromBase4String(value?): Quadkey;
401
- ```
402
-
403
- ### Parameters
404
-
405
- #### value?
406
-
407
- `string`
408
-
409
- ### Returns
410
-
411
- `Quadkey`
412
-
413
- ***
414
-
415
- ### fromBoundingBox()
416
-
417
- ```ts
418
- static fromBoundingBox(boundingBox, zoom): Quadkey[];
419
- ```
420
-
421
- ### Parameters
422
-
423
- #### boundingBox
424
-
425
- `MercatorBoundingBox`
426
-
427
- #### zoom
428
-
429
- `number`
430
-
431
- ### Returns
432
-
433
- `Quadkey`[]
434
-
435
- ***
436
-
437
- ### fromLngLat()
438
-
439
- ```ts
440
- static fromLngLat(point, zoom): Quadkey;
441
- ```
442
-
443
- ### Parameters
444
-
445
- #### point
446
-
447
- `LngLatLike`
448
-
449
- #### zoom
450
-
451
- `number`
452
-
453
- ### Returns
454
-
455
- `Quadkey`
456
-
457
- ***
458
-
459
- ### fromString()
460
-
461
- ```ts
462
- static fromString(
463
- zoom,
464
- id,
465
- base?): Quadkey;
466
- ```
467
-
468
- ### Parameters
469
-
470
- #### zoom
471
-
472
- `number`
473
-
474
- #### id
475
-
476
- `string`
477
-
478
- #### base?
479
-
480
- `number` = `16`
481
-
482
- ### Returns
483
-
484
- `Quadkey`
485
-
486
- ***
487
-
488
- ### fromTile()
489
-
490
- ```ts
491
- static fromTile(tile): Quadkey;
492
- ```
493
-
494
- ### Parameters
495
-
496
- #### tile
497
-
498
- `MercatorTile`
499
-
500
- ### Returns
501
-
502
- `Quadkey`
503
-
504
- ***
505
-
506
- ### childrenByZoom()
507
-
508
- ```ts
509
- childrenByZoom(zoom): Quadkey[];
510
- ```
511
-
512
- ### Parameters
513
-
514
- #### zoom
515
-
516
- `number`
517
-
518
- ### Returns
519
-
520
- `Quadkey`[]
521
-
522
- ***
523
-
524
- ### clone()
525
-
526
- ```ts
527
- clone(): Quadkey;
528
- ```
529
-
530
- ### Returns
531
-
532
- `Quadkey`
533
-
534
- ***
535
-
536
- ### equals()
537
-
538
- ```ts
539
- equals(obj): boolean;
540
- ```
541
-
542
- ### Parameters
543
-
544
- #### obj
545
-
546
- `Quadkey`
547
-
548
- ### Returns
549
-
550
- `boolean`
551
-
552
- ***
553
-
554
- ### geoJson()
555
-
556
- ```ts
557
- geoJson(): GeoJson;
558
- ```
559
-
560
- ### Returns
561
-
562
- `GeoJson`
563
-
564
- ***
565
-
566
- ### getGridBoundingBox()
567
-
568
- ```ts
569
- getGridBoundingBox(size): object;
570
- ```
571
-
572
- ### Parameters
573
-
574
- #### size
575
-
576
- `number`
577
-
578
- ### Returns
579
-
580
- `object`
581
-
582
- #### height
583
-
584
- ```ts
585
- height: number = blockSize;
586
- ```
587
-
588
- #### left
589
-
590
- ```ts
591
- left: number;
592
- ```
593
-
594
- #### top
595
-
596
- ```ts
597
- top: number;
598
- ```
599
-
600
- #### width
601
-
602
- ```ts
603
- width: number = blockSize;
604
- ```
605
-
606
- ***
607
-
608
- ### ~~getGridLocation()~~
609
-
610
- ```ts
611
- getGridLocation(): object;
612
- ```
613
-
614
- ### Returns
615
-
616
- `object`
617
-
618
- #### ~~col~~
619
-
620
- ```ts
621
- col: number;
622
- ```
623
-
624
- #### ~~row~~
625
-
626
- ```ts
627
- row: number;
628
- ```
629
-
630
- #### ~~zoom~~
631
-
632
- ```ts
633
- zoom: number;
634
- ```
635
-
636
- ### Deprecated
637
-
638
- use .gridLocation instead
639
-
640
- ***
641
-
642
- ### isInBoundingBox()
643
-
644
- ```ts
645
- isInBoundingBox(boundingBox): boolean;
646
- ```
647
-
648
- ### Parameters
649
-
650
- #### boundingBox
651
-
652
- `MercatorBoundingBox`
653
-
654
- ### Returns
655
-
656
- `boolean`
657
-
658
- ***
659
-
660
- ### relative()
661
-
662
- ```ts
663
- relative(direction): Quadkey;
664
- ```
665
-
666
- ### Parameters
667
-
668
- #### direction
669
-
670
- `string`
671
-
672
- ### Returns
673
-
674
- `Quadkey`
675
-
676
- ***
677
-
678
- ### setId()
679
-
680
- ```ts
681
- setId(id): Quadkey;
682
- ```
683
-
684
- ### Parameters
685
-
686
- #### id
687
-
688
- `bigint`
689
-
690
- ### Returns
691
-
692
- `Quadkey`
693
-
694
- ***
695
-
696
- ### setKey()
697
-
698
- ```ts
699
- setKey(zoom, key): Quadkey;
700
- ```
701
-
702
- ### Parameters
703
-
704
- #### zoom
705
-
706
- `number`
707
-
708
- #### key
709
-
710
- `bigint`
711
-
712
- ### Returns
713
-
714
- `Quadkey`
715
-
716
- ***
717
-
718
- ### setZoom()
719
-
720
- ```ts
721
- setZoom(zoom): Quadkey;
722
- ```
723
-
724
- ### Parameters
725
-
726
- #### zoom
727
-
728
- `number`
729
-
730
- ### Returns
731
-
732
- `Quadkey`
733
-
734
- ***
735
-
736
- ### toJSON()
737
-
738
- ```ts
739
- toJSON(): string;
740
- ```
741
-
742
- ### Returns
743
-
744
- `string`
745
-
746
- ***
747
-
748
- ### toString()
749
-
750
- ```ts
751
- toString(): string;
752
- ```
753
-
754
- ### Returns
755
-
756
- `string`
757
-
758
- ***
759
-
760
- ### guessZoom()
761
-
762
- ```ts
763
- protected guessZoom(): void;
764
- ```
765
-
766
- ### Returns
767
-
768
- `void`
769
-
770
- ### functions
771
-
772
- ### <a id="isQuadkey"></a>isQuadkey
773
-
774
- [**@xyo-network/quadkey**](#../README)
775
-
776
- ***
777
-
778
- ```ts
779
- function isQuadkey(obj): boolean;
780
- ```
781
-
782
- ## Parameters
783
-
784
- ### obj
785
-
786
- ### type
787
-
788
- `string`
789
-
790
- ## Returns
791
-
792
- `boolean`
793
41
 
794
42
 
795
43
  [logo]: https://cdn.xy.company/img/brand/XYO_full_colored.png
@@ -122,8 +122,8 @@ var Quadkey = class _Quadkey {
122
122
  return _Quadkey.root;
123
123
  }
124
124
  let id = 0n;
125
- for (let i = 0; i < value.length; i++) {
126
- const nibble = Number.parseInt(value[i]);
125
+ for (const digit of value) {
126
+ const nibble = Number.parseInt(digit);
127
127
  assertEx(nibble < 4 && nibble >= 0, () => `Invalid Base4 String: ${value}`);
128
128
  id = id << 2n | BigInt(nibble);
129
129
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/Quadkey.ts","../../src/RelativeDirectionConstantLookup.ts"],"sourcesContent":["import type {\n MercatorBoundingBox,\n MercatorLngLat,\n MercatorTile,\n} from '@xylabs/geo'\nimport {\n boundingBoxToCenter,\n GeoJson,\n tileFromPoint,\n tileFromQuadkey,\n tilesFromBoundingBox,\n tileToBoundingBox,\n tileToQuadkey,\n} from '@xylabs/geo'\nimport {\n assertEx, hexFromArrayBuffer, hexFromHexString,\n} from '@xylabs/sdk-js'\nimport type { LngLatLike } from 'mapbox-gl'\nimport mb from 'mapbox-gl'\nconst { LngLat } = mb\n\nimport { RelativeDirectionConstantLookup } from './RelativeDirectionConstantLookup.ts'\n\nconst MAX_ZOOM = 124\n\nexport const isQuadkey = (obj: { type: string }) => obj?.type === Quadkey.type\n\nconst FULL_MASK = 2n ** 256n - 1n\nconst ZOOM_MASK = 0xffn << 248n\nconst ID_MASK = ZOOM_MASK ^ FULL_MASK\n\nconst assertMaxBitUint = (value: bigint, bits = 256n) => {\n assertEx(value < 2n ** bits && value >= 0, () => 'Not a 256 Bit Uint!')\n}\n\nexport class Quadkey {\n static readonly Zero = Quadkey.from(0, 0n)\n static readonly root = new Quadkey()\n static readonly type = 'Quadkey'\n\n key: bigint\n\n type = Quadkey.type\n\n private _geoJson?: GeoJson\n\n constructor(key = 0n) {\n assertMaxBitUint(key)\n this.key = key\n this.guessZoom()\n }\n\n get base10String() {\n return this.id.toString(10)\n }\n\n get base16String() {\n return this.id.toString(16).padStart(62, '0')\n }\n\n get base4Hash() {\n if (this.id === 0n && this.zoom === 0) {\n return ''\n }\n return this.id.toString(4).padStart(this.zoom, '0')\n }\n\n get base4HashLabel() {\n const hash = this.base4Hash\n return hash.length === 0 ? 'fhr' : hash\n }\n\n get boundingBox(): MercatorBoundingBox {\n return tileToBoundingBox(this.tile)\n }\n\n get center() {\n const result = boundingBoxToCenter(this.boundingBox)\n return new LngLat(result[0], result[1])\n }\n\n get children() {\n assertEx(this.zoom < MAX_ZOOM - 1, () => 'Can not get children of bottom tiles')\n const result: Quadkey[] = []\n const shiftedId = this.id << 2n\n for (let i = 0n; i < 4n; i++) {\n result.push(new Quadkey().setId(shiftedId | i).setZoom(this.zoom + 1))\n }\n return result\n }\n\n get gridLocation(): { col: number; row: number; zoom: number } {\n const tileData = tileFromQuadkey(this.base4Hash)\n\n return {\n col: 2 ** tileData[2] - tileData[1] - 1,\n row: tileData[0],\n zoom: tileData[2],\n }\n }\n\n get id() {\n return this.key & ID_MASK\n }\n\n get parent(): Quadkey | undefined {\n if (this.zoom > 0) {\n return new Quadkey().setId(this.id >> 2n).setZoom(this.zoom - 1)\n }\n }\n\n get siblings() {\n const siblings = assertEx(this.parent?.children, () => `siblings: parentChildren ${this.base4Hash}`)\n const filteredSiblings = siblings.filter(quadkey => quadkey.key !== this.key)\n assertEx(filteredSiblings.length === 3, () => `siblings: expected 3 [${filteredSiblings.length}]`)\n return filteredSiblings\n }\n\n get tile(): MercatorTile {\n return tileFromQuadkey(this.base4Hash)\n }\n\n get valid() {\n // check for additional data outside zoom scope\n return this.id.toString(4) === this.base4Hash.padStart(64, '0')\n }\n\n get zoom() {\n // zoom is stored in top byte\n return Number((this.key & ZOOM_MASK) >> 248n)\n }\n\n static from(zoom: number, id: bigint) {\n return new Quadkey().setId(id).setZoom(zoom)\n }\n\n static fromArrayBuffer(zoom: number, id: ArrayBuffer) {\n return new Quadkey().setId(BigInt(hexFromArrayBuffer(id, { prefix: true }))).setZoom(zoom)\n }\n\n static fromBase16String(value: string) {\n return new Quadkey(BigInt(hexFromHexString(value, { prefix: true })))\n }\n\n static fromBase4String(value?: string) {\n if (value === 'fhr' || value === '' || value === undefined) {\n return Quadkey.root\n }\n let id = 0n\n for (let i = 0; i < value.length; i++) {\n const nibble = Number.parseInt(value[i])\n assertEx(nibble < 4 && nibble >= 0, () => `Invalid Base4 String: ${value}`)\n id = (id << 2n) | BigInt(nibble)\n }\n return new Quadkey().setId(id).setZoom(value.length)\n }\n\n static fromBoundingBox(boundingBox: MercatorBoundingBox, zoom: number) {\n const tiles = tilesFromBoundingBox(boundingBox, Math.floor(zoom))\n const result: Quadkey[] = []\n for (const tile of tiles) {\n result.push(assertEx(Quadkey.fromTile(tile), () => 'Bad Quadkey'))\n }\n\n return result\n }\n\n static fromLngLat(point: LngLatLike, zoom: number) {\n const tile = tileFromPoint(point as MercatorLngLat, zoom)\n const quadkeyString = tileToQuadkey(tile)\n return Quadkey.fromBase4String(quadkeyString)\n }\n\n static fromString(zoom: number, id: string, base = 16) {\n switch (base) {\n case 16: {\n return Quadkey.fromBase16String(id).setZoom(zoom)\n }\n default: {\n throw new Error(`Invalid base [${base}]`)\n }\n }\n }\n\n static fromTile(tile: MercatorTile) {\n return Quadkey.fromBase4String(tileToQuadkey(tile))\n }\n\n childrenByZoom(zoom: number) {\n // if we are limiting by zoom, and we are already at that limit, just return this quadkey\n if (zoom > 0 && zoom === this.zoom) {\n return [this]\n }\n\n // recursively get children\n let deepResult: Quadkey[] = []\n for (const quadkey of this.children) {\n deepResult = [...deepResult, ...quadkey.childrenByZoom(zoom)]\n }\n return deepResult\n }\n\n clone() {\n return new Quadkey(this.key)\n }\n\n equals(obj: Quadkey): boolean {\n return obj.key == this.key\n }\n\n geoJson() {\n this._geoJson = this._geoJson ?? new GeoJson(this.base4Hash)\n return this._geoJson\n }\n\n getGridBoundingBox(size: number) {\n const hash = this.base4Hash\n let index = 0\n let left = 0\n let top = 0\n let blockSize = size\n while (index < hash.length) {\n blockSize >>= 1\n switch (hash[index]) {\n case '1': {\n left += blockSize\n break\n }\n case '2': {\n top += blockSize\n break\n }\n case '3': {\n left += blockSize\n top += blockSize\n break\n }\n }\n index++\n }\n if (blockSize < 2) {\n blockSize = 2\n }\n return {\n height: blockSize,\n left,\n top,\n width: blockSize,\n }\n }\n\n /** @deprecated use .gridLocation instead */\n getGridLocation() {\n return this.gridLocation\n }\n\n isInBoundingBox(boundingBox: MercatorBoundingBox) {\n const tileBoundingBox = tileToBoundingBox(this.tile)\n return (\n boundingBox.contains(tileBoundingBox.getNorthEast())\n || boundingBox.contains(tileBoundingBox.getNorthWest())\n || boundingBox.contains(tileBoundingBox.getSouthEast())\n || boundingBox.contains(tileBoundingBox.getSouthWest())\n )\n }\n\n relative(direction: string) {\n const directionConstant = assertEx(RelativeDirectionConstantLookup[direction], () => 'Invalid direction')\n let quadkey = this.base4Hash\n if (quadkey.length === 0) {\n return this\n }\n let index = quadkey.length - 1\n while (index >= 0) {\n let number = Number.parseInt(quadkey.charAt(index))\n number += directionConstant\n if (number > 3) {\n number -= 4\n quadkey = quadkey.slice(0, Math.max(0, index)) + number.toString() + quadkey.slice(Math.max(0, index + 1))\n index--\n } else if (number < 0) {\n number += 4\n quadkey = quadkey.slice(0, Math.max(0, index)) + number.toString() + quadkey.slice(Math.max(0, index + 1))\n index--\n } else {\n index = -1\n }\n }\n return Quadkey.fromBase4String(quadkey)\n }\n\n setId(id: bigint) {\n assertMaxBitUint(id, 248n)\n this.setKey(this.zoom, id)\n return this\n }\n\n setKey(zoom: number, key: bigint) {\n assertMaxBitUint(key)\n this.key = key\n this.setZoom(zoom)\n return this\n }\n\n setZoom(zoom: number) {\n assertEx(zoom < MAX_ZOOM, () => `Invalid zoom [${zoom}] max=${MAX_ZOOM}`)\n this.key = (this.key & ID_MASK) | (BigInt(zoom) << 248n)\n return this\n }\n\n toJSON(): string {\n return this.base4HashLabel\n }\n\n toString() {\n return this.base4Hash\n }\n\n protected guessZoom() {\n const quadkeySimple = this.id.toString(4)\n this.setZoom(quadkeySimple.length)\n }\n}\n","export const RelativeDirectionConstantLookup: Record<string, number> = {\n e: 1,\n n: -2,\n s: 2,\n w: -1,\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../src/Quadkey.ts","../../src/RelativeDirectionConstantLookup.ts"],"sourcesContent":["import type {\n MercatorBoundingBox,\n MercatorLngLat,\n MercatorTile,\n} from '@xylabs/geo'\nimport {\n boundingBoxToCenter,\n GeoJson,\n tileFromPoint,\n tileFromQuadkey,\n tilesFromBoundingBox,\n tileToBoundingBox,\n tileToQuadkey,\n} from '@xylabs/geo'\nimport {\n assertEx, hexFromArrayBuffer, hexFromHexString,\n} from '@xylabs/sdk-js'\nimport type { LngLatLike } from 'mapbox-gl'\nimport mb from 'mapbox-gl'\nconst { LngLat } = mb\n\nimport { RelativeDirectionConstantLookup } from './RelativeDirectionConstantLookup.ts'\n\nconst MAX_ZOOM = 124\n\nexport const isQuadkey = (obj: { type: string }) => obj?.type === Quadkey.type\n\nconst FULL_MASK = 2n ** 256n - 1n\nconst ZOOM_MASK = 0xffn << 248n\nconst ID_MASK = ZOOM_MASK ^ FULL_MASK\n\nconst assertMaxBitUint = (value: bigint, bits = 256n) => {\n assertEx(value < 2n ** bits && value >= 0, () => 'Not a 256 Bit Uint!')\n}\n\nexport class Quadkey {\n static readonly Zero = Quadkey.from(0, 0n)\n static readonly root = new Quadkey()\n static readonly type = 'Quadkey'\n\n key: bigint\n\n type = Quadkey.type\n\n private _geoJson?: GeoJson\n\n constructor(key = 0n) {\n assertMaxBitUint(key)\n this.key = key\n this.guessZoom()\n }\n\n get base10String() {\n return this.id.toString(10)\n }\n\n get base16String() {\n return this.id.toString(16).padStart(62, '0')\n }\n\n get base4Hash() {\n if (this.id === 0n && this.zoom === 0) {\n return ''\n }\n return this.id.toString(4).padStart(this.zoom, '0')\n }\n\n get base4HashLabel() {\n const hash = this.base4Hash\n return hash.length === 0 ? 'fhr' : hash\n }\n\n get boundingBox(): MercatorBoundingBox {\n return tileToBoundingBox(this.tile)\n }\n\n get center() {\n const result = boundingBoxToCenter(this.boundingBox)\n return new LngLat(result[0], result[1])\n }\n\n get children() {\n assertEx(this.zoom < MAX_ZOOM - 1, () => 'Can not get children of bottom tiles')\n const result: Quadkey[] = []\n const shiftedId = this.id << 2n\n for (let i = 0n; i < 4n; i++) {\n result.push(new Quadkey().setId(shiftedId | i).setZoom(this.zoom + 1))\n }\n return result\n }\n\n get gridLocation(): { col: number; row: number; zoom: number } {\n const tileData = tileFromQuadkey(this.base4Hash)\n\n return {\n col: 2 ** tileData[2] - tileData[1] - 1,\n row: tileData[0],\n zoom: tileData[2],\n }\n }\n\n get id() {\n return this.key & ID_MASK\n }\n\n get parent(): Quadkey | undefined {\n if (this.zoom > 0) {\n return new Quadkey().setId(this.id >> 2n).setZoom(this.zoom - 1)\n }\n }\n\n get siblings() {\n const siblings = assertEx(this.parent?.children, () => `siblings: parentChildren ${this.base4Hash}`)\n const filteredSiblings = siblings.filter(quadkey => quadkey.key !== this.key)\n assertEx(filteredSiblings.length === 3, () => `siblings: expected 3 [${filteredSiblings.length}]`)\n return filteredSiblings\n }\n\n get tile(): MercatorTile {\n return tileFromQuadkey(this.base4Hash)\n }\n\n get valid() {\n // check for additional data outside zoom scope\n return this.id.toString(4) === this.base4Hash.padStart(64, '0')\n }\n\n get zoom() {\n // zoom is stored in top byte\n return Number((this.key & ZOOM_MASK) >> 248n)\n }\n\n static from(zoom: number, id: bigint) {\n return new Quadkey().setId(id).setZoom(zoom)\n }\n\n static fromArrayBuffer(zoom: number, id: ArrayBuffer) {\n return new Quadkey().setId(BigInt(hexFromArrayBuffer(id, { prefix: true }))).setZoom(zoom)\n }\n\n static fromBase16String(value: string) {\n return new Quadkey(BigInt(hexFromHexString(value, { prefix: true })))\n }\n\n static fromBase4String(value?: string) {\n if (value === 'fhr' || value === '' || value === undefined) {\n return Quadkey.root\n }\n let id = 0n\n for (const digit of value) {\n const nibble = Number.parseInt(digit)\n assertEx(nibble < 4 && nibble >= 0, () => `Invalid Base4 String: ${value}`)\n id = (id << 2n) | BigInt(nibble)\n }\n return new Quadkey().setId(id).setZoom(value.length)\n }\n\n static fromBoundingBox(boundingBox: MercatorBoundingBox, zoom: number) {\n const tiles = tilesFromBoundingBox(boundingBox, Math.floor(zoom))\n const result: Quadkey[] = []\n for (const tile of tiles) {\n result.push(assertEx(Quadkey.fromTile(tile), () => 'Bad Quadkey'))\n }\n\n return result\n }\n\n static fromLngLat(point: LngLatLike, zoom: number) {\n const tile = tileFromPoint(point as MercatorLngLat, zoom)\n const quadkeyString = tileToQuadkey(tile)\n return Quadkey.fromBase4String(quadkeyString)\n }\n\n static fromString(zoom: number, id: string, base = 16) {\n switch (base) {\n case 16: {\n return Quadkey.fromBase16String(id).setZoom(zoom)\n }\n default: {\n throw new Error(`Invalid base [${base}]`)\n }\n }\n }\n\n static fromTile(tile: MercatorTile) {\n return Quadkey.fromBase4String(tileToQuadkey(tile))\n }\n\n childrenByZoom(zoom: number) {\n // if we are limiting by zoom, and we are already at that limit, just return this quadkey\n if (zoom > 0 && zoom === this.zoom) {\n return [this]\n }\n\n // recursively get children\n let deepResult: Quadkey[] = []\n for (const quadkey of this.children) {\n deepResult = [...deepResult, ...quadkey.childrenByZoom(zoom)]\n }\n return deepResult\n }\n\n clone() {\n return new Quadkey(this.key)\n }\n\n equals(obj: Quadkey): boolean {\n return obj.key == this.key\n }\n\n geoJson() {\n this._geoJson = this._geoJson ?? new GeoJson(this.base4Hash)\n return this._geoJson\n }\n\n getGridBoundingBox(size: number) {\n const hash = this.base4Hash\n let index = 0\n let left = 0\n let top = 0\n let blockSize = size\n while (index < hash.length) {\n blockSize >>= 1\n switch (hash[index]) {\n case '1': {\n left += blockSize\n break\n }\n case '2': {\n top += blockSize\n break\n }\n case '3': {\n left += blockSize\n top += blockSize\n break\n }\n }\n index++\n }\n if (blockSize < 2) {\n blockSize = 2\n }\n return {\n height: blockSize,\n left,\n top,\n width: blockSize,\n }\n }\n\n /** @deprecated use .gridLocation instead */\n getGridLocation() {\n return this.gridLocation\n }\n\n isInBoundingBox(boundingBox: MercatorBoundingBox) {\n const tileBoundingBox = tileToBoundingBox(this.tile)\n return (\n boundingBox.contains(tileBoundingBox.getNorthEast())\n || boundingBox.contains(tileBoundingBox.getNorthWest())\n || boundingBox.contains(tileBoundingBox.getSouthEast())\n || boundingBox.contains(tileBoundingBox.getSouthWest())\n )\n }\n\n relative(direction: string) {\n const directionConstant = assertEx(RelativeDirectionConstantLookup[direction], () => 'Invalid direction')\n let quadkey = this.base4Hash\n if (quadkey.length === 0) {\n return this\n }\n let index = quadkey.length - 1\n while (index >= 0) {\n let number = Number.parseInt(quadkey.charAt(index))\n number += directionConstant\n if (number > 3) {\n number -= 4\n quadkey = quadkey.slice(0, Math.max(0, index)) + number.toString() + quadkey.slice(Math.max(0, index + 1))\n index--\n } else if (number < 0) {\n number += 4\n quadkey = quadkey.slice(0, Math.max(0, index)) + number.toString() + quadkey.slice(Math.max(0, index + 1))\n index--\n } else {\n index = -1\n }\n }\n return Quadkey.fromBase4String(quadkey)\n }\n\n setId(id: bigint) {\n assertMaxBitUint(id, 248n)\n this.setKey(this.zoom, id)\n return this\n }\n\n setKey(zoom: number, key: bigint) {\n assertMaxBitUint(key)\n this.key = key\n this.setZoom(zoom)\n return this\n }\n\n setZoom(zoom: number) {\n assertEx(zoom < MAX_ZOOM, () => `Invalid zoom [${zoom}] max=${MAX_ZOOM}`)\n this.key = (this.key & ID_MASK) | (BigInt(zoom) << 248n)\n return this\n }\n\n toJSON(): string {\n return this.base4HashLabel\n }\n\n toString() {\n return this.base4Hash\n }\n\n protected guessZoom() {\n const quadkeySimple = this.id.toString(4)\n this.setZoom(quadkeySimple.length)\n }\n}\n","export const RelativeDirectionConstantLookup: Record<string, number> = {\n e: 1,\n n: -2,\n s: 2,\n w: -1,\n}\n"],"mappings":";AAKA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP;AAAA,EACE;AAAA,EAAU;AAAA,EAAoB;AAAA,OACzB;AAEP,OAAO,QAAQ;;;AClBR,IAAM,kCAA0D;AAAA,EACrE,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AACL;;;ADcA,IAAM,EAAE,OAAO,IAAI;AAInB,IAAM,WAAW;AAEV,IAAM,YAAY,CAAC,QAA0B,KAAK,SAAS,QAAQ;AAE1E,IAAM,YAAY,MAAM,OAAO;AAC/B,IAAM,YAAY,SAAS;AAC3B,IAAM,UAAU,YAAY;AAE5B,IAAM,mBAAmB,CAAC,OAAe,OAAO,SAAS;AACvD,WAAS,QAAQ,MAAM,QAAQ,SAAS,GAAG,MAAM,qBAAqB;AACxE;AAEO,IAAM,UAAN,MAAM,SAAQ;AAAA,EACnB,OAAgB,OAAO,SAAQ,KAAK,GAAG,EAAE;AAAA,EACzC,OAAgB,OAAO,IAAI,SAAQ;AAAA,EACnC,OAAgB,OAAO;AAAA,EAEvB;AAAA,EAEA,OAAO,SAAQ;AAAA,EAEP;AAAA,EAER,YAAY,MAAM,IAAI;AACpB,qBAAiB,GAAG;AACpB,SAAK,MAAM;AACX,SAAK,UAAU;AAAA,EACjB;AAAA,EAEA,IAAI,eAAe;AACjB,WAAO,KAAK,GAAG,SAAS,EAAE;AAAA,EAC5B;AAAA,EAEA,IAAI,eAAe;AACjB,WAAO,KAAK,GAAG,SAAS,EAAE,EAAE,SAAS,IAAI,GAAG;AAAA,EAC9C;AAAA,EAEA,IAAI,YAAY;AACd,QAAI,KAAK,OAAO,MAAM,KAAK,SAAS,GAAG;AACrC,aAAO;AAAA,IACT;AACA,WAAO,KAAK,GAAG,SAAS,CAAC,EAAE,SAAS,KAAK,MAAM,GAAG;AAAA,EACpD;AAAA,EAEA,IAAI,iBAAiB;AACnB,UAAM,OAAO,KAAK;AAClB,WAAO,KAAK,WAAW,IAAI,QAAQ;AAAA,EACrC;AAAA,EAEA,IAAI,cAAmC;AACrC,WAAO,kBAAkB,KAAK,IAAI;AAAA,EACpC;AAAA,EAEA,IAAI,SAAS;AACX,UAAM,SAAS,oBAAoB,KAAK,WAAW;AACnD,WAAO,IAAI,OAAO,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC;AAAA,EACxC;AAAA,EAEA,IAAI,WAAW;AACb,aAAS,KAAK,OAAO,WAAW,GAAG,MAAM,sCAAsC;AAC/E,UAAM,SAAoB,CAAC;AAC3B,UAAM,YAAY,KAAK,MAAM;AAC7B,aAAS,IAAI,IAAI,IAAI,IAAI,KAAK;AAC5B,aAAO,KAAK,IAAI,SAAQ,EAAE,MAAM,YAAY,CAAC,EAAE,QAAQ,KAAK,OAAO,CAAC,CAAC;AAAA,IACvE;AACA,WAAO;AAAA,EACT;AAAA,EAEA,IAAI,eAA2D;AAC7D,UAAM,WAAW,gBAAgB,KAAK,SAAS;AAE/C,WAAO;AAAA,MACL,KAAK,KAAK,SAAS,CAAC,IAAI,SAAS,CAAC,IAAI;AAAA,MACtC,KAAK,SAAS,CAAC;AAAA,MACf,MAAM,SAAS,CAAC;AAAA,IAClB;AAAA,EACF;AAAA,EAEA,IAAI,KAAK;AACP,WAAO,KAAK,MAAM;AAAA,EACpB;AAAA,EAEA,IAAI,SAA8B;AAChC,QAAI,KAAK,OAAO,GAAG;AACjB,aAAO,IAAI,SAAQ,EAAE,MAAM,KAAK,MAAM,EAAE,EAAE,QAAQ,KAAK,OAAO,CAAC;AAAA,IACjE;AAAA,EACF;AAAA,EAEA,IAAI,WAAW;AACb,UAAM,WAAW,SAAS,KAAK,QAAQ,UAAU,MAAM,4BAA4B,KAAK,SAAS,EAAE;AACnG,UAAM,mBAAmB,SAAS,OAAO,aAAW,QAAQ,QAAQ,KAAK,GAAG;AAC5E,aAAS,iBAAiB,WAAW,GAAG,MAAM,yBAAyB,iBAAiB,MAAM,GAAG;AACjG,WAAO;AAAA,EACT;AAAA,EAEA,IAAI,OAAqB;AACvB,WAAO,gBAAgB,KAAK,SAAS;AAAA,EACvC;AAAA,EAEA,IAAI,QAAQ;AAEV,WAAO,KAAK,GAAG,SAAS,CAAC,MAAM,KAAK,UAAU,SAAS,IAAI,GAAG;AAAA,EAChE;AAAA,EAEA,IAAI,OAAO;AAET,WAAO,QAAQ,KAAK,MAAM,cAAc,IAAI;AAAA,EAC9C;AAAA,EAEA,OAAO,KAAK,MAAc,IAAY;AACpC,WAAO,IAAI,SAAQ,EAAE,MAAM,EAAE,EAAE,QAAQ,IAAI;AAAA,EAC7C;AAAA,EAEA,OAAO,gBAAgB,MAAc,IAAiB;AACpD,WAAO,IAAI,SAAQ,EAAE,MAAM,OAAO,mBAAmB,IAAI,EAAE,QAAQ,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,IAAI;AAAA,EAC3F;AAAA,EAEA,OAAO,iBAAiB,OAAe;AACrC,WAAO,IAAI,SAAQ,OAAO,iBAAiB,OAAO,EAAE,QAAQ,KAAK,CAAC,CAAC,CAAC;AAAA,EACtE;AAAA,EAEA,OAAO,gBAAgB,OAAgB;AACrC,QAAI,UAAU,SAAS,UAAU,MAAM,UAAU,QAAW;AAC1D,aAAO,SAAQ;AAAA,IACjB;AACA,QAAI,KAAK;AACT,eAAW,SAAS,OAAO;AACzB,YAAM,SAAS,OAAO,SAAS,KAAK;AACpC,eAAS,SAAS,KAAK,UAAU,GAAG,MAAM,yBAAyB,KAAK,EAAE;AAC1E,WAAM,MAAM,KAAM,OAAO,MAAM;AAAA,IACjC;AACA,WAAO,IAAI,SAAQ,EAAE,MAAM,EAAE,EAAE,QAAQ,MAAM,MAAM;AAAA,EACrD;AAAA,EAEA,OAAO,gBAAgB,aAAkC,MAAc;AACrE,UAAM,QAAQ,qBAAqB,aAAa,KAAK,MAAM,IAAI,CAAC;AAChE,UAAM,SAAoB,CAAC;AAC3B,eAAW,QAAQ,OAAO;AACxB,aAAO,KAAK,SAAS,SAAQ,SAAS,IAAI,GAAG,MAAM,aAAa,CAAC;AAAA,IACnE;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,OAAO,WAAW,OAAmB,MAAc;AACjD,UAAM,OAAO,cAAc,OAAyB,IAAI;AACxD,UAAM,gBAAgB,cAAc,IAAI;AACxC,WAAO,SAAQ,gBAAgB,aAAa;AAAA,EAC9C;AAAA,EAEA,OAAO,WAAW,MAAc,IAAY,OAAO,IAAI;AACrD,YAAQ,MAAM;AAAA,MACZ,KAAK,IAAI;AACP,eAAO,SAAQ,iBAAiB,EAAE,EAAE,QAAQ,IAAI;AAAA,MAClD;AAAA,MACA,SAAS;AACP,cAAM,IAAI,MAAM,iBAAiB,IAAI,GAAG;AAAA,MAC1C;AAAA,IACF;AAAA,EACF;AAAA,EAEA,OAAO,SAAS,MAAoB;AAClC,WAAO,SAAQ,gBAAgB,cAAc,IAAI,CAAC;AAAA,EACpD;AAAA,EAEA,eAAe,MAAc;AAE3B,QAAI,OAAO,KAAK,SAAS,KAAK,MAAM;AAClC,aAAO,CAAC,IAAI;AAAA,IACd;AAGA,QAAI,aAAwB,CAAC;AAC7B,eAAW,WAAW,KAAK,UAAU;AACnC,mBAAa,CAAC,GAAG,YAAY,GAAG,QAAQ,eAAe,IAAI,CAAC;AAAA,IAC9D;AACA,WAAO;AAAA,EACT;AAAA,EAEA,QAAQ;AACN,WAAO,IAAI,SAAQ,KAAK,GAAG;AAAA,EAC7B;AAAA,EAEA,OAAO,KAAuB;AAC5B,WAAO,IAAI,OAAO,KAAK;AAAA,EACzB;AAAA,EAEA,UAAU;AACR,SAAK,WAAW,KAAK,YAAY,IAAI,QAAQ,KAAK,SAAS;AAC3D,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,mBAAmB,MAAc;AAC/B,UAAM,OAAO,KAAK;AAClB,QAAI,QAAQ;AACZ,QAAI,OAAO;AACX,QAAI,MAAM;AACV,QAAI,YAAY;AAChB,WAAO,QAAQ,KAAK,QAAQ;AAC1B,oBAAc;AACd,cAAQ,KAAK,KAAK,GAAG;AAAA,QACnB,KAAK,KAAK;AACR,kBAAQ;AACR;AAAA,QACF;AAAA,QACA,KAAK,KAAK;AACR,iBAAO;AACP;AAAA,QACF;AAAA,QACA,KAAK,KAAK;AACR,kBAAQ;AACR,iBAAO;AACP;AAAA,QACF;AAAA,MACF;AACA;AAAA,IACF;AACA,QAAI,YAAY,GAAG;AACjB,kBAAY;AAAA,IACd;AACA,WAAO;AAAA,MACL,QAAQ;AAAA,MACR;AAAA,MACA;AAAA,MACA,OAAO;AAAA,IACT;AAAA,EACF;AAAA;AAAA,EAGA,kBAAkB;AAChB,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,gBAAgB,aAAkC;AAChD,UAAM,kBAAkB,kBAAkB,KAAK,IAAI;AACnD,WACE,YAAY,SAAS,gBAAgB,aAAa,CAAC,KAChD,YAAY,SAAS,gBAAgB,aAAa,CAAC,KACnD,YAAY,SAAS,gBAAgB,aAAa,CAAC,KACnD,YAAY,SAAS,gBAAgB,aAAa,CAAC;AAAA,EAE1D;AAAA,EAEA,SAAS,WAAmB;AAC1B,UAAM,oBAAoB,SAAS,gCAAgC,SAAS,GAAG,MAAM,mBAAmB;AACxG,QAAI,UAAU,KAAK;AACnB,QAAI,QAAQ,WAAW,GAAG;AACxB,aAAO;AAAA,IACT;AACA,QAAI,QAAQ,QAAQ,SAAS;AAC7B,WAAO,SAAS,GAAG;AACjB,UAAI,SAAS,OAAO,SAAS,QAAQ,OAAO,KAAK,CAAC;AAClD,gBAAU;AACV,UAAI,SAAS,GAAG;AACd,kBAAU;AACV,kBAAU,QAAQ,MAAM,GAAG,KAAK,IAAI,GAAG,KAAK,CAAC,IAAI,OAAO,SAAS,IAAI,QAAQ,MAAM,KAAK,IAAI,GAAG,QAAQ,CAAC,CAAC;AACzG;AAAA,MACF,WAAW,SAAS,GAAG;AACrB,kBAAU;AACV,kBAAU,QAAQ,MAAM,GAAG,KAAK,IAAI,GAAG,KAAK,CAAC,IAAI,OAAO,SAAS,IAAI,QAAQ,MAAM,KAAK,IAAI,GAAG,QAAQ,CAAC,CAAC;AACzG;AAAA,MACF,OAAO;AACL,gBAAQ;AAAA,MACV;AAAA,IACF;AACA,WAAO,SAAQ,gBAAgB,OAAO;AAAA,EACxC;AAAA,EAEA,MAAM,IAAY;AAChB,qBAAiB,IAAI,IAAI;AACzB,SAAK,OAAO,KAAK,MAAM,EAAE;AACzB,WAAO;AAAA,EACT;AAAA,EAEA,OAAO,MAAc,KAAa;AAChC,qBAAiB,GAAG;AACpB,SAAK,MAAM;AACX,SAAK,QAAQ,IAAI;AACjB,WAAO;AAAA,EACT;AAAA,EAEA,QAAQ,MAAc;AACpB,aAAS,OAAO,UAAU,MAAM,iBAAiB,IAAI,SAAS,QAAQ,EAAE;AACxE,SAAK,MAAO,KAAK,MAAM,UAAY,OAAO,IAAI,KAAK;AACnD,WAAO;AAAA,EACT;AAAA,EAEA,SAAiB;AACf,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,WAAW;AACT,WAAO,KAAK;AAAA,EACd;AAAA,EAEU,YAAY;AACpB,UAAM,gBAAgB,KAAK,GAAG,SAAS,CAAC;AACxC,SAAK,QAAQ,cAAc,MAAM;AAAA,EACnC;AACF;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xyo-network/quadkey",
3
- "version": "5.3.30",
3
+ "version": "5.4.0",
4
4
  "description": "Primary SDK for using XYO Protocol 2.0",
5
5
  "homepage": "https://xyo.network",
6
6
  "bugs": {
@@ -22,12 +22,10 @@
22
22
  "exports": {
23
23
  ".": {
24
24
  "types": "./dist/neutral/index.d.ts",
25
- "import": "./dist/neutral/index.mjs",
26
25
  "default": "./dist/neutral/index.mjs"
27
26
  },
28
27
  "./package.json": "./package.json"
29
28
  },
30
- "types": "dist/neutral/index.d.ts",
31
29
  "files": [
32
30
  "dist",
33
31
  "!**/*.bench.*",
@@ -37,27 +35,25 @@
37
35
  ],
38
36
  "devDependencies": {
39
37
  "@opentelemetry/api": "^1.9.1",
40
- "@types/node": "^25.5.2",
41
- "@xylabs/geo": "^5.0.95",
42
- "@xylabs/sdk-js": "^5.0.95",
43
- "@xylabs/ts-scripts-common": "~7.8.7",
44
- "@xylabs/ts-scripts-pnpm": "~7.8.7",
45
- "@xylabs/tsconfig": "~7.8.7",
46
- "@xylabs/vitest-extended": "~5.0.95",
47
- "@xylabs/vitest-matchers": "~5.0.95",
48
- "axios": "^1.14.0",
38
+ "@types/node": "^25.6.0",
39
+ "@xylabs/geo": "^5.0.97",
40
+ "@xylabs/sdk-js": "^5.0.97",
41
+ "@xylabs/toolchain": "~7.10.8",
42
+ "@xylabs/tsconfig": "~7.10.8",
43
+ "@xylabs/vitest-extended": "~5.0.97",
44
+ "@xylabs/vitest-matchers": "~5.0.97",
49
45
  "esbuild": "^0.28.0",
50
- "mapbox-gl": "^3.21.0",
46
+ "mapbox-gl": "^3.22.0",
51
47
  "pako": "~2.1.0",
52
48
  "typescript": "~5.9.3",
53
- "vite": "^8.0.5",
54
- "vitest": "~4.1.2",
49
+ "vite": "^8.0.8",
50
+ "vitest": "~4.1.4",
55
51
  "zod": "^4.3.6"
56
52
  },
57
53
  "peerDependencies": {
58
- "@xylabs/geo": "^5",
59
- "@xylabs/sdk-js": "^5",
60
- "mapbox-gl": "^3"
54
+ "@xylabs/geo": "^5.0.97",
55
+ "@xylabs/sdk-js": "^5.0.97",
56
+ "mapbox-gl": "^3.22.0"
61
57
  },
62
58
  "publishConfig": {
63
59
  "access": "public"