@basemaps/cli 6.28.1 → 6.31.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 (136) hide show
  1. package/CHANGELOG.md +66 -0
  2. package/README.md +62 -13
  3. package/build/cli/aws/__tests__/action.aws.test.d.ts +2 -0
  4. package/build/cli/aws/__tests__/action.aws.test.d.ts.map +1 -0
  5. package/build/cli/aws/__tests__/action.aws.test.js +59 -0
  6. package/build/cli/aws/__tests__/action.aws.test.js.map +1 -0
  7. package/build/cli/aws/action.aws.list.d.ts +14 -0
  8. package/build/cli/aws/action.aws.list.d.ts.map +1 -0
  9. package/build/cli/aws/action.aws.list.js +106 -0
  10. package/build/cli/aws/action.aws.list.js.map +1 -0
  11. package/build/cli/base.cli.js +1 -0
  12. package/build/cli/base.cli.js.map +1 -0
  13. package/build/cli/bin.d.ts +2 -0
  14. package/build/cli/bin.d.ts.map +1 -0
  15. package/build/cli/bin.js +4 -0
  16. package/build/cli/bin.js.map +1 -0
  17. package/build/cli/cogify/__tests__/batch.job.test.js +49 -22
  18. package/build/cli/cogify/__tests__/batch.job.test.js.map +1 -0
  19. package/build/cli/cogify/__tests__/semver.test.js +1 -0
  20. package/build/cli/cogify/__tests__/semver.test.js.map +1 -0
  21. package/build/cli/cogify/action.cog.d.ts +2 -1
  22. package/build/cli/cogify/action.cog.d.ts.map +1 -1
  23. package/build/cli/cogify/action.cog.js +50 -42
  24. package/build/cli/cogify/action.cog.js.map +1 -0
  25. package/build/cli/cogify/action.job.d.ts +1 -1
  26. package/build/cli/cogify/action.job.d.ts.map +1 -1
  27. package/build/cli/cogify/action.job.js +2 -1
  28. package/build/cli/cogify/action.job.js.map +1 -0
  29. package/build/cli/cogify/batch.job.d.ts +6 -4
  30. package/build/cli/cogify/batch.job.d.ts.map +1 -1
  31. package/build/cli/cogify/batch.job.js +64 -49
  32. package/build/cli/cogify/batch.job.js.map +1 -0
  33. package/build/cli/cogify/imagery.config.d.ts.map +1 -1
  34. package/build/cli/cogify/imagery.config.js +1 -2
  35. package/build/cli/cogify/imagery.config.js.map +1 -0
  36. package/build/cli/cogify/semver.util.js +1 -0
  37. package/build/cli/cogify/semver.util.js.map +1 -0
  38. package/build/cli/config/action.bundle.assets.d.ts +17 -0
  39. package/build/cli/config/action.bundle.assets.d.ts.map +1 -0
  40. package/build/cli/config/action.bundle.assets.js +98 -0
  41. package/build/cli/config/action.bundle.assets.js.map +1 -0
  42. package/build/cli/config/action.bundle.d.ts +12 -0
  43. package/build/cli/config/action.bundle.d.ts.map +1 -0
  44. package/build/cli/config/action.bundle.js +46 -0
  45. package/build/cli/config/action.bundle.js.map +1 -0
  46. package/build/cli/config/action.import.d.ts +17 -0
  47. package/build/cli/config/action.import.d.ts.map +1 -0
  48. package/build/cli/config/action.import.js +119 -0
  49. package/build/cli/config/action.import.js.map +1 -0
  50. package/build/cli/config/config.diff.d.ts +10 -0
  51. package/build/cli/config/config.diff.d.ts.map +1 -0
  52. package/build/cli/config/config.diff.js +50 -0
  53. package/build/cli/config/config.diff.js.map +1 -0
  54. package/build/cli/config/config.update.d.ts +25 -0
  55. package/build/cli/config/config.update.d.ts.map +1 -0
  56. package/build/cli/config/config.update.js +78 -0
  57. package/build/cli/config/config.update.js.map +1 -0
  58. package/build/cli/folder.js +1 -0
  59. package/build/cli/folder.js.map +1 -0
  60. package/build/cli/{cogify/index.d.ts → index.d.ts} +1 -1
  61. package/build/cli/index.d.ts.map +1 -0
  62. package/build/cli/index.js +30 -0
  63. package/build/cli/index.js.map +1 -0
  64. package/build/cli/screenshot/action.screenshot.d.ts +66 -0
  65. package/build/cli/screenshot/action.screenshot.d.ts.map +1 -0
  66. package/build/cli/screenshot/action.screenshot.js +131 -0
  67. package/build/cli/screenshot/action.screenshot.js.map +1 -0
  68. package/build/cli/server/action.serve.d.ts +10 -0
  69. package/build/cli/server/action.serve.d.ts.map +1 -0
  70. package/build/cli/server/action.serve.js +46 -0
  71. package/build/cli/server/action.serve.js.map +1 -0
  72. package/build/cli/sprites/action.sprites.d.ts +11 -0
  73. package/build/cli/sprites/action.sprites.d.ts.map +1 -0
  74. package/build/cli/sprites/action.sprites.js +42 -0
  75. package/build/cli/sprites/action.sprites.js.map +1 -0
  76. package/build/cli/util.js +1 -0
  77. package/build/cli/util.js.map +1 -0
  78. package/build/cog/__tests__/builder.test.js +1 -0
  79. package/build/cog/__tests__/builder.test.js.map +1 -0
  80. package/build/cog/__tests__/cog.stac.job.test.js +107 -149
  81. package/build/cog/__tests__/cog.stac.job.test.js.map +1 -0
  82. package/build/cog/__tests__/cog.test.js +1 -0
  83. package/build/cog/__tests__/cog.test.js.map +1 -0
  84. package/build/cog/__tests__/cog.vrt.test.js +1 -0
  85. package/build/cog/__tests__/cog.vrt.test.js.map +1 -0
  86. package/build/cog/__tests__/cutline.test.js +1 -0
  87. package/build/cog/__tests__/cutline.test.js.map +1 -0
  88. package/build/cog/__tests__/projection.loader.test.js +1 -0
  89. package/build/cog/__tests__/projection.loader.test.js.map +1 -0
  90. package/build/cog/__tests__/source.tiff.testhelper.js +1 -0
  91. package/build/cog/__tests__/source.tiff.testhelper.js.map +1 -0
  92. package/build/cog/builder.js +1 -0
  93. package/build/cog/builder.js.map +1 -0
  94. package/build/cog/cog.js +1 -0
  95. package/build/cog/cog.js.map +1 -0
  96. package/build/cog/cog.stac.job.js +1 -0
  97. package/build/cog/cog.stac.job.js.map +1 -0
  98. package/build/cog/cog.vrt.js +1 -0
  99. package/build/cog/cog.vrt.js.map +1 -0
  100. package/build/cog/constants.js +1 -0
  101. package/build/cog/constants.js.map +1 -0
  102. package/build/cog/cutline.js +1 -0
  103. package/build/cog/cutline.js.map +1 -0
  104. package/build/cog/job.factory.d.ts.map +1 -1
  105. package/build/cog/job.factory.js +13 -4
  106. package/build/cog/job.factory.js.map +1 -0
  107. package/build/cog/projection.loader.js +1 -0
  108. package/build/cog/projection.loader.js.map +1 -0
  109. package/build/cog/stac.js +1 -0
  110. package/build/cog/stac.js.map +1 -0
  111. package/build/cog/types.js +1 -0
  112. package/build/cog/types.js.map +1 -0
  113. package/build/gdal/__tests__/gdal.progress.test.js +1 -0
  114. package/build/gdal/__tests__/gdal.progress.test.js.map +1 -0
  115. package/build/gdal/__tests__/gdal.test.js +1 -0
  116. package/build/gdal/__tests__/gdal.test.js.map +1 -0
  117. package/build/gdal/gdal.cog.js +1 -0
  118. package/build/gdal/gdal.cog.js.map +1 -0
  119. package/build/gdal/gdal.command.js +1 -0
  120. package/build/gdal/gdal.command.js.map +1 -0
  121. package/build/gdal/gdal.config.js +1 -0
  122. package/build/gdal/gdal.config.js.map +1 -0
  123. package/build/gdal/gdal.docker.js +1 -0
  124. package/build/gdal/gdal.docker.js.map +1 -0
  125. package/build/gdal/gdal.js +1 -0
  126. package/build/gdal/gdal.js.map +1 -0
  127. package/build/gdal/gdal.local.js +1 -0
  128. package/build/gdal/gdal.local.js.map +1 -0
  129. package/build/gdal/gdal.progress.js +1 -0
  130. package/build/gdal/gdal.progress.js.map +1 -0
  131. package/build/index.js +1 -0
  132. package/build/index.js.map +1 -0
  133. package/package.json +20 -11
  134. package/build/cli/cogify/index.d.ts.map +0 -1
  135. package/build/cli/cogify/index.js +0 -16
  136. package/cogify.js +0 -3
@@ -0,0 +1,131 @@
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 { z } from 'zod';
8
+ export const DefaultTestTiles = './test-tiles/default.test.tiles.json';
9
+ export const DefaultHost = 'basemaps.linz.govt.nz';
10
+ export const DefaultOutput = '.artifacts/visual-snapshots/';
11
+ var TileMatrixIdentifier;
12
+ (function (TileMatrixIdentifier) {
13
+ TileMatrixIdentifier["Nztm2000Quad"] = "NZTM2000Quad";
14
+ TileMatrixIdentifier["Google"] = "WebMercatorQuad";
15
+ })(TileMatrixIdentifier || (TileMatrixIdentifier = {}));
16
+ const zLocation = z.object({
17
+ lat: z.number().gte(-90).lte(90),
18
+ lng: z.number().gte(-180).lte(180),
19
+ z: z.number().gte(0).lte(32),
20
+ });
21
+ const zTileTest = z.object({
22
+ name: z.string(),
23
+ tileMatrix: z.nativeEnum(TileMatrixIdentifier),
24
+ location: zLocation,
25
+ tileSet: z.string(),
26
+ style: z.string().optional(),
27
+ });
28
+ export class CommandScreenShot extends CommandLineAction {
29
+ constructor() {
30
+ super({
31
+ actionName: 'screenshot',
32
+ summary: 'dump screenshots of from LINZ Basemaps',
33
+ documentation: 'Dump screenshots with selected tile sets',
34
+ });
35
+ }
36
+ onDefineParameters() {
37
+ this.config = this.defineStringParameter({
38
+ argumentName: 'CONFIG',
39
+ parameterLongName: '--config',
40
+ description: 'Path of config bundle file, could be both local file or s3.',
41
+ });
42
+ this.host = this.defineStringParameter({
43
+ argumentName: 'HOST',
44
+ parameterLongName: '--host',
45
+ description: 'Host to use',
46
+ defaultValue: DefaultHost,
47
+ });
48
+ this.tiles = this.defineStringParameter({
49
+ argumentName: 'TILES',
50
+ parameterLongName: '--tiles',
51
+ description: 'JSON file path for the test tiles',
52
+ defaultValue: DefaultTestTiles,
53
+ });
54
+ this.assets = this.defineStringParameter({
55
+ argumentName: 'ASSETS',
56
+ parameterLongName: '--assets',
57
+ description: 'Where the assets (sprites, fonts) are located',
58
+ });
59
+ this.output = this.defineStringParameter({
60
+ argumentName: 'OUTPUT',
61
+ parameterLongName: '--output',
62
+ description: 'Output of the bundle file',
63
+ });
64
+ }
65
+ async onExecute() {
66
+ var _a, _b;
67
+ const logger = LogConfig.get();
68
+ const config = this.config.value;
69
+ let host = (_a = this.host.value) !== null && _a !== void 0 ? _a : DefaultHost;
70
+ let BasemapsServer = undefined;
71
+ if (config != null) {
72
+ const port = await getPort();
73
+ host = (_b = Env.get(Env.PublicUrlBase)) !== null && _b !== void 0 ? _b : `http://localhost:${port}`;
74
+ // Force a default url base so WMTS requests know their relative url
75
+ process.env[Env.PublicUrlBase] = host;
76
+ BasemapsServer = await this.startServer(port, config, logger);
77
+ logger.info({ url: host }, 'Server:Started');
78
+ }
79
+ logger.info('Page:Launch');
80
+ const chrome = await chromium.launch();
81
+ try {
82
+ await this.takeScreenshots(host, chrome, logger);
83
+ }
84
+ finally {
85
+ await chrome.close();
86
+ if (BasemapsServer != null)
87
+ await BasemapsServer.close();
88
+ }
89
+ }
90
+ async startServer(port, config, logger) {
91
+ // Start server
92
+ const server = await createServer({ config, assets: this.assets.value }, logger);
93
+ return await new Promise((resolve) => server.listen(port, '0.0.0.0', () => resolve(server)));
94
+ }
95
+ async takeScreenshots(host, chrome, logger) {
96
+ var _a, _b;
97
+ const tiles = (_a = this.tiles.value) !== null && _a !== void 0 ? _a : DefaultTestTiles;
98
+ const outputPath = (_b = this.output.value) !== null && _b !== void 0 ? _b : DefaultOutput;
99
+ const TestTiles = await fsa.readJson(tiles);
100
+ for (const test of TestTiles) {
101
+ const page = await chrome.newPage();
102
+ const searchParam = new URLSearchParams();
103
+ searchParam.set('p', test.tileMatrix);
104
+ searchParam.set('i', test.tileSet);
105
+ if (test.style)
106
+ searchParam.set('s', test.style);
107
+ const loc = `@${test.location.lat},${test.location.lng},z${test.location.z}`;
108
+ const fileName = test.name + '.png';
109
+ const output = fsa.join(outputPath, fileName);
110
+ await mkdir(`.artifacts/visual-snapshots/`, { recursive: true });
111
+ let url = `${host}/?${searchParam.toString()}&debug=true&debug.screenshot=true#${loc}`;
112
+ if (!url.startsWith('http'))
113
+ url = `https://${url}`;
114
+ logger.info({ url, expected: output }, 'Page:Load');
115
+ await page.goto(url);
116
+ try {
117
+ await page.waitForSelector('div#map-loaded', { state: 'attached' });
118
+ await page.waitForTimeout(1000);
119
+ await page.waitForLoadState('networkidle');
120
+ await page.screenshot({ path: output });
121
+ }
122
+ catch (e) {
123
+ await page.screenshot({ path: output });
124
+ throw e;
125
+ }
126
+ logger.info({ url, expected: output }, 'Page:Load:Done');
127
+ await page.close();
128
+ }
129
+ }
130
+ }
131
+ //# sourceMappingURL=action.screenshot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action.screenshot.js","sourceRoot":"","sources":["../../../src/cli/screenshot/action.screenshot.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { CommandLineAction, CommandLineIntegerParameter, CommandLineStringParameter } from '@rushstack/ts-command-line';
2
+ export declare class CommandServe extends CommandLineAction {
3
+ config: CommandLineStringParameter;
4
+ assets: CommandLineStringParameter;
5
+ port: CommandLineIntegerParameter;
6
+ constructor();
7
+ protected onDefineParameters(): void;
8
+ protected onExecute(): Promise<void>;
9
+ }
10
+ //# sourceMappingURL=action.serve.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action.serve.d.ts","sourceRoot":"","sources":["../../../src/cli/server/action.serve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,2BAA2B,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AAMxH,qBAAa,YAAa,SAAQ,iBAAiB;IACjD,MAAM,EAAE,0BAA0B,CAAC;IACnC,MAAM,EAAE,0BAA0B,CAAC;IACnC,IAAI,EAAE,2BAA2B,CAAC;;IAUlC,SAAS,CAAC,kBAAkB,IAAI,IAAI;cAmBpB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;CAgB3C"}
@@ -0,0 +1,46 @@
1
+ import { CommandLineAction } from '@rushstack/ts-command-line';
2
+ import { createServer } from '@basemaps/server';
3
+ import { Const, Env, LogConfig } from '@basemaps/shared';
4
+ const DefaultPort = 5000;
5
+ export class CommandServe extends CommandLineAction {
6
+ constructor() {
7
+ super({
8
+ actionName: 'serve',
9
+ summary: 'Cli tool to create sprite sheet',
10
+ documentation: 'Create a sprite sheet from a folder of sprites',
11
+ });
12
+ }
13
+ onDefineParameters() {
14
+ this.config = this.defineStringParameter({
15
+ argumentName: 'CONFIG',
16
+ parameterLongName: '--config',
17
+ description: 'Configuration source to use',
18
+ });
19
+ this.assets = this.defineStringParameter({
20
+ argumentName: 'ASSETS',
21
+ parameterLongName: '--assets',
22
+ description: 'Where the assets (sprites, fonts) are located',
23
+ });
24
+ this.port = this.defineIntegerParameter({
25
+ argumentName: 'PORT',
26
+ parameterLongName: '--port',
27
+ description: 'port to use',
28
+ defaultValue: DefaultPort,
29
+ });
30
+ }
31
+ async onExecute() {
32
+ var _a, _b;
33
+ const logger = LogConfig.get();
34
+ const config = (_a = this.config.value) !== null && _a !== void 0 ? _a : 'dynamodb://' + Const.TileMetadata.TableName;
35
+ const port = this.port.value;
36
+ const assets = this.assets.value;
37
+ // Force a default url base so WMTS requests know their relative url
38
+ const ServerUrl = (_b = Env.get(Env.PublicUrlBase)) !== null && _b !== void 0 ? _b : `http://localhost:${port}`;
39
+ process.env[Env.PublicUrlBase] = ServerUrl;
40
+ const server = await createServer({ config, assets }, logger);
41
+ server.listen(port !== null && port !== void 0 ? port : DefaultPort, '0.0.0.0', () => {
42
+ logger.info({ url: ServerUrl }, 'ServerStarted');
43
+ });
44
+ }
45
+ }
46
+ //# sourceMappingURL=action.serve.js.map
@@ -0,0 +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;AACzD,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,CAAC,MAAM,CAAC,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,WAAW,EAAE,SAAS,EAAE,GAAG,EAAE;YACjD,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,eAAe,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -0,0 +1,11 @@
1
+ import { CommandLineAction, CommandLineFlagParameter, CommandLineIntegerListParameter, CommandLineStringListParameter, CommandLineStringParameter } from '@rushstack/ts-command-line';
2
+ export declare class CommandSprites extends CommandLineAction {
3
+ paths: CommandLineStringListParameter;
4
+ output: CommandLineStringParameter;
5
+ ratio: CommandLineIntegerListParameter;
6
+ retina: CommandLineFlagParameter;
7
+ constructor();
8
+ protected onDefineParameters(): void;
9
+ protected onExecute(): Promise<void>;
10
+ }
11
+ //# sourceMappingURL=action.sprites.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action.sprites.d.ts","sourceRoot":"","sources":["../../../src/cli/sprites/action.sprites.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EACxB,+BAA+B,EAC/B,8BAA8B,EAC9B,0BAA0B,EAC3B,MAAM,4BAA4B,CAAC;AAIpC,qBAAa,cAAe,SAAQ,iBAAiB;IACnD,KAAK,EAAE,8BAA8B,CAAC;IACtC,MAAM,EAAE,0BAA0B,CAAC;IACnC,KAAK,EAAE,+BAA+B,CAAC;IACvC,MAAM,EAAE,wBAAwB,CAAC;;IAUjC,SAAS,CAAC,kBAAkB,IAAI,IAAI;cAyBpB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;CAQ3C"}
@@ -0,0 +1,42 @@
1
+ import { CommandLineAction, } from '@rushstack/ts-command-line';
2
+ import { buildSprites } from '@basemaps/sprites';
3
+ export class CommandSprites extends CommandLineAction {
4
+ constructor() {
5
+ super({
6
+ actionName: 'sprites',
7
+ summary: 'Cli tool to create sprite sheet',
8
+ documentation: 'Create a sprite sheet from a folder of sprites',
9
+ });
10
+ }
11
+ onDefineParameters() {
12
+ this.paths = this.defineStringListParameter({
13
+ argumentName: 'PATH',
14
+ parameterLongName: '--path',
15
+ description: 'Paths to the sprite files.',
16
+ });
17
+ this.output = this.defineStringParameter({
18
+ argumentName: 'OUTPUT',
19
+ parameterLongName: '--output',
20
+ description: 'Paths of the output files',
21
+ });
22
+ this.ratio = this.defineIntegerListParameter({
23
+ argumentName: 'RATIO',
24
+ parameterLongName: '--ratio',
25
+ description: 'Pixel ratio, default: "--ratio 1 --ratio 2"',
26
+ });
27
+ this.retina = this.defineFlagParameter({
28
+ parameterLongName: '--retina',
29
+ description: 'Double the pixel ratios, 1x becomes 2x',
30
+ });
31
+ }
32
+ async onExecute() {
33
+ var _a;
34
+ if (((_a = this.paths) === null || _a === void 0 ? void 0 : _a.values) == null || this.paths.values.length === 0) {
35
+ throw new Error('No sprite paths supplied');
36
+ }
37
+ const ratio = [...this.ratio.values];
38
+ const paths = [...this.paths.values];
39
+ await buildSprites(ratio, this.retina.value, paths, this.output.value);
40
+ }
41
+ }
42
+ //# sourceMappingURL=action.sprites.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action.sprites.js","sourceRoot":"","sources":["../../../src/cli/sprites/action.sprites.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,GAKlB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,OAAO,cAAe,SAAQ,iBAAiB;IAMnD;QACE,KAAK,CAAC;YACJ,UAAU,EAAE,SAAS;YACrB,OAAO,EAAE,iCAAiC;YAC1C,aAAa,EAAE,gDAAgD;SAChE,CAAC,CAAC;IACL,CAAC;IAES,kBAAkB;QAC1B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,yBAAyB,CAAC;YAC1C,YAAY,EAAE,MAAM;YACpB,iBAAiB,EAAE,QAAQ;YAC3B,WAAW,EAAE,4BAA4B;SAC1C,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,qBAAqB,CAAC;YACvC,YAAY,EAAE,QAAQ;YACtB,iBAAiB,EAAE,UAAU;YAC7B,WAAW,EAAE,2BAA2B;SACzC,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,0BAA0B,CAAC;YAC3C,YAAY,EAAE,OAAO;YACrB,iBAAiB,EAAE,SAAS;YAC5B,WAAW,EAAE,6CAA6C;SAC3D,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC;YACrC,iBAAiB,EAAE,UAAU;YAC7B,WAAW,EAAE,wCAAwC;SACtD,CAAC,CAAC;IACL,CAAC;IAES,KAAK,CAAC,SAAS;;QACvB,IAAI,CAAA,MAAA,IAAI,CAAC,KAAK,0CAAE,MAAM,KAAI,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;YAChE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;SAC7C;QACD,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACrC,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACrC,MAAM,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACzE,CAAC;CACF"}
package/build/cli/util.js CHANGED
@@ -126,3 +126,4 @@ export async function prepareUrl(job) {
126
126
  const url = `${base}/?i=${job.id}&p=${job.tileMatrix.identifier}&debug#@${centerLatLon[1]},${centerLatLon[0]},z${targetZoom}`;
127
127
  return url;
128
128
  }
129
+ //# sourceMappingURL=util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/cli/util.ts"],"names":[],"mappings":"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"}
@@ -78,3 +78,4 @@ o.spec('Builder', () => {
78
78
  });
79
79
  });
80
80
  });
81
+ //# sourceMappingURL=builder.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builder.test.js","sourceRoot":"","sources":["../../../src/cog/__tests__/builder.test.ts"],"names":[],"mappings":"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"}
@@ -78,12 +78,8 @@ o.spec('CogJob', () => {
78
78
  rel: 'sourceImagery',
79
79
  type: 'application/json',
80
80
  });
81
- o(round(stac.extent, 4)).deepEquals({
82
- spatial: { bbox: [[169.3341, -51.8754, -146.1432, -32.8952]] },
83
- temporal: {
84
- interval: [['2020-01-01T00:00:00.000', '2020-08-08T19:18:23.456Z']],
85
- },
86
- });
81
+ o(round(stac.extent.spatial.bbox, 4)).deepEquals([[169.3347, -51.868, -145.9143, -32.8496]]);
82
+ o(stac.extent.temporal).deepEquals({ interval: [['2020-01-01T00:00:00.000', '2020-08-08T19:18:23.456Z']] });
87
83
  });
88
84
  o('no source collection.json', async () => {
89
85
  const startNow = Date.now();
@@ -96,49 +92,40 @@ o.spec('CogJob', () => {
96
92
  cutlinePoly: [],
97
93
  });
98
94
  const afterNow = Date.now();
99
- o(job.json).equals(mockFs.jsStore[jobPath + '/job.json']);
100
- o(round(job.json, 4)).deepEquals({
101
- id: 'jobid1',
102
- name: 'auckland_rural_2010-2012_0-50m',
103
- title: 'Auckland rural 2010-2012 0.50m',
104
- description: 'No description',
105
- source: {
106
- gsd: 0.075,
107
- epsg: 2193,
108
- files: [
109
- {
110
- x: 1347679.1521,
111
- y: 5301577.5257,
112
- width: 1277913.1519,
113
- height: 201072.6389,
114
- name: 'ring0',
115
- },
116
- {
117
- x: 4728764.4861,
118
- y: 4246465.1768,
119
- width: 838463.4123,
120
- height: 610363.6056,
121
- name: 'ring1',
122
- },
123
- ],
124
- location: { type: 's3', path: 's3://source-bucket/path' },
125
- },
126
- output: {
127
- gsd: 0.0373,
128
- epsg: 3857,
129
- tileMatrix: 'WebMercatorQuad',
130
- files: [{ name: '0-0-0', x: 1, y: 2, width: 2, height: 3 }],
131
- location: { type: 's3', path: 's3://target-bucket/path' },
132
- resampling: { warp: 'bilinear', overview: 'lanczos' },
133
- quality: 90,
134
- cutline: { blend: 20, href: 's3://curline-bucket/path' },
135
- addAlpha: true,
136
- nodata: 0,
137
- bounds: { x: 1, y: 2, width: 2, height: 3 },
138
- oneCogCovering: true,
139
- },
140
- processingId: undefined,
95
+ const jobJson = round(job.json, 4);
96
+ o(jobJson).deepEquals(round(mockFs.jsStore[jobPath + '/job.json'], 4));
97
+ o(jobJson.id).equals('jobid1');
98
+ o(jobJson.name).equals('auckland_rural_2010-2012_0-50m');
99
+ o(jobJson.title).equals('Auckland rural 2010-2012 0.50m');
100
+ o(jobJson.description).equals('No description');
101
+ o(jobJson.source.gsd).equals(0.075);
102
+ o(jobJson.source.epsg).equals(2193);
103
+ o(jobJson.source.files[0]).deepEquals({
104
+ x: 1347679.1521,
105
+ y: 5301577.5262,
106
+ width: 1277913.1293,
107
+ height: 201072.641,
108
+ name: 'ring0',
109
+ });
110
+ o(jobJson.source.files[1]).deepEquals({
111
+ x: 4728648.2332,
112
+ y: 4247288.7253,
113
+ width: 837784.3351,
114
+ height: 609622.9622,
115
+ name: 'ring1',
141
116
  });
117
+ o(jobJson.source.location).deepEquals({ type: 's3', path: 's3://source-bucket/path' });
118
+ o(jobJson.output.gsd).equals(0.0373);
119
+ o(jobJson.output.epsg).equals(3857);
120
+ o(jobJson.output.tileMatrix).equals('WebMercatorQuad');
121
+ o(jobJson.output.files).deepEquals([{ name: '0-0-0', x: 1, y: 2, width: 2, height: 3 }]);
122
+ o(jobJson.output.location).deepEquals({ type: 's3', path: 's3://target-bucket/path' });
123
+ o(jobJson.output.resampling).deepEquals({ warp: 'bilinear', overview: 'lanczos' });
124
+ o(jobJson.output.quality).equals(90);
125
+ o(jobJson.output.cutline).deepEquals({ blend: 20, href: 's3://curline-bucket/path' });
126
+ o(jobJson.output.addAlpha).equals(true);
127
+ o(jobJson.output.nodata).equals(0);
128
+ o(jobJson.output.bounds).deepEquals({ x: 1, y: 2, width: 2, height: 3 });
142
129
  o(job.id).equals(id);
143
130
  o(job.source.gsd).equals(0.075);
144
131
  o(round(job.output.gsd, 4)).equals(0.0373);
@@ -150,63 +137,35 @@ o.spec('CogJob', () => {
150
137
  o(startNow <= jobNow && jobNow <= afterNow).equals(true);
151
138
  // split so that scripts/detect.unlinked.dep.js does not think it is an import
152
139
  o(generated.package).equals('@' + 'basemaps/cli');
153
- const exp = {
154
- id: 'jobid1',
155
- title: 'Auckland rural 2010-2012 0.50m',
156
- description: 'No description',
157
- stac_version: Stac.Version,
158
- stac_extensions: [Stac.BaseMapsExtension],
159
- extent: {
160
- spatial: { bbox: [[169.3341, -51.8754, -146.1432, -32.8952]] },
161
- temporal: { interval: [['2010-01-01T00:00:00Z', '2011-01-01T00:00:00Z']] },
162
- },
163
- license: Stac.License,
164
- keywords: ['Imagery', 'New Zealand'],
165
- providers: [],
166
- summaries: {
167
- gsd: [0.075],
168
- 'proj:epsg': [3857],
169
- 'linz:output': [
170
- {
171
- resampling: { warp: 'bilinear', overview: 'lanczos' },
172
- quality: 90,
173
- cutlineBlend: 20,
174
- addAlpha: true,
175
- nodata: 0,
176
- },
177
- ],
178
- 'linz:generated': [generated],
179
- },
180
- links: [
181
- {
182
- href: 's3://target-bucket/path/collection.json',
183
- type: 'application/json',
184
- rel: 'self',
185
- },
186
- {
187
- href: 'job.json',
188
- type: 'application/json',
189
- rel: 'linz.basemaps.job',
190
- },
191
- {
192
- href: 'cutline.geojson.gz',
193
- type: 'application/geo+json+gzip',
194
- rel: 'linz.basemaps.cutline',
195
- },
140
+ o(stac.id).equals(job.id);
141
+ o(stac.extent.spatial.bbox).deepEquals([[169.3347, -51.868, -145.9143, -32.8496]]);
142
+ o(stac.extent.temporal).deepEquals({ interval: [['2010-01-01T00:00:00Z', '2011-01-01T00:00:00Z']] });
143
+ o(stac.stac_version).equals(Stac.Version);
144
+ o(stac.stac_extensions).deepEquals([Stac.BaseMapsExtension]);
145
+ o(stac.license).deepEquals(Stac.License);
146
+ o(stac.keywords).deepEquals(['Imagery', 'New Zealand']);
147
+ o(stac.summaries).deepEquals({
148
+ gsd: [0.075],
149
+ 'proj:epsg': [3857],
150
+ 'linz:output': [
196
151
  {
197
- href: 'covering.geojson',
198
- type: 'application/geo+json',
199
- rel: 'linz.basemaps.covering',
152
+ resampling: { warp: 'bilinear', overview: 'lanczos' },
153
+ quality: 90,
154
+ cutlineBlend: 20,
155
+ addAlpha: true,
156
+ nodata: 0,
200
157
  },
201
- {
202
- href: 'source.geojson',
203
- type: 'application/geo+json',
204
- rel: 'linz.basemaps.source',
205
- },
206
- { href: '0-0-0.json', type: 'application/geo+json', rel: 'item' },
207
158
  ],
208
- };
209
- o(stac).deepEquals(exp);
159
+ 'linz:generated': [generated],
160
+ });
161
+ o(stac.links).deepEquals([
162
+ { href: 's3://target-bucket/path/collection.json', type: 'application/json', rel: 'self' },
163
+ { href: 'job.json', type: 'application/json', rel: 'linz.basemaps.job' },
164
+ { href: 'cutline.geojson.gz', type: 'application/geo+json+gzip', rel: 'linz.basemaps.cutline' },
165
+ { href: 'covering.geojson', type: 'application/geo+json', rel: 'linz.basemaps.covering' },
166
+ { href: 'source.geojson', type: 'application/geo+json', rel: 'linz.basemaps.source' },
167
+ { href: '0-0-0.json', type: 'application/geo+json', rel: 'item' },
168
+ ]);
210
169
  o(round(mockFs.jsStore[jobPath + '/cutline.geojson.gz'], 4)).deepEquals({
211
170
  type: 'FeatureCollection',
212
171
  features: [
@@ -280,55 +239,53 @@ o.spec('CogJob', () => {
280
239
  },
281
240
  ],
282
241
  });
283
- o(round(mockFs.jsStore[jobPath + '/source.geojson'], 4)).deepEquals({
284
- type: 'FeatureCollection',
285
- features: [
286
- {
287
- type: 'Feature',
288
- geometry: {
289
- type: 'MultiPolygon',
290
- coordinates: [
291
- [
292
- [
293
- [169.9343, -42.3971],
294
- [180, -42.2199],
295
- [180, -40.4109],
296
- [170.0185, -40.5885],
297
- [169.9343, -42.3971],
298
- ],
299
- ],
300
- [
301
- [
302
- [-180, -42.2199],
303
- [-174.6708, -41.7706],
304
- [-175, -40],
305
- [-180, -40.4109],
306
- [-180, -42.2199],
307
- ],
308
- ],
242
+ const sourceGeoJson = mockFs.jsStore[jobPath + '/source.geojson'];
243
+ o(sourceGeoJson.type).equals('FeatureCollection');
244
+ o(sourceGeoJson.features.length).equals(2);
245
+ o(round(sourceGeoJson.features[0], 4)).deepEquals({
246
+ type: 'Feature',
247
+ geometry: {
248
+ type: 'MultiPolygon',
249
+ coordinates: [
250
+ [
251
+ [
252
+ [169.9343, -42.3971],
253
+ [180, -42.2199],
254
+ [180, -40.4109],
255
+ [170.0185, -40.5885],
256
+ [169.9343, -42.3971],
309
257
  ],
310
- },
311
- properties: { name: 'ring0' },
312
- bbox: [169.9343, -42.3971, -175, -40],
313
- },
314
- {
315
- type: 'Feature',
316
- geometry: {
317
- type: 'Polygon',
318
- coordinates: [
319
- [
320
- [-147.7182, -44.5617],
321
- [-150.6057, -40.2044],
322
- [-143.8327, -37.2693],
323
- [-142.0209, -41.3698],
324
- [-147.7182, -44.5617],
325
- ],
258
+ ],
259
+ [
260
+ [
261
+ [-180, -42.2199],
262
+ [-174.6708, -41.7706],
263
+ [-175, -40],
264
+ [-180, -40.4109],
265
+ [-180, -42.2199],
326
266
  ],
327
- },
328
- properties: { name: 'ring1' },
329
- bbox: [-147.7182, -44.5617, -143.8327, -37.2693],
330
- },
331
- ],
267
+ ],
268
+ ],
269
+ },
270
+ properties: { name: 'ring0' },
271
+ bbox: [169.9343, -42.3971, -175, -40],
272
+ });
273
+ o(round(sourceGeoJson.features[1], 4)).deepEquals({
274
+ type: 'Feature',
275
+ geometry: {
276
+ type: 'Polygon',
277
+ coordinates: [
278
+ [
279
+ [-147.4403, -44.5167],
280
+ [-150.5162, -40.1908],
281
+ [-143.1693, -37.1443],
282
+ [-140, -41],
283
+ [-147.4403, -44.5167],
284
+ ],
285
+ ],
286
+ },
287
+ properties: { name: 'ring1' },
288
+ bbox: [-147.4403, -44.5167, -143.1693, -37.1443],
332
289
  });
333
290
  });
334
291
  o('should create with no tileMatrix', () => {
@@ -359,3 +316,4 @@ o.spec('CogJob', () => {
359
316
  });
360
317
  });
361
318
  });
319
+ //# sourceMappingURL=cog.stac.job.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cog.stac.job.test.js","sourceRoot":"","sources":["../../../src/cog/__tests__/cog.stac.job.test.ts"],"names":[],"mappings":"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"}