@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 = 4;
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
- "semantics",
462
- "sourceId"
461
+ "sourceId",
462
+ "sources"
463
463
  ]);
464
- if (data.product !== "world-v1" || data.schema !== "openmaptiles" || data.sourceId !== "tileflow") {
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: "openmaptiles",
475
+ schema: "tileflow-world",
476
476
  schemaVersion: requirePositiveInteger(data.schemaVersion, "data.schemaVersion"),
477
- semantics: validateDataSemantics(data.semantics, "data.semantics"),
478
- sourceId: "tileflow"
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 !== "openmaptiles" || data.sourceId !== "tileflow") {
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
- return {
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-CfZkzyXd.js';
3
- export { C as CreateTileflowCaptureReceiptInput, e as CreateTileflowShotReceiptInput, f as TileflowCaptureDataBindings, g as TileflowCaptureDataCapabilities, h as TileflowCaptureDataIdentity, i as TileflowCaptureDataSemantics, j as TileflowCaptureDataSource, k as TileflowCaptureVectorIdentity, l as TileflowCaptureVerification, 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-CfZkzyXd.js';
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' | 'semantics' | 'sourceId'>;
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-BI5PWIH4.js";
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, "openmaptiles", "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 validateSemantics(value) {
2505
- const semantics = requireRecord(value, "data semantics");
2506
- requireExactKeys(semantics, ["parkLayer"]);
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 { parkLayer: semantics.parkLayer };
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: 4;
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: 'openmaptiles';
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<TileflowCaptureVectorIdentity, 'source'> & {
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 TileflowCaptureDataCapabilities as g, type TileflowCaptureDataIdentity as h, type TileflowCaptureDataSemantics as i, type TileflowCaptureDataSource as j, type TileflowCaptureVectorIdentity as k, type TileflowCaptureVerification 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 };
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 TileflowCaptureDataCapabilities, h as TileflowCaptureDataIdentity, c as TileflowCaptureDataInput, i as TileflowCaptureDataSemantics, j as TileflowCaptureDataSource, b as TileflowCaptureReceipt, k as TileflowCaptureVectorIdentity, l as TileflowCaptureVerification, d as TileflowCaptureWorldIdentity, 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-CfZkzyXd.js';
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
@@ -11,7 +11,7 @@ import {
11
11
  tileflowShotReceiptSchemaVersion,
12
12
  validateTileflowCaptureReceipt,
13
13
  validateTileflowShotReceipt
14
- } from "./chunk-BI5PWIH4.js";
14
+ } from "./chunk-EM6T7YER.js";
15
15
  export {
16
16
  createTileflowCaptureReceipt,
17
17
  createTileflowShotReceipt,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tileflow/capture",
3
- "version": "0.1.0-alpha.37",
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.44 <0.1.0-beta.0",
51
- "@tileflow/dev": ">=0.1.0-alpha.40 <0.1.0-beta.0",
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.5",
59
+ "@types/node": "^26.6.6",
60
60
  "@types/pngjs": "6.0.5",
61
- "@vitejs/plugin-vue": "^6.0.8",
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.17",
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/react": "0.1.0-alpha.36",
73
- "@tileflow/svelte": "0.1.0-alpha.34",
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
  },