@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,239 @@
1
+ import { GeneratorPackageValidationError } from "./errors.js";
2
+ function fail(path, message) {
3
+ throw new GeneratorPackageValidationError(`${path}: ${message}`);
4
+ }
5
+ export function validateUniqueGroupIds(definition) {
6
+ const ids = new Set();
7
+ definition.groups.forEach((group, index) => {
8
+ if (ids.has(group.id))
9
+ fail(`definition.groups[${index}].id`, `duplicate id "${group.id}"`);
10
+ ids.add(group.id);
11
+ });
12
+ }
13
+ export function validateUniqueParameterIds(definition) {
14
+ const ids = new Set();
15
+ definition.parameters.forEach((parameter, index) => {
16
+ if (ids.has(parameter.id)) {
17
+ fail(`definition.parameters[${index}].id`, `duplicate id "${parameter.id}"`);
18
+ }
19
+ ids.add(parameter.id);
20
+ });
21
+ }
22
+ export function validateParameterGroupReferences(definition) {
23
+ const groupIds = new Set(definition.groups.map((group) => group.id));
24
+ definition.parameters.forEach((parameter, index) => {
25
+ if (parameter.group !== undefined && !groupIds.has(parameter.group)) {
26
+ fail(`definition.parameters[${index}].group`, `references unknown group "${parameter.group}"`);
27
+ }
28
+ });
29
+ }
30
+ function assertNever(value) {
31
+ throw new TypeError(`Unexpected definition variant: ${JSON.stringify(value)}`);
32
+ }
33
+ function scalarValueType(parameter) {
34
+ switch (parameter.type) {
35
+ case "boolean":
36
+ return "boolean";
37
+ case "number":
38
+ case "slider":
39
+ return "number";
40
+ case "color":
41
+ case "select":
42
+ case "svg":
43
+ case "text":
44
+ return "string";
45
+ default:
46
+ return assertNever(parameter);
47
+ }
48
+ }
49
+ function validateConditionExpression(condition, path, parametersById) {
50
+ if ("all" in condition) {
51
+ condition.all.forEach((child, index) => validateConditionExpression(child, `${path}.all[${index}]`, parametersById));
52
+ return;
53
+ }
54
+ if ("any" in condition) {
55
+ condition.any.forEach((child, index) => validateConditionExpression(child, `${path}.any[${index}]`, parametersById));
56
+ return;
57
+ }
58
+ if ("not" in condition) {
59
+ validateConditionExpression(condition.not, `${path}.not`, parametersById);
60
+ return;
61
+ }
62
+ const referenced = parametersById.get(condition.param);
63
+ if (referenced === undefined) {
64
+ fail(`${path}.param`, `references unknown parameter "${condition.param}"`);
65
+ }
66
+ if ("contains" in condition) {
67
+ if (referenced.type !== "choice-set") {
68
+ fail(path, `contains requires a choice-set parameter, received "${referenced.id}"`);
69
+ }
70
+ if (!referenced.options.some((option) => option.value === condition.contains)) {
71
+ fail(`${path}.contains`, `must match an option value from parameter "${referenced.id}"`);
72
+ }
73
+ return;
74
+ }
75
+ if (referenced.type === "array" || referenced.type === "choice-set") {
76
+ fail(`${path}.param`, "conditions may only reference scalar parameters");
77
+ }
78
+ if ("gt" in condition || "gte" in condition || "lt" in condition || "lte" in condition) {
79
+ if (scalarValueType(referenced) !== "number") {
80
+ fail(path, `numeric comparison requires a number parameter, received "${referenced.id}"`);
81
+ }
82
+ return;
83
+ }
84
+ const expectedType = scalarValueType(referenced);
85
+ if ("eq" in condition && typeof condition.eq !== expectedType) {
86
+ fail(`${path}.eq`, `must be a ${expectedType} value when comparing parameter "${referenced.id}"`);
87
+ }
88
+ if ("eq" in condition)
89
+ return;
90
+ if ("ne" in condition && typeof condition.ne !== expectedType) {
91
+ fail(`${path}.ne`, `must be a ${expectedType} value when comparing parameter "${referenced.id}"`);
92
+ }
93
+ if ("ne" in condition)
94
+ return;
95
+ assertNever(condition);
96
+ }
97
+ export function validateParameterConditions(definition) {
98
+ const parametersById = new Map(definition.parameters.map((parameter) => [parameter.id, parameter]));
99
+ definition.parameters.forEach((parameter, index) => {
100
+ if (parameter.visibleWhen !== undefined) {
101
+ validateConditionExpression(parameter.visibleWhen, `definition.parameters[${index}].visibleWhen`, parametersById);
102
+ }
103
+ });
104
+ }
105
+ function validateNumberBounds(parameter, path) {
106
+ if (parameter.min !== undefined && parameter.max !== undefined && parameter.min > parameter.max) {
107
+ fail(`${path}.min`, "must not exceed max");
108
+ }
109
+ if (parameter.min !== undefined && parameter.default < parameter.min) {
110
+ fail(`${path}.default`, "must be within its bounds");
111
+ }
112
+ if (parameter.max !== undefined && parameter.default > parameter.max) {
113
+ fail(`${path}.default`, "must be within its bounds");
114
+ }
115
+ if (parameter.step !== undefined && parameter.step <= 0) {
116
+ fail(`${path}.step`, "must be greater than zero");
117
+ }
118
+ }
119
+ function validateArrayBounds(parameter, path) {
120
+ if (parameter.minItems !== undefined &&
121
+ parameter.maxItems !== undefined &&
122
+ parameter.minItems > parameter.maxItems) {
123
+ fail(`${path}.minItems`, "must not exceed maxItems");
124
+ }
125
+ if (parameter.minItems !== undefined && parameter.default.length < parameter.minItems) {
126
+ fail(`${path}.default`, "must satisfy its item limits");
127
+ }
128
+ if (parameter.maxItems !== undefined && parameter.default.length > parameter.maxItems) {
129
+ fail(`${path}.default`, "must satisfy its item limits");
130
+ }
131
+ if (parameter.items.type === "string")
132
+ return;
133
+ if (!parameter.default.every((value) => typeof value === "number")) {
134
+ fail(`${path}.default`, "must contain numbers for number items");
135
+ }
136
+ const items = parameter.items;
137
+ if (items.min !== undefined && items.max !== undefined && items.min > items.max) {
138
+ fail(`${path}.items.min`, "must not exceed max");
139
+ }
140
+ if (items.step !== undefined && items.step <= 0) {
141
+ fail(`${path}.items.step`, "must be greater than zero");
142
+ }
143
+ parameter.default.forEach((value, index) => {
144
+ if (typeof value !== "number")
145
+ return;
146
+ if (items.min !== undefined && value < items.min) {
147
+ fail(`${path}.default[${index}]`, "must be within its item bounds");
148
+ }
149
+ if (items.max !== undefined && value > items.max) {
150
+ fail(`${path}.default[${index}]`, "must be within its item bounds");
151
+ }
152
+ });
153
+ }
154
+ function validateChoiceSet(parameter, path) {
155
+ if (parameter.options.length === 0) {
156
+ fail(`${path}.options`, "must contain at least one option");
157
+ }
158
+ const optionValues = new Set();
159
+ parameter.options.forEach((option, optionIndex) => {
160
+ if (optionValues.has(option.value)) {
161
+ fail(`${path}.options[${optionIndex}].value`, "option values must be unique");
162
+ }
163
+ optionValues.add(option.value);
164
+ });
165
+ const defaultValues = new Set();
166
+ parameter.default.forEach((value, defaultIndex) => {
167
+ if (!optionValues.has(value)) {
168
+ fail(`${path}.default[${defaultIndex}]`, "must match an option value");
169
+ }
170
+ if (defaultValues.has(value)) {
171
+ fail(`${path}.default[${defaultIndex}]`, "default choices must be unique");
172
+ }
173
+ defaultValues.add(value);
174
+ });
175
+ const canonicalDefault = parameter.options
176
+ .map((option) => option.value)
177
+ .filter((value) => defaultValues.has(value));
178
+ if (!parameter.default.every((value, index) => canonicalDefault[index] === value)) {
179
+ fail(`${path}.default`, "must follow option order");
180
+ }
181
+ if (parameter.minSelections !== undefined &&
182
+ parameter.maxSelections !== undefined &&
183
+ parameter.minSelections > parameter.maxSelections) {
184
+ fail(`${path}.minSelections`, "must not exceed maxSelections");
185
+ }
186
+ if (parameter.minSelections !== undefined && parameter.minSelections > parameter.options.length) {
187
+ fail(`${path}.minSelections`, "must not exceed the option count");
188
+ }
189
+ if (parameter.maxSelections !== undefined && parameter.maxSelections > parameter.options.length) {
190
+ fail(`${path}.maxSelections`, "must not exceed the option count");
191
+ }
192
+ if (parameter.minSelections !== undefined && parameter.default.length < parameter.minSelections) {
193
+ fail(`${path}.default`, "must satisfy its selection limits");
194
+ }
195
+ if (parameter.maxSelections !== undefined && parameter.default.length > parameter.maxSelections) {
196
+ fail(`${path}.default`, "must satisfy its selection limits");
197
+ }
198
+ }
199
+ export function validateParameterDefaults(definition) {
200
+ definition.parameters.forEach((parameter, index) => {
201
+ const path = `definition.parameters[${index}]`;
202
+ if (parameter.type === "number" || parameter.type === "slider") {
203
+ validateNumberBounds(parameter, path);
204
+ return;
205
+ }
206
+ if (parameter.type === "select") {
207
+ const optionValues = new Set();
208
+ parameter.options.forEach((option, optionIndex) => {
209
+ if (optionValues.has(option.value)) {
210
+ fail(`${path}.options[${optionIndex}].value`, "option values must be unique");
211
+ }
212
+ optionValues.add(option.value);
213
+ });
214
+ if (!optionValues.has(parameter.default)) {
215
+ fail(`${path}.default`, "must match an option value");
216
+ }
217
+ return;
218
+ }
219
+ if (parameter.type === "choice-set") {
220
+ validateChoiceSet(parameter, path);
221
+ return;
222
+ }
223
+ if (parameter.type === "array") {
224
+ if (parameter.items.type === "string" &&
225
+ !parameter.default.every((value) => typeof value === "string")) {
226
+ fail(`${path}.default`, "must contain strings for string items");
227
+ }
228
+ validateArrayBounds(parameter, path);
229
+ }
230
+ });
231
+ }
232
+ export function validateDefinition(definition) {
233
+ validateUniqueGroupIds(definition);
234
+ validateUniqueParameterIds(definition);
235
+ validateParameterGroupReferences(definition);
236
+ validateParameterConditions(definition);
237
+ validateParameterDefaults(definition);
238
+ }
239
+ //# sourceMappingURL=validate-definition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-definition.js","sourceRoot":"","sources":["../../src/generator-package/validate-definition.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { GeneratorDefinition } from "../contracts.js";
2
+ import type { GeneratorPackageManifest } from "./schemas/manifest.schema.js";
3
+ import type { GeneratorPreset } from "./schemas/preset.schema.js";
4
+ /** Validates preset identity, completeness, and canonical parameter normalization. */
5
+ export declare function validateGeneratorPresets(definition: GeneratorDefinition, presets: readonly GeneratorPreset[], path?: string): void;
6
+ export declare function validateManifestIdentity(manifest: GeneratorPackageManifest): void;
7
+ //# sourceMappingURL=validate-manifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-manifest.d.ts","sourceRoot":"","sources":["../../src/generator-package/validate-manifest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAG3D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AAC7E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAMlE,sFAAsF;AACtF,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,mBAAmB,EAC/B,OAAO,EAAE,SAAS,eAAe,EAAE,EACnC,IAAI,SAAY,GACf,IAAI,CAyCN;AAED,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,wBAAwB,GAAG,IAAI,CAUjF"}
@@ -0,0 +1,47 @@
1
+ import { normalizeParameters, parameterValueEquals, validateParameters } from "../parameters.js";
2
+ import { GeneratorPackageValidationError } from "./errors.js";
3
+ function fail(path, message) {
4
+ throw new GeneratorPackageValidationError(`${path}: ${message}`);
5
+ }
6
+ /** Validates preset identity, completeness, and canonical parameter normalization. */
7
+ export function validateGeneratorPresets(definition, presets, path = "presets") {
8
+ const presetIds = new Set();
9
+ const parameterIds = new Set(definition.parameters.map((parameter) => parameter.id));
10
+ presets.forEach((preset, presetIndex) => {
11
+ const presetPath = `${path}[${presetIndex}]`;
12
+ if (presetIds.has(preset.id))
13
+ fail(`${presetPath}.id`, `duplicate id "${preset.id}"`);
14
+ presetIds.add(preset.id);
15
+ const suppliedIds = Object.keys(preset.parameterValues);
16
+ const unknownId = suppliedIds.find((id) => !parameterIds.has(id));
17
+ if (unknownId !== undefined) {
18
+ fail(`${presetPath}.parameterValues.${unknownId}`, "references an unknown parameter");
19
+ }
20
+ const missingId = definition.parameters.find((parameter) => !Object.hasOwn(preset.parameterValues, parameter.id))?.id;
21
+ if (missingId !== undefined) {
22
+ fail(`${presetPath}.parameterValues.${missingId}`, "is required");
23
+ }
24
+ const validation = validateParameters(definition, preset.parameterValues);
25
+ const issue = validation.errors[0];
26
+ if (issue !== undefined) {
27
+ const issuePath = issue.parameterId === undefined
28
+ ? `${presetPath}.parameterValues`
29
+ : `${presetPath}.parameterValues.${issue.parameterId}`;
30
+ fail(issuePath, issue.message);
31
+ }
32
+ const normalized = normalizeParameters(definition, preset.parameterValues);
33
+ for (const parameter of definition.parameters) {
34
+ if (!parameterValueEquals(normalized[parameter.id], preset.parameterValues[parameter.id])) {
35
+ fail(`${presetPath}.parameterValues.${parameter.id}`, "must already be normalized for this generator version");
36
+ }
37
+ }
38
+ });
39
+ }
40
+ export function validateManifestIdentity(manifest) {
41
+ if (manifest.definition.id !== manifest.generatorId ||
42
+ manifest.definition.version !== manifest.version) {
43
+ throw new GeneratorPackageValidationError("manifest: generator identity must match its definition");
44
+ }
45
+ validateGeneratorPresets(manifest.definition, manifest.presets ?? [], "manifest.presets");
46
+ }
47
+ //# sourceMappingURL=validate-manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-manifest.js","sourceRoot":"","sources":["../../src/generator-package/validate-manifest.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export declare const semanticVersionPattern: RegExp;
2
+ export type SemanticVersionParts = readonly [major: string, minor: string, patch: string];
3
+ /** Splits the package contract's canonical, prerelease-free semantic version format. */
4
+ export declare function semanticVersionParts(value: string): SemanticVersionParts | undefined;
5
+ //# sourceMappingURL=version-format.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version-format.d.ts","sourceRoot":"","sources":["../../src/generator-package/version-format.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,sBAAsB,QAA+C,CAAC;AAEnF,MAAM,MAAM,oBAAoB,GAAG,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAE1F,wFAAwF;AACxF,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,oBAAoB,GAAG,SAAS,CAGpF"}
@@ -0,0 +1,7 @@
1
+ export const semanticVersionPattern = /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)$/;
2
+ /** Splits the package contract's canonical, prerelease-free semantic version format. */
3
+ export function semanticVersionParts(value) {
4
+ const match = semanticVersionPattern.exec(value);
5
+ return match === null ? undefined : [match[1], match[2], match[3]];
6
+ }
7
+ //# sourceMappingURL=version-format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version-format.js","sourceRoot":"","sources":["../../src/generator-package/version-format.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,sBAAsB,GAAG,4CAA4C,CAAC;AAInF,wFAAwF;AACxF,MAAM,UAAU,oBAAoB,CAAC,KAAa;IAChD,MAAM,KAAK,GAAG,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjD,OAAO,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAE,EAAE,KAAK,CAAC,CAAC,CAAE,EAAE,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC;AACxE,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare function compareSemanticVersions(left: string, right: string): number;
2
+ export declare function isRuntimeCompatible(requiredVersion: string, currentVersion?: string): boolean;
3
+ //# sourceMappingURL=versions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"versions.d.ts","sourceRoot":"","sources":["../../src/generator-package/versions.ts"],"names":[],"mappings":"AA4BA,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAE3E;AAED,wBAAgB,mBAAmB,CACjC,eAAe,EAAE,MAAM,EACvB,cAAc,GAAE,MAAiC,GAChD,OAAO,CAKT"}
@@ -0,0 +1,36 @@
1
+ import { METAMESH_RUNTIME_VERSION } from "./constants.js";
2
+ import { GeneratorPackageValidationError } from "./errors.js";
3
+ import { semanticVersionParts } from "./version-format.js";
4
+ function requireSemanticVersion(value) {
5
+ const parts = semanticVersionParts(value);
6
+ if (parts === undefined) {
7
+ throw new GeneratorPackageValidationError("Versions must use the canonical x.y.z format without leading zeroes.");
8
+ }
9
+ return parts;
10
+ }
11
+ function compareNumericIdentifiers(left, right) {
12
+ if (left.length !== right.length)
13
+ return left.length < right.length ? -1 : 1;
14
+ if (left === right)
15
+ return 0;
16
+ return left < right ? -1 : 1;
17
+ }
18
+ function compareVersionParts(left, right) {
19
+ for (let index = 0; index < left.length; index += 1) {
20
+ const difference = compareNumericIdentifiers(left[index], right[index]);
21
+ if (difference !== 0)
22
+ return difference;
23
+ }
24
+ return 0;
25
+ }
26
+ export function compareSemanticVersions(left, right) {
27
+ return compareVersionParts(requireSemanticVersion(left), requireSemanticVersion(right));
28
+ }
29
+ export function isRuntimeCompatible(requiredVersion, currentVersion = METAMESH_RUNTIME_VERSION) {
30
+ const required = semanticVersionParts(requiredVersion);
31
+ const current = semanticVersionParts(currentVersion);
32
+ if (required === undefined || current === undefined || required[0] !== current[0])
33
+ return false;
34
+ return compareVersionParts(required, current) <= 0;
35
+ }
36
+ //# sourceMappingURL=versions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"versions.js","sourceRoot":"","sources":["../../src/generator-package/versions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,+BAA+B,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAA6B,MAAM,qBAAqB,CAAC;AAEtF,SAAS,sBAAsB,CAAC,KAAa;IAC3C,MAAM,KAAK,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAC1C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,MAAM,IAAI,+BAA+B,CACvC,sEAAsE,CACvE,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,yBAAyB,CAAC,IAAY,EAAE,KAAa;IAC5D,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7E,IAAI,IAAI,KAAK,KAAK;QAAE,OAAO,CAAC,CAAC;IAC7B,OAAO,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,CAAC;AAED,SAAS,mBAAmB,CAAC,IAA0B,EAAE,KAA2B;IAClF,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACpD,MAAM,UAAU,GAAG,yBAAyB,CAAC,IAAI,CAAC,KAAK,CAAE,EAAE,KAAK,CAAC,KAAK,CAAE,CAAC,CAAC;QAC1E,IAAI,UAAU,KAAK,CAAC;YAAE,OAAO,UAAU,CAAC;IAC1C,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,IAAY,EAAE,KAAa;IACjE,OAAO,mBAAmB,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1F,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,eAAuB,EACvB,iBAAyB,wBAAwB;IAEjD,MAAM,QAAQ,GAAG,oBAAoB,CAAC,eAAe,CAAC,CAAC;IACvD,MAAM,OAAO,GAAG,oBAAoB,CAAC,cAAc,CAAC,CAAC;IACrD,IAAI,QAAQ,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAChG,OAAO,mBAAmB,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;AACrD,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "./generator-package/index.js";
2
+ //# sourceMappingURL=generator-packages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator-packages.d.ts","sourceRoot":"","sources":["../src/generator-packages.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "./generator-package/index.js";
2
+ //# sourceMappingURL=generator-packages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator-packages.js","sourceRoot":"","sources":["../src/generator-packages.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAC"}
@@ -0,0 +1,14 @@
1
+ export { evaluateCondition } from "./conditions.js";
2
+ export type { ConditionExpression } from "./conditions.js";
3
+ export { DEFAULT_GENERATED_PARTS_LIMITS, parseGeneratedParts } from "./generated-parts.js";
4
+ export type { GeneratedPartsLimits } from "./generated-parts.js";
5
+ export { defineGeneratorModule, isGeneratorModule, parseGeneratorModule, } from "./generator-module.js";
6
+ export type { GeneratorModule, GeneratorModuleOptions, ParsedGeneratorModule, StrictGeneratorModule, } from "./generator-module.js";
7
+ export { aggregateParameterIssues, createParamCodec, defineGenerator, definePresets, defineValidator, EMPTY_SVG_PARAMETER_DEFAULT, getDefaultParameters, MAX_PARAMETER_ISSUE_MESSAGE_LENGTH, MAX_PARAMETER_ISSUES, MAX_PROJECT_SVG_PARAMETER_BYTES, MAX_SVG_PARAMETER_BYTES, normalizeParameters, ParamDecodeError, parameterValueEquals, parseParameterIssues, prepareParameters, svgParameterBytes, validateParameters, } from "./parameters.js";
8
+ export type { ParamCodec, ParamDecodeCode, ParamDecodeIssue, ParamParseResult, PreparedParameters, } from "./parameters.js";
9
+ export { decodeParameterState, encodeParameterState, PARAMETER_URL_VERSION } from "./url-state.js";
10
+ export type { SourceVisibility } from "./source-visibility.js";
11
+ export { compareSemanticVersions, GENERATOR_PACKAGE_FORMAT_VERSION, GeneratorPackageValidationError, isRuntimeCompatible, MAX_GENERATOR_PACKAGE_BYTES, METAMESH_RUNTIME_VERSION, parseGeneratorDescriptor, parseGeneratorPackageManifest, parseGeneratorDefinition, validateGeneratorPresets, } from "./generator-packages.js";
12
+ export type { GeneratorAccess, GeneratorDescriptor, GeneratorPackageManifest, GeneratorPackageSource, GeneratorPreset, GeneratorRuntimeReference, InstalledGenerator, } from "./generator-packages.js";
13
+ export type { BaseParameterDefinition, ArrayParameterDefinition, BooleanParameterDefinition, ChoiceSetParameterDefinition, ColorParameterDefinition, Export3mfRequest, ExportError, ExportedFile, ExportSuccess, GeneratedModel, GeneratedPart, GenerateRequest, GenerationError, GenerationInvalid, GenerationSuccess, GeneratorDefinition, GeneratorIssue, GeneratorParamId, GeneratorParams, GeneratorValidator, MeshTopologyMode, ModelBounds, ModelStats, NumberArrayItemDefinition, NumberArrayParameterDefinition, NumberParameterDefinition, NumericParameterDefinition, ParameterDefinition, ParameterGroup, ParameterIssue, ParameterIssueSeverity, ParameterValidationResult, ParameterValue, ParameterValues, ScalarParameterValue, RuntimeError, SelectOption, SelectParameterDefinition, Vec3, TextParameterDefinition, StringArrayItemDefinition, StringArrayParameterDefinition, SvgParameterDefinition, SliderParameterDefinition, WorkerRequest, WorkerResponse, ValidateRequest, ValidationError, ValidationSuccess, } from "./contracts.js";
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,YAAY,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,8BAA8B,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3F,YAAY,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACV,eAAe,EACf,sBAAsB,EACtB,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,wBAAwB,EACxB,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,eAAe,EACf,2BAA2B,EAC3B,oBAAoB,EACpB,kCAAkC,EAClC,oBAAoB,EACpB,+BAA+B,EAC/B,uBAAuB,EACvB,mBAAmB,EACnB,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,UAAU,EACV,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACnG,YAAY,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EACL,uBAAuB,EACvB,gCAAgC,EAChC,+BAA+B,EAC/B,mBAAmB,EACnB,2BAA2B,EAC3B,wBAAwB,EACxB,wBAAwB,EACxB,6BAA6B,EAC7B,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACV,eAAe,EACf,mBAAmB,EACnB,wBAAwB,EACxB,sBAAsB,EACtB,eAAe,EACf,yBAAyB,EACzB,kBAAkB,GACnB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACV,uBAAuB,EACvB,wBAAwB,EACxB,0BAA0B,EAC1B,4BAA4B,EAC5B,wBAAwB,EACxB,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,aAAa,EACb,cAAc,EACd,aAAa,EACb,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,WAAW,EACX,UAAU,EACV,yBAAyB,EACzB,8BAA8B,EAC9B,yBAAyB,EACzB,0BAA0B,EAC1B,mBAAmB,EACnB,cAAc,EACd,cAAc,EACd,sBAAsB,EACtB,yBAAyB,EACzB,cAAc,EACd,eAAe,EACf,oBAAoB,EACpB,YAAY,EACZ,YAAY,EACZ,yBAAyB,EACzB,IAAI,EACJ,uBAAuB,EACvB,yBAAyB,EACzB,8BAA8B,EAC9B,sBAAsB,EACtB,yBAAyB,EACzB,aAAa,EACb,cAAc,EACd,eAAe,EACf,eAAe,EACf,iBAAiB,GAClB,MAAM,gBAAgB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,7 @@
1
+ export { evaluateCondition } from "./conditions.js";
2
+ export { DEFAULT_GENERATED_PARTS_LIMITS, parseGeneratedParts } from "./generated-parts.js";
3
+ export { defineGeneratorModule, isGeneratorModule, parseGeneratorModule, } from "./generator-module.js";
4
+ export { aggregateParameterIssues, createParamCodec, defineGenerator, definePresets, defineValidator, EMPTY_SVG_PARAMETER_DEFAULT, getDefaultParameters, MAX_PARAMETER_ISSUE_MESSAGE_LENGTH, MAX_PARAMETER_ISSUES, MAX_PROJECT_SVG_PARAMETER_BYTES, MAX_SVG_PARAMETER_BYTES, normalizeParameters, ParamDecodeError, parameterValueEquals, parseParameterIssues, prepareParameters, svgParameterBytes, validateParameters, } from "./parameters.js";
5
+ export { decodeParameterState, encodeParameterState, PARAMETER_URL_VERSION } from "./url-state.js";
6
+ export { compareSemanticVersions, GENERATOR_PACKAGE_FORMAT_VERSION, GeneratorPackageValidationError, isRuntimeCompatible, MAX_GENERATOR_PACKAGE_BYTES, METAMESH_RUNTIME_VERSION, parseGeneratorDescriptor, parseGeneratorPackageManifest, parseGeneratorDefinition, validateGeneratorPresets, } from "./generator-packages.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,OAAO,EAAE,8BAA8B,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE3F,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAO/B,OAAO,EACL,wBAAwB,EACxB,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,eAAe,EACf,2BAA2B,EAC3B,oBAAoB,EACpB,kCAAkC,EAClC,oBAAoB,EACpB,+BAA+B,EAC/B,uBAAuB,EACvB,mBAAmB,EACnB,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;AAQzB,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAEnG,OAAO,EACL,uBAAuB,EACvB,gCAAgC,EAChC,+BAA+B,EAC/B,mBAAmB,EACnB,2BAA2B,EAC3B,wBAAwB,EACxB,wBAAwB,EACxB,6BAA6B,EAC7B,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,69 @@
1
+ import type { GeneratorDefinition, GeneratorParams, GeneratorValidator, ParameterIssue, ParameterValidationResult, ParameterValue } from "./contracts.js";
2
+ import type { GeneratorPreset } from "./generator-package/schemas/preset.schema.js";
3
+ export declare const MAX_SVG_PARAMETER_BYTES: number;
4
+ export declare const MAX_PROJECT_SVG_PARAMETER_BYTES: number;
5
+ export declare const MAX_PARAMETER_ISSUES = 100;
6
+ export declare const MAX_PARAMETER_ISSUE_MESSAGE_LENGTH = 1000;
7
+ export declare const EMPTY_SVG_PARAMETER_DEFAULT = "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"100mm\" height=\"100mm\" viewBox=\"-50 -50 100 100\"></svg>";
8
+ export type ParamDecodeCode = "invalid" | "missing" | "type" | "unknown";
9
+ export interface ParamDecodeIssue {
10
+ readonly code: ParamDecodeCode;
11
+ readonly parameterId?: string;
12
+ readonly path: readonly (number | string)[];
13
+ readonly message: string;
14
+ }
15
+ export type ParamParseResult<P> = {
16
+ readonly success: true;
17
+ readonly data: P;
18
+ } | {
19
+ readonly success: false;
20
+ readonly issues: readonly ParamDecodeIssue[];
21
+ };
22
+ export interface ParamCodec<D extends GeneratorDefinition> {
23
+ readonly parse: (input: unknown) => GeneratorParams<D>;
24
+ readonly safeParse: (input: unknown) => ParamParseResult<GeneratorParams<D>>;
25
+ }
26
+ export interface PreparedParameters<D extends GeneratorDefinition> {
27
+ readonly parameters: GeneratorParams<D>;
28
+ readonly validation: ParameterValidationResult;
29
+ }
30
+ export declare class ParamDecodeError extends TypeError {
31
+ readonly issues: readonly ParamDecodeIssue[];
32
+ constructor(issues: readonly ParamDecodeIssue[]);
33
+ }
34
+ /** Captures literal parameter IDs and option values without adding runtime work. */
35
+ export declare function defineGenerator<const D extends GeneratorDefinition>(definition: D): D;
36
+ /** Contextually types a Generator validator from its definition. */
37
+ export declare function defineValidator<const D extends GeneratorDefinition>(_definition: D, validator: GeneratorValidator<NoInfer<D>>): GeneratorValidator<D>;
38
+ /** Contextually types complete presets from their Generator definition. */
39
+ export declare function definePresets<const D extends GeneratorDefinition, const Presets extends readonly GeneratorPreset<NoInfer<D>>[]>(_definition: D, presets: Presets): Presets;
40
+ export declare function svgParameterBytes(value: string): number;
41
+ export declare function parameterValueEquals(previous: ParameterValue | undefined, next: ParameterValue | undefined): boolean;
42
+ /**
43
+ * Returns one value per declared parameter. Unknown input keys are discarded,
44
+ * missing/invalid values fall back to defaults, and numbers are clamped.
45
+ */
46
+ export declare function normalizeParameters<const D extends GeneratorDefinition>(definition: D, input?: Readonly<Record<string, unknown>> | null): GeneratorParams<D>;
47
+ export declare function getDefaultParameters<const D extends GeneratorDefinition>(definition: D): GeneratorParams<D>;
48
+ /**
49
+ * Creates a strict decoder for the exact normalized parameter map described by
50
+ * a definition. Unlike normalization, decoding never fills, drops, clamps, or
51
+ * canonicalizes values.
52
+ */
53
+ export declare function createParamCodec<const D extends GeneratorDefinition>(definition: D): ParamCodec<D>;
54
+ export declare function aggregateParameterIssues(...issueSets: readonly (readonly ParameterIssue[])[]): ParameterValidationResult;
55
+ /**
56
+ * Parses validator output at the executable-code boundary.
57
+ *
58
+ * Validation issues are intentionally strict and bounded because authored and
59
+ * installed generator code can return values that did not pass TypeScript.
60
+ */
61
+ export declare function parseParameterIssues(definition: GeneratorDefinition, value: unknown): readonly ParameterIssue[];
62
+ /**
63
+ * Normalizes known values once, then aggregates schema and Generator-owned issues.
64
+ * Obsolete keys never leak into Generator validation.
65
+ */
66
+ export declare function prepareParameters<const D extends GeneratorDefinition>(definition: D, parameters: Readonly<Record<string, unknown>>, validate?: GeneratorValidator<D>): PreparedParameters<D>;
67
+ /** Aggregates definition and Generator-owned validation issues. */
68
+ export declare function validateParameters<const D extends GeneratorDefinition>(definition: D, parameters: Readonly<Record<string, unknown>>, validate?: GeneratorValidator<D>): ParameterValidationResult;
69
+ //# sourceMappingURL=parameters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parameters.d.ts","sourceRoot":"","sources":["../src/parameters.ts"],"names":[],"mappings":"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"}