@map-colonies/mc-utils 3.1.0 → 3.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/README.md +67 -67
  2. package/dist/arrays/index.d.ts +1 -1
  3. package/dist/arrays/index.js +17 -17
  4. package/dist/arrays/subGroups.d.ts +8 -8
  5. package/dist/arrays/subGroups.js +33 -33
  6. package/dist/communication/http/httpClient.d.ts +29 -29
  7. package/dist/communication/http/httpClient.d.ts.map +1 -1
  8. package/dist/communication/http/httpClient.js +353 -317
  9. package/dist/communication/http/httpClient.js.map +1 -1
  10. package/dist/communication/http/index.d.ts +1 -1
  11. package/dist/communication/http/index.js +17 -17
  12. package/dist/communication/index.d.ts +1 -1
  13. package/dist/communication/index.js +17 -17
  14. package/dist/dateTime/getUTCDate.d.ts +1 -1
  15. package/dist/dateTime/getUTCDate.js +10 -10
  16. package/dist/dateTime/index.d.ts +1 -1
  17. package/dist/dateTime/index.js +17 -17
  18. package/dist/geo/bboxUtils.d.ts +23 -23
  19. package/dist/geo/bboxUtils.js +89 -89
  20. package/dist/geo/geoConvertor.d.ts +18 -18
  21. package/dist/geo/geoConvertor.js +49 -49
  22. package/dist/geo/geoHash.d.ts +24 -24
  23. package/dist/geo/geoHash.js +134 -134
  24. package/dist/geo/geoIntersection.d.ts +19 -19
  25. package/dist/geo/geoIntersection.js +70 -70
  26. package/dist/geo/index.d.ts +8 -8
  27. package/dist/geo/index.js +24 -24
  28. package/dist/geo/tileBatcher.d.ts +8 -8
  29. package/dist/geo/tileBatcher.js +97 -97
  30. package/dist/geo/tileRanger.d.ts +46 -46
  31. package/dist/geo/tileRanger.js +232 -232
  32. package/dist/geo/tiles.d.ts +82 -82
  33. package/dist/geo/tiles.js +219 -219
  34. package/dist/geo/tilesGenerator.d.ts +2 -2
  35. package/dist/geo/tilesGenerator.js +17 -17
  36. package/dist/index.d.ts +6 -6
  37. package/dist/index.js +22 -22
  38. package/dist/models/enums/gdal/dataType.d.ts +16 -16
  39. package/dist/models/enums/gdal/dataType.js +20 -20
  40. package/dist/models/enums/gdal/index.d.ts +2 -2
  41. package/dist/models/enums/gdal/index.js +18 -18
  42. package/dist/models/enums/gdal/resamplingMethod.d.ts +16 -16
  43. package/dist/models/enums/gdal/resamplingMethod.js +20 -20
  44. package/dist/models/enums/geo/index.d.ts +1 -1
  45. package/dist/models/enums/geo/index.js +17 -17
  46. package/dist/models/enums/geo/tileOrigin.d.ts +7 -7
  47. package/dist/models/enums/geo/tileOrigin.js +11 -11
  48. package/dist/models/enums/index.d.ts +2 -2
  49. package/dist/models/enums/index.js +18 -18
  50. package/dist/models/index.d.ts +2 -2
  51. package/dist/models/index.js +18 -18
  52. package/dist/models/interfaces/geo/iPoint.d.ts +7 -7
  53. package/dist/models/interfaces/geo/iPoint.js +2 -2
  54. package/dist/models/interfaces/geo/iTile.d.ts +15 -15
  55. package/dist/models/interfaces/geo/iTile.js +2 -2
  56. package/dist/models/interfaces/geo/index.d.ts +2 -2
  57. package/dist/models/interfaces/geo/index.js +18 -18
  58. package/dist/models/interfaces/index.d.ts +1 -1
  59. package/dist/models/interfaces/index.js +17 -17
  60. package/dist/utils/index.d.ts +1 -1
  61. package/dist/utils/index.js +17 -17
  62. package/dist/utils/timeout.d.ts +4 -4
  63. package/dist/utils/timeout.js +22 -22
  64. package/package.json +79 -79
@@ -1,98 +1,98 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.tileBatchGenerator = void 0;
4
- const timeout_1 = require("../utils/timeout");
5
- /**
6
- * split collection of tile ranges to batches based on tile count
7
- * @param batchSize amount of tile per batch
8
- * @param ranges iterable collection of tile ranges
9
- */
10
- async function* tileBatchGenerator(batchSize, ranges) {
11
- let targetRanges = [];
12
- let requiredForFullBatch = batchSize;
13
- for await (const range of ranges) {
14
- const dx = range.maxX - range.minX;
15
- let dy = range.maxY - range.minY;
16
- if (dx === 0 || dy === 0) {
17
- continue;
18
- }
19
- let reminderX = range.maxX;
20
- while (range.minY < range.maxY) {
21
- //remaining tiles in batch row row
22
- if (reminderX < range.maxX) {
23
- const remaining = range.maxX - reminderX;
24
- if (remaining > requiredForFullBatch) {
25
- targetRanges.push({
26
- minX: reminderX,
27
- maxX: reminderX + requiredForFullBatch,
28
- minY: range.minY,
29
- maxY: range.minY + 1,
30
- zoom: range.zoom,
31
- });
32
- yield await Promise.resolve(targetRanges);
33
- reminderX += requiredForFullBatch;
34
- targetRanges = [];
35
- requiredForFullBatch = batchSize;
36
- continue;
37
- }
38
- else {
39
- targetRanges.push({
40
- minX: reminderX,
41
- maxX: reminderX + remaining,
42
- minY: range.minY,
43
- maxY: range.minY + 1,
44
- zoom: range.zoom,
45
- });
46
- range.minY++;
47
- reminderX += remaining;
48
- requiredForFullBatch -= remaining;
49
- dy--;
50
- }
51
- }
52
- //add max full lines
53
- const requiredLines = Math.floor(requiredForFullBatch / dx);
54
- const yRange = Math.min(requiredLines, dy);
55
- if (yRange > 0) {
56
- targetRanges.push({
57
- minX: range.minX,
58
- maxX: range.maxX,
59
- minY: range.minY,
60
- maxY: range.minY + yRange,
61
- zoom: range.zoom,
62
- });
63
- range.minY += yRange;
64
- dy -= yRange;
65
- requiredForFullBatch -= yRange * dx;
66
- }
67
- //add partial lines beginning
68
- if (requiredForFullBatch > 0 && range.minY < range.maxY) {
69
- const endX = Math.min(range.minX + requiredForFullBatch, range.maxX);
70
- targetRanges.push({
71
- minX: range.minX,
72
- maxX: endX,
73
- minY: range.minY,
74
- maxY: range.minY + 1,
75
- zoom: range.zoom,
76
- });
77
- requiredForFullBatch -= endX - range.minX;
78
- if (endX < range.maxX) {
79
- reminderX = endX;
80
- }
81
- else {
82
- range.minY++;
83
- }
84
- }
85
- if (requiredForFullBatch === 0) {
86
- yield await Promise.resolve(targetRanges);
87
- targetRanges = [];
88
- requiredForFullBatch = batchSize;
89
- }
90
- }
91
- await (0, timeout_1.timeout)(0); // TODO: * This is a hot fix to keep work async and handle concurrency requests while handling the task batch merging, remove this when moving to the new utils package ! *
92
- }
93
- if (targetRanges.length > 0) {
94
- yield await Promise.resolve(targetRanges);
95
- }
96
- }
97
- exports.tileBatchGenerator = tileBatchGenerator;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.tileBatchGenerator = void 0;
4
+ const timeout_1 = require("../utils/timeout");
5
+ /**
6
+ * split collection of tile ranges to batches based on tile count
7
+ * @param batchSize amount of tile per batch
8
+ * @param ranges iterable collection of tile ranges
9
+ */
10
+ async function* tileBatchGenerator(batchSize, ranges) {
11
+ let targetRanges = [];
12
+ let requiredForFullBatch = batchSize;
13
+ for await (const range of ranges) {
14
+ const dx = range.maxX - range.minX;
15
+ let dy = range.maxY - range.minY;
16
+ if (dx === 0 || dy === 0) {
17
+ continue;
18
+ }
19
+ let reminderX = range.maxX;
20
+ while (range.minY < range.maxY) {
21
+ //remaining tiles in batch row row
22
+ if (reminderX < range.maxX) {
23
+ const remaining = range.maxX - reminderX;
24
+ if (remaining > requiredForFullBatch) {
25
+ targetRanges.push({
26
+ minX: reminderX,
27
+ maxX: reminderX + requiredForFullBatch,
28
+ minY: range.minY,
29
+ maxY: range.minY + 1,
30
+ zoom: range.zoom,
31
+ });
32
+ yield await Promise.resolve(targetRanges);
33
+ reminderX += requiredForFullBatch;
34
+ targetRanges = [];
35
+ requiredForFullBatch = batchSize;
36
+ continue;
37
+ }
38
+ else {
39
+ targetRanges.push({
40
+ minX: reminderX,
41
+ maxX: reminderX + remaining,
42
+ minY: range.minY,
43
+ maxY: range.minY + 1,
44
+ zoom: range.zoom,
45
+ });
46
+ range.minY++;
47
+ reminderX += remaining;
48
+ requiredForFullBatch -= remaining;
49
+ dy--;
50
+ }
51
+ }
52
+ //add max full lines
53
+ const requiredLines = Math.floor(requiredForFullBatch / dx);
54
+ const yRange = Math.min(requiredLines, dy);
55
+ if (yRange > 0) {
56
+ targetRanges.push({
57
+ minX: range.minX,
58
+ maxX: range.maxX,
59
+ minY: range.minY,
60
+ maxY: range.minY + yRange,
61
+ zoom: range.zoom,
62
+ });
63
+ range.minY += yRange;
64
+ dy -= yRange;
65
+ requiredForFullBatch -= yRange * dx;
66
+ }
67
+ //add partial lines beginning
68
+ if (requiredForFullBatch > 0 && range.minY < range.maxY) {
69
+ const endX = Math.min(range.minX + requiredForFullBatch, range.maxX);
70
+ targetRanges.push({
71
+ minX: range.minX,
72
+ maxX: endX,
73
+ minY: range.minY,
74
+ maxY: range.minY + 1,
75
+ zoom: range.zoom,
76
+ });
77
+ requiredForFullBatch -= endX - range.minX;
78
+ if (endX < range.maxX) {
79
+ reminderX = endX;
80
+ }
81
+ else {
82
+ range.minY++;
83
+ }
84
+ }
85
+ if (requiredForFullBatch === 0) {
86
+ yield await Promise.resolve(targetRanges);
87
+ targetRanges = [];
88
+ requiredForFullBatch = batchSize;
89
+ }
90
+ }
91
+ await (0, timeout_1.timeout)(0); // TODO: * This is a hot fix to keep work async and handle concurrency requests while handling the task batch merging, remove this when moving to the new utils package ! *
92
+ }
93
+ if (targetRanges.length > 0) {
94
+ yield await Promise.resolve(targetRanges);
95
+ }
96
+ }
97
+ exports.tileBatchGenerator = tileBatchGenerator;
98
98
  //# sourceMappingURL=tileBatcher.js.map
@@ -1,47 +1,47 @@
1
- import { BBox2d } from '@turf/helpers/dist/js/lib/geojson';
2
- import { Feature, MultiPolygon, Polygon } from '@turf/turf';
3
- import { ITile, ITileRange } from '../models/interfaces/geo/iTile';
4
- /**
5
- * class for generating and decoding tile hashes
6
- */
7
- export declare class TileRanger {
8
- /**
9
- * converts tile to tile range of specified zoom level
10
- * @param tile
11
- * @param zoom target tile range zoom
12
- * @returns
13
- */
14
- tileToRange(tile: ITile, zoom: number): ITileRange;
15
- /**
16
- * generate tile hashes
17
- * @param footprint footprint to cover with generated tile hashes
18
- * @param zoom max hash zoom
19
- * @returns
20
- */
21
- encodeFootprint(footprint: Polygon | Feature<Polygon | MultiPolygon>, zoom: number, verbose?: boolean): AsyncGenerator<ITileRange>;
22
- /**
23
- * generate tile
24
- * @param bbox bbox to cover with generated tiles
25
- * @param zoom target tiles zoom level
26
- */
27
- generateTiles(bbox: BBox2d, zoom: number): AsyncGenerator<ITile>;
28
- /**
29
- * generate tile
30
- * @param footprint footprint to cover with generated tiles
31
- * @param zoom target tiles zoom level
32
- */
33
- generateTiles(footprint: Polygon | Feature<Polygon | MultiPolygon>, zoom: number): AsyncGenerator<ITile>;
34
- private generateRanges;
35
- /**
36
- * generate tile
37
- * @param tile tile to get all intersecting tiles from
38
- * @param targetZoom target tiles zoom level
39
- * @param intersectionTarget original zoom level and footprint to intersect
40
- * @param intersectionFunction the intersection function to be called
41
- */
42
- private optimizeHash;
43
- private generateSubTiles;
44
- private readonly tileFootprintIntersection;
45
- private isBbox;
46
- }
1
+ import { BBox2d } from '@turf/helpers/dist/js/lib/geojson';
2
+ import { Feature, MultiPolygon, Polygon } from '@turf/turf';
3
+ import { ITile, ITileRange } from '../models/interfaces/geo/iTile';
4
+ /**
5
+ * class for generating and decoding tile hashes
6
+ */
7
+ export declare class TileRanger {
8
+ /**
9
+ * converts tile to tile range of specified zoom level
10
+ * @param tile
11
+ * @param zoom target tile range zoom
12
+ * @returns
13
+ */
14
+ tileToRange(tile: ITile, zoom: number): ITileRange;
15
+ /**
16
+ * generate tile hashes
17
+ * @param footprint footprint to cover with generated tile hashes
18
+ * @param zoom max hash zoom
19
+ * @returns
20
+ */
21
+ encodeFootprint(footprint: Polygon | Feature<Polygon | MultiPolygon>, zoom: number, verbose?: boolean): AsyncGenerator<ITileRange>;
22
+ /**
23
+ * generate tile
24
+ * @param bbox bbox to cover with generated tiles
25
+ * @param zoom target tiles zoom level
26
+ */
27
+ generateTiles(bbox: BBox2d, zoom: number): AsyncGenerator<ITile>;
28
+ /**
29
+ * generate tile
30
+ * @param footprint footprint to cover with generated tiles
31
+ * @param zoom target tiles zoom level
32
+ */
33
+ generateTiles(footprint: Polygon | Feature<Polygon | MultiPolygon>, zoom: number): AsyncGenerator<ITile>;
34
+ private generateRanges;
35
+ /**
36
+ * generate tile
37
+ * @param tile tile to get all intersecting tiles from
38
+ * @param targetZoom target tiles zoom level
39
+ * @param intersectionTarget original zoom level and footprint to intersect
40
+ * @param intersectionFunction the intersection function to be called
41
+ */
42
+ private optimizeHash;
43
+ private generateSubTiles;
44
+ private readonly tileFootprintIntersection;
45
+ private isBbox;
46
+ }
47
47
  //# sourceMappingURL=tileRanger.d.ts.map