@metamesh/generator-sdk 0.9.0 → 0.11.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.
- package/CHANGELOG.md +30 -0
- package/README.md +71 -336
- package/dist/authoring.d.ts +1 -52
- package/dist/authoring.d.ts.map +1 -1
- package/dist/authoring.js +0 -24
- package/dist/authoring.js.map +1 -1
- package/dist/contours.d.ts +36 -0
- package/dist/contours.d.ts.map +1 -0
- package/dist/{cross-sections.js → contours.js} +19 -61
- package/dist/contours.js.map +1 -0
- package/dist/contracts.d.ts +30 -11
- package/dist/contracts.d.ts.map +1 -1
- package/dist/curve-data.d.ts +11 -0
- package/dist/curve-data.d.ts.map +1 -0
- package/dist/curve-data.js +53 -0
- package/dist/curve-data.js.map +1 -0
- package/dist/execute-generator.d.ts +14 -23
- package/dist/execute-generator.d.ts.map +1 -1
- package/dist/execute-generator.js +33 -32
- package/dist/execute-generator.js.map +1 -1
- package/dist/generated-parts.d.ts +16 -0
- package/dist/generated-parts.d.ts.map +1 -1
- package/dist/generated-parts.js +155 -67
- package/dist/generated-parts.js.map +1 -1
- package/dist/generator-module.d.ts +20 -17
- package/dist/generator-module.d.ts.map +1 -1
- package/dist/generator-module.js +3 -4
- package/dist/generator-module.js.map +1 -1
- package/dist/generator-package/constants.d.ts +2 -2
- package/dist/generator-package/constants.js +2 -2
- package/dist/generator-package/errors.d.ts +19 -1
- package/dist/generator-package/errors.d.ts.map +1 -1
- package/dist/generator-package/errors.js +58 -11
- package/dist/generator-package/errors.js.map +1 -1
- package/dist/generator-package/index.d.ts +7 -2
- package/dist/generator-package/index.d.ts.map +1 -1
- package/dist/generator-package/index.js +52 -9
- package/dist/generator-package/index.js.map +1 -1
- package/dist/generator-package/portable-data.d.ts +12 -0
- package/dist/generator-package/portable-data.d.ts.map +1 -0
- package/dist/generator-package/portable-data.js +102 -0
- package/dist/generator-package/portable-data.js.map +1 -0
- package/dist/generator-package/schemas/common.schema.d.ts.map +1 -1
- package/dist/generator-package/schemas/common.schema.js +4 -2
- package/dist/generator-package/schemas/common.schema.js.map +1 -1
- package/dist/generator-package/schemas/definition.schema.d.ts +451 -57
- package/dist/generator-package/schemas/definition.schema.d.ts.map +1 -1
- package/dist/generator-package/schemas/definition.schema.js +5 -2
- package/dist/generator-package/schemas/definition.schema.js.map +1 -1
- package/dist/generator-package/schemas/manifest.schema.d.ts +178 -62
- package/dist/generator-package/schemas/manifest.schema.d.ts.map +1 -1
- package/dist/generator-package/schemas/manifest.schema.js.map +1 -1
- package/dist/generator-package/schemas/parameter-document-json-schema.d.ts +4 -0
- package/dist/generator-package/schemas/parameter-document-json-schema.d.ts.map +1 -0
- package/dist/generator-package/schemas/parameter-document-json-schema.js +17 -0
- package/dist/generator-package/schemas/parameter-document-json-schema.js.map +1 -0
- package/dist/generator-package/schemas/parameter.schema.d.ts +173 -275
- package/dist/generator-package/schemas/parameter.schema.d.ts.map +1 -1
- package/dist/generator-package/schemas/parameter.schema.js +169 -79
- package/dist/generator-package/schemas/parameter.schema.js.map +1 -1
- package/dist/generator-package/schemas/preset.schema.d.ts.map +1 -1
- package/dist/generator-package/schemas/preset.schema.js +4 -4
- package/dist/generator-package/schemas/preset.schema.js.map +1 -1
- package/dist/generator-package/validate-definition.d.ts +4 -7
- package/dist/generator-package/validate-definition.d.ts.map +1 -1
- package/dist/generator-package/validate-definition.js +210 -272
- package/dist/generator-package/validate-definition.js.map +1 -1
- package/dist/generator-package/validate-manifest.d.ts.map +1 -1
- package/dist/generator-package/validate-manifest.js +5 -10
- package/dist/generator-package/validate-manifest.js.map +1 -1
- package/dist/index.d.ts +7 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/parameter-contracts.d.ts +62 -39
- package/dist/parameter-contracts.d.ts.map +1 -1
- package/dist/parameters/issues.d.ts.map +1 -1
- package/dist/parameters/issues.js +9 -10
- package/dist/parameters/issues.js.map +1 -1
- package/dist/parameters/preparation.d.ts +8 -6
- package/dist/parameters/preparation.d.ts.map +1 -1
- package/dist/parameters/preparation.js +21 -10
- package/dist/parameters/preparation.js.map +1 -1
- package/dist/parameters/recovery.d.ts.map +1 -1
- package/dist/parameters/recovery.js +11 -12
- package/dist/parameters/recovery.js.map +1 -1
- package/dist/parameters/strict.d.ts.map +1 -1
- package/dist/parameters/strict.js +7 -10
- package/dist/parameters/strict.js.map +1 -1
- package/dist/parameters/values.d.ts +1 -0
- package/dist/parameters/values.d.ts.map +1 -1
- package/dist/parameters/values.js +7 -6
- package/dist/parameters/values.js.map +1 -1
- package/dist/parameters.d.ts +1 -1
- package/dist/parameters.d.ts.map +1 -1
- package/dist/parameters.js +1 -1
- package/dist/parameters.js.map +1 -1
- package/dist/parameters.schema.json +1757 -0
- package/dist/parse-generator-module.d.ts +5 -27
- package/dist/parse-generator-module.d.ts.map +1 -1
- package/dist/parse-generator-module.js +29 -96
- package/dist/parse-generator-module.js.map +1 -1
- package/dist/runtime.d.ts +6 -6
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +3 -3
- package/dist/runtime.js.map +1 -1
- package/dist/side-profiles.d.ts +36 -0
- package/dist/side-profiles.d.ts.map +1 -0
- package/dist/{profiles.js → side-profiles.js} +21 -66
- package/dist/side-profiles.js.map +1 -0
- package/dist/worker-contracts.d.ts +2 -2
- package/dist/worker-contracts.d.ts.map +1 -1
- package/dist/worker-contracts.js.map +1 -1
- package/package.json +7 -7
- package/dist/cross-sections.d.ts +0 -41
- package/dist/cross-sections.d.ts.map +0 -1
- package/dist/cross-sections.js.map +0 -1
- package/dist/profiles.d.ts +0 -41
- package/dist/profiles.d.ts.map +0 -1
- package/dist/profiles.js.map +0 -1
|
@@ -1,29 +1,7 @@
|
|
|
1
|
-
import type { GeneratorDefinition
|
|
2
|
-
import type {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
export interface PreparedBuild<Context, Output> {
|
|
7
|
-
readonly ok: true;
|
|
8
|
-
readonly issues: readonly GeneratorIssue[];
|
|
9
|
-
readonly build: (context: Context) => Output;
|
|
10
|
-
}
|
|
11
|
-
export interface ParsedGeneratorModule<D extends GeneratorDefinition = GeneratorDefinition, Context = unknown, Output = unknown> {
|
|
12
|
-
readonly formatVersion: typeof GENERATOR_PACKAGE_FORMAT_VERSION;
|
|
13
|
-
readonly generatorId: D["id"];
|
|
14
|
-
readonly version: D["version"];
|
|
15
|
-
readonly prepare: (parameters: GeneratorParams<D>, services: GeneratorServices) => PreparedBuild<Context, Output> | {
|
|
16
|
-
readonly ok: false;
|
|
17
|
-
readonly issues: readonly GeneratorIssue<D>[];
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
|
-
/** Inspects only the result envelope and issues. The prepared value remains opaque. */
|
|
21
|
-
export declare function parsePreparation<D extends GeneratorDefinition, P>(definition: D, result: unknown): Preparation<D, P>;
|
|
22
|
-
export declare function capturePreparation<D extends GeneratorDefinition, P, Context, Output>(definition: D, result: unknown, build: (prepared: P, context: Context) => Output): PreparedBuild<Context, Output> | {
|
|
23
|
-
readonly ok: false;
|
|
24
|
-
readonly issues: readonly GeneratorIssue<D>[];
|
|
25
|
-
};
|
|
26
|
-
/** Captures the exact format-2 surface; unsupported formats fail before callback invocation. */
|
|
27
|
-
export declare function parseGeneratorModule<D extends GeneratorDefinition, Context = unknown, Output = unknown>(value: unknown, definition: D): ParsedGeneratorModule<D, Context, Output>;
|
|
1
|
+
import type { GeneratorDefinition } from "./contracts.js";
|
|
2
|
+
import type { GeneratorModule, GeneratorProgram } from "./generator-module.js";
|
|
3
|
+
export type ParsedGeneratorModule<D extends GeneratorDefinition = GeneratorDefinition, Program extends GeneratorProgram = GeneratorProgram> = GeneratorModule<D, Program>;
|
|
4
|
+
/** Validates the sole format-4 default module before any author callback can run. */
|
|
5
|
+
export declare function parseGeneratorModule<D extends GeneratorDefinition, Program extends GeneratorProgram = GeneratorProgram>(value: unknown, definition: D): ParsedGeneratorModule<D, Program>;
|
|
28
6
|
export declare function isGeneratorModule<D extends GeneratorDefinition>(value: unknown, definition: D): boolean;
|
|
29
7
|
//# sourceMappingURL=parse-generator-module.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-generator-module.d.ts","sourceRoot":"","sources":["../src/parse-generator-module.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,
|
|
1
|
+
{"version":3,"file":"parse-generator-module.d.ts","sourceRoot":"","sources":["../src/parse-generator-module.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AA2B/E,MAAM,MAAM,qBAAqB,CAC/B,CAAC,SAAS,mBAAmB,GAAG,mBAAmB,EACnD,OAAO,SAAS,gBAAgB,GAAG,gBAAgB,IACjD,eAAe,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AAEhC,qFAAqF;AACrF,wBAAgB,oBAAoB,CAClC,CAAC,SAAS,mBAAmB,EAC7B,OAAO,SAAS,gBAAgB,GAAG,gBAAgB,EACnD,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,GAAG,qBAAqB,CAAC,CAAC,EAAE,OAAO,CAAC,CAyClE;AAED,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,mBAAmB,EAC7D,KAAK,EAAE,OAAO,EACd,UAAU,EAAE,CAAC,GACZ,OAAO,CAOT"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { GENERATOR_PACKAGE_FORMAT_VERSION } from "./generator-package/constants.js";
|
|
2
|
-
|
|
3
|
-
const EXPORT_NAMES = ["build", "formatVersion", "generatorId", "prepare", "version"];
|
|
2
|
+
const ENVELOPE_FIELDS = ["formatVersion", "generate", "generatorId", "version"];
|
|
4
3
|
function ownData(value, key) {
|
|
5
4
|
const descriptor = Object.getOwnPropertyDescriptor(value, key);
|
|
6
5
|
if (descriptor === undefined || !("value" in descriptor)) {
|
|
@@ -8,116 +7,50 @@ function ownData(value, key) {
|
|
|
8
7
|
}
|
|
9
8
|
return descriptor.value;
|
|
10
9
|
}
|
|
11
|
-
function
|
|
12
|
-
|
|
13
|
-
// Inspect descriptors rather than calling a then getter on executable output.
|
|
14
|
-
let prototype = value;
|
|
15
|
-
let depth = 0;
|
|
16
|
-
let inspectThen = true;
|
|
17
|
-
while (prototype !== null) {
|
|
18
|
-
if (++depth > 64)
|
|
19
|
-
throw new TypeError(`Generator ${method} output prototype depth exceeds limits.`);
|
|
20
|
-
const descriptor = inspectThen
|
|
21
|
-
? Object.getOwnPropertyDescriptor(prototype, "then")
|
|
22
|
-
: undefined;
|
|
23
|
-
if (prototype === Promise.prototype ||
|
|
24
|
-
(descriptor !== undefined &&
|
|
25
|
-
(!("value" in descriptor) || typeof descriptor.value === "function"))) {
|
|
26
|
-
try {
|
|
27
|
-
// Observe intrinsic Promise rejections without calling executable then methods.
|
|
28
|
-
void Promise.prototype.then.call(value, undefined, () => undefined);
|
|
29
|
-
}
|
|
30
|
-
catch {
|
|
31
|
-
// Arbitrary thenables and Promise species failures retain the synchronous misuse error.
|
|
32
|
-
}
|
|
33
|
-
throw new TypeError(`Generator ${method}() must return synchronously.`);
|
|
34
|
-
}
|
|
35
|
-
if (descriptor !== undefined)
|
|
36
|
-
inspectThen = false;
|
|
37
|
-
prototype = Object.getPrototypeOf(prototype);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
10
|
+
function record(value) {
|
|
11
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
40
12
|
}
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
throw new TypeError(
|
|
46
|
-
}
|
|
47
|
-
const ok = ownData(result, "ok");
|
|
48
|
-
if (typeof ok !== "boolean")
|
|
49
|
-
throw new TypeError("Generator preparation ok must be boolean.");
|
|
50
|
-
const expected = ok ? ["ok", "value", "issues"] : ["ok", "issues"];
|
|
51
|
-
const keys = Reflect.ownKeys(result);
|
|
52
|
-
if (keys.length !== expected.length ||
|
|
53
|
-
keys.some((key) => typeof key !== "string" || !expected.includes(key))) {
|
|
54
|
-
throw new TypeError("Generator preparation must contain exactly its result fields.");
|
|
13
|
+
function exactFields(value, fields) {
|
|
14
|
+
const keys = Reflect.ownKeys(value).filter((key) => key !== Symbol.toStringTag);
|
|
15
|
+
if (keys.length !== fields.length ||
|
|
16
|
+
keys.some((key) => typeof key !== "string" || !fields.includes(key))) {
|
|
17
|
+
throw new TypeError(`must contain exactly ${fields.join(", ")}`);
|
|
55
18
|
}
|
|
56
|
-
const issues = parseParameterIssues(definition, ownData(result, "issues"));
|
|
57
|
-
const hasError = issues.some(({ severity }) => severity === "error");
|
|
58
|
-
if (ok === hasError) {
|
|
59
|
-
throw new TypeError("Generator preparation success must agree with its validation errors.");
|
|
60
|
-
}
|
|
61
|
-
if (!ok)
|
|
62
|
-
return Object.freeze({ ok: false, issues });
|
|
63
|
-
return Object.freeze({ ok: true, value: ownData(result, "value"), issues });
|
|
64
|
-
}
|
|
65
|
-
export function capturePreparation(definition, result, build) {
|
|
66
|
-
const parsed = parsePreparation(definition, result);
|
|
67
|
-
if (!parsed.ok)
|
|
68
|
-
return parsed;
|
|
69
|
-
let value = parsed.value;
|
|
70
|
-
let available = true;
|
|
71
|
-
return Object.freeze({
|
|
72
|
-
ok: true,
|
|
73
|
-
issues: parsed.issues,
|
|
74
|
-
build(context) {
|
|
75
|
-
if (!available)
|
|
76
|
-
throw new TypeError("Prepared Generator build has already been consumed.");
|
|
77
|
-
available = false;
|
|
78
|
-
const preparedValue = value;
|
|
79
|
-
value = undefined;
|
|
80
|
-
const output = build(preparedValue, context);
|
|
81
|
-
assertSynchronousResult(output, "build");
|
|
82
|
-
return output;
|
|
83
|
-
},
|
|
84
|
-
});
|
|
85
19
|
}
|
|
86
|
-
/**
|
|
20
|
+
/** Validates the sole format-4 default module before any author callback can run. */
|
|
87
21
|
export function parseGeneratorModule(value, definition) {
|
|
88
22
|
try {
|
|
89
|
-
if (
|
|
23
|
+
if (!record(value))
|
|
90
24
|
throw new TypeError("must be an object");
|
|
25
|
+
let envelope = value;
|
|
26
|
+
if (Object.hasOwn(value, "default")) {
|
|
27
|
+
exactFields(value, ["default"]);
|
|
28
|
+
const exported = ownData(value, "default");
|
|
29
|
+
if (!record(exported))
|
|
30
|
+
throw new TypeError("default must be a module envelope");
|
|
31
|
+
envelope = exported;
|
|
91
32
|
}
|
|
92
|
-
|
|
33
|
+
exactFields(envelope, ENVELOPE_FIELDS);
|
|
34
|
+
if (ownData(envelope, "formatVersion") !== GENERATOR_PACKAGE_FORMAT_VERSION) {
|
|
93
35
|
throw new TypeError(`unsupported formatVersion; expected ${GENERATOR_PACKAGE_FORMAT_VERSION}`);
|
|
94
36
|
}
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
.sort((left, right) => String(left).localeCompare(String(right)));
|
|
98
|
-
if (names.length !== EXPORT_NAMES.length ||
|
|
99
|
-
names.some((name, index) => name !== EXPORT_NAMES[index])) {
|
|
100
|
-
throw new TypeError(`must export exactly ${EXPORT_NAMES.join(", ")}`);
|
|
101
|
-
}
|
|
102
|
-
const generatorId = ownData(value, "generatorId");
|
|
103
|
-
const version = ownData(value, "version");
|
|
104
|
-
const prepare = ownData(value, "prepare");
|
|
105
|
-
const build = ownData(value, "build");
|
|
106
|
-
if (generatorId !== definition.id || version !== definition.version) {
|
|
37
|
+
if (ownData(envelope, "generatorId") !== definition.id ||
|
|
38
|
+
ownData(envelope, "version") !== definition.version) {
|
|
107
39
|
throw new TypeError("identity must match the manifest definition");
|
|
108
40
|
}
|
|
109
|
-
|
|
110
|
-
|
|
41
|
+
const program = ownData(envelope, "generate");
|
|
42
|
+
if (!record(program))
|
|
43
|
+
throw new TypeError("generate must be a Modeling program");
|
|
44
|
+
exactFields(program, ["kind", "generate"]);
|
|
45
|
+
if (ownData(program, "kind") !== "metamesh-model" ||
|
|
46
|
+
typeof ownData(program, "generate") !== "function") {
|
|
47
|
+
throw new TypeError("generate must be a Modeling program");
|
|
111
48
|
}
|
|
112
|
-
const typedPrepare = prepare;
|
|
113
|
-
const typedBuild = build;
|
|
114
49
|
return Object.freeze({
|
|
115
50
|
formatVersion: GENERATOR_PACKAGE_FORMAT_VERSION,
|
|
116
51
|
generatorId: definition.id,
|
|
117
52
|
version: definition.version,
|
|
118
|
-
|
|
119
|
-
return capturePreparation(definition, typedPrepare(parameters, services), typedBuild);
|
|
120
|
-
},
|
|
53
|
+
generate: program,
|
|
121
54
|
});
|
|
122
55
|
}
|
|
123
56
|
catch (cause) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-generator-module.js","sourceRoot":"","sources":["../src/parse-generator-module.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gCAAgC,EAAE,MAAM,kCAAkC,CAAC;AAEpF,
|
|
1
|
+
{"version":3,"file":"parse-generator-module.js","sourceRoot":"","sources":["../src/parse-generator-module.ts"],"names":[],"mappings":"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"}
|
package/dist/runtime.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
export { parseGeneratorModule, isGeneratorModule
|
|
2
|
-
export type { ParsedGeneratorModule
|
|
3
|
-
export {
|
|
4
|
-
export type {
|
|
5
|
-
export { parseGeneratedParts } from "./generated-parts.js";
|
|
1
|
+
export { parseGeneratorModule, isGeneratorModule } from "./parse-generator-module.js";
|
|
2
|
+
export type { ParsedGeneratorModule } from "./parse-generator-module.js";
|
|
3
|
+
export { executeGenerator, generationIssues } from "./execute-generator.js";
|
|
4
|
+
export type { ExecuteGeneratorOptions, GeneratorExecutionResult, GeneratorExecutionInvalid, GeneratorExecutionGenerated, } from "./execute-generator.js";
|
|
5
|
+
export { GeneratedPartsDecoder, parseGeneratedParts } from "./generated-parts.js";
|
|
6
6
|
export type { GeneratedPartsLimits } from "./generated-parts.js";
|
|
7
|
-
export type { GeneratedPart, GeneratedModel, ModelBounds, ModelStats, ModelTimings, MeshTopologyMode, } from "./contracts.js";
|
|
7
|
+
export type { GeneratedPart, GeneratedModel, GeneratedModelDelivery, GeneratedPartDelivery, ModelBounds, ModelStats, ModelTimings, MeshTopologyMode, } from "./contracts.js";
|
|
8
8
|
export type * from "./worker-contracts.js";
|
|
9
9
|
export { parseGenerationSentAt } from "./worker-contracts.js";
|
|
10
10
|
//# sourceMappingURL=runtime.d.ts.map
|
package/dist/runtime.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACtF,YAAY,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC5E,YAAY,EACV,uBAAuB,EACvB,wBAAwB,EACxB,yBAAyB,EACzB,2BAA2B,GAC5B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAClF,YAAY,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,YAAY,EACV,aAAa,EACb,cAAc,EACd,sBAAsB,EACtB,qBAAqB,EACrB,WAAW,EACX,UAAU,EACV,YAAY,EACZ,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AACxB,mBAAmB,uBAAuB,CAAC;AAC3C,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC"}
|
package/dist/runtime.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { parseGeneratorModule, isGeneratorModule
|
|
2
|
-
export {
|
|
3
|
-
export { parseGeneratedParts } from "./generated-parts.js";
|
|
1
|
+
export { parseGeneratorModule, isGeneratorModule } from "./parse-generator-module.js";
|
|
2
|
+
export { executeGenerator, generationIssues } from "./execute-generator.js";
|
|
3
|
+
export { GeneratedPartsDecoder, parseGeneratedParts } from "./generated-parts.js";
|
|
4
4
|
export { parseGenerationSentAt } from "./worker-contracts.js";
|
|
5
5
|
//# sourceMappingURL=runtime.js.map
|
package/dist/runtime.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAEtF,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAO5E,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAalF,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { type CurveValueProblem } from "./curve-data.js";
|
|
2
|
+
/** Maximum number of straight or cubic segments in an editable side profile. */
|
|
3
|
+
export declare const MAX_SIDE_PROFILE_SEGMENTS = 31;
|
|
4
|
+
/** Normalized radius and upward height; both coordinates lie between zero and one. */
|
|
5
|
+
export interface SideProfilePoint {
|
|
6
|
+
readonly radius: number;
|
|
7
|
+
readonly height: number;
|
|
8
|
+
}
|
|
9
|
+
/** Editing intent is retained alongside the explicit curve controls. */
|
|
10
|
+
export interface SideProfileAnchor extends SideProfilePoint {
|
|
11
|
+
readonly mode: "auto" | "smooth" | "corner";
|
|
12
|
+
}
|
|
13
|
+
export type SideProfileSegment = {
|
|
14
|
+
readonly type: "line";
|
|
15
|
+
readonly end: SideProfileAnchor;
|
|
16
|
+
} | {
|
|
17
|
+
readonly type: "cubic";
|
|
18
|
+
readonly control1: SideProfilePoint;
|
|
19
|
+
readonly control2: SideProfilePoint;
|
|
20
|
+
readonly end: SideProfileAnchor;
|
|
21
|
+
};
|
|
22
|
+
/** An open, upward side silhouette. Generators own scaling and solid closure. */
|
|
23
|
+
export interface SideProfileValue {
|
|
24
|
+
readonly version: 1;
|
|
25
|
+
readonly start: SideProfileAnchor;
|
|
26
|
+
readonly segments: readonly SideProfileSegment[];
|
|
27
|
+
}
|
|
28
|
+
/** Internal diagnostics use the same accessor-safe reader as profile cloning and predicates. */
|
|
29
|
+
export declare function sideProfileValueProblem(value: unknown): CurveValueProblem | undefined;
|
|
30
|
+
/** Strictly checks portable profile data without evaluating getters or invoking curve libraries. */
|
|
31
|
+
export declare function isSideProfileValue(value: unknown): value is SideProfileValue;
|
|
32
|
+
/** Returns a fresh, deeply frozen portable profile, including its editing intent. */
|
|
33
|
+
export declare function cloneSideProfileValue(value: SideProfileValue): SideProfileValue;
|
|
34
|
+
/** Compares the serialized shape and editing intent rather than object identity. */
|
|
35
|
+
export declare function sideProfileValuesEqual(previous: SideProfileValue, next: SideProfileValue): boolean;
|
|
36
|
+
//# sourceMappingURL=side-profiles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"side-profiles.d.ts","sourceRoot":"","sources":["../src/side-profiles.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,iBAAiB,EAEvB,MAAM,iBAAiB,CAAC;AAEzB,gFAAgF;AAChF,eAAO,MAAM,yBAAyB,KAAK,CAAC;AAE5C,sFAAsF;AACtF,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,wEAAwE;AACxE,MAAM,WAAW,iBAAkB,SAAQ,gBAAgB;IACzD,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;CAC7C;AAED,MAAM,MAAM,kBAAkB,GAC1B;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,iBAAiB,CAAA;CAAE,GAC1D;IACE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IACpC,QAAQ,CAAC,GAAG,EAAE,iBAAiB,CAAC;CACjC,CAAC;AAEN,iFAAiF;AACjF,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAC;IAClC,QAAQ,CAAC,QAAQ,EAAE,SAAS,kBAAkB,EAAE,CAAC;CAClD;AA8GD,gGAAgG;AAChG,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,iBAAiB,GAAG,SAAS,CAMrF;AAED,oGAAoG;AACpG,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,gBAAgB,CAE5E;AAED,qFAAqF;AACrF,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,gBAAgB,GAAG,gBAAgB,CA0B/E;AAED,oFAAoF;AACpF,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,gBAAgB,EAC1B,IAAI,EAAE,gBAAgB,GACrB,OAAO,CA8BT"}
|
|
@@ -1,31 +1,8 @@
|
|
|
1
|
+
import { curveDataObject, curveSegmentCount, } from "./curve-data.js";
|
|
1
2
|
/** Maximum number of straight or cubic segments in an editable side profile. */
|
|
2
|
-
export const
|
|
3
|
-
function dataObject(value, expectedKeys, path, fail) {
|
|
4
|
-
if (typeof value !== "object" || value === null || Array.isArray(value))
|
|
5
|
-
return fail(path, "type");
|
|
6
|
-
const prototype = Object.getPrototypeOf(value);
|
|
7
|
-
if (prototype !== Object.prototype && prototype !== null)
|
|
8
|
-
return fail(path, "structure");
|
|
9
|
-
const keys = Reflect.ownKeys(value);
|
|
10
|
-
const unknown = keys.find((key) => typeof key !== "string" || !expectedKeys.includes(key));
|
|
11
|
-
if (unknown !== undefined) {
|
|
12
|
-
return fail(typeof unknown === "string" && unknown.length > 0 && unknown.length <= 120
|
|
13
|
-
? [...path, unknown]
|
|
14
|
-
: path, "unknown");
|
|
15
|
-
}
|
|
16
|
-
const entries = [];
|
|
17
|
-
for (const key of expectedKeys) {
|
|
18
|
-
const descriptor = Object.getOwnPropertyDescriptor(value, key);
|
|
19
|
-
if (descriptor === undefined)
|
|
20
|
-
return fail([...path, key], "missing");
|
|
21
|
-
if (!("value" in descriptor) || !descriptor.enumerable)
|
|
22
|
-
return fail([...path, key], "structure");
|
|
23
|
-
entries.push([key, descriptor.value]);
|
|
24
|
-
}
|
|
25
|
-
return Object.fromEntries(entries);
|
|
26
|
-
}
|
|
3
|
+
export const MAX_SIDE_PROFILE_SEGMENTS = 31;
|
|
27
4
|
function point(value, anchor, path, fail) {
|
|
28
|
-
const fields =
|
|
5
|
+
const fields = curveDataObject(value, anchor ? ["radius", "height", "mode"] : ["radius", "height"], path, fail);
|
|
29
6
|
if (fields === undefined)
|
|
30
7
|
return undefined;
|
|
31
8
|
for (const coordinate of ["radius", "height"]) {
|
|
@@ -45,13 +22,13 @@ function point(value, anchor, path, fail) {
|
|
|
45
22
|
}
|
|
46
23
|
return { ...coordinates, mode: fields.mode };
|
|
47
24
|
}
|
|
48
|
-
function
|
|
25
|
+
function readSideProfileValue(value, report) {
|
|
49
26
|
const fail = (path, code) => {
|
|
50
27
|
report?.({ path, code });
|
|
51
28
|
return undefined;
|
|
52
29
|
};
|
|
53
30
|
try {
|
|
54
|
-
const fields =
|
|
31
|
+
const fields = curveDataObject(value, ["version", "start", "segments"], [], fail);
|
|
55
32
|
if (fields === undefined)
|
|
56
33
|
return undefined;
|
|
57
34
|
if (fields.version !== 1)
|
|
@@ -64,29 +41,9 @@ function readProfileValue(value, report) {
|
|
|
64
41
|
if (!Array.isArray(fields.segments))
|
|
65
42
|
return fail(["segments"], "type");
|
|
66
43
|
const segments = fields.segments;
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
if (lengthDescriptor === undefined || !("value" in lengthDescriptor))
|
|
71
|
-
return fail(["segments"], "structure");
|
|
72
|
-
const length = lengthDescriptor.value;
|
|
73
|
-
if (typeof length !== "number" ||
|
|
74
|
-
!Number.isInteger(length) ||
|
|
75
|
-
length < 1 ||
|
|
76
|
-
length > MAX_PROFILE_SEGMENTS)
|
|
77
|
-
return fail(["segments"], "length");
|
|
78
|
-
const keys = Reflect.ownKeys(segments);
|
|
79
|
-
if (keys.length !== length + 1 ||
|
|
80
|
-
!keys.every((key) => key === "length"
|
|
81
|
-
? true
|
|
82
|
-
: typeof key === "string" &&
|
|
83
|
-
Number.isSafeInteger(Number(key)) &&
|
|
84
|
-
Number(key) >= 0 &&
|
|
85
|
-
Number(key) < length &&
|
|
86
|
-
String(Number(key)) === key)) {
|
|
87
|
-
const missingIndex = Array.from({ length }, (_, index) => index).find((index) => !Object.hasOwn(segments, String(index)));
|
|
88
|
-
return fail(missingIndex === undefined ? ["segments"] : ["segments", missingIndex], missingIndex === undefined ? "structure" : "missing");
|
|
89
|
-
}
|
|
44
|
+
const length = curveSegmentCount(segments, 1, MAX_SIDE_PROFILE_SEGMENTS, fail);
|
|
45
|
+
if (length === undefined)
|
|
46
|
+
return undefined;
|
|
90
47
|
const parsedSegments = [];
|
|
91
48
|
let previousHeight = start.height;
|
|
92
49
|
for (let index = 0; index < length; index += 1) {
|
|
@@ -97,9 +54,7 @@ function readProfileValue(value, report) {
|
|
|
97
54
|
const segment = descriptor.value;
|
|
98
55
|
if (typeof segment !== "object" || segment === null || Array.isArray(segment))
|
|
99
56
|
return fail(segmentPath, "type");
|
|
100
|
-
const typeDescriptor =
|
|
101
|
-
? Object.getOwnPropertyDescriptor(segment, "type")
|
|
102
|
-
: undefined;
|
|
57
|
+
const typeDescriptor = Object.getOwnPropertyDescriptor(segment, "type");
|
|
103
58
|
if (typeDescriptor === undefined)
|
|
104
59
|
return fail([...segmentPath, "type"], "missing");
|
|
105
60
|
if (!("value" in typeDescriptor))
|
|
@@ -107,7 +62,7 @@ function readProfileValue(value, report) {
|
|
|
107
62
|
const type = typeDescriptor.value;
|
|
108
63
|
if (type !== "line" && type !== "cubic")
|
|
109
64
|
return fail([...segmentPath, "type"], "choice");
|
|
110
|
-
const segmentFields =
|
|
65
|
+
const segmentFields = curveDataObject(segment, type === "line" ? ["type", "end"] : ["type", "end", "control1", "control2"], segmentPath, fail);
|
|
111
66
|
if (segmentFields === undefined)
|
|
112
67
|
return undefined;
|
|
113
68
|
if (segmentFields.type !== type)
|
|
@@ -144,22 +99,22 @@ function readProfileValue(value, report) {
|
|
|
144
99
|
}
|
|
145
100
|
}
|
|
146
101
|
/** Internal diagnostics use the same accessor-safe reader as profile cloning and predicates. */
|
|
147
|
-
export function
|
|
102
|
+
export function sideProfileValueProblem(value) {
|
|
148
103
|
let problem;
|
|
149
|
-
const parsed =
|
|
104
|
+
const parsed = readSideProfileValue(value, (entry) => {
|
|
150
105
|
problem = entry;
|
|
151
106
|
});
|
|
152
107
|
return parsed === undefined ? (problem ?? { code: "structure", path: [] }) : undefined;
|
|
153
108
|
}
|
|
154
109
|
/** Strictly checks portable profile data without evaluating getters or invoking curve libraries. */
|
|
155
|
-
export function
|
|
156
|
-
return
|
|
110
|
+
export function isSideProfileValue(value) {
|
|
111
|
+
return readSideProfileValue(value) !== undefined;
|
|
157
112
|
}
|
|
158
113
|
/** Returns a fresh, deeply frozen portable profile, including its editing intent. */
|
|
159
|
-
export function
|
|
160
|
-
const canonical =
|
|
114
|
+
export function cloneSideProfileValue(value) {
|
|
115
|
+
const canonical = readSideProfileValue(value);
|
|
161
116
|
if (canonical === undefined)
|
|
162
|
-
throw new TypeError("
|
|
117
|
+
throw new TypeError("Side profile must be a bounded, normalized side outline.");
|
|
163
118
|
const clonePoint = (entry) => Object.freeze({ radius: entry.radius, height: entry.height });
|
|
164
119
|
const cloneAnchor = (entry) => Object.freeze({ radius: entry.radius, height: entry.height, mode: entry.mode });
|
|
165
120
|
return Object.freeze({
|
|
@@ -176,11 +131,11 @@ export function cloneProfileValue(value) {
|
|
|
176
131
|
});
|
|
177
132
|
}
|
|
178
133
|
/** Compares the serialized shape and editing intent rather than object identity. */
|
|
179
|
-
export function
|
|
134
|
+
export function sideProfileValuesEqual(previous, next) {
|
|
180
135
|
if (Object.is(previous, next))
|
|
181
136
|
return true;
|
|
182
|
-
const previousData =
|
|
183
|
-
const nextData =
|
|
137
|
+
const previousData = readSideProfileValue(previous);
|
|
138
|
+
const nextData = readSideProfileValue(next);
|
|
184
139
|
if (previousData === undefined || nextData === undefined)
|
|
185
140
|
return false;
|
|
186
141
|
const pointsEqual = (left, right) => Object.is(left.radius, right.radius) && Object.is(left.height, right.height);
|
|
@@ -202,4 +157,4 @@ export function profileValuesEqual(previous, next) {
|
|
|
202
157
|
pointsEqual(segment.control2, other.control2));
|
|
203
158
|
}));
|
|
204
159
|
}
|
|
205
|
-
//# sourceMappingURL=profiles.js.map
|
|
160
|
+
//# sourceMappingURL=side-profiles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"side-profiles.js","sourceRoot":"","sources":["../src/side-profiles.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { GeneratedModel, MeshTopologyMode, ParameterValidationResult, ParameterValues } from "./contracts.js";
|
|
1
|
+
import type { GeneratedModel, GeneratedModelDelivery, MeshTopologyMode, ParameterValidationResult, ParameterValues } from "./contracts.js";
|
|
2
2
|
import type { GeneratorRuntimeReference } from "./generator-packages.js";
|
|
3
3
|
export interface GenerateRequest {
|
|
4
4
|
readonly type: "generate";
|
|
@@ -33,7 +33,7 @@ export interface ValidationSuccess {
|
|
|
33
33
|
export interface GenerationSuccess {
|
|
34
34
|
readonly type: "generation-success";
|
|
35
35
|
readonly requestId: number;
|
|
36
|
-
readonly model:
|
|
36
|
+
readonly model: GeneratedModelDelivery;
|
|
37
37
|
/** High-resolution epoch milliseconds captured immediately before posting the completed model. */
|
|
38
38
|
readonly sentAt: number;
|
|
39
39
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker-contracts.d.ts","sourceRoot":"","sources":["../src/worker-contracts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,gBAAgB,EAChB,yBAAyB,EACzB,eAAe,EAChB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAEzE,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAC5C,QAAQ,CAAC,OAAO,EAAE,yBAAyB,CAAC;IAC5C,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC;CACtC;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,yBAAyB,CAAC;IAC5C,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC;CACtC;AAED,MAAM,WAAW,gBAAgB;IAC/B,0FAA0F;IAC1F,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACvD,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,0EAA0E;IAC1E,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAC;IACpC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,yBAAyB,CAAC;CAChD;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAC;IACpC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"worker-contracts.d.ts","sourceRoot":"","sources":["../src/worker-contracts.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker-contracts.js","sourceRoot":"","sources":["../src/worker-contracts.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"worker-contracts.js","sourceRoot":"","sources":["../src/worker-contracts.ts"],"names":[],"mappings":"AAmDA,oGAAoG;AACpG,MAAM,UAAU,qBAAqB,CAAC,QAAiB;IACrD,MAAM,UAAU,GACd,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;QAC3E,CAAC,CAAC,MAAM,CAAC,wBAAwB,CAAC,QAAQ,EAAE,QAAQ,CAAC;QACrD,CAAC,CAAC,SAAS,CAAC;IAChB,MAAM,KAAK,GACT,UAAU,KAAK,SAAS,IAAI,OAAO,IAAI,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IACnF,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QACvE,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;IACrF,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@metamesh/generator-sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.11.0",
|
|
4
4
|
"description": "Portable contracts and helpers for MetaMesh Generators.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
|
@@ -38,24 +38,24 @@
|
|
|
38
38
|
"./fonts": {
|
|
39
39
|
"types": "./dist/fonts.d.ts",
|
|
40
40
|
"import": "./dist/fonts.js"
|
|
41
|
-
}
|
|
41
|
+
},
|
|
42
|
+
"./parameters.schema.json": "./dist/parameters.schema.json"
|
|
42
43
|
},
|
|
43
44
|
"publishConfig": {
|
|
44
45
|
"access": "public",
|
|
45
46
|
"registry": "https://registry.npmjs.org/"
|
|
46
47
|
},
|
|
47
48
|
"dependencies": {
|
|
48
|
-
"zod": "4.6.
|
|
49
|
+
"zod": "4.6.7"
|
|
49
50
|
},
|
|
50
51
|
"devDependencies": {
|
|
51
52
|
"@metamesh/config": "0.0.0",
|
|
52
|
-
"@vitest/coverage-v8": "^5.0.
|
|
53
|
-
"esbuild": "^0.28.2",
|
|
53
|
+
"@vitest/coverage-v8": "^5.0.5",
|
|
54
54
|
"fast-check": "4.10.2",
|
|
55
|
-
"vitest": "^5.0.
|
|
55
|
+
"vitest": "^5.0.5"
|
|
56
56
|
},
|
|
57
57
|
"scripts": {
|
|
58
|
-
"build": "node ../../scripts/clean-dist.mjs && tsc -p tsconfig.build.json",
|
|
58
|
+
"build": "node ../../scripts/clean-dist.mjs && tsc -p tsconfig.build.json && node scripts/emit-parameter-schema.mjs",
|
|
59
59
|
"lint": "eslint .",
|
|
60
60
|
"test": "vitest run src",
|
|
61
61
|
"typecheck": "tsc --noEmit --pretty false"
|
package/dist/cross-sections.d.ts
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import type { ParameterIssueCode } from "./contracts.js";
|
|
2
|
-
/** Maximum number of straight or cubic segments in an editable closed cross section. */
|
|
3
|
-
export declare const MAX_CROSS_SECTION_SEGMENTS = 32;
|
|
4
|
-
/** Normalized planar coordinates, with X rightward and Y upward, in the unit square. */
|
|
5
|
-
export interface CrossSectionPoint {
|
|
6
|
-
readonly x: number;
|
|
7
|
-
readonly y: number;
|
|
8
|
-
}
|
|
9
|
-
/** Editing intent accompanies the explicit curve controls; no tangent is inferred at runtime. */
|
|
10
|
-
export interface CrossSectionAnchor extends CrossSectionPoint {
|
|
11
|
-
readonly mode: "smooth" | "corner";
|
|
12
|
-
}
|
|
13
|
-
export type CrossSectionSegment = {
|
|
14
|
-
readonly type: "line";
|
|
15
|
-
readonly end: CrossSectionAnchor;
|
|
16
|
-
} | {
|
|
17
|
-
readonly type: "cubic";
|
|
18
|
-
readonly control1: CrossSectionPoint;
|
|
19
|
-
readonly control2: CrossSectionPoint;
|
|
20
|
-
readonly end: CrossSectionAnchor;
|
|
21
|
-
};
|
|
22
|
-
/** One explicitly closed planar contour. Generators own physical scaling and topology checks. */
|
|
23
|
-
export interface CrossSectionValue {
|
|
24
|
-
readonly version: 1;
|
|
25
|
-
readonly start: CrossSectionAnchor;
|
|
26
|
-
readonly segments: readonly CrossSectionSegment[];
|
|
27
|
-
}
|
|
28
|
-
interface CrossSectionValueProblem {
|
|
29
|
-
readonly code: ParameterIssueCode;
|
|
30
|
-
readonly path: readonly (number | string)[];
|
|
31
|
-
}
|
|
32
|
-
/** Internal diagnostics share the accessor-safe reader used by predicates and cloning. */
|
|
33
|
-
export declare function crossSectionValueProblem(value: unknown): CrossSectionValueProblem | undefined;
|
|
34
|
-
/** Checks portable data and explicit closure without evaluating getters or inspecting topology. */
|
|
35
|
-
export declare function isCrossSectionValue(value: unknown): value is CrossSectionValue;
|
|
36
|
-
/** Returns a fresh, deeply frozen closed contour, including its editing intent. */
|
|
37
|
-
export declare function cloneCrossSectionValue(value: CrossSectionValue): CrossSectionValue;
|
|
38
|
-
/** Compares the serialized shape and editing intent rather than object identity. */
|
|
39
|
-
export declare function crossSectionValuesEqual(previous: CrossSectionValue, next: CrossSectionValue): boolean;
|
|
40
|
-
export {};
|
|
41
|
-
//# sourceMappingURL=cross-sections.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cross-sections.d.ts","sourceRoot":"","sources":["../src/cross-sections.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEzD,wFAAwF;AACxF,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAE7C,wFAAwF;AACxF,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,iGAAiG;AACjG,MAAM,WAAW,kBAAmB,SAAQ,iBAAiB;IAC3D,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAAC;CACpC;AAED,MAAM,MAAM,mBAAmB,GAC3B;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,kBAAkB,CAAA;CAAE,GAC3D;IACE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IACrC,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IACrC,QAAQ,CAAC,GAAG,EAAE,kBAAkB,CAAC;CAClC,CAAC;AAEN,iGAAiG;AACjG,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,kBAAkB,CAAC;IACnC,QAAQ,CAAC,QAAQ,EAAE,SAAS,mBAAmB,EAAE,CAAC;CACnD;AAED,UAAU,wBAAwB;IAChC,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;IAClC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;CAC7C;AAmKD,0FAA0F;AAC1F,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,wBAAwB,GAAG,SAAS,CAM7F;AAED,mGAAmG;AACnG,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,iBAAiB,CAE9E;AAED,mFAAmF;AACnF,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,iBAAiB,GAAG,iBAAiB,CA0BlF;AAED,oFAAoF;AACpF,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,iBAAiB,EAC3B,IAAI,EAAE,iBAAiB,GACtB,OAAO,CA4BT"}
|