@basemaps/cli 6.34.0 → 6.36.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 (65) hide show
  1. package/CHANGELOG.md +48 -0
  2. package/README.md +12 -0
  3. package/build/cli/cogify/action.cog.d.ts +1 -0
  4. package/build/cli/cogify/action.cog.d.ts.map +1 -1
  5. package/build/cli/cogify/action.cog.js +29 -17
  6. package/build/cli/cogify/action.cog.js.map +1 -1
  7. package/build/cli/cogify/action.make.cog.d.ts +22 -0
  8. package/build/cli/cogify/action.make.cog.d.ts.map +1 -0
  9. package/build/cli/cogify/action.make.cog.js +191 -0
  10. package/build/cli/cogify/action.make.cog.js.map +1 -0
  11. package/build/cli/cogify/cutline.d.ts +5 -0
  12. package/build/cli/cogify/cutline.d.ts.map +1 -0
  13. package/build/cli/cogify/cutline.js +33 -0
  14. package/build/cli/cogify/cutline.js.map +1 -0
  15. package/build/cli/cogify/imagery.config.d.ts +3 -2
  16. package/build/cli/cogify/imagery.config.d.ts.map +1 -1
  17. package/build/cli/cogify/imagery.config.js +10 -10
  18. package/build/cli/cogify/imagery.config.js.map +1 -1
  19. package/build/cli/config/action.cog.mapsheet.d.ts +10 -0
  20. package/build/cli/config/action.cog.mapsheet.d.ts.map +1 -0
  21. package/build/cli/config/action.cog.mapsheet.js +89 -0
  22. package/build/cli/config/action.cog.mapsheet.js.map +1 -0
  23. package/build/cli/config/action.imagery.config.d.ts +1 -1
  24. package/build/cli/config/action.imagery.config.d.ts.map +1 -1
  25. package/build/cli/config/action.imagery.config.js +33 -21
  26. package/build/cli/config/action.imagery.config.js.map +1 -1
  27. package/build/cli/config/action.import.d.ts +14 -1
  28. package/build/cli/config/action.import.d.ts.map +1 -1
  29. package/build/cli/config/action.import.js +105 -10
  30. package/build/cli/config/action.import.js.map +1 -1
  31. package/build/cli/config/config.update.d.ts +3 -2
  32. package/build/cli/config/config.update.d.ts.map +1 -1
  33. package/build/cli/config/config.update.js +9 -7
  34. package/build/cli/config/config.update.js.map +1 -1
  35. package/build/cli/index.d.ts.map +1 -1
  36. package/build/cli/index.js +4 -4
  37. package/build/cli/index.js.map +1 -1
  38. package/build/cli/server/action.serve.d.ts.map +1 -1
  39. package/build/cli/server/action.serve.js +2 -8
  40. package/build/cli/server/action.serve.js.map +1 -1
  41. package/package.json +8 -8
  42. package/build/cli/aws/__tests__/action.aws.test.d.ts +0 -2
  43. package/build/cli/aws/__tests__/action.aws.test.d.ts.map +0 -1
  44. package/build/cli/aws/__tests__/action.aws.test.js +0 -78
  45. package/build/cli/aws/__tests__/action.aws.test.js.map +0 -1
  46. package/build/cli/aws/__tests__/size.test.d.ts +0 -2
  47. package/build/cli/aws/__tests__/size.test.d.ts.map +0 -1
  48. package/build/cli/aws/__tests__/size.test.js +0 -51
  49. package/build/cli/aws/__tests__/size.test.js.map +0 -1
  50. package/build/cli/aws/action.aws.list.d.ts +0 -22
  51. package/build/cli/aws/action.aws.list.d.ts.map +0 -1
  52. package/build/cli/aws/action.aws.list.js +0 -116
  53. package/build/cli/aws/action.aws.list.js.map +0 -1
  54. package/build/cli/aws/sizes.d.ts +0 -8
  55. package/build/cli/aws/sizes.d.ts.map +0 -1
  56. package/build/cli/aws/sizes.js +0 -30
  57. package/build/cli/aws/sizes.js.map +0 -1
  58. package/build/cli/screenshot/action.screenshot.d.ts +0 -19
  59. package/build/cli/screenshot/action.screenshot.d.ts.map +0 -1
  60. package/build/cli/screenshot/action.screenshot.js +0 -115
  61. package/build/cli/screenshot/action.screenshot.js.map +0 -1
  62. package/build/cli/screenshot/test.tiles.d.ts +0 -48
  63. package/build/cli/screenshot/test.tiles.d.ts.map +0 -1
  64. package/build/cli/screenshot/test.tiles.js +0 -115
  65. package/build/cli/screenshot/test.tiles.js.map +0 -1
@@ -38,14 +38,8 @@ export class CommandServe extends CommandLineAction {
38
38
  const ServerUrl = (_b = Env.get(Env.PublicUrlBase)) !== null && _b !== void 0 ? _b : `http://localhost:${port}`;
39
39
  process.env[Env.PublicUrlBase] = ServerUrl;
40
40
  const server = await createServer({ config, assets }, logger);
41
- await new Promise((resolve, reject) => {
42
- server.listen(port !== null && port !== void 0 ? port : DefaultPort, '0.0.0.0', (err) => {
43
- if (err)
44
- reject(err);
45
- logger.info({ url: ServerUrl }, 'ServerStarted');
46
- resolve();
47
- });
48
- });
41
+ await server.listen({ port: port !== null && port !== void 0 ? port : DefaultPort, host: '0.0.0.0' });
42
+ logger.info({ url: ServerUrl }, 'ServerStarted');
49
43
  }
50
44
  }
51
45
  //# sourceMappingURL=action.serve.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"action.serve.js","sourceRoot":"","sources":["../../../src/cli/server/action.serve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAA2D,MAAM,4BAA4B,CAAC;AAExH,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAEzD,MAAM,WAAW,GAAG,IAAI,CAAC;AAEzB,MAAM,OAAO,YAAa,SAAQ,iBAAiB;IAKjD;QACE,KAAK,CAAC;YACJ,UAAU,EAAE,OAAO;YACnB,OAAO,EAAE,iCAAiC;YAC1C,aAAa,EAAE,gDAAgD;SAChE,CAAC,CAAC;IACL,CAAC;IAES,kBAAkB;QAC1B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,qBAAqB,CAAC;YACvC,YAAY,EAAE,QAAQ;YACtB,iBAAiB,EAAE,UAAU;YAC7B,WAAW,EAAE,6BAA6B;SAC3C,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,qBAAqB,CAAC;YACvC,YAAY,EAAE,QAAQ;YACtB,iBAAiB,EAAE,UAAU;YAC7B,WAAW,EAAE,+CAA+C;SAC7D,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,sBAAsB,CAAC;YACtC,YAAY,EAAE,MAAM;YACpB,iBAAiB,EAAE,QAAQ;YAC3B,WAAW,EAAE,aAAa;YAC1B,YAAY,EAAE,WAAW;SAC1B,CAAC,CAAC;IACL,CAAC;IAES,KAAK,CAAC,SAAS;;QACvB,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,EAAE,CAAC;QAE/B,MAAM,MAAM,GAAG,MAAA,IAAI,CAAC,MAAM,CAAC,KAAK,mCAAI,aAAa,GAAG,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC;QACjF,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;QAEjC,oEAAoE;QACpE,MAAM,SAAS,GAAG,MAAA,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,mCAAI,oBAAoB,IAAI,EAAE,CAAC;QAC3E,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,SAAS,CAAC;QAE3C,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,MAAM,CAAC,CAAC;QAC9D,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1C,MAAM,CAAC,MAAM,CAAC,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,WAAW,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE;gBACpD,IAAI,GAAG;oBAAE,MAAM,CAAC,GAAG,CAAC,CAAC;gBACrB,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,eAAe,CAAC,CAAC;gBACjD,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
1
+ {"version":3,"file":"action.serve.js","sourceRoot":"","sources":["../../../src/cli/server/action.serve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAA2D,MAAM,4BAA4B,CAAC;AAExH,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAEzD,MAAM,WAAW,GAAG,IAAI,CAAC;AAEzB,MAAM,OAAO,YAAa,SAAQ,iBAAiB;IAKjD;QACE,KAAK,CAAC;YACJ,UAAU,EAAE,OAAO;YACnB,OAAO,EAAE,iCAAiC;YAC1C,aAAa,EAAE,gDAAgD;SAChE,CAAC,CAAC;IACL,CAAC;IAES,kBAAkB;QAC1B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,qBAAqB,CAAC;YACvC,YAAY,EAAE,QAAQ;YACtB,iBAAiB,EAAE,UAAU;YAC7B,WAAW,EAAE,6BAA6B;SAC3C,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,qBAAqB,CAAC;YACvC,YAAY,EAAE,QAAQ;YACtB,iBAAiB,EAAE,UAAU;YAC7B,WAAW,EAAE,+CAA+C;SAC7D,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,sBAAsB,CAAC;YACtC,YAAY,EAAE,MAAM;YACpB,iBAAiB,EAAE,QAAQ;YAC3B,WAAW,EAAE,aAAa;YAC1B,YAAY,EAAE,WAAW;SAC1B,CAAC,CAAC;IACL,CAAC;IAES,KAAK,CAAC,SAAS;;QACvB,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,EAAE,CAAC;QAE/B,MAAM,MAAM,GAAG,MAAA,IAAI,CAAC,MAAM,CAAC,KAAK,mCAAI,aAAa,GAAG,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC;QACjF,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;QAEjC,oEAAoE;QACpE,MAAM,SAAS,GAAG,MAAA,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,mCAAI,oBAAoB,IAAI,EAAE,CAAC;QAC3E,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,SAAS,CAAC;QAE3C,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,MAAM,CAAC,CAAC;QAC9D,MAAM,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QACpE,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,eAAe,CAAC,CAAC;IACnD,CAAC;CACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@basemaps/cli",
3
- "version": "6.34.0",
3
+ "version": "6.36.0",
4
4
  "private": false,
5
5
  "repository": {
6
6
  "type": "git",
@@ -38,12 +38,13 @@
38
38
  "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
39
39
  },
40
40
  "dependencies": {
41
- "@basemaps/config": "^6.34.0",
41
+ "@basemaps/config": "^6.36.0",
42
42
  "@basemaps/geo": "^6.32.1",
43
- "@basemaps/server": "^6.34.0",
44
- "@basemaps/shared": "^6.34.0",
43
+ "@basemaps/server": "^6.36.0",
44
+ "@basemaps/shared": "^6.36.0",
45
45
  "@basemaps/sprites": "^6.32.1",
46
- "@chunkd/fs": "^8.4.0",
46
+ "@chunkd/fs": "^8.5.1",
47
+ "@chunkd/source-aws-v2": "^8.5.1",
47
48
  "@cogeotiff/core": "^7.0.0",
48
49
  "@cotar/core": "^5.4.0",
49
50
  "@cotar/tar": "^5.4.1",
@@ -51,16 +52,15 @@
51
52
  "@rushstack/ts-command-line": "^4.3.13",
52
53
  "ansi-colors": "^4.1.1",
53
54
  "deep-diff": "^1.0.2",
55
+ "flatgeobuf": "^3.23.1",
54
56
  "get-port": "^6.1.2",
55
57
  "node-fetch": "^3.2.3",
56
58
  "p-limit": "^4.0.0",
57
- "playwright": "^1.22.2",
58
59
  "pretty-json-log": "^1.0.0",
59
60
  "zod": "^3.17.3"
60
61
  },
61
62
  "devDependencies": {
62
63
  "@types/deep-diff": "^1.0.1",
63
- "@types/geojson": "^7946.0.7",
64
64
  "@types/proj4": "^2.5.2"
65
65
  },
66
66
  "publishConfig": {
@@ -69,5 +69,5 @@
69
69
  "files": [
70
70
  "build/"
71
71
  ],
72
- "gitHead": "1685fa12be66df74bc64d7f76b7355390980a43f"
72
+ "gitHead": "c232694ad1f1186b7b56a8af1def56ef165df8fd"
73
73
  }
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=action.aws.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"action.aws.test.d.ts","sourceRoot":"","sources":["../../../../src/cli/aws/__tests__/action.aws.test.ts"],"names":[],"mappings":""}
@@ -1,78 +0,0 @@
1
- import { fsa } from '@chunkd/fs';
2
- import o from 'ospec';
3
- import { asyncFilter, chunkFiles } from '../action.aws.list.js';
4
- o.spec('chunkFiles', () => {
5
- o('should chunk a array', () => {
6
- o(chunkFiles([{ path: '1' }, { path: '2' }, { path: '3' }, { path: '4' }], 2, -1)).deepEquals([
7
- ['1', '2'],
8
- ['3', '4'],
9
- ]);
10
- });
11
- o('should chunk small set', () => {
12
- o(chunkFiles([{ path: '1' }], 2, -1)).deepEquals([['1']]);
13
- });
14
- o('should chunk large set', () => {
15
- o(chunkFiles([{ path: '1' }, { path: '2' }, { path: '3' }, { path: '4' }], 5, -1)).deepEquals([
16
- ['1', '2', '3', '4'],
17
- ]);
18
- });
19
- o('should chunk into single sets', () => {
20
- o(chunkFiles([{ path: '1' }, { path: '2' }, { path: '3' }, { path: '4' }], 1, -1)).deepEquals([
21
- ['1'],
22
- ['2'],
23
- ['3'],
24
- ['4'],
25
- ]);
26
- });
27
- o('should chunk by size', () => {
28
- o(chunkFiles([
29
- { path: '1', size: 100 },
30
- { path: '2', size: 200 },
31
- { path: '3', size: 300 },
32
- { path: '4', size: 400 },
33
- ], -1, 300)).deepEquals([['1', '2'], ['3'], ['4']]);
34
- });
35
- o('should chunk by size or count which ever comes first', () => {
36
- o(chunkFiles([
37
- { path: '1', size: 100 },
38
- { path: '2', size: 100 },
39
- { path: '3', size: 100 },
40
- { path: '4', size: 100 },
41
- { path: '5', size: 600 },
42
- { path: '6', size: 600 },
43
- ], 2, 500)).deepEquals([['1', '2'], ['3', '4'], ['5'], ['6']]);
44
- });
45
- });
46
- o.spec('asyncFilter', () => {
47
- const fileList = [
48
- { path: 'a.tiff' },
49
- { path: 'B.TIFF' },
50
- { path: '/foo/bar/baz.tiff' },
51
- { path: '/foo/xls.ts' },
52
- { path: 'c:\\foo\\bar.txt' },
53
- { path: 's3://foo/bar.tiff' },
54
- { path: 's3://foo/bar.ts' },
55
- { path: 's3://foo/bar/baz.tif' },
56
- ];
57
- async function* generator() {
58
- for (const file of fileList)
59
- yield file;
60
- }
61
- o('should filter all', async () => {
62
- o(await fsa.toArray(asyncFilter(generator(), '*'))).deepEquals(fileList);
63
- });
64
- o('should filter exact', async () => {
65
- for (const file of fileList) {
66
- if (file.path.startsWith('c:\\'))
67
- continue; // not a valid regexp
68
- o(await fsa.toArray(asyncFilter(generator(), file.path))).deepEquals([file]);
69
- }
70
- });
71
- o('should filter suffix', async () => {
72
- o(await fsa.toArray(asyncFilter(generator(), '.tiff$'))).deepEquals(fileList.filter((f) => f.path.toLowerCase().endsWith('.tiff')));
73
- });
74
- o('should filter tif or tiff', async () => {
75
- o(await fsa.toArray(asyncFilter(generator(), '.tiff?$'))).deepEquals(fileList.filter((f) => f.path.toLowerCase().endsWith('.tiff') || f.path.toLowerCase().endsWith('.tif')));
76
- });
77
- });
78
- //# sourceMappingURL=action.aws.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"action.aws.test.js","sourceRoot":"","sources":["../../../../src/cli/aws/__tests__/action.aws.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=size.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"size.test.d.ts","sourceRoot":"","sources":["../../../../src/cli/aws/__tests__/size.test.ts"],"names":[],"mappings":""}
@@ -1,51 +0,0 @@
1
- import o from 'ospec';
2
- import { parseSize } from '../sizes.js';
3
- o.spec('parseSize', () => {
4
- o('should parse bytes', () => {
5
- o(parseSize('1')).equals(1);
6
- o(parseSize('1KB')).equals(1024);
7
- o(parseSize('1MB')).equals(1024 * 1024);
8
- o(parseSize('1GB')).equals(1024 * 1024 * 1024);
9
- o(parseSize('1TB')).equals(1024 * 1024 * 1024 * 1024);
10
- });
11
- o('should parse negative bytes', () => {
12
- o(parseSize('-1.2 ')).equals(-1);
13
- o(parseSize('-1.2 KB')).equals(Math.round(-1.2 * 1024));
14
- o(parseSize('-1.2 MB')).equals(Math.round(-1.2 * 1024 * 1024));
15
- o(parseSize('-1.2 GB')).equals(Math.round(-1.2 * 1024 * 1024 * 1024));
16
- o(parseSize('-1.2 TB')).equals(Math.round(-1.2 * 1024 * 1024 * 1024 * 1024));
17
- });
18
- o('should parse partial bytes', () => {
19
- o(parseSize('1.2 ')).equals(1);
20
- o(parseSize('1.2 KB')).equals(Math.round(1.2 * 1024));
21
- o(parseSize('1.2 MB')).equals(Math.round(1.2 * 1024 * 1024));
22
- o(parseSize('1.2 GB')).equals(Math.round(1.2 * 1024 * 1024 * 1024));
23
- o(parseSize('1.2 TB')).equals(Math.round(1.2 * 1024 * 1024 * 1024 * 1024));
24
- });
25
- o('should parse metric', () => {
26
- o(parseSize('1Ki')).equals(1000);
27
- o(parseSize('1Mi')).equals(1000 * 1000);
28
- o(parseSize('1Gi')).equals(1000 * 1000 * 1000);
29
- o(parseSize('1Ti')).equals(1000 * 1000 * 1000 * 1000);
30
- });
31
- o('should parse partial metric', () => {
32
- o(parseSize('1.2 Ki')).equals(1.2 * 1000);
33
- o(parseSize('1.2 Mi')).equals(1.2 * 1000 * 1000);
34
- o(parseSize('1.2 Gi')).equals(1.2 * 1000 * 1000 * 1000);
35
- o(parseSize('1.2 Ti')).equals(1.2 * 1000 * 1000 * 1000 * 1000);
36
- });
37
- o('should parse negative metric', () => {
38
- o(parseSize('-1.2 ')).equals(-1);
39
- o(parseSize('-1.2 Ki')).equals(-1.2 * 1000);
40
- o(parseSize('-1.2 Mi')).equals(-1.2 * 1000 * 1000);
41
- o(parseSize('-1.2 Gi')).equals(-1.2 * 1000 * 1000 * 1000);
42
- o(parseSize('-1.2 Ti')).equals(-1.2 * 1000 * 1000 * 1000 * 1000);
43
- });
44
- o('should fail on invalid test', () => {
45
- o(() => parseSize('1 B B')).throws(Error);
46
- o(() => parseSize('1 ZB')).throws(Error);
47
- o(() => parseSize('1 Zi')).throws(Error);
48
- o(() => parseSize('a')).throws(Error);
49
- });
50
- });
51
- //# sourceMappingURL=size.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"size.test.js","sourceRoot":"","sources":["../../../../src/cli/aws/__tests__/size.test.ts"],"names":[],"mappings":"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"}
@@ -1,22 +0,0 @@
1
- import { CommandLineAction } from '@rushstack/ts-command-line';
2
- export interface FileSizeInfo {
3
- path: string;
4
- size?: number;
5
- }
6
- export declare class CommandList extends CommandLineAction {
7
- private filter;
8
- private output;
9
- private group;
10
- private groupSize;
11
- private limit;
12
- private config;
13
- constructor();
14
- protected onDefineParameters(): void;
15
- onExecute(): Promise<void>;
16
- }
17
- export declare function asyncFilter<T extends {
18
- path: string;
19
- }>(source: AsyncGenerator<T>, filter: string): AsyncGenerator<T>;
20
- /** Chunk files into a max size (eg 1GB chunks) or max count (eg 100 files) or what ever comes first when both are defined */
21
- export declare function chunkFiles(values: FileSizeInfo[], count: number, size: number): string[][];
22
- //# sourceMappingURL=action.aws.list.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"action.aws.list.d.ts","sourceRoot":"","sources":["../../../src/cli/aws/action.aws.list.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAA2D,MAAM,4BAA4B,CAAC;AAGxH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,qBAAa,WAAY,SAAQ,iBAAiB;IAChD,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,KAAK,CAA8B;IAC3C,OAAO,CAAC,SAAS,CAA6B;IAC9C,OAAO,CAAC,KAAK,CAA8B;IAC3C,OAAO,CAAC,MAAM,CAA6B;;IAU3C,SAAS,CAAC,kBAAkB,IAAI,IAAI;IAqC9B,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;CAmCjC;AAED,wBAAuB,WAAW,CAAC,CAAC,SAAS;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,EAC3D,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,EACzB,MAAM,EAAE,MAAM,GACb,cAAc,CAAC,CAAC,CAAC,CAQnB;AAED,6HAA6H;AAC7H,wBAAgB,UAAU,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,CAiB1F"}
@@ -1,116 +0,0 @@
1
- import { Env, fsa, LogConfig, RoleRegister } from '@basemaps/shared';
2
- import { CommandLineAction } from '@rushstack/ts-command-line';
3
- import { parseSize } from './sizes.js';
4
- export class CommandList extends CommandLineAction {
5
- constructor() {
6
- super({
7
- actionName: 'list',
8
- summary: 'List a location and return the files in a JSON array',
9
- documentation: 'Find the correct role to assume, assume it and list a s3 location',
10
- });
11
- }
12
- onDefineParameters() {
13
- this.filter = this.defineStringParameter({
14
- argumentName: 'FILTER',
15
- parameterLongName: '--filter',
16
- description: 'filter files eg ".*.tiff"',
17
- });
18
- this.group = this.defineIntegerParameter({
19
- argumentName: 'GROUP',
20
- parameterLongName: '--group',
21
- description: 'Group files into this number per group',
22
- });
23
- this.groupSize = this.defineStringParameter({
24
- argumentName: 'GROUP_SIZE',
25
- parameterLongName: '--group-size',
26
- description: 'Group files into this size per group, eg "5Gi" or "3TB"',
27
- });
28
- this.limit = this.defineIntegerParameter({
29
- argumentName: 'LIMIT',
30
- parameterLongName: '--limit',
31
- description: 'Limit the file count to this amount, -1 is no limit',
32
- });
33
- this.output = this.defineStringParameter({
34
- argumentName: 'OUTPUT',
35
- parameterLongName: '--output',
36
- required: true,
37
- description: 'Output location for the listing',
38
- });
39
- this.config = this.defineStringParameter({
40
- argumentName: 'CONFIG',
41
- parameterLongName: '--config',
42
- description: 'Location of a configuration file containing role->bucket mapping information',
43
- });
44
- this.defineCommandLineRemainder({
45
- description: 'List of locations to iterate',
46
- });
47
- }
48
- async onExecute() {
49
- var _a, _b, _c, _d, _e, _f;
50
- const logger = LogConfig.get();
51
- const config = this.config.value;
52
- if (config) {
53
- logger.info({ path: config }, 'Role:Config');
54
- process.env[Env.AwsRoleConfigPath] = config;
55
- }
56
- const paths = (_b = (_a = this.remainder) === null || _a === void 0 ? void 0 : _a.values) !== null && _b !== void 0 ? _b : [];
57
- if (paths.length === 0)
58
- throw new Error('No listing paths given');
59
- const outputPath = this.output.value;
60
- if (outputPath == null)
61
- throw new Error('Missing --output path');
62
- const limit = (_c = this.limit.value) !== null && _c !== void 0 ? _c : -1; // no limit by default
63
- const filter = (_d = this.filter.value) !== null && _d !== void 0 ? _d : '*'; // Filter everything by default
64
- const outputFiles = [];
65
- for (const targetPath of paths) {
66
- logger.debug({ path: targetPath }, 'List');
67
- const assumedRole = await RoleRegister.findRole(targetPath);
68
- if (assumedRole)
69
- logger.debug({ path: targetPath, roleArn: assumedRole === null || assumedRole === void 0 ? void 0 : assumedRole.roleArn }, 'List:Role');
70
- const fileList = await fsa.toArray(asyncFilter(fsa.details(targetPath), filter));
71
- logger.debug({ path: targetPath, fileCount: fileList.length }, 'List:Count');
72
- for (const file of fileList) {
73
- outputFiles.push(file);
74
- if (limit > 0 && outputFiles.length >= limit)
75
- break;
76
- }
77
- if (limit > 0 && outputFiles.length >= limit)
78
- break;
79
- }
80
- const maxSize = parseSize((_e = this.groupSize.value) !== null && _e !== void 0 ? _e : '-1');
81
- const maxLength = (_f = this.group.value) !== null && _f !== void 0 ? _f : -1;
82
- await fsa.write(outputPath, JSON.stringify(chunkFiles(outputFiles, maxLength, maxSize)));
83
- }
84
- }
85
- export async function* asyncFilter(source, filter) {
86
- if (filter === '*')
87
- return yield* source;
88
- const re = new RegExp(filter.toLowerCase(), 'i');
89
- for await (const f of source) {
90
- // Always match on lowercase
91
- if (re.test(f.path.toLowerCase()))
92
- yield f;
93
- }
94
- }
95
- /** Chunk files into a max size (eg 1GB chunks) or max count (eg 100 files) or what ever comes first when both are defined */
96
- export function chunkFiles(values, count, size) {
97
- if (count == null && size == null)
98
- return [values.map((c) => c.path)];
99
- const output = [];
100
- let current = [];
101
- let totalSize = 0;
102
- for (const v of values) {
103
- current.push(v.path);
104
- if (v.size)
105
- totalSize += v.size;
106
- if ((count > 0 && current.length >= count) || (size > 0 && totalSize >= size)) {
107
- output.push(current);
108
- current = [];
109
- totalSize = 0;
110
- }
111
- }
112
- if (current.length > 0)
113
- output.push(current);
114
- return output;
115
- }
116
- //# sourceMappingURL=action.aws.list.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"action.aws.list.js","sourceRoot":"","sources":["../../../src/cli/aws/action.aws.list.ts"],"names":[],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- export declare const FileSizeMap: Map<string, number>;
2
- /**
3
- * Convert a number eg "1KB" to size in bytes (1024)
4
- *
5
- * Rounded to the nearest byte
6
- */
7
- export declare function parseSize(size: string): number;
8
- //# sourceMappingURL=sizes.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sizes.d.ts","sourceRoot":"","sources":["../../../src/cli/aws/sizes.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,qBAStB,CAAC;AAEH;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAW9C"}
@@ -1,30 +0,0 @@
1
- export const FileSizeMap = new Map([
2
- ['kb', 1024],
3
- ['mb', 1024 * 1024],
4
- ['gb', 1024 * 1024 * 1024],
5
- ['tb', 1024 * 1024 * 1024 * 1024],
6
- ['ki', 1000],
7
- ['mi', 1000 * 1000],
8
- ['gi', 1000 * 1000 * 1000],
9
- ['ti', 1000 * 1000 * 1000 * 1000],
10
- ]);
11
- /**
12
- * Convert a number eg "1KB" to size in bytes (1024)
13
- *
14
- * Rounded to the nearest byte
15
- */
16
- export function parseSize(size) {
17
- const textString = size.toLowerCase().replace(/ /g, '').trim();
18
- if (textString.endsWith('i') || textString.endsWith('b')) {
19
- const lastVal = textString.slice(textString.length - 2);
20
- const denominator = FileSizeMap.get(lastVal);
21
- if (denominator == null)
22
- throw new Error(`Failed to parse: ${size} as a file size`);
23
- return Math.round(denominator * Number(textString.slice(0, textString.length - 2)));
24
- }
25
- const fileSize = Number(textString);
26
- if (isNaN(fileSize))
27
- throw new Error(`Failed to parse: ${size} as a file size`);
28
- return Math.round(fileSize);
29
- }
30
- //# sourceMappingURL=sizes.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sizes.js","sourceRoot":"","sources":["../../../src/cli/aws/sizes.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,GAAG,CAAiB;IACjD,CAAC,IAAI,EAAE,IAAI,CAAC;IACZ,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IACjC,CAAC,IAAI,EAAE,IAAI,CAAC;IACZ,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;CAClC,CAAC,CAAC;AAEH;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC/D,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;QACxD,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACxD,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC7C,IAAI,WAAW,IAAI,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,IAAI,iBAAiB,CAAC,CAAC;QACpF,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;KACrF;IACD,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;IACpC,IAAI,KAAK,CAAC,QAAQ,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,IAAI,iBAAiB,CAAC,CAAC;IAChF,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AAC9B,CAAC"}
@@ -1,19 +0,0 @@
1
- import { LogType } from '@basemaps/shared';
2
- import { CommandLineAction } from '@rushstack/ts-command-line';
3
- import { FastifyInstance } from 'fastify/types/instance';
4
- import { Browser } from 'playwright';
5
- export declare const DefaultHost = "basemaps.linz.govt.nz";
6
- export declare const DefaultOutput = ".artifacts/visual-snapshots/";
7
- export declare class CommandScreenShot extends CommandLineAction {
8
- private config;
9
- private host;
10
- private tiles;
11
- private assets;
12
- private output;
13
- constructor();
14
- protected onDefineParameters(): void;
15
- onExecute(): Promise<void>;
16
- startServer(port: number, config: string, logger: LogType): Promise<FastifyInstance>;
17
- takeScreenshots(host: string, chrome: Browser, logger: LogType): Promise<void>;
18
- }
19
- //# sourceMappingURL=action.screenshot.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"action.screenshot.d.ts","sourceRoot":"","sources":["../../../src/cli/screenshot/action.screenshot.ts"],"names":[],"mappings":"AACA,OAAO,EAAuB,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAA8B,MAAM,4BAA4B,CAAC;AAC3F,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAGzD,OAAO,EAAE,OAAO,EAAY,MAAM,YAAY,CAAC;AAG/C,eAAO,MAAM,WAAW,0BAA0B,CAAC;AACnD,eAAO,MAAM,aAAa,iCAAiC,CAAC;AAE5D,qBAAa,iBAAkB,SAAQ,iBAAiB;IACtD,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,IAAI,CAA6B;IACzC,OAAO,CAAC,KAAK,CAA6B;IAC1C,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,MAAM,CAA6B;;IAU3C,SAAS,CAAC,kBAAkB,IAAI,IAAI;IAiC9B,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAyB1B,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,eAAe,CAAC;IAMpF,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CA0CrF"}
@@ -1,115 +0,0 @@
1
- import { createServer } from '@basemaps/server';
2
- import { Env, fsa, LogConfig } from '@basemaps/shared';
3
- import { CommandLineAction } from '@rushstack/ts-command-line';
4
- import { mkdir } from 'fs/promises';
5
- import getPort from 'get-port';
6
- import { chromium } from 'playwright';
7
- import { DefaultTestTiles } from './test.tiles.js';
8
- export const DefaultHost = 'basemaps.linz.govt.nz';
9
- export const DefaultOutput = '.artifacts/visual-snapshots/';
10
- export class CommandScreenShot extends CommandLineAction {
11
- constructor() {
12
- super({
13
- actionName: 'screenshot',
14
- summary: 'dump screenshots of from LINZ Basemaps',
15
- documentation: 'Dump screenshots with selected tile sets',
16
- });
17
- }
18
- onDefineParameters() {
19
- this.config = this.defineStringParameter({
20
- argumentName: 'CONFIG',
21
- parameterLongName: '--config',
22
- description: 'Path of config bundle file, could be both local file or s3.',
23
- });
24
- this.host = this.defineStringParameter({
25
- argumentName: 'HOST',
26
- parameterLongName: '--host',
27
- description: 'Host to use',
28
- defaultValue: DefaultHost,
29
- });
30
- this.tiles = this.defineStringParameter({
31
- argumentName: 'TILES',
32
- parameterLongName: '--tiles',
33
- description: 'JSON file path for the test tiles',
34
- });
35
- this.assets = this.defineStringParameter({
36
- argumentName: 'ASSETS',
37
- parameterLongName: '--assets',
38
- description: 'Where the assets (sprites, fonts) are located',
39
- });
40
- this.output = this.defineStringParameter({
41
- argumentName: 'OUTPUT',
42
- parameterLongName: '--output',
43
- description: 'Output of the bundle file',
44
- });
45
- }
46
- async onExecute() {
47
- var _a, _b;
48
- const logger = LogConfig.get();
49
- const config = this.config.value;
50
- let host = (_a = this.host.value) !== null && _a !== void 0 ? _a : DefaultHost;
51
- let BasemapsServer = undefined;
52
- if (config != null) {
53
- const port = await getPort();
54
- host = (_b = Env.get(Env.PublicUrlBase)) !== null && _b !== void 0 ? _b : `http://localhost:${port}`;
55
- // Force a default url base so WMTS requests know their relative url
56
- process.env[Env.PublicUrlBase] = host;
57
- BasemapsServer = await this.startServer(port, config, logger);
58
- logger.info({ url: host }, 'Server:Started');
59
- }
60
- logger.info('Page:Launch');
61
- const chrome = await chromium.launch();
62
- try {
63
- await this.takeScreenshots(host, chrome, logger);
64
- }
65
- finally {
66
- await chrome.close();
67
- if (BasemapsServer != null)
68
- await BasemapsServer.close();
69
- }
70
- }
71
- async startServer(port, config, logger) {
72
- // Start server
73
- const server = await createServer({ config, assets: this.assets.value }, logger);
74
- return await new Promise((resolve) => server.listen(port, '0.0.0.0', () => resolve(server)));
75
- }
76
- async takeScreenshots(host, chrome, logger) {
77
- var _a;
78
- const tiles = this.tiles.value;
79
- const outputPath = (_a = this.output.value) !== null && _a !== void 0 ? _a : DefaultOutput;
80
- let testTiles = DefaultTestTiles;
81
- if (tiles) {
82
- testTiles = await fsa.readJson(tiles);
83
- }
84
- for (const test of testTiles) {
85
- const page = await chrome.newPage();
86
- const searchParam = new URLSearchParams();
87
- searchParam.set('p', test.tileMatrix);
88
- searchParam.set('i', test.tileSet);
89
- if (test.style)
90
- searchParam.set('s', test.style);
91
- const loc = `@${test.location.lat},${test.location.lng},z${test.location.z}`;
92
- const fileName = test.name + '.png';
93
- const output = fsa.join(outputPath, fileName);
94
- await mkdir(`.artifacts/visual-snapshots/`, { recursive: true });
95
- let url = `${host}/?${searchParam.toString()}&debug=true&debug.screenshot=true#${loc}`;
96
- if (!url.startsWith('http'))
97
- url = `https://${url}`;
98
- logger.info({ url, expected: output }, 'Page:Load');
99
- await page.goto(url);
100
- try {
101
- await page.waitForSelector('div#map-loaded', { state: 'attached' });
102
- await page.waitForTimeout(1000);
103
- await page.waitForLoadState('networkidle');
104
- await page.screenshot({ path: output });
105
- }
106
- catch (e) {
107
- await page.screenshot({ path: output });
108
- throw e;
109
- }
110
- logger.info({ url, expected: output }, 'Page:Load:Done');
111
- await page.close();
112
- }
113
- }
114
- }
115
- //# sourceMappingURL=action.screenshot.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"action.screenshot.js","sourceRoot":"","sources":["../../../src/cli/screenshot/action.screenshot.ts"],"names":[],"mappings":"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"}