@honua/app-platform 0.2.3 → 0.2.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/control-plane/dataset-import/client.d.ts +32 -0
- package/control-plane/dataset-import/client.d.ts.map +1 -0
- package/control-plane/dataset-import/client.js +112 -0
- package/control-plane/dataset-import/errors.d.ts +5 -0
- package/control-plane/dataset-import/errors.d.ts.map +1 -0
- package/control-plane/dataset-import/errors.js +8 -0
- package/control-plane/dataset-import/file-hash.d.ts +14 -0
- package/control-plane/dataset-import/file-hash.d.ts.map +1 -0
- package/control-plane/dataset-import/file-hash.js +117 -0
- package/control-plane/dataset-import/index.d.ts +10 -0
- package/control-plane/dataset-import/index.d.ts.map +1 -0
- package/control-plane/dataset-import/index.js +4 -0
- package/control-plane/dataset-import/submission-client.d.ts +18 -0
- package/control-plane/dataset-import/submission-client.d.ts.map +1 -0
- package/control-plane/dataset-import/submission-client.js +197 -0
- package/control-plane/dataset-import/transport.d.ts +14 -0
- package/control-plane/dataset-import/transport.d.ts.map +1 -0
- package/control-plane/dataset-import/transport.js +53 -0
- package/control-plane/dataset-import/types.d.ts +150 -0
- package/control-plane/dataset-import/types.d.ts.map +1 -0
- package/control-plane/dataset-import/types.js +1 -0
- package/control-plane/dataset-import/upload-client.d.ts +23 -0
- package/control-plane/dataset-import/upload-client.d.ts.map +1 -0
- package/control-plane/dataset-import/upload-client.js +187 -0
- package/control-plane/index.d.ts +1 -0
- package/control-plane/index.d.ts.map +1 -1
- package/control-plane/index.js +1 -0
- package/core/job-run-lifecycle.d.ts.map +1 -1
- package/core/job-run-lifecycle.js +4 -0
- package/package.json +2 -2
- package/runtime/generated/map-package-schema-meta.d.ts +1 -1
- package/runtime/generated/map-package-schema-meta.js +1 -1
- package/runtime/generated/map-package-schema-validator.d.ts +5 -5
- package/runtime/generated/map-package-schema-validator.d.ts.map +1 -1
- package/runtime/generated/map-package-schema-validator.js +746 -619
- package/runtime/index.d.ts +1 -1
- package/runtime/index.d.ts.map +1 -1
- package/runtime/map-package-fetch.d.ts +1 -0
- package/runtime/map-package-fetch.d.ts.map +1 -1
- package/runtime/map-package-fetch.js +24 -39
- package/runtime/map-package-validation.d.ts +1 -1
- package/runtime/map-package-validation.d.ts.map +1 -1
- package/runtime/map-package-validation.js +27 -1
- package/runtime/map-package.d.ts +16 -0
- package/runtime/map-package.d.ts.map +1 -1
- package/runtime/ogc-styles.d.ts +2 -2
- package/runtime/ogc-styles.d.ts.map +1 -1
- package/runtime/ogc-styles.js +17 -3
- package/runtime/style-compose.d.ts +2 -2
- package/runtime/style-compose.d.ts.map +1 -1
- package/runtime/style-compose.js +26 -3
- package/runtime/style-ref-bindings.d.ts +11 -0
- package/runtime/style-ref-bindings.d.ts.map +1 -0
- package/runtime/style-ref-bindings.js +82 -0
package/runtime/index.d.ts
CHANGED
|
@@ -39,7 +39,7 @@ export type { HonuaExportRedaction, HonuaExportRedactionReason } from "../core/c
|
|
|
39
39
|
export { HonuaMapRuntime } from "./runtime.js";
|
|
40
40
|
export type { HonuaMapRuntimeInternals, HonuaMapRuntimeReload, HonuaRuntimeEvent, HonuaRuntimeEventListener, HonuaRuntimeTelemetry, HonuaRuntimeTelemetrySpan, HonuaRuntimeTelemetrySpanResult, MaplibreMap, RuntimeHitTestOptions, RuntimePointerInteractionHandler, RuntimePointerInteractionOptions, SetViewStateInput, } from "./runtime.js";
|
|
41
41
|
export { HONUA_MAP_PACKAGE_FORMAT_V1 } from "./map-package.js";
|
|
42
|
-
export type { HonuaMapPackage, HonuaMapPackageAttribution, HonuaMapPackageDependency, HonuaMapPackageFormat, HonuaMapPackageInitialView, HonuaMapPackageLabelBinding, HonuaMapPackageLegendEntry, HonuaMapPackageLocator, HonuaMapPackagePopupBinding, HonuaMapPackageProtocol, HonuaMapPackageProvenance, HonuaMapPackageSourceBinding, HonuaMapPackageStatus, HonuaMapPackageStyleRef, HonuaMapPackageThemeSpec, HonuaMapPackageWidget, HonuaStyleRefBody, HonuaStyleRefLayerOverride, } from "./map-package.js";
|
|
42
|
+
export type { HonuaMapPackage, HonuaMapPackageAttribution, HonuaMapPackageDependency, HonuaMapPackageFormat, HonuaMapPackageInitialView, HonuaMapPackageLabelBinding, HonuaMapPackageLegendEntry, HonuaMapPackageLocator, HonuaMapPackagePopupBinding, HonuaMapPackageProtocol, HonuaMapPackageProvenance, HonuaMapPackageSourceBinding, HonuaMapPackageStatus, HonuaMapPackageStyleRef, HonuaMapPackageThemeSpec, HonuaMapPackageWidget, HonuaStyleRefBody, HonuaStyleRefLayerBinding, HonuaStyleRefLayerOverride, } from "./map-package.js";
|
|
43
43
|
export { HonuaMapPackageError } from "./errors.js";
|
|
44
44
|
export type { HonuaMapPackageErrorStage } from "./errors.js";
|
|
45
45
|
export { buildLegend } from "./legend.js";
|
package/runtime/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtime/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtime/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -44,6 +44,7 @@ export interface FetchMapPackageOptions {
|
|
|
44
44
|
readonly allowInvalid?: boolean;
|
|
45
45
|
}
|
|
46
46
|
export interface MapPackageFetchCacheEntry {
|
|
47
|
+
/** Original package bytes projected as JSON; live style refs retain their absent body. */
|
|
47
48
|
readonly mapPackage: HonuaMapPackage;
|
|
48
49
|
readonly validator?: HonuaCacheValidator;
|
|
49
50
|
readonly cachedAtMs: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"map-package-fetch.d.ts","sourceRoot":"","sources":["../../../src/runtime/map-package-fetch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAElE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"map-package-fetch.d.ts","sourceRoot":"","sources":["../../../src/runtime/map-package-fetch.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ import { HonuaMapPackageError } from "./errors.js";
|
|
|
3
3
|
import { loadMapPackage } from "./load-package.js";
|
|
4
4
|
import { hasMapPackageDiagnosticErrors, validateMapPackage, } from "./map-package-validation.js";
|
|
5
5
|
import { createOgcStyleRefResolver } from "./ogc-styles.js";
|
|
6
|
+
import { readStyleLayerBindings, validateBoundStyleBody, validateStyleBindingTargets } from "./style-ref-bindings.js";
|
|
6
7
|
export const DEFAULT_MAP_PACKAGE_PATH_PREFIX = "/api/v1/map-packages";
|
|
7
8
|
/**
|
|
8
9
|
* Default entry cap for the per-client map-package fetch cache, mirroring the
|
|
@@ -59,15 +60,11 @@ export async function fetchMapPackage(locator, options) {
|
|
|
59
60
|
detail: { path },
|
|
60
61
|
});
|
|
61
62
|
}
|
|
62
|
-
return buildFetchResult(cached.mapPackage, path, "not-modified", {
|
|
63
|
-
validator: honuaCacheValidatorFromHeaders(response.headers) ?? cached.validator,
|
|
64
|
-
sourceUpdatedAt: response.headers.get("last-modified") ?? cached.sourceUpdatedAt,
|
|
65
|
-
revalidatedAt: new Date().toISOString(),
|
|
66
|
-
options,
|
|
67
|
-
});
|
|
68
63
|
}
|
|
69
|
-
|
|
70
|
-
|
|
64
|
+
// A package ETag does not pin live shared styles. Resolve them again even
|
|
65
|
+
// when the immutable package itself is unchanged, retaining raw refs in cache.
|
|
66
|
+
const notModified = response.status === 304;
|
|
67
|
+
const rawPackage = notModified ? cached.mapPackage : unwrapMapPackageEnvelope(await parseJsonBody(response, path));
|
|
71
68
|
const styleRefResolver = options.resolveStyleRef ??
|
|
72
69
|
(options.disableDefaultStyleRefResolver ? undefined : createOgcStyleRefResolver({ client: options.client }));
|
|
73
70
|
const resolved = await resolveMapPackageStyleRefs(rawPackage, {
|
|
@@ -87,13 +84,20 @@ export async function fetchMapPackage(locator, options) {
|
|
|
87
84
|
detail: { diagnostics, path },
|
|
88
85
|
});
|
|
89
86
|
}
|
|
90
|
-
const validator = honuaCacheValidatorFromHeaders(response.headers);
|
|
91
|
-
const sourceUpdatedAt = response.headers.get("last-modified") ?? undefined;
|
|
92
|
-
const
|
|
87
|
+
const validator = honuaCacheValidatorFromHeaders(response.headers) ?? (notModified ? cached?.validator : undefined);
|
|
88
|
+
const sourceUpdatedAt = response.headers.get("last-modified") ?? (notModified ? cached?.sourceUpdatedAt : undefined);
|
|
89
|
+
const fingerprint = stableFingerprint(mapPackage);
|
|
90
|
+
const status = !cache
|
|
91
|
+
? "bypass"
|
|
92
|
+
: notModified && cached?.fingerprint === fingerprint
|
|
93
|
+
? "not-modified"
|
|
94
|
+
: cached
|
|
95
|
+
? "refreshed"
|
|
96
|
+
: "miss";
|
|
93
97
|
const entry = {
|
|
94
|
-
mapPackage:
|
|
98
|
+
mapPackage: rawPackage,
|
|
95
99
|
cachedAtMs: Date.now(),
|
|
96
|
-
fingerprint
|
|
100
|
+
fingerprint,
|
|
97
101
|
...(validator ? { validator } : {}),
|
|
98
102
|
...(sourceUpdatedAt ? { sourceUpdatedAt } : {}),
|
|
99
103
|
};
|
|
@@ -108,6 +112,7 @@ export async function fetchMapPackage(locator, options) {
|
|
|
108
112
|
...(validator ? { validator } : {}),
|
|
109
113
|
...(sourceUpdatedAt ? { sourceUpdatedAt } : {}),
|
|
110
114
|
fetchedAt: new Date(entry.cachedAtMs).toISOString(),
|
|
115
|
+
...(notModified ? { revalidatedAt: new Date().toISOString() } : {}),
|
|
111
116
|
},
|
|
112
117
|
};
|
|
113
118
|
}
|
|
@@ -187,7 +192,10 @@ async function resolveMapPackageStyleRefs(value, options) {
|
|
|
187
192
|
};
|
|
188
193
|
}
|
|
189
194
|
try {
|
|
190
|
-
const
|
|
195
|
+
const bindings = readStyleLayerBindings(ref.layerBindings);
|
|
196
|
+
if (bindings)
|
|
197
|
+
validateStyleBindingTargets(bindings, value.mapSpec);
|
|
198
|
+
const body = await resolveStyleRef(styleId, typeof ref.presetId === "string" ? ref.presetId : undefined, bindings);
|
|
191
199
|
if (!isRecord(body)) {
|
|
192
200
|
return {
|
|
193
201
|
ref: ref,
|
|
@@ -202,6 +210,8 @@ async function resolveMapPackageStyleRefs(value, options) {
|
|
|
202
210
|
},
|
|
203
211
|
};
|
|
204
212
|
}
|
|
213
|
+
if (bindings)
|
|
214
|
+
validateBoundStyleBody(bindings, body);
|
|
205
215
|
return {
|
|
206
216
|
ref: { ...ref, body: body },
|
|
207
217
|
changed: true,
|
|
@@ -230,31 +240,6 @@ async function resolveMapPackageStyleRefs(value, options) {
|
|
|
230
240
|
diagnostics,
|
|
231
241
|
};
|
|
232
242
|
}
|
|
233
|
-
function buildFetchResult(mapPackage, path, status, input) {
|
|
234
|
-
const validation = validateMapPackage(mapPackage, {
|
|
235
|
-
maxAgeMs: input.options.maxAgeMs,
|
|
236
|
-
now: input.options.now,
|
|
237
|
-
});
|
|
238
|
-
if (hasMapPackageDiagnosticErrors(validation.diagnostics) && input.options.allowInvalid !== true) {
|
|
239
|
-
throw new HonuaMapPackageError("MapPackage validation failed", {
|
|
240
|
-
packageId: mapPackage.mapPackageId,
|
|
241
|
-
stage: "validate",
|
|
242
|
-
detail: { diagnostics: validation.diagnostics, path },
|
|
243
|
-
});
|
|
244
|
-
}
|
|
245
|
-
return {
|
|
246
|
-
mapPackage,
|
|
247
|
-
diagnostics: validation.diagnostics,
|
|
248
|
-
cache: {
|
|
249
|
-
status,
|
|
250
|
-
key: path,
|
|
251
|
-
...(input.validator ? { validator: input.validator } : {}),
|
|
252
|
-
...(input.sourceUpdatedAt ? { sourceUpdatedAt: input.sourceUpdatedAt } : {}),
|
|
253
|
-
fetchedAt: new Date().toISOString(),
|
|
254
|
-
...(input.revalidatedAt ? { revalidatedAt: input.revalidatedAt } : {}),
|
|
255
|
-
},
|
|
256
|
-
};
|
|
257
|
-
}
|
|
258
243
|
function buildFetchHeaders(headers, validator) {
|
|
259
244
|
const out = new Headers(headers);
|
|
260
245
|
if (!out.has("Accept"))
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
*/
|
|
21
21
|
import type { HonuaMapPackage } from "./map-package.js";
|
|
22
22
|
export type HonuaMapPackageDiagnosticSeverity = "error" | "warning";
|
|
23
|
-
export type HonuaMapPackageDiagnosticCode = "invalid-package" | "unsupported-format" | "missing-map-package-id" | "missing-source-bindings" | "missing-map-spec" | "invalid-map-spec" | "duplicate-source" | "missing-source-id" | "missing-source-locator" | "unsupported-protocol" | "missing-source" | "stale-package" | "expired-package" | "style-ref-missing-layer" | "style-ref-unresolved" | "style-ref-resolution-failed";
|
|
23
|
+
export type HonuaMapPackageDiagnosticCode = "invalid-package" | "unsupported-format" | "missing-map-package-id" | "missing-source-bindings" | "missing-map-spec" | "invalid-map-spec" | "duplicate-source" | "missing-source-id" | "missing-source-locator" | "unsupported-protocol" | "missing-source" | "stale-package" | "expired-package" | "style-ref-missing-layer" | "style-ref-invalid-binding" | "style-ref-unresolved" | "style-ref-resolution-failed";
|
|
24
24
|
export interface HonuaMapPackageDiagnostic {
|
|
25
25
|
readonly code: HonuaMapPackageDiagnosticCode;
|
|
26
26
|
readonly severity: HonuaMapPackageDiagnosticSeverity;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"map-package-validation.d.ts","sourceRoot":"","sources":["../../../src/runtime/map-package-validation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;
|
|
1
|
+
{"version":3,"file":"map-package-validation.d.ts","sourceRoot":"","sources":["../../../src/runtime/map-package-validation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAKH,OAAO,KAAK,EAAE,eAAe,EAAqB,MAAM,kBAAkB,CAAC;AAG3E,MAAM,MAAM,iCAAiC,GAAG,OAAO,GAAG,SAAS,CAAC;AAEpE,MAAM,MAAM,6BAA6B,GACrC,iBAAiB,GACjB,oBAAoB,GACpB,wBAAwB,GACxB,yBAAyB,GACzB,kBAAkB,GAClB,kBAAkB,GAClB,kBAAkB,GAClB,mBAAmB,GACnB,wBAAwB,GACxB,sBAAsB,GACtB,gBAAgB,GAChB,eAAe,GACf,iBAAiB,GACjB,yBAAyB,GACzB,2BAA2B,GAC3B,sBAAsB,GACtB,6BAA6B,CAAC;AAElC,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,IAAI,EAAE,6BAA6B,CAAC;IAC7C,QAAQ,CAAC,QAAQ,EAAE,iCAAiC,CAAC;IACrD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,yBAAyB;IACxC,iFAAiF;IACjF,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,gGAAgG;IAChG,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,UAAU,EAAE,eAAe,GAAG,SAAS,CAAC;IACjD,QAAQ,CAAC,WAAW,EAAE,SAAS,yBAAyB,EAAE,CAAC;IAC3D,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB;AA8ED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,GAAE,yBAA8B,GAAG,wBAAwB,CAiGpH;AAED,wBAAgB,6BAA6B,CAAC,WAAW,EAAE,SAAS,yBAAyB,EAAE,GAAG,OAAO,CAExG"}
|
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
*/
|
|
21
21
|
import { HONUA_MAP_PACKAGE_SCHEMA_PROTOCOLS } from "./generated/map-package-schema-meta.js";
|
|
22
22
|
import validateAgainstSchema from "./generated/map-package-schema-validator.js";
|
|
23
|
+
import { readStyleLayerBindings, validateBoundStyleBody, validateStyleBindingTargets } from "./style-ref-bindings.js";
|
|
23
24
|
/**
|
|
24
25
|
* Schema-legal protocols the MapLibre source bridge cannot bind to a
|
|
25
26
|
* `Dataset`/`Source` today. The schema is the wire contract and admits these;
|
|
@@ -215,6 +216,7 @@ function validateStyleRefTargets(add, pkg, mapSpec) {
|
|
|
215
216
|
if (!Array.isArray(pkg.styleRefs))
|
|
216
217
|
return;
|
|
217
218
|
const layerIds = new Set();
|
|
219
|
+
const boundTargets = new Set();
|
|
218
220
|
if (Array.isArray(mapSpec.layers)) {
|
|
219
221
|
for (const layer of mapSpec.layers) {
|
|
220
222
|
if (isRecord(layer) && typeof layer.id === "string")
|
|
@@ -223,7 +225,31 @@ function validateStyleRefTargets(add, pkg, mapSpec) {
|
|
|
223
225
|
}
|
|
224
226
|
for (let i = 0; i < pkg.styleRefs.length; i += 1) {
|
|
225
227
|
const ref = pkg.styleRefs[i];
|
|
226
|
-
if (!isRecord(ref)
|
|
228
|
+
if (!isRecord(ref))
|
|
229
|
+
continue;
|
|
230
|
+
try {
|
|
231
|
+
const bindings = readStyleLayerBindings(ref.layerBindings);
|
|
232
|
+
if (bindings) {
|
|
233
|
+
validateStyleBindingTargets(bindings, mapSpec);
|
|
234
|
+
if (ref.body !== undefined)
|
|
235
|
+
validateBoundStyleBody(bindings, ref.body);
|
|
236
|
+
for (const binding of bindings) {
|
|
237
|
+
if (boundTargets.has(binding.targetLayerId))
|
|
238
|
+
throw new Error("Ambiguous shared style target.");
|
|
239
|
+
boundTargets.add(binding.targetLayerId);
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
catch {
|
|
244
|
+
add({
|
|
245
|
+
code: "style-ref-invalid-binding",
|
|
246
|
+
severity: "error",
|
|
247
|
+
message: "Shared style render bindings are invalid or stale.",
|
|
248
|
+
path: `styleRefs[${i}].layerBindings`,
|
|
249
|
+
detail: { styleId: ref.styleId },
|
|
250
|
+
});
|
|
251
|
+
}
|
|
252
|
+
if (!isRecord(ref.body))
|
|
227
253
|
continue;
|
|
228
254
|
for (const layerId of Object.keys(ref.body)) {
|
|
229
255
|
if (layerIds.has(layerId))
|
package/runtime/map-package.d.ts
CHANGED
|
@@ -66,6 +66,22 @@ export interface HonuaMapPackageStyleRef {
|
|
|
66
66
|
* loader instead.
|
|
67
67
|
*/
|
|
68
68
|
body?: HonuaStyleRefBody;
|
|
69
|
+
/** Explicit live catalog-render to map-render mappings; inline bodies are already target-keyed. */
|
|
70
|
+
layerBindings?: readonly HonuaStyleRefLayerBinding[];
|
|
71
|
+
}
|
|
72
|
+
/** A selected catalog render layer applied to a particular render layer in this map. */
|
|
73
|
+
export interface HonuaStyleRefLayerBinding {
|
|
74
|
+
/** Exact render-layer id in the shared catalog stylesheet. */
|
|
75
|
+
styleLayerId: string;
|
|
76
|
+
/** Exact render-layer id in this package's mapSpec. */
|
|
77
|
+
targetLayerId: string;
|
|
78
|
+
/** Expected catalog render type; a changed type requires rebinding. */
|
|
79
|
+
layerType: string;
|
|
80
|
+
/**
|
|
81
|
+
* Selected override properties. Omission selects the normal override set.
|
|
82
|
+
* Cross-type mappings may carry only filter, zoom bounds and visibility.
|
|
83
|
+
*/
|
|
84
|
+
properties?: readonly ("paint" | "layout" | "filter" | "minzoom" | "maxzoom" | "metadata" | "visibility")[];
|
|
69
85
|
}
|
|
70
86
|
/**
|
|
71
87
|
* Resolved `StyleRef` body. Keys name MapLibre layers; values are partial
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"map-package.d.ts","sourceRoot":"","sources":["../../../src/runtime/map-package.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEzE,2DAA2D;AAC3D,eAAO,MAAM,2BAA2B,EAAG,sBAA+B,CAAC;AAE3E,2DAA2D;AAC3D,MAAM,MAAM,qBAAqB,GAAG,OAAO,2BAA2B,CAAC;AAEvE,4DAA4D;AAC5D,MAAM,MAAM,qBAAqB,GAAG,OAAO,GAAG,WAAW,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE3F;;;;GAIG;AACH,MAAM,MAAM,uBAAuB,GAC/B,6BAA6B,GAC7B,yBAAyB,GACzB,cAAc,GACd,UAAU,GACV,WAAW,GACX,KAAK,GACL,KAAK,GACL,MAAM,GACN,OAAO,GACP,aAAa,GACb,aAAa,GACb,SAAS,GACT,oBAAoB,CAAC;AAEzB,oEAAoE;AACpE,MAAM,WAAW,sBAAsB;IACrC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yDAAyD;IACzD,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B;AAED,yDAAyD;AACzD,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,uBAAuB,CAAC;IAClC,OAAO,EAAE,sBAAsB,CAAC;IAChC,yDAAyD;IACzD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2CAA2C;IAC3C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACnC;AAED,4DAA4D;AAC5D,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"map-package.d.ts","sourceRoot":"","sources":["../../../src/runtime/map-package.ts"],"names":[],"mappings":"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"}
|
package/runtime/ogc-styles.d.ts
CHANGED
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
*/
|
|
21
21
|
import type { HonuaClient } from "../core/client.js";
|
|
22
22
|
import type { HonuaStyleSpecification } from "../style/specification.js";
|
|
23
|
-
import type { HonuaStyleRefBody } from "./map-package.js";
|
|
23
|
+
import type { HonuaStyleRefBody, HonuaStyleRefLayerBinding } from "./map-package.js";
|
|
24
24
|
import type { StyleRefResolver } from "./style-compose.js";
|
|
25
25
|
/** Default path prefix for the server's OGC API – Styles surface. */
|
|
26
26
|
export declare const DEFAULT_OGC_STYLES_PATH_PREFIX = "/ogc/styles";
|
|
@@ -106,5 +106,5 @@ export declare function createOgcStyleRefResolver(options: OgcStyleRefResolverOp
|
|
|
106
106
|
* per-layer paint/layout overrides keyed by layer id. Layers without any
|
|
107
107
|
* override-relevant fields are omitted.
|
|
108
108
|
*/
|
|
109
|
-
export declare function styleDocumentToRefBody(style: HonuaStyleSpecification): HonuaStyleRefBody;
|
|
109
|
+
export declare function styleDocumentToRefBody(style: HonuaStyleSpecification, layerBindings?: readonly HonuaStyleRefLayerBinding[]): HonuaStyleRefBody;
|
|
110
110
|
//# sourceMappingURL=ogc-styles.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ogc-styles.d.ts","sourceRoot":"","sources":["../../../src/runtime/ogc-styles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,KAAK,EAA2B,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAElG,OAAO,KAAK,EAAE,iBAAiB,EAA8B,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"ogc-styles.d.ts","sourceRoot":"","sources":["../../../src/runtime/ogc-styles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,KAAK,EAA2B,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAElG,OAAO,KAAK,EAAE,iBAAiB,EAAE,yBAAyB,EAA8B,MAAM,kBAAkB,CAAC;AACjH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAG3D,qEAAqE;AACrE,eAAO,MAAM,8BAA8B,gBAAgB,CAAC;AAE5D;;;GAGG;AACH,eAAO,MAAM,yBAAyB,sCAAsC,CAAC;AAE7E,+DAA+D;AAC/D,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,iDAAiD;AACjD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,YAAY,EAAE,CAAC;CAC1C;AAED,0CAA0C;AAC1C,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAC9C,uDAAuD;IACvD,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,qDAAqD;AACrD,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC;CAChC;AAED,qDAAqD;AACrD,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B;;;OAGG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED;;;;GAIG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IACrC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAExB,OAAO,EAAE,sBAAsB;IAK3C,mDAAmD;IACtC,UAAU,CAAC,OAAO,GAAE,uBAA4B,GAAG,OAAO,CAAC,YAAY,CAAC;IAKrF;;;;OAIG;IACU,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,uBAA4B,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAY/G,kFAAkF;IACrE,gBAAgB,CAC3B,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAYnC,mDAAmD;IAC5C,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;YAI3B,OAAO;CActB;AAED,qDAAqD;AACrD,MAAM,WAAW,0BAA2B,SAAQ,sBAAsB,EAAE,uBAAuB;CAAG;AAEtG;;;;;;;;;;;GAWG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,0BAA0B,GAAG,gBAAgB,CAc/F;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,uBAAuB,EAC9B,aAAa,CAAC,EAAE,SAAS,yBAAyB,EAAE,GACnD,iBAAiB,CAsBnB"}
|
package/runtime/ogc-styles.js
CHANGED
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
*/
|
|
21
21
|
import { trimTrailingSlashes } from "../core/path-utils.js";
|
|
22
22
|
import { HonuaMapPackageError } from "./errors.js";
|
|
23
|
+
import { readStyleLayerBindings, selectBoundStyleOverride } from "./style-ref-bindings.js";
|
|
23
24
|
/** Default path prefix for the server's OGC API – Styles surface. */
|
|
24
25
|
export const DEFAULT_OGC_STYLES_PATH_PREFIX = "/ogc/styles";
|
|
25
26
|
/**
|
|
@@ -114,9 +115,10 @@ export function createOgcStyleRefResolver(options) {
|
|
|
114
115
|
...(options.signal ? { signal: options.signal } : {}),
|
|
115
116
|
...(options.headers ? { headers: options.headers } : {}),
|
|
116
117
|
};
|
|
117
|
-
return async (styleId) => {
|
|
118
|
+
return async (styleId, _presetId, layerBindings) => {
|
|
119
|
+
const bindings = readStyleLayerBindings(layerBindings);
|
|
118
120
|
const style = await ogc.getStyle(styleId, requestOptions);
|
|
119
|
-
return styleDocumentToRefBody(style);
|
|
121
|
+
return styleDocumentToRefBody(style, bindings);
|
|
120
122
|
};
|
|
121
123
|
}
|
|
122
124
|
/**
|
|
@@ -124,7 +126,19 @@ export function createOgcStyleRefResolver(options) {
|
|
|
124
126
|
* per-layer paint/layout overrides keyed by layer id. Layers without any
|
|
125
127
|
* override-relevant fields are omitted.
|
|
126
128
|
*/
|
|
127
|
-
export function styleDocumentToRefBody(style) {
|
|
129
|
+
export function styleDocumentToRefBody(style, layerBindings) {
|
|
130
|
+
const bindings = readStyleLayerBindings(layerBindings);
|
|
131
|
+
if (bindings) {
|
|
132
|
+
return Object.fromEntries(bindings.map((binding) => {
|
|
133
|
+
const selected = style.layers.filter((layer) => layer.id === binding.styleLayerId);
|
|
134
|
+
if (selected.length !== 1 || selected[0].type !== binding.layerType)
|
|
135
|
+
throw new HonuaMapPackageError("The selected shared style render layer changed; rebind the style.", {
|
|
136
|
+
stage: "style-compose",
|
|
137
|
+
detail: { styleLayerId: binding.styleLayerId },
|
|
138
|
+
});
|
|
139
|
+
return [binding.targetLayerId, selectBoundStyleOverride(layerToOverride(selected[0]) ?? {}, binding)];
|
|
140
|
+
}));
|
|
141
|
+
}
|
|
128
142
|
const body = {};
|
|
129
143
|
for (const layer of style.layers ?? []) {
|
|
130
144
|
if (!layer || typeof layer.id !== "string")
|
|
@@ -15,14 +15,14 @@
|
|
|
15
15
|
* @module
|
|
16
16
|
*/
|
|
17
17
|
import type { HonuaStyleSpecification } from "../style/specification.js";
|
|
18
|
-
import type { HonuaMapPackage, HonuaMapPackageThemeSpec, HonuaStyleRefBody } from "./map-package.js";
|
|
18
|
+
import type { HonuaMapPackage, HonuaMapPackageThemeSpec, HonuaStyleRefBody, HonuaStyleRefLayerBinding } from "./map-package.js";
|
|
19
19
|
/**
|
|
20
20
|
* Resolver for out-of-band style-ref bodies. Returns the per-layer
|
|
21
21
|
* override map keyed by MapLibre layer id. The default loader assumes
|
|
22
22
|
* inline bodies attached to the package and calls this resolver only
|
|
23
23
|
* when the inline body is absent.
|
|
24
24
|
*/
|
|
25
|
-
export type StyleRefResolver = (styleId: string, presetId?: string) => Promise<HonuaStyleRefBody>;
|
|
25
|
+
export type StyleRefResolver = (styleId: string, presetId?: string, layerBindings?: readonly HonuaStyleRefLayerBinding[]) => Promise<HonuaStyleRefBody>;
|
|
26
26
|
/** Resolver for out-of-band theme bodies; called only when `mapPackage.theme` is absent. */
|
|
27
27
|
export type ThemeResolver = (themeId: string) => Promise<HonuaMapPackageThemeSpec>;
|
|
28
28
|
export interface StyleComposeOptions {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"style-compose.d.ts","sourceRoot":"","sources":["../../../src/runtime/style-compose.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAA2B,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAElG,OAAO,KAAK,EACV,eAAe,EACf,wBAAwB,EACxB,iBAAiB,
|
|
1
|
+
{"version":3,"file":"style-compose.d.ts","sourceRoot":"","sources":["../../../src/runtime/style-compose.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAA2B,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAElG,OAAO,KAAK,EACV,eAAe,EACf,wBAAwB,EACxB,iBAAiB,EACjB,yBAAyB,EAE1B,MAAM,kBAAkB,CAAC;AAQ1B;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAC7B,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,MAAM,EACjB,aAAa,CAAC,EAAE,SAAS,yBAAyB,EAAE,KACjD,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAEhC,4FAA4F;AAC5F,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,wBAAwB,CAAC,CAAC;AAEnF,MAAM,WAAW,mBAAmB;IAClC,eAAe,CAAC,EAAE,gBAAgB,CAAC;IACnC,YAAY,CAAC,EAAE,aAAa,CAAC;CAC9B;AAED,4DAA4D;AAC5D,wBAAsB,YAAY,CAChC,GAAG,EAAE,eAAe,EACpB,kBAAkB,EAAE,uBAAuB,EAC3C,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,uBAAuB,CAAC,CAclC;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,uBAAuB,EAC7B,GAAG,EAAE,eAAe,EACpB,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,uBAAuB,CAAC,CA6ClC;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,uBAAuB,EAAE,KAAK,EAAE,wBAAwB,GAAG,uBAAuB,CAMnH"}
|
package/runtime/style-compose.js
CHANGED
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
* @module
|
|
16
16
|
*/
|
|
17
17
|
import { HonuaMapPackageError } from "./errors.js";
|
|
18
|
+
import { readStyleLayerBindings, selectBoundStyleOverride, validateBoundStyleBody, validateStyleBindingTargets, } from "./style-ref-bindings.js";
|
|
18
19
|
/** Compose a MapLibre-ready style from the `MapPackage`. */
|
|
19
20
|
export async function composeStyle(pkg, mapSpecWithSources, options) {
|
|
20
21
|
try {
|
|
@@ -43,8 +44,24 @@ export async function applyStyleRefs(base, pkg, resolve) {
|
|
|
43
44
|
if (refs.length === 0)
|
|
44
45
|
return base;
|
|
45
46
|
const nextLayers = base.layers.map((layer) => cloneLayer(layer));
|
|
46
|
-
|
|
47
|
-
|
|
47
|
+
const boundTargets = new Set();
|
|
48
|
+
const references = refs.map((ref) => {
|
|
49
|
+
const bindings = readStyleLayerBindings(ref.layerBindings);
|
|
50
|
+
if (bindings) {
|
|
51
|
+
validateStyleBindingTargets(bindings, base);
|
|
52
|
+
for (const binding of bindings) {
|
|
53
|
+
if (boundTargets.has(binding.targetLayerId))
|
|
54
|
+
throw new HonuaMapPackageError("Multiple shared styles claim the same explicit target layer.", {
|
|
55
|
+
packageId: pkg.mapPackageId,
|
|
56
|
+
stage: "style-compose",
|
|
57
|
+
});
|
|
58
|
+
boundTargets.add(binding.targetLayerId);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return { ref, bindings };
|
|
62
|
+
});
|
|
63
|
+
for (const { ref, bindings } of references) {
|
|
64
|
+
const body = ref.body ?? (resolve ? await resolve(ref.styleId, ref.presetId, bindings) : undefined);
|
|
48
65
|
if (!body) {
|
|
49
66
|
throw new HonuaMapPackageError(`StyleRef "${ref.styleId}" has no inline body and no resolver was provided`, {
|
|
50
67
|
packageId: pkg.mapPackageId,
|
|
@@ -52,11 +69,17 @@ export async function applyStyleRefs(base, pkg, resolve) {
|
|
|
52
69
|
detail: { styleId: ref.styleId },
|
|
53
70
|
});
|
|
54
71
|
}
|
|
72
|
+
if (bindings)
|
|
73
|
+
validateBoundStyleBody(bindings, body);
|
|
55
74
|
for (const [layerId, override] of Object.entries(body)) {
|
|
56
75
|
const idx = nextLayers.findIndex((layer) => layer.id === layerId);
|
|
57
76
|
if (idx === -1)
|
|
58
77
|
continue;
|
|
59
|
-
|
|
78
|
+
const binding = bindings?.find((item) => item.targetLayerId === layerId);
|
|
79
|
+
const selected = binding ? selectBoundStyleOverride(override, binding) : override;
|
|
80
|
+
if (binding && base.layers[idx].layout?.visibility === "none")
|
|
81
|
+
selected.layout = { ...selected.layout, visibility: "none" };
|
|
82
|
+
nextLayers[idx] = mergeLayerOverride(nextLayers[idx], selected);
|
|
60
83
|
}
|
|
61
84
|
}
|
|
62
85
|
return { ...base, layers: nextLayers };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { HonuaStyleSpecification } from "../style/specification.js";
|
|
2
|
+
import type { HonuaStyleRefBody, HonuaStyleRefLayerBinding, HonuaStyleRefLayerOverride } from "./map-package.js";
|
|
3
|
+
/** Validate untrusted portable bindings before resolving or applying a shared style. */
|
|
4
|
+
export declare function readStyleLayerBindings(value: unknown): readonly HonuaStyleRefLayerBinding[] | undefined;
|
|
5
|
+
/** Refuse stale map targets instead of silently dropping a shared style override. */
|
|
6
|
+
export declare function validateStyleBindingTargets(bindings: readonly HonuaStyleRefLayerBinding[], style: HonuaStyleSpecification): void;
|
|
7
|
+
/** A custom resolver must also return exactly the explicitly bound target set. */
|
|
8
|
+
export declare function validateBoundStyleBody(bindings: readonly HonuaStyleRefLayerBinding[], body: HonuaStyleRefBody): void;
|
|
9
|
+
/** Select appearance properties without carrying source identity or ownership metadata. */
|
|
10
|
+
export declare function selectBoundStyleOverride(override: HonuaStyleRefLayerOverride, binding: HonuaStyleRefLayerBinding): HonuaStyleRefLayerOverride;
|
|
11
|
+
//# sourceMappingURL=style-ref-bindings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"style-ref-bindings.d.ts","sourceRoot":"","sources":["../../../src/runtime/style-ref-bindings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEzE,OAAO,KAAK,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAUjH,wFAAwF;AACxF,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,yBAAyB,EAAE,GAAG,SAAS,CA0BvG;AAED,qFAAqF;AACrF,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,SAAS,yBAAyB,EAAE,EAC9C,KAAK,EAAE,uBAAuB,GAC7B,IAAI,CAWN;AAED,kFAAkF;AAClF,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,SAAS,yBAAyB,EAAE,EAAE,IAAI,EAAE,iBAAiB,GAAG,IAAI,CAapH;AAED,2FAA2F;AAC3F,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,0BAA0B,EACpC,OAAO,EAAE,yBAAyB,GACjC,0BAA0B,CAuB5B"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { HonuaMapPackageError } from "./errors.js";
|
|
2
|
+
const normalProperties = ["paint", "layout", "filter", "minzoom", "maxzoom", "metadata"];
|
|
3
|
+
const allowedProperties = new Set([...normalProperties, "visibility"]);
|
|
4
|
+
const crossTypeProperties = new Set(["filter", "minzoom", "maxzoom", "visibility"]);
|
|
5
|
+
function invalid(message) {
|
|
6
|
+
throw new HonuaMapPackageError(message, { stage: "style-compose" });
|
|
7
|
+
}
|
|
8
|
+
/** Validate untrusted portable bindings before resolving or applying a shared style. */
|
|
9
|
+
export function readStyleLayerBindings(value) {
|
|
10
|
+
if (value === undefined)
|
|
11
|
+
return undefined;
|
|
12
|
+
if (!Array.isArray(value) || value.length === 0 || value.length > 256)
|
|
13
|
+
invalid("Style layer bindings must contain between 1 and 256 mappings.");
|
|
14
|
+
const targets = new Set();
|
|
15
|
+
for (const binding of value) {
|
|
16
|
+
if (!binding || typeof binding !== "object" || Array.isArray(binding))
|
|
17
|
+
invalid("Invalid style layer binding.");
|
|
18
|
+
for (const key of ["styleLayerId", "targetLayerId", "layerType"]) {
|
|
19
|
+
if (typeof binding[key] !== "string" || !binding[key].trim() || binding[key].length > 256)
|
|
20
|
+
invalid(`Style layer binding requires a bounded ${key}.`);
|
|
21
|
+
}
|
|
22
|
+
if (targets.has(binding.targetLayerId))
|
|
23
|
+
invalid("A style reference cannot map multiple overrides to one target layer.");
|
|
24
|
+
targets.add(binding.targetLayerId);
|
|
25
|
+
if (binding.properties !== undefined) {
|
|
26
|
+
if (!Array.isArray(binding.properties) ||
|
|
27
|
+
binding.properties.length === 0 ||
|
|
28
|
+
binding.properties.length > allowedProperties.size ||
|
|
29
|
+
new Set(binding.properties).size !== binding.properties.length ||
|
|
30
|
+
binding.properties.some((property) => typeof property !== "string" || !allowedProperties.has(property)))
|
|
31
|
+
invalid("Invalid shared style binding properties.");
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return value;
|
|
35
|
+
}
|
|
36
|
+
/** Refuse stale map targets instead of silently dropping a shared style override. */
|
|
37
|
+
export function validateStyleBindingTargets(bindings, style) {
|
|
38
|
+
if (!style || !Array.isArray(style.layers))
|
|
39
|
+
invalid("A shared style binding requires a map render-layer list.");
|
|
40
|
+
for (const binding of bindings) {
|
|
41
|
+
const targets = style.layers.filter((layer) => layer && layer.id === binding.targetLayerId);
|
|
42
|
+
if (targets.length !== 1)
|
|
43
|
+
invalid(`Shared style target "${binding.targetLayerId}" is missing or ambiguous.`);
|
|
44
|
+
if (targets[0].type !== binding.layerType &&
|
|
45
|
+
(binding.properties ?? normalProperties).some((property) => !crossTypeProperties.has(property)))
|
|
46
|
+
invalid(`Shared style target "${binding.targetLayerId}" has an incompatible render type.`);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
/** A custom resolver must also return exactly the explicitly bound target set. */
|
|
50
|
+
export function validateBoundStyleBody(bindings, body) {
|
|
51
|
+
const targets = new Set(bindings.map((binding) => binding.targetLayerId));
|
|
52
|
+
if (!body ||
|
|
53
|
+
typeof body !== "object" ||
|
|
54
|
+
Array.isArray(body) ||
|
|
55
|
+
Object.keys(body).length !== targets.size ||
|
|
56
|
+
Object.keys(body).some((id) => !targets.has(id)) ||
|
|
57
|
+
[...targets].some((id) => !Object.hasOwn(body, id) || !body[id] || typeof body[id] !== "object" || Array.isArray(body[id])))
|
|
58
|
+
invalid("Shared style resolution did not return the selected map layers.");
|
|
59
|
+
}
|
|
60
|
+
/** Select appearance properties without carrying source identity or ownership metadata. */
|
|
61
|
+
export function selectBoundStyleOverride(override, binding) {
|
|
62
|
+
const selected = {};
|
|
63
|
+
for (const property of binding.properties ?? normalProperties) {
|
|
64
|
+
if (property === "visibility") {
|
|
65
|
+
if (override.layout?.visibility !== undefined)
|
|
66
|
+
selected.layout = { ...selected.layout, visibility: override.layout.visibility };
|
|
67
|
+
}
|
|
68
|
+
else if (property === "metadata") {
|
|
69
|
+
if (override.metadata !== undefined)
|
|
70
|
+
selected.metadata = Object.fromEntries(Object.entries(override.metadata).filter(([key]) => key !== "honua:compositionLayerId" && key !== "honua:compositionSourceId"));
|
|
71
|
+
}
|
|
72
|
+
else if (override[property] !== undefined) {
|
|
73
|
+
Object.defineProperty(selected, property, {
|
|
74
|
+
value: structuredClone(override[property]),
|
|
75
|
+
enumerable: true,
|
|
76
|
+
configurable: true,
|
|
77
|
+
writable: true,
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return selected;
|
|
82
|
+
}
|