@basemaps/config-loader 8.11.0 → 8.12.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.
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,68 @@
1
+ import assert from 'node:assert';
2
+ import { describe, it } from 'node:test';
3
+ import { zTileSetConfig } from '../parse.tile.set.js';
4
+ describe('parse tile set', () => {
5
+ it('should parse a basic tileset', () => {
6
+ const ret = zTileSetConfig.safeParse({
7
+ type: 'raster',
8
+ id: 'basic-tileset',
9
+ title: 'Basic Tiles Set',
10
+ layers: [],
11
+ });
12
+ assert.equal(ret.success, true);
13
+ });
14
+ it('should fail with invalid zoom levels', () => {
15
+ const ret = zTileSetConfig.safeParse({
16
+ type: 'raster',
17
+ id: 'invalid-zoom-tileset',
18
+ title: 'Invalid Zoom Tiles Set',
19
+ layers: [
20
+ {
21
+ minZoom: -1,
22
+ maxZoom: 33,
23
+ name: 'layer-1',
24
+ title: 'Layer 1',
25
+ },
26
+ ],
27
+ });
28
+ assert.equal(ret.success, false);
29
+ assert.deepEqual(ret.error?.errors, [
30
+ {
31
+ code: 'custom',
32
+ message: 'must be between 0 and 32',
33
+ path: ['layers', 0, 'minZoom'],
34
+ },
35
+ {
36
+ code: 'custom',
37
+ message: 'must be between 0 and 32',
38
+ path: ['layers', 0, 'maxZoom'],
39
+ },
40
+ ]);
41
+ });
42
+ it('should fail with duplicate ouput names', () => {
43
+ const ret = zTileSetConfig.safeParse({
44
+ type: 'raster',
45
+ id: 'duplicate-output-names',
46
+ title: 'Duplicate Output Names',
47
+ layers: [],
48
+ outputs: [
49
+ { name: 'output-1', title: 'Output 1', default: true },
50
+ { name: 'output-1', title: 'Output 1 Duplicate', default: true },
51
+ ],
52
+ });
53
+ assert.equal(ret.success, false);
54
+ assert.deepEqual(ret.error?.errors, [
55
+ {
56
+ code: 'custom',
57
+ message: 'Duplicate output name "output-1"',
58
+ path: ['outputs', 1, 'name'],
59
+ },
60
+ {
61
+ code: 'custom',
62
+ message: 'Duplicate default outputs "output-1"',
63
+ path: ['outputs', 1, 'default'],
64
+ },
65
+ ]);
66
+ });
67
+ });
68
+ //# sourceMappingURL=parse.tile.set.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse.tile.set.test.js","sourceRoot":"","sources":["../../../src/json/__tests__/parse.tile.set.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,GAAG,GAAG,cAAc,CAAC,SAAS,CAAC;YACnC,IAAI,EAAE,QAAQ;YACd,EAAE,EAAE,eAAe;YACnB,KAAK,EAAE,iBAAiB;YACxB,MAAM,EAAE,EAAE;SACX,CAAC,CAAC;QAEH,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,GAAG,GAAG,cAAc,CAAC,SAAS,CAAC;YACnC,IAAI,EAAE,QAAQ;YACd,EAAE,EAAE,sBAAsB;YAC1B,KAAK,EAAE,wBAAwB;YAC/B,MAAM,EAAE;gBACN;oBACE,OAAO,EAAE,CAAC,CAAC;oBACX,OAAO,EAAE,EAAE;oBACX,IAAI,EAAE,SAAS;oBACf,KAAK,EAAE,SAAS;iBACjB;aACF;SACF,CAAC,CAAC;QAEH,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACjC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE;YAClC;gBACE,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,0BAA0B;gBACnC,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,SAAS,CAAC;aAC/B;YACD;gBACE,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,0BAA0B;gBACnC,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,SAAS,CAAC;aAC/B;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,GAAG,GAAG,cAAc,CAAC,SAAS,CAAC;YACnC,IAAI,EAAE,QAAQ;YACd,EAAE,EAAE,wBAAwB;YAC5B,KAAK,EAAE,wBAAwB;YAC/B,MAAM,EAAE,EAAE;YACV,OAAO,EAAE;gBACP,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE;gBACtD,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,oBAAoB,EAAE,OAAO,EAAE,IAAI,EAAE;aACjE;SACF,CAAC,CAAC;QAEH,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACjC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE;YAClC;gBACE,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,kCAAkC;gBAC3C,IAAI,EAAE,CAAC,SAAS,EAAE,CAAC,EAAE,MAAM,CAAC;aAC7B;YACD;gBACE,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,sCAAsC;gBAC/C,IAAI,EAAE,CAAC,SAAS,EAAE,CAAC,EAAE,SAAS,CAAC;aAChC;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { LogType } from '@basemaps/shared';
2
2
  import { FileInfo } from '@chunkd/fs';
3
3
  import { ConfigImageryTiff } from './tiff.config.js';
4
- export declare const ConfigCacheVersion = "V1";
4
+ export declare const ConfigCacheVersion: string;
5
5
  export declare function getCachedImageryConfig(sourceFiles: FileInfo[], cacheLocation?: URL, log?: LogType): Promise<ConfigImageryTiff | null>;
6
6
  export declare function writeCachedImageryConfig(sourceFiles: FileInfo[], config: ConfigImageryTiff, cacheLocation?: URL): Promise<void>;
@@ -1,8 +1,8 @@
1
1
  import { promisify } from 'node:util';
2
2
  import { gzip } from 'node:zlib';
3
- import { sha256base58 } from '@basemaps/config';
3
+ import { ConfigImageryVersion, sha256base58 } from '@basemaps/config';
4
4
  import { fsa } from '@basemaps/shared';
5
- export const ConfigCacheVersion = `V1`; // TODO this could just be the config packageJson ?
5
+ export const ConfigCacheVersion = `V1.` + ConfigImageryVersion; // TODO this could just be the config packageJson ?
6
6
  const gzipPromise = promisify(gzip);
7
7
  /**
8
8
  * Create a config cache key based off the source files, location, size and last modified times
@@ -10,7 +10,7 @@ const gzipPromise = promisify(gzip);
10
10
  * @example
11
11
  * ```
12
12
  * YYYY-MM/proto_hostname/hashKey.json.gz
13
- * 2034-04/s3_linz-imagery/Ci4chK59behxsGZq6TaUde5DoVb7jTxhyaZ44j4wBnCb.json.gz
13
+ * 2034-04/s3/linz-imagery/Ci4chK59behxsGZq6TaUde5DoVb7jTxhyaZ44j4wBnCb.json.gz
14
14
  * ```
15
15
  *
16
16
  * @param sourceFiles
@@ -19,11 +19,14 @@ const gzipPromise = promisify(gzip);
19
19
  * @returns a unique config location
20
20
  */
21
21
  function getCacheKey(sourceFiles, cacheLocation) {
22
+ // All source hosts used for the config
23
+ const sourceHosts = new Set(sourceFiles.map((m) => m.url.hostname));
24
+ const hostNames = [...sourceHosts.values()];
25
+ hostNames.sort();
22
26
  const configKey = ConfigCacheVersion + sourceFiles.map((m) => `${m.url.href}::${m.size}::${m.lastModified}`).join('\n');
23
- // create a config hash based on the YYYY-MM/proto_hostname/hashKey.json.gz
24
- const datePart = new Date().toISOString().slice(0, 7);
27
+ // create a config hash based on the /proto/hostname/hashKey.json.gz
25
28
  const protoPart = cacheLocation.protocol.replace(':', ''); // convert file: into file
26
- const configKeyHash = [datePart, `${protoPart}_${sha256base58(configKey)}_.json.gz`].join('/');
29
+ const configKeyHash = [protoPart, hostNames.join('__'), `${sha256base58(configKey)}_.json.gz`].join('/');
27
30
  return new URL(configKeyHash, cacheLocation);
28
31
  }
29
32
  export async function getCachedImageryConfig(sourceFiles, cacheLocation, log) {
@@ -1 +1 @@
1
- {"version":3,"file":"imagery.config.cache.js","sourceRoot":"","sources":["../../src/json/imagery.config.cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,GAAG,EAAW,MAAM,kBAAkB,CAAC;AAKhD,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAC,CAAC,mDAAmD;AAE3F,MAAM,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AAEpC;;;;;;;;;;;;;GAaG;AACH,SAAS,WAAW,CAAC,WAAuB,EAAE,aAAkB;IAC9D,MAAM,SAAS,GACb,kBAAkB,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxG,2EAA2E;IAE3E,MAAM,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACtD,MAAM,SAAS,GAAG,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,0BAA0B;IACrF,MAAM,aAAa,GAAG,CAAC,QAAQ,EAAE,GAAG,SAAS,IAAI,YAAY,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/F,OAAO,IAAI,GAAG,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,WAAuB,EACvB,aAAmB,EACnB,GAAa;IAEb,IAAI,aAAa,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC;IACvC,MAAM,QAAQ,GAAG,WAAW,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IACzD,MAAM,eAAe,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAoB,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IAE1F,IAAI,eAAe,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC;IACzC,GAAG,EAAE,IAAI,CACP,EAAE,KAAK,EAAE,eAAe,CAAC,KAAK,EAAE,WAAW,EAAE,eAAe,CAAC,IAAI,EAAE,KAAK,EAAE,eAAe,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,EAClH,mBAAmB,CACpB,CAAC;IACF,OAAO,eAAe,CAAC;AACzB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,WAAuB,EACvB,MAAyB,EACzB,aAAmB;IAEnB,IAAI,aAAa,IAAI,IAAI;QAAE,OAAO;IAClC,MAAM,QAAQ,GAAG,WAAW,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IACzD,MAAM,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;AACzF,CAAC"}
1
+ {"version":3,"file":"imagery.config.cache.js","sourceRoot":"","sources":["../../src/json/imagery.config.cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,GAAG,EAAW,MAAM,kBAAkB,CAAC;AAKhD,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,GAAG,oBAAoB,CAAC,CAAC,mDAAmD;AAEnH,MAAM,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AAEpC;;;;;;;;;;;;;GAaG;AACH,SAAS,WAAW,CAAC,WAAuB,EAAE,aAAkB;IAC9D,uCAAuC;IACvC,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;IACpE,MAAM,SAAS,GAAG,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5C,SAAS,CAAC,IAAI,EAAE,CAAC;IAEjB,MAAM,SAAS,GACb,kBAAkB,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAExG,oEAAoE;IACpE,MAAM,SAAS,GAAG,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,0BAA0B;IACrF,MAAM,aAAa,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,YAAY,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzG,OAAO,IAAI,GAAG,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,WAAuB,EACvB,aAAmB,EACnB,GAAa;IAEb,IAAI,aAAa,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC;IACvC,MAAM,QAAQ,GAAG,WAAW,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IACzD,MAAM,eAAe,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAoB,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IAE1F,IAAI,eAAe,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC;IACzC,GAAG,EAAE,IAAI,CACP,EAAE,KAAK,EAAE,eAAe,CAAC,KAAK,EAAE,WAAW,EAAE,eAAe,CAAC,IAAI,EAAE,KAAK,EAAE,eAAe,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,EAClH,mBAAmB,CACpB,CAAC;IACF,OAAO,eAAe,CAAC;AACzB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,WAAuB,EACvB,MAAyB,EACzB,aAAmB;IAEnB,IAAI,aAAa,IAAI,IAAI;QAAE,OAAO;IAClC,MAAM,QAAQ,GAAG,WAAW,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IACzD,MAAM,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;AACzF,CAAC"}
@@ -112,9 +112,10 @@ export declare const zTileSetConfig: z.ZodObject<{
112
112
  minZoom: z.ZodOptional<z.ZodEffects<z.ZodNumber, number, number>>;
113
113
  maxZoom: z.ZodOptional<z.ZodEffects<z.ZodNumber, number, number>>;
114
114
  format: z.ZodOptional<z.ZodString>;
115
- outputs: z.ZodOptional<z.ZodArray<z.ZodObject<{
115
+ outputs: z.ZodEffects<z.ZodOptional<z.ZodArray<z.ZodObject<{
116
116
  title: z.ZodString;
117
117
  name: z.ZodString;
118
+ default: z.ZodOptional<z.ZodBoolean>;
118
119
  pipeline: z.ZodOptional<z.ZodArray<z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
119
120
  type: z.ZodLiteral<"extract">;
120
121
  r: z.ZodNumber;
@@ -245,6 +246,7 @@ export declare const zTileSetConfig: z.ZodObject<{
245
246
  }, "strip", z.ZodTypeAny, {
246
247
  name: string;
247
248
  title: string;
249
+ default?: boolean | undefined;
248
250
  pipeline?: ({
249
251
  type: "terrain-rgb";
250
252
  } | {
@@ -287,6 +289,7 @@ export declare const zTileSetConfig: z.ZodObject<{
287
289
  }, {
288
290
  name: string;
289
291
  title: string;
292
+ default?: boolean | undefined;
290
293
  pipeline?: ({
291
294
  type: "terrain-rgb";
292
295
  } | {
@@ -326,7 +329,93 @@ export declare const zTileSetConfig: z.ZodObject<{
326
329
  in: "nearest" | "lanczos3" | "lanczos2";
327
330
  out: "nearest" | "lanczos3" | "lanczos2";
328
331
  } | undefined;
329
- }>, "many">>;
332
+ }>, "many">>, {
333
+ name: string;
334
+ title: string;
335
+ default?: boolean | undefined;
336
+ pipeline?: ({
337
+ type: "terrain-rgb";
338
+ } | {
339
+ type: "color-ramp";
340
+ ramp?: string | undefined;
341
+ } | {
342
+ type: "ndvi";
343
+ r: number;
344
+ alpha: number;
345
+ nir: number;
346
+ scale?: {
347
+ r: number;
348
+ alpha: number;
349
+ nir: number;
350
+ } | undefined;
351
+ } | {
352
+ type: "extract";
353
+ r: number;
354
+ g: number;
355
+ b: number;
356
+ alpha: number;
357
+ scale?: {
358
+ r: number;
359
+ g: number;
360
+ b: number;
361
+ alpha: number;
362
+ } | undefined;
363
+ })[] | undefined;
364
+ format?: ("webp" | "png" | "jpeg" | "avif")[] | undefined;
365
+ background?: {
366
+ r: number;
367
+ g: number;
368
+ b: number;
369
+ alpha: number;
370
+ } | undefined;
371
+ resizeKernel?: {
372
+ in: "nearest" | "lanczos3" | "lanczos2";
373
+ out: "nearest" | "lanczos3" | "lanczos2";
374
+ } | undefined;
375
+ }[] | undefined, {
376
+ name: string;
377
+ title: string;
378
+ default?: boolean | undefined;
379
+ pipeline?: ({
380
+ type: "terrain-rgb";
381
+ } | {
382
+ type: "color-ramp";
383
+ ramp?: string | undefined;
384
+ } | {
385
+ type: "ndvi";
386
+ r: number;
387
+ alpha: number;
388
+ nir: number;
389
+ scale?: {
390
+ r: number;
391
+ alpha: number;
392
+ nir: number;
393
+ } | undefined;
394
+ } | {
395
+ type: "extract";
396
+ r: number;
397
+ g: number;
398
+ b: number;
399
+ alpha: number;
400
+ scale?: {
401
+ r: number;
402
+ g: number;
403
+ b: number;
404
+ alpha: number;
405
+ } | undefined;
406
+ })[] | undefined;
407
+ format?: ("webp" | "png" | "jpeg" | "avif")[] | undefined;
408
+ background?: {
409
+ r: number;
410
+ g: number;
411
+ b: number;
412
+ alpha: number;
413
+ } | undefined;
414
+ resizeKernel?: {
415
+ in: "nearest" | "lanczos3" | "lanczos2";
416
+ out: "nearest" | "lanczos3" | "lanczos2";
417
+ } | undefined;
418
+ }[] | undefined>;
330
419
  aliases: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
331
420
  }, "strip", z.ZodTypeAny, {
332
421
  title: string;
@@ -355,6 +444,7 @@ export declare const zTileSetConfig: z.ZodObject<{
355
444
  outputs?: {
356
445
  name: string;
357
446
  title: string;
447
+ default?: boolean | undefined;
358
448
  pipeline?: ({
359
449
  type: "terrain-rgb";
360
450
  } | {
@@ -423,6 +513,7 @@ export declare const zTileSetConfig: z.ZodObject<{
423
513
  outputs?: {
424
514
  name: string;
425
515
  title: string;
516
+ default?: boolean | undefined;
426
517
  pipeline?: ({
427
518
  type: "terrain-rgb";
428
519
  } | {
@@ -46,6 +46,35 @@ const zLayerConfig = z
46
46
  message: 'minZoom may no be greater than maxZoom',
47
47
  path: ['minZoom'],
48
48
  });
49
+ const zTileSetOutputsParser = z
50
+ .array(ConfigTileSetOutputParser)
51
+ .optional()
52
+ .superRefine((items, ctx) => {
53
+ if (items == null)
54
+ return;
55
+ const names = new Set();
56
+ const defaults = [];
57
+ for (let i = 0; i < items.length; i++) {
58
+ const item = items[i];
59
+ if (names.has(item.name)) {
60
+ ctx.addIssue({
61
+ code: z.ZodIssueCode.custom,
62
+ message: `Duplicate output name "${item.name}"`,
63
+ path: [i, 'name'],
64
+ });
65
+ }
66
+ names.add(item.name);
67
+ if (item.default)
68
+ defaults.push(i);
69
+ }
70
+ for (const index of defaults.slice(1)) {
71
+ ctx.addIssue({
72
+ code: z.ZodIssueCode.custom,
73
+ message: `Duplicate default outputs "${items[index].name}"`,
74
+ path: [index, 'default'],
75
+ });
76
+ }
77
+ });
49
78
  export const zTileSetConfig = z.object({
50
79
  type: z.nativeEnum(TileSetType),
51
80
  id: z.string(),
@@ -57,7 +86,7 @@ export const zTileSetConfig = z.object({
57
86
  minZoom: zZoom.optional(),
58
87
  maxZoom: zZoom.optional(),
59
88
  format: z.string().optional(),
60
- outputs: z.array(ConfigTileSetOutputParser).optional(),
89
+ outputs: zTileSetOutputsParser,
61
90
  aliases: z.array(z.string()).optional(),
62
91
  });
63
92
  //# sourceMappingURL=parse.tile.set.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"parse.tile.set.js","sourceRoot":"","sources":["../../src/json/parse.tile.set.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parse.tile.set.js","sourceRoot":"","sources":["../../src/json/parse.tile.set.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACrF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,IAAI,CAAC;QACH,SAAS,CAAC,GAAG,CAAC,CAAC;QACf,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1B,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE;IACb,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE;IACb,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE;IACb,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;CAClB,CAAC,CAAC;AAEH,MAAM,cAAc,GAAG,CAAC;KACrB,MAAM,EAAE;KACR,MAAM,CAAC,aAAa,EAAE,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC;KACvD,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AAElC,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC,CAAC;AAE1D,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,OAAO,EAAE,CAAC;IACV,OAAO,EAAE,EAAE;CACZ,CAAC;AAEF,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,qBAAqB,CAAC,OAAO,IAAI,GAAG,IAAI,qBAAqB,CAAC,OAAO,EAAE;IACrH,OAAO,EAAE,mBAAmB,qBAAqB,CAAC,OAAO,QAAQ,qBAAqB,CAAC,OAAO,EAAE;CACjG,CAAC,CAAC;AAEH,MAAM,YAAY,GAAG,CAAC;KACnB,MAAM,CAAC;IACN,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,OAAO,EAAE,KAAK,CAAC,QAAQ,EAAE;IACzB,OAAO,EAAE,KAAK,CAAC,QAAQ,EAAE;CAC1B,CAAC;KACD,MAAM,CACL,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,CACvB,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,qBAAqB,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,qBAAqB,CAAC,OAAO,CAAC,EAC5G;IACE,OAAO,EAAE,wCAAwC;IACjD,IAAI,EAAE,CAAC,SAAS,CAAC;CAClB,CACF,CAAC;AAEJ,MAAM,qBAAqB,GAAG,CAAC;KAC5B,KAAK,CAAC,yBAAyB,CAAC;KAChC,QAAQ,EAAE;KACV,WAAW,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IAC1B,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO;IAE1B,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,GAAG,CAAC,QAAQ,CAAC;gBACX,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,MAAM;gBAC3B,OAAO,EAAE,0BAA0B,IAAI,CAAC,IAAI,GAAG;gBAC/C,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC;aAClB,CAAC,CAAC;QACL,CAAC;QACD,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrB,IAAI,IAAI,CAAC,OAAO;YAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACtC,GAAG,CAAC,QAAQ,CAAC;YACX,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,MAAM;YAC3B,OAAO,EAAE,8BAA8B,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG;YAC3D,IAAI,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC;SACzB,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,IAAI,EAAE,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC;IAC/B,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,UAAU,EAAE,WAAW,CAAC,QAAQ,EAAE;IAClC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC;IAC7B,OAAO,EAAE,KAAK,CAAC,QAAQ,EAAE;IACzB,OAAO,EAAE,KAAK,CAAC,QAAQ,EAAE;IACzB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,OAAO,EAAE,qBAAqB;IAC9B,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CACxC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@basemaps/config-loader",
3
- "version": "8.11.0",
3
+ "version": "8.12.2",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/linz/basemaps.git",
@@ -28,9 +28,9 @@
28
28
  "build/"
29
29
  ],
30
30
  "dependencies": {
31
- "@basemaps/config": "^8.11.0",
31
+ "@basemaps/config": "^8.13.1",
32
32
  "@basemaps/geo": "^8.9.0",
33
- "@basemaps/shared": "^8.9.3"
33
+ "@basemaps/shared": "^8.9.6"
34
34
  },
35
- "gitHead": "eb807c6d0f091b41e4d6d972b77c24f584cec230"
35
+ "gitHead": "8e7b083ad11f25ed8eb61a7d2382efe48d208bb5"
36
36
  }