@tileflow/dev 0.1.0-alpha.17 → 0.1.0-alpha.19

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.
@@ -0,0 +1,211 @@
1
+ import {
2
+ sanitizeDiagnosticSecrets
3
+ } from "./chunk-KDFTE4Q5.js";
4
+
5
+ // src/validation.ts
6
+ import { realpathSync } from "fs";
7
+ import { isAbsolute, relative, resolve, sep, win32 } from "path";
8
+ import { compareCodeUnits } from "@tileflow/core";
9
+ var tileflowCommandDocumentSchemaVersion = 1;
10
+ function createTileflowCommandSummary(input) {
11
+ return {
12
+ schemaVersion: tileflowCommandDocumentSchemaVersion,
13
+ command: normalizeCommandField(input.command, "command"),
14
+ ok: input.ok,
15
+ phase: normalizePhase(input.phase, "command"),
16
+ code: normalizeCode(input.code, input.ok ? "COMMAND_OK" : "COMMAND_FAILED"),
17
+ path: boundText(input.path ?? "", 300),
18
+ severity: input.severity,
19
+ message: boundText(input.message.replace(/[\r\n]+/gu, " ").trim(), 300),
20
+ suggestion: boundText(input.suggestion.replace(/[\r\n]+/gu, " ").trim(), 300)
21
+ };
22
+ }
23
+ function createTileflowStructuredDiagnostics(error, cwd, defaults) {
24
+ const inheritedCode = optionalField(error, "code");
25
+ const inheritedPhase = optionalField(error, "phase") ?? optionalNestedField(error, "phase");
26
+ const issues = getIssues(error);
27
+ const candidates = issues.length ? issues : [
28
+ {
29
+ message: error instanceof Error ? error.message : "The Tileflow command failed.",
30
+ path: ""
31
+ }
32
+ ];
33
+ const diagnostics = candidates.map((issue) => {
34
+ const phase = normalizePhase(issue.phase ?? inheritedPhase, defaults.phase);
35
+ const code = normalizeCode(issue.code ?? inheritedCode, defaults.code);
36
+ const severity = normalizeSeverity(issue.severity ?? issue.level, defaults.severity ?? "error");
37
+ return {
38
+ phase,
39
+ code,
40
+ path: boundText(sanitizePath(issue.path ?? "", cwd), 300),
41
+ severity,
42
+ message: boundText(sanitizeMessage(issue.message, cwd), 300),
43
+ suggestion: issue.suggestion ? boundText(sanitizeMessage(issue.suggestion, cwd), 300) : suggestionForDiagnostic(code, phase)
44
+ };
45
+ });
46
+ diagnostics.sort(compareDiagnostics);
47
+ return diagnostics.filter(
48
+ (diagnostic, index) => index === 0 || JSON.stringify(diagnostic) !== JSON.stringify(diagnostics[index - 1])
49
+ ).slice(0, 32);
50
+ }
51
+ function createTileflowCommandFailureDocument(command, error, cwd, defaults) {
52
+ const diagnostics = createTileflowStructuredDiagnostics(error, cwd, defaults);
53
+ const primary = diagnostics[0] ?? {
54
+ phase: normalizePhase(defaults.phase, "command"),
55
+ code: normalizeCode(defaults.code, "COMMAND_FAILED"),
56
+ path: "",
57
+ severity: defaults.severity ?? "error",
58
+ message: "The Tileflow command failed.",
59
+ suggestion: "Review the command input and run it again."
60
+ };
61
+ return {
62
+ schemaVersion: tileflowCommandDocumentSchemaVersion,
63
+ command: normalizeCommandField(command, "command"),
64
+ ok: false,
65
+ phase: primary.phase,
66
+ code: primary.code,
67
+ path: primary.path,
68
+ severity: primary.severity,
69
+ message: primary.message,
70
+ suggestion: primary.suggestion,
71
+ diagnostics
72
+ };
73
+ }
74
+ function serializeTileflowCommandDocument(value) {
75
+ return `${JSON.stringify(value, null, 2)}
76
+ `;
77
+ }
78
+ function getIssues(error) {
79
+ if (!error || typeof error !== "object") return [];
80
+ const containers = [];
81
+ for (const key of ["diagnostics", "messages", "issues"]) {
82
+ const value = error[key];
83
+ if (Array.isArray(value)) containers.push(value);
84
+ }
85
+ const details = error.details;
86
+ if (details && typeof details === "object") {
87
+ const diagnostics = details.diagnostics;
88
+ if (Array.isArray(diagnostics)) containers.push(diagnostics);
89
+ }
90
+ return containers.flatMap(
91
+ (container) => container.flatMap((entry) => {
92
+ if (!entry || typeof entry !== "object") return [];
93
+ const candidate = entry;
94
+ if (typeof candidate.message !== "string") return [];
95
+ return [
96
+ {
97
+ ...typeof candidate.code === "string" ? { code: candidate.code } : {},
98
+ ...typeof candidate.level === "string" ? { level: candidate.level } : {},
99
+ message: candidate.message,
100
+ ...typeof candidate.path === "string" ? { path: candidate.path } : {},
101
+ ...typeof candidate.phase === "string" ? { phase: candidate.phase } : {},
102
+ ...typeof candidate.severity === "string" ? { severity: candidate.severity } : {},
103
+ ...typeof candidate.suggestion === "string" ? { suggestion: candidate.suggestion } : {}
104
+ }
105
+ ];
106
+ })
107
+ );
108
+ }
109
+ function sanitizeMessage(value, cwd) {
110
+ let sanitized = value;
111
+ for (const root of localPathAliases(cwd)) sanitized = sanitized.replaceAll(root, ".");
112
+ sanitized = sanitized.replace(/[\r\n]+/gu, " ").trim();
113
+ sanitized = sanitized.replace(/https?:\/\/[^\s'")<>]+/giu, (url) => {
114
+ try {
115
+ return new URL(url.replace(/[),.;]+$/u, "")).origin;
116
+ } catch {
117
+ return "(resource URL)";
118
+ }
119
+ });
120
+ sanitized = sanitized.replace(/(^|[\s'"(])[A-Za-z]:[\\/][^\s'")]+/gu, "$1(external path)");
121
+ sanitized = sanitized.replace(/(^|[\s'"(])(?:\\\\|\/\/)[^\s'")]+/gu, "$1(external path)");
122
+ sanitized = sanitized.replace(/(^|[\s'"(])\/[^\s'")]+/gu, "$1(external path)");
123
+ return sanitizeDiagnosticSecrets(sanitized);
124
+ }
125
+ function sanitizePath(value, cwd) {
126
+ if (!value) return "";
127
+ if (win32.isAbsolute(value) && !isAbsolute(value)) return "(external)";
128
+ if (!isAbsolute(value)) return sanitizeDiagnosticSecrets(value.replaceAll("\\", "/"));
129
+ const local = relative(canonicalPath(cwd), canonicalPath(value)).replaceAll(sep, "/");
130
+ return local.startsWith("../") || local === ".." ? "(external)" : local || ".";
131
+ }
132
+ function localPathAliases(path) {
133
+ return [.../* @__PURE__ */ new Set([resolve(path), canonicalPath(path)])].sort(
134
+ (left, right) => right.length - left.length
135
+ );
136
+ }
137
+ function canonicalPath(path) {
138
+ try {
139
+ return realpathSync.native(resolve(path));
140
+ } catch {
141
+ return resolve(path);
142
+ }
143
+ }
144
+ function suggestionForDiagnostic(code, phase) {
145
+ if (code === "INVALID_TARGET" || phase === "command-validation") {
146
+ return "Use a documented command option and run the command again.";
147
+ }
148
+ if (phase === "config-load") {
149
+ return "Check the config path and its installed imports, then run the command again.";
150
+ }
151
+ if (phase === "config-validation" || code === "CONFIG_INVALID") {
152
+ return "Edit the reported config path to match the Tileflow config reference, then validate again.";
153
+ }
154
+ if (phase.includes("icon") || code.includes("ICON")) {
155
+ return "Fix the reported icon input and run validation again.";
156
+ }
157
+ if (phase.includes("font") || code.includes("FONT") || code.includes("GLYPH")) {
158
+ return "Fix the reported font or glyph input and run validation again.";
159
+ }
160
+ if (phase === "style-validation" || code === "STYLE_INVALID") {
161
+ return "Adjust the reported semantic map value and run validation again.";
162
+ }
163
+ if (phase === "hosted-validation" || code === "HOSTED_INCOMPATIBLE") {
164
+ return "Use a supported Hosted input or validate with the local target.";
165
+ }
166
+ if (phase === "config-inspection") {
167
+ return "Resolve the reported config diagnostic before inspecting the map again.";
168
+ }
169
+ return "Review the reported path and run the command again.";
170
+ }
171
+ function compareDiagnostics(left, right) {
172
+ return diagnosticSeverityRank(left.severity) - diagnosticSeverityRank(right.severity) || compareCodeUnits(left.path, right.path) || compareCodeUnits(left.phase, right.phase) || compareCodeUnits(left.code, right.code) || compareCodeUnits(left.message, right.message) || compareCodeUnits(left.suggestion, right.suggestion);
173
+ }
174
+ function diagnosticSeverityRank(severity) {
175
+ return severity === "error" ? 0 : severity === "warning" ? 1 : 2;
176
+ }
177
+ function normalizeSeverity(value, fallback) {
178
+ return value === "error" || value === "info" || value === "warning" ? value : fallback;
179
+ }
180
+ function normalizeCode(value, fallback) {
181
+ const normalized = sanitizeDiagnosticSecrets(value ?? fallback).toUpperCase().replace(/[^A-Z0-9_]/gu, "_").slice(0, 64);
182
+ return normalized || fallback;
183
+ }
184
+ function normalizePhase(value, fallback) {
185
+ const normalized = sanitizeDiagnosticSecrets(value ?? fallback).toLowerCase().replace(/[^a-z0-9-]/gu, "-").slice(0, 64);
186
+ return normalized || fallback;
187
+ }
188
+ function normalizeCommandField(value, fallback) {
189
+ const normalized = sanitizeDiagnosticSecrets(value).toLowerCase().replace(/[^a-z0-9 ._-]/gu, "").trim().slice(0, 64);
190
+ return normalized || fallback;
191
+ }
192
+ function optionalField(value, key) {
193
+ if (!value || typeof value !== "object") return void 0;
194
+ const field = value[key];
195
+ return typeof field === "string" && field.trim() ? field : void 0;
196
+ }
197
+ function optionalNestedField(value, key) {
198
+ if (!value || typeof value !== "object") return void 0;
199
+ return optionalField(value.details, key);
200
+ }
201
+ function boundText(value, limit) {
202
+ return value.length <= limit ? value : `${value.slice(0, limit - 1)}\u2026`;
203
+ }
204
+
205
+ export {
206
+ tileflowCommandDocumentSchemaVersion,
207
+ createTileflowCommandSummary,
208
+ createTileflowStructuredDiagnostics,
209
+ createTileflowCommandFailureDocument,
210
+ serializeTileflowCommandDocument
211
+ };
@@ -0,0 +1,33 @@
1
+ import { TileflowMap, ValidationMessage } from '@tileflow/core';
2
+ import { TileflowBuildCatalog } from '@tileflow/core/build';
3
+
4
+ declare const defaultTileflowApiUrl = "https://api.tileflow.dev";
5
+ declare const defaultTileflowConfigPath = "tileflow.config.ts";
6
+ declare const defaultTileflowManifestPath = "public/tileflow/manifest.json";
7
+ type LoadTileflowConfigOptions = {
8
+ cwd?: string;
9
+ fresh?: boolean;
10
+ };
11
+ type LoadedTileflowConfig = {
12
+ /** Tooling-only authoring definitions retained for resolved-config provenance. Never serialize. */
13
+ authoringMaps: Record<string, TileflowMap>;
14
+ /** Absolute executable config path. Asset directories resolve from its parent directory. */
15
+ configFile: string;
16
+ inputFiles: string[];
17
+ project: TileflowBuildCatalog;
18
+ };
19
+ declare class TileflowValidationError extends Error {
20
+ readonly code: "CONFIG_INVALID";
21
+ readonly messages: ValidationMessage[];
22
+ readonly phase: "config-validation";
23
+ constructor(messages: ValidationMessage[]);
24
+ }
25
+ declare function loadTileflowConfig(configPath?: string, options?: LoadTileflowConfigOptions): Promise<TileflowBuildCatalog>;
26
+ declare function loadTileflowConfigWithInputs(configPath?: string, options?: LoadTileflowConfigOptions): Promise<LoadedTileflowConfig>;
27
+ declare function loadValidTileflowConfig(configPath?: string, options?: LoadTileflowConfigOptions): Promise<TileflowBuildCatalog>;
28
+ declare function loadValidTileflowConfigWithInputs(configPath?: string, options?: LoadTileflowConfigOptions): Promise<LoadedTileflowConfig>;
29
+ declare function assertValidTileflowConfig(project: TileflowBuildCatalog): void;
30
+ declare function getTileflowMapNames(project: TileflowBuildCatalog): string[];
31
+ declare function getFirstTileflowMapName(project: TileflowBuildCatalog): string;
32
+
33
+ export { type LoadTileflowConfigOptions, type LoadedTileflowConfig, TileflowValidationError, assertValidTileflowConfig, defaultTileflowApiUrl, defaultTileflowConfigPath, defaultTileflowManifestPath, getFirstTileflowMapName, getTileflowMapNames, loadTileflowConfig, loadTileflowConfigWithInputs, loadValidTileflowConfig, loadValidTileflowConfigWithInputs };
package/dist/config.js ADDED
@@ -0,0 +1,27 @@
1
+ import {
2
+ TileflowValidationError,
3
+ assertValidTileflowConfig,
4
+ defaultTileflowApiUrl,
5
+ defaultTileflowConfigPath,
6
+ defaultTileflowManifestPath,
7
+ getFirstTileflowMapName,
8
+ getTileflowMapNames,
9
+ loadTileflowConfig,
10
+ loadTileflowConfigWithInputs,
11
+ loadValidTileflowConfig,
12
+ loadValidTileflowConfigWithInputs
13
+ } from "./chunk-BKHIZ7H2.js";
14
+ import "./chunk-D4OE4ITL.js";
15
+ export {
16
+ TileflowValidationError,
17
+ assertValidTileflowConfig,
18
+ defaultTileflowApiUrl,
19
+ defaultTileflowConfigPath,
20
+ defaultTileflowManifestPath,
21
+ getFirstTileflowMapName,
22
+ getTileflowMapNames,
23
+ loadTileflowConfig,
24
+ loadTileflowConfigWithInputs,
25
+ loadValidTileflowConfig,
26
+ loadValidTileflowConfigWithInputs
27
+ };
@@ -0,0 +1,47 @@
1
+ import { TileflowFontBundleManifest, MapLibreStyle } from '@tileflow/core';
2
+ import { TileflowEffectiveFontSourceIdentity, TileflowBuildStyles, TileflowBuildCatalog } from '@tileflow/core/build';
3
+ import { TileflowBuildAsset } from './icons.js';
4
+
5
+ type TileflowFontCompilationTarget = 'hosted' | 'local';
6
+ type TileflowFontCompilationIssue = {
7
+ message: string;
8
+ path: string;
9
+ };
10
+ declare class TileflowFontCompilationError extends Error {
11
+ readonly code: "FONT_INVALID";
12
+ readonly issues: readonly TileflowFontCompilationIssue[];
13
+ readonly phase: "font-compilation";
14
+ constructor(issues: readonly TileflowFontCompilationIssue[]);
15
+ }
16
+ type PreparedTileflowStyleFonts = {
17
+ assets: TileflowBuildAsset[];
18
+ bundles: Record<string, CompiledTileflowFontBundle>;
19
+ sourceIdentities: Record<string, TileflowEffectiveFontSourceIdentity[]>;
20
+ styles: TileflowBuildStyles;
21
+ watchPaths: string[];
22
+ };
23
+ type CompiledTileflowFontBundle = {
24
+ contentHash: string;
25
+ files: TileflowBuildAsset[];
26
+ manifest: TileflowFontBundleManifest;
27
+ };
28
+ type PrepareTileflowStyleFontsOptions = {
29
+ assetBaseUrl: string;
30
+ baseDirectory?: string;
31
+ cwd: string;
32
+ target: TileflowFontCompilationTarget;
33
+ };
34
+ /** Resolve only mutable local font directories so failed builds can still be watched. */
35
+ declare function getTileflowFontWatchPaths(project: TileflowBuildCatalog, cwd: string, baseDirectory?: string): Promise<string[]>;
36
+ /**
37
+ * Prepare every map's ordered local font provider.
38
+ *
39
+ * OpenType full names are the canonical IDs consumed by `text-font`. Directories are applied from
40
+ * left to right, so a later directory replaces an earlier face only when that exact ID matches.
41
+ */
42
+ declare function prepareTileflowStyleFonts(project: TileflowBuildCatalog, inputStyles: Readonly<Record<string, Readonly<Record<string, MapLibreStyle>>>>, options: PrepareTileflowStyleFontsOptions): Promise<PreparedTileflowStyleFonts>;
43
+ /** Replace provisional local/preflight URLs with one exact Hosted bundle base URL. */
44
+ declare function bindTileflowStyleFontBundle(style: MapLibreStyle, bundle: CompiledTileflowFontBundle, publicBaseUrl: string): MapLibreStyle;
45
+ declare function replaceTileflowStyleFontSources(style: MapLibreStyle, replace: (source: string) => string): MapLibreStyle;
46
+
47
+ export { type CompiledTileflowFontBundle, type PrepareTileflowStyleFontsOptions, type PreparedTileflowStyleFonts, TileflowFontCompilationError, type TileflowFontCompilationIssue, type TileflowFontCompilationTarget, bindTileflowStyleFontBundle, getTileflowFontWatchPaths, prepareTileflowStyleFonts, replaceTileflowStyleFontSources };
package/dist/fonts.js ADDED
@@ -0,0 +1,16 @@
1
+ import {
2
+ TileflowFontCompilationError,
3
+ bindTileflowStyleFontBundle,
4
+ getTileflowFontWatchPaths,
5
+ prepareTileflowStyleFonts,
6
+ replaceTileflowStyleFontSources
7
+ } from "./chunk-VEB43KDS.js";
8
+ import "./chunk-BL3FK4GO.js";
9
+ import "./chunk-D4OE4ITL.js";
10
+ export {
11
+ TileflowFontCompilationError,
12
+ bindTileflowStyleFontBundle,
13
+ getTileflowFontWatchPaths,
14
+ prepareTileflowStyleFonts,
15
+ replaceTileflowStyleFontSources
16
+ };
@@ -0,0 +1,136 @@
1
+ import { TileflowIconPackageFileName, TileflowIconPackageManifest } from '@tileflow/core';
2
+ import { TileflowBuildCatalog, TileflowPreparedMapAssets, TileflowEffectiveIconSourceIdentity } from '@tileflow/core/build';
3
+
4
+ type TileflowBuildAsset = {
5
+ contentType: string;
6
+ fileName: string;
7
+ source: string | Uint8Array;
8
+ };
9
+ /** Executable authoring input before local sources have been resolved into runtime URLs. */
10
+ type TileflowSourceCatalog = TileflowBuildCatalog;
11
+ declare const preparedTileflowBuildCatalog: unique symbol;
12
+ /** A validated catalog paired with build-owned portable assets. */
13
+ type PreparedTileflowBuildCatalog = TileflowBuildCatalog & {
14
+ readonly [preparedTileflowBuildCatalog]: true;
15
+ };
16
+ type PreparedTileflowCatalog = {
17
+ assets: TileflowBuildAsset[];
18
+ baseDirectory: string;
19
+ cwd: string;
20
+ mapAssets: Record<string, TileflowPreparedMapAssets>;
21
+ mapIconSources: Record<string, readonly TileflowEffectiveIconSourceIdentity[]>;
22
+ project: PreparedTileflowBuildCatalog;
23
+ sourceProject: TileflowSourceCatalog;
24
+ watchPaths: string[];
25
+ };
26
+ type TileflowIconCompilationTarget = 'hosted' | 'local';
27
+ type TileflowIconCompilationIssue = {
28
+ message: string;
29
+ path: string;
30
+ };
31
+ type CompiledTileflowIconPackageFile = {
32
+ contentType: 'application/json' | 'image/png';
33
+ fileName: TileflowIconPackageFileName;
34
+ source: Uint8Array;
35
+ };
36
+ type CompiledTileflowIconPackage = {
37
+ contentHash: string;
38
+ files: CompiledTileflowIconPackageFile[];
39
+ manifest: TileflowIconPackageManifest;
40
+ };
41
+ type TileflowMapIconPackageBinding = {
42
+ iconIds: readonly string[];
43
+ label: string;
44
+ mapName: string;
45
+ packageHash: string;
46
+ };
47
+ type CompileTileflowIconPackagesResult = {
48
+ bindings: TileflowMapIconPackageBinding[];
49
+ packages: CompiledTileflowIconPackage[];
50
+ sourceIdentities: Record<string, readonly TileflowEffectiveIconSourceIdentity[]>;
51
+ watchPaths: string[];
52
+ };
53
+ type InspectTileflowIconCatalogsOptions = {
54
+ baseDirectory?: string;
55
+ cwd: string;
56
+ mapNames?: readonly string[];
57
+ };
58
+ type TileflowIconCatalogSourceFormat = 'jpeg' | 'png' | 'svg' | 'webp';
59
+ type TileflowIconCatalogAtlasRectangle = {
60
+ height: number;
61
+ width: number;
62
+ x: number;
63
+ y: number;
64
+ };
65
+ type TileflowIconCatalogRenderedDensity = {
66
+ atlas: TileflowIconCatalogAtlasRectangle;
67
+ height: number;
68
+ pixelRatio: 1 | 2;
69
+ pixelSha256: string;
70
+ width: number;
71
+ };
72
+ type TileflowIconCatalogIcon = {
73
+ id: string;
74
+ rendered: {
75
+ oneX: TileflowIconCatalogRenderedDensity;
76
+ twoX: TileflowIconCatalogRenderedDensity;
77
+ };
78
+ source: {
79
+ byteLength: number;
80
+ dimensions: {
81
+ height: number;
82
+ width: number;
83
+ } | null;
84
+ format: TileflowIconCatalogSourceFormat;
85
+ path: string;
86
+ };
87
+ };
88
+ type TileflowIconCatalog = {
89
+ compiledPackage: CompiledTileflowIconPackage;
90
+ directories: string[];
91
+ icons: TileflowIconCatalogIcon[];
92
+ insideWorkingTree: boolean;
93
+ replacements: TileflowIconReplacement[];
94
+ };
95
+ type TileflowIconReplacement = {
96
+ id: string;
97
+ replaced: string;
98
+ winner: string;
99
+ };
100
+ type TileflowIconCatalogMap = {
101
+ name: string;
102
+ icons: {
103
+ directories: string[];
104
+ iconIds: string[];
105
+ kind: 'directories';
106
+ label: string;
107
+ packageHash: string;
108
+ } | {
109
+ kind: 'none';
110
+ };
111
+ };
112
+ type TileflowIconCatalogInspection = {
113
+ catalogs: TileflowIconCatalog[];
114
+ maps: TileflowIconCatalogMap[];
115
+ };
116
+ declare class TileflowIconCompilationError extends Error {
117
+ readonly code: "ICON_INVALID";
118
+ readonly issues: TileflowIconCompilationIssue[];
119
+ readonly phase: "icon-compilation";
120
+ constructor(issues: TileflowIconCompilationIssue[]);
121
+ }
122
+ declare const iconFileExtensions: Set<string>;
123
+ declare function compileTileflowIconPackages(project: TileflowBuildCatalog, options: {
124
+ baseDirectory?: string;
125
+ cwd: string;
126
+ target: TileflowIconCompilationTarget;
127
+ }): Promise<CompileTileflowIconPackagesResult>;
128
+ declare function inspectTileflowIconCatalogs(project: TileflowBuildCatalog, options: InspectTileflowIconCatalogsOptions): Promise<TileflowIconCatalogInspection>;
129
+ declare function prepareTileflowCatalogIcons(project: TileflowBuildCatalog, options: {
130
+ assetBaseUrl: string;
131
+ baseDirectory?: string;
132
+ cwd: string;
133
+ }): Promise<PreparedTileflowCatalog>;
134
+ declare function getTileflowIconWatchPaths(project: TileflowBuildCatalog, cwd: string, baseDirectory?: string): Promise<string[]>;
135
+
136
+ export { type CompileTileflowIconPackagesResult, type CompiledTileflowIconPackage, type CompiledTileflowIconPackageFile, type InspectTileflowIconCatalogsOptions, type PreparedTileflowBuildCatalog, type PreparedTileflowCatalog, type TileflowBuildAsset, type TileflowIconCatalog, type TileflowIconCatalogAtlasRectangle, type TileflowIconCatalogIcon, type TileflowIconCatalogInspection, type TileflowIconCatalogMap, type TileflowIconCatalogRenderedDensity, type TileflowIconCatalogSourceFormat, TileflowIconCompilationError, type TileflowIconCompilationIssue, type TileflowIconCompilationTarget, type TileflowIconReplacement, type TileflowMapIconPackageBinding, type TileflowSourceCatalog, compileTileflowIconPackages, getTileflowIconWatchPaths, iconFileExtensions, inspectTileflowIconCatalogs, prepareTileflowCatalogIcons };
package/dist/icons.js ADDED
@@ -0,0 +1,17 @@
1
+ import {
2
+ TileflowIconCompilationError,
3
+ compileTileflowIconPackages,
4
+ getTileflowIconWatchPaths,
5
+ iconFileExtensions,
6
+ inspectTileflowIconCatalogs,
7
+ prepareTileflowCatalogIcons
8
+ } from "./chunk-BALG4DSG.js";
9
+ import "./chunk-BL3FK4GO.js";
10
+ export {
11
+ TileflowIconCompilationError,
12
+ compileTileflowIconPackages,
13
+ getTileflowIconWatchPaths,
14
+ iconFileExtensions,
15
+ inspectTileflowIconCatalogs,
16
+ prepareTileflowCatalogIcons
17
+ };