signalk-charts-provider-simple 2.8.0 → 2.9.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 (50) hide show
  1. package/dist/catalog/build-merged-catalog.d.ts +18 -1
  2. package/dist/catalog/build-merged-catalog.d.ts.map +1 -1
  3. package/dist/catalog/build-merged-catalog.js +104 -3
  4. package/dist/catalog/build-merged-catalog.js.map +1 -1
  5. package/dist/catalog/merged-catalog-schema.d.ts +132 -0
  6. package/dist/catalog/merged-catalog-schema.d.ts.map +1 -1
  7. package/dist/catalog/merged-catalog-schema.js +113 -1
  8. package/dist/catalog/merged-catalog-schema.js.map +1 -1
  9. package/dist/charts-loader.d.ts.map +1 -1
  10. package/dist/charts-loader.js +17 -1
  11. package/dist/charts-loader.js.map +1 -1
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +33 -3
  14. package/dist/index.js.map +1 -1
  15. package/dist/types.d.ts +13 -0
  16. package/dist/types.d.ts.map +1 -1
  17. package/dist/utils/catalog-manager.d.ts +2 -1
  18. package/dist/utils/catalog-manager.d.ts.map +1 -1
  19. package/dist/utils/catalog-manager.js +41 -2
  20. package/dist/utils/catalog-manager.js.map +1 -1
  21. package/dist/utils/mbtiles-reader.d.ts +32 -0
  22. package/dist/utils/mbtiles-reader.d.ts.map +1 -1
  23. package/dist/utils/mbtiles-reader.js +97 -3
  24. package/dist/utils/mbtiles-reader.js.map +1 -1
  25. package/dist/utils/online-charts.d.ts.map +1 -1
  26. package/dist/utils/online-charts.js +1 -9
  27. package/dist/utils/online-charts.js.map +1 -1
  28. package/dist/utils/raster-compose.d.ts +34 -0
  29. package/dist/utils/raster-compose.d.ts.map +1 -0
  30. package/dist/utils/raster-compose.js +126 -0
  31. package/dist/utils/raster-compose.js.map +1 -0
  32. package/dist/utils/raster-overzoom-worker.d.ts +10 -0
  33. package/dist/utils/raster-overzoom-worker.d.ts.map +1 -0
  34. package/dist/utils/raster-overzoom-worker.js +15 -0
  35. package/dist/utils/raster-overzoom-worker.js.map +1 -0
  36. package/dist/utils/raster-overzoom.d.ts +33 -0
  37. package/dist/utils/raster-overzoom.d.ts.map +1 -0
  38. package/dist/utils/raster-overzoom.js +185 -0
  39. package/dist/utils/raster-overzoom.js.map +1 -0
  40. package/dist/utils/raster-tile-cache.d.ts +58 -0
  41. package/dist/utils/raster-tile-cache.d.ts.map +1 -0
  42. package/dist/utils/raster-tile-cache.js +344 -0
  43. package/dist/utils/raster-tile-cache.js.map +1 -0
  44. package/dist/utils/tile-overzoom.d.ts +9 -0
  45. package/dist/utils/tile-overzoom.d.ts.map +1 -1
  46. package/dist/utils/tile-overzoom.js +1 -1
  47. package/dist/utils/tile-overzoom.js.map +1 -1
  48. package/package.json +5 -2
  49. package/public/js/chart-catalog.js +31 -3
  50. package/public/js/chart-catalog.ts +44 -3
@@ -4,7 +4,7 @@
4
4
  * unit-tested and so an unchanged input always yields the same content hash.
5
5
  */
6
6
  import type { ParsedChartcatalogsXml } from './chartcatalogs-xml.js';
7
- import { type ChartcatalogsIndex, type MergedCatalog, type MergedChartcatalogsCatalog, type OnlineChartsSourceFile } from './merged-catalog-schema.js';
7
+ import { type ChartcatalogsIndex, type MergedCatalog, type MergedChartcatalogsCatalog, type MergedTileset, type OnlineChartsSourceFile, type TilesetFeed } from './merged-catalog-schema.js';
8
8
  export declare const CHARTCATALOGS_HOMEPAGE = "https://chartcatalogs.github.io/";
9
9
  export declare const CHARTCATALOGS_ISSUES = "https://github.com/chartcatalogs/catalogs/issues";
10
10
  export interface ChartcatalogsFile {
@@ -12,6 +12,14 @@ export interface ChartcatalogsFile {
12
12
  /** `null` when the file exists upstream but could not be parsed. */
13
13
  parsed: ParsedChartcatalogsXml | null;
14
14
  }
15
+ /** A tileset feed as listed in the repo, with the document fetched for it. */
16
+ export interface TilesetFeedInput {
17
+ feed: TilesetFeed;
18
+ /** The parsed feed document, or `null` when it could not be fetched or parsed. */
19
+ document: unknown;
20
+ /** File sizes in bytes by URL, where the publisher's server reported them. */
21
+ sizes?: Map<string, number>;
22
+ }
15
23
  export interface BuildInputs {
16
24
  chartcatalogs: ChartcatalogsFile[];
17
25
  chartcatalogsCommit?: string;
@@ -21,6 +29,9 @@ export interface BuildInputs {
21
29
  repo: string;
22
30
  /** chartcatalogs entries from the catalog currently published, by file. */
23
31
  previous?: Map<string, MergedChartcatalogsCatalog>;
32
+ tilesetFeeds?: TilesetFeedInput[];
33
+ /** Tilesets in the catalog currently published, for carrying a failed feed forward. */
34
+ previousTilesets?: MergedTileset[];
24
35
  now: Date;
25
36
  }
26
37
  export interface BuildResult {
@@ -41,6 +52,10 @@ export interface BuildResult {
41
52
  * guard tolerates a few, so each one is reported.
42
53
  */
43
54
  removedUpstream: string[];
55
+ /** Feeds that could not be read, whose published regions were kept. */
56
+ carriedForwardFeeds: string[];
57
+ /** Feed regions left out, each with the reason. */
58
+ skippedTilesets: string[];
44
59
  }
45
60
  /**
46
61
  * Hash of what a user would actually see. chartcatalogs re-commits every
@@ -57,6 +72,8 @@ export interface PublishedState {
57
72
  chartCount: number;
58
73
  /** chartcatalogs entries that still validate, for carrying forward. */
59
74
  chartcatalogs: Map<string, MergedChartcatalogsCatalog>;
75
+ /** Tilesets that still validate, for carrying a failed feed forward. */
76
+ tilesets: MergedTileset[];
60
77
  /** The published `catalog.schema.json` text, or null if absent. */
61
78
  schemaText: string | null;
62
79
  }
@@ -1 +1 @@
1
- {"version":3,"file":"build-merged-catalog.d.ts","sourceRoot":"","sources":["../../src/catalog/build-merged-catalog.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAQL,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAElB,KAAK,0BAA0B,EAE/B,KAAK,sBAAsB,EAC5B,MAAM,4BAA4B,CAAC;AAEpC,eAAO,MAAM,sBAAsB,qCAAqC,CAAC;AACzE,eAAO,MAAM,oBAAoB,qDAAqD,CAAC;AAEvF,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,oEAAoE;IACpE,MAAM,EAAE,sBAAsB,GAAG,IAAI,CAAC;CACvC;AAED,MAAM,WAAW,WAAW;IAC1B,aAAa,EAAE,iBAAiB,EAAE,CAAC;IACnC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,KAAK,EAAE,kBAAkB,CAAC;IAC1B,MAAM,EAAE,sBAAsB,CAAC;IAC/B,+EAA+E;IAC/E,IAAI,EAAE,MAAM,CAAC;IACb,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;IACnD,GAAG,EAAE,IAAI,CAAC;CACX;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,aAAa,CAAC;IACvB,0DAA0D;IAC1D,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,4DAA4D;IAC5D,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,sFAAsF;IACtF,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,4EAA4E;IAC5E,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,4EAA4E;IAC5E,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB;;;;OAIG;IACH,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAkED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,aAAa,CAAC,GAAG,MAAM,CAYtF;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW,CAoEnE;AAED,oFAAoF;AACpF,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,uEAAuE;IACvE,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;IACvD,mEAAmE;IACnE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,cAAc,CAmB1F;AAMD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,cAAc,GAAG,IAAI,GAAG,MAAM,EAAE,CAuB/F;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,aAAa,EACnB,SAAS,EAAE,cAAc,GAAG,IAAI,EAChC,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,OAAO,GACb,eAAe,CAKjB"}
1
+ {"version":3,"file":"build-merged-catalog.d.ts","sourceRoot":"","sources":["../../src/catalog/build-merged-catalog.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@
5
5
  */
6
6
  import { createHash } from 'node:crypto';
7
7
  import { Value } from '@sinclair/typebox/value';
8
- import { MERGED_CATALOG_SCHEMA_VERSION, MergedCatalogSchema, MergedChartcatalogsCatalogSchema, checkChartcatalogsIndex, checkOnlineChartEntry, formatForChartType, schemaErrors } from './merged-catalog-schema.js';
8
+ import { MERGED_CATALOG_SCHEMA_VERSION, MergedCatalogSchema, MergedChartcatalogsCatalogSchema, MergedTilesetSchema, TilesetFeedDocumentSchema, TilesetFeedFileSchema, checkChartcatalogsIndex, checkOnlineChartEntry, formatForChartType, schemaErrors } from './merged-catalog-schema.js';
9
9
  export const CHARTCATALOGS_HOMEPAGE = 'https://chartcatalogs.github.io/';
10
10
  export const CHARTCATALOGS_ISSUES = 'https://github.com/chartcatalogs/catalogs/issues';
11
11
  function compareStrings(a, b) {
@@ -50,6 +50,99 @@ function mergeOnlineCharts(online) {
50
50
  format: formatForChartType(entry.chart.type)
51
51
  }));
52
52
  }
53
+ function isIsoTime(value) {
54
+ return value !== undefined && /^\d{4}-\d{2}-\d{2}T/.test(value) && !isNaN(Date.parse(value));
55
+ }
56
+ /** Why a feed region can't be published, or null when it can. */
57
+ function regionProblem(raw, updated, seen) {
58
+ if (seen.has(raw.id)) {
59
+ return 'duplicate id';
60
+ }
61
+ if (raw.bounds[1] >= raw.bounds[3]) {
62
+ return 'bounds south must be below north';
63
+ }
64
+ if (raw.minzoom !== undefined && raw.maxzoom !== undefined && raw.minzoom > raw.maxzoom) {
65
+ return 'minzoom is greater than maxzoom';
66
+ }
67
+ if (!isIsoTime(updated)) {
68
+ return 'no date to tell an update by';
69
+ }
70
+ return null;
71
+ }
72
+ /**
73
+ * The regions of every tileset feed. A feed that cannot be read, or that
74
+ * suddenly lists nothing usable, keeps its published regions: one failed
75
+ * fetch must not remove a chart from every boat's catalog, or turn off the
76
+ * update notice for boats that installed it.
77
+ */
78
+ function mergeTilesets(inputs, previous, repo, carriedForwardFeeds, skippedTilesets) {
79
+ const ids = new Set();
80
+ for (const { feed } of inputs) {
81
+ if (ids.has(feed.id)) {
82
+ throw new Error(`Invalid tileset feeds:\n ${feed.id}: duplicate id`);
83
+ }
84
+ ids.add(feed.id);
85
+ }
86
+ const tilesets = [];
87
+ for (const { feed, document, sizes } of inputs) {
88
+ const regions = [];
89
+ if (Value.Check(TilesetFeedDocumentSchema, document)) {
90
+ const seen = new Set();
91
+ for (const raw of document.files) {
92
+ const rawId = raw?.id;
93
+ const label = `${feed.id} ${typeof rawId === 'string' ? rawId : '<no id>'}`;
94
+ if (!Value.Check(TilesetFeedFileSchema, raw)) {
95
+ skippedTilesets.push(`${label}: ${schemaErrors(TilesetFeedFileSchema, raw)[0] ?? 'invalid'}`);
96
+ continue;
97
+ }
98
+ const updated = isIsoTime(raw.newestArrival) ? raw.newestArrival : document.generated;
99
+ const problem = regionProblem(raw, updated, seen);
100
+ if (problem !== null || !isIsoTime(updated)) {
101
+ skippedTilesets.push(`${label}: ${problem ?? 'invalid'}`);
102
+ continue;
103
+ }
104
+ seen.add(raw.id);
105
+ const size = sizes?.get(raw.url);
106
+ regions.push({
107
+ id: `${feed.id}-${raw.id}`,
108
+ feed: feed.id,
109
+ name: raw.name,
110
+ description: feed.description,
111
+ use: 'download',
112
+ category: feed.category,
113
+ format: 'mbtiles',
114
+ bbox: raw.bounds,
115
+ provider: feed.provider,
116
+ attribution: feed.attribution,
117
+ license: feed.license,
118
+ licenseUrl: feed.licenseUrl,
119
+ homepage: feed.homepage,
120
+ issues: feed.issues ?? `https://github.com/${repo}/issues/new?template=catalog-problem.yml`,
121
+ ...(feed.notForNavigation !== undefined
122
+ ? { notForNavigation: feed.notForNavigation }
123
+ : {}),
124
+ folder: feed.folder,
125
+ file: {
126
+ url: raw.url,
127
+ updated,
128
+ ...(size !== undefined ? { size } : {}),
129
+ ...(raw.minzoom !== undefined ? { minzoom: raw.minzoom } : {}),
130
+ ...(raw.maxzoom !== undefined ? { maxzoom: raw.maxzoom } : {})
131
+ }
132
+ });
133
+ }
134
+ }
135
+ if (regions.length === 0) {
136
+ const kept = previous.filter((t) => t.feed === feed.id);
137
+ if (kept.length > 0) {
138
+ carriedForwardFeeds.push(feed.id);
139
+ }
140
+ regions.push(...kept);
141
+ }
142
+ tilesets.push(...regions);
143
+ }
144
+ return tilesets.sort((a, b) => compareStrings(a.id, b.id));
145
+ }
53
146
  /** JSON with object keys sorted, so key order never changes the hash. */
54
147
  function canonicalJson(value) {
55
148
  if (Array.isArray(value)) {
@@ -109,6 +202,9 @@ export function buildMergedCatalog(inputs) {
109
202
  }
110
203
  chartcatalogs.push(mergeChartcatalogsFile(file, parsed, inputs.index, droppedCharts));
111
204
  }
205
+ const carriedForwardFeeds = [];
206
+ const skippedTilesets = [];
207
+ const tilesets = mergeTilesets(inputs.tilesetFeeds ?? [], inputs.previousTilesets ?? [], inputs.repo, carriedForwardFeeds, skippedTilesets);
112
208
  const fileNames = new Set(files.map((f) => f.file));
113
209
  const withoutHash = {
114
210
  schemaVersion: MERGED_CATALOG_SCHEMA_VERSION,
@@ -126,7 +222,8 @@ export function buildMergedCatalog(inputs) {
126
222
  }
127
223
  },
128
224
  chartcatalogs,
129
- online: mergeOnlineCharts(inputs.online)
225
+ online: mergeOnlineCharts(inputs.online),
226
+ tilesets
130
227
  };
131
228
  const catalog = { ...withoutHash, contentHash: computeContentHash(withoutHash) };
132
229
  if (!Value.Check(MergedCatalogSchema, catalog)) {
@@ -141,7 +238,9 @@ export function buildMergedCatalog(inputs) {
141
238
  droppedCharts,
142
239
  removedUpstream: [...(inputs.previous?.keys() ?? [])]
143
240
  .filter((f) => !fileNames.has(f))
144
- .sort(compareStrings)
241
+ .sort(compareStrings),
242
+ carriedForwardFeeds,
243
+ skippedTilesets
145
244
  };
146
245
  }
147
246
  /**
@@ -161,11 +260,13 @@ export function readPublishedState(raw, schemaText) {
161
260
  chartcatalogs.set(entry.file, entry);
162
261
  }
163
262
  }
263
+ const tilesets = (Array.isArray(obj.tilesets) ? obj.tilesets : []).filter((t) => Value.Check(MergedTilesetSchema, t));
164
264
  return {
165
265
  contentHash: typeof obj.contentHash === 'string' ? obj.contentHash : null,
166
266
  catalogCount: rawCatalogs.length,
167
267
  chartCount,
168
268
  chartcatalogs,
269
+ tilesets,
169
270
  schemaText
170
271
  };
171
272
  }
@@ -1 +1 @@
1
- {"version":3,"file":"build-merged-catalog.js","sourceRoot":"","sources":["../../src/catalog/build-merged-catalog.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAEhD,OAAO,EACL,6BAA6B,EAC7B,mBAAmB,EACnB,gCAAgC,EAChC,uBAAuB,EACvB,qBAAqB,EACrB,kBAAkB,EAClB,YAAY,EAOb,MAAM,4BAA4B,CAAC;AAEpC,MAAM,CAAC,MAAM,sBAAsB,GAAG,kCAAkC,CAAC;AACzE,MAAM,CAAC,MAAM,oBAAoB,GAAG,kDAAkD,CAAC;AAwCvF,SAAS,cAAc,CAAC,CAAS,EAAE,CAAS;IAC1C,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,sBAAsB,CAC7B,IAAY,EACZ,MAA8B,EAC9B,KAAyB,EACzB,aAAuB;IAEvB,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IACvC,uEAAuE;IACvE,oEAAoE;IACpE,MAAM,MAAM,GAAyB,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;QAClE,MAAM,EAAE,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACvD,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,aAAa,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QAChD,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,UAAmB,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;IACnF,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3B,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC/C,CAAC;IACD,2EAA2E;IAC3E,+DAA+D;IAC/D,OAAO,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAC/F,CAAC;AAED,SAAS,iBAAiB,CAAC,MAA8B;IACvD,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;YACvB,QAAQ,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,EAAE,gBAAgB,CAAC,CAAC;QAC7C,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACnB,QAAQ,CAAC,IAAI,CAAC,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC;IACjD,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,oCAAoC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC/E,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACnC,GAAG,KAAK;QACR,GAAG,EAAE,QAAiB;QACtB,MAAM,EAAE,kBAAkB,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;KAC7C,CAAC,CAAC,CAAC;AACN,CAAC;AAED,yEAAyE;AACzE,SAAS,aAAa,CAAC,KAAc;IACnC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IACnD,CAAC;IACD,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAChD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC;aAC7D,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC;aAClC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC5C,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IAC9F,CAAC;IACD,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAA2C;IAC5E,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,OAAO,EAAE,GAAG,OAAO,CAAC;IAC1D,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,mBAAmB,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC;IAClF,MAAM,MAAM,GAAG;QACb,GAAG,OAAO;QACV,OAAO,EAAE,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE;QACnE,aAAa,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YAC7C,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC;YACzE,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;QAC1B,CAAC,CAAC;KACH,CAAC;IACF,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1E,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAAmB;IACpD,MAAM,aAAa,GAAG,uBAAuB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5D,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,mCAAmC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACnF,CAAC;IAED,MAAM,KAAK,GAAG,CAAC,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACvF,MAAM,cAAc,GAAa,EAAE,CAAC;IACpC,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,aAAa,GAAa,EAAE,CAAC;IACnC,MAAM,aAAa,GAAiC,EAAE,CAAC;IAEvD,KAAK,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,KAAK,EAAE,CAAC;QACrC,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;QAC5C,uEAAuE;QACvE,wEAAwE;QACxE,oEAAoE;QACpE,IAAI,QAAQ,IAAI,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;YACxD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAClC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,QAAQ,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YAClF,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1B,SAAS;QACX,CAAC;QACD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnB,SAAS;QACX,CAAC;QACD,aAAa,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC;IACxF,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACpD,MAAM,WAAW,GAAuC;QACtD,aAAa,EAAE,6BAA6B;QAC5C,WAAW,EAAE,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE;QACrC,OAAO,EAAE;YACP,aAAa,EAAE;gBACb,QAAQ,EAAE,sBAAsB;gBAChC,MAAM,EAAE,oBAAoB;gBAC5B,OAAO,EAAE,SAAS;gBAClB,GAAG,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC9E;YACD,MAAM,EAAE;gBACN,QAAQ,EAAE,sBAAsB,MAAM,CAAC,IAAI,EAAE;gBAC7C,MAAM,EAAE,sBAAsB,MAAM,CAAC,IAAI,0CAA0C;aACpF;SACF;QACD,aAAa;QACb,MAAM,EAAE,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC;KACzC,CAAC;IAEF,MAAM,OAAO,GAAkB,EAAE,GAAG,WAAW,EAAE,WAAW,EAAE,kBAAkB,CAAC,WAAW,CAAC,EAAE,CAAC;IAChG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,mBAAmB,EAAE,OAAO,CAAC,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CACb,wCAAwC,YAAY,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAClG,CAAC;IACJ,CAAC;IAED,OAAO;QACL,OAAO;QACP,SAAS,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QACrE,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC7E,cAAc;QACd,OAAO;QACP,aAAa;QACb,eAAe,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;aAClD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;aAChC,IAAI,CAAC,cAAc,CAAC;KACxB,CAAC;AACJ,CAAC;AAaD;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAY,EAAE,UAAyB;IACxE,MAAM,GAAG,GAAG,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAE,GAA+B,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5F,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAE,GAAG,CAAC,aAA2B,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7F,MAAM,aAAa,GAAG,IAAI,GAAG,EAAsC,CAAC;IACpE,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;QAChC,MAAM,MAAM,GAAI,KAAqC,EAAE,MAAM,CAAC;QAC9D,UAAU,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACxD,IAAI,KAAK,CAAC,KAAK,CAAC,gCAAgC,EAAE,KAAK,CAAC,EAAE,CAAC;YACzD,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IACD,OAAO;QACL,WAAW,EAAE,OAAO,GAAG,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI;QACzE,YAAY,EAAE,WAAW,CAAC,MAAM;QAChC,UAAU;QACV,aAAa;QACb,UAAU;KACX,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,OAAsB;IACxC,OAAO,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AACxE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,IAAmB,EAAE,SAAgC;IACnF,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpC,QAAQ,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;IACvD,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,QAAQ,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;IAClD,CAAC;IACD,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;QACxC,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,YAAY,GAAG,GAAG,CAAC,EAAE,CAAC;YACrD,QAAQ,CAAC,IAAI,CACX,uCAAuC,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,OAAO,MAAM,CAAC,KAAK,CAAC,EAAE,CAC5F,CAAC;QACJ,CAAC;QACD,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,UAAU,GAAG,GAAG,CAAC,EAAE,CAAC;YACzD,QAAQ,CAAC,IAAI,CACX,qCAAqC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,MAAM,CAAC,WAAW,CAAC,EAAE,CAC9F,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAOD;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAC3B,IAAmB,EACnB,SAAgC,EAChC,UAAkB,EAClB,KAAc;IAEd,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAClD,MAAM,OAAO,GACX,CAAC,SAAS,IAAI,SAAS,CAAC,WAAW,KAAK,IAAI,CAAC,WAAW,IAAI,SAAS,CAAC,UAAU,KAAK,UAAU,CAAC;IAClG,OAAO,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC,OAAO,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC;AAC5E,CAAC"}
1
+ {"version":3,"file":"build-merged-catalog.js","sourceRoot":"","sources":["../../src/catalog/build-merged-catalog.ts"],"names":[],"mappings":"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"}
@@ -121,6 +121,60 @@ export declare const ChartcatalogsIndexSchema: import("@sinclair/typebox").TReco
121
121
  regions: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
122
122
  bbox: import("@sinclair/typebox").TTuple<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNumber]>;
123
123
  }>>;
124
+ /**
125
+ * One feed of ready-made regional MBTiles, as maintained in
126
+ * `catalog/tileset-feeds.json`. The feed itself (its `url`) lists the
127
+ * regions and their files; this entry carries what a boater is told about
128
+ * all of them, so a feed cannot reword its own warnings.
129
+ */
130
+ export declare const TilesetFeedSchema: import("@sinclair/typebox").TObject<{
131
+ id: import("@sinclair/typebox").TString;
132
+ url: import("@sinclair/typebox").TString;
133
+ category: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"navigation">, import("@sinclair/typebox").TLiteral<"weather">, import("@sinclair/typebox").TLiteral<"depth">, import("@sinclair/typebox").TLiteral<"basemap">, import("@sinclair/typebox").TLiteral<"overlay">]>;
134
+ description: import("@sinclair/typebox").TString;
135
+ provider: import("@sinclair/typebox").TString;
136
+ attribution: import("@sinclair/typebox").TString;
137
+ license: import("@sinclair/typebox").TString;
138
+ licenseUrl: import("@sinclair/typebox").TString;
139
+ homepage: import("@sinclair/typebox").TString;
140
+ issues: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
141
+ notForNavigation: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
142
+ folder: import("@sinclair/typebox").TString;
143
+ }>;
144
+ export declare const TilesetFeedsSourceFileSchema: import("@sinclair/typebox").TObject<{
145
+ feeds: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
146
+ id: import("@sinclair/typebox").TString;
147
+ url: import("@sinclair/typebox").TString;
148
+ category: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"navigation">, import("@sinclair/typebox").TLiteral<"weather">, import("@sinclair/typebox").TLiteral<"depth">, import("@sinclair/typebox").TLiteral<"basemap">, import("@sinclair/typebox").TLiteral<"overlay">]>;
149
+ description: import("@sinclair/typebox").TString;
150
+ provider: import("@sinclair/typebox").TString;
151
+ attribution: import("@sinclair/typebox").TString;
152
+ license: import("@sinclair/typebox").TString;
153
+ licenseUrl: import("@sinclair/typebox").TString;
154
+ homepage: import("@sinclair/typebox").TString;
155
+ issues: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
156
+ notForNavigation: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
157
+ folder: import("@sinclair/typebox").TString;
158
+ }>>;
159
+ }>;
160
+ /**
161
+ * One region in a feed document, as the feed's publisher writes it. Read
162
+ * tolerantly: a region this build cannot use is skipped and reported, never
163
+ * the whole feed.
164
+ */
165
+ export declare const TilesetFeedFileSchema: import("@sinclair/typebox").TObject<{
166
+ id: import("@sinclair/typebox").TString;
167
+ name: import("@sinclair/typebox").TString;
168
+ bounds: import("@sinclair/typebox").TTuple<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNumber]>;
169
+ url: import("@sinclair/typebox").TString;
170
+ minzoom: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
171
+ maxzoom: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
172
+ newestArrival: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
173
+ }>;
174
+ export declare const TilesetFeedDocumentSchema: import("@sinclair/typebox").TObject<{
175
+ generated: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
176
+ files: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnknown>;
177
+ }>;
124
178
  export declare const MergedCatalogChartSchema: import("@sinclair/typebox").TObject<{
125
179
  number: import("@sinclair/typebox").TString;
126
180
  title: import("@sinclair/typebox").TString;
@@ -184,6 +238,32 @@ export declare const MergedOnlineChartSchema: import("@sinclair/typebox").TObjec
184
238
  capabilitiesUrl: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
185
239
  }>>;
186
240
  }>;
241
+ /** One region of a tileset feed: a single MBTiles file that installs as-is. */
242
+ export declare const MergedTilesetSchema: import("@sinclair/typebox").TObject<{
243
+ id: import("@sinclair/typebox").TString;
244
+ feed: import("@sinclair/typebox").TString;
245
+ name: import("@sinclair/typebox").TString;
246
+ description: import("@sinclair/typebox").TString;
247
+ use: import("@sinclair/typebox").TLiteral<"download">;
248
+ category: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"navigation">, import("@sinclair/typebox").TLiteral<"weather">, import("@sinclair/typebox").TLiteral<"depth">, import("@sinclair/typebox").TLiteral<"basemap">, import("@sinclair/typebox").TLiteral<"overlay">]>;
249
+ format: import("@sinclair/typebox").TLiteral<"mbtiles">;
250
+ bbox: import("@sinclair/typebox").TTuple<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNumber]>;
251
+ provider: import("@sinclair/typebox").TString;
252
+ attribution: import("@sinclair/typebox").TString;
253
+ license: import("@sinclair/typebox").TString;
254
+ licenseUrl: import("@sinclair/typebox").TString;
255
+ homepage: import("@sinclair/typebox").TString;
256
+ issues: import("@sinclair/typebox").TString;
257
+ notForNavigation: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
258
+ folder: import("@sinclair/typebox").TString;
259
+ file: import("@sinclair/typebox").TObject<{
260
+ url: import("@sinclair/typebox").TString;
261
+ updated: import("@sinclair/typebox").TString;
262
+ size: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
263
+ minzoom: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
264
+ maxzoom: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
265
+ }>;
266
+ }>;
187
267
  export declare const MergedCatalogSchema: import("@sinclair/typebox").TObject<{
188
268
  schemaVersion: import("@sinclair/typebox").TLiteral<1>;
189
269
  generatedAt: import("@sinclair/typebox").TString;
@@ -254,6 +334,31 @@ export declare const MergedCatalogSchema: import("@sinclair/typebox").TObject<{
254
334
  capabilitiesUrl: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
255
335
  }>>;
256
336
  }>>;
337
+ tilesets: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
338
+ id: import("@sinclair/typebox").TString;
339
+ feed: import("@sinclair/typebox").TString;
340
+ name: import("@sinclair/typebox").TString;
341
+ description: import("@sinclair/typebox").TString;
342
+ use: import("@sinclair/typebox").TLiteral<"download">;
343
+ category: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"navigation">, import("@sinclair/typebox").TLiteral<"weather">, import("@sinclair/typebox").TLiteral<"depth">, import("@sinclair/typebox").TLiteral<"basemap">, import("@sinclair/typebox").TLiteral<"overlay">]>;
344
+ format: import("@sinclair/typebox").TLiteral<"mbtiles">;
345
+ bbox: import("@sinclair/typebox").TTuple<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNumber]>;
346
+ provider: import("@sinclair/typebox").TString;
347
+ attribution: import("@sinclair/typebox").TString;
348
+ license: import("@sinclair/typebox").TString;
349
+ licenseUrl: import("@sinclair/typebox").TString;
350
+ homepage: import("@sinclair/typebox").TString;
351
+ issues: import("@sinclair/typebox").TString;
352
+ notForNavigation: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
353
+ folder: import("@sinclair/typebox").TString;
354
+ file: import("@sinclair/typebox").TObject<{
355
+ url: import("@sinclair/typebox").TString;
356
+ updated: import("@sinclair/typebox").TString;
357
+ size: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
358
+ minzoom: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
359
+ maxzoom: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
360
+ }>;
361
+ }>>>;
257
362
  }>;
258
363
  /**
259
364
  * What a consumer of the published catalog needs from an online chart entry
@@ -291,6 +396,28 @@ export declare const OnlineChartReadSchema: import("@sinclair/typebox").TObject<
291
396
  capabilitiesUrl: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
292
397
  }>>;
293
398
  }>;
399
+ /**
400
+ * What a consumer needs from a tileset entry to list, download and update
401
+ * it. The file URL must name an MBTiles file, because a consumer installs it
402
+ * as-is under the entry's id.
403
+ */
404
+ export declare const TilesetReadSchema: import("@sinclair/typebox").TObject<{
405
+ id: import("@sinclair/typebox").TString;
406
+ name: import("@sinclair/typebox").TString;
407
+ description: import("@sinclair/typebox").TString;
408
+ category: import("@sinclair/typebox").TString;
409
+ bbox: import("@sinclair/typebox").TTuple<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TNumber]>;
410
+ provider: import("@sinclair/typebox").TString;
411
+ license: import("@sinclair/typebox").TString;
412
+ licenseUrl: import("@sinclair/typebox").TString;
413
+ notForNavigation: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
414
+ folder: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
415
+ file: import("@sinclair/typebox").TObject<{
416
+ url: import("@sinclair/typebox").TString;
417
+ updated: import("@sinclair/typebox").TString;
418
+ size: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
419
+ }>;
420
+ }>;
294
421
  export type ChartUse = Static<typeof ChartUseSchema>;
295
422
  export type ChartCategory = Static<typeof ChartCategorySchema>;
296
423
  export type ChartFormat = Static<typeof ChartFormatSchema>;
@@ -305,6 +432,11 @@ export type MergedChartcatalogsCatalog = Static<typeof MergedChartcatalogsCatalo
305
432
  export type MergedOnlineChart = Static<typeof MergedOnlineChartSchema>;
306
433
  export type MergedCatalog = Static<typeof MergedCatalogSchema>;
307
434
  export type OnlineCatalogChart = Static<typeof OnlineChartReadSchema>;
435
+ export type TilesetFeed = Static<typeof TilesetFeedSchema>;
436
+ export type TilesetFeedsSourceFile = Static<typeof TilesetFeedsSourceFileSchema>;
437
+ export type TilesetFeedFile = Static<typeof TilesetFeedFileSchema>;
438
+ export type MergedTileset = Static<typeof MergedTilesetSchema>;
439
+ export type TilesetCatalogEntry = Static<typeof TilesetReadSchema>;
308
440
  /** The published JSON Schema document, with the root identifiers it needs. */
309
441
  export declare function publishedJsonSchema(id: string): Record<string, unknown>;
310
442
  /** The Type-filter facet for an online chart's resource type. */
@@ -1 +1 @@
1
- {"version":3,"file":"merged-catalog-schema.d.ts","sourceRoot":"","sources":["../../src/catalog/merged-catalog-schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAQ,KAAK,MAAM,EAAE,KAAK,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAGpE,eAAO,MAAM,6BAA6B,IAAI,CAAC;AAI/C,eAAO,MAAM,cAAc,wIAGzB,CAAC;AAEH,eAAO,MAAM,mBAAmB,4RAY/B,CAAC;AAEF,eAAO,MAAM,iBAAiB,gaAS5B,CAAC;AAiBH,eAAO,MAAM,UAAU,0LAAe,CAAC;AAEvC,eAAO,MAAM,gBAAgB,yEAG3B,CAAC;AAQH,+EAA+E;AAC/E,eAAO,MAAM,qBAAqB,4RAMhC,CAAC;AAyHH,eAAO,MAAM,uBAAuB;;;;;;;;EAA8C,CAAC;AACnF,eAAO,MAAM,yBAAyB;;;;;EAAgD,CAAC;AAEvF,+EAA+E;AAC/E,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGlC,CAAC;AAEF,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGxC,CAAC;AAUF;;;;GAIG;AACH,eAAO,MAAM,6BAA6B;;;;;;EAA+C,CAAC;AAE1F,eAAO,MAAM,wBAAwB;;;;;;GAGpC,CAAC;AAIF,eAAO,MAAM,wBAAwB;;;;;;EAMnC,CAAC;AAEH,4EAA4E;AAC5E,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;;;;EAmB3C,CAAC;AAEH,sDAAsD;AACtD,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAOlC,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkC/B,CAAC;AAIF;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+BhC,CAAC;AAEH,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,cAAc,CAAC,CAAC;AACrD,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAC/D,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC3D,MAAM,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,UAAU,CAAC,CAAC;AAC7C,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACnE,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,OAAO,sBAAsB,CAAC,CAAC;AACrE,MAAM,MAAM,sBAAsB,GAAG,MAAM,CAAC,OAAO,4BAA4B,CAAC,CAAC;AACjF,MAAM,MAAM,uBAAuB,GAAG,MAAM,CAAC,OAAO,6BAA6B,CAAC,CAAC;AACnF,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,OAAO,wBAAwB,CAAC,CAAC;AACzE,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,OAAO,wBAAwB,CAAC,CAAC;AACzE,MAAM,MAAM,0BAA0B,GAAG,MAAM,CAAC,OAAO,gCAAgC,CAAC,CAAC;AACzF,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,OAAO,uBAAuB,CAAC,CAAC;AACvE,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAC/D,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEtE,8EAA8E;AAC9E,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAMvE;AAED,iEAAiE;AACjE,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,eAAe,GAAG,WAAW,CAYrE;AAMD;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,EAAE,CAmBvE;AAED,8EAA8E;AAC9E,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,kBAAkB,GAAG,MAAM,EAAE,CAE3E;AAED,6EAA6E;AAC7E,wBAAgB,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,EAAE,CAItE"}
1
+ {"version":3,"file":"merged-catalog-schema.d.ts","sourceRoot":"","sources":["../../src/catalog/merged-catalog-schema.ts"],"names":[],"mappings":"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"}
@@ -172,6 +172,61 @@ const chartcatalogsFacetProps = {
172
172
  */
173
173
  export const ChartcatalogsIndexEntrySchema = Type.Object(chartcatalogsFacetProps, STRICT);
174
174
  export const ChartcatalogsIndexSchema = Type.Record(Type.String({ pattern: '^[A-Za-z0-9_]+_Catalog\\.xml$' }), ChartcatalogsIndexEntrySchema);
175
+ /**
176
+ * One feed of ready-made regional MBTiles, as maintained in
177
+ * `catalog/tileset-feeds.json`. The feed itself (its `url`) lists the
178
+ * regions and their files; this entry carries what a boater is told about
179
+ * all of them, so a feed cannot reword its own warnings.
180
+ */
181
+ export const TilesetFeedSchema = Type.Object({
182
+ id: Type.String({
183
+ pattern: '^[a-z0-9]+(-[a-z0-9]+)*$',
184
+ description: 'Permanent feed identifier, prefixed to each region id. Installed charts are tracked by those ids, so never change it.'
185
+ }),
186
+ url: Type.String({
187
+ pattern: '^https://',
188
+ description: 'The feed document listing the regions and their MBTiles files.'
189
+ }),
190
+ category: ChartCategorySchema,
191
+ description: Type.String({
192
+ minLength: 1,
193
+ description: 'One or two plain sentences for a boater, shown with every region of the feed: what the data is and how far to trust it.'
194
+ }),
195
+ provider: Type.String({ minLength: 1 }),
196
+ attribution: Type.String({ minLength: 1 }),
197
+ license: Type.String({ minLength: 1 }),
198
+ licenseUrl: Type.String({ pattern: '^https://' }),
199
+ homepage: Type.String({ pattern: '^https://' }),
200
+ issues: Type.Optional(Type.String({
201
+ pattern: '^https://',
202
+ description: "Where boaters report a problem with the data. Defaults to this repository's catalog problem form."
203
+ })),
204
+ notForNavigation: Type.Optional(Type.Boolean()),
205
+ folder: Type.String({
206
+ minLength: 1,
207
+ pattern: '^[^/\\\\.][^/\\\\]*$',
208
+ description: 'Chart folder the Chart Catalog suggests for every region, so the whole feed can be switched off together.'
209
+ })
210
+ }, STRICT);
211
+ export const TilesetFeedsSourceFileSchema = Type.Object({ feeds: Type.Array(TilesetFeedSchema) }, STRICT);
212
+ /**
213
+ * One region in a feed document, as the feed's publisher writes it. Read
214
+ * tolerantly: a region this build cannot use is skipped and reported, never
215
+ * the whole feed.
216
+ */
217
+ export const TilesetFeedFileSchema = Type.Object({
218
+ id: Type.String({ pattern: '^[a-z0-9]+(-[a-z0-9]+)*$' }),
219
+ name: Type.String({ minLength: 1 }),
220
+ bounds: BboxSchema,
221
+ url: Type.String({ pattern: '^https://[^?#]+\\.mbtiles$' }),
222
+ minzoom: Type.Optional(Type.Integer({ minimum: 0, maximum: 24 })),
223
+ maxzoom: Type.Optional(Type.Integer({ minimum: 0, maximum: 24 })),
224
+ newestArrival: Type.Optional(Type.String())
225
+ });
226
+ export const TilesetFeedDocumentSchema = Type.Object({
227
+ generated: Type.Optional(Type.String()),
228
+ files: Type.Array(Type.Unknown())
229
+ });
175
230
  // ---- Published schemas (tolerant) ----
176
231
  export const MergedCatalogChartSchema = Type.Object({
177
232
  number: Type.String({ minLength: 1 }),
@@ -206,6 +261,37 @@ export const MergedOnlineChartSchema = Type.Object({
206
261
  use: Type.Literal('stream'),
207
262
  format: ChartFormatSchema
208
263
  });
264
+ /** One region of a tileset feed: a single MBTiles file that installs as-is. */
265
+ export const MergedTilesetSchema = Type.Object({
266
+ id: Type.String({
267
+ pattern: '^[a-z0-9]+(-[a-z0-9]+)*$',
268
+ description: 'Permanent identifier, `<feed>-<region>`. It is also the installed file name, so never change or reuse one.'
269
+ }),
270
+ feed: Type.String({ minLength: 1 }),
271
+ name: Type.String({ minLength: 1 }),
272
+ description: Type.String({ minLength: 1 }),
273
+ use: Type.Literal('download'),
274
+ category: ChartCategorySchema,
275
+ format: Type.Literal('mbtiles'),
276
+ bbox: bboxSchema('The area the file covers.'),
277
+ provider: Type.String({ minLength: 1 }),
278
+ attribution: Type.String({ minLength: 1 }),
279
+ license: Type.String({ minLength: 1 }),
280
+ licenseUrl: HttpsUrl,
281
+ homepage: HttpsUrl,
282
+ issues: HttpsUrl,
283
+ notForNavigation: Type.Optional(Type.Boolean()),
284
+ folder: Type.String({ minLength: 1 }),
285
+ file: Type.Object({
286
+ url: HttpsUrl,
287
+ updated: Type.String({
288
+ description: 'ISO 8601 time of the newest data in the file. A later value than the one installed means an update is available.'
289
+ }),
290
+ size: Type.Optional(Type.Integer({ minimum: 0, description: 'File size in bytes.' })),
291
+ minzoom: Type.Optional(Type.Integer({ minimum: 0, maximum: 24 })),
292
+ maxzoom: Type.Optional(Type.Integer({ minimum: 0, maximum: 24 }))
293
+ })
294
+ });
209
295
  export const MergedCatalogSchema = Type.Object({
210
296
  schemaVersion: Type.Literal(MERGED_CATALOG_SCHEMA_VERSION, {
211
297
  description: 'Bumped only for breaking changes; additive changes keep the same version.'
@@ -230,7 +316,11 @@ export const MergedCatalogSchema = Type.Object({
230
316
  })
231
317
  }),
232
318
  chartcatalogs: Type.Array(MergedChartcatalogsCatalogSchema),
233
- online: Type.Array(MergedOnlineChartSchema)
319
+ online: Type.Array(MergedOnlineChartSchema),
320
+ // Optional so catalogs published before it existed still validate.
321
+ tilesets: Type.Optional(Type.Array(MergedTilesetSchema, {
322
+ description: 'Ready-made regional MBTiles from the feeds this repository lists, each installed with a single download and used offline.'
323
+ }))
234
324
  }, {
235
325
  title: 'Signal K merged chart catalog',
236
326
  description: 'Downloadable charts from chartcatalogs.github.io merged with curated online charts. Consumers should ignore unknown fields and validate entries individually, skipping entries they cannot interpret.'
@@ -274,6 +364,28 @@ export const OnlineChartReadSchema = Type.Object({
274
364
  capabilitiesUrl: Type.Optional(HttpsUrl)
275
365
  }))
276
366
  });
367
+ /**
368
+ * What a consumer needs from a tileset entry to list, download and update
369
+ * it. The file URL must name an MBTiles file, because a consumer installs it
370
+ * as-is under the entry's id.
371
+ */
372
+ export const TilesetReadSchema = Type.Object({
373
+ id: Type.String({ pattern: '^[a-z0-9]+(-[a-z0-9]+)*$' }),
374
+ name: Type.String({ minLength: 1 }),
375
+ description: Type.String(),
376
+ category: Type.String(),
377
+ bbox: BboxSchema,
378
+ provider: Type.String(),
379
+ license: Type.String(),
380
+ licenseUrl: Type.String(),
381
+ notForNavigation: Type.Optional(Type.Boolean()),
382
+ folder: Type.Optional(Type.String()),
383
+ file: Type.Object({
384
+ url: Type.String({ pattern: '^https://[^?#]+\\.mbtiles$' }),
385
+ updated: Type.String({ minLength: 1 }),
386
+ size: Type.Optional(Type.Integer({ minimum: 0 }))
387
+ })
388
+ });
277
389
  /** The published JSON Schema document, with the root identifiers it needs. */
278
390
  export function publishedJsonSchema(id) {
279
391
  return {