@basemaps/cli 6.28.0 → 6.30.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +55 -0
- package/README.md +62 -13
- package/build/cli/aws/__tests__/action.aws.test.d.ts +2 -0
- package/build/cli/aws/__tests__/action.aws.test.d.ts.map +1 -0
- package/build/cli/aws/__tests__/action.aws.test.js +59 -0
- package/build/cli/aws/__tests__/action.aws.test.js.map +1 -0
- package/build/cli/aws/action.aws.list.d.ts +14 -0
- package/build/cli/aws/action.aws.list.d.ts.map +1 -0
- package/build/cli/aws/action.aws.list.js +106 -0
- package/build/cli/aws/action.aws.list.js.map +1 -0
- package/build/cli/base.cli.js +1 -0
- package/build/cli/base.cli.js.map +1 -0
- package/build/cli/bin.d.ts +2 -0
- package/build/cli/bin.d.ts.map +1 -0
- package/build/cli/bin.js +4 -0
- package/build/cli/bin.js.map +1 -0
- package/build/cli/cogify/__tests__/batch.job.test.js +49 -22
- package/build/cli/cogify/__tests__/batch.job.test.js.map +1 -0
- package/build/cli/cogify/__tests__/semver.test.js +1 -0
- package/build/cli/cogify/__tests__/semver.test.js.map +1 -0
- package/build/cli/cogify/action.cog.d.ts +2 -1
- package/build/cli/cogify/action.cog.d.ts.map +1 -1
- package/build/cli/cogify/action.cog.js +50 -42
- package/build/cli/cogify/action.cog.js.map +1 -0
- package/build/cli/cogify/action.job.d.ts +1 -1
- package/build/cli/cogify/action.job.d.ts.map +1 -1
- package/build/cli/cogify/action.job.js +2 -1
- package/build/cli/cogify/action.job.js.map +1 -0
- package/build/cli/cogify/batch.job.d.ts +6 -4
- package/build/cli/cogify/batch.job.d.ts.map +1 -1
- package/build/cli/cogify/batch.job.js +64 -49
- package/build/cli/cogify/batch.job.js.map +1 -0
- package/build/cli/cogify/imagery.config.d.ts.map +1 -1
- package/build/cli/cogify/imagery.config.js +1 -2
- package/build/cli/cogify/imagery.config.js.map +1 -0
- package/build/cli/cogify/semver.util.js +1 -0
- package/build/cli/cogify/semver.util.js.map +1 -0
- package/build/cli/config/action.bundle.assets.d.ts +15 -0
- package/build/cli/config/action.bundle.assets.d.ts.map +1 -0
- package/build/cli/config/action.bundle.assets.js +86 -0
- package/build/cli/config/action.bundle.assets.js.map +1 -0
- package/build/cli/config/action.bundle.d.ts +12 -0
- package/build/cli/config/action.bundle.d.ts.map +1 -0
- package/build/cli/config/action.bundle.js +46 -0
- package/build/cli/config/action.bundle.js.map +1 -0
- package/build/cli/config/action.import.d.ts +17 -0
- package/build/cli/config/action.import.d.ts.map +1 -0
- package/build/cli/config/action.import.js +99 -0
- package/build/cli/config/action.import.js.map +1 -0
- package/build/cli/config/config.diff.d.ts +10 -0
- package/build/cli/config/config.diff.d.ts.map +1 -0
- package/build/cli/config/config.diff.js +50 -0
- package/build/cli/config/config.diff.js.map +1 -0
- package/build/cli/config/config.update.d.ts +25 -0
- package/build/cli/config/config.update.d.ts.map +1 -0
- package/build/cli/config/config.update.js +78 -0
- package/build/cli/config/config.update.js.map +1 -0
- package/build/cli/folder.js +1 -0
- package/build/cli/folder.js.map +1 -0
- package/build/cli/{cogify/index.d.ts → index.d.ts} +1 -1
- package/build/cli/index.d.ts.map +1 -0
- package/build/cli/index.js +30 -0
- package/build/cli/index.js.map +1 -0
- package/build/cli/screenshot/action.screenshot.d.ts +66 -0
- package/build/cli/screenshot/action.screenshot.d.ts.map +1 -0
- package/build/cli/screenshot/action.screenshot.js +131 -0
- package/build/cli/screenshot/action.screenshot.js.map +1 -0
- package/build/cli/server/action.serve.d.ts +10 -0
- package/build/cli/server/action.serve.d.ts.map +1 -0
- package/build/cli/server/action.serve.js +46 -0
- package/build/cli/server/action.serve.js.map +1 -0
- package/build/cli/sprites/action.sprites.d.ts +11 -0
- package/build/cli/sprites/action.sprites.d.ts.map +1 -0
- package/build/cli/sprites/action.sprites.js +42 -0
- package/build/cli/sprites/action.sprites.js.map +1 -0
- package/build/cli/util.js +1 -0
- package/build/cli/util.js.map +1 -0
- package/build/cog/__tests__/builder.test.js +1 -0
- package/build/cog/__tests__/builder.test.js.map +1 -0
- package/build/cog/__tests__/cog.stac.job.test.js +1 -0
- package/build/cog/__tests__/cog.stac.job.test.js.map +1 -0
- package/build/cog/__tests__/cog.test.js +1 -0
- package/build/cog/__tests__/cog.test.js.map +1 -0
- package/build/cog/__tests__/cog.vrt.test.js +1 -0
- package/build/cog/__tests__/cog.vrt.test.js.map +1 -0
- package/build/cog/__tests__/cutline.test.js +1 -0
- package/build/cog/__tests__/cutline.test.js.map +1 -0
- package/build/cog/__tests__/projection.loader.test.js +1 -0
- package/build/cog/__tests__/projection.loader.test.js.map +1 -0
- package/build/cog/__tests__/source.tiff.testhelper.js +1 -0
- package/build/cog/__tests__/source.tiff.testhelper.js.map +1 -0
- package/build/cog/builder.js +1 -0
- package/build/cog/builder.js.map +1 -0
- package/build/cog/cog.js +1 -0
- package/build/cog/cog.js.map +1 -0
- package/build/cog/cog.stac.job.js +1 -0
- package/build/cog/cog.stac.job.js.map +1 -0
- package/build/cog/cog.vrt.js +1 -0
- package/build/cog/cog.vrt.js.map +1 -0
- package/build/cog/constants.js +1 -0
- package/build/cog/constants.js.map +1 -0
- package/build/cog/cutline.js +1 -0
- package/build/cog/cutline.js.map +1 -0
- package/build/cog/job.factory.d.ts.map +1 -1
- package/build/cog/job.factory.js +13 -4
- package/build/cog/job.factory.js.map +1 -0
- package/build/cog/projection.loader.js +1 -0
- package/build/cog/projection.loader.js.map +1 -0
- package/build/cog/stac.js +1 -0
- package/build/cog/stac.js.map +1 -0
- package/build/cog/types.js +1 -0
- package/build/cog/types.js.map +1 -0
- package/build/gdal/__tests__/gdal.progress.test.js +1 -0
- package/build/gdal/__tests__/gdal.progress.test.js.map +1 -0
- package/build/gdal/__tests__/gdal.test.js +1 -0
- package/build/gdal/__tests__/gdal.test.js.map +1 -0
- package/build/gdal/gdal.cog.js +1 -0
- package/build/gdal/gdal.cog.js.map +1 -0
- package/build/gdal/gdal.command.js +1 -0
- package/build/gdal/gdal.command.js.map +1 -0
- package/build/gdal/gdal.config.js +1 -0
- package/build/gdal/gdal.config.js.map +1 -0
- package/build/gdal/gdal.docker.js +1 -0
- package/build/gdal/gdal.docker.js.map +1 -0
- package/build/gdal/gdal.js +1 -0
- package/build/gdal/gdal.js.map +1 -0
- package/build/gdal/gdal.local.js +1 -0
- package/build/gdal/gdal.local.js.map +1 -0
- package/build/gdal/gdal.progress.js +1 -0
- package/build/gdal/gdal.progress.js.map +1 -0
- package/build/index.js +1 -0
- package/build/index.js.map +1 -0
- package/package.json +20 -11
- package/build/cli/cogify/index.d.ts.map +0 -1
- package/build/cli/cogify/index.js +0 -16
- package/cogify.js +0 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action.bundle.d.ts","sourceRoot":"","sources":["../../../src/cli/config/action.bundle.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAA8B,MAAM,4BAA4B,CAAC;AAE3F,eAAO,MAAM,aAAa,YAAY,CAAC;AACvC,eAAO,MAAM,aAAa,uBAAuB,CAAC;AAElD,qBAAa,aAAc,SAAQ,iBAAiB;IAClD,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,MAAM,CAA6B;;IAU3C,SAAS,CAAC,kBAAkB,IAAI,IAAI;IAkB9B,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;CAYjC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { fsa, LogConfig } from '@basemaps/shared';
|
|
2
|
+
import { ConfigJson } from '@basemaps/config';
|
|
3
|
+
import { CommandLineAction } from '@rushstack/ts-command-line';
|
|
4
|
+
export const DefaultConfig = 'config/';
|
|
5
|
+
export const DefaultOutput = 'config/config.json';
|
|
6
|
+
export class CommandBundle extends CommandLineAction {
|
|
7
|
+
constructor() {
|
|
8
|
+
super({
|
|
9
|
+
actionName: 'bundle',
|
|
10
|
+
summary: 'bundle a config json from config files',
|
|
11
|
+
documentation: 'Given a path of config files and bundle them into one config json',
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
onDefineParameters() {
|
|
15
|
+
this.config = this.defineStringParameter({
|
|
16
|
+
argumentName: 'CONFIG',
|
|
17
|
+
parameterLongName: '--config',
|
|
18
|
+
description: 'Path of config files',
|
|
19
|
+
});
|
|
20
|
+
this.output = this.defineStringParameter({
|
|
21
|
+
argumentName: 'OUTPUT',
|
|
22
|
+
parameterLongName: '--output',
|
|
23
|
+
description: 'Output of the bundle file',
|
|
24
|
+
});
|
|
25
|
+
this.assets = this.defineStringParameter({
|
|
26
|
+
argumentName: 'ASSETS',
|
|
27
|
+
parameterLongName: '--assets',
|
|
28
|
+
description: 'Add assets location into the config bundle file',
|
|
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 : DefaultConfig;
|
|
35
|
+
const bundle = (_b = this.output.value) !== null && _b !== void 0 ? _b : DefaultOutput;
|
|
36
|
+
const mem = await ConfigJson.fromPath(config, logger);
|
|
37
|
+
const configJson = mem.toJson();
|
|
38
|
+
const assets = this.assets.value;
|
|
39
|
+
if (assets)
|
|
40
|
+
configJson.assets = assets;
|
|
41
|
+
await fsa.writeJson(bundle, configJson);
|
|
42
|
+
logger.info({ path: bundle }, 'ConfigBundled');
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=action.bundle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action.bundle.js","sourceRoot":"","sources":["../../../src/cli/config/action.bundle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAA8B,MAAM,4BAA4B,CAAC;AAE3F,MAAM,CAAC,MAAM,aAAa,GAAG,SAAS,CAAC;AACvC,MAAM,CAAC,MAAM,aAAa,GAAG,oBAAoB,CAAC;AAElD,MAAM,OAAO,aAAc,SAAQ,iBAAiB;IAKlD;QACE,KAAK,CAAC;YACJ,UAAU,EAAE,QAAQ;YACpB,OAAO,EAAE,wCAAwC;YACjD,aAAa,EAAE,mEAAmE;SACnF,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,sBAAsB;SACpC,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,qBAAqB,CAAC;YACvC,YAAY,EAAE,QAAQ;YACtB,iBAAiB,EAAE,UAAU;YAC7B,WAAW,EAAE,2BAA2B;SACzC,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,qBAAqB,CAAC;YACvC,YAAY,EAAE,QAAQ;YACtB,iBAAiB,EAAE,UAAU;YAC7B,WAAW,EAAE,iDAAiD;SAC/D,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,SAAS;;QACb,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,MAAA,IAAI,CAAC,MAAM,CAAC,KAAK,mCAAI,aAAa,CAAC;QAClD,MAAM,MAAM,GAAG,MAAA,IAAI,CAAC,MAAM,CAAC,KAAK,mCAAI,aAAa,CAAC;QAClD,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACtD,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;QACjC,IAAI,MAAM;YAAE,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC;QACvC,MAAM,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QACxC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,eAAe,CAAC,CAAC;QAC/C,OAAO;IACT,CAAC;CACF"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { BaseConfig, ConfigProviderMemory } from '@basemaps/config';
|
|
2
|
+
import { CommandLineAction } from '@rushstack/ts-command-line';
|
|
3
|
+
export declare class CommandImport extends CommandLineAction {
|
|
4
|
+
private config;
|
|
5
|
+
private backup;
|
|
6
|
+
private commit;
|
|
7
|
+
promises: Promise<boolean>[];
|
|
8
|
+
/** List of paths to invalidate at the end of the request */
|
|
9
|
+
invalidations: string[];
|
|
10
|
+
/** List of paths to invalidate at the end of the request */
|
|
11
|
+
backupConfig: ConfigProviderMemory;
|
|
12
|
+
constructor();
|
|
13
|
+
protected onDefineParameters(): void;
|
|
14
|
+
onExecute(): Promise<void>;
|
|
15
|
+
update(config: BaseConfig, commit: boolean): void;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=action.import.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action.import.d.ts","sourceRoot":"","sources":["../../../src/cli/config/action.import.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAiB,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACnF,OAAO,EAAE,iBAAiB,EAAwD,MAAM,4BAA4B,CAAC;AAIrH,qBAAa,aAAc,SAAQ,iBAAiB;IAClD,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,MAAM,CAA2B;IAEzC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,CAAM;IAClC,4DAA4D;IAC5D,aAAa,EAAE,MAAM,EAAE,CAAM;IAC7B,4DAA4D;IAC5D,YAAY,EAAE,oBAAoB,CAA8B;;IAUhE,SAAS,CAAC,kBAAkB,IAAI,IAAI;IAmB9B,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IA+ChC,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI;CAiBlD"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { Env, fsa, LogConfig } from '@basemaps/shared';
|
|
2
|
+
import { ConfigProviderMemory } from '@basemaps/config';
|
|
3
|
+
import { CommandLineAction } from '@rushstack/ts-command-line';
|
|
4
|
+
import { Q, Updater } from './config.update.js';
|
|
5
|
+
import { invalidateCache } from '../util.js';
|
|
6
|
+
export class CommandImport extends CommandLineAction {
|
|
7
|
+
constructor() {
|
|
8
|
+
super({
|
|
9
|
+
actionName: 'import',
|
|
10
|
+
summary: 'import a config json into dynamodb',
|
|
11
|
+
documentation: 'Given a valid bundle config json and import them into dynamodb',
|
|
12
|
+
});
|
|
13
|
+
this.promises = [];
|
|
14
|
+
/** List of paths to invalidate at the end of the request */
|
|
15
|
+
this.invalidations = [];
|
|
16
|
+
/** List of paths to invalidate at the end of the request */
|
|
17
|
+
this.backupConfig = new ConfigProviderMemory();
|
|
18
|
+
}
|
|
19
|
+
onDefineParameters() {
|
|
20
|
+
this.config = this.defineStringParameter({
|
|
21
|
+
argumentName: 'CONFIG',
|
|
22
|
+
parameterLongName: '--config',
|
|
23
|
+
description: 'Path of config json',
|
|
24
|
+
required: true,
|
|
25
|
+
});
|
|
26
|
+
this.backup = this.defineStringParameter({
|
|
27
|
+
argumentName: 'BACKUP',
|
|
28
|
+
parameterLongName: '--backup',
|
|
29
|
+
description: 'Backup the old config into a config bundle json',
|
|
30
|
+
});
|
|
31
|
+
this.commit = this.defineFlagParameter({
|
|
32
|
+
parameterLongName: '--commit',
|
|
33
|
+
description: 'Actually start the import',
|
|
34
|
+
required: false,
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
async onExecute() {
|
|
38
|
+
var _a;
|
|
39
|
+
const logger = LogConfig.get();
|
|
40
|
+
logger.level = 'trace';
|
|
41
|
+
const commit = (_a = this.commit.value) !== null && _a !== void 0 ? _a : false;
|
|
42
|
+
const config = this.config.value;
|
|
43
|
+
const backup = this.backup.value;
|
|
44
|
+
if (config == null)
|
|
45
|
+
throw new Error('Please provide a config json');
|
|
46
|
+
const HostPrefix = Env.isProduction() ? '' : 'dev.';
|
|
47
|
+
const healthEndpoint = `https://${HostPrefix}basemaps.linz.govt.nz/v1/health`;
|
|
48
|
+
logger.info({ url: healthEndpoint }, 'Import:ValidateHealth');
|
|
49
|
+
if (commit) {
|
|
50
|
+
const res = await fetch(healthEndpoint);
|
|
51
|
+
if (!res.ok)
|
|
52
|
+
throw new Error('Cannot update basemaps is unhealthy');
|
|
53
|
+
}
|
|
54
|
+
logger.info({ config }, 'Import:Load');
|
|
55
|
+
const configJson = await fsa.readJson(config);
|
|
56
|
+
const mem = ConfigProviderMemory.fromJson(configJson);
|
|
57
|
+
mem.createVirtualTileSets();
|
|
58
|
+
logger.info({ config }, 'Import:Start');
|
|
59
|
+
for (const config of mem.objects.values())
|
|
60
|
+
this.update(config, commit);
|
|
61
|
+
await Promise.all(this.promises);
|
|
62
|
+
if (commit && this.invalidations.length > 0) {
|
|
63
|
+
// Lots of invalidations just invalidate everything
|
|
64
|
+
if (this.invalidations.length > 10) {
|
|
65
|
+
await invalidateCache('/*', commit);
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
await invalidateCache(this.invalidations, commit);
|
|
69
|
+
}
|
|
70
|
+
await new Promise((resolve) => setTimeout(resolve, 1000));
|
|
71
|
+
const res = await fetch(healthEndpoint);
|
|
72
|
+
if (!res.ok)
|
|
73
|
+
throw new Error('Basemaps is unhealthy');
|
|
74
|
+
}
|
|
75
|
+
if (backup) {
|
|
76
|
+
await fsa.writeJson(backup, this.backupConfig.toJson());
|
|
77
|
+
}
|
|
78
|
+
if (commit !== true)
|
|
79
|
+
logger.info('DryRun:Done');
|
|
80
|
+
}
|
|
81
|
+
update(config, commit) {
|
|
82
|
+
const promise = Q(async () => {
|
|
83
|
+
const updater = new Updater(config, commit);
|
|
84
|
+
const hasChanges = await updater.reconcile();
|
|
85
|
+
if (hasChanges) {
|
|
86
|
+
this.invalidations.push(updater.invalidatePath());
|
|
87
|
+
const oldData = await updater.getOldData();
|
|
88
|
+
if (oldData != null)
|
|
89
|
+
this.backupConfig.put(oldData); // No need to backup anything if there is new insert
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
this.backupConfig.put(config);
|
|
93
|
+
}
|
|
94
|
+
return true;
|
|
95
|
+
});
|
|
96
|
+
this.promises.push(promise);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=action.import.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action.import.js","sourceRoot":"","sources":["../../../src/cli/config/action.import.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { LogType } from '@basemaps/shared';
|
|
2
|
+
import diff from 'deep-diff';
|
|
3
|
+
export declare const IgnoredProperties: string[];
|
|
4
|
+
export declare class ConfigDiff {
|
|
5
|
+
static getDiff<T>(changes: diff.Diff<T, T>[]): string;
|
|
6
|
+
static showDiff<T extends {
|
|
7
|
+
id: string;
|
|
8
|
+
}>(type: string, oldData: T, newData: T, logger: LogType): boolean;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=config.diff.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.diff.d.ts","sourceRoot":"","sources":["../../../src/cli/config/config.diff.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3C,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,eAAO,MAAM,iBAAiB,UAAyD,CAAC;AAExF,qBAAa,UAAU;IACrB,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,MAAM;IA0BrD,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO;CAW1G"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import c from 'ansi-colors';
|
|
2
|
+
import diff from 'deep-diff';
|
|
3
|
+
export const IgnoredProperties = ['id', 'createdAt', 'updatedAt', 'year', 'resolution'];
|
|
4
|
+
export class ConfigDiff {
|
|
5
|
+
static getDiff(changes) {
|
|
6
|
+
let output = '';
|
|
7
|
+
let isArray = false;
|
|
8
|
+
for (const change of changes) {
|
|
9
|
+
if (change.kind === 'A') {
|
|
10
|
+
if (change.path)
|
|
11
|
+
output += change.path.join();
|
|
12
|
+
output += this.getDiff([change.item]);
|
|
13
|
+
isArray = true; // Stop displaying the array changes for each line.
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
if (isArray)
|
|
17
|
+
continue;
|
|
18
|
+
if (change.kind === 'E') {
|
|
19
|
+
if (change.path)
|
|
20
|
+
output += change.path.join();
|
|
21
|
+
output += c.green('\t+' + JSON.stringify(change.rhs));
|
|
22
|
+
output += c.red('\t-' + JSON.stringify(change.lhs)) + '\n';
|
|
23
|
+
}
|
|
24
|
+
else if (change.kind === 'N') {
|
|
25
|
+
if (change.path)
|
|
26
|
+
output += change.path.join();
|
|
27
|
+
output += c.green('\t+' + JSON.stringify(change.rhs)) + '\n';
|
|
28
|
+
}
|
|
29
|
+
else if (change.kind === 'D') {
|
|
30
|
+
if (change.path)
|
|
31
|
+
output += change.path.join();
|
|
32
|
+
output += c.red('\t-' + JSON.stringify(change.lhs)) + '\n';
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return output.trim();
|
|
37
|
+
}
|
|
38
|
+
static showDiff(type, oldData, newData, logger) {
|
|
39
|
+
const changes = diff.diff(oldData, newData, (_path, key) => IgnoredProperties.indexOf(key) >= 0);
|
|
40
|
+
if (changes) {
|
|
41
|
+
const changeDif = ConfigDiff.getDiff(changes);
|
|
42
|
+
logger.info({ type, record: newData.id }, 'Changes');
|
|
43
|
+
// eslint-disable-next-line no-console
|
|
44
|
+
console.log(changeDif);
|
|
45
|
+
return true;
|
|
46
|
+
}
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=config.diff.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.diff.js","sourceRoot":"","sources":["../../../src/cli/config/config.diff.ts"],"names":[],"mappings":"AACA,OAAO,CAAC,MAAM,aAAa,CAAC;AAC5B,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;AAExF,MAAM,OAAO,UAAU;IACrB,MAAM,CAAC,OAAO,CAAI,OAA0B;QAC1C,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;YAC5B,IAAI,MAAM,CAAC,IAAI,KAAK,GAAG,EAAE;gBACvB,IAAI,MAAM,CAAC,IAAI;oBAAE,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBAC9C,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;gBACtC,OAAO,GAAG,IAAI,CAAC,CAAC,mDAAmD;aACpE;iBAAM;gBACL,IAAI,OAAO;oBAAE,SAAS;gBACtB,IAAI,MAAM,CAAC,IAAI,KAAK,GAAG,EAAE;oBACvB,IAAI,MAAM,CAAC,IAAI;wBAAE,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;oBAC9C,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;oBACtD,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;iBAC5D;qBAAM,IAAI,MAAM,CAAC,IAAI,KAAK,GAAG,EAAE;oBAC9B,IAAI,MAAM,CAAC,IAAI;wBAAE,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;oBAC9C,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;iBAC9D;qBAAM,IAAI,MAAM,CAAC,IAAI,KAAK,GAAG,EAAE;oBAC9B,IAAI,MAAM,CAAC,IAAI;wBAAE,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;oBAC9C,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;iBAC5D;aACF;SACF;QACD,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC;IAED,MAAM,CAAC,QAAQ,CAA2B,IAAY,EAAE,OAAU,EAAE,OAAU,EAAE,MAAe;QAC7F,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,KAAe,EAAE,GAAW,EAAE,EAAE,CAAC,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QACnH,IAAI,OAAO,EAAE;YACX,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC9C,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;YACrD,sCAAsC;YACtC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACvB,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { BaseConfig, ConfigTileSet, ConfigImagery, ConfigProvider, ConfigVectorStyle } from '@basemaps/config';
|
|
2
|
+
import { BasemapsConfigObject } from '@basemaps/config/build/base.config.js';
|
|
3
|
+
import { LogType } from '@basemaps/shared';
|
|
4
|
+
export declare const Q: import("p-limit").LimitFunction;
|
|
5
|
+
export declare class Updater<S extends BaseConfig = BaseConfig> {
|
|
6
|
+
config: S;
|
|
7
|
+
_oldData: Promise<ConfigImagery | ConfigTileSet | ConfigProvider | ConfigVectorStyle | null>;
|
|
8
|
+
prefix: string;
|
|
9
|
+
isCommit: boolean;
|
|
10
|
+
logger: LogType;
|
|
11
|
+
/**
|
|
12
|
+
* Class to apply an TileSetConfig source to the tile metadata db
|
|
13
|
+
* @param config a string or TileSetConfig to use
|
|
14
|
+
*/
|
|
15
|
+
constructor(config: S, isCommit: boolean);
|
|
16
|
+
getDB(): BasemapsConfigObject<ConfigTileSet | ConfigImagery | ConfigProvider | ConfigVectorStyle>;
|
|
17
|
+
getConfig(): ConfigTileSet | ConfigImagery | ConfigProvider | ConfigVectorStyle;
|
|
18
|
+
invalidatePath(): string;
|
|
19
|
+
getOldData(): Promise<ConfigImagery | ConfigTileSet | ConfigProvider | ConfigVectorStyle | null>;
|
|
20
|
+
/**
|
|
21
|
+
* Reconcile the differences between the config and the tile metadata DB and update if changed.
|
|
22
|
+
*/
|
|
23
|
+
reconcile(): Promise<boolean>;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=config.update.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.update.d.ts","sourceRoot":"","sources":["../../../src/cli/config/config.update.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EAGV,aAAa,EACb,aAAa,EACb,cAAc,EACd,iBAAiB,EAElB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,EAAa,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAItD,eAAO,MAAM,CAAC,iCAAa,CAAC;AAE5B,qBAAa,OAAO,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU;IACpD,MAAM,EAAE,CAAC,CAAC;IACV,QAAQ,EAAE,OAAO,CAAC,aAAa,GAAG,aAAa,GAAG,cAAc,GAAG,iBAAiB,GAAG,IAAI,CAAC,CAAC;IAC7F,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAEhB;;;OAGG;gBACS,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,OAAO;IASxC,KAAK,IAAI,oBAAoB,CAAC,aAAa,GAAG,aAAa,GAAG,cAAc,GAAG,iBAAiB,CAAC;IAQjG,SAAS,IAAI,aAAa,GAAG,aAAa,GAAG,cAAc,GAAG,iBAAiB;IAQ/E,cAAc,IAAI,MAAM;IAMxB,UAAU,IAAI,OAAO,CAAC,aAAa,GAAG,aAAa,GAAG,cAAc,GAAG,iBAAiB,GAAG,IAAI,CAAC;IAMhG;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;CAgBpC"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { ConfigDynamoBase, Config, ConfigPrefix, } from '@basemaps/config';
|
|
2
|
+
import { LogConfig } from '@basemaps/shared';
|
|
3
|
+
import { ConfigDiff } from './config.diff.js';
|
|
4
|
+
import PLimit from 'p-limit';
|
|
5
|
+
export const Q = PLimit(10);
|
|
6
|
+
export class Updater {
|
|
7
|
+
/**
|
|
8
|
+
* Class to apply an TileSetConfig source to the tile metadata db
|
|
9
|
+
* @param config a string or TileSetConfig to use
|
|
10
|
+
*/
|
|
11
|
+
constructor(config, isCommit) {
|
|
12
|
+
this.config = config;
|
|
13
|
+
const prefix = Config.getPrefix(config.id);
|
|
14
|
+
if (prefix == null)
|
|
15
|
+
throw new Error(`Incorrect Config Id ${config.id}`);
|
|
16
|
+
this.prefix = prefix;
|
|
17
|
+
this.isCommit = isCommit ? isCommit : false;
|
|
18
|
+
this.logger = LogConfig.get();
|
|
19
|
+
}
|
|
20
|
+
getDB() {
|
|
21
|
+
if (this.prefix === ConfigPrefix.Imagery)
|
|
22
|
+
return Config.Imagery;
|
|
23
|
+
if (this.prefix === ConfigPrefix.TileSet)
|
|
24
|
+
return Config.TileSet;
|
|
25
|
+
if (this.prefix === ConfigPrefix.Provider)
|
|
26
|
+
return Config.Provider;
|
|
27
|
+
if (this.prefix === ConfigPrefix.Style)
|
|
28
|
+
return Config.Style;
|
|
29
|
+
throw Error(`Unable to find the database table for prefix ${this.prefix}`);
|
|
30
|
+
}
|
|
31
|
+
getConfig() {
|
|
32
|
+
if (this.prefix === ConfigPrefix.Imagery)
|
|
33
|
+
return this.config;
|
|
34
|
+
if (this.prefix === ConfigPrefix.TileSet)
|
|
35
|
+
return this.config;
|
|
36
|
+
if (this.prefix === ConfigPrefix.Provider)
|
|
37
|
+
return this.config;
|
|
38
|
+
if (this.prefix === ConfigPrefix.Style)
|
|
39
|
+
return this.config;
|
|
40
|
+
throw Error(`Failed to cast the config ${this.config}`);
|
|
41
|
+
}
|
|
42
|
+
invalidatePath() {
|
|
43
|
+
if (this.prefix === ConfigPrefix.Provider)
|
|
44
|
+
return '/v1/*/WMTSCapabilities.xml';
|
|
45
|
+
else if (this.prefix === ConfigPrefix.Style)
|
|
46
|
+
return `/v1/tiles/togographic/style/${this.config.id.slice(3)}.json`;
|
|
47
|
+
else
|
|
48
|
+
return `/v1/tiles/${this.config.id.slice(3)}/*`;
|
|
49
|
+
}
|
|
50
|
+
getOldData() {
|
|
51
|
+
if (this._oldData)
|
|
52
|
+
return this._oldData;
|
|
53
|
+
this._oldData = this.getDB().get(this.config.id);
|
|
54
|
+
return this._oldData;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Reconcile the differences between the config and the tile metadata DB and update if changed.
|
|
58
|
+
*/
|
|
59
|
+
async reconcile() {
|
|
60
|
+
const newData = this.getConfig();
|
|
61
|
+
const db = this.getDB();
|
|
62
|
+
const oldData = await this.getOldData();
|
|
63
|
+
if (oldData == null || ConfigDiff.showDiff(db.prefix, oldData, newData, this.logger)) {
|
|
64
|
+
const operation = oldData == null ? 'Insert' : 'Update';
|
|
65
|
+
this.logger.info({ type: db.prefix, record: newData.id, commit: this.isCommit }, `Change:${operation}`);
|
|
66
|
+
if (this.isCommit) {
|
|
67
|
+
if (db instanceof ConfigDynamoBase)
|
|
68
|
+
await db.put(newData);
|
|
69
|
+
else
|
|
70
|
+
throw new Error('Unable to commit changes to: ' + db.prefix);
|
|
71
|
+
}
|
|
72
|
+
return true;
|
|
73
|
+
}
|
|
74
|
+
this.logger.trace({ type: db.prefix, record: newData.id }, 'NoChanges');
|
|
75
|
+
return false;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=config.update.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.update.js","sourceRoot":"","sources":["../../../src/cli/config/config.update.ts"],"names":[],"mappings":"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"}
|
package/build/cli/folder.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"folder.js","sourceRoot":"","sources":["../../src/cli/folder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,mDAAmD;AACnD,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,MAAc;;IACjD,MAAM,QAAQ,GAAG,MAAA,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,mCAAI,MAAM,CAAC;IACnD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAE/C,MAAM,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,mDAAmD;AACnD,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,SAAiB,EAAE,IAAY;IAClE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAE9C,MAAM,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,OAAO,UAAU,CAAC;AACpB,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { BaseCommandLine } from '@basemaps/shared/build/cli/base.js';
|
|
3
3
|
import 'source-map-support/register.js';
|
|
4
|
-
export declare class
|
|
4
|
+
export declare class BasemapsConfigCommandLine extends BaseCommandLine {
|
|
5
5
|
constructor();
|
|
6
6
|
}
|
|
7
7
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,gCAAgC,CAAC;AAWxC,qBAAa,yBAA0B,SAAQ,eAAe;;CAqB7D"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { BaseCommandLine } from '@basemaps/shared/build/cli/base.js';
|
|
3
|
+
import 'source-map-support/register.js';
|
|
4
|
+
import { CommandList } from './aws/action.aws.list.js';
|
|
5
|
+
import { CommandCogCreate } from './cogify/action.cog.js';
|
|
6
|
+
import { CommandJobCreate } from './cogify/action.job.js';
|
|
7
|
+
import { CommandBundleAssets } from './config/action.bundle.assets.js';
|
|
8
|
+
import { CommandBundle } from './config/action.bundle.js';
|
|
9
|
+
import { CommandImport } from './config/action.import.js';
|
|
10
|
+
import { CommandScreenShot } from './screenshot/action.screenshot.js';
|
|
11
|
+
import { CommandServe } from './server/action.serve.js';
|
|
12
|
+
import { CommandSprites } from './sprites/action.sprites.js';
|
|
13
|
+
export class BasemapsConfigCommandLine extends BaseCommandLine {
|
|
14
|
+
constructor() {
|
|
15
|
+
super({
|
|
16
|
+
toolFilename: 'bmc',
|
|
17
|
+
toolDescription: 'Basemaps config command tools',
|
|
18
|
+
});
|
|
19
|
+
this.addAction(new CommandCogCreate());
|
|
20
|
+
this.addAction(new CommandJobCreate());
|
|
21
|
+
this.addAction(new CommandBundle());
|
|
22
|
+
this.addAction(new CommandBundleAssets());
|
|
23
|
+
this.addAction(new CommandImport());
|
|
24
|
+
this.addAction(new CommandScreenShot());
|
|
25
|
+
this.addAction(new CommandSprites());
|
|
26
|
+
this.addAction(new CommandServe());
|
|
27
|
+
this.addAction(new CommandList());
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,gCAAgC,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D,MAAM,OAAO,yBAA0B,SAAQ,eAAe;IAC5D;QACE,KAAK,CAAC;YACJ,YAAY,EAAE,KAAK;YACnB,eAAe,EAAE,+BAA+B;SACjD,CAAC,CAAC;QAEH,IAAI,CAAC,SAAS,CAAC,IAAI,gBAAgB,EAAE,CAAC,CAAC;QACvC,IAAI,CAAC,SAAS,CAAC,IAAI,gBAAgB,EAAE,CAAC,CAAC;QAEvC,IAAI,CAAC,SAAS,CAAC,IAAI,aAAa,EAAE,CAAC,CAAC;QACpC,IAAI,CAAC,SAAS,CAAC,IAAI,mBAAmB,EAAE,CAAC,CAAC;QAC1C,IAAI,CAAC,SAAS,CAAC,IAAI,aAAa,EAAE,CAAC,CAAC;QAEpC,IAAI,CAAC,SAAS,CAAC,IAAI,iBAAiB,EAAE,CAAC,CAAC;QAExC,IAAI,CAAC,SAAS,CAAC,IAAI,cAAc,EAAE,CAAC,CAAC;QACrC,IAAI,CAAC,SAAS,CAAC,IAAI,YAAY,EAAE,CAAC,CAAC;QAEnC,IAAI,CAAC,SAAS,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC;IACpC,CAAC;CACF"}
|
|
@@ -0,0 +1,66 @@
|
|
|
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
|
+
import { z } from 'zod';
|
|
6
|
+
export declare const DefaultTestTiles = "./test-tiles/default.test.tiles.json";
|
|
7
|
+
export declare const DefaultHost = "basemaps.linz.govt.nz";
|
|
8
|
+
export declare const DefaultOutput = ".artifacts/visual-snapshots/";
|
|
9
|
+
declare enum TileMatrixIdentifier {
|
|
10
|
+
Nztm2000Quad = "NZTM2000Quad",
|
|
11
|
+
Google = "WebMercatorQuad"
|
|
12
|
+
}
|
|
13
|
+
declare const zTileTest: z.ZodObject<{
|
|
14
|
+
name: z.ZodString;
|
|
15
|
+
tileMatrix: z.ZodNativeEnum<typeof TileMatrixIdentifier>;
|
|
16
|
+
location: z.ZodObject<{
|
|
17
|
+
lat: z.ZodNumber;
|
|
18
|
+
lng: z.ZodNumber;
|
|
19
|
+
z: z.ZodNumber;
|
|
20
|
+
}, "strip", z.ZodTypeAny, {
|
|
21
|
+
z: number;
|
|
22
|
+
lat: number;
|
|
23
|
+
lng: number;
|
|
24
|
+
}, {
|
|
25
|
+
z: number;
|
|
26
|
+
lat: number;
|
|
27
|
+
lng: number;
|
|
28
|
+
}>;
|
|
29
|
+
tileSet: z.ZodString;
|
|
30
|
+
style: z.ZodOptional<z.ZodString>;
|
|
31
|
+
}, "strip", z.ZodTypeAny, {
|
|
32
|
+
style?: string | undefined;
|
|
33
|
+
name: string;
|
|
34
|
+
location: {
|
|
35
|
+
z: number;
|
|
36
|
+
lat: number;
|
|
37
|
+
lng: number;
|
|
38
|
+
};
|
|
39
|
+
tileMatrix: TileMatrixIdentifier;
|
|
40
|
+
tileSet: string;
|
|
41
|
+
}, {
|
|
42
|
+
style?: string | undefined;
|
|
43
|
+
name: string;
|
|
44
|
+
location: {
|
|
45
|
+
z: number;
|
|
46
|
+
lat: number;
|
|
47
|
+
lng: number;
|
|
48
|
+
};
|
|
49
|
+
tileMatrix: TileMatrixIdentifier;
|
|
50
|
+
tileSet: string;
|
|
51
|
+
}>;
|
|
52
|
+
export declare type TileTestSchema = z.infer<typeof zTileTest>;
|
|
53
|
+
export declare class CommandScreenShot extends CommandLineAction {
|
|
54
|
+
private config;
|
|
55
|
+
private host;
|
|
56
|
+
private tiles;
|
|
57
|
+
private assets;
|
|
58
|
+
private output;
|
|
59
|
+
constructor();
|
|
60
|
+
protected onDefineParameters(): void;
|
|
61
|
+
onExecute(): Promise<void>;
|
|
62
|
+
startServer(port: number, config: string, logger: LogType): Promise<FastifyInstance>;
|
|
63
|
+
takeScreenshots(host: string, chrome: Browser, logger: LogType): Promise<void>;
|
|
64
|
+
}
|
|
65
|
+
export {};
|
|
66
|
+
//# sourceMappingURL=action.screenshot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
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;AAC/C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,gBAAgB,yCAAyC,CAAC;AACvE,eAAO,MAAM,WAAW,0BAA0B,CAAC;AACnD,eAAO,MAAM,aAAa,iCAAiC,CAAC;AAE5D,aAAK,oBAAoB;IACvB,YAAY,iBAAiB;IAC7B,MAAM,oBAAoB;CAC3B;AAQD,QAAA,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAMb,CAAC;AAEH,oBAAY,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,CAAC;AAEvD,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;IAkC9B,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;CAuCrF"}
|
|
@@ -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
|