@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,12 @@
1
+ import { CommandLineAction } from '@rushstack/ts-command-line';
2
+ export declare const DefaultConfig = "config/";
3
+ export declare const DefaultOutput = "config/config.json";
4
+ export declare class CommandBundle extends CommandLineAction {
5
+ private config;
6
+ private output;
7
+ private assets;
8
+ constructor();
9
+ protected onDefineParameters(): void;
10
+ onExecute(): Promise<void>;
11
+ }
12
+ //# sourceMappingURL=action.bundle.d.ts.map
@@ -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,EAAuC,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACzG,OAAO,EAAE,iBAAiB,EAAwD,MAAM,4BAA4B,CAAC;AAKrH,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;IAoEhC,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI;CAiBlD"}
@@ -0,0 +1,119 @@
1
+ import { Env, fsa, LogConfig } from '@basemaps/shared';
2
+ import { Config, 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
+ import fetch from 'node-fetch';
7
+ export class CommandImport extends CommandLineAction {
8
+ constructor() {
9
+ super({
10
+ actionName: 'import',
11
+ summary: 'import a config json into dynamodb',
12
+ documentation: 'Given a valid bundle config json and import them into dynamodb',
13
+ });
14
+ this.promises = [];
15
+ /** List of paths to invalidate at the end of the request */
16
+ this.invalidations = [];
17
+ /** List of paths to invalidate at the end of the request */
18
+ this.backupConfig = new ConfigProviderMemory();
19
+ }
20
+ onDefineParameters() {
21
+ this.config = this.defineStringParameter({
22
+ argumentName: 'CONFIG',
23
+ parameterLongName: '--config',
24
+ description: 'Path of config json, this can be both a local path or s3 location',
25
+ required: true,
26
+ });
27
+ this.backup = this.defineStringParameter({
28
+ argumentName: 'BACKUP',
29
+ parameterLongName: '--backup',
30
+ description: 'Backup the old config into a config bundle json',
31
+ });
32
+ this.commit = this.defineFlagParameter({
33
+ parameterLongName: '--commit',
34
+ description: 'Actually start the import',
35
+ required: false,
36
+ });
37
+ }
38
+ async onExecute() {
39
+ var _a;
40
+ const logger = LogConfig.get();
41
+ logger.level = 'trace';
42
+ const commit = (_a = this.commit.value) !== null && _a !== void 0 ? _a : false;
43
+ const config = this.config.value;
44
+ const backup = this.backup.value;
45
+ if (config == null)
46
+ throw new Error('Please provide a config json');
47
+ if (commit && !config.startsWith('s3://')) {
48
+ throw new Error('To actually import into dynamo has to use the config file from s3.');
49
+ }
50
+ const HostPrefix = Env.isProduction() ? '' : 'dev.';
51
+ const healthEndpoint = `https://${HostPrefix}basemaps.linz.govt.nz/v1/health`;
52
+ logger.info({ url: healthEndpoint }, 'Import:ValidateHealth');
53
+ if (commit) {
54
+ const res = await fetch(healthEndpoint);
55
+ if (!res.ok)
56
+ throw new Error('Cannot update basemaps is unhealthy');
57
+ }
58
+ logger.info({ config }, 'Import:Load');
59
+ const configJson = await fsa.readJson(config);
60
+ const mem = ConfigProviderMemory.fromJson(configJson);
61
+ mem.createVirtualTileSets();
62
+ logger.info({ config }, 'Import:Start');
63
+ for (const config of mem.objects.values())
64
+ this.update(config, commit);
65
+ await Promise.all(this.promises);
66
+ if (commit) {
67
+ const configBundle = {
68
+ id: Config.ConfigBundle.id(configJson.hash),
69
+ name: Config.ConfigBundle.id(`config-${configJson.hash}.json`),
70
+ path: config,
71
+ hash: configJson.hash,
72
+ };
73
+ logger.info({ config }, 'Import:ConfigBundle');
74
+ if (Config.ConfigBundle.isWriteable()) {
75
+ // Insert a cb_hash record for reference
76
+ await Config.ConfigBundle.put(configBundle);
77
+ // Update the cb_latest record
78
+ configBundle.id = Config.ConfigBundle.id('latest');
79
+ await Config.ConfigBundle.put(configBundle);
80
+ }
81
+ }
82
+ if (commit && this.invalidations.length > 0) {
83
+ // Lots of invalidations just invalidate everything
84
+ if (this.invalidations.length > 10) {
85
+ await invalidateCache('/*', commit);
86
+ }
87
+ else {
88
+ await invalidateCache(this.invalidations, commit);
89
+ }
90
+ await new Promise((resolve) => setTimeout(resolve, 1000));
91
+ const res = await fetch(healthEndpoint);
92
+ if (!res.ok)
93
+ throw new Error('Basemaps is unhealthy');
94
+ }
95
+ if (backup) {
96
+ await fsa.writeJson(backup, this.backupConfig.toJson());
97
+ }
98
+ if (commit !== true)
99
+ logger.info('DryRun:Done');
100
+ }
101
+ update(config, commit) {
102
+ const promise = Q(async () => {
103
+ const updater = new Updater(config, commit);
104
+ const hasChanges = await updater.reconcile();
105
+ if (hasChanges) {
106
+ this.invalidations.push(updater.invalidatePath());
107
+ const oldData = await updater.getOldData();
108
+ if (oldData != null)
109
+ this.backupConfig.put(oldData); // No need to backup anything if there is new insert
110
+ }
111
+ else {
112
+ this.backupConfig.put(config);
113
+ }
114
+ return true;
115
+ });
116
+ this.promises.push(promise);
117
+ }
118
+ }
119
+ //# 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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"}
@@ -15,3 +15,4 @@ export async function makeTiffFolder(tmpFolder, name) {
15
15
  await fs.mkdir(folderPath, { recursive: true });
16
16
  return folderPath;
17
17
  }
18
+ //# sourceMappingURL=folder.js.map
@@ -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 CogifyCommandLine extends BaseCommandLine {
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"}