@basemaps/cli-config 8.10.1 → 8.11.2
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/build/__tests__/config.diff.data.d.ts +3 -0
- package/build/__tests__/config.diff.data.js +77 -0
- package/build/__tests__/config.diff.data.js.map +1 -1
- package/build/__tests__/config.diff.test.js +275 -65
- package/build/__tests__/config.diff.test.js.map +1 -1
- package/build/cli/action.diff.d.ts +17 -0
- package/build/cli/action.diff.js +120 -0
- package/build/cli/action.diff.js.map +1 -0
- package/build/cli/action.import.js +1 -1
- package/build/cli/config.diff.js +1 -1
- package/build/cli/config.diff.js.map +1 -1
- package/build/cli/diff/config.diff.d.ts +43 -0
- package/build/cli/diff/config.diff.js +100 -0
- package/build/cli/diff/config.diff.js.map +1 -0
- package/build/cli/diff/config.diff.markdown.d.ts +14 -0
- package/build/cli/diff/config.diff.markdown.js +368 -0
- package/build/cli/diff/config.diff.markdown.js.map +1 -0
- package/build/index.d.ts +24 -0
- package/build/index.js +3 -1
- package/build/index.js.map +1 -1
- package/package.json +5 -5
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { ConfigId, ConfigPrefix, ConfigProviderMemory } from '@basemaps/config';
|
|
2
|
+
import { EpsgCode, GoogleTms, Nztm2000QuadTms } from '@basemaps/geo';
|
|
3
|
+
import { Env, fsa, getLogger, logArguments, Url } from '@basemaps/shared';
|
|
4
|
+
import { CliInfo } from '@basemaps/shared/build/cli/info.js';
|
|
5
|
+
import { command, option } from 'cmd-ts';
|
|
6
|
+
import { getVectorVersion } from '../util.js';
|
|
7
|
+
import { diffVectorUpdate } from './config.diff.js';
|
|
8
|
+
import { configTileSetDiff } from './diff/config.diff.js';
|
|
9
|
+
import { diffToMarkdown, EmojiChange, markdownProjectionLink } from './diff/config.diff.markdown.js';
|
|
10
|
+
const PublicUrlBase = Env.isProduction() ? 'https://basemaps.linz.govt.nz/' : 'https://dev.basemaps.linz.govt.nz/';
|
|
11
|
+
const VectorStyles = ['topographic', 'topolite']; // Vector styles that we want to review if vector data changes.
|
|
12
|
+
export const DiffCommand = command({
|
|
13
|
+
name: 'diff',
|
|
14
|
+
version: CliInfo.version,
|
|
15
|
+
description: 'Output the raster and vector differences between two config jsons as a markdown file.',
|
|
16
|
+
args: {
|
|
17
|
+
...logArguments,
|
|
18
|
+
before: option({
|
|
19
|
+
type: Url,
|
|
20
|
+
long: 'before',
|
|
21
|
+
description: 'Path of config json, this can be both a local path or s3 location',
|
|
22
|
+
}),
|
|
23
|
+
after: option({
|
|
24
|
+
type: Url,
|
|
25
|
+
long: 'after',
|
|
26
|
+
description: 'Path of config json, this can be both a local path or s3 location',
|
|
27
|
+
}),
|
|
28
|
+
output: option({
|
|
29
|
+
type: Url,
|
|
30
|
+
long: 'output',
|
|
31
|
+
description: 'File name and path for saving the markdown file',
|
|
32
|
+
}),
|
|
33
|
+
},
|
|
34
|
+
async handler(args) {
|
|
35
|
+
const logger = getLogger(this, args, 'cli-config');
|
|
36
|
+
logger.info({ configBefore: args.before.href, configAfter: args.after.href }, 'Import:Start');
|
|
37
|
+
const beforeConfig = await fsa.readJson(args.before);
|
|
38
|
+
const beforeMem = ConfigProviderMemory.fromJson(beforeConfig, args.before);
|
|
39
|
+
const afterConfig = await fsa.readJson(args.after);
|
|
40
|
+
const afterMem = ConfigProviderMemory.fromJson(afterConfig, args.after);
|
|
41
|
+
logger.info('Import:Done');
|
|
42
|
+
const diff = configTileSetDiff(beforeMem, afterMem);
|
|
43
|
+
logger.info('Markdown:Start');
|
|
44
|
+
const rasterMarkdown = diffToMarkdown(diff);
|
|
45
|
+
if (afterMem.source == null)
|
|
46
|
+
throw new Error('Source URL not set for the new bundled config.');
|
|
47
|
+
const vectorMarkdown = await vectorDiffToMarkdown(afterMem.source, diff.vector);
|
|
48
|
+
const combinedMarkdown = [rasterMarkdown, vectorMarkdown].filter((s) => s != null).join('\n');
|
|
49
|
+
await fsa.write(args.output, combinedMarkdown);
|
|
50
|
+
logger.info({ markdown: args.output.href }, 'Markdown:Done');
|
|
51
|
+
},
|
|
52
|
+
});
|
|
53
|
+
/**
|
|
54
|
+
* Generates markdown for a list of changed vector tilesets.
|
|
55
|
+
*
|
|
56
|
+
* @param configUrl bundled config url
|
|
57
|
+
* @param diffs list of changed vector tilesets
|
|
58
|
+
*/
|
|
59
|
+
async function vectorDiffToMarkdown(configUrl, diffs) {
|
|
60
|
+
if (diffs.length === 0)
|
|
61
|
+
return null;
|
|
62
|
+
// Output for vector config changes
|
|
63
|
+
const lines = [];
|
|
64
|
+
lines.push('# Vector Data Update');
|
|
65
|
+
lines.push('## Tilesets');
|
|
66
|
+
for (const diff of diffs) {
|
|
67
|
+
const id = ConfigId.unprefix(ConfigPrefix.TileSet, diff.id);
|
|
68
|
+
const version = getVectorVersion(id);
|
|
69
|
+
const projections = [EpsgCode.Google];
|
|
70
|
+
if (version != null)
|
|
71
|
+
projections.push(EpsgCode.Nztm2000); // topographic (v1) does not support 2193
|
|
72
|
+
const symbol = EmojiChange[diff.type];
|
|
73
|
+
lines.push(`### ${symbol} ${id}`);
|
|
74
|
+
if (diff.type === 'new' || diff.type === 'updated') {
|
|
75
|
+
// style previews
|
|
76
|
+
for (const style of VectorStyles) {
|
|
77
|
+
const styleId = version ? `${style}-${version}` : style;
|
|
78
|
+
const links = [];
|
|
79
|
+
for (const projection of projections) {
|
|
80
|
+
const url = new URL(PublicUrlBase);
|
|
81
|
+
url.searchParams.set('config', configUrl.href);
|
|
82
|
+
url.searchParams.set('i', id); // layer id
|
|
83
|
+
url.searchParams.set('style', styleId);
|
|
84
|
+
url.searchParams.set('projection', projection.toString());
|
|
85
|
+
url.searchParams.set('debug', 'true'); // debug mode
|
|
86
|
+
links.push(markdownProjectionLink(projection, url));
|
|
87
|
+
}
|
|
88
|
+
lines.push(`- ${styleId}: ${links.join(' | ')}`);
|
|
89
|
+
}
|
|
90
|
+
// feature changes
|
|
91
|
+
const featureChanges = await diffVectorUpdate(diff.after, diff.type === 'new' ? null : diff.before);
|
|
92
|
+
lines.push(`## Feature updates for \`${id}\``);
|
|
93
|
+
lines.push(...featureChanges);
|
|
94
|
+
const reportMarkdown = await outputAnalyseReports(diff.after);
|
|
95
|
+
if (reportMarkdown.length > 0)
|
|
96
|
+
lines.push(...reportMarkdown);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
// FIXME: Re-introduce logic for capturing style config changes.
|
|
100
|
+
return lines.join('\n');
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Prepares the vector tile analyse reports for markdown output.
|
|
104
|
+
*/
|
|
105
|
+
async function outputAnalyseReports(diff) {
|
|
106
|
+
const reportMarkdown = [];
|
|
107
|
+
const layer = diff.layers[0];
|
|
108
|
+
for (const tms of [GoogleTms, Nztm2000QuadTms]) {
|
|
109
|
+
const layerPath = layer[tms.projection.code];
|
|
110
|
+
if (layerPath == null)
|
|
111
|
+
continue;
|
|
112
|
+
const reportPath = layerPath.substring(0, layerPath.lastIndexOf('/')) + '/report.md';
|
|
113
|
+
if (await fsa.exists(fsa.toUrl(reportPath))) {
|
|
114
|
+
const reportFile = await fsa.read(fsa.toUrl(reportPath));
|
|
115
|
+
reportMarkdown.push(`## Vector Tile Analyse Report for ${tms.identifier}`, `<details><summary>🟩 ${tms.identifier}(Click to Expand) 🟩</summary>`, reportFile.toString(), '</details>\n');
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
return reportMarkdown;
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=action.diff.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action.diff.js","sourceRoot":"","sources":["../../src/cli/action.diff.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,QAAQ,EAAE,YAAY,EAAE,oBAAoB,EAAuB,MAAM,kBAAkB,CAAC;AACpH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,OAAO,EAAE,MAAM,oCAAoC,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAQ,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAErG,MAAM,aAAa,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC,oCAAoC,CAAC;AAEnH,MAAM,YAAY,GAAG,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC,CAAC,+DAA+D;AAEjH,MAAM,CAAC,MAAM,WAAW,GAAG,OAAO,CAAC;IACjC,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,OAAO,CAAC,OAAO;IACxB,WAAW,EAAE,uFAAuF;IACpG,IAAI,EAAE;QACJ,GAAG,YAAY;QACf,MAAM,EAAE,MAAM,CAAC;YACb,IAAI,EAAE,GAAG;YACT,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,mEAAmE;SACjF,CAAC;QACF,KAAK,EAAE,MAAM,CAAC;YACZ,IAAI,EAAE,GAAG;YACT,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,mEAAmE;SACjF,CAAC;QACF,MAAM,EAAE,MAAM,CAAC;YACb,IAAI,EAAE,GAAG;YACT,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,iDAAiD;SAC/D,CAAC;KACH;IAED,KAAK,CAAC,OAAO,CAAC,IAAI;QAChB,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;QAEnD,MAAM,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,cAAc,CAAC,CAAC;QAE9F,MAAM,YAAY,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAgB,IAAI,CAAC,MAAM,CAAC,CAAC;QACpE,MAAM,SAAS,GAAG,oBAAoB,CAAC,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAE3E,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAgB,IAAI,CAAC,KAAK,CAAC,CAAC;QAClE,MAAM,QAAQ,GAAG,oBAAoB,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAExE,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAE3B,MAAM,IAAI,GAAG,iBAAiB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAEpD,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAE9B,MAAM,cAAc,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;QAE5C,IAAI,QAAQ,CAAC,MAAM,IAAI,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;QAC/F,MAAM,cAAc,GAAG,MAAM,oBAAoB,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAEhF,MAAM,gBAAgB,GAAG,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9F,MAAM,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;QAE/C,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,eAAe,CAAC,CAAC;IAC/D,CAAC;CACF,CAAC,CAAC;AAEH;;;;;GAKG;AACH,KAAK,UAAU,oBAAoB,CAAC,SAAc,EAAE,KAAkC;IACpF,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAEpC,mCAAmC;IACnC,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACnC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAE1B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,EAAE,GAAG,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5D,MAAM,OAAO,GAAG,gBAAgB,CAAC,EAAE,CAAC,CAAC;QAErC,MAAM,WAAW,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,OAAO,IAAI,IAAI;YAAE,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,yCAAyC;QAEnG,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtC,KAAK,CAAC,IAAI,CAAC,OAAO,MAAM,IAAI,EAAE,EAAE,CAAC,CAAC;QAElC,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACnD,iBAAiB;YACjB,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;gBACjC,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;gBACxD,MAAM,KAAK,GAAa,EAAE,CAAC;gBAE3B,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;oBACrC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC;oBACnC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;oBAC/C,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW;oBAC1C,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;oBACvC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;oBAC1D,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,aAAa;oBAEpD,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC;gBACtD,CAAC;gBAED,KAAK,CAAC,IAAI,CAAC,KAAK,OAAO,KAAK,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACnD,CAAC;YAED,kBAAkB;YAClB,MAAM,cAAc,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAEpG,KAAK,CAAC,IAAI,CAAC,4BAA4B,EAAE,IAAI,CAAC,CAAC;YAC/C,KAAK,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,CAAC;YAE9B,MAAM,cAAc,GAAG,MAAM,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC9D,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IAED,gEAAgE;IAEhE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,oBAAoB,CAAC,IAAyB;IAC3D,MAAM,cAAc,GAAa,EAAE,CAAC;IACpC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAE7B,KAAK,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,EAAE,CAAC;QAC/C,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAE7C,IAAI,SAAS,IAAI,IAAI;YAAE,SAAS;QAChC,MAAM,UAAU,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,YAAY,CAAC;QAErF,IAAI,MAAM,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;YAC5C,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;YAEzD,cAAc,CAAC,IAAI,CACjB,qCAAqC,GAAG,CAAC,UAAU,EAAE,EACrD,wBAAwB,GAAG,CAAC,UAAU,gCAAgC,EACtE,UAAU,CAAC,QAAQ,EAAE,EACrB,cAAc,CACf,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,cAAc,CAAC;AACxB,CAAC"}
|
|
@@ -367,7 +367,7 @@ async function outputAnalyseReports(change) {
|
|
|
367
367
|
const reportPath = layerPath.substring(0, layerPath.lastIndexOf('/')) + '/report.md';
|
|
368
368
|
if (await fsa.exists(fsa.toUrl(reportPath))) {
|
|
369
369
|
const reportFile = await fsa.read(fsa.toUrl(reportPath));
|
|
370
|
-
reportMarkdown.push(`## Vector Tile
|
|
370
|
+
reportMarkdown.push(`## Vector Tile Analyse Report for ${tms.identifier}`, `<details><summary>🟩 ${tms.identifier}(Click to Expand) 🟩</summary>`, reportFile.toString(), '</details>\n');
|
|
371
371
|
}
|
|
372
372
|
}
|
|
373
373
|
return reportMarkdown;
|
package/build/cli/config.diff.js
CHANGED
|
@@ -2,7 +2,7 @@ import { Epsg } from '@basemaps/geo';
|
|
|
2
2
|
import { fsa } from '@basemaps/shared';
|
|
3
3
|
import c from 'ansi-colors';
|
|
4
4
|
import diff from 'deep-diff';
|
|
5
|
-
export const IgnoredProperties = new Set(['id', 'createdAt', 'updatedAt', 'year', 'resolution']);
|
|
5
|
+
export const IgnoredProperties = new Set(['id', 'createdAt', 'updatedAt', 'year', 'resolution', 'virtual']);
|
|
6
6
|
export class ConfigDiff {
|
|
7
7
|
static getDiff(changes) {
|
|
8
8
|
let output = '';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.diff.js","sourceRoot":"","sources":["../../src/cli/config.diff.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAA4B,MAAM,eAAe,CAAC;AAC/D,OAAO,EAAE,GAAG,EAAW,MAAM,kBAAkB,CAAC;AAChD,OAAO,CAAC,MAAM,aAAa,CAAC;AAC5B,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"config.diff.js","sourceRoot":"","sources":["../../src/cli/config.diff.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { ConfigLayer, ConfigProviderMemory, ConfigTileSetRaster, ConfigTileSetVector } from '@basemaps/config';
|
|
2
|
+
import diff from 'deep-diff';
|
|
3
|
+
export type DiffTileSetUpdated<T> = DiffUpdated<T> & {
|
|
4
|
+
layers: Diff<ConfigLayer>[];
|
|
5
|
+
};
|
|
6
|
+
export type DiffTileSet<T> = DiffNew<T> | DiffRemoved<T> | DiffTileSetUpdated<T>;
|
|
7
|
+
export interface DiffTileSetResult {
|
|
8
|
+
/** List of raster layers that have changed */
|
|
9
|
+
raster: DiffTileSet<ConfigTileSetRaster>[];
|
|
10
|
+
/** List of vector layers that have changed */
|
|
11
|
+
vector: DiffTileSet<ConfigTileSetVector>[];
|
|
12
|
+
/** Old Configuration that was used for the comparison */
|
|
13
|
+
before: ConfigProviderMemory;
|
|
14
|
+
/** New configuration that was used for the comparison */
|
|
15
|
+
after: ConfigProviderMemory;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Diff All the tile sets between two configs an out put a summary of the changes
|
|
19
|
+
*
|
|
20
|
+
* @param before the previous configuration
|
|
21
|
+
* @param after the new configuration
|
|
22
|
+
* @returns
|
|
23
|
+
*/
|
|
24
|
+
export declare function configTileSetDiff(before: ConfigProviderMemory, after: ConfigProviderMemory): DiffTileSetResult;
|
|
25
|
+
export type DiffNew<T> = {
|
|
26
|
+
type: 'new';
|
|
27
|
+
id: string;
|
|
28
|
+
after: T;
|
|
29
|
+
};
|
|
30
|
+
export type DiffRemoved<T> = {
|
|
31
|
+
type: 'removed';
|
|
32
|
+
id: string;
|
|
33
|
+
before: T;
|
|
34
|
+
};
|
|
35
|
+
export type DiffUpdated<T> = {
|
|
36
|
+
type: 'updated';
|
|
37
|
+
id: string;
|
|
38
|
+
before: T;
|
|
39
|
+
after: T;
|
|
40
|
+
changes: diff.Diff<T>[];
|
|
41
|
+
};
|
|
42
|
+
export type Diff<T> = DiffNew<T> | DiffRemoved<T> | DiffUpdated<T>;
|
|
43
|
+
export type DiffType = Diff<unknown>['type'];
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { TileSetType, } from '@basemaps/config';
|
|
2
|
+
import diff from 'deep-diff';
|
|
3
|
+
import { IgnoredProperties } from '../config.diff.js';
|
|
4
|
+
function getAllTileSets(cfg) {
|
|
5
|
+
const tileSets = new Map();
|
|
6
|
+
for (const obj of cfg.objects.values()) {
|
|
7
|
+
if (!cfg.TileSet.is(obj))
|
|
8
|
+
continue;
|
|
9
|
+
if (tileSets.has(obj.id))
|
|
10
|
+
throw new Error(`Duplicate tileSet id ${obj.id}`);
|
|
11
|
+
tileSets.set(obj.id, obj);
|
|
12
|
+
}
|
|
13
|
+
return tileSets;
|
|
14
|
+
}
|
|
15
|
+
function tileSetDiffLayers(before, after) {
|
|
16
|
+
const layerChanges = [];
|
|
17
|
+
const beforeLayers = [...before.layers];
|
|
18
|
+
for (const layer of after.layers) {
|
|
19
|
+
// There are duplicates layers inside the config this makes it hard to know what has changed
|
|
20
|
+
// so only allow comparisons to one layer at a time
|
|
21
|
+
const index = beforeLayers.findIndex((l) => l.name === layer.name);
|
|
22
|
+
if (index > -1) {
|
|
23
|
+
const [el] = beforeLayers.splice(index, 1);
|
|
24
|
+
const layerDiff = diff.diff(el, layer);
|
|
25
|
+
if (layerDiff)
|
|
26
|
+
layerChanges.push({ type: 'updated', id: el.name, before: el, after: layer, changes: layerDiff });
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
layerChanges.push({ type: 'new', id: layer.name, after: layer });
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
for (const beforeLayer of beforeLayers) {
|
|
33
|
+
layerChanges.push({ type: 'removed', id: beforeLayer.name, before: beforeLayer });
|
|
34
|
+
}
|
|
35
|
+
return layerChanges.length > 0 ? layerChanges : null;
|
|
36
|
+
}
|
|
37
|
+
function tileSetDiff(before, after) {
|
|
38
|
+
if (before == null || after == null) {
|
|
39
|
+
if (after != null)
|
|
40
|
+
return { type: 'new', id: after.id, after };
|
|
41
|
+
if (before != null)
|
|
42
|
+
return { type: 'removed', id: before.id, before };
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
// Layers are diffed further down so ignore them from a top level diff
|
|
46
|
+
const topLevelChanges = diff.diff({ ...before, layers: undefined }, { ...after, layers: undefined }, (_path, key) => IgnoredProperties.has(key));
|
|
47
|
+
const layerChanges = tileSetDiffLayers(before, after);
|
|
48
|
+
if (topLevelChanges == null && layerChanges == null)
|
|
49
|
+
return null;
|
|
50
|
+
return {
|
|
51
|
+
type: 'updated',
|
|
52
|
+
id: before.id,
|
|
53
|
+
before,
|
|
54
|
+
after,
|
|
55
|
+
changes: topLevelChanges,
|
|
56
|
+
layers: tileSetDiffLayers(before, after) ?? [],
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Diff All the tile sets between two configs an out put a summary of the changes
|
|
61
|
+
*
|
|
62
|
+
* @param before the previous configuration
|
|
63
|
+
* @param after the new configuration
|
|
64
|
+
* @returns
|
|
65
|
+
*/
|
|
66
|
+
export function configTileSetDiff(before, after) {
|
|
67
|
+
const tileSetBefore = getAllTileSets(before);
|
|
68
|
+
const tileSetAfter = getAllTileSets(after);
|
|
69
|
+
const seen = new Set();
|
|
70
|
+
const rasterDiffs = [];
|
|
71
|
+
const vectorDiffs = [];
|
|
72
|
+
function addDiff(before, after) {
|
|
73
|
+
const type = before?.type ?? after?.type;
|
|
74
|
+
const diff = tileSetDiff(before, after);
|
|
75
|
+
if (diff == null)
|
|
76
|
+
return;
|
|
77
|
+
if (type === TileSetType.Raster)
|
|
78
|
+
rasterDiffs.push(diff);
|
|
79
|
+
else if (type === TileSetType.Vector)
|
|
80
|
+
vectorDiffs.push(diff);
|
|
81
|
+
else
|
|
82
|
+
throw new Error(`Tileset: ${after?.id ?? before?.id} type: ${type} not supported.`);
|
|
83
|
+
}
|
|
84
|
+
for (const tsBefore of tileSetBefore.values()) {
|
|
85
|
+
seen.add(tsBefore.id);
|
|
86
|
+
const tsAfter = tileSetAfter.get(tsBefore.id);
|
|
87
|
+
// Changing from raster to vector or vector to raster
|
|
88
|
+
if (tsAfter != null && tsAfter.type !== tsBefore.type) {
|
|
89
|
+
throw new Error(`TileSet type conversion not allowed: ${tsAfter.id} ${tsBefore.type} -> ${tsAfter.type}`);
|
|
90
|
+
}
|
|
91
|
+
addDiff(tsBefore, tsAfter);
|
|
92
|
+
}
|
|
93
|
+
for (const tsAfter of tileSetAfter.values()) {
|
|
94
|
+
if (seen.has(tsAfter.id))
|
|
95
|
+
continue;
|
|
96
|
+
addDiff(undefined, tsAfter);
|
|
97
|
+
}
|
|
98
|
+
return { raster: rasterDiffs, vector: vectorDiffs, before, after };
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=config.diff.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.diff.js","sourceRoot":"","sources":["../../../src/cli/diff/config.diff.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { EpsgCode } from '@basemaps/geo';
|
|
2
|
+
import { Diff } from 'deep-diff';
|
|
3
|
+
import { DiffTileSetResult, DiffType } from './config.diff.js';
|
|
4
|
+
export declare const EmojiChange: Record<DiffType, string>;
|
|
5
|
+
export declare function formatPath(change: Diff<unknown>): string;
|
|
6
|
+
/**
|
|
7
|
+
* @example [🌏](https://... "WebMercatorQuad")
|
|
8
|
+
*
|
|
9
|
+
* @param projection
|
|
10
|
+
* @param url
|
|
11
|
+
* @returns
|
|
12
|
+
*/
|
|
13
|
+
export declare function markdownProjectionLink(projection: EpsgCode, url: URL): string;
|
|
14
|
+
export declare function diffToMarkdown(diff: DiffTileSetResult): string;
|