@tileflow/capture 0.1.0-alpha.36 → 0.1.0-alpha.38

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.
@@ -18,7 +18,7 @@ the platform-specific headless shell into its versioned per-user browser cache;
18
18
  distribution carries Chromium's license and credits. Chromium source and license information are
19
19
  available at https://www.chromium.org/chromium-projects/.
20
20
 
21
- ## MapLibre GL JS 6.13.0
21
+ ## MapLibre GL JS 6.16.0
22
22
 
23
23
  Copyright (c) 2023 MapLibre contributors. Licensed under BSD-3-Clause. The installed `maplibre-gl`
24
24
  package includes `LICENSE.txt`, including notices for code derived from Mapbox GL JS and other
@@ -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";
@@ -2292,7 +2292,8 @@ function uniqueFontFaces(styles) {
2292
2292
  import { createHash } from "crypto";
2293
2293
  import {
2294
2294
  isTileflowWorldReleaseId,
2295
- tileflowWorldTileJsonUrl
2295
+ tileflowWorldTileJsonUrl,
2296
+ tileflowWorldTilesets
2296
2297
  } from "@tileflow/core";
2297
2298
  var tileflowWorldCurrentTileJsonUrl = tileflowWorldTileJsonUrl;
2298
2299
  var maximumTileJsonBytes = 1024 * 1024;
@@ -2314,9 +2315,8 @@ var TileflowCaptureWorldSession = class {
2314
2315
  const data = {
2315
2316
  ...resolution.identity,
2316
2317
  kind: "tileflow-world",
2317
- schema: requireLiteral(metadata.schema, "openmaptiles", "schema"),
2318
+ schema: requireLiteral(metadata.schema, "tileflow-world", "schema"),
2318
2319
  schemaVersion: requirePositiveInteger(metadata.schemaVersion, "schemaVersion"),
2319
- semantics: validateSemantics(metadata.semantics),
2320
2320
  sourceId: requireLiteral(metadata.sourceId, "tileflow", "sourceId")
2321
2321
  };
2322
2322
  const { tiles: _mutableTiles, url: _mutableUrl, ...sourceWithoutSelector } = source;
@@ -2398,7 +2398,9 @@ async function resolveTileflowCaptureWorldTileJson(tileJsonUrl, options = {}) {
2398
2398
  "dataContractSha256",
2399
2399
  "descriptorSha256",
2400
2400
  "product",
2401
- "releaseId"
2401
+ "releaseId",
2402
+ "releaseSources",
2403
+ "sources"
2402
2404
  ]);
2403
2405
  if (world.product !== "world-v1") {
2404
2406
  throw worldResolutionError("Tileflow World TileJSON has an unsupported product.");
@@ -2411,6 +2413,25 @@ async function resolveTileflowCaptureWorldTileJson(tileJsonUrl, options = {}) {
2411
2413
  );
2412
2414
  }
2413
2415
  const tileTemplate = validateExactTileTemplate(tileJson.tiles[0], releaseId, descriptorSha256);
2416
+ const releaseSources = requireWorldSources(world.releaseSources, "releaseSources");
2417
+ if (!Array.isArray(world.sources) || world.sources.length === 0) {
2418
+ throw worldResolutionError("Tileflow World TileJSON has no selected sources.");
2419
+ }
2420
+ const sources = world.sources.map((value) => {
2421
+ const source = requireRecord(value, "TileJSON tileflow.world.sources entry");
2422
+ requireExactKeys(source, ["archiveSha256", "contractSha256", "dataContractSha256", "id"]);
2423
+ return {
2424
+ archiveSha256: requireHash(source.archiveSha256, "sources.archiveSha256"),
2425
+ contractSha256: requireHash(source.contractSha256, "sources.contractSha256"),
2426
+ dataContractSha256: requireHash(source.dataContractSha256, "sources.dataContractSha256"),
2427
+ id: requireWorldSources([source.id], "sources.id")[0]
2428
+ };
2429
+ });
2430
+ const ids = sources.map(({ id: id2 }) => id2);
2431
+ const canonical = tileflowWorldTilesets.filter((id2) => ids.includes(id2));
2432
+ if (new Set(ids).size !== ids.length || ids.join() !== canonical.join() || ids.some((id2) => !releaseSources.includes(id2))) {
2433
+ throw worldResolutionError("Tileflow World TileJSON sources are not a canonical selection.");
2434
+ }
2414
2435
  return {
2415
2436
  identity: {
2416
2437
  archiveSha256: requireHash(world.archiveSha256, "archiveSha256"),
@@ -2418,7 +2439,8 @@ async function resolveTileflowCaptureWorldTileJson(tileJsonUrl, options = {}) {
2418
2439
  dataContractSha256: requireHash(world.dataContractSha256, "dataContractSha256"),
2419
2440
  descriptorSha256,
2420
2441
  product: "world-v1",
2421
- releaseId
2442
+ releaseId,
2443
+ sources
2422
2444
  },
2423
2445
  tileJsonUrl: normalizedUrl,
2424
2446
  tileJson: text,
@@ -2501,13 +2523,11 @@ function validateExactTileTemplate(value, releaseId, descriptorSha256) {
2501
2523
  }
2502
2524
  return value;
2503
2525
  }
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.");
2526
+ function requireWorldSources(value, field) {
2527
+ if (!Array.isArray(value) || value.length === 0 || value.some((id2) => !tileflowWorldTilesets.includes(id2)) || new Set(value).size !== value.length) {
2528
+ throw worldResolutionError(`Tileflow World TileJSON has invalid ${field}.`);
2509
2529
  }
2510
- return { parkLayer: semantics.parkLayer };
2530
+ return value;
2511
2531
  }
2512
2532
  function requireRecord(value, field) {
2513
2533
  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.36",
3
+ "version": "0.1.0-alpha.38",
4
4
  "license": "Apache-2.0",
5
5
  "description": "Deterministic local visual capture and comparison for Tileflow maps.",
6
6
  "engines": {
@@ -47,9 +47,9 @@
47
47
  "access": "public"
48
48
  },
49
49
  "dependencies": {
50
- "@tileflow/core": ">=0.1.0-alpha.43 <0.1.0-beta.0",
51
- "@tileflow/dev": ">=0.1.0-alpha.39 <0.1.0-beta.0",
52
- "maplibre-gl": "6.13.0",
50
+ "@tileflow/core": ">=0.1.0-alpha.47 <0.1.0-beta.0",
51
+ "@tileflow/dev": ">=0.1.0-alpha.42 <0.1.0-beta.0",
52
+ "maplibre-gl": "6.16.0",
53
53
  "pixelmatch": "7.2.0",
54
54
  "playwright": "1.62.1",
55
55
  "pngjs": "7.0.0"
@@ -67,12 +67,12 @@
67
67
  "vite": "^8.3.4",
68
68
  "vue": "^3.5.43",
69
69
  "webpack": "5.108.3",
70
- "@tileflow/maps": "0.1.0-alpha.17",
70
+ "@tileflow/maps": "0.1.0-alpha.19",
71
71
  "@tileflow/next": "0.1.0-alpha.25",
72
- "@tileflow/react": "0.1.0-alpha.36",
73
- "@tileflow/svelte": "0.1.0-alpha.34",
72
+ "@tileflow/react": "0.1.0-alpha.37",
73
+ "@tileflow/svelte": "0.1.0-alpha.35",
74
74
  "@tileflow/vite": "0.1.0-alpha.26",
75
- "@tileflow/vue": "0.1.0-alpha.34",
75
+ "@tileflow/vue": "0.1.0-alpha.35",
76
76
  "@tileflow/webpack": "0.1.0-alpha.25"
77
77
  },
78
78
  "scripts": {