@xyo-network/quadkey 2.79.3 → 2.79.5

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.
@@ -1,17 +1,39 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/index.ts
21
+ var src_exports = {};
22
+ __export(src_exports, {
23
+ Quadkey: () => Quadkey,
24
+ bitShiftLeft: () => bitShiftLeft,
25
+ bitShiftRight: () => bitShiftRight,
26
+ isQuadkey: () => isQuadkey,
27
+ padHex: () => padHex
28
+ });
29
+ module.exports = __toCommonJS(src_exports);
30
+
1
31
  // src/Quadkey.ts
2
- import { assertEx } from "@xylabs/assert";
3
- import { BigNumber } from "@xylabs/bignumber";
4
- import { Buffer as Buffer2 } from "@xylabs/buffer";
5
- import {
6
- boundingBoxToCenter,
7
- GeoJson,
8
- tileFromPoint,
9
- tileFromQuadkey,
10
- tilesFromBoundingBox,
11
- tileToBoundingBox,
12
- tileToQuadkey
13
- } from "@xyo-network/sdk-geo";
14
- import { LngLat } from "mapbox-gl";
32
+ var import_assert = require("@xylabs/assert");
33
+ var import_bignumber = require("@xylabs/bignumber");
34
+ var import_buffer2 = require("@xylabs/buffer");
35
+ var import_sdk_geo = require("@xyo-network/sdk-geo");
36
+ var import_mapbox_gl = require("mapbox-gl");
15
37
 
16
38
  // src/RelativeDirectionConstantLookup.ts
17
39
  var RelativeDirectionConstantLookup = {
@@ -22,7 +44,7 @@ var RelativeDirectionConstantLookup = {
22
44
  };
23
45
 
24
46
  // src/utils.ts
25
- import { Buffer } from "@xylabs/buffer";
47
+ var import_buffer = require("@xylabs/buffer");
26
48
  var padHex = (hex, byteCount) => {
27
49
  let result = hex;
28
50
  if (hex.length % 2 !== 0) {
@@ -36,7 +58,7 @@ var padHex = (hex, byteCount) => {
36
58
  return result;
37
59
  };
38
60
  var bitShiftLeft = (buffer) => {
39
- const shifted = Buffer.alloc(buffer.length);
61
+ const shifted = import_buffer.Buffer.alloc(buffer.length);
40
62
  const last = buffer.length - 1;
41
63
  for (let index = 0; index < last; index++) {
42
64
  shifted[index] = buffer[index] << 1;
@@ -48,7 +70,7 @@ var bitShiftLeft = (buffer) => {
48
70
  return shifted;
49
71
  };
50
72
  var bitShiftRight = (buffer) => {
51
- const shifted = Buffer.alloc(buffer.length);
73
+ const shifted = import_buffer.Buffer.alloc(buffer.length);
52
74
  const last = buffer.length - 1;
53
75
  for (let index = last; index > 0; index--) {
54
76
  shifted[index] = buffer[index] >> 1;
@@ -64,13 +86,13 @@ var bitShiftRight = (buffer) => {
64
86
  var MAX_ZOOM = 124;
65
87
  var isQuadkey = (obj) => (obj == null ? void 0 : obj.type) === Quadkey.type;
66
88
  var Quadkey = class _Quadkey {
67
- static Zero = _Quadkey.from(0, Buffer2.alloc(31, 0));
89
+ static Zero = _Quadkey.from(0, import_buffer2.Buffer.alloc(31, 0));
68
90
  static root = new _Quadkey();
69
91
  static type = "Quadkey";
70
92
  type = _Quadkey.type;
71
93
  _geoJson;
72
- key = Buffer2.alloc(32);
73
- constructor(key = Buffer2.alloc(32)) {
94
+ key = import_buffer2.Buffer.alloc(32);
95
+ constructor(key = import_buffer2.Buffer.alloc(32)) {
74
96
  key.copy(this.key, this.key.length - key.length);
75
97
  this.guessZoom();
76
98
  }
@@ -78,7 +100,7 @@ var Quadkey = class _Quadkey {
78
100
  return this.bigNumber.toString(10);
79
101
  }
80
102
  get base4Hash() {
81
- const bn = new BigNumber(this.id.toString("hex"), 16);
103
+ const bn = new import_bignumber.BigNumber(this.id.toString("hex"), 16);
82
104
  const zoom = this.zoom;
83
105
  if (zoom === 0) {
84
106
  return "";
@@ -94,20 +116,20 @@ var Quadkey = class _Quadkey {
94
116
  return hash.length === 0 ? "fhr" : hash;
95
117
  }
96
118
  get bigNumber() {
97
- return new BigNumber(`${this.key.toString("hex")}`, "hex");
119
+ return new import_bignumber.BigNumber(`${this.key.toString("hex")}`, "hex");
98
120
  }
99
121
  get boundingBox() {
100
- return tileToBoundingBox(this.tile);
122
+ return (0, import_sdk_geo.tileToBoundingBox)(this.tile);
101
123
  }
102
124
  get buffer() {
103
125
  return this.key;
104
126
  }
105
127
  get center() {
106
- const result = boundingBoxToCenter(this.boundingBox);
107
- return new LngLat(result[0], result[1]);
128
+ const result = (0, import_sdk_geo.boundingBoxToCenter)(this.boundingBox);
129
+ return new import_mapbox_gl.LngLat(result[0], result[1]);
108
130
  }
109
131
  get children() {
110
- assertEx(this.zoom < MAX_ZOOM - 1, "Can not get children of bottom tiles");
132
+ (0, import_assert.assertEx)(this.zoom < MAX_ZOOM - 1, "Can not get children of bottom tiles");
111
133
  const result = [];
112
134
  const shiftedId = bitShiftLeft(bitShiftLeft(this.id));
113
135
  for (let i = 0; i < 4; i++) {
@@ -118,7 +140,7 @@ var Quadkey = class _Quadkey {
118
140
  return result;
119
141
  }
120
142
  get gridLocation() {
121
- const tileData = tileFromQuadkey(this.base4Hash);
143
+ const tileData = (0, import_sdk_geo.tileFromQuadkey)(this.base4Hash);
122
144
  return {
123
145
  col: 2 ** tileData[2] - tileData[1] - 1,
124
146
  row: tileData[0],
@@ -138,13 +160,13 @@ var Quadkey = class _Quadkey {
138
160
  }
139
161
  get siblings() {
140
162
  var _a;
141
- const siblings = assertEx((_a = this.parent) == null ? void 0 : _a.children, `siblings: parentChildren ${this.base4Hash}`);
163
+ const siblings = (0, import_assert.assertEx)((_a = this.parent) == null ? void 0 : _a.children, `siblings: parentChildren ${this.base4Hash}`);
142
164
  const filteredSiblings = siblings.filter((quadkey) => this.compareTo(quadkey) !== 0);
143
- assertEx(filteredSiblings.length === 3, `siblings: expected 3 [${filteredSiblings.length}]`);
165
+ (0, import_assert.assertEx)(filteredSiblings.length === 3, `siblings: expected 3 [${filteredSiblings.length}]`);
144
166
  return filteredSiblings;
145
167
  }
146
168
  get tile() {
147
- return tileFromQuadkey(this.base4Hash);
169
+ return (0, import_sdk_geo.tileFromQuadkey)(this.base4Hash);
148
170
  }
149
171
  get valid() {
150
172
  const zoom = this.zoom;
@@ -166,26 +188,26 @@ var Quadkey = class _Quadkey {
166
188
  return new _Quadkey().setId(id).setZoom(zoom);
167
189
  }
168
190
  static fromBase10String(value) {
169
- return new _Quadkey(Buffer2.from(padHex(new BigNumber(value, 10).toString(16)), "hex"));
191
+ return new _Quadkey(import_buffer2.Buffer.from(padHex(new import_bignumber.BigNumber(value, 10).toString(16)), "hex"));
170
192
  }
171
193
  static fromBase16String(value) {
172
194
  const valueToUse = value.startsWith("0x") ? value.slice(2) : value;
173
- return new _Quadkey(Buffer2.from(padHex(valueToUse), "hex"));
195
+ return new _Quadkey(import_buffer2.Buffer.from(padHex(valueToUse), "hex"));
174
196
  }
175
197
  static fromBase4String(value) {
176
198
  if (value === "fhr" || value === "") {
177
199
  return _Quadkey.root;
178
200
  }
179
201
  if (value && value.length && value.length > 0) {
180
- const quadkey = new _Quadkey(Buffer2.from(padHex(new BigNumber(value, 4).toString(16)), "hex")).setZoom(value.length);
202
+ const quadkey = new _Quadkey(import_buffer2.Buffer.from(padHex(new import_bignumber.BigNumber(value, 4).toString(16)), "hex")).setZoom(value.length);
181
203
  return quadkey.valid ? quadkey : void 0;
182
204
  }
183
205
  }
184
206
  static fromBoundingBox(boundingBox, zoom) {
185
- const tiles = tilesFromBoundingBox(boundingBox, Math.floor(zoom));
207
+ const tiles = (0, import_sdk_geo.tilesFromBoundingBox)(boundingBox, Math.floor(zoom));
186
208
  const result = [];
187
209
  for (const tile of tiles) {
188
- result.push(assertEx(_Quadkey.fromTile(tile), "Bad Quadkey"));
210
+ result.push((0, import_assert.assertEx)(_Quadkey.fromTile(tile), "Bad Quadkey"));
189
211
  }
190
212
  return result;
191
213
  }
@@ -193,8 +215,8 @@ var Quadkey = class _Quadkey {
193
215
  return _Quadkey.fromBase16String(value.toString("hex"));
194
216
  }
195
217
  static fromLngLat(point, zoom) {
196
- const tile = tileFromPoint(LngLat.convert(point), zoom);
197
- const quadkeyString = tileToQuadkey(tile);
218
+ const tile = (0, import_sdk_geo.tileFromPoint)(import_mapbox_gl.LngLat.convert(point), zoom);
219
+ const quadkeyString = (0, import_sdk_geo.tileToQuadkey)(tile);
198
220
  return _Quadkey.fromBase4String(quadkeyString);
199
221
  }
200
222
  static fromString(zoom, id, base = 10) {
@@ -209,7 +231,7 @@ var Quadkey = class _Quadkey {
209
231
  }
210
232
  }
211
233
  static fromTile(tile) {
212
- return _Quadkey.fromBase4String(tileToQuadkey(tile));
234
+ return _Quadkey.fromBase4String((0, import_sdk_geo.tileToQuadkey)(tile));
213
235
  }
214
236
  childrenByZoom(zoom) {
215
237
  if (zoom && zoom === this.zoom) {
@@ -231,7 +253,7 @@ var Quadkey = class _Quadkey {
231
253
  return obj.base4HashLabel == this.base4HashLabel;
232
254
  }
233
255
  geoJson() {
234
- this._geoJson = this._geoJson ?? new GeoJson(this.base4Hash);
256
+ this._geoJson = this._geoJson ?? new import_sdk_geo.GeoJson(this.base4Hash);
235
257
  return this._geoJson;
236
258
  }
237
259
  getGridBoundingBox(size) {
@@ -271,11 +293,11 @@ var Quadkey = class _Quadkey {
271
293
  return this.gridLocation;
272
294
  }
273
295
  isInBoundingBox(boundingBox) {
274
- const tileBoundingBox = tileToBoundingBox(this.tile);
296
+ const tileBoundingBox = (0, import_sdk_geo.tileToBoundingBox)(this.tile);
275
297
  return boundingBox.contains(tileBoundingBox.getNorthEast()) || boundingBox.contains(tileBoundingBox.getNorthWest()) || boundingBox.contains(tileBoundingBox.getSouthEast()) || boundingBox.contains(tileBoundingBox.getSouthWest());
276
298
  }
277
299
  relative(direction) {
278
- const directionConstant = assertEx(RelativeDirectionConstantLookup[direction], "Invalid direction");
300
+ const directionConstant = (0, import_assert.assertEx)(RelativeDirectionConstantLookup[direction], "Invalid direction");
279
301
  let quadkey = this.base4Hash;
280
302
  if (quadkey.length === 0) {
281
303
  return this;
@@ -308,7 +330,7 @@ var Quadkey = class _Quadkey {
308
330
  return this;
309
331
  }
310
332
  setZoom(zoom) {
311
- assertEx(zoom < MAX_ZOOM, `Invalid zoom [${zoom}] max=${MAX_ZOOM}`);
333
+ (0, import_assert.assertEx)(zoom < MAX_ZOOM, `Invalid zoom [${zoom}] max=${MAX_ZOOM}`);
312
334
  this.setKey(zoom, this.id);
313
335
  return this;
314
336
  }
@@ -362,16 +384,17 @@ var Quadkey = class _Quadkey {
362
384
  return this.tile;
363
385
  }
364
386
  guessZoom() {
365
- const bn = new BigNumber(this.id.toString("hex"), 16);
387
+ const bn = new import_bignumber.BigNumber(this.id.toString("hex"), 16);
366
388
  const quadkeySimple = bn.toString(4);
367
389
  this.setZoom(quadkeySimple.length);
368
390
  }
369
391
  };
370
- export {
392
+ // Annotate the CommonJS export names for ESM import in node:
393
+ 0 && (module.exports = {
371
394
  Quadkey,
372
395
  bitShiftLeft,
373
396
  bitShiftRight,
374
397
  isQuadkey,
375
398
  padHex
376
- };
377
- //# sourceMappingURL=index.mjs.map
399
+ });
400
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/index.ts","../../src/Quadkey.ts","../../src/RelativeDirectionConstantLookup.ts","../../src/utils.ts"],"sourcesContent":["export * from './Quadkey'\n","import { assertEx } from '@xylabs/assert'\nimport { BigNumber } from '@xylabs/bignumber'\nimport { Buffer } from '@xylabs/buffer'\nimport {\n boundingBoxToCenter,\n GeoJson,\n MercatorBoundingBox,\n MercatorTile,\n tileFromPoint,\n tileFromQuadkey,\n tilesFromBoundingBox,\n tileToBoundingBox,\n tileToQuadkey,\n} from '@xyo-network/sdk-geo'\nimport { LngLat, LngLatLike } from 'mapbox-gl'\n\nimport { RelativeDirectionConstantLookup } from './RelativeDirectionConstantLookup'\nimport { bitShiftLeft, bitShiftRight, padHex } from './utils'\n\nexport * from './utils'\n\nconst MAX_ZOOM = 124\n\nexport const isQuadkey = (obj: { type: string }) => obj?.type === Quadkey.type\n\nexport class Quadkey {\n static Zero = Quadkey.from(0, Buffer.alloc(31, 0))\n static root = new Quadkey()\n static type = 'Quadkey'\n\n type = Quadkey.type\n\n private _geoJson?: GeoJson\n private key = Buffer.alloc(32)\n\n constructor(key = Buffer.alloc(32)) {\n key.copy(this.key, this.key.length - key.length)\n this.guessZoom()\n }\n\n get base10String() {\n return this.bigNumber.toString(10)\n }\n\n get base4Hash() {\n const bn = new BigNumber(this.id.toString('hex'), 16)\n const zoom = this.zoom\n if (zoom === 0) {\n return ''\n }\n let quadkeySimple = bn.toString(4)\n while (quadkeySimple.length < zoom) {\n quadkeySimple = `0${quadkeySimple}`\n }\n return quadkeySimple\n }\n\n get base4HashLabel() {\n const hash = this.base4Hash\n return hash.length === 0 ? 'fhr' : hash\n }\n\n get bigNumber() {\n return new BigNumber(`${this.key.toString('hex')}`, 'hex')\n }\n\n get boundingBox(): MercatorBoundingBox {\n return tileToBoundingBox(this.tile)\n }\n\n get buffer() {\n return this.key\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 = bitShiftLeft(bitShiftLeft(this.id))\n for (let i = 0; i < 4; i++) {\n const currentLastByte = shiftedId.readUInt8(shiftedId.length - 1)\n shiftedId.writeUInt8((currentLastByte & 0xfc) | i, shiftedId.length - 1)\n result.push(new Quadkey().setId(shiftedId).setZoom(this.zoom + 1))\n }\n return result\n }\n\n get gridLocation() {\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 hex() {\n return `0x${this.key.toString('hex')}`\n }\n\n get id() {\n return this.buffer.slice(1)\n }\n\n get parent(): Quadkey | undefined {\n if (this.zoom > 0) {\n return new Quadkey().setId(bitShiftRight(bitShiftRight(this.id))).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) => this.compareTo(quadkey) !== 0)\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 const zoom = this.zoom\n const shift = (MAX_ZOOM - zoom) * 2\n const id = this.id\n let testId = id\n for (let i = 0; i < shift; i++) {\n testId = bitShiftLeft(testId)\n }\n for (let i = 0; i < shift; i++) {\n testId = bitShiftRight(testId)\n }\n return testId.compare(id) === 0\n }\n\n get zoom() {\n return this.buffer.readUInt8(0)\n }\n\n static from(zoom: number, id: Buffer) {\n return new Quadkey().setId(id).setZoom(zoom)\n }\n\n static fromBase10String(value: string) {\n return new Quadkey(Buffer.from(padHex(new BigNumber(value, 10).toString(16)), 'hex'))\n }\n\n static fromBase16String(value: string) {\n const valueToUse = value.startsWith('0x') ? value.slice(2) : value\n return new Quadkey(Buffer.from(padHex(valueToUse), 'hex'))\n }\n\n static fromBase4String(value?: string) {\n if (value === 'fhr' || value === '') {\n return Quadkey.root\n }\n if (value && value.length && value.length > 0) {\n const quadkey = new Quadkey(Buffer.from(padHex(new BigNumber(value, 4).toString(16)), 'hex')).setZoom(value.length)\n return quadkey.valid ? quadkey : undefined\n }\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 fromBuffer(value: Buffer) {\n return Quadkey.fromBase16String(value.toString('hex'))\n }\n\n static fromLngLat(point: LngLatLike, zoom: number) {\n const tile = tileFromPoint(LngLat.convert(point), zoom)\n const quadkeyString = tileToQuadkey(tile)\n return Quadkey.fromBase4String(quadkeyString)\n }\n\n static fromString(zoom: number, id: string, base = 10) {\n switch (base) {\n case 10:\n return Quadkey.fromBase10String(id)?.setZoom(zoom)\n case 16:\n return Quadkey.fromBase16String(id).setZoom(zoom)\n default:\n throw Error(`Invalid base [${base}]`)\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 && 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.concat(quadkey.childrenByZoom(zoom))\n }\n return deepResult\n }\n\n clone() {\n return Quadkey.fromBase10String(this.base10String)\n }\n\n compareTo(quadkey: Quadkey) {\n return this.bigNumber.cmp(quadkey.bigNumber)\n }\n\n equals(obj: Quadkey): boolean {\n return obj.base4HashLabel == this.base4HashLabel\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 case '2':\n top += blockSize\n break\n case '3':\n left += blockSize\n top += blockSize\n break\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 = parseInt(quadkey.charAt(index))\n number += directionConstant\n if (number > 3) {\n number -= 4\n quadkey = quadkey.substring(0, index) + number.toString() + quadkey.substring(index + 1)\n index--\n } else if (number < 0) {\n number += 4\n quadkey = quadkey.substring(0, index) + number.toString() + quadkey.substring(index + 1)\n index--\n } else {\n index = -1\n }\n }\n return Quadkey.fromBase4String(quadkey)\n }\n\n setId(id: Buffer) {\n this.setKey(this.zoom, id)\n return this\n }\n\n setKey(zoom: number, id: Buffer) {\n id.copy(this.key, this.key.length - id.length)\n this.key.writeUInt8(zoom, 0)\n return this\n }\n\n setZoom(zoom: number) {\n assertEx(zoom < MAX_ZOOM, `Invalid zoom [${zoom}] max=${MAX_ZOOM}`)\n this.setKey(zoom, this.id)\n return this\n }\n\n /** @deprecated use .base10String*/\n toBase10String() {\n return this.base10String\n }\n\n /** @deprecated use .base4Hash */\n toBase4Hash() {\n return this.base4Hash\n }\n\n /** @deprecated use .base4HashLabel */\n toBase4HashLabel() {\n const hash = this.base4HashLabel\n return hash.length === 0 ? 'fhr' : hash\n }\n\n /** @deprecated use .bigNumber */\n toBigNumber() {\n return this.bigNumber\n }\n\n /** @deprecated use .boundingBox */\n toBoundingBox(): MercatorBoundingBox {\n return this.boundingBox\n }\n\n /** @deprecated use .buffer */\n toBuffer() {\n return this.buffer\n }\n\n /** @deprecated use .center */\n toCenter() {\n return this.center\n }\n\n /** @deprecated use .hex instead */\n toHex() {\n return this.hex\n }\n\n toJSON(): string {\n return this.base4HashLabel\n }\n\n toShortString() {\n const buffer = this.buffer\n const part1 = buffer.slice(0, 2)\n const part2 = buffer.slice(buffer.length - 2, buffer.length)\n return `${part1.toString('hex')}...${part2.toString('hex')}`\n }\n\n toString() {\n return `0x${padHex(this.bigNumber.toString(16))}`\n }\n\n /** @deprecated use .tile instead */\n toTile(): MercatorTile {\n return this.tile\n }\n\n protected guessZoom() {\n const bn = new BigNumber(this.id.toString('hex'), 16)\n const quadkeySimple = bn.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","import { Buffer } from '@xylabs/buffer'\n\nexport const padHex = (hex: string, byteCount?: number) => {\n let result = hex\n if (hex.length % 2 !== 0) {\n result = `0${hex}`\n }\n if (byteCount) {\n while (result.length / 2 < byteCount) {\n result = `00${result}`\n }\n }\n return result\n}\n\nexport const bitShiftLeft = (buffer: Buffer) => {\n const shifted = Buffer.alloc(buffer.length)\n const last = buffer.length - 1\n for (let index = 0; index < last; index++) {\n shifted[index] = buffer[index] << 1\n if (buffer[index + 1] & 0x80) {\n shifted[index] += 0x01\n }\n }\n shifted[last] = buffer[last] << 1\n return shifted\n}\n\nexport const bitShiftRight = (buffer: Buffer) => {\n const shifted = Buffer.alloc(buffer.length)\n const last = buffer.length - 1\n for (let index = last; index > 0; index--) {\n shifted[index] = buffer[index] >> 1\n if (buffer[index - 1] & 0x01) {\n shifted[index] += 0x80\n }\n }\n shifted[0] = buffer[0] >> 1\n return shifted\n}\n"],"mappings":"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","names":["import_buffer"]}
@@ -1,39 +1,17 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
-
20
- // src/index.ts
21
- var src_exports = {};
22
- __export(src_exports, {
23
- Quadkey: () => Quadkey,
24
- bitShiftLeft: () => bitShiftLeft,
25
- bitShiftRight: () => bitShiftRight,
26
- isQuadkey: () => isQuadkey,
27
- padHex: () => padHex
28
- });
29
- module.exports = __toCommonJS(src_exports);
30
-
31
1
  // src/Quadkey.ts
32
- var import_assert = require("@xylabs/assert");
33
- var import_bignumber = require("@xylabs/bignumber");
34
- var import_buffer2 = require("@xylabs/buffer");
35
- var import_sdk_geo = require("@xyo-network/sdk-geo");
36
- var import_mapbox_gl = require("mapbox-gl");
2
+ import { assertEx } from "@xylabs/assert";
3
+ import { BigNumber } from "@xylabs/bignumber";
4
+ import { Buffer as Buffer2 } from "@xylabs/buffer";
5
+ import {
6
+ boundingBoxToCenter,
7
+ GeoJson,
8
+ tileFromPoint,
9
+ tileFromQuadkey,
10
+ tilesFromBoundingBox,
11
+ tileToBoundingBox,
12
+ tileToQuadkey
13
+ } from "@xyo-network/sdk-geo";
14
+ import { LngLat } from "mapbox-gl";
37
15
 
38
16
  // src/RelativeDirectionConstantLookup.ts
39
17
  var RelativeDirectionConstantLookup = {
@@ -44,7 +22,7 @@ var RelativeDirectionConstantLookup = {
44
22
  };
45
23
 
46
24
  // src/utils.ts
47
- var import_buffer = require("@xylabs/buffer");
25
+ import { Buffer } from "@xylabs/buffer";
48
26
  var padHex = (hex, byteCount) => {
49
27
  let result = hex;
50
28
  if (hex.length % 2 !== 0) {
@@ -58,7 +36,7 @@ var padHex = (hex, byteCount) => {
58
36
  return result;
59
37
  };
60
38
  var bitShiftLeft = (buffer) => {
61
- const shifted = import_buffer.Buffer.alloc(buffer.length);
39
+ const shifted = Buffer.alloc(buffer.length);
62
40
  const last = buffer.length - 1;
63
41
  for (let index = 0; index < last; index++) {
64
42
  shifted[index] = buffer[index] << 1;
@@ -70,7 +48,7 @@ var bitShiftLeft = (buffer) => {
70
48
  return shifted;
71
49
  };
72
50
  var bitShiftRight = (buffer) => {
73
- const shifted = import_buffer.Buffer.alloc(buffer.length);
51
+ const shifted = Buffer.alloc(buffer.length);
74
52
  const last = buffer.length - 1;
75
53
  for (let index = last; index > 0; index--) {
76
54
  shifted[index] = buffer[index] >> 1;
@@ -86,13 +64,13 @@ var bitShiftRight = (buffer) => {
86
64
  var MAX_ZOOM = 124;
87
65
  var isQuadkey = (obj) => (obj == null ? void 0 : obj.type) === Quadkey.type;
88
66
  var Quadkey = class _Quadkey {
89
- static Zero = _Quadkey.from(0, import_buffer2.Buffer.alloc(31, 0));
67
+ static Zero = _Quadkey.from(0, Buffer2.alloc(31, 0));
90
68
  static root = new _Quadkey();
91
69
  static type = "Quadkey";
92
70
  type = _Quadkey.type;
93
71
  _geoJson;
94
- key = import_buffer2.Buffer.alloc(32);
95
- constructor(key = import_buffer2.Buffer.alloc(32)) {
72
+ key = Buffer2.alloc(32);
73
+ constructor(key = Buffer2.alloc(32)) {
96
74
  key.copy(this.key, this.key.length - key.length);
97
75
  this.guessZoom();
98
76
  }
@@ -100,7 +78,7 @@ var Quadkey = class _Quadkey {
100
78
  return this.bigNumber.toString(10);
101
79
  }
102
80
  get base4Hash() {
103
- const bn = new import_bignumber.BigNumber(this.id.toString("hex"), 16);
81
+ const bn = new BigNumber(this.id.toString("hex"), 16);
104
82
  const zoom = this.zoom;
105
83
  if (zoom === 0) {
106
84
  return "";
@@ -116,20 +94,20 @@ var Quadkey = class _Quadkey {
116
94
  return hash.length === 0 ? "fhr" : hash;
117
95
  }
118
96
  get bigNumber() {
119
- return new import_bignumber.BigNumber(`${this.key.toString("hex")}`, "hex");
97
+ return new BigNumber(`${this.key.toString("hex")}`, "hex");
120
98
  }
121
99
  get boundingBox() {
122
- return (0, import_sdk_geo.tileToBoundingBox)(this.tile);
100
+ return tileToBoundingBox(this.tile);
123
101
  }
124
102
  get buffer() {
125
103
  return this.key;
126
104
  }
127
105
  get center() {
128
- const result = (0, import_sdk_geo.boundingBoxToCenter)(this.boundingBox);
129
- return new import_mapbox_gl.LngLat(result[0], result[1]);
106
+ const result = boundingBoxToCenter(this.boundingBox);
107
+ return new LngLat(result[0], result[1]);
130
108
  }
131
109
  get children() {
132
- (0, import_assert.assertEx)(this.zoom < MAX_ZOOM - 1, "Can not get children of bottom tiles");
110
+ assertEx(this.zoom < MAX_ZOOM - 1, "Can not get children of bottom tiles");
133
111
  const result = [];
134
112
  const shiftedId = bitShiftLeft(bitShiftLeft(this.id));
135
113
  for (let i = 0; i < 4; i++) {
@@ -140,7 +118,7 @@ var Quadkey = class _Quadkey {
140
118
  return result;
141
119
  }
142
120
  get gridLocation() {
143
- const tileData = (0, import_sdk_geo.tileFromQuadkey)(this.base4Hash);
121
+ const tileData = tileFromQuadkey(this.base4Hash);
144
122
  return {
145
123
  col: 2 ** tileData[2] - tileData[1] - 1,
146
124
  row: tileData[0],
@@ -160,13 +138,13 @@ var Quadkey = class _Quadkey {
160
138
  }
161
139
  get siblings() {
162
140
  var _a;
163
- const siblings = (0, import_assert.assertEx)((_a = this.parent) == null ? void 0 : _a.children, `siblings: parentChildren ${this.base4Hash}`);
141
+ const siblings = assertEx((_a = this.parent) == null ? void 0 : _a.children, `siblings: parentChildren ${this.base4Hash}`);
164
142
  const filteredSiblings = siblings.filter((quadkey) => this.compareTo(quadkey) !== 0);
165
- (0, import_assert.assertEx)(filteredSiblings.length === 3, `siblings: expected 3 [${filteredSiblings.length}]`);
143
+ assertEx(filteredSiblings.length === 3, `siblings: expected 3 [${filteredSiblings.length}]`);
166
144
  return filteredSiblings;
167
145
  }
168
146
  get tile() {
169
- return (0, import_sdk_geo.tileFromQuadkey)(this.base4Hash);
147
+ return tileFromQuadkey(this.base4Hash);
170
148
  }
171
149
  get valid() {
172
150
  const zoom = this.zoom;
@@ -188,26 +166,26 @@ var Quadkey = class _Quadkey {
188
166
  return new _Quadkey().setId(id).setZoom(zoom);
189
167
  }
190
168
  static fromBase10String(value) {
191
- return new _Quadkey(import_buffer2.Buffer.from(padHex(new import_bignumber.BigNumber(value, 10).toString(16)), "hex"));
169
+ return new _Quadkey(Buffer2.from(padHex(new BigNumber(value, 10).toString(16)), "hex"));
192
170
  }
193
171
  static fromBase16String(value) {
194
172
  const valueToUse = value.startsWith("0x") ? value.slice(2) : value;
195
- return new _Quadkey(import_buffer2.Buffer.from(padHex(valueToUse), "hex"));
173
+ return new _Quadkey(Buffer2.from(padHex(valueToUse), "hex"));
196
174
  }
197
175
  static fromBase4String(value) {
198
176
  if (value === "fhr" || value === "") {
199
177
  return _Quadkey.root;
200
178
  }
201
179
  if (value && value.length && value.length > 0) {
202
- const quadkey = new _Quadkey(import_buffer2.Buffer.from(padHex(new import_bignumber.BigNumber(value, 4).toString(16)), "hex")).setZoom(value.length);
180
+ const quadkey = new _Quadkey(Buffer2.from(padHex(new BigNumber(value, 4).toString(16)), "hex")).setZoom(value.length);
203
181
  return quadkey.valid ? quadkey : void 0;
204
182
  }
205
183
  }
206
184
  static fromBoundingBox(boundingBox, zoom) {
207
- const tiles = (0, import_sdk_geo.tilesFromBoundingBox)(boundingBox, Math.floor(zoom));
185
+ const tiles = tilesFromBoundingBox(boundingBox, Math.floor(zoom));
208
186
  const result = [];
209
187
  for (const tile of tiles) {
210
- result.push((0, import_assert.assertEx)(_Quadkey.fromTile(tile), "Bad Quadkey"));
188
+ result.push(assertEx(_Quadkey.fromTile(tile), "Bad Quadkey"));
211
189
  }
212
190
  return result;
213
191
  }
@@ -215,8 +193,8 @@ var Quadkey = class _Quadkey {
215
193
  return _Quadkey.fromBase16String(value.toString("hex"));
216
194
  }
217
195
  static fromLngLat(point, zoom) {
218
- const tile = (0, import_sdk_geo.tileFromPoint)(import_mapbox_gl.LngLat.convert(point), zoom);
219
- const quadkeyString = (0, import_sdk_geo.tileToQuadkey)(tile);
196
+ const tile = tileFromPoint(LngLat.convert(point), zoom);
197
+ const quadkeyString = tileToQuadkey(tile);
220
198
  return _Quadkey.fromBase4String(quadkeyString);
221
199
  }
222
200
  static fromString(zoom, id, base = 10) {
@@ -231,7 +209,7 @@ var Quadkey = class _Quadkey {
231
209
  }
232
210
  }
233
211
  static fromTile(tile) {
234
- return _Quadkey.fromBase4String((0, import_sdk_geo.tileToQuadkey)(tile));
212
+ return _Quadkey.fromBase4String(tileToQuadkey(tile));
235
213
  }
236
214
  childrenByZoom(zoom) {
237
215
  if (zoom && zoom === this.zoom) {
@@ -253,7 +231,7 @@ var Quadkey = class _Quadkey {
253
231
  return obj.base4HashLabel == this.base4HashLabel;
254
232
  }
255
233
  geoJson() {
256
- this._geoJson = this._geoJson ?? new import_sdk_geo.GeoJson(this.base4Hash);
234
+ this._geoJson = this._geoJson ?? new GeoJson(this.base4Hash);
257
235
  return this._geoJson;
258
236
  }
259
237
  getGridBoundingBox(size) {
@@ -293,11 +271,11 @@ var Quadkey = class _Quadkey {
293
271
  return this.gridLocation;
294
272
  }
295
273
  isInBoundingBox(boundingBox) {
296
- const tileBoundingBox = (0, import_sdk_geo.tileToBoundingBox)(this.tile);
274
+ const tileBoundingBox = tileToBoundingBox(this.tile);
297
275
  return boundingBox.contains(tileBoundingBox.getNorthEast()) || boundingBox.contains(tileBoundingBox.getNorthWest()) || boundingBox.contains(tileBoundingBox.getSouthEast()) || boundingBox.contains(tileBoundingBox.getSouthWest());
298
276
  }
299
277
  relative(direction) {
300
- const directionConstant = (0, import_assert.assertEx)(RelativeDirectionConstantLookup[direction], "Invalid direction");
278
+ const directionConstant = assertEx(RelativeDirectionConstantLookup[direction], "Invalid direction");
301
279
  let quadkey = this.base4Hash;
302
280
  if (quadkey.length === 0) {
303
281
  return this;
@@ -330,7 +308,7 @@ var Quadkey = class _Quadkey {
330
308
  return this;
331
309
  }
332
310
  setZoom(zoom) {
333
- (0, import_assert.assertEx)(zoom < MAX_ZOOM, `Invalid zoom [${zoom}] max=${MAX_ZOOM}`);
311
+ assertEx(zoom < MAX_ZOOM, `Invalid zoom [${zoom}] max=${MAX_ZOOM}`);
334
312
  this.setKey(zoom, this.id);
335
313
  return this;
336
314
  }
@@ -384,17 +362,16 @@ var Quadkey = class _Quadkey {
384
362
  return this.tile;
385
363
  }
386
364
  guessZoom() {
387
- const bn = new import_bignumber.BigNumber(this.id.toString("hex"), 16);
365
+ const bn = new BigNumber(this.id.toString("hex"), 16);
388
366
  const quadkeySimple = bn.toString(4);
389
367
  this.setZoom(quadkeySimple.length);
390
368
  }
391
369
  };
392
- // Annotate the CommonJS export names for ESM import in node:
393
- 0 && (module.exports = {
370
+ export {
394
371
  Quadkey,
395
372
  bitShiftLeft,
396
373
  bitShiftRight,
397
374
  isQuadkey,
398
375
  padHex
399
- });
376
+ };
400
377
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts","../../src/Quadkey.ts","../../src/RelativeDirectionConstantLookup.ts","../../src/utils.ts"],"sourcesContent":["export * from './Quadkey'\n","import { assertEx } from '@xylabs/assert'\nimport { BigNumber } from '@xylabs/bignumber'\nimport { Buffer } from '@xylabs/buffer'\nimport {\n boundingBoxToCenter,\n GeoJson,\n MercatorBoundingBox,\n MercatorTile,\n tileFromPoint,\n tileFromQuadkey,\n tilesFromBoundingBox,\n tileToBoundingBox,\n tileToQuadkey,\n} from '@xyo-network/sdk-geo'\nimport { LngLat, LngLatLike } from 'mapbox-gl'\n\nimport { RelativeDirectionConstantLookup } from './RelativeDirectionConstantLookup'\nimport { bitShiftLeft, bitShiftRight, padHex } from './utils'\n\nexport * from './utils'\n\nconst MAX_ZOOM = 124\n\nexport const isQuadkey = (obj: { type: string }) => obj?.type === Quadkey.type\n\nexport class Quadkey {\n static Zero = Quadkey.from(0, Buffer.alloc(31, 0))\n static root = new Quadkey()\n static type = 'Quadkey'\n\n type = Quadkey.type\n\n private _geoJson?: GeoJson\n private key = Buffer.alloc(32)\n\n constructor(key = Buffer.alloc(32)) {\n key.copy(this.key, this.key.length - key.length)\n this.guessZoom()\n }\n\n get base10String() {\n return this.bigNumber.toString(10)\n }\n\n get base4Hash() {\n const bn = new BigNumber(this.id.toString('hex'), 16)\n const zoom = this.zoom\n if (zoom === 0) {\n return ''\n }\n let quadkeySimple = bn.toString(4)\n while (quadkeySimple.length < zoom) {\n quadkeySimple = `0${quadkeySimple}`\n }\n return quadkeySimple\n }\n\n get base4HashLabel() {\n const hash = this.base4Hash\n return hash.length === 0 ? 'fhr' : hash\n }\n\n get bigNumber() {\n return new BigNumber(`${this.key.toString('hex')}`, 'hex')\n }\n\n get boundingBox(): MercatorBoundingBox {\n return tileToBoundingBox(this.tile)\n }\n\n get buffer() {\n return this.key\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 = bitShiftLeft(bitShiftLeft(this.id))\n for (let i = 0; i < 4; i++) {\n const currentLastByte = shiftedId.readUInt8(shiftedId.length - 1)\n shiftedId.writeUInt8((currentLastByte & 0xfc) | i, shiftedId.length - 1)\n result.push(new Quadkey().setId(shiftedId).setZoom(this.zoom + 1))\n }\n return result\n }\n\n get gridLocation() {\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 hex() {\n return `0x${this.key.toString('hex')}`\n }\n\n get id() {\n return this.buffer.slice(1)\n }\n\n get parent(): Quadkey | undefined {\n if (this.zoom > 0) {\n return new Quadkey().setId(bitShiftRight(bitShiftRight(this.id))).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) => this.compareTo(quadkey) !== 0)\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 const zoom = this.zoom\n const shift = (MAX_ZOOM - zoom) * 2\n const id = this.id\n let testId = id\n for (let i = 0; i < shift; i++) {\n testId = bitShiftLeft(testId)\n }\n for (let i = 0; i < shift; i++) {\n testId = bitShiftRight(testId)\n }\n return testId.compare(id) === 0\n }\n\n get zoom() {\n return this.buffer.readUInt8(0)\n }\n\n static from(zoom: number, id: Buffer) {\n return new Quadkey().setId(id).setZoom(zoom)\n }\n\n static fromBase10String(value: string) {\n return new Quadkey(Buffer.from(padHex(new BigNumber(value, 10).toString(16)), 'hex'))\n }\n\n static fromBase16String(value: string) {\n const valueToUse = value.startsWith('0x') ? value.slice(2) : value\n return new Quadkey(Buffer.from(padHex(valueToUse), 'hex'))\n }\n\n static fromBase4String(value?: string) {\n if (value === 'fhr' || value === '') {\n return Quadkey.root\n }\n if (value && value.length && value.length > 0) {\n const quadkey = new Quadkey(Buffer.from(padHex(new BigNumber(value, 4).toString(16)), 'hex')).setZoom(value.length)\n return quadkey.valid ? quadkey : undefined\n }\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 fromBuffer(value: Buffer) {\n return Quadkey.fromBase16String(value.toString('hex'))\n }\n\n static fromLngLat(point: LngLatLike, zoom: number) {\n const tile = tileFromPoint(LngLat.convert(point), zoom)\n const quadkeyString = tileToQuadkey(tile)\n return Quadkey.fromBase4String(quadkeyString)\n }\n\n static fromString(zoom: number, id: string, base = 10) {\n switch (base) {\n case 10:\n return Quadkey.fromBase10String(id)?.setZoom(zoom)\n case 16:\n return Quadkey.fromBase16String(id).setZoom(zoom)\n default:\n throw Error(`Invalid base [${base}]`)\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 && 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.concat(quadkey.childrenByZoom(zoom))\n }\n return deepResult\n }\n\n clone() {\n return Quadkey.fromBase10String(this.base10String)\n }\n\n compareTo(quadkey: Quadkey) {\n return this.bigNumber.cmp(quadkey.bigNumber)\n }\n\n equals(obj: Quadkey): boolean {\n return obj.base4HashLabel == this.base4HashLabel\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 case '2':\n top += blockSize\n break\n case '3':\n left += blockSize\n top += blockSize\n break\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 = parseInt(quadkey.charAt(index))\n number += directionConstant\n if (number > 3) {\n number -= 4\n quadkey = quadkey.substring(0, index) + number.toString() + quadkey.substring(index + 1)\n index--\n } else if (number < 0) {\n number += 4\n quadkey = quadkey.substring(0, index) + number.toString() + quadkey.substring(index + 1)\n index--\n } else {\n index = -1\n }\n }\n return Quadkey.fromBase4String(quadkey)\n }\n\n setId(id: Buffer) {\n this.setKey(this.zoom, id)\n return this\n }\n\n setKey(zoom: number, id: Buffer) {\n id.copy(this.key, this.key.length - id.length)\n this.key.writeUInt8(zoom, 0)\n return this\n }\n\n setZoom(zoom: number) {\n assertEx(zoom < MAX_ZOOM, `Invalid zoom [${zoom}] max=${MAX_ZOOM}`)\n this.setKey(zoom, this.id)\n return this\n }\n\n /** @deprecated use .base10String*/\n toBase10String() {\n return this.base10String\n }\n\n /** @deprecated use .base4Hash */\n toBase4Hash() {\n return this.base4Hash\n }\n\n /** @deprecated use .base4HashLabel */\n toBase4HashLabel() {\n const hash = this.base4HashLabel\n return hash.length === 0 ? 'fhr' : hash\n }\n\n /** @deprecated use .bigNumber */\n toBigNumber() {\n return this.bigNumber\n }\n\n /** @deprecated use .boundingBox */\n toBoundingBox(): MercatorBoundingBox {\n return this.boundingBox\n }\n\n /** @deprecated use .buffer */\n toBuffer() {\n return this.buffer\n }\n\n /** @deprecated use .center */\n toCenter() {\n return this.center\n }\n\n /** @deprecated use .hex instead */\n toHex() {\n return this.hex\n }\n\n toJSON(): string {\n return this.base4HashLabel\n }\n\n toShortString() {\n const buffer = this.buffer\n const part1 = buffer.slice(0, 2)\n const part2 = buffer.slice(buffer.length - 2, buffer.length)\n return `${part1.toString('hex')}...${part2.toString('hex')}`\n }\n\n toString() {\n return `0x${padHex(this.bigNumber.toString(16))}`\n }\n\n /** @deprecated use .tile instead */\n toTile(): MercatorTile {\n return this.tile\n }\n\n protected guessZoom() {\n const bn = new BigNumber(this.id.toString('hex'), 16)\n const quadkeySimple = bn.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","import { Buffer } from '@xylabs/buffer'\n\nexport const padHex = (hex: string, byteCount?: number) => {\n let result = hex\n if (hex.length % 2 !== 0) {\n result = `0${hex}`\n }\n if (byteCount) {\n while (result.length / 2 < byteCount) {\n result = `00${result}`\n }\n }\n return result\n}\n\nexport const bitShiftLeft = (buffer: Buffer) => {\n const shifted = Buffer.alloc(buffer.length)\n const last = buffer.length - 1\n for (let index = 0; index < last; index++) {\n shifted[index] = buffer[index] << 1\n if (buffer[index + 1] & 0x80) {\n shifted[index] += 0x01\n }\n }\n shifted[last] = buffer[last] << 1\n return shifted\n}\n\nexport const bitShiftRight = (buffer: Buffer) => {\n const shifted = Buffer.alloc(buffer.length)\n const last = buffer.length - 1\n for (let index = last; index > 0; index--) {\n shifted[index] = buffer[index] >> 1\n if (buffer[index - 1] & 0x01) {\n shifted[index] += 0x80\n }\n }\n shifted[0] = buffer[0] >> 1\n return shifted\n}\n"],"mappings":"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","names":["import_buffer"]}
1
+ {"version":3,"sources":["../../src/Quadkey.ts","../../src/RelativeDirectionConstantLookup.ts","../../src/utils.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { BigNumber } from '@xylabs/bignumber'\nimport { Buffer } from '@xylabs/buffer'\nimport {\n boundingBoxToCenter,\n GeoJson,\n MercatorBoundingBox,\n MercatorTile,\n tileFromPoint,\n tileFromQuadkey,\n tilesFromBoundingBox,\n tileToBoundingBox,\n tileToQuadkey,\n} from '@xyo-network/sdk-geo'\nimport { LngLat, LngLatLike } from 'mapbox-gl'\n\nimport { RelativeDirectionConstantLookup } from './RelativeDirectionConstantLookup'\nimport { bitShiftLeft, bitShiftRight, padHex } from './utils'\n\nexport * from './utils'\n\nconst MAX_ZOOM = 124\n\nexport const isQuadkey = (obj: { type: string }) => obj?.type === Quadkey.type\n\nexport class Quadkey {\n static Zero = Quadkey.from(0, Buffer.alloc(31, 0))\n static root = new Quadkey()\n static type = 'Quadkey'\n\n type = Quadkey.type\n\n private _geoJson?: GeoJson\n private key = Buffer.alloc(32)\n\n constructor(key = Buffer.alloc(32)) {\n key.copy(this.key, this.key.length - key.length)\n this.guessZoom()\n }\n\n get base10String() {\n return this.bigNumber.toString(10)\n }\n\n get base4Hash() {\n const bn = new BigNumber(this.id.toString('hex'), 16)\n const zoom = this.zoom\n if (zoom === 0) {\n return ''\n }\n let quadkeySimple = bn.toString(4)\n while (quadkeySimple.length < zoom) {\n quadkeySimple = `0${quadkeySimple}`\n }\n return quadkeySimple\n }\n\n get base4HashLabel() {\n const hash = this.base4Hash\n return hash.length === 0 ? 'fhr' : hash\n }\n\n get bigNumber() {\n return new BigNumber(`${this.key.toString('hex')}`, 'hex')\n }\n\n get boundingBox(): MercatorBoundingBox {\n return tileToBoundingBox(this.tile)\n }\n\n get buffer() {\n return this.key\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 = bitShiftLeft(bitShiftLeft(this.id))\n for (let i = 0; i < 4; i++) {\n const currentLastByte = shiftedId.readUInt8(shiftedId.length - 1)\n shiftedId.writeUInt8((currentLastByte & 0xfc) | i, shiftedId.length - 1)\n result.push(new Quadkey().setId(shiftedId).setZoom(this.zoom + 1))\n }\n return result\n }\n\n get gridLocation() {\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 hex() {\n return `0x${this.key.toString('hex')}`\n }\n\n get id() {\n return this.buffer.slice(1)\n }\n\n get parent(): Quadkey | undefined {\n if (this.zoom > 0) {\n return new Quadkey().setId(bitShiftRight(bitShiftRight(this.id))).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) => this.compareTo(quadkey) !== 0)\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 const zoom = this.zoom\n const shift = (MAX_ZOOM - zoom) * 2\n const id = this.id\n let testId = id\n for (let i = 0; i < shift; i++) {\n testId = bitShiftLeft(testId)\n }\n for (let i = 0; i < shift; i++) {\n testId = bitShiftRight(testId)\n }\n return testId.compare(id) === 0\n }\n\n get zoom() {\n return this.buffer.readUInt8(0)\n }\n\n static from(zoom: number, id: Buffer) {\n return new Quadkey().setId(id).setZoom(zoom)\n }\n\n static fromBase10String(value: string) {\n return new Quadkey(Buffer.from(padHex(new BigNumber(value, 10).toString(16)), 'hex'))\n }\n\n static fromBase16String(value: string) {\n const valueToUse = value.startsWith('0x') ? value.slice(2) : value\n return new Quadkey(Buffer.from(padHex(valueToUse), 'hex'))\n }\n\n static fromBase4String(value?: string) {\n if (value === 'fhr' || value === '') {\n return Quadkey.root\n }\n if (value && value.length && value.length > 0) {\n const quadkey = new Quadkey(Buffer.from(padHex(new BigNumber(value, 4).toString(16)), 'hex')).setZoom(value.length)\n return quadkey.valid ? quadkey : undefined\n }\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 fromBuffer(value: Buffer) {\n return Quadkey.fromBase16String(value.toString('hex'))\n }\n\n static fromLngLat(point: LngLatLike, zoom: number) {\n const tile = tileFromPoint(LngLat.convert(point), zoom)\n const quadkeyString = tileToQuadkey(tile)\n return Quadkey.fromBase4String(quadkeyString)\n }\n\n static fromString(zoom: number, id: string, base = 10) {\n switch (base) {\n case 10:\n return Quadkey.fromBase10String(id)?.setZoom(zoom)\n case 16:\n return Quadkey.fromBase16String(id).setZoom(zoom)\n default:\n throw Error(`Invalid base [${base}]`)\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 && 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.concat(quadkey.childrenByZoom(zoom))\n }\n return deepResult\n }\n\n clone() {\n return Quadkey.fromBase10String(this.base10String)\n }\n\n compareTo(quadkey: Quadkey) {\n return this.bigNumber.cmp(quadkey.bigNumber)\n }\n\n equals(obj: Quadkey): boolean {\n return obj.base4HashLabel == this.base4HashLabel\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 case '2':\n top += blockSize\n break\n case '3':\n left += blockSize\n top += blockSize\n break\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 = parseInt(quadkey.charAt(index))\n number += directionConstant\n if (number > 3) {\n number -= 4\n quadkey = quadkey.substring(0, index) + number.toString() + quadkey.substring(index + 1)\n index--\n } else if (number < 0) {\n number += 4\n quadkey = quadkey.substring(0, index) + number.toString() + quadkey.substring(index + 1)\n index--\n } else {\n index = -1\n }\n }\n return Quadkey.fromBase4String(quadkey)\n }\n\n setId(id: Buffer) {\n this.setKey(this.zoom, id)\n return this\n }\n\n setKey(zoom: number, id: Buffer) {\n id.copy(this.key, this.key.length - id.length)\n this.key.writeUInt8(zoom, 0)\n return this\n }\n\n setZoom(zoom: number) {\n assertEx(zoom < MAX_ZOOM, `Invalid zoom [${zoom}] max=${MAX_ZOOM}`)\n this.setKey(zoom, this.id)\n return this\n }\n\n /** @deprecated use .base10String*/\n toBase10String() {\n return this.base10String\n }\n\n /** @deprecated use .base4Hash */\n toBase4Hash() {\n return this.base4Hash\n }\n\n /** @deprecated use .base4HashLabel */\n toBase4HashLabel() {\n const hash = this.base4HashLabel\n return hash.length === 0 ? 'fhr' : hash\n }\n\n /** @deprecated use .bigNumber */\n toBigNumber() {\n return this.bigNumber\n }\n\n /** @deprecated use .boundingBox */\n toBoundingBox(): MercatorBoundingBox {\n return this.boundingBox\n }\n\n /** @deprecated use .buffer */\n toBuffer() {\n return this.buffer\n }\n\n /** @deprecated use .center */\n toCenter() {\n return this.center\n }\n\n /** @deprecated use .hex instead */\n toHex() {\n return this.hex\n }\n\n toJSON(): string {\n return this.base4HashLabel\n }\n\n toShortString() {\n const buffer = this.buffer\n const part1 = buffer.slice(0, 2)\n const part2 = buffer.slice(buffer.length - 2, buffer.length)\n return `${part1.toString('hex')}...${part2.toString('hex')}`\n }\n\n toString() {\n return `0x${padHex(this.bigNumber.toString(16))}`\n }\n\n /** @deprecated use .tile instead */\n toTile(): MercatorTile {\n return this.tile\n }\n\n protected guessZoom() {\n const bn = new BigNumber(this.id.toString('hex'), 16)\n const quadkeySimple = bn.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","import { Buffer } from '@xylabs/buffer'\n\nexport const padHex = (hex: string, byteCount?: number) => {\n let result = hex\n if (hex.length % 2 !== 0) {\n result = `0${hex}`\n }\n if (byteCount) {\n while (result.length / 2 < byteCount) {\n result = `00${result}`\n }\n }\n return result\n}\n\nexport const bitShiftLeft = (buffer: Buffer) => {\n const shifted = Buffer.alloc(buffer.length)\n const last = buffer.length - 1\n for (let index = 0; index < last; index++) {\n shifted[index] = buffer[index] << 1\n if (buffer[index + 1] & 0x80) {\n shifted[index] += 0x01\n }\n }\n shifted[last] = buffer[last] << 1\n return shifted\n}\n\nexport const bitShiftRight = (buffer: Buffer) => {\n const shifted = Buffer.alloc(buffer.length)\n const last = buffer.length - 1\n for (let index = last; index > 0; index--) {\n shifted[index] = buffer[index] >> 1\n if (buffer[index - 1] & 0x01) {\n shifted[index] += 0x80\n }\n }\n shifted[0] = buffer[0] >> 1\n return shifted\n}\n"],"mappings":"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","names":["Buffer","Buffer"]}
package/package.json CHANGED
@@ -10,9 +10,9 @@
10
10
  "url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/issues"
11
11
  },
12
12
  "dependencies": {
13
- "@xylabs/assert": "^2.13.3",
14
- "@xylabs/bignumber": "^2.13.3",
15
- "@xylabs/buffer": "^2.13.3",
13
+ "@xylabs/assert": "^2.13.8",
14
+ "@xylabs/bignumber": "^2.13.8",
15
+ "@xylabs/buffer": "^2.13.8",
16
16
  "@xyo-network/sdk-geo": "^2.10.1",
17
17
  "mapbox-gl": "^2.15.0"
18
18
  },
@@ -23,7 +23,6 @@
23
23
  "typescript": "^5.2.2"
24
24
  },
25
25
  "description": "Primary SDK for using XYO Protocol 2.0",
26
- "docs": "dist/docs.json",
27
26
  "exports": {
28
27
  ".": {
29
28
  "browser": {
@@ -38,19 +37,21 @@
38
37
  },
39
38
  "node": {
40
39
  "require": {
41
- "types": "./dist/node/index.d.ts",
42
- "default": "./dist/node/index.js"
40
+ "types": "./dist/node/index.d.cts",
41
+ "default": "./dist/node/index.cjs"
43
42
  },
44
43
  "import": {
45
44
  "types": "./dist/node/index.d.mts",
46
- "default": "./dist/node/index.mjs"
45
+ "default": "./dist/node/index.js"
47
46
  }
48
47
  }
49
48
  },
50
49
  "./package.json": "./package.json"
51
50
  },
52
- "main": "dist/node/index.js",
53
- "module": "dist/node/index.mjs",
51
+ "main": "dist/node/index.cjs",
52
+ "module": "dist/node/index.js",
53
+ "types": "dist/node/index.d.mts",
54
+ "type": "module",
54
55
  "homepage": "https://xyo.network",
55
56
  "license": "LGPL-3.0-only",
56
57
  "publishConfig": {
@@ -61,6 +62,5 @@
61
62
  "url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js.git"
62
63
  },
63
64
  "sideEffects": false,
64
- "types": "dist/node/index.d.ts",
65
- "version": "2.79.3"
65
+ "version": "2.79.5"
66
66
  }
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/Quadkey.ts","../../src/RelativeDirectionConstantLookup.ts","../../src/utils.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { BigNumber } from '@xylabs/bignumber'\nimport { Buffer } from '@xylabs/buffer'\nimport {\n boundingBoxToCenter,\n GeoJson,\n MercatorBoundingBox,\n MercatorTile,\n tileFromPoint,\n tileFromQuadkey,\n tilesFromBoundingBox,\n tileToBoundingBox,\n tileToQuadkey,\n} from '@xyo-network/sdk-geo'\nimport { LngLat, LngLatLike } from 'mapbox-gl'\n\nimport { RelativeDirectionConstantLookup } from './RelativeDirectionConstantLookup'\nimport { bitShiftLeft, bitShiftRight, padHex } from './utils'\n\nexport * from './utils'\n\nconst MAX_ZOOM = 124\n\nexport const isQuadkey = (obj: { type: string }) => obj?.type === Quadkey.type\n\nexport class Quadkey {\n static Zero = Quadkey.from(0, Buffer.alloc(31, 0))\n static root = new Quadkey()\n static type = 'Quadkey'\n\n type = Quadkey.type\n\n private _geoJson?: GeoJson\n private key = Buffer.alloc(32)\n\n constructor(key = Buffer.alloc(32)) {\n key.copy(this.key, this.key.length - key.length)\n this.guessZoom()\n }\n\n get base10String() {\n return this.bigNumber.toString(10)\n }\n\n get base4Hash() {\n const bn = new BigNumber(this.id.toString('hex'), 16)\n const zoom = this.zoom\n if (zoom === 0) {\n return ''\n }\n let quadkeySimple = bn.toString(4)\n while (quadkeySimple.length < zoom) {\n quadkeySimple = `0${quadkeySimple}`\n }\n return quadkeySimple\n }\n\n get base4HashLabel() {\n const hash = this.base4Hash\n return hash.length === 0 ? 'fhr' : hash\n }\n\n get bigNumber() {\n return new BigNumber(`${this.key.toString('hex')}`, 'hex')\n }\n\n get boundingBox(): MercatorBoundingBox {\n return tileToBoundingBox(this.tile)\n }\n\n get buffer() {\n return this.key\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 = bitShiftLeft(bitShiftLeft(this.id))\n for (let i = 0; i < 4; i++) {\n const currentLastByte = shiftedId.readUInt8(shiftedId.length - 1)\n shiftedId.writeUInt8((currentLastByte & 0xfc) | i, shiftedId.length - 1)\n result.push(new Quadkey().setId(shiftedId).setZoom(this.zoom + 1))\n }\n return result\n }\n\n get gridLocation() {\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 hex() {\n return `0x${this.key.toString('hex')}`\n }\n\n get id() {\n return this.buffer.slice(1)\n }\n\n get parent(): Quadkey | undefined {\n if (this.zoom > 0) {\n return new Quadkey().setId(bitShiftRight(bitShiftRight(this.id))).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) => this.compareTo(quadkey) !== 0)\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 const zoom = this.zoom\n const shift = (MAX_ZOOM - zoom) * 2\n const id = this.id\n let testId = id\n for (let i = 0; i < shift; i++) {\n testId = bitShiftLeft(testId)\n }\n for (let i = 0; i < shift; i++) {\n testId = bitShiftRight(testId)\n }\n return testId.compare(id) === 0\n }\n\n get zoom() {\n return this.buffer.readUInt8(0)\n }\n\n static from(zoom: number, id: Buffer) {\n return new Quadkey().setId(id).setZoom(zoom)\n }\n\n static fromBase10String(value: string) {\n return new Quadkey(Buffer.from(padHex(new BigNumber(value, 10).toString(16)), 'hex'))\n }\n\n static fromBase16String(value: string) {\n const valueToUse = value.startsWith('0x') ? value.slice(2) : value\n return new Quadkey(Buffer.from(padHex(valueToUse), 'hex'))\n }\n\n static fromBase4String(value?: string) {\n if (value === 'fhr' || value === '') {\n return Quadkey.root\n }\n if (value && value.length && value.length > 0) {\n const quadkey = new Quadkey(Buffer.from(padHex(new BigNumber(value, 4).toString(16)), 'hex')).setZoom(value.length)\n return quadkey.valid ? quadkey : undefined\n }\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 fromBuffer(value: Buffer) {\n return Quadkey.fromBase16String(value.toString('hex'))\n }\n\n static fromLngLat(point: LngLatLike, zoom: number) {\n const tile = tileFromPoint(LngLat.convert(point), zoom)\n const quadkeyString = tileToQuadkey(tile)\n return Quadkey.fromBase4String(quadkeyString)\n }\n\n static fromString(zoom: number, id: string, base = 10) {\n switch (base) {\n case 10:\n return Quadkey.fromBase10String(id)?.setZoom(zoom)\n case 16:\n return Quadkey.fromBase16String(id).setZoom(zoom)\n default:\n throw Error(`Invalid base [${base}]`)\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 && 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.concat(quadkey.childrenByZoom(zoom))\n }\n return deepResult\n }\n\n clone() {\n return Quadkey.fromBase10String(this.base10String)\n }\n\n compareTo(quadkey: Quadkey) {\n return this.bigNumber.cmp(quadkey.bigNumber)\n }\n\n equals(obj: Quadkey): boolean {\n return obj.base4HashLabel == this.base4HashLabel\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 case '2':\n top += blockSize\n break\n case '3':\n left += blockSize\n top += blockSize\n break\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 = parseInt(quadkey.charAt(index))\n number += directionConstant\n if (number > 3) {\n number -= 4\n quadkey = quadkey.substring(0, index) + number.toString() + quadkey.substring(index + 1)\n index--\n } else if (number < 0) {\n number += 4\n quadkey = quadkey.substring(0, index) + number.toString() + quadkey.substring(index + 1)\n index--\n } else {\n index = -1\n }\n }\n return Quadkey.fromBase4String(quadkey)\n }\n\n setId(id: Buffer) {\n this.setKey(this.zoom, id)\n return this\n }\n\n setKey(zoom: number, id: Buffer) {\n id.copy(this.key, this.key.length - id.length)\n this.key.writeUInt8(zoom, 0)\n return this\n }\n\n setZoom(zoom: number) {\n assertEx(zoom < MAX_ZOOM, `Invalid zoom [${zoom}] max=${MAX_ZOOM}`)\n this.setKey(zoom, this.id)\n return this\n }\n\n /** @deprecated use .base10String*/\n toBase10String() {\n return this.base10String\n }\n\n /** @deprecated use .base4Hash */\n toBase4Hash() {\n return this.base4Hash\n }\n\n /** @deprecated use .base4HashLabel */\n toBase4HashLabel() {\n const hash = this.base4HashLabel\n return hash.length === 0 ? 'fhr' : hash\n }\n\n /** @deprecated use .bigNumber */\n toBigNumber() {\n return this.bigNumber\n }\n\n /** @deprecated use .boundingBox */\n toBoundingBox(): MercatorBoundingBox {\n return this.boundingBox\n }\n\n /** @deprecated use .buffer */\n toBuffer() {\n return this.buffer\n }\n\n /** @deprecated use .center */\n toCenter() {\n return this.center\n }\n\n /** @deprecated use .hex instead */\n toHex() {\n return this.hex\n }\n\n toJSON(): string {\n return this.base4HashLabel\n }\n\n toShortString() {\n const buffer = this.buffer\n const part1 = buffer.slice(0, 2)\n const part2 = buffer.slice(buffer.length - 2, buffer.length)\n return `${part1.toString('hex')}...${part2.toString('hex')}`\n }\n\n toString() {\n return `0x${padHex(this.bigNumber.toString(16))}`\n }\n\n /** @deprecated use .tile instead */\n toTile(): MercatorTile {\n return this.tile\n }\n\n protected guessZoom() {\n const bn = new BigNumber(this.id.toString('hex'), 16)\n const quadkeySimple = bn.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","import { Buffer } from '@xylabs/buffer'\n\nexport const padHex = (hex: string, byteCount?: number) => {\n let result = hex\n if (hex.length % 2 !== 0) {\n result = `0${hex}`\n }\n if (byteCount) {\n while (result.length / 2 < byteCount) {\n result = `00${result}`\n }\n }\n return result\n}\n\nexport const bitShiftLeft = (buffer: Buffer) => {\n const shifted = Buffer.alloc(buffer.length)\n const last = buffer.length - 1\n for (let index = 0; index < last; index++) {\n shifted[index] = buffer[index] << 1\n if (buffer[index + 1] & 0x80) {\n shifted[index] += 0x01\n }\n }\n shifted[last] = buffer[last] << 1\n return shifted\n}\n\nexport const bitShiftRight = (buffer: Buffer) => {\n const shifted = Buffer.alloc(buffer.length)\n const last = buffer.length - 1\n for (let index = last; index > 0; index--) {\n shifted[index] = buffer[index] >> 1\n if (buffer[index - 1] & 0x01) {\n shifted[index] += 0x80\n }\n }\n shifted[0] = buffer[0] >> 1\n return shifted\n}\n"],"mappings":"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","names":["Buffer","Buffer"]}