@tileflow/capture 0.1.0-alpha.37 → 0.1.0-alpha.39
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.
|
@@ -73,7 +73,7 @@ function boundText(value, limit) {
|
|
|
73
73
|
}
|
|
74
74
|
|
|
75
75
|
// src/receipt.ts
|
|
76
|
-
var tileflowCaptureReceiptSchemaVersion =
|
|
76
|
+
var tileflowCaptureReceiptSchemaVersion = 5;
|
|
77
77
|
var tileflowCaptureReceiptLimits = Object.freeze({ maximumBytes: 64 * 1024 });
|
|
78
78
|
var maximumReceiptBindingEntries = 128;
|
|
79
79
|
function createTileflowCaptureReceipt(input) {
|
|
@@ -458,10 +458,10 @@ function validateDataIdentity(value) {
|
|
|
458
458
|
"releaseId",
|
|
459
459
|
"schema",
|
|
460
460
|
"schemaVersion",
|
|
461
|
-
"
|
|
462
|
-
"
|
|
461
|
+
"sourceId",
|
|
462
|
+
"sources"
|
|
463
463
|
]);
|
|
464
|
-
if (data.product !== "world-v1" || data.schema !== "
|
|
464
|
+
if (data.product !== "world-v1" || data.schema !== "tileflow-world" || data.sourceId !== "tileflow") {
|
|
465
465
|
throw invalidReceipt("The baseline receipt has an unsupported World data contract.");
|
|
466
466
|
}
|
|
467
467
|
return {
|
|
@@ -472,40 +472,67 @@ function validateDataIdentity(value) {
|
|
|
472
472
|
kind: "tileflow-world",
|
|
473
473
|
product: "world-v1",
|
|
474
474
|
releaseId: requireWorldReleaseId(data.releaseId),
|
|
475
|
-
schema: "
|
|
475
|
+
schema: "tileflow-world",
|
|
476
476
|
schemaVersion: requirePositiveInteger(data.schemaVersion, "data.schemaVersion"),
|
|
477
|
-
|
|
478
|
-
|
|
477
|
+
sourceId: "tileflow",
|
|
478
|
+
sources: validateWorldSources(data.sources)
|
|
479
479
|
};
|
|
480
480
|
}
|
|
481
481
|
if (data.kind !== "vector-tiles") {
|
|
482
482
|
throw invalidReceipt("The baseline receipt has an invalid data.kind.");
|
|
483
483
|
}
|
|
484
|
+
const openMapTiles = data.schema === "openmaptiles";
|
|
484
485
|
requireExactKeys(data, [
|
|
485
|
-
"bindings",
|
|
486
|
-
"capabilities",
|
|
486
|
+
...openMapTiles ? ["bindings"] : [],
|
|
487
487
|
"kind",
|
|
488
488
|
...data.revision === void 0 ? [] : ["revision"],
|
|
489
489
|
"schema",
|
|
490
490
|
"schemaVersion",
|
|
491
|
-
"semantics",
|
|
491
|
+
...openMapTiles ? ["semantics"] : [],
|
|
492
492
|
"source",
|
|
493
493
|
"sourceId"
|
|
494
494
|
]);
|
|
495
|
-
if (data.schema !== "
|
|
495
|
+
if (!openMapTiles && data.schema !== "tileflow-world" || data.sourceId !== "tileflow") {
|
|
496
496
|
throw invalidReceipt("The baseline receipt has an unsupported data contract.");
|
|
497
497
|
}
|
|
498
|
-
|
|
499
|
-
bindings: validateDataBindings(data.bindings, "data.bindings"),
|
|
500
|
-
capabilities: validateDataCapabilities(data.capabilities, "data.capabilities"),
|
|
498
|
+
const common = {
|
|
501
499
|
kind: "vector-tiles",
|
|
502
500
|
...data.revision === void 0 ? {} : { revision: requireSourceRevision(data.revision) },
|
|
503
|
-
schema: "openmaptiles",
|
|
504
501
|
schemaVersion: requirePositiveInteger(data.schemaVersion, "data.schemaVersion"),
|
|
505
|
-
semantics: validateDataSemantics(data.semantics, "data.semantics"),
|
|
506
502
|
source: validateDataSource(data.source, "data.source"),
|
|
507
503
|
sourceId: "tileflow"
|
|
508
504
|
};
|
|
505
|
+
return openMapTiles ? {
|
|
506
|
+
...common,
|
|
507
|
+
bindings: validateDataBindings(data.bindings, "data.bindings"),
|
|
508
|
+
schema: "openmaptiles",
|
|
509
|
+
semantics: validateDataSemantics(data.semantics, "data.semantics")
|
|
510
|
+
} : { ...common, schema: "tileflow-world" };
|
|
511
|
+
}
|
|
512
|
+
function validateWorldSources(value) {
|
|
513
|
+
if (!Array.isArray(value) || value.length < 1 || value.length > 2) {
|
|
514
|
+
throw invalidReceipt("The baseline receipt has invalid data.sources.");
|
|
515
|
+
}
|
|
516
|
+
const sources = value.map((entry, index) => {
|
|
517
|
+
const source = requireRecord(entry, `data.sources[${index}]`);
|
|
518
|
+
requireExactKeys(source, ["archiveSha256", "contractSha256", "dataContractSha256", "id"]);
|
|
519
|
+
if (source.id !== "world" && source.id !== "world-detail") {
|
|
520
|
+
throw invalidReceipt("The baseline receipt has an invalid World source.");
|
|
521
|
+
}
|
|
522
|
+
return {
|
|
523
|
+
archiveSha256: requireHash(source.archiveSha256, `data.sources[${index}].archiveSha256`),
|
|
524
|
+
contractSha256: requireHash(source.contractSha256, `data.sources[${index}].contractSha256`),
|
|
525
|
+
dataContractSha256: requireHash(
|
|
526
|
+
source.dataContractSha256,
|
|
527
|
+
`data.sources[${index}].dataContractSha256`
|
|
528
|
+
),
|
|
529
|
+
id: source.id
|
|
530
|
+
};
|
|
531
|
+
});
|
|
532
|
+
if (sources.length === 2 && (sources[0].id !== "world" || sources[1].id !== "world-detail")) {
|
|
533
|
+
throw invalidReceipt("The baseline receipt has World sources out of order.");
|
|
534
|
+
}
|
|
535
|
+
return sources;
|
|
509
536
|
}
|
|
510
537
|
function normalizeCaptureDataInput(input) {
|
|
511
538
|
if (input.kind === "tileflow-world") return input;
|
|
@@ -553,26 +580,6 @@ function requireBindingValue(value, field) {
|
|
|
553
580
|
}
|
|
554
581
|
return value;
|
|
555
582
|
}
|
|
556
|
-
function validateDataCapabilities(value, field) {
|
|
557
|
-
const capabilities = requireRecord(value, field);
|
|
558
|
-
requireExactKeys(capabilities, [
|
|
559
|
-
"businessCorridor",
|
|
560
|
-
"bathymetry",
|
|
561
|
-
"canopy",
|
|
562
|
-
"globalLandcover",
|
|
563
|
-
"tree"
|
|
564
|
-
]);
|
|
565
|
-
if (typeof capabilities.businessCorridor !== "boolean" || typeof capabilities.bathymetry !== "boolean" || typeof capabilities.canopy !== "boolean" || typeof capabilities.globalLandcover !== "boolean" || typeof capabilities.tree !== "boolean") {
|
|
566
|
-
throw invalidReceipt(`The baseline receipt has an invalid ${field} object.`);
|
|
567
|
-
}
|
|
568
|
-
return {
|
|
569
|
-
businessCorridor: capabilities.businessCorridor,
|
|
570
|
-
bathymetry: capabilities.bathymetry,
|
|
571
|
-
canopy: capabilities.canopy,
|
|
572
|
-
globalLandcover: capabilities.globalLandcover,
|
|
573
|
-
tree: capabilities.tree
|
|
574
|
-
};
|
|
575
|
-
}
|
|
576
583
|
function validateDataSource(value, field) {
|
|
577
584
|
const source = requireRecord(value, field);
|
|
578
585
|
requireExactKeys(source, ["kind", "sha256"]);
|
|
@@ -611,7 +618,7 @@ function assertPlainReceiptData(value, path = "receipt", state = {
|
|
|
611
618
|
if (value === null || value === void 0 || typeof value === "string" || typeof value === "number" || typeof value === "boolean") {
|
|
612
619
|
return;
|
|
613
620
|
}
|
|
614
|
-
if (typeof value === "object" && Array.isArray(value) && state.allowArrays) {
|
|
621
|
+
if (typeof value === "object" && Array.isArray(value) && (state.allowArrays || path.endsWith(".data.sources"))) {
|
|
615
622
|
assertPlainReceiptArray(value, path, state, depth);
|
|
616
623
|
return;
|
|
617
624
|
}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Browser } from 'playwright';
|
|
2
|
-
import { T as TileflowCaptureRendererIdentity, a as TileflowShotReceiptV1, b as TileflowCaptureReceipt, c as TileflowCaptureDataInput, d as TileflowCaptureWorldIdentity } from './receipt-
|
|
3
|
-
export { C as CreateTileflowCaptureReceiptInput, e as CreateTileflowShotReceiptInput, f as TileflowCaptureDataBindings, g as
|
|
2
|
+
import { T as TileflowCaptureRendererIdentity, a as TileflowShotReceiptV1, b as TileflowCaptureReceipt, c as TileflowCaptureDataInput, d as TileflowCaptureWorldIdentity } from './receipt-CgJMeTdQ.js';
|
|
3
|
+
export { C as CreateTileflowCaptureReceiptInput, e as CreateTileflowShotReceiptInput, f as TileflowCaptureDataBindings, g as TileflowCaptureDataIdentity, h as TileflowCaptureDataSemantics, i as TileflowCaptureDataSource, j as TileflowCaptureVectorIdentity, k as TileflowCaptureVerification, l as TileflowCaptureWorldSource, m as createTileflowCaptureReceipt, n as createTileflowCaptureRendererIdentity, o as createTileflowShotReceipt, p as parseTileflowCaptureReceipt, q as parseTileflowShotReceipt, s as serializeTileflowCaptureReceipt, r as serializeTileflowShotReceipt, t as tileflowCaptureReceiptLimits, u as tileflowCaptureReceiptSchemaVersion, v as tileflowCaptureRuntime, w as tileflowShotReceiptLimits, x as tileflowShotReceiptSchemaVersion, y as validateTileflowCaptureReceipt, z as validateTileflowShotReceipt } from './receipt-CgJMeTdQ.js';
|
|
4
4
|
import { NormalizedTileflowCaptureShot, NormalizedTileflowCaptureScene, TileflowCaptureScene, MapLibreStyle } from '@tileflow/core';
|
|
5
5
|
import { TileflowBuildAsset, TileflowIconResolutionOptions, TileflowBuildArtifacts } from '@tileflow/dev/artifacts';
|
|
6
6
|
|
|
@@ -181,7 +181,7 @@ type FetchTileJson = (input: string, init: {
|
|
|
181
181
|
signal?: AbortSignal;
|
|
182
182
|
}) => Promise<Pick<Response, 'ok' | 'status' | 'text'>>;
|
|
183
183
|
type TileflowCaptureResolvedWorldV1 = Readonly<{
|
|
184
|
-
identity: Omit<TileflowCaptureWorldIdentity, 'kind' | 'schema' | 'schemaVersion' | '
|
|
184
|
+
identity: Omit<TileflowCaptureWorldIdentity, 'kind' | 'schema' | 'schemaVersion' | 'sourceId'>;
|
|
185
185
|
tileJsonUrl: string;
|
|
186
186
|
tileJson: string;
|
|
187
187
|
tiles: readonly [string];
|
package/dist/index.js
CHANGED
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
tileflowShotReceiptSchemaVersion,
|
|
14
14
|
validateTileflowCaptureReceipt,
|
|
15
15
|
validateTileflowShotReceipt
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-EM6T7YER.js";
|
|
17
17
|
|
|
18
18
|
// src/browser.ts
|
|
19
19
|
import { spawn } from "child_process";
|
|
@@ -374,6 +374,7 @@ globalThis.__tileflowRegisterContourProtocol = registerTileflowContourProtocol;
|
|
|
374
374
|
globalThis.__tileflowRegisterPathGroundProtocol = registerTileflowPathGroundProtocol;
|
|
375
375
|
globalThis.__tileflowRegisterPmtilesProtocol = registerTileflowPmtilesProtocol;
|
|
376
376
|
globalThis.__tileflowAttachAtmosphere = attachTileflowAtmosphere;
|
|
377
|
+
globalThis.__tileflowAttachBranding = attachTileflowBranding;
|
|
377
378
|
globalThis.__tileflowAttachNotices = attachTileflowNotices;
|
|
378
379
|
globalThis.__tileflowAttachNauticalLights = attachTileflowNauticalLights;
|
|
379
380
|
globalThis.__tileflowMaxPitch = tileflowMaxPitch;
|
|
@@ -1043,6 +1044,7 @@ window.__tileflowCaptureLoad = async function(input) {
|
|
|
1043
1044
|
window.__tileflowCaptureStyle = input.style;
|
|
1044
1045
|
window.__tileflowAttachAtmosphere(map);
|
|
1045
1046
|
// Notices such as "Not for navigation" are part of the map, so captured images keep them.
|
|
1047
|
+
window.__tileflowAttachBranding(map);
|
|
1046
1048
|
window.__tileflowAttachNotices(map);
|
|
1047
1049
|
// Capture prefers reduced motion, so Nautical lights stay steady and every image is stable.
|
|
1048
1050
|
window.__tileflowAttachNauticalLights(map);
|
|
@@ -2292,7 +2294,8 @@ function uniqueFontFaces(styles) {
|
|
|
2292
2294
|
import { createHash } from "crypto";
|
|
2293
2295
|
import {
|
|
2294
2296
|
isTileflowWorldReleaseId,
|
|
2295
|
-
tileflowWorldTileJsonUrl
|
|
2297
|
+
tileflowWorldTileJsonUrl,
|
|
2298
|
+
tileflowWorldTilesets
|
|
2296
2299
|
} from "@tileflow/core";
|
|
2297
2300
|
var tileflowWorldCurrentTileJsonUrl = tileflowWorldTileJsonUrl;
|
|
2298
2301
|
var maximumTileJsonBytes = 1024 * 1024;
|
|
@@ -2314,9 +2317,8 @@ var TileflowCaptureWorldSession = class {
|
|
|
2314
2317
|
const data = {
|
|
2315
2318
|
...resolution.identity,
|
|
2316
2319
|
kind: "tileflow-world",
|
|
2317
|
-
schema: requireLiteral(metadata.schema, "
|
|
2320
|
+
schema: requireLiteral(metadata.schema, "tileflow-world", "schema"),
|
|
2318
2321
|
schemaVersion: requirePositiveInteger(metadata.schemaVersion, "schemaVersion"),
|
|
2319
|
-
semantics: validateSemantics(metadata.semantics),
|
|
2320
2322
|
sourceId: requireLiteral(metadata.sourceId, "tileflow", "sourceId")
|
|
2321
2323
|
};
|
|
2322
2324
|
const { tiles: _mutableTiles, url: _mutableUrl, ...sourceWithoutSelector } = source;
|
|
@@ -2398,7 +2400,9 @@ async function resolveTileflowCaptureWorldTileJson(tileJsonUrl, options = {}) {
|
|
|
2398
2400
|
"dataContractSha256",
|
|
2399
2401
|
"descriptorSha256",
|
|
2400
2402
|
"product",
|
|
2401
|
-
"releaseId"
|
|
2403
|
+
"releaseId",
|
|
2404
|
+
"releaseSources",
|
|
2405
|
+
"sources"
|
|
2402
2406
|
]);
|
|
2403
2407
|
if (world.product !== "world-v1") {
|
|
2404
2408
|
throw worldResolutionError("Tileflow World TileJSON has an unsupported product.");
|
|
@@ -2411,6 +2415,25 @@ async function resolveTileflowCaptureWorldTileJson(tileJsonUrl, options = {}) {
|
|
|
2411
2415
|
);
|
|
2412
2416
|
}
|
|
2413
2417
|
const tileTemplate = validateExactTileTemplate(tileJson.tiles[0], releaseId, descriptorSha256);
|
|
2418
|
+
const releaseSources = requireWorldSources(world.releaseSources, "releaseSources");
|
|
2419
|
+
if (!Array.isArray(world.sources) || world.sources.length === 0) {
|
|
2420
|
+
throw worldResolutionError("Tileflow World TileJSON has no selected sources.");
|
|
2421
|
+
}
|
|
2422
|
+
const sources = world.sources.map((value) => {
|
|
2423
|
+
const source = requireRecord(value, "TileJSON tileflow.world.sources entry");
|
|
2424
|
+
requireExactKeys(source, ["archiveSha256", "contractSha256", "dataContractSha256", "id"]);
|
|
2425
|
+
return {
|
|
2426
|
+
archiveSha256: requireHash(source.archiveSha256, "sources.archiveSha256"),
|
|
2427
|
+
contractSha256: requireHash(source.contractSha256, "sources.contractSha256"),
|
|
2428
|
+
dataContractSha256: requireHash(source.dataContractSha256, "sources.dataContractSha256"),
|
|
2429
|
+
id: requireWorldSources([source.id], "sources.id")[0]
|
|
2430
|
+
};
|
|
2431
|
+
});
|
|
2432
|
+
const ids = sources.map(({ id: id2 }) => id2);
|
|
2433
|
+
const canonical = tileflowWorldTilesets.filter((id2) => ids.includes(id2));
|
|
2434
|
+
if (new Set(ids).size !== ids.length || ids.join() !== canonical.join() || ids.some((id2) => !releaseSources.includes(id2))) {
|
|
2435
|
+
throw worldResolutionError("Tileflow World TileJSON sources are not a canonical selection.");
|
|
2436
|
+
}
|
|
2414
2437
|
return {
|
|
2415
2438
|
identity: {
|
|
2416
2439
|
archiveSha256: requireHash(world.archiveSha256, "archiveSha256"),
|
|
@@ -2418,7 +2441,8 @@ async function resolveTileflowCaptureWorldTileJson(tileJsonUrl, options = {}) {
|
|
|
2418
2441
|
dataContractSha256: requireHash(world.dataContractSha256, "dataContractSha256"),
|
|
2419
2442
|
descriptorSha256,
|
|
2420
2443
|
product: "world-v1",
|
|
2421
|
-
releaseId
|
|
2444
|
+
releaseId,
|
|
2445
|
+
sources
|
|
2422
2446
|
},
|
|
2423
2447
|
tileJsonUrl: normalizedUrl,
|
|
2424
2448
|
tileJson: text,
|
|
@@ -2501,13 +2525,11 @@ function validateExactTileTemplate(value, releaseId, descriptorSha256) {
|
|
|
2501
2525
|
}
|
|
2502
2526
|
return value;
|
|
2503
2527
|
}
|
|
2504
|
-
function
|
|
2505
|
-
|
|
2506
|
-
|
|
2507
|
-
if (semantics.parkLayer !== "mixed" && semantics.parkLayer !== "protected-only") {
|
|
2508
|
-
throw worldResolutionError("The compiled style has invalid park semantics.");
|
|
2528
|
+
function requireWorldSources(value, field) {
|
|
2529
|
+
if (!Array.isArray(value) || value.length === 0 || value.some((id2) => !tileflowWorldTilesets.includes(id2)) || new Set(value).size !== value.length) {
|
|
2530
|
+
throw worldResolutionError(`Tileflow World TileJSON has invalid ${field}.`);
|
|
2509
2531
|
}
|
|
2510
|
-
return
|
|
2532
|
+
return value;
|
|
2511
2533
|
}
|
|
2512
2534
|
function requireRecord(value, field) {
|
|
2513
2535
|
if (!value || typeof value !== "object" || Array.isArray(value)) {
|
|
@@ -16,7 +16,7 @@ declare const tileflowCaptureRuntime: Readonly<{
|
|
|
16
16
|
}>;
|
|
17
17
|
declare function createTileflowCaptureRendererIdentity(browser?: Pick<Browser, 'version'>): TileflowCaptureRendererIdentity;
|
|
18
18
|
|
|
19
|
-
declare const tileflowCaptureReceiptSchemaVersion:
|
|
19
|
+
declare const tileflowCaptureReceiptSchemaVersion: 5;
|
|
20
20
|
declare const tileflowCaptureReceiptLimits: Readonly<{
|
|
21
21
|
maximumBytes: number;
|
|
22
22
|
}>;
|
|
@@ -24,13 +24,6 @@ type TileflowCaptureDataBindings = {
|
|
|
24
24
|
fields: Record<string, string>;
|
|
25
25
|
layers: Record<string, string>;
|
|
26
26
|
};
|
|
27
|
-
type TileflowCaptureDataCapabilities = {
|
|
28
|
-
businessCorridor: boolean;
|
|
29
|
-
bathymetry: boolean;
|
|
30
|
-
canopy: boolean;
|
|
31
|
-
globalLandcover: boolean;
|
|
32
|
-
tree: boolean;
|
|
33
|
-
};
|
|
34
27
|
type TileflowCaptureDataSource = {
|
|
35
28
|
kind: 'loopback' | 'opaque' | 'remote' | 'root-relative';
|
|
36
29
|
/** SHA-256 of a credential-free, query-free endpoint identity. */
|
|
@@ -39,6 +32,13 @@ type TileflowCaptureDataSource = {
|
|
|
39
32
|
type TileflowCaptureDataSemantics = {
|
|
40
33
|
parkLayer: 'mixed' | 'protected-only';
|
|
41
34
|
};
|
|
35
|
+
/** One World tileset a capture read, with its archive and data contract digests. */
|
|
36
|
+
type TileflowCaptureWorldSource = {
|
|
37
|
+
archiveSha256: string;
|
|
38
|
+
contractSha256: string;
|
|
39
|
+
dataContractSha256: string;
|
|
40
|
+
id: 'world' | 'world-detail';
|
|
41
|
+
};
|
|
42
42
|
/** Exact Tileflow World release identity. */
|
|
43
43
|
type TileflowCaptureWorldIdentity = {
|
|
44
44
|
archiveSha256: string;
|
|
@@ -48,33 +48,37 @@ type TileflowCaptureWorldIdentity = {
|
|
|
48
48
|
kind: 'tileflow-world';
|
|
49
49
|
product: 'world-v1';
|
|
50
50
|
releaseId: string;
|
|
51
|
-
schema: '
|
|
51
|
+
schema: 'tileflow-world';
|
|
52
52
|
schemaVersion: number;
|
|
53
|
-
semantics: TileflowCaptureDataSemantics;
|
|
54
53
|
sourceId: 'tileflow';
|
|
54
|
+
/** The release's tilesets the map read, `world` and, when it draws them, `world-detail`. */
|
|
55
|
+
sources: TileflowCaptureWorldSource[];
|
|
55
56
|
};
|
|
56
57
|
/** External vector-tile identity. Its endpoint is recorded only as a safe fingerprint. */
|
|
57
58
|
type TileflowCaptureVectorIdentity = {
|
|
58
|
-
bindings: TileflowCaptureDataBindings;
|
|
59
|
-
capabilities: TileflowCaptureDataCapabilities;
|
|
60
59
|
kind: 'vector-tiles';
|
|
61
60
|
/** Explicit revision supplied by the data configuration. */
|
|
62
61
|
revision?: string;
|
|
63
|
-
schema: 'openmaptiles';
|
|
64
62
|
schemaVersion: number;
|
|
65
|
-
semantics: TileflowCaptureDataSemantics;
|
|
66
63
|
source: TileflowCaptureDataSource;
|
|
67
64
|
sourceId: 'tileflow';
|
|
68
|
-
}
|
|
65
|
+
} & ({
|
|
66
|
+
schema: 'tileflow-world';
|
|
67
|
+
} | {
|
|
68
|
+
/** The source names of OpenMapTiles tiles' layers and fields. */
|
|
69
|
+
bindings: TileflowCaptureDataBindings;
|
|
70
|
+
schema: 'openmaptiles';
|
|
71
|
+
semantics: TileflowCaptureDataSemantics;
|
|
72
|
+
});
|
|
69
73
|
/** Durable data identity owned by capture rather than the live core authoring API. */
|
|
70
74
|
type TileflowCaptureDataIdentity = TileflowCaptureVectorIdentity | TileflowCaptureWorldIdentity;
|
|
71
75
|
/**
|
|
72
76
|
* Data identity accepted by `createTileflowCaptureReceipt`. A vector `url` is transient input:
|
|
73
77
|
* it is converted to `source` and never returned or serialized.
|
|
74
78
|
*/
|
|
75
|
-
type TileflowCaptureDataInput = (Omit<
|
|
79
|
+
type TileflowCaptureDataInput = (TileflowCaptureVectorIdentity extends infer TIdentity ? TIdentity extends unknown ? Omit<TIdentity, 'source'> & {
|
|
76
80
|
url: string;
|
|
77
|
-
}) | TileflowCaptureWorldIdentity;
|
|
81
|
+
} : never : never) | TileflowCaptureWorldIdentity;
|
|
78
82
|
type TileflowCaptureVerification = {
|
|
79
83
|
data: 'expected-unverified' | 'rendered';
|
|
80
84
|
style: 'expected-unverified' | 'rendered';
|
|
@@ -219,4 +223,4 @@ declare function serializeTileflowShotReceipt(receipt: TileflowShotReceiptV1): s
|
|
|
219
223
|
declare function parseTileflowShotReceipt(source: string | Uint8Array): TileflowShotReceiptV1;
|
|
220
224
|
declare function validateTileflowShotReceipt(value: unknown): TileflowShotReceiptV1;
|
|
221
225
|
|
|
222
|
-
export { type CreateTileflowCaptureReceiptInput as C, type TileflowCaptureRendererIdentity as T, type TileflowShotReceiptV1 as a, type TileflowCaptureReceipt as b, type TileflowCaptureDataInput as c, type TileflowCaptureWorldIdentity as d, type CreateTileflowShotReceiptInput as e, type TileflowCaptureDataBindings as f, type
|
|
226
|
+
export { type CreateTileflowCaptureReceiptInput as C, type TileflowCaptureRendererIdentity as T, type TileflowShotReceiptV1 as a, type TileflowCaptureReceipt as b, type TileflowCaptureDataInput as c, type TileflowCaptureWorldIdentity as d, type CreateTileflowShotReceiptInput as e, type TileflowCaptureDataBindings as f, type TileflowCaptureDataIdentity as g, type TileflowCaptureDataSemantics as h, type TileflowCaptureDataSource as i, type TileflowCaptureVectorIdentity as j, type TileflowCaptureVerification as k, type TileflowCaptureWorldSource as l, createTileflowCaptureReceipt as m, createTileflowCaptureRendererIdentity as n, createTileflowShotReceipt as o, parseTileflowCaptureReceipt as p, parseTileflowShotReceipt as q, serializeTileflowShotReceipt as r, serializeTileflowCaptureReceipt as s, tileflowCaptureReceiptLimits as t, tileflowCaptureReceiptSchemaVersion as u, tileflowCaptureRuntime as v, tileflowShotReceiptLimits as w, tileflowShotReceiptSchemaVersion as x, validateTileflowCaptureReceipt as y, validateTileflowShotReceipt as z };
|
package/dist/receipt.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { C as CreateTileflowCaptureReceiptInput, e as CreateTileflowShotReceiptInput, f as TileflowCaptureDataBindings, g as
|
|
1
|
+
export { C as CreateTileflowCaptureReceiptInput, e as CreateTileflowShotReceiptInput, f as TileflowCaptureDataBindings, g as TileflowCaptureDataIdentity, c as TileflowCaptureDataInput, h as TileflowCaptureDataSemantics, i as TileflowCaptureDataSource, b as TileflowCaptureReceipt, j as TileflowCaptureVectorIdentity, k as TileflowCaptureVerification, d as TileflowCaptureWorldIdentity, l as TileflowCaptureWorldSource, a as TileflowShotReceiptV1, m as createTileflowCaptureReceipt, o as createTileflowShotReceipt, p as parseTileflowCaptureReceipt, q as parseTileflowShotReceipt, s as serializeTileflowCaptureReceipt, r as serializeTileflowShotReceipt, t as tileflowCaptureReceiptLimits, u as tileflowCaptureReceiptSchemaVersion, w as tileflowShotReceiptLimits, x as tileflowShotReceiptSchemaVersion, y as validateTileflowCaptureReceipt, z as validateTileflowShotReceipt } from './receipt-CgJMeTdQ.js';
|
|
2
2
|
import 'playwright';
|
package/dist/receipt.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tileflow/capture",
|
|
3
|
-
"version": "0.1.0-alpha.
|
|
3
|
+
"version": "0.1.0-alpha.39",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"description": "Deterministic local visual capture and comparison for Tileflow maps.",
|
|
6
6
|
"engines": {
|
|
@@ -47,8 +47,8 @@
|
|
|
47
47
|
"access": "public"
|
|
48
48
|
},
|
|
49
49
|
"dependencies": {
|
|
50
|
-
"@tileflow/core": ">=0.1.0-alpha.
|
|
51
|
-
"@tileflow/dev": ">=0.1.0-alpha.
|
|
50
|
+
"@tileflow/core": ">=0.1.0-alpha.49 <0.1.0-beta.0",
|
|
51
|
+
"@tileflow/dev": ">=0.1.0-alpha.44 <0.1.0-beta.0",
|
|
52
52
|
"maplibre-gl": "6.16.0",
|
|
53
53
|
"pixelmatch": "7.2.0",
|
|
54
54
|
"playwright": "1.62.1",
|
|
@@ -56,22 +56,24 @@
|
|
|
56
56
|
},
|
|
57
57
|
"devDependencies": {
|
|
58
58
|
"@sveltejs/vite-plugin-svelte": "^7.3.0",
|
|
59
|
-
"@types/node": "^26.6.
|
|
59
|
+
"@types/node": "^26.6.6",
|
|
60
60
|
"@types/pngjs": "6.0.5",
|
|
61
|
-
"@vitejs/plugin-vue": "^6.0.
|
|
61
|
+
"@vitejs/plugin-vue": "^6.0.10",
|
|
62
62
|
"maplibre-gl-min": "npm:maplibre-gl@6.4.1",
|
|
63
63
|
"next": "16.4.2",
|
|
64
64
|
"react": "^19.3.0",
|
|
65
65
|
"react-dom": "^19.3.0",
|
|
66
66
|
"svelte": "^5.57.2",
|
|
67
|
+
"terra-draw": "^1.39.0",
|
|
68
|
+
"terra-draw-maplibre-gl-adapter": "^1.5.0",
|
|
67
69
|
"vite": "^8.3.4",
|
|
68
70
|
"vue": "^3.5.43",
|
|
69
71
|
"webpack": "5.108.3",
|
|
70
|
-
"@tileflow/maps": "0.1.0-alpha.
|
|
72
|
+
"@tileflow/maps": "0.1.0-alpha.21",
|
|
73
|
+
"@tileflow/react": "0.1.0-alpha.39",
|
|
71
74
|
"@tileflow/next": "0.1.0-alpha.25",
|
|
72
|
-
"@tileflow/
|
|
73
|
-
"@tileflow/
|
|
74
|
-
"@tileflow/vue": "0.1.0-alpha.34",
|
|
75
|
+
"@tileflow/svelte": "0.1.0-alpha.37",
|
|
76
|
+
"@tileflow/vue": "0.1.0-alpha.37",
|
|
75
77
|
"@tileflow/vite": "0.1.0-alpha.26",
|
|
76
78
|
"@tileflow/webpack": "0.1.0-alpha.25"
|
|
77
79
|
},
|