@tileflow/core 0.1.0-alpha.26 → 0.1.0-alpha.27

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/README.md CHANGED
@@ -90,13 +90,14 @@ Shared-set content identifies the effective published artifact. Git owns origina
90
90
  source-only SVG edits producing the same artifact are not shared content changes. No original-source
91
91
  hash, source format, or filesystem path is added to a shared package. Local/package originals retain
92
92
  their existing source identity. Shared winners use explicit `rendered-icon` identity, while an
93
- ordered `tileflow-icon-composition-v1` receipt records consumed revisions separately, including
93
+ ordered versioned icon-composition receipt records consumed revisions separately, including
94
94
  fully shadowed sets and dependency changes that preserve rendered pixels.
95
95
 
96
96
  Map revision hashing preserves the existing v1 result for maps without shared sets. Maps with sets
97
97
  require a complete receipt and use the domain-separated v2 revision contract. Build-manifest map
98
98
  entries identify that contract with `mapRevisionSchemaVersion: 2`; omission means legacy v1. The
99
- generated icon package remains `tileflow-icon-package-v1` and the asset-set hash is unchanged.
99
+ Metadata-free RGBA icon packages retain `tileflow-icon-package-v1` identity. SDF appearance or text-fitting metadata uses
100
+ `tileflow-icon-package-v2` and v2 composition receipts; defaults and layout participate in identity.
100
101
 
101
102
  These are portable contracts. `@tileflow/dev` composes declared contributors on its normal
102
103
  preparation path, and the `tileflow` CLI owns catalog management and exact lock maintenance.
@@ -135,7 +136,7 @@ export default defineMap({
135
136
  });
136
137
  ```
137
138
 
138
- `system` is a browser selection policy, not a stored theme. Builds, captures, static scenes, and
139
+ `system` is a runtime selection policy, not a stored theme. Builds, captures, static scenes, and
139
140
  receipts must use a concrete theme such as `light` or `dark`.
140
141
 
141
142
  The semantic domains are `land`, `water`, `nautical`, `roads`, `buildings`, `boundaries`, `labels`,
@@ -174,6 +175,36 @@ resolved compiler input. `diffTileflowMaps(before, after)` returns deterministic
174
175
  at JSON Pointer paths. Physical inspection IDs and indexes are diagnostic observations, not stable
175
176
  application targets.
176
177
 
178
+ ## Select a prepared map
179
+
180
+ React, Vue and Svelte accept a required `source` object, `{map, manifestUrl?}`. `map` is the portable
181
+ name in the manifest, not a Hosted `map_...` identifier. An omitted web `manifestUrl` means exactly
182
+ `/tileflow/manifest.json`; custom paths and external hosts must be explicit. The native Core and
183
+ React Native type contracts use `{map, manifestUrl}` with an explicit absolute URL. They do not
184
+ infer an application origin, Metro host or manifest location.
185
+
186
+ <!-- docs:check -->
187
+
188
+ ```ts
189
+ import type {TileflowNativeSource} from '@tileflow/core/native';
190
+ import type {TileflowRuntimeSource} from '@tileflow/core/runtime';
191
+
192
+ const webSource = {map: 'madrid'} satisfies TileflowRuntimeSource;
193
+ const nativeSource = {
194
+ map: 'madrid',
195
+ manifestUrl: 'https://maps.example.com/tileflow/native/manifest.json',
196
+ } satisfies TileflowNativeSource;
197
+ ```
198
+
199
+ These objects select existing prepared maps; they do not compile or render one. Every Tileflow
200
+ framework Map is manifest-backed, without a renderer discriminator or direct-style mode. The
201
+ obsolete source fields `kind` and `style` are rejected. Completely unmanaged maps use upstream
202
+ MapLibre directly. Omitted themes use the manifest default, concrete themes select exact names,
203
+ and `system` requires the manifest's explicit light/dark mapping and a supplied runtime color scheme.
204
+ See the [native source guide](https://github.com/tileflow/tileflow-sdk/blob/main/packages/core/docs/native-resource-urls.md)
205
+ for source coordination, bounded acquisition and safe diagnostics. The pre-release React Native
206
+ package uses this contract for its mounted Map; it is not yet published.
207
+
177
208
  ## Data, terrain, and browser resources
178
209
 
179
210
  Tileflow World is the hosted primary-data path. `vectorTiles()` with `openMapTiles()` supports
@@ -218,3 +249,12 @@ revision; prefer the installed copy when working with an older release.
218
249
  - [Public API and browser subpath](https://github.com/tileflow/tileflow-sdk/blob/main/packages/core/docs/public-api-and-browser-subpath.md)
219
250
  - [Hosted session authorization](https://github.com/tileflow/tileflow-sdk/blob/main/packages/core/docs/hosted-session-authorization.md)
220
251
  - [Native resource URLs](https://github.com/tileflow/tileflow-sdk/blob/main/packages/core/docs/native-resource-urls.md)
252
+ - [Native artifact profile](https://github.com/tileflow/tileflow-sdk/blob/main/packages/core/docs/native-artifact-profile.md)
253
+
254
+ ## Native icon capabilities
255
+
256
+ Prepared icon metadata identifies SDF assets and their default fill and halo. Core rejects any
257
+ symbol layer that can select both SDF and RGBA, including fallbacks and effective local overrides,
258
+ with `TF_ICON_REPRESENTATION_MIXED`. It preserves layers, collisions and interaction IDs. Omitted
259
+ SDF paint follows the resolved image selection; supplied map paint stays independent from asset
260
+ defaults. See [Author recolorable and adaptable icons](https://github.com/tileflow/tileflow-sdk/blob/main/packages/dev/docs/native-icons.md).
@@ -241,3 +241,87 @@ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR
241
241
  WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
242
242
  NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
243
243
  OF THIS SOFTWARE.
244
+
245
+ ---
246
+
247
+ ## whatwg-url 15.1.0 and tr46 6.0.0
248
+
249
+ The native entry embeds the low-level `whatwg-url` parser and `tr46` IDNA processing. During the
250
+ native build only, the parser's relative encoding module is replaced by Tileflow's private UTF-8
251
+ codec. No upstream package is patched on disk and no global codec is installed. Both components
252
+ are MIT-licensed:
253
+
254
+ The MIT License (MIT)
255
+
256
+ Copyright (c) Sebastian Mayr
257
+
258
+ Permission is hereby granted, free of charge, to any person obtaining a copy
259
+ of this software and associated documentation files (the "Software"), to deal
260
+ in the Software without restriction, including without limitation the rights
261
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
262
+ copies of the Software, and to permit persons to whom the Software is
263
+ furnished to do so, subject to the following conditions:
264
+
265
+ The above copyright notice and this permission notice shall be included in
266
+ all copies or substantial portions of the Software.
267
+
268
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
269
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
270
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
271
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
272
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
273
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
274
+ THE SOFTWARE.
275
+
276
+ ---
277
+
278
+ ## Punycode.js 2.3.1
279
+
280
+ Copyright Mathias Bynens <https://mathiasbynens.be/>
281
+
282
+ Permission is hereby granted, free of charge, to any person obtaining
283
+ a copy of this software and associated documentation files (the
284
+ "Software"), to deal in the Software without restriction, including
285
+ without limitation the rights to use, copy, modify, merge, publish,
286
+ distribute, sublicense, and/or sell copies of the Software, and to
287
+ permit persons to whom the Software is furnished to do so, subject to
288
+ the following conditions:
289
+
290
+ The above copyright notice and this permission notice shall be
291
+ included in all copies or substantial portions of the Software.
292
+
293
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
294
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
295
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
296
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
297
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
298
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
299
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
300
+
301
+ ---
302
+
303
+ ## Zod 4.4.3
304
+
305
+ The native entry embeds the canonical manifest schema and the required Zod validation code.
306
+
307
+ MIT License
308
+
309
+ Copyright (c) 2025 Colin McDonnell
310
+
311
+ Permission is hereby granted, free of charge, to any person obtaining a copy
312
+ of this software and associated documentation files (the "Software"), to deal
313
+ in the Software without restriction, including without limitation the rights
314
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
315
+ copies of the Software, and to permit persons to whom the Software is
316
+ furnished to do so, subject to the following conditions:
317
+
318
+ The above copyright notice and this permission notice shall be included in all
319
+ copies or substantial portions of the Software.
320
+
321
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
322
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
323
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
324
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
325
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
326
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
327
+ SOFTWARE.
package/dist/build.d.ts CHANGED
@@ -1,8 +1,8 @@
1
- import { T as TileflowCaptureScene } from './capture-scene-BK_0J2oR.js';
2
- import { T as TileflowRenderedIconIdentity, a as TileflowIconCompositionV1, R as ResolvedTileflowMap, b as TileflowDataRequirementsV1, c as TileflowSourceRequirementsV1, d as TileflowMap, e as TileflowStyleOptions, f as TileflowInspectedStyle, g as TileflowPreparedMapAssets } from './icon-composition-BssSKOKF.js';
3
- export { h as TileflowDataCompatibilityIssue, i as TileflowDataFieldRequirement, j as TileflowDataFieldType, k as TileflowDataLayerRequirement, l as TileflowObservedDataContractV1, m as TileflowStyleInspection, n as TileflowStyleInspectionContribution, o as TileflowStyleInspectionLayer, p as TileflowStyleInspectionRenderOperation, q as collectMapLineage, r as inferTileflowDataRequirements, s as inferTileflowSourceRequirements, t as tileflowStyleInspectionSchemaVersion, v as validateTileflowDataCompatibility } from './icon-composition-BssSKOKF.js';
4
- import { M as MapLibreStyle, T as TileflowRuntimeManifest } from './manifest-B5GKVMFE.js';
5
- import 'zod';
1
+ import { T as TileflowCaptureScene } from './capture-scene-D6soWztE.js';
2
+ import { T as TileflowRenderedIconIdentity, a as TileflowIconCompositionV1, R as ResolvedTileflowMap, b as TileflowDataRequirementsV1, c as TileflowSourceRequirementsV1, d as TileflowMap, e as TileflowStyleOptions, f as TileflowInspectedStyle, g as TileflowPreparedMapAssets } from './icon-composition-C2bVldOJ.js';
3
+ export { h as TileflowDataCompatibilityIssue, i as TileflowDataFieldRequirement, j as TileflowDataFieldType, k as TileflowDataLayerRequirement, l as TileflowObservedDataContractV1, m as TileflowStyleInspection, n as TileflowStyleInspectionContribution, o as TileflowStyleInspectionLayer, p as TileflowStyleInspectionRenderOperation, q as collectMapLineage, r as inferTileflowDataRequirements, s as inferTileflowSourceRequirements, t as tileflowStyleInspectionSchemaVersion, v as validateTileflowDataCompatibility } from './icon-composition-C2bVldOJ.js';
4
+ import { M as MapLibreStyle, T as TileflowRuntimeManifest } from './manifest-types-BdGjIYy-.js';
5
+ import { z } from 'zod';
6
6
 
7
7
  declare const tileflowMapRevisionSchemaVersion: 1;
8
8
  declare const tileflowSharedIconMapRevisionSchemaVersion: 2;
@@ -132,6 +132,417 @@ declare function hashTileflowAssetSetIdentities(input: readonly TileflowBuildAss
132
132
  */
133
133
  declare function createStyleWithInspection(config: TileflowMap, options?: TileflowStyleOptions): TileflowInspectedStyle;
134
134
 
135
+ /** These are transport/validation bounds, not renderer or commercial quotas. */
136
+ declare const tileflowRendererDeploymentLimits: Readonly<{
137
+ maximumBytes: number;
138
+ maximumNativeFamilyBytes: number;
139
+ maximumThemes: 64;
140
+ }>;
141
+ /** Explicit v2 only. Existing v1 envelopes and decoders are not extended by this schema. */
142
+ declare const tileflowRendererDeploymentArtifactSchema: z.ZodObject<{
143
+ kind: z.ZodLiteral<"tileflow-map-deployment">;
144
+ schemaVersion: z.ZodLiteral<2>;
145
+ mapId: z.ZodString;
146
+ teamSources: z.ZodRecord<z.ZodString, z.ZodObject<{
147
+ tileset: z.ZodString;
148
+ type: z.ZodEnum<{
149
+ vector: "vector";
150
+ raster: "raster";
151
+ }>;
152
+ }, z.core.$strict>>;
153
+ view: z.ZodOptional<z.ZodObject<{
154
+ center: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
155
+ zoom: z.ZodOptional<z.ZodNumber>;
156
+ bearing: z.ZodOptional<z.ZodNumber>;
157
+ pitch: z.ZodOptional<z.ZodNumber>;
158
+ }, z.core.$strict>>;
159
+ renderers: z.ZodObject<{
160
+ web: z.ZodObject<{
161
+ buildManifest: z.ZodObject<{
162
+ schemaVersion: z.ZodLiteral<1>;
163
+ maps: z.ZodRecord<z.ZodString, z.ZodObject<{
164
+ assetSetSha256: z.ZodString;
165
+ defaultTheme: z.ZodString;
166
+ lineage: z.ZodArray<z.ZodObject<{
167
+ id: z.ZodString;
168
+ mapVersion: z.ZodNumber;
169
+ }, z.core.$strict>>;
170
+ mapRevisionSha256: z.ZodString;
171
+ mapRevisionSchemaVersion: z.ZodOptional<z.ZodLiteral<2>>;
172
+ mapVersion: z.ZodNumber;
173
+ semanticCompiler: z.ZodObject<{
174
+ name: z.ZodLiteral<"tileflow-semantic">;
175
+ version: z.ZodLiteral<1>;
176
+ }, z.core.$strict>;
177
+ sourceAssets: z.ZodObject<{
178
+ fonts: z.ZodArray<z.ZodObject<{
179
+ family: z.ZodString;
180
+ sha256: z.ZodString;
181
+ style: z.ZodEnum<{
182
+ italic: "italic";
183
+ normal: "normal";
184
+ oblique: "oblique";
185
+ }>;
186
+ weight: z.ZodEnum<{
187
+ 100: "100";
188
+ 200: "200";
189
+ 300: "300";
190
+ 400: "400";
191
+ 500: "500";
192
+ 600: "600";
193
+ 700: "700";
194
+ 800: "800";
195
+ 900: "900";
196
+ }>;
197
+ }, z.core.$strict>>;
198
+ icons: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
199
+ format: z.ZodEnum<{
200
+ jpeg: "jpeg";
201
+ png: "png";
202
+ svg: "svg";
203
+ webp: "webp";
204
+ }>;
205
+ id: z.ZodString;
206
+ kind: z.ZodEnum<{
207
+ pattern: "pattern";
208
+ icon: "icon";
209
+ }>;
210
+ sha256: z.ZodString;
211
+ }, z.core.$strict>, z.ZodObject<{
212
+ kind: z.ZodLiteral<"rendered-icon">;
213
+ id: z.ZodString;
214
+ appearance: z.ZodOptional<z.ZodObject<{
215
+ representation: z.ZodLiteral<"sdf">;
216
+ defaults: z.ZodObject<{
217
+ color: z.ZodString;
218
+ haloColor: z.ZodString;
219
+ haloWidth: z.ZodNumber;
220
+ haloBlur: z.ZodNumber;
221
+ }, z.core.$strict>;
222
+ }, z.core.$strict>>;
223
+ layout: z.ZodOptional<z.ZodObject<{
224
+ stretchX: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>>;
225
+ stretchY: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>>;
226
+ content: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
227
+ }, z.core.$strict>>;
228
+ width: z.ZodNumber;
229
+ height: z.ZodNumber;
230
+ pixelSha256: z.ZodObject<{
231
+ oneX: z.ZodString;
232
+ twoX: z.ZodString;
233
+ }, z.core.$strict>;
234
+ }, z.core.$strict>]>>;
235
+ iconComposition: z.ZodOptional<z.ZodObject<{
236
+ format: z.ZodEnum<{
237
+ "tileflow-icon-composition-v1": "tileflow-icon-composition-v1";
238
+ "tileflow-icon-composition-v2": "tileflow-icon-composition-v2";
239
+ }>;
240
+ compositionVersion: z.ZodUnion<readonly [z.ZodLiteral<1>, z.ZodLiteral<2>]>;
241
+ packageHash: z.ZodString;
242
+ contributors: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
243
+ kind: z.ZodLiteral<"local">;
244
+ iconIds: z.ZodArray<z.ZodString>;
245
+ }, z.core.$strict>, z.ZodObject<{
246
+ kind: z.ZodLiteral<"package">;
247
+ package: z.ZodString;
248
+ iconIds: z.ZodArray<z.ZodString>;
249
+ }, z.core.$strict>, z.ZodObject<{
250
+ kind: z.ZodLiteral<"icon-set">;
251
+ reference: z.ZodString;
252
+ teamId: z.ZodString;
253
+ setId: z.ZodString;
254
+ versionId: z.ZodString;
255
+ version: z.ZodNumber;
256
+ packageId: z.ZodString;
257
+ contentHash: z.ZodString;
258
+ iconIds: z.ZodArray<z.ZodString>;
259
+ }, z.core.$strict>], "kind">>;
260
+ winners: z.ZodArray<z.ZodObject<{
261
+ id: z.ZodString;
262
+ width: z.ZodNumber;
263
+ height: z.ZodNumber;
264
+ layout: z.ZodOptional<z.ZodObject<{
265
+ stretchX: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>>;
266
+ stretchY: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>>;
267
+ content: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
268
+ }, z.core.$strict>>;
269
+ appearance: z.ZodOptional<z.ZodObject<{
270
+ representation: z.ZodLiteral<"sdf">;
271
+ defaults: z.ZodObject<{
272
+ color: z.ZodString;
273
+ haloColor: z.ZodString;
274
+ haloWidth: z.ZodNumber;
275
+ haloBlur: z.ZodNumber;
276
+ }, z.core.$strict>;
277
+ }, z.core.$strict>>;
278
+ pixelSha256: z.ZodObject<{
279
+ oneX: z.ZodString;
280
+ twoX: z.ZodString;
281
+ }, z.core.$strict>;
282
+ contributor: z.ZodNumber;
283
+ }, z.core.$strict>>;
284
+ }, z.core.$strict>>;
285
+ }, z.core.$strict>;
286
+ systemThemes: z.ZodOptional<z.ZodObject<{
287
+ dark: z.ZodString;
288
+ light: z.ZodString;
289
+ }, z.core.$strict>>;
290
+ themes: z.ZodRecord<z.ZodString, z.ZodObject<{
291
+ colorScheme: z.ZodEnum<{
292
+ dark: "dark";
293
+ light: "light";
294
+ }>;
295
+ dataRequirements: z.ZodRecord<z.ZodString, z.ZodUnknown>;
296
+ sourceRequirements: z.ZodRecord<z.ZodString, z.ZodUnknown>;
297
+ styleSha256: z.ZodString;
298
+ themeId: z.ZodString;
299
+ themeVersion: z.ZodNumber;
300
+ }, z.core.$strict>>;
301
+ }, z.core.$strict>>;
302
+ provenance: z.ZodOptional<z.ZodObject<{
303
+ schemaVersion: z.ZodLiteral<1>;
304
+ lockfile: z.ZodOptional<z.ZodObject<{
305
+ format: z.ZodEnum<{
306
+ bun: "bun";
307
+ npm: "npm";
308
+ pnpm: "pnpm";
309
+ yarn: "yarn";
310
+ }>;
311
+ sha256: z.ZodString;
312
+ }, z.core.$strict>>;
313
+ packages: z.ZodRecord<z.ZodString, z.ZodString>;
314
+ }, z.core.$strict>>;
315
+ }, z.core.$strict>;
316
+ styles: z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodUnknown>>;
317
+ }, z.core.$strict>;
318
+ native: z.ZodObject<{
319
+ buildRecord: z.ZodLazy<z.core.$ZodObject<{
320
+ schemaVersion: z.ZodLiteral<2>;
321
+ renderer: z.ZodLiteral<"native">;
322
+ profile: z.ZodLiteral<"native-v1">;
323
+ validation: z.ZodLiteral<"static-artifacts">;
324
+ preparationVersion: z.ZodLiteral<"native-lowering-v1">;
325
+ engines: z.ZodLazy<z.core.$ZodObject<{
326
+ android: z.ZodLiteral<"13.2.0">;
327
+ ios: z.ZodLiteral<"6.26.0">;
328
+ }, z.core.$strict>>;
329
+ buildManifestSha256: z.ZodString;
330
+ transformations: z.ZodArray<z.ZodLazy<z.core.$ZodObject<{
331
+ map: z.ZodString;
332
+ theme: z.ZodString;
333
+ inputStyleSha256: z.ZodString;
334
+ loweredStyleSha256: z.ZodString;
335
+ inputLayers: z.ZodNumber;
336
+ outputLayers: z.ZodNumber;
337
+ projection: z.ZodEnum<{
338
+ none: "none";
339
+ "mercator-to-implicit": "mercator-to-implicit";
340
+ "globe-to-mercator": "globe-to-mercator";
341
+ }>;
342
+ layers: z.ZodArray<z.ZodLazy<z.core.$ZodObject<{
343
+ inputLayer: z.ZodNumber;
344
+ outputStart: z.ZodNumber;
345
+ outputCount: z.ZodNumber;
346
+ properties: z.ZodArray<z.ZodEnum<{
347
+ "line-dasharray": "line-dasharray";
348
+ "line-cap": "line-cap";
349
+ }>>;
350
+ }, z.core.$strict>>>;
351
+ }, z.core.$strict>>>;
352
+ }, z.core.$strict>>;
353
+ buildManifest: z.ZodObject<{
354
+ schemaVersion: z.ZodLiteral<1>;
355
+ maps: z.ZodRecord<z.ZodString, z.ZodObject<{
356
+ assetSetSha256: z.ZodString;
357
+ defaultTheme: z.ZodString;
358
+ lineage: z.ZodArray<z.ZodObject<{
359
+ id: z.ZodString;
360
+ mapVersion: z.ZodNumber;
361
+ }, z.core.$strict>>;
362
+ mapRevisionSha256: z.ZodString;
363
+ mapRevisionSchemaVersion: z.ZodOptional<z.ZodLiteral<2>>;
364
+ mapVersion: z.ZodNumber;
365
+ semanticCompiler: z.ZodObject<{
366
+ name: z.ZodLiteral<"tileflow-semantic">;
367
+ version: z.ZodLiteral<1>;
368
+ }, z.core.$strict>;
369
+ sourceAssets: z.ZodObject<{
370
+ fonts: z.ZodArray<z.ZodObject<{
371
+ family: z.ZodString;
372
+ sha256: z.ZodString;
373
+ style: z.ZodEnum<{
374
+ italic: "italic";
375
+ normal: "normal";
376
+ oblique: "oblique";
377
+ }>;
378
+ weight: z.ZodEnum<{
379
+ 100: "100";
380
+ 200: "200";
381
+ 300: "300";
382
+ 400: "400";
383
+ 500: "500";
384
+ 600: "600";
385
+ 700: "700";
386
+ 800: "800";
387
+ 900: "900";
388
+ }>;
389
+ }, z.core.$strict>>;
390
+ icons: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
391
+ format: z.ZodEnum<{
392
+ jpeg: "jpeg";
393
+ png: "png";
394
+ svg: "svg";
395
+ webp: "webp";
396
+ }>;
397
+ id: z.ZodString;
398
+ kind: z.ZodEnum<{
399
+ pattern: "pattern";
400
+ icon: "icon";
401
+ }>;
402
+ sha256: z.ZodString;
403
+ }, z.core.$strict>, z.ZodObject<{
404
+ kind: z.ZodLiteral<"rendered-icon">;
405
+ id: z.ZodString;
406
+ appearance: z.ZodOptional<z.ZodObject<{
407
+ representation: z.ZodLiteral<"sdf">;
408
+ defaults: z.ZodObject<{
409
+ color: z.ZodString;
410
+ haloColor: z.ZodString;
411
+ haloWidth: z.ZodNumber;
412
+ haloBlur: z.ZodNumber;
413
+ }, z.core.$strict>;
414
+ }, z.core.$strict>>;
415
+ layout: z.ZodOptional<z.ZodObject<{
416
+ stretchX: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>>;
417
+ stretchY: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>>;
418
+ content: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
419
+ }, z.core.$strict>>;
420
+ width: z.ZodNumber;
421
+ height: z.ZodNumber;
422
+ pixelSha256: z.ZodObject<{
423
+ oneX: z.ZodString;
424
+ twoX: z.ZodString;
425
+ }, z.core.$strict>;
426
+ }, z.core.$strict>]>>;
427
+ iconComposition: z.ZodOptional<z.ZodObject<{
428
+ format: z.ZodEnum<{
429
+ "tileflow-icon-composition-v1": "tileflow-icon-composition-v1";
430
+ "tileflow-icon-composition-v2": "tileflow-icon-composition-v2";
431
+ }>;
432
+ compositionVersion: z.ZodUnion<readonly [z.ZodLiteral<1>, z.ZodLiteral<2>]>;
433
+ packageHash: z.ZodString;
434
+ contributors: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
435
+ kind: z.ZodLiteral<"local">;
436
+ iconIds: z.ZodArray<z.ZodString>;
437
+ }, z.core.$strict>, z.ZodObject<{
438
+ kind: z.ZodLiteral<"package">;
439
+ package: z.ZodString;
440
+ iconIds: z.ZodArray<z.ZodString>;
441
+ }, z.core.$strict>, z.ZodObject<{
442
+ kind: z.ZodLiteral<"icon-set">;
443
+ reference: z.ZodString;
444
+ teamId: z.ZodString;
445
+ setId: z.ZodString;
446
+ versionId: z.ZodString;
447
+ version: z.ZodNumber;
448
+ packageId: z.ZodString;
449
+ contentHash: z.ZodString;
450
+ iconIds: z.ZodArray<z.ZodString>;
451
+ }, z.core.$strict>], "kind">>;
452
+ winners: z.ZodArray<z.ZodObject<{
453
+ id: z.ZodString;
454
+ width: z.ZodNumber;
455
+ height: z.ZodNumber;
456
+ layout: z.ZodOptional<z.ZodObject<{
457
+ stretchX: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>>;
458
+ stretchY: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>>;
459
+ content: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
460
+ }, z.core.$strict>>;
461
+ appearance: z.ZodOptional<z.ZodObject<{
462
+ representation: z.ZodLiteral<"sdf">;
463
+ defaults: z.ZodObject<{
464
+ color: z.ZodString;
465
+ haloColor: z.ZodString;
466
+ haloWidth: z.ZodNumber;
467
+ haloBlur: z.ZodNumber;
468
+ }, z.core.$strict>;
469
+ }, z.core.$strict>>;
470
+ pixelSha256: z.ZodObject<{
471
+ oneX: z.ZodString;
472
+ twoX: z.ZodString;
473
+ }, z.core.$strict>;
474
+ contributor: z.ZodNumber;
475
+ }, z.core.$strict>>;
476
+ }, z.core.$strict>>;
477
+ }, z.core.$strict>;
478
+ systemThemes: z.ZodOptional<z.ZodObject<{
479
+ dark: z.ZodString;
480
+ light: z.ZodString;
481
+ }, z.core.$strict>>;
482
+ themes: z.ZodRecord<z.ZodString, z.ZodObject<{
483
+ colorScheme: z.ZodEnum<{
484
+ dark: "dark";
485
+ light: "light";
486
+ }>;
487
+ dataRequirements: z.ZodRecord<z.ZodString, z.ZodUnknown>;
488
+ sourceRequirements: z.ZodRecord<z.ZodString, z.ZodUnknown>;
489
+ styleSha256: z.ZodString;
490
+ themeId: z.ZodString;
491
+ themeVersion: z.ZodNumber;
492
+ }, z.core.$strict>>;
493
+ }, z.core.$strict>>;
494
+ provenance: z.ZodOptional<z.ZodObject<{
495
+ schemaVersion: z.ZodLiteral<1>;
496
+ lockfile: z.ZodOptional<z.ZodObject<{
497
+ format: z.ZodEnum<{
498
+ bun: "bun";
499
+ npm: "npm";
500
+ pnpm: "pnpm";
501
+ yarn: "yarn";
502
+ }>;
503
+ sha256: z.ZodString;
504
+ }, z.core.$strict>>;
505
+ packages: z.ZodRecord<z.ZodString, z.ZodString>;
506
+ }, z.core.$strict>>;
507
+ }, z.core.$strict>;
508
+ styles: z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodUnknown>>;
509
+ }, z.core.$strict>;
510
+ }, z.core.$strict>;
511
+ }, z.core.$strict>;
512
+ type TileflowRendererDeploymentArtifact = z.infer<typeof tileflowRendererDeploymentArtifactSchema>;
513
+ declare class TileflowRendererDeploymentError extends Error {
514
+ readonly code: "RENDERER_DEPLOYMENT_INVALID";
515
+ constructor();
516
+ }
517
+ /** Hash/profile verification is deliberately separate from shape validation and server authority. */
518
+ declare function parseTileflowRendererDeploymentArtifact(input: unknown): Promise<TileflowRendererDeploymentArtifact>;
519
+ declare const tileflowRendererDeploymentResponseSchema: z.ZodObject<{
520
+ kind: z.ZodLiteral<"tileflow-map-deployment-result">;
521
+ schemaVersion: z.ZodLiteral<2>;
522
+ changed: z.ZodBoolean;
523
+ mapId: z.ZodString;
524
+ deploymentId: z.ZodString;
525
+ version: z.ZodNumber;
526
+ worldConversionId: z.ZodOptional<z.ZodString>;
527
+ renderers: z.ZodObject<{
528
+ web: z.ZodObject<{
529
+ themes: z.ZodRecord<z.ZodString, z.ZodObject<{
530
+ styleId: z.ZodOptional<z.ZodString>;
531
+ styleUrl: z.ZodString;
532
+ }, z.core.$strict>>;
533
+ }, z.core.$strict>;
534
+ native: z.ZodObject<{
535
+ profile: z.ZodLiteral<"native-v1">;
536
+ manifestUrl: z.ZodString;
537
+ themes: z.ZodRecord<z.ZodString, z.ZodObject<{
538
+ styleUrl: z.ZodString;
539
+ revision: z.ZodString;
540
+ }, z.core.$strict>>;
541
+ }, z.core.$strict>;
542
+ }, z.core.$strict>;
543
+ }, z.core.$strict>;
544
+ type TileflowRendererDeploymentResponse = z.infer<typeof tileflowRendererDeploymentResponseSchema>;
545
+
135
546
  type TileflowCompiledMapMetadata = Pick<ResolvedTileflowMap, 'id' | 'version'> & {
136
547
  lineage: readonly TileflowMapBuildLineageEntry[];
137
548
  };
@@ -160,4 +571,4 @@ declare function createManifest(catalog: TileflowBuildCatalog, options?: {
160
571
  styleBaseUrl?: string;
161
572
  }): TileflowRuntimeManifest;
162
573
 
163
- export { type TileflowBuildAssetIdentity, type TileflowBuildCatalog, type TileflowBuildInspectedStyles, type TileflowBuildStyles, type TileflowCompiledMapMetadata, TileflowDataRequirementsV1, type TileflowEffectiveFontSourceIdentity, type TileflowEffectiveIconSourceIdentity, type TileflowEffectiveMapSourceAssets, type TileflowHashableBuildAsset, TileflowInspectedStyle, type TileflowMapBuildInput, type TileflowMapBuildLineageEntry, type TileflowMapBuildManifestEntryV1, type TileflowMapBuildManifestV1, type TileflowMapBuildProvenanceV1, TileflowPreparedMapAssets, TileflowSourceRequirementsV1, type TileflowThemeBuildManifestEntryV1, collectTileflowMapBuildLineage, createManifest, createStyleFromCatalog, createStyleFromCatalogWithInspection, createStyleWithInspection, createStylesFromCatalog, createStylesFromCatalogWithInspection, createTileflowMapBuildManifest, hashTileflowAssetSet, hashTileflowAssetSetIdentities, hashTileflowMapRevision, tileflowMapBuildManifestFileName, tileflowMapBuildManifestSchemaVersion, tileflowMapRevisionCanonicalization, tileflowMapRevisionSchemaVersion, tileflowSharedIconMapRevisionSchemaVersion };
574
+ export { type TileflowBuildAssetIdentity, type TileflowBuildCatalog, type TileflowBuildInspectedStyles, type TileflowBuildStyles, type TileflowCompiledMapMetadata, TileflowDataRequirementsV1, type TileflowEffectiveFontSourceIdentity, type TileflowEffectiveIconSourceIdentity, type TileflowEffectiveMapSourceAssets, type TileflowHashableBuildAsset, TileflowInspectedStyle, type TileflowMapBuildInput, type TileflowMapBuildLineageEntry, type TileflowMapBuildManifestEntryV1, type TileflowMapBuildManifestV1, type TileflowMapBuildProvenanceV1, TileflowPreparedMapAssets, type TileflowRendererDeploymentArtifact, TileflowRendererDeploymentError, type TileflowRendererDeploymentResponse, TileflowSourceRequirementsV1, type TileflowThemeBuildManifestEntryV1, collectTileflowMapBuildLineage, createManifest, createStyleFromCatalog, createStyleFromCatalogWithInspection, createStyleWithInspection, createStylesFromCatalog, createStylesFromCatalogWithInspection, createTileflowMapBuildManifest, hashTileflowAssetSet, hashTileflowAssetSetIdentities, hashTileflowMapRevision, parseTileflowRendererDeploymentArtifact, tileflowMapBuildManifestFileName, tileflowMapBuildManifestSchemaVersion, tileflowMapRevisionCanonicalization, tileflowMapRevisionSchemaVersion, tileflowRendererDeploymentArtifactSchema, tileflowRendererDeploymentLimits, tileflowRendererDeploymentResponseSchema, tileflowSharedIconMapRevisionSchemaVersion };