@metamesh/generator-sdk 0.1.0

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.
Files changed (96) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/LICENSE +200 -0
  3. package/README.md +187 -0
  4. package/dist/conditions.d.ts +35 -0
  5. package/dist/conditions.d.ts.map +1 -0
  6. package/dist/conditions.js +42 -0
  7. package/dist/conditions.js.map +1 -0
  8. package/dist/contracts.d.ts +160 -0
  9. package/dist/contracts.d.ts.map +1 -0
  10. package/dist/contracts.js +2 -0
  11. package/dist/contracts.js.map +1 -0
  12. package/dist/generated-parts.d.ts +17 -0
  13. package/dist/generated-parts.d.ts.map +1 -0
  14. package/dist/generated-parts.js +179 -0
  15. package/dist/generated-parts.js.map +1 -0
  16. package/dist/generator-module.d.ts +48 -0
  17. package/dist/generator-module.d.ts.map +1 -0
  18. package/dist/generator-module.js +112 -0
  19. package/dist/generator-module.js.map +1 -0
  20. package/dist/generator-package/constants.d.ts +16 -0
  21. package/dist/generator-package/constants.d.ts.map +1 -0
  22. package/dist/generator-package/constants.js +16 -0
  23. package/dist/generator-package/constants.js.map +1 -0
  24. package/dist/generator-package/errors.d.ts +6 -0
  25. package/dist/generator-package/errors.d.ts.map +1 -0
  26. package/dist/generator-package/errors.js +22 -0
  27. package/dist/generator-package/errors.js.map +1 -0
  28. package/dist/generator-package/index.d.ts +29 -0
  29. package/dist/generator-package/index.d.ts.map +1 -0
  30. package/dist/generator-package/index.js +44 -0
  31. package/dist/generator-package/index.js.map +1 -0
  32. package/dist/generator-package/schemas/common.schema.d.ts +13 -0
  33. package/dist/generator-package/schemas/common.schema.d.ts.map +1 -0
  34. package/dist/generator-package/schemas/common.schema.js +33 -0
  35. package/dist/generator-package/schemas/common.schema.js.map +1 -0
  36. package/dist/generator-package/schemas/condition.schema.d.ts +5 -0
  37. package/dist/generator-package/schemas/condition.schema.d.ts.map +1 -0
  38. package/dist/generator-package/schemas/condition.schema.js +27 -0
  39. package/dist/generator-package/schemas/condition.schema.js.map +1 -0
  40. package/dist/generator-package/schemas/definition.schema.d.ts +137 -0
  41. package/dist/generator-package/schemas/definition.schema.d.ts.map +1 -0
  42. package/dist/generator-package/schemas/definition.schema.js +19 -0
  43. package/dist/generator-package/schemas/definition.schema.js.map +1 -0
  44. package/dist/generator-package/schemas/descriptor.schema.d.ts +23 -0
  45. package/dist/generator-package/schemas/descriptor.schema.d.ts.map +1 -0
  46. package/dist/generator-package/schemas/descriptor.schema.js +17 -0
  47. package/dist/generator-package/schemas/descriptor.schema.js.map +1 -0
  48. package/dist/generator-package/schemas/manifest.schema.d.ts +6988 -0
  49. package/dist/generator-package/schemas/manifest.schema.d.ts.map +1 -0
  50. package/dist/generator-package/schemas/manifest.schema.js +34 -0
  51. package/dist/generator-package/schemas/manifest.schema.js.map +1 -0
  52. package/dist/generator-package/schemas/parameter.schema.d.ts +269 -0
  53. package/dist/generator-package/schemas/parameter.schema.d.ts.map +1 -0
  54. package/dist/generator-package/schemas/parameter.schema.js +103 -0
  55. package/dist/generator-package/schemas/parameter.schema.js.map +1 -0
  56. package/dist/generator-package/schemas/preset.schema.d.ts +16 -0
  57. package/dist/generator-package/schemas/preset.schema.d.ts.map +1 -0
  58. package/dist/generator-package/schemas/preset.schema.js +22 -0
  59. package/dist/generator-package/schemas/preset.schema.js.map +1 -0
  60. package/dist/generator-package/validate-definition.d.ts +8 -0
  61. package/dist/generator-package/validate-definition.d.ts.map +1 -0
  62. package/dist/generator-package/validate-definition.js +239 -0
  63. package/dist/generator-package/validate-definition.js.map +1 -0
  64. package/dist/generator-package/validate-manifest.d.ts +7 -0
  65. package/dist/generator-package/validate-manifest.d.ts.map +1 -0
  66. package/dist/generator-package/validate-manifest.js +47 -0
  67. package/dist/generator-package/validate-manifest.js.map +1 -0
  68. package/dist/generator-package/version-format.d.ts +5 -0
  69. package/dist/generator-package/version-format.d.ts.map +1 -0
  70. package/dist/generator-package/version-format.js +7 -0
  71. package/dist/generator-package/version-format.js.map +1 -0
  72. package/dist/generator-package/versions.d.ts +3 -0
  73. package/dist/generator-package/versions.d.ts.map +1 -0
  74. package/dist/generator-package/versions.js +36 -0
  75. package/dist/generator-package/versions.js.map +1 -0
  76. package/dist/generator-packages.d.ts +2 -0
  77. package/dist/generator-packages.d.ts.map +1 -0
  78. package/dist/generator-packages.js +2 -0
  79. package/dist/generator-packages.js.map +1 -0
  80. package/dist/index.d.ts +14 -0
  81. package/dist/index.d.ts.map +1 -0
  82. package/dist/index.js +7 -0
  83. package/dist/index.js.map +1 -0
  84. package/dist/parameters.d.ts +69 -0
  85. package/dist/parameters.d.ts.map +1 -0
  86. package/dist/parameters.js +532 -0
  87. package/dist/parameters.js.map +1 -0
  88. package/dist/source-visibility.d.ts +9 -0
  89. package/dist/source-visibility.d.ts.map +1 -0
  90. package/dist/source-visibility.js +2 -0
  91. package/dist/source-visibility.js.map +1 -0
  92. package/dist/url-state.d.ts +13 -0
  93. package/dist/url-state.d.ts.map +1 -0
  94. package/dist/url-state.js +137 -0
  95. package/dist/url-state.js.map +1 -0
  96. package/package.json +45 -0
@@ -0,0 +1,17 @@
1
+ import type { GeneratedPart } from "./contracts.js";
2
+ /** Aggregate limits applied before generated mesh data crosses the runtime boundary. */
3
+ export interface GeneratedPartsLimits {
4
+ readonly maxParts: number;
5
+ readonly maxVertices: number;
6
+ readonly maxTriangles: number;
7
+ readonly maxBytes: number;
8
+ }
9
+ export declare const DEFAULT_GENERATED_PARTS_LIMITS: GeneratedPartsLimits;
10
+ /**
11
+ * Strictly parses generated runtime output without copying transferable mesh buffers.
12
+ *
13
+ * This checks the renderer-neutral structure and aggregate resource limits. Geometric
14
+ * validity, such as non-degenerate or closed topology, remains a Geometry concern.
15
+ */
16
+ export declare function parseGeneratedParts(value: unknown, limitOverrides?: Partial<GeneratedPartsLimits>): readonly GeneratedPart[];
17
+ //# sourceMappingURL=generated-parts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generated-parts.d.ts","sourceRoot":"","sources":["../src/generated-parts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAOpD,wFAAwF;AACxF,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,eAAO,MAAM,8BAA8B,EAAE,oBAK3C,CAAC;AAwLH;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,OAAO,EACd,cAAc,GAAE,OAAO,CAAC,oBAAoB,CAAM,GACjD,SAAS,aAAa,EAAE,CAiC1B"}
@@ -0,0 +1,179 @@
1
+ const GENERATED_PART_FIELDS = new Set(["id", "positions", "indices", "normals", "color"]);
2
+ const GENERATED_PART_ID_PATTERN = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;
3
+ const GENERATED_PART_COLOR_PATTERN = /^#[\da-f]{6}$/i;
4
+ const MAX_GENERATED_PART_ID_LENGTH = 64;
5
+ export const DEFAULT_GENERATED_PARTS_LIMITS = Object.freeze({
6
+ maxParts: 64,
7
+ maxVertices: 1_000_000,
8
+ maxTriangles: 2_000_000,
9
+ maxBytes: 96 * 1024 * 1024,
10
+ });
11
+ function isRecord(value) {
12
+ return typeof value === "object" && value !== null && !Array.isArray(value);
13
+ }
14
+ function ownDataValue(value, key, path) {
15
+ const descriptor = Object.getOwnPropertyDescriptor(value, key);
16
+ if (descriptor === undefined || !("value" in descriptor)) {
17
+ throw new TypeError(`${path}.${key} must be an own data field.`);
18
+ }
19
+ return descriptor.value;
20
+ }
21
+ function positiveInteger(value, path) {
22
+ if (!Number.isSafeInteger(value) || value <= 0) {
23
+ throw new TypeError(`${path} must be a positive safe integer.`);
24
+ }
25
+ return value;
26
+ }
27
+ function limitMessage(limit, singular, plural = `${singular}s`) {
28
+ return `Generated output may contain at most ${limit} ${limit === 1 ? singular : plural}.`;
29
+ }
30
+ function resolveLimits(overrides) {
31
+ return {
32
+ maxParts: positiveInteger(overrides.maxParts ?? DEFAULT_GENERATED_PARTS_LIMITS.maxParts, "limits.maxParts"),
33
+ maxVertices: positiveInteger(overrides.maxVertices ?? DEFAULT_GENERATED_PARTS_LIMITS.maxVertices, "limits.maxVertices"),
34
+ maxTriangles: positiveInteger(overrides.maxTriangles ?? DEFAULT_GENERATED_PARTS_LIMITS.maxTriangles, "limits.maxTriangles"),
35
+ maxBytes: positiveInteger(overrides.maxBytes ?? DEFAULT_GENERATED_PARTS_LIMITS.maxBytes, "limits.maxBytes"),
36
+ };
37
+ }
38
+ function parsePart(value, index, limits, totals) {
39
+ const path = `Generated part ${index + 1}`;
40
+ if (!isRecord(value)) {
41
+ throw new TypeError(`${path} must be an object.`);
42
+ }
43
+ const unknownKey = Reflect.ownKeys(value).find((key) => typeof key !== "string" || !GENERATED_PART_FIELDS.has(key));
44
+ if (unknownKey !== undefined) {
45
+ throw new TypeError(`${path} contains unknown field "${String(unknownKey)}".`);
46
+ }
47
+ const id = ownDataValue(value, "id", path);
48
+ if (typeof id !== "string" ||
49
+ id.length > MAX_GENERATED_PART_ID_LENGTH ||
50
+ !GENERATED_PART_ID_PATTERN.test(id)) {
51
+ throw new TypeError(`${path}.id must be a lowercase kebab-case identifier of at most ${MAX_GENERATED_PART_ID_LENGTH} characters.`);
52
+ }
53
+ const positions = ownDataValue(value, "positions", path);
54
+ if (!(positions instanceof Float32Array)) {
55
+ throw new TypeError(`${path}.positions must be a Float32Array.`);
56
+ }
57
+ if (positions.length === 0 || positions.length % 3 !== 0) {
58
+ throw new TypeError(`${path}.positions must contain at least one complete XYZ vertex.`);
59
+ }
60
+ const indices = ownDataValue(value, "indices", path);
61
+ if (!(indices instanceof Uint32Array)) {
62
+ throw new TypeError(`${path}.indices must be a Uint32Array.`);
63
+ }
64
+ if (indices.length === 0 || indices.length % 3 !== 0) {
65
+ throw new TypeError(`${path}.indices must contain at least one complete triangle.`);
66
+ }
67
+ const normalsValue = Object.hasOwn(value, "normals")
68
+ ? ownDataValue(value, "normals", path)
69
+ : undefined;
70
+ if (normalsValue !== undefined && !(normalsValue instanceof Float32Array)) {
71
+ throw new TypeError(`${path}.normals must be a Float32Array when provided.`);
72
+ }
73
+ const normals = normalsValue;
74
+ if (normals !== undefined && normals.length !== positions.length) {
75
+ throw new TypeError(`${path}.normals must contain one XYZ value per position vertex.`);
76
+ }
77
+ const colorValue = Object.hasOwn(value, "color") ? ownDataValue(value, "color", path) : undefined;
78
+ let color;
79
+ if (colorValue === undefined) {
80
+ color = undefined;
81
+ }
82
+ else {
83
+ if (typeof colorValue !== "string" || !GENERATED_PART_COLOR_PATTERN.test(colorValue)) {
84
+ throw new TypeError(`${path}.color must be a six-digit hex color.`);
85
+ }
86
+ color = colorValue.toLowerCase();
87
+ }
88
+ const vertexCount = positions.length / 3;
89
+ const triangleCount = indices.length / 3;
90
+ const views = normals === undefined ? [positions, indices] : [positions, indices, normals];
91
+ const buffers = new Set();
92
+ for (const view of views) {
93
+ if (!(view.buffer instanceof ArrayBuffer)) {
94
+ throw new TypeError(`${path} mesh data must use transferable ArrayBuffer storage.`);
95
+ }
96
+ if (!totals.buffers.has(view.buffer))
97
+ buffers.add(view.buffer);
98
+ }
99
+ const byteCount = [...buffers].reduce((total, buffer) => total + buffer.byteLength, 0);
100
+ if (totals.vertices + vertexCount > limits.maxVertices) {
101
+ throw new TypeError(limitMessage(limits.maxVertices, "vertex", "vertices"));
102
+ }
103
+ if (totals.triangles + triangleCount > limits.maxTriangles) {
104
+ throw new TypeError(limitMessage(limits.maxTriangles, "triangle"));
105
+ }
106
+ if (totals.bytes + byteCount > limits.maxBytes) {
107
+ throw new TypeError(limitMessage(limits.maxBytes, "mesh byte"));
108
+ }
109
+ for (let coordinate = 0; coordinate < positions.length; coordinate += 1) {
110
+ if (!Number.isFinite(positions[coordinate])) {
111
+ throw new TypeError(`${path}.positions[${coordinate}] must be finite.`);
112
+ }
113
+ }
114
+ if (normals !== undefined) {
115
+ for (let coordinate = 0; coordinate < normals.length; coordinate += 1) {
116
+ if (!Number.isFinite(normals[coordinate])) {
117
+ throw new TypeError(`${path}.normals[${coordinate}] must be finite.`);
118
+ }
119
+ }
120
+ }
121
+ for (let offset = 0; offset < indices.length; offset += 1) {
122
+ if (indices[offset] >= vertexCount) {
123
+ throw new TypeError(`${path}.indices[${offset}] must reference an existing vertex.`);
124
+ }
125
+ }
126
+ const part = Object.freeze({
127
+ id,
128
+ positions,
129
+ indices,
130
+ ...(normals === undefined ? {} : { normals }),
131
+ ...(color === undefined ? {} : { color }),
132
+ });
133
+ return {
134
+ part,
135
+ vertices: vertexCount,
136
+ triangles: triangleCount,
137
+ bytes: byteCount,
138
+ buffers: [...buffers],
139
+ };
140
+ }
141
+ /**
142
+ * Strictly parses generated runtime output without copying transferable mesh buffers.
143
+ *
144
+ * This checks the renderer-neutral structure and aggregate resource limits. Geometric
145
+ * validity, such as non-degenerate or closed topology, remains a Geometry concern.
146
+ */
147
+ export function parseGeneratedParts(value, limitOverrides = {}) {
148
+ const limits = resolveLimits(limitOverrides);
149
+ if (!Array.isArray(value)) {
150
+ throw new TypeError("Generated output must be an array of parts.");
151
+ }
152
+ if (value.length === 0) {
153
+ throw new TypeError("Generated output must contain at least one part.");
154
+ }
155
+ if (value.length > limits.maxParts) {
156
+ throw new TypeError(limitMessage(limits.maxParts, "part"));
157
+ }
158
+ const ids = new Set();
159
+ const parts = [];
160
+ let vertices = 0;
161
+ let triangles = 0;
162
+ let bytes = 0;
163
+ const buffers = new Set();
164
+ for (let index = 0; index < value.length; index += 1) {
165
+ const parsed = parsePart(value[index], index, limits, { vertices, triangles, bytes, buffers });
166
+ if (ids.has(parsed.part.id)) {
167
+ throw new TypeError(`Generated part ${index + 1}.id duplicates "${parsed.part.id}".`);
168
+ }
169
+ ids.add(parsed.part.id);
170
+ vertices += parsed.vertices;
171
+ triangles += parsed.triangles;
172
+ bytes += parsed.bytes;
173
+ for (const buffer of parsed.buffers)
174
+ buffers.add(buffer);
175
+ parts.push(parsed.part);
176
+ }
177
+ return Object.freeze(parts);
178
+ }
179
+ //# sourceMappingURL=generated-parts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generated-parts.js","sourceRoot":"","sources":["../src/generated-parts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ import type { GeneratedPart, GeneratorDefinition, GeneratorParams, GeneratorValidator, ParameterIssue, ParameterValues } from "./contracts.js";
2
+ import { GENERATOR_PACKAGE_FORMAT_VERSION } from "./generator-package/constants.js";
3
+ type CanonicalGenerate<D extends GeneratorDefinition, Context> = (parameters: GeneratorParams<D>, context: Context) => readonly GeneratedPart[];
4
+ type StrictGenerate<Context> = (parameters: ParameterValues, context: Context) => readonly GeneratedPart[];
5
+ interface GeneratorModuleIdentity<D extends GeneratorDefinition> {
6
+ readonly formatVersion: typeof GENERATOR_PACKAGE_FORMAT_VERSION;
7
+ readonly generatorId: D["id"];
8
+ readonly version: D["version"];
9
+ }
10
+ /** The exact five-export module assembled from strongly typed author callbacks. */
11
+ export interface GeneratorModule<D extends GeneratorDefinition = GeneratorDefinition, Context = unknown> extends GeneratorModuleIdentity<D> {
12
+ readonly validate: GeneratorValidator<D>;
13
+ readonly generate: CanonicalGenerate<D, Context>;
14
+ }
15
+ /** A host-owned module lane that strictly decodes parameter maps before invocation. */
16
+ export interface StrictGeneratorModule<D extends GeneratorDefinition = GeneratorDefinition, Context = unknown> extends GeneratorModuleIdentity<D> {
17
+ readonly validate: (parameters: ParameterValues) => readonly ParameterIssue[];
18
+ readonly generate: StrictGenerate<Context>;
19
+ }
20
+ /** The canonical and strict invocation lanes captured from an evaluated module. */
21
+ export interface ParsedGeneratorModule<D extends GeneratorDefinition = GeneratorDefinition, Context = unknown> {
22
+ readonly canonical: GeneratorModule<D, Context>;
23
+ readonly strict: StrictGeneratorModule<D, Context>;
24
+ }
25
+ export interface GeneratorModuleOptions<D extends GeneratorDefinition, Context> {
26
+ readonly definition: D;
27
+ readonly validate: GeneratorValidator<D>;
28
+ readonly generate: CanonicalGenerate<D, Context>;
29
+ }
30
+ /**
31
+ * Creates the complete compiled-module surface from one typed definition.
32
+ *
33
+ * The returned callbacks accept canonical parameters so this authoring helper stays small in
34
+ * self-contained release bundles. Hosts use `parseGeneratorModule()` at untrusted boundaries.
35
+ */
36
+ export declare function defineGeneratorModule<const D extends GeneratorDefinition, Context>({ definition, generate, validate, }: GeneratorModuleOptions<D, Context>): GeneratorModule<D, Context>;
37
+ /** Checks an evaluated ESM namespace against its authoritative manifest definition. */
38
+ export declare function isGeneratorModule<const D extends GeneratorDefinition, Context = unknown>(value: unknown, definition: D): value is GeneratorModule<D, Context>;
39
+ /**
40
+ * Parses an evaluated ESM namespace and snapshots both invocation lanes.
41
+ *
42
+ * The canonical lane is for host-prepared `GeneratorParams`; the strict lane is the only lane that
43
+ * accepts boundary `ParameterValues` and decodes them before invoking evaluated code. Function
44
+ * result values remain host-validated because JavaScript cannot prove them without execution.
45
+ */
46
+ export declare function parseGeneratorModule<const D extends GeneratorDefinition, Context = unknown>(value: unknown, definition: D): ParsedGeneratorModule<D, Context>;
47
+ export {};
48
+ //# sourceMappingURL=generator-module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator-module.d.ts","sourceRoot":"","sources":["../src/generator-module.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,112 @@
1
+ import { GENERATOR_PACKAGE_FORMAT_VERSION } from "./generator-package/constants.js";
2
+ import { createParamCodec } from "./parameters.js";
3
+ const EXPORT_NAMES = ["formatVersion", "generate", "generatorId", "validate", "version"];
4
+ const hasExactExports = (value) => {
5
+ const names = Object.keys(value).sort();
6
+ return (names.length === EXPORT_NAMES.length &&
7
+ names.every((name, index) => name === EXPORT_NAMES[index]));
8
+ };
9
+ function moduleProblem(value, definition) {
10
+ if (typeof value !== "object" || value === null || Array.isArray(value)) {
11
+ return "must be an object";
12
+ }
13
+ const candidate = value;
14
+ if (!hasExactExports(candidate)) {
15
+ return `must export exactly ${EXPORT_NAMES.join(", ")}`;
16
+ }
17
+ if (candidate.formatVersion !== GENERATOR_PACKAGE_FORMAT_VERSION) {
18
+ return `formatVersion must be ${GENERATOR_PACKAGE_FORMAT_VERSION}`;
19
+ }
20
+ if (candidate.generatorId !== definition.id) {
21
+ return `generatorId must be ${JSON.stringify(definition.id)}`;
22
+ }
23
+ if (candidate.version !== definition.version) {
24
+ return `version must be ${JSON.stringify(definition.version)}`;
25
+ }
26
+ if (typeof candidate.validate !== "function")
27
+ return "validate must be a function";
28
+ if (typeof candidate.generate !== "function")
29
+ return "generate must be a function";
30
+ return undefined;
31
+ }
32
+ function requireSynchronousArray(value, operation) {
33
+ if (!Array.isArray(value)) {
34
+ throw new TypeError(`Generator ${operation}() must return an array synchronously.`);
35
+ }
36
+ return value;
37
+ }
38
+ function assembleCanonicalModule(definition, validate, generate) {
39
+ return Object.freeze({
40
+ formatVersion: GENERATOR_PACKAGE_FORMAT_VERSION,
41
+ generate,
42
+ generatorId: definition.id,
43
+ validate,
44
+ version: definition.version,
45
+ });
46
+ }
47
+ function checkedCanonicalModule(definition, validate, generate) {
48
+ return assembleCanonicalModule(definition, (parameters) => requireSynchronousArray(validate(parameters), "validate"), (parameters, context) => requireSynchronousArray(generate(parameters, context), "generate"));
49
+ }
50
+ function strictModule(definition, canonical) {
51
+ const codec = createParamCodec(definition);
52
+ return Object.freeze({
53
+ formatVersion: canonical.formatVersion,
54
+ generate(parameters, context) {
55
+ return canonical.generate(codec.parse(parameters), context);
56
+ },
57
+ generatorId: canonical.generatorId,
58
+ validate(parameters) {
59
+ return canonical.validate(codec.parse(parameters));
60
+ },
61
+ version: canonical.version,
62
+ });
63
+ }
64
+ /**
65
+ * Creates the complete compiled-module surface from one typed definition.
66
+ *
67
+ * The returned callbacks accept canonical parameters so this authoring helper stays small in
68
+ * self-contained release bundles. Hosts use `parseGeneratorModule()` at untrusted boundaries.
69
+ */
70
+ export function defineGeneratorModule({ definition, generate, validate, }) {
71
+ return assembleCanonicalModule(definition, validate, generate);
72
+ }
73
+ /** Checks an evaluated ESM namespace against its authoritative manifest definition. */
74
+ export function isGeneratorModule(value, definition) {
75
+ try {
76
+ return moduleProblem(value, definition) === undefined;
77
+ }
78
+ catch {
79
+ return false;
80
+ }
81
+ }
82
+ /**
83
+ * Parses an evaluated ESM namespace and snapshots both invocation lanes.
84
+ *
85
+ * The canonical lane is for host-prepared `GeneratorParams`; the strict lane is the only lane that
86
+ * accepts boundary `ParameterValues` and decodes them before invoking evaluated code. Function
87
+ * result values remain host-validated because JavaScript cannot prove them without execution.
88
+ */
89
+ export function parseGeneratorModule(value, definition) {
90
+ let problem;
91
+ try {
92
+ problem = moduleProblem(value, definition);
93
+ }
94
+ catch {
95
+ problem = "exports could not be inspected";
96
+ }
97
+ if (problem !== undefined)
98
+ throw new Error(`Invalid Generator module: ${problem}.`);
99
+ try {
100
+ const candidate = value;
101
+ const validate = candidate.validate;
102
+ const generate = candidate.generate;
103
+ if (typeof validate !== "function" || typeof generate !== "function")
104
+ throw new TypeError();
105
+ const canonical = checkedCanonicalModule(definition, validate, generate);
106
+ return Object.freeze({ canonical, strict: strictModule(definition, canonical) });
107
+ }
108
+ catch {
109
+ throw new Error("Invalid Generator module: exports could not be read.");
110
+ }
111
+ }
112
+ //# sourceMappingURL=generator-module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator-module.js","sourceRoot":"","sources":["../src/generator-module.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ export declare const METAMESH_RUNTIME_VERSION = "1.0.0";
2
+ export declare const GENERATOR_PACKAGE_FORMAT_VERSION = 1;
3
+ export declare const MAX_GENERATOR_PACKAGE_BYTES: number;
4
+ /** Portable metadata limits enforced before package content reaches Studio. */
5
+ export declare const MAX_GENERATOR_ID_LENGTH = 120;
6
+ export declare const MAX_METADATA_TEXT_LENGTH = 4096;
7
+ export declare const MAX_TEXT_PARAMETER_LENGTH: number;
8
+ export declare const MAX_PARAMETER_GROUPS = 64;
9
+ export declare const MAX_PARAMETERS = 256;
10
+ export declare const MAX_PARAMETER_OPTIONS = 512;
11
+ export declare const MAX_ARRAY_ITEMS = 1024;
12
+ export declare const MAX_GENERATOR_PRESETS = 256;
13
+ export declare const MAX_CONDITION_DEPTH = 8;
14
+ export declare const MAX_CONDITION_BRANCHES = 32;
15
+ export declare const MAX_DESCRIPTOR_LIST_ITEMS = 128;
16
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/generator-package/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,wBAAwB,UAAU,CAAC;AAChD,eAAO,MAAM,gCAAgC,IAAI,CAAC;AAClD,eAAO,MAAM,2BAA2B,QAAkB,CAAC;AAE3D,+EAA+E;AAC/E,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAC3C,eAAO,MAAM,wBAAwB,OAAQ,CAAC;AAC9C,eAAO,MAAM,yBAAyB,QAAY,CAAC;AACnD,eAAO,MAAM,oBAAoB,KAAK,CAAC;AACvC,eAAO,MAAM,cAAc,MAAM,CAAC;AAClC,eAAO,MAAM,qBAAqB,MAAM,CAAC;AACzC,eAAO,MAAM,eAAe,OAAQ,CAAC;AACrC,eAAO,MAAM,qBAAqB,MAAM,CAAC;AACzC,eAAO,MAAM,mBAAmB,IAAI,CAAC;AACrC,eAAO,MAAM,sBAAsB,KAAK,CAAC;AACzC,eAAO,MAAM,yBAAyB,MAAM,CAAC"}
@@ -0,0 +1,16 @@
1
+ export const METAMESH_RUNTIME_VERSION = "1.0.0";
2
+ export const GENERATOR_PACKAGE_FORMAT_VERSION = 1;
3
+ export const MAX_GENERATOR_PACKAGE_BYTES = 5 * 1024 * 1024;
4
+ /** Portable metadata limits enforced before package content reaches Studio. */
5
+ export const MAX_GENERATOR_ID_LENGTH = 120;
6
+ export const MAX_METADATA_TEXT_LENGTH = 4_096;
7
+ export const MAX_TEXT_PARAMETER_LENGTH = 64 * 1024;
8
+ export const MAX_PARAMETER_GROUPS = 64;
9
+ export const MAX_PARAMETERS = 256;
10
+ export const MAX_PARAMETER_OPTIONS = 512;
11
+ export const MAX_ARRAY_ITEMS = 1_024;
12
+ export const MAX_GENERATOR_PRESETS = 256;
13
+ export const MAX_CONDITION_DEPTH = 8;
14
+ export const MAX_CONDITION_BRANCHES = 32;
15
+ export const MAX_DESCRIPTOR_LIST_ITEMS = 128;
16
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/generator-package/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,wBAAwB,GAAG,OAAO,CAAC;AAChD,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,CAAC;AAClD,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AAE3D,+EAA+E;AAC/E,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAG,CAAC;AAC3C,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,CAAC;AAC9C,MAAM,CAAC,MAAM,yBAAyB,GAAG,EAAE,GAAG,IAAI,CAAC;AACnD,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,CAAC;AACvC,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,CAAC;AAClC,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,CAAC;AACzC,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,CAAC;AACrC,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,CAAC;AACzC,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC;AACrC,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAE,CAAC;AACzC,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAG,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { ZodError } from "zod";
2
+ export declare class GeneratorPackageValidationError extends Error {
3
+ constructor(message: string);
4
+ }
5
+ export declare function validationErrorFromZod(context: string, error: ZodError): GeneratorPackageValidationError;
6
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/generator-package/errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAY,MAAM,KAAK,CAAC;AAE9C,qBAAa,+BAAgC,SAAQ,KAAK;gBAC5C,OAAO,EAAE,MAAM;CAI5B;AAUD,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,QAAQ,GACd,+BAA+B,CAOjC"}
@@ -0,0 +1,22 @@
1
+ export class GeneratorPackageValidationError extends Error {
2
+ constructor(message) {
3
+ super(message);
4
+ this.name = "GeneratorPackageValidationError";
5
+ }
6
+ }
7
+ function formatPath(path) {
8
+ return path.reduce((result, segment) => {
9
+ if (typeof segment === "number")
10
+ return `${result}[${segment}]`;
11
+ const key = String(segment);
12
+ return result === "" ? key : `${result}.${key}`;
13
+ }, "");
14
+ }
15
+ export function validationErrorFromZod(context, error) {
16
+ const issue = error.issues[0];
17
+ if (issue === undefined)
18
+ return new GeneratorPackageValidationError(`${context} is invalid.`);
19
+ const path = formatPath(issue.path);
20
+ return new GeneratorPackageValidationError(`${context}${path === "" ? "" : `.${path}`}: ${issue.message}`);
21
+ }
22
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/generator-package/errors.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,+BAAgC,SAAQ,KAAK;IACxD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,iCAAiC,CAAC;IAChD,CAAC;CACF;AAED,SAAS,UAAU,CAAC,IAAsB;IACxC,OAAO,IAAI,CAAC,MAAM,CAAS,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE;QAC7C,IAAI,OAAO,OAAO,KAAK,QAAQ;YAAE,OAAO,GAAG,MAAM,IAAI,OAAO,GAAG,CAAC;QAChE,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;QAC5B,OAAO,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,GAAG,EAAE,CAAC;IAClD,CAAC,EAAE,EAAE,CAAC,CAAC;AACT,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,OAAe,EACf,KAAe;IAEf,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC9B,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,IAAI,+BAA+B,CAAC,GAAG,OAAO,cAAc,CAAC,CAAC;IAC9F,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACpC,OAAO,IAAI,+BAA+B,CACxC,GAAG,OAAO,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,OAAO,EAAE,CAC/D,CAAC;AACJ,CAAC"}
@@ -0,0 +1,29 @@
1
+ import { type GeneratorDefinition } from "./schemas/definition.schema.js";
2
+ import { type GeneratorDescriptor } from "./schemas/descriptor.schema.js";
3
+ import { type GeneratorPackageManifest } from "./schemas/manifest.schema.js";
4
+ export * from "./constants.js";
5
+ export * from "./errors.js";
6
+ export * from "./versions.js";
7
+ export type { GeneratorDescriptor } from "./schemas/descriptor.schema.js";
8
+ export type { GeneratorAccess, GeneratorPackageManifest, GeneratorPackageSource, } from "./schemas/manifest.schema.js";
9
+ export type { GeneratorPreset } from "./schemas/preset.schema.js";
10
+ export { validateGeneratorPresets } from "./validate-manifest.js";
11
+ export interface InstalledGenerator {
12
+ readonly generatorId: string;
13
+ readonly installedAt: string;
14
+ readonly integrity: string;
15
+ readonly source: "bundled" | "downloaded";
16
+ readonly version: string;
17
+ }
18
+ export type GeneratorRuntimeReference = {
19
+ readonly kind: "bundled";
20
+ readonly version: string;
21
+ } | {
22
+ readonly kind: "installed";
23
+ readonly version: string;
24
+ };
25
+ /** Parses untrusted generator metadata and enforces its semantic invariants. */
26
+ export declare function parseGeneratorDefinition(value: unknown): GeneratorDefinition;
27
+ export declare function parseGeneratorPackageManifest(value: unknown): GeneratorPackageManifest;
28
+ export declare function parseGeneratorDescriptor(value: unknown): GeneratorDescriptor;
29
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/generator-package/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,KAAK,mBAAmB,EACzB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAEL,KAAK,mBAAmB,EACzB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAEL,KAAK,wBAAwB,EAC9B,MAAM,8BAA8B,CAAC;AAItC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,YAAY,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,YAAY,EACV,eAAe,EACf,wBAAwB,EACxB,sBAAsB,GACvB,MAAM,8BAA8B,CAAC;AACtC,YAAY,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAElE,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,YAAY,CAAC;IAC1C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,MAAM,yBAAyB,GACjC;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACtD;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAW7D,gFAAgF;AAChF,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,mBAAmB,CAI5E;AAED,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,OAAO,GAAG,wBAAwB,CAetF;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,mBAAmB,CAE5E"}
@@ -0,0 +1,44 @@
1
+ import { z } from "zod";
2
+ import { GENERATOR_PACKAGE_FORMAT_VERSION } from "./constants.js";
3
+ import { GeneratorPackageValidationError, validationErrorFromZod } from "./errors.js";
4
+ import { generatorDefinitionSchema, } from "./schemas/definition.schema.js";
5
+ import { generatorDescriptorSchema, } from "./schemas/descriptor.schema.js";
6
+ import { generatorPackageManifestSchema, } from "./schemas/manifest.schema.js";
7
+ import { validateDefinition } from "./validate-definition.js";
8
+ import { validateManifestIdentity } from "./validate-manifest.js";
9
+ export * from "./constants.js";
10
+ export * from "./errors.js";
11
+ export * from "./versions.js";
12
+ export { validateGeneratorPresets } from "./validate-manifest.js";
13
+ function parseWithPublicError(context, schema, value) {
14
+ try {
15
+ return schema.parse(value);
16
+ }
17
+ catch (error) {
18
+ if (error instanceof z.ZodError)
19
+ throw validationErrorFromZod(context, error);
20
+ throw error;
21
+ }
22
+ }
23
+ /** Parses untrusted generator metadata and enforces its semantic invariants. */
24
+ export function parseGeneratorDefinition(value) {
25
+ const definition = parseWithPublicError("definition", generatorDefinitionSchema, value);
26
+ validateDefinition(definition);
27
+ return definition;
28
+ }
29
+ export function parseGeneratorPackageManifest(value) {
30
+ if (typeof value === "object" &&
31
+ value !== null &&
32
+ !Array.isArray(value) &&
33
+ value.formatVersion !== GENERATOR_PACKAGE_FORMAT_VERSION) {
34
+ throw new GeneratorPackageValidationError(`Unsupported generator package format "${String(value.formatVersion)}".`);
35
+ }
36
+ const manifest = parseWithPublicError("manifest", generatorPackageManifestSchema, value);
37
+ validateDefinition(manifest.definition);
38
+ validateManifestIdentity(manifest);
39
+ return manifest;
40
+ }
41
+ export function parseGeneratorDescriptor(value) {
42
+ return parseWithPublicError("descriptor", generatorDescriptorSchema, value);
43
+ }
44
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generator-package/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,gCAAgC,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,+BAA+B,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACtF,OAAO,EACL,yBAAyB,GAE1B,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,yBAAyB,GAE1B,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,8BAA8B,GAE/B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAElE,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAQ9B,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAclE,SAAS,oBAAoB,CAAI,OAAe,EAAE,MAAoB,EAAE,KAAc;IACpF,IAAI,CAAC;QACH,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,CAAC,CAAC,QAAQ;YAAE,MAAM,sBAAsB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC9E,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,wBAAwB,CAAC,KAAc;IACrD,MAAM,UAAU,GAAG,oBAAoB,CAAC,YAAY,EAAE,yBAAyB,EAAE,KAAK,CAAC,CAAC;IACxF,kBAAkB,CAAC,UAAU,CAAC,CAAC;IAC/B,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,KAAc;IAC1D,IACE,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACpB,KAAqC,CAAC,aAAa,KAAK,gCAAgC,EACzF,CAAC;QACD,MAAM,IAAI,+BAA+B,CACvC,yCAAyC,MAAM,CAAE,KAAqC,CAAC,aAAa,CAAC,IAAI,CAC1G,CAAC;IACJ,CAAC;IACD,MAAM,QAAQ,GAAG,oBAAoB,CAAC,UAAU,EAAE,8BAA8B,EAAE,KAAK,CAAC,CAAC;IACzF,kBAAkB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IACxC,wBAAwB,CAAC,QAAQ,CAAC,CAAC;IACnC,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,KAAc;IACrD,OAAO,oBAAoB,CAAC,YAAY,EAAE,yBAAyB,EAAE,KAAK,CAAC,CAAC;AAC9E,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { z } from "zod";
2
+ export declare const boundedStringSchema: z.ZodString;
3
+ export declare const textParameterStringSchema: z.ZodString;
4
+ export declare const nonEmptyStringSchema: z.ZodString;
5
+ export declare const safeIdSchema: z.ZodString;
6
+ export declare const semverSchema: z.ZodString;
7
+ export declare const finiteNumberSchema: z.ZodNumber;
8
+ export declare const hexColorSchema: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
9
+ export declare const nonNegativeIntegerSchema: z.ZodNumber;
10
+ export declare const itemCountSchema: z.ZodNumber;
11
+ export declare const optionCountSchema: z.ZodNumber;
12
+ export declare const isoDateSchema: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
13
+ //# sourceMappingURL=common.schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.schema.d.ts","sourceRoot":"","sources":["../../../src/generator-package/schemas/common.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAcxB,eAAO,MAAM,mBAAmB,aAA2C,CAAC;AAC5E,eAAO,MAAM,yBAAyB,aAA4C,CAAC;AACnF,eAAO,MAAM,oBAAoB,aAAoC,CAAC;AACtE,eAAO,MAAM,YAAY,aAM2D,CAAC;AACrF,eAAO,MAAM,YAAY,aAG8C,CAAC;AACxE,eAAO,MAAM,kBAAkB,aAAsB,CAAC;AACtD,eAAO,MAAM,cAAc,wDAGiB,CAAC;AAC7C,eAAO,MAAM,wBAAwB,aAAiC,CAAC;AACvE,eAAO,MAAM,eAAe,aAAgD,CAAC;AAC7E,eAAO,MAAM,iBAAiB,aAAsD,CAAC;AACrF,eAAO,MAAM,aAAa,wDAI4B,CAAC"}
@@ -0,0 +1,33 @@
1
+ import { z } from "zod";
2
+ import { MAX_ARRAY_ITEMS, MAX_GENERATOR_ID_LENGTH, MAX_METADATA_TEXT_LENGTH, MAX_PARAMETER_OPTIONS, MAX_TEXT_PARAMETER_LENGTH, } from "../constants.js";
3
+ import { semanticVersionPattern } from "../version-format.js";
4
+ const SAFE_ID_PATTERN = /^[A-Za-z0-9][A-Za-z0-9._/-]*$/;
5
+ const RESERVED_RECORD_KEYS = new Set(["__proto__", "constructor", "prototype"]);
6
+ export const boundedStringSchema = z.string().max(MAX_METADATA_TEXT_LENGTH);
7
+ export const textParameterStringSchema = z.string().max(MAX_TEXT_PARAMETER_LENGTH);
8
+ export const nonEmptyStringSchema = boundedStringSchema.trim().min(1);
9
+ export const safeIdSchema = z
10
+ .string()
11
+ .trim()
12
+ .min(1)
13
+ .max(MAX_GENERATOR_ID_LENGTH)
14
+ .regex(SAFE_ID_PATTERN, "must use letters, numbers, '.', '_', '/', or '-'")
15
+ .refine((value) => !RESERVED_RECORD_KEYS.has(value), "uses a reserved object key");
16
+ export const semverSchema = z
17
+ .string()
18
+ .max(128)
19
+ .regex(semanticVersionPattern, "must use the canonical x.y.z format");
20
+ export const finiteNumberSchema = z.number().finite();
21
+ export const hexColorSchema = z
22
+ .string()
23
+ .regex(/^#[\da-f]{6}$/i, "must be a six-digit hex color")
24
+ .transform((value) => value.toLowerCase());
25
+ export const nonNegativeIntegerSchema = z.number().int().nonnegative();
26
+ export const itemCountSchema = nonNegativeIntegerSchema.max(MAX_ARRAY_ITEMS);
27
+ export const optionCountSchema = nonNegativeIntegerSchema.max(MAX_PARAMETER_OPTIONS);
28
+ export const isoDateSchema = z
29
+ .string()
30
+ .max(64)
31
+ .datetime({ offset: true })
32
+ .transform((value) => new Date(value).toISOString());
33
+ //# sourceMappingURL=common.schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.schema.js","sourceRoot":"","sources":["../../../src/generator-package/schemas/common.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EACL,eAAe,EACf,uBAAuB,EACvB,wBAAwB,EACxB,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,MAAM,eAAe,GAAG,+BAA+B,CAAC;AACxD,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC;AAEhF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;AAC5E,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;AACnF,MAAM,CAAC,MAAM,oBAAoB,GAAG,mBAAmB,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACtE,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC;KAC1B,MAAM,EAAE;KACR,IAAI,EAAE;KACN,GAAG,CAAC,CAAC,CAAC;KACN,GAAG,CAAC,uBAAuB,CAAC;KAC5B,KAAK,CAAC,eAAe,EAAE,kDAAkD,CAAC;KAC1E,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,oBAAoB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,4BAA4B,CAAC,CAAC;AACrF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC;KAC1B,MAAM,EAAE;KACR,GAAG,CAAC,GAAG,CAAC;KACR,KAAK,CAAC,sBAAsB,EAAE,qCAAqC,CAAC,CAAC;AACxE,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC;AACtD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC;KAC5B,MAAM,EAAE;KACR,KAAK,CAAC,gBAAgB,EAAE,+BAA+B,CAAC;KACxD,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;AAC7C,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC;AACvE,MAAM,CAAC,MAAM,eAAe,GAAG,wBAAwB,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;AAC7E,MAAM,CAAC,MAAM,iBAAiB,GAAG,wBAAwB,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;AACrF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC;KAC3B,MAAM,EAAE;KACR,GAAG,CAAC,EAAE,CAAC;KACP,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;KAC1B,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { z } from "zod";
2
+ import type { ConditionExpression } from "../../conditions.js";
3
+ /** A finite schema avoids recursive parsing of pathologically deep package data. */
4
+ export declare const conditionExpressionSchema: z.ZodType<ConditionExpression, unknown, z.core.$ZodTypeInternals<ConditionExpression, unknown>>;
5
+ //# sourceMappingURL=condition.schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"condition.schema.d.ts","sourceRoot":"","sources":["../../../src/generator-package/schemas/condition.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AA2B/D,oFAAoF;AACpF,eAAO,MAAM,yBAAyB,iGAA8C,CAAC"}