@metamesh/generator-sdk 0.17.0 → 0.18.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 +158 -0
- package/README.md +96 -69
- package/dist/authoring.d.ts +12 -5
- package/dist/authoring.d.ts.map +1 -1
- package/dist/authoring.js +7 -3
- package/dist/authoring.js.map +1 -1
- package/dist/docs/guides/authoring.md +8 -8
- package/dist/docs/guides/package.md +96 -69
- package/dist/docs/guides/parameters.md +29 -29
- package/dist/docs/manifest.json +173 -201
- package/dist/docs/reference/fonts/FontSelection.md +1 -1
- package/dist/docs/reference/fonts/isFontSelection.md +1 -1
- package/dist/docs/reference/index/ArrayParameterDefinition.md +1 -1
- package/dist/docs/reference/index/BaseParameterDefinition.md +1 -1
- package/dist/docs/reference/index/BooleanParameterDefinition.md +1 -1
- package/dist/docs/reference/index/ChoiceOption.md +1 -1
- package/dist/docs/reference/index/ChoiceParameterDefinition.md +1 -1
- package/dist/docs/reference/index/ChoiceSetParameterDefinition.md +1 -1
- package/dist/docs/reference/index/ColorParameterDefinition.md +1 -1
- package/dist/docs/reference/index/ConditionExpression.md +1 -1
- package/dist/docs/reference/index/ContourAnchor.md +1 -1
- package/dist/docs/reference/index/ContourParameterDefinition.md +1 -1
- package/dist/docs/reference/index/ContourParameterUi.md +1 -1
- package/dist/docs/reference/index/ContourPoint.md +1 -1
- package/dist/docs/reference/index/ContourSegment.md +1 -1
- package/dist/docs/reference/index/ContourValue.md +1 -1
- package/dist/docs/reference/index/FontParameterDefinition.md +1 -1
- package/dist/docs/reference/index/FontSelection.md +1 -1
- package/dist/docs/reference/index/GeneratorDefinition.md +1 -1
- package/dist/docs/reference/index/GeneratorIssue.md +1 -1
- package/dist/docs/reference/index/GeneratorModule.md +5 -6
- package/dist/docs/reference/index/GeneratorModuleOptions.md +2 -2
- package/dist/docs/reference/index/GeneratorParamId.md +1 -1
- package/dist/docs/reference/index/GeneratorParams.md +1 -1
- package/dist/docs/reference/index/GeneratorPreset.md +1 -1
- package/dist/docs/reference/index/GeneratorProgram.md +1 -1
- package/dist/docs/reference/index/GeneratorServices.md +1 -1
- package/dist/docs/reference/index/GeneratorTextArcBaseline.md +1 -1
- package/dist/docs/reference/index/GeneratorTextLayout.md +1 -1
- package/dist/docs/reference/index/GeneratorTextMetrics.md +1 -1
- package/dist/docs/reference/index/GeneratorTextOptions.md +1 -1
- package/dist/docs/reference/index/MAX_CONTOUR_SEGMENTS.md +1 -1
- package/dist/docs/reference/index/MAX_SIDE_PROFILE_SEGMENTS.md +1 -1
- package/dist/docs/reference/index/NumberArrayItemDefinition.md +1 -1
- package/dist/docs/reference/index/NumberArrayParameterDefinition.md +1 -1
- package/dist/docs/reference/index/NumberParameterDefinition.md +1 -1
- package/dist/docs/reference/index/NumberParameterUi.md +1 -1
- package/dist/docs/reference/index/ParameterDefinition.md +1 -1
- package/dist/docs/reference/index/ParameterDefinitionDocument.md +1 -1
- package/dist/docs/reference/index/ParameterGroup.md +1 -1
- package/dist/docs/reference/index/ParameterIssue.md +1 -1
- package/dist/docs/reference/index/ParameterIssueCode.md +1 -1
- package/dist/docs/reference/index/ParameterIssueSeverity.md +1 -1
- package/dist/docs/reference/index/ParameterScaleReference.md +1 -1
- package/dist/docs/reference/index/ParameterUi.md +1 -1
- package/dist/docs/reference/index/ParameterValidationResult.md +1 -1
- package/dist/docs/reference/index/ParameterValue.md +1 -1
- package/dist/docs/reference/index/ParameterValues.md +1 -1
- package/dist/docs/reference/index/RowParameterUi.md +1 -1
- package/dist/docs/reference/index/ScalarParameterValue.md +1 -1
- package/dist/docs/reference/index/SideProfileAnchor.md +1 -1
- package/dist/docs/reference/index/SideProfileParameterDefinition.md +1 -1
- package/dist/docs/reference/index/SideProfileParameterUi.md +1 -1
- package/dist/docs/reference/index/SideProfilePoint.md +1 -1
- package/dist/docs/reference/index/SideProfileSegment.md +1 -1
- package/dist/docs/reference/index/SideProfileValue.md +1 -1
- package/dist/docs/reference/index/SourceVisibility.md +1 -1
- package/dist/docs/reference/index/StringArrayItemDefinition.md +1 -1
- package/dist/docs/reference/index/StringArrayParameterDefinition.md +1 -1
- package/dist/docs/reference/index/SvgParameterDefinition.md +1 -1
- package/dist/docs/reference/index/TextParameterDefinition.md +1 -1
- package/dist/docs/reference/index/UNPREPARED_GENERATOR_SERVICES.md +1 -1
- package/dist/docs/reference/index/cloneContourValue.md +1 -1
- package/dist/docs/reference/index/cloneSideProfileValue.md +1 -1
- package/dist/docs/reference/index/contourValuesEqual.md +1 -1
- package/dist/docs/reference/index/defineGenerator.md +6 -4
- package/dist/docs/reference/index/defineGeneratorModule.md +2 -2
- package/dist/docs/reference/index/definePresets.md +4 -4
- package/dist/docs/reference/index/evaluateCondition.md +1 -1
- package/dist/docs/reference/index/isContourValue.md +1 -1
- package/dist/docs/reference/index/isFontSelection.md +1 -1
- package/dist/docs/reference/index/isSideProfileValue.md +1 -1
- package/dist/docs/reference/index/sideProfileValuesEqual.md +1 -1
- package/dist/docs/reference/modeling/GeneratorModel.md +10 -0
- package/dist/docs/reference/modeling/ModelDeliveryEncoder.md +22 -0
- package/dist/docs/reference/modeling/defineGeneratorModel.md +2 -2
- package/dist/docs/reference/modeling/parseGeneratorModel.md +15 -0
- package/dist/docs/reference/modeling/toWorldMeshes.md +10 -0
- package/dist/docs/reference/packages/GENERATOR_PACKAGE_FORMAT_VERSION.md +2 -2
- package/dist/docs/reference/packages/GeneratorAccess.md +1 -1
- package/dist/docs/reference/packages/GeneratorDefinitionIssue.md +1 -1
- package/dist/docs/reference/packages/GeneratorDefinitionParseResult.md +1 -1
- package/dist/docs/reference/packages/GeneratorDescriptor.md +1 -1
- package/dist/docs/reference/packages/GeneratorPackageManifest.md +1 -1
- package/dist/docs/reference/packages/GeneratorPackageSource.md +1 -1
- package/dist/docs/reference/packages/GeneratorPackageValidationError.md +1 -1
- package/dist/docs/reference/packages/GeneratorPreset.md +1 -1
- package/dist/docs/reference/packages/GeneratorRuntimeReference.md +1 -1
- package/dist/docs/reference/packages/InstalledGenerator.md +1 -1
- package/dist/docs/reference/packages/MAX_ARRAY_ITEMS.md +1 -1
- package/dist/docs/reference/packages/MAX_CONDITION_BRANCHES.md +1 -1
- package/dist/docs/reference/packages/MAX_CONDITION_DEPTH.md +1 -1
- package/dist/docs/reference/packages/MAX_DESCRIPTOR_LIST_ITEMS.md +1 -1
- package/dist/docs/reference/packages/MAX_GENERATOR_ID_LENGTH.md +2 -2
- package/dist/docs/reference/packages/MAX_GENERATOR_PACKAGE_BYTES.md +1 -1
- package/dist/docs/reference/packages/MAX_GENERATOR_PRESETS.md +1 -1
- package/dist/docs/reference/packages/MAX_METADATA_TEXT_LENGTH.md +2 -2
- package/dist/docs/reference/packages/MAX_PARAMETERS.md +1 -1
- package/dist/docs/reference/packages/MAX_PARAMETER_GROUPS.md +1 -1
- package/dist/docs/reference/packages/MAX_PARAMETER_OPTIONS.md +1 -1
- package/dist/docs/reference/packages/MAX_TEXT_PARAMETER_LENGTH.md +2 -2
- package/dist/docs/reference/packages/METAMESH_RUNTIME_VERSION.md +2 -2
- package/dist/docs/reference/packages/compareSemanticVersions.md +1 -1
- package/dist/docs/reference/packages/isRuntimeCompatible.md +1 -1
- package/dist/docs/reference/packages/parseGeneratorDefinition.md +1 -1
- package/dist/docs/reference/packages/parseGeneratorDescriptor.md +1 -1
- package/dist/docs/reference/packages/parseGeneratorPackageManifest.md +1 -1
- package/dist/docs/reference/packages/parseParameterDefinitionDocument.md +1 -1
- package/dist/docs/reference/packages/safeParseGeneratorDefinition.md +1 -1
- package/dist/docs/reference/packages/safeParseParameterDefinitionDocument.md +1 -1
- package/dist/docs/reference/packages/validateGeneratorPresets.md +1 -1
- package/dist/docs/reference/parameters/EMPTY_SVG_PARAMETER_DEFAULT.md +1 -1
- package/dist/docs/reference/parameters/MAX_PARAMETER_ISSUES.md +1 -1
- package/dist/docs/reference/parameters/MAX_PARAMETER_ISSUE_MESSAGE_LENGTH.md +1 -1
- package/dist/docs/reference/parameters/MAX_PROJECT_SVG_PARAMETER_BYTES.md +1 -1
- package/dist/docs/reference/parameters/MAX_SVG_PARAMETER_BYTES.md +1 -1
- package/dist/docs/reference/parameters/ParamCodec.md +1 -1
- package/dist/docs/reference/parameters/ParamDecodeCode.md +1 -1
- package/dist/docs/reference/parameters/ParamDecodeError.md +1 -1
- package/dist/docs/reference/parameters/ParamDecodeIssue.md +3 -3
- package/dist/docs/reference/parameters/ParamParseResult.md +1 -1
- package/dist/docs/reference/parameters/aggregateParameterIssues.md +1 -1
- package/dist/docs/reference/parameters/createParamCodec.md +1 -1
- package/dist/docs/reference/parameters/getDefaultParameters.md +1 -1
- package/dist/docs/reference/parameters/normalizeParameters.md +1 -1
- package/dist/docs/reference/parameters/parameterValueEquals.md +1 -1
- package/dist/docs/reference/parameters/parseParameterIssues.md +1 -1
- package/dist/docs/reference/parameters/svgParameterBytes.md +1 -1
- package/dist/docs/reference/runtime/ExecuteGeneratorOptions.md +2 -4
- package/dist/docs/reference/runtime/Export3mfRequest.md +2 -2
- package/dist/docs/reference/runtime/ExportError.md +1 -1
- package/dist/docs/reference/runtime/ExportSuccess.md +1 -1
- package/dist/docs/reference/runtime/ExportedFile.md +1 -1
- package/dist/docs/reference/runtime/GenerateRequest.md +1 -1
- package/dist/docs/reference/runtime/GenerationError.md +1 -1
- package/dist/docs/reference/runtime/GenerationInvalid.md +1 -1
- package/dist/docs/reference/runtime/GenerationSuccess.md +2 -2
- package/dist/docs/reference/runtime/GeneratorExecutionGenerated.md +1 -1
- package/dist/docs/reference/runtime/GeneratorExecutionInvalid.md +2 -3
- package/dist/docs/reference/runtime/GeneratorExecutionResult.md +2 -2
- package/dist/docs/reference/runtime/MeshResourceData.md +19 -0
- package/dist/docs/reference/runtime/MeshTopologyMode.md +1 -1
- package/dist/docs/reference/runtime/ModelBounds.md +1 -1
- package/dist/docs/reference/runtime/ModelData.md +17 -0
- package/dist/docs/reference/runtime/ModelDelivery.md +12 -0
- package/dist/docs/reference/runtime/ModelPartData.md +35 -0
- package/dist/docs/reference/runtime/ModelStats.md +6 -4
- package/dist/docs/reference/runtime/ModelTimings.md +10 -9
- package/dist/docs/reference/runtime/ParsedGeneratorModule.md +1 -1
- package/dist/docs/reference/runtime/PartDelivery.md +15 -0
- package/dist/docs/reference/runtime/{GeneratedPartsDecoder.md → PartDeliveryDecoder.md} +5 -5
- package/dist/docs/reference/runtime/{GeneratedPartsLimits.md → PartDeliveryLimits.md} +3 -3
- package/dist/docs/reference/runtime/RuntimeError.md +1 -1
- package/dist/docs/reference/runtime/ValidateRequest.md +1 -1
- package/dist/docs/reference/runtime/ValidationError.md +1 -1
- package/dist/docs/reference/runtime/ValidationSuccess.md +1 -1
- package/dist/docs/reference/runtime/WorkerRequest.md +1 -1
- package/dist/docs/reference/runtime/WorkerResponse.md +1 -1
- package/dist/docs/reference/runtime/canonicalizeParameters.md +10 -0
- package/dist/docs/reference/runtime/executeGenerator.md +3 -3
- package/dist/docs/reference/runtime/generationIssues.md +1 -1
- package/dist/docs/reference/runtime/parseGenerationSentAt.md +1 -1
- package/dist/docs/reference/runtime/parseGeneratorModule.md +3 -3
- package/dist/docs/reference/runtime/{parseGeneratedParts.md → parseModelParts.md} +3 -3
- package/dist/generator-module.d.ts +11 -8
- package/dist/generator-module.d.ts.map +1 -1
- package/dist/generator-module.js +3 -2
- package/dist/generator-module.js.map +1 -1
- package/dist/generator-package/constants.d.ts +3 -11
- package/dist/generator-package/constants.d.ts.map +1 -1
- package/dist/generator-package/constants.js +4 -12
- package/dist/generator-package/constants.js.map +1 -1
- package/dist/generator-package/contracts.d.ts +15 -0
- package/dist/generator-package/contracts.d.ts.map +1 -0
- package/dist/generator-package/contracts.js.map +1 -0
- package/dist/generator-package/index.d.ts +10 -30
- package/dist/generator-package/index.d.ts.map +1 -1
- package/dist/generator-package/index.js +7 -85
- package/dist/generator-package/index.js.map +1 -1
- package/dist/generator-package/parse-package.d.ts +5 -0
- package/dist/generator-package/parse-package.d.ts.map +1 -0
- package/dist/generator-package/parse-package.js +38 -0
- package/dist/generator-package/parse-package.js.map +1 -0
- package/dist/generator-package/schemas/descriptor.schema.d.ts +2 -2
- package/dist/generator-package/schemas/descriptor.schema.d.ts.map +1 -1
- package/dist/generator-package/schemas/descriptor.schema.js +2 -2
- package/dist/generator-package/schemas/descriptor.schema.js.map +1 -1
- package/dist/generator-package/schemas/manifest.schema.d.ts +16 -16
- package/dist/generator-package/schemas/manifest.schema.d.ts.map +1 -1
- package/dist/generator-package/schemas/manifest.schema.js +4 -4
- package/dist/generator-package/schemas/manifest.schema.js.map +1 -1
- package/dist/generator-package/validate-manifest.d.ts +2 -2
- package/dist/generator-package/validate-manifest.d.ts.map +1 -1
- package/dist/generator-package/validate-manifest.js +15 -20
- package/dist/generator-package/validate-manifest.js.map +1 -1
- package/dist/generator-package/versions.js +2 -2
- package/dist/generator-package/versions.js.map +1 -1
- package/dist/generator-package/versions.spec.js +5 -5
- package/dist/generator-package/versions.spec.js.map +1 -1
- package/dist/index.d.ts +8 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/metadata-limits.d.ts +5 -0
- package/dist/metadata-limits.d.ts.map +1 -0
- package/dist/metadata-limits.js +5 -0
- package/dist/metadata-limits.js.map +1 -0
- package/dist/modeling-delivery.d.ts +20 -0
- package/dist/modeling-delivery.d.ts.map +1 -0
- package/dist/modeling-delivery.js +54 -0
- package/dist/modeling-delivery.js.map +1 -0
- package/dist/modeling.d.ts +13 -2
- package/dist/modeling.d.ts.map +1 -1
- package/dist/modeling.js +12 -1
- package/dist/modeling.js.map +1 -1
- package/dist/parameters/conditions.d.ts.map +1 -0
- package/dist/parameters/conditions.js.map +1 -0
- package/dist/parameters/contours.d.ts.map +1 -0
- package/dist/parameters/contours.js.map +1 -0
- package/dist/parameters/contracts.d.ts +69 -0
- package/dist/parameters/contracts.d.ts.map +1 -0
- package/dist/parameters/contracts.js +2 -0
- package/dist/{contracts.js.map → parameters/contracts.js.map} +1 -1
- package/dist/parameters/curve-data.d.ts.map +1 -0
- package/dist/parameters/curve-data.js.map +1 -0
- package/dist/{parameter-contracts.d.ts → parameters/definitions.d.ts} +2 -2
- package/dist/parameters/definitions.d.ts.map +1 -0
- package/dist/parameters/definitions.js +2 -0
- package/dist/parameters/definitions.js.map +1 -0
- package/dist/parameters/issues.d.ts +2 -1
- package/dist/parameters/issues.d.ts.map +1 -1
- package/dist/parameters/issues.js +4 -3
- package/dist/parameters/issues.js.map +1 -1
- package/dist/parameters/limits.d.ts +9 -0
- package/dist/parameters/limits.d.ts.map +1 -0
- package/dist/parameters/limits.js +9 -0
- package/dist/parameters/limits.js.map +1 -0
- package/dist/parameters/recovery.d.ts +2 -1
- package/dist/parameters/recovery.d.ts.map +1 -1
- package/dist/parameters/recovery.js +4 -3
- package/dist/parameters/recovery.js.map +1 -1
- package/dist/parameters/side-profiles.d.ts.map +1 -0
- package/dist/parameters/side-profiles.js.map +1 -0
- package/dist/parameters/strict.d.ts +4 -3
- package/dist/parameters/strict.d.ts.map +1 -1
- package/dist/parameters/strict.js +11 -7
- package/dist/parameters/strict.js.map +1 -1
- package/dist/parameters/values.d.ts +1 -1
- package/dist/parameters/values.d.ts.map +1 -1
- package/dist/parameters/values.js +2 -2
- package/dist/parameters/values.js.map +1 -1
- package/dist/parameters.d.ts +0 -2
- package/dist/parameters.d.ts.map +1 -1
- package/dist/parameters.js +0 -1
- package/dist/parameters.js.map +1 -1
- package/dist/runtime/execute-generator.d.ts +6 -9
- package/dist/runtime/execute-generator.d.ts.map +1 -1
- package/dist/runtime/execute-generator.js +11 -11
- package/dist/runtime/execute-generator.js.map +1 -1
- package/dist/runtime/model-contracts.d.ts +103 -0
- package/dist/runtime/model-contracts.d.ts.map +1 -0
- package/dist/runtime/model-contracts.js +2 -0
- package/dist/runtime/model-contracts.js.map +1 -0
- package/dist/runtime/parameter-identities.d.ts +4 -0
- package/dist/runtime/parameter-identities.d.ts.map +1 -0
- package/dist/runtime/parameter-identities.js +11 -0
- package/dist/runtime/parameter-identities.js.map +1 -0
- package/dist/runtime/parse-generator-module.d.ts +2 -3
- package/dist/runtime/parse-generator-module.d.ts.map +1 -1
- package/dist/runtime/parse-generator-module.js +7 -19
- package/dist/runtime/parse-generator-module.js.map +1 -1
- package/dist/runtime/{generated-parts.d.ts → part-delivery.d.ts} +11 -7
- package/dist/runtime/part-delivery.d.ts.map +1 -0
- package/dist/runtime/{generated-parts.js → part-delivery.js} +69 -44
- package/dist/runtime/part-delivery.js.map +1 -0
- package/dist/runtime/worker-contracts.d.ts +4 -3
- package/dist/runtime/worker-contracts.d.ts.map +1 -1
- package/dist/runtime/worker-contracts.js.map +1 -1
- package/dist/runtime.d.ts +6 -4
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +3 -2
- package/dist/runtime.js.map +1 -1
- package/dist/{generator-package → validation}/errors.d.ts +1 -1
- package/dist/validation/errors.d.ts.map +1 -0
- package/dist/validation/errors.js.map +1 -0
- package/dist/validation/parse-definition.d.ts +9 -0
- package/dist/validation/parse-definition.d.ts.map +1 -0
- package/dist/validation/parse-definition.js +49 -0
- package/dist/validation/parse-definition.js.map +1 -0
- package/dist/validation/portable-data.d.ts.map +1 -0
- package/dist/validation/portable-data.js.map +1 -0
- package/dist/{generator-package → validation}/schemas/common.schema.d.ts +1 -1
- package/dist/validation/schemas/common.schema.d.ts.map +1 -0
- package/dist/{generator-package → validation}/schemas/common.schema.js +3 -2
- package/dist/validation/schemas/common.schema.js.map +1 -0
- package/dist/{generator-package → validation}/schemas/condition.schema.d.ts +2 -2
- package/dist/validation/schemas/condition.schema.d.ts.map +1 -0
- package/dist/{generator-package → validation}/schemas/condition.schema.js +2 -2
- package/dist/validation/schemas/condition.schema.js.map +1 -0
- package/dist/{generator-package → validation}/schemas/definition.schema.d.ts +23 -23
- package/dist/validation/schemas/definition.schema.d.ts.map +1 -0
- package/dist/{generator-package → validation}/schemas/definition.schema.js +2 -2
- package/dist/validation/schemas/definition.schema.js.map +1 -0
- package/dist/{generator-package → validation}/schemas/parameter-document-json-schema.d.ts +1 -1
- package/dist/validation/schemas/parameter-document-json-schema.d.ts.map +1 -0
- package/dist/{generator-package → validation}/schemas/parameter-document-json-schema.js +1 -1
- package/dist/validation/schemas/parameter-document-json-schema.js.map +1 -0
- package/dist/{generator-package → validation}/schemas/parameter.schema.d.ts +12 -12
- package/dist/validation/schemas/parameter.schema.d.ts.map +1 -0
- package/dist/{generator-package → validation}/schemas/parameter.schema.js +4 -4
- package/dist/validation/schemas/parameter.schema.js.map +1 -0
- package/dist/validation/schemas/preset.schema.d.ts +5 -0
- package/dist/validation/schemas/preset.schema.d.ts.map +1 -0
- package/dist/{generator-package → validation}/schemas/preset.schema.js +4 -4
- package/dist/validation/schemas/preset.schema.js.map +1 -0
- package/dist/{generator-package → validation}/validate-definition.d.ts +1 -1
- package/dist/validation/validate-definition.d.ts.map +1 -0
- package/dist/{generator-package → validation}/validate-definition.js +2 -2
- package/dist/validation/validate-definition.js.map +1 -0
- package/dist/validation/version-format.d.ts.map +1 -0
- package/dist/validation/version-format.js.map +1 -0
- package/package.json +6 -3
- package/dist/conditions.d.ts.map +0 -1
- package/dist/conditions.js.map +0 -1
- package/dist/contours.d.ts.map +0 -1
- package/dist/contours.js.map +0 -1
- package/dist/contracts.d.ts +0 -139
- package/dist/contracts.d.ts.map +0 -1
- package/dist/curve-data.d.ts.map +0 -1
- package/dist/curve-data.js.map +0 -1
- package/dist/docs/reference/packages/definitionIssuesFromZod.md +0 -10
- package/dist/docs/reference/packages/validationErrorFromIssues.md +0 -9
- package/dist/docs/reference/packages/validationErrorFromZod.md +0 -9
- package/dist/docs/reference/parameters/PreparedParameters.md +0 -12
- package/dist/docs/reference/parameters/canonicalizeParameters.md +0 -10
- package/dist/docs/reference/parameters/prepareParameters.md +0 -13
- package/dist/docs/reference/parameters/validateParameters.md +0 -10
- package/dist/docs/reference/runtime/GeneratedModel.md +0 -17
- package/dist/docs/reference/runtime/GeneratedModelDelivery.md +0 -12
- package/dist/docs/reference/runtime/GeneratedPart.md +0 -20
- package/dist/docs/reference/runtime/GeneratedPartDelivery.md +0 -13
- package/dist/docs/reference/runtime/isGeneratorModule.md +0 -9
- package/dist/generator-package/errors.d.ts.map +0 -1
- package/dist/generator-package/errors.js.map +0 -1
- package/dist/generator-package/portable-data.d.ts.map +0 -1
- package/dist/generator-package/portable-data.js.map +0 -1
- package/dist/generator-package/schemas/common.schema.d.ts.map +0 -1
- package/dist/generator-package/schemas/common.schema.js.map +0 -1
- package/dist/generator-package/schemas/condition.schema.d.ts.map +0 -1
- package/dist/generator-package/schemas/condition.schema.js.map +0 -1
- package/dist/generator-package/schemas/definition.schema.d.ts.map +0 -1
- package/dist/generator-package/schemas/definition.schema.js.map +0 -1
- package/dist/generator-package/schemas/parameter-document-json-schema.d.ts.map +0 -1
- package/dist/generator-package/schemas/parameter-document-json-schema.js.map +0 -1
- package/dist/generator-package/schemas/parameter.schema.d.ts.map +0 -1
- package/dist/generator-package/schemas/parameter.schema.js.map +0 -1
- package/dist/generator-package/schemas/preset.schema.d.ts +0 -5
- package/dist/generator-package/schemas/preset.schema.d.ts.map +0 -1
- package/dist/generator-package/schemas/preset.schema.js.map +0 -1
- package/dist/generator-package/validate-definition.d.ts.map +0 -1
- package/dist/generator-package/validate-definition.js.map +0 -1
- package/dist/generator-package/version-format.d.ts.map +0 -1
- package/dist/generator-package/version-format.js.map +0 -1
- package/dist/parameter-contracts.d.ts.map +0 -1
- package/dist/parameter-contracts.js +0 -2
- package/dist/parameter-contracts.js.map +0 -1
- package/dist/parameters/preparation.d.ts +0 -15
- package/dist/parameters/preparation.d.ts.map +0 -1
- package/dist/parameters/preparation.js +0 -47
- package/dist/parameters/preparation.js.map +0 -1
- package/dist/runtime/generated-parts.d.ts.map +0 -1
- package/dist/runtime/generated-parts.js.map +0 -1
- package/dist/side-profiles.d.ts.map +0 -1
- package/dist/side-profiles.js.map +0 -1
- /package/dist/{contracts.js → generator-package/contracts.js} +0 -0
- /package/dist/{conditions.d.ts → parameters/conditions.d.ts} +0 -0
- /package/dist/{conditions.js → parameters/conditions.js} +0 -0
- /package/dist/{contours.d.ts → parameters/contours.d.ts} +0 -0
- /package/dist/{contours.js → parameters/contours.js} +0 -0
- /package/dist/{curve-data.d.ts → parameters/curve-data.d.ts} +0 -0
- /package/dist/{curve-data.js → parameters/curve-data.js} +0 -0
- /package/dist/{side-profiles.d.ts → parameters/side-profiles.d.ts} +0 -0
- /package/dist/{side-profiles.js → parameters/side-profiles.js} +0 -0
- /package/dist/{generator-package → validation}/errors.js +0 -0
- /package/dist/{generator-package → validation}/portable-data.d.ts +0 -0
- /package/dist/{generator-package → validation}/portable-data.js +0 -0
- /package/dist/{generator-package → validation}/version-format.d.ts +0 -0
- /package/dist/{generator-package → validation}/version-format.js +0 -0
|
@@ -1,28 +1,35 @@
|
|
|
1
1
|
# `@metamesh/generator-sdk`
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
Define typed controls, presets, and portable contracts for MetaMesh Generators. Use one definition
|
|
4
|
+
for the editing interface, saved parameter values, and model execution.
|
|
5
5
|
|
|
6
6
|
> **Preview:** `0.x` minor releases may break compatibility. Patches remain compatible within the
|
|
7
7
|
> same minor line.
|
|
8
8
|
|
|
9
9
|
## Installation
|
|
10
10
|
|
|
11
|
+
For the modeling example below, install matching SDK and Modeling releases:
|
|
12
|
+
|
|
11
13
|
```bash
|
|
12
|
-
pnpm add @metamesh/generator-sdk
|
|
14
|
+
pnpm add @metamesh/generator-sdk @metamesh/modeling
|
|
13
15
|
```
|
|
14
16
|
|
|
15
|
-
The
|
|
16
|
-
|
|
17
|
-
|
|
17
|
+
The package publishes ES modules only. Use Node.js 24 or newer. TypeScript consumers need
|
|
18
|
+
TypeScript 6.0 or newer, `strict` checking, and `NodeNext` or `Bundler` module resolution.
|
|
19
|
+
Browser hosts need an ES2023-compatible runtime; the SDK's data contracts require no WebAssembly.
|
|
20
|
+
|
|
21
|
+
The SDK can also be used alone for definitions, parameter handling, and package validation.
|
|
22
|
+
Only its optional `/modeling` adapter imports the Modeling runtime.
|
|
18
23
|
|
|
19
24
|
## Define controls
|
|
20
25
|
|
|
21
|
-
A
|
|
22
|
-
|
|
26
|
+
A Generator combines serializable metadata with a synchronous model program. This module defines
|
|
27
|
+
a sleeve, infers its parameter types, and checks the relationship between its diameters:
|
|
23
28
|
|
|
24
29
|
```ts
|
|
25
30
|
import { defineGenerator } from "@metamesh/generator-sdk";
|
|
31
|
+
import { defineGeneratorModel } from "@metamesh/generator-sdk/modeling";
|
|
32
|
+
import { tube } from "@metamesh/modeling";
|
|
26
33
|
|
|
27
34
|
export const definition = defineGenerator({
|
|
28
35
|
id: "sleeve",
|
|
@@ -34,29 +41,11 @@ export const definition = defineGenerator({
|
|
|
34
41
|
{ id: "boreDiameter", label: "Bore diameter", type: "number", default: 10, min: 1 },
|
|
35
42
|
],
|
|
36
43
|
});
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
Definitions are serializable. Optional `ui` metadata describes grouping, visibility, hints, and
|
|
40
|
-
editing increments. Number inputs and sliders share `type: "number"`; sliders add
|
|
41
|
-
`ui.control: "slider"`, bounds, and `ui.step`. See the
|
|
42
|
-
[parameter guide](https://github.com/JasonKoolman/metamesh/blob/main/apps/web/content/docs/develop/parameters-and-validation.mdx)
|
|
43
|
-
for the full set of controls.
|
|
44
|
-
|
|
45
|
-
## Generate a model
|
|
46
|
-
|
|
47
|
-
Add a synchronous generation program to the same module. The Modeling adapter infers controls,
|
|
48
|
-
prepared services, and diagnostic parameter IDs from the definition:
|
|
49
|
-
|
|
50
|
-
```ts
|
|
51
|
-
import { defineGeneratorModel } from "@metamesh/generator-sdk/modeling";
|
|
52
|
-
import { tube } from "@metamesh/modeling";
|
|
53
44
|
|
|
54
45
|
export default defineGeneratorModel(definition, ({ params, assert, part }) => {
|
|
55
|
-
assert(
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
{ parameterId: "boreDiameter" }
|
|
59
|
-
);
|
|
46
|
+
assert(params.boreDiameter < params.outerDiameter, "The bore must fit inside the sleeve.", {
|
|
47
|
+
parameterId: "boreDiameter",
|
|
48
|
+
});
|
|
60
49
|
return part(
|
|
61
50
|
"body",
|
|
62
51
|
tube({
|
|
@@ -68,55 +57,93 @@ export default defineGeneratorModel(definition, ({ params, assert, part }) => {
|
|
|
68
57
|
});
|
|
69
58
|
```
|
|
70
59
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
60
|
+
The adapter binds the definition to the model and produces a Generator module. Use
|
|
61
|
+
`defineGeneratorModule({ definition, program })` to bind an existing program. A Generator runtime
|
|
62
|
+
is itself a Modeling program: engines and direct model tests execute `runtime`.
|
|
63
|
+
Format 5 carries the callback and identity in one object; nested
|
|
64
|
+
format-4 runtimes are unsupported. Hosts normalize parameters, prepare assets,
|
|
65
|
+
and execute the model; they own the forms, viewing, persistence, and export.
|
|
66
|
+
Add named, complete starting values with `definePresets(definition, presets)`.
|
|
67
|
+
|
|
68
|
+
`defineGenerator` validates structural and semantic metadata immediately; `definePresets` validates
|
|
69
|
+
preset metadata and complete canonical parameter values. Invalid input throws
|
|
70
|
+
`GeneratorPackageValidationError` at declaration. Both helpers retain the supplied object or array
|
|
71
|
+
and its inferred literal types. Inline parameter, editor, choice, and preset objects receive
|
|
72
|
+
TypeScript excess-property checks. Structural typing can hide extra fields in variables or generic
|
|
73
|
+
factories; runtime validation checks those fields too. These helpers validate metadata and values,
|
|
74
|
+
not model geometry or cross-parameter assertions.
|
|
75
|
+
|
|
76
|
+
## Generator capabilities
|
|
77
|
+
|
|
78
|
+
| Area | Capabilities |
|
|
79
|
+
| ---------------------- | ---------------------------------------------------------------------------------------------------------------- |
|
|
80
|
+
| Parameter values | Numbers, booleans, choices and choice sets, text, colors, arrays, fonts, SVG, side profiles, and cross-sections. |
|
|
81
|
+
| Editing metadata | Labels, units, groups, descriptions, inline hints, sliders, paired controls, and conditional visibility. |
|
|
82
|
+
| Parameters and presets | Inferred TypeScript types, defaults, recovering normalization, strict codecs, and complete serializable presets. |
|
|
83
|
+
| Host integration | Validated package manifests, module execution, Worker messages, and incremental mesh delivery. |
|
|
84
|
+
|
|
85
|
+
Definitions and presets contain data, not callbacks. Conditional visibility changes the editing
|
|
86
|
+
interface; hidden values remain saved and still require validation. Cross-parameter constraints
|
|
87
|
+
belong in the model's assertions.
|
|
88
|
+
|
|
89
|
+
Use `normalizeParameters` to recover saved values: it drops unknown keys, restores defaults, and
|
|
90
|
+
clamps numbers. At strict boundaries, `createParamCodec(definition)` rejects incomplete, unknown, invalid, or
|
|
91
|
+
noncanonical values. The [parameter guide](https://github.com/JasonKoolman/metamesh/blob/main/apps/web/content/docs/develop/parameters-and-validation.mdx)
|
|
92
|
+
covers controls, conditions, and validation.
|
|
93
|
+
|
|
94
|
+
Use the codec's `parse()` to throw on invalid input, or `safeParse()` for a discriminated result.
|
|
95
|
+
Failure produces issues without substitute parameters. Codec issues use the shared `ParameterIssue`
|
|
96
|
+
shape: `parameterId` names the control, and an optional `path` is relative to that control's value.
|
|
97
|
+
Hosts can pass the issues directly to `aggregateParameterIssues`.
|
|
98
|
+
|
|
99
|
+
`executeGenerator` always validates its single `parameters` map against the current definition.
|
|
100
|
+
Hosts may validate before loading assets, but execution does not accept a prior parse result as a
|
|
101
|
+
validation bypass. Modeling hosts use `parseGeneratorModel(value, definition)` from `/modeling`
|
|
102
|
+
to validate an unknown module and infer its executable `GeneratorModel<typeof definition>` type.
|
|
103
|
+
Pass the default export itself for local entries that also export their definition; packaged
|
|
104
|
+
namespaces contain only the default export. The runtime-neutral `parseGeneratorModule` remains
|
|
105
|
+
available from `/runtime`. Invalid envelopes throw `TypeError`. Package validation exposes MetaMesh
|
|
106
|
+
issues and errors, keeping its schema-library adapters private.
|
|
107
|
+
|
|
108
|
+
Worker model statistics use `signedVolume` in mm³. `generateMs` measures the engine run;
|
|
109
|
+
`timings.totalMs` measures the host workflow and includes stages outside the engine.
|
|
110
|
+
`byteCount` counts finalized world-space position and index buffer bytes, counting shared buffers
|
|
111
|
+
once; it does not measure the local buffers transferred by a Worker.
|
|
112
|
+
Timing stages are optional; hosts report the phases they actually measure. The parameter-processing
|
|
113
|
+
stage is `paramsMs` and finalization is `finalizeMs`.
|
|
114
|
+
|
|
115
|
+
For Worker hosts, `/modeling` supplies `ModelDeliveryEncoder` and `toWorldMeshes`; `/runtime`
|
|
116
|
+
supplies `PartDeliveryDecoder`. Transfers carry local buffers under `geometry`, with placement
|
|
117
|
+
beside them. Decode resource references before application use and convert to world meshes before
|
|
118
|
+
export. Receiving hosts own the buffers and keep them immutable and attached.
|
|
89
119
|
|
|
90
120
|
## API entry points
|
|
91
121
|
|
|
92
|
-
| Import |
|
|
93
|
-
| ------------------------------------ |
|
|
94
|
-
| `@metamesh/generator-sdk` | Definitions, presets, and module authoring
|
|
95
|
-
| `@metamesh/generator-sdk/
|
|
96
|
-
| `@metamesh/generator-sdk/
|
|
97
|
-
| `@metamesh/generator-sdk/
|
|
98
|
-
| `@metamesh/generator-sdk/
|
|
99
|
-
| `@metamesh/generator-sdk/
|
|
122
|
+
| Import | Responsibility |
|
|
123
|
+
| ------------------------------------ | ------------------------------------------------------------------- |
|
|
124
|
+
| `@metamesh/generator-sdk` | Definitions, presets, inferred types, and module authoring. |
|
|
125
|
+
| `@metamesh/generator-sdk/modeling` | Definition-inferred Modeling programs. |
|
|
126
|
+
| `@metamesh/generator-sdk/parameters` | Defaults, saved values, normalization, and strict codecs. |
|
|
127
|
+
| `@metamesh/generator-sdk/runtime` | Execution, generated geometry, and Worker protocols. |
|
|
128
|
+
| `@metamesh/generator-sdk/packages` | Package, catalog, installation, and definition-document validation. |
|
|
129
|
+
| `@metamesh/generator-sdk/fonts` | Immutable font selection values. |
|
|
100
130
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
admitted buffers immutable and attached; call `clear()` when replacing the delivery source.
|
|
131
|
+
`@metamesh/generator-sdk/parameters.schema.json` supports offline definition editing. The SDK
|
|
132
|
+
validates references, defaults, and cross-field rules in addition to the structural schema.
|
|
104
133
|
|
|
105
134
|
## Documentation
|
|
106
135
|
|
|
107
|
-
Resolve `@metamesh/generator-sdk/docs/manifest.json`
|
|
108
|
-
|
|
109
|
-
With [`@metamesh/cli`](https://github.com/JasonKoolman/metamesh/blob/main/packages/cli/README.md)
|
|
110
|
-
installed, `pnpm exec metamesh docs search "parameters"` searches the local index;
|
|
111
|
-
`pnpm exec metamesh docs show sdk/guide/generator-modules` reads this package's authoring guide.
|
|
136
|
+
Resolve `@metamesh/generator-sdk/docs/manifest.json` for exact-version Markdown guides and annotated
|
|
137
|
+
API references. With [CLI](https://github.com/JasonKoolman/metamesh/blob/main/packages/cli/README.md) installed:
|
|
112
138
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
139
|
+
```bash
|
|
140
|
+
pnpm exec metamesh docs search "parameters"
|
|
141
|
+
pnpm exec metamesh docs show sdk/guide/generator-modules
|
|
142
|
+
```
|
|
116
143
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
144
|
+
See [local authoring](https://github.com/JasonKoolman/metamesh/blob/main/apps/web/content/docs/create/author-locally.mdx)
|
|
145
|
+
for the complete workflow and [Contributing](https://github.com/JasonKoolman/metamesh/blob/main/CONTRIBUTING.md)
|
|
146
|
+
for package development.
|
|
120
147
|
|
|
121
148
|
## License
|
|
122
149
|
|
|
@@ -2,16 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
Define typed controls, editable profiles, conditional visibility, and validation for an authored Studio Project.
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
definition as JSON-safe Project data
|
|
7
|
-
|
|
5
|
+
Give someone a useful set of controls, and they can adjust your model without editing its source.
|
|
6
|
+
Studio saves the definition as JSON-safe Project data and infers the type of `params` through
|
|
7
|
+
`generate`. You check relationships between controls in `model.ts`.
|
|
8
8
|
|
|
9
9
|
The JSON document contains required `groups` and `parameters` arrays. A parameter's `type`,
|
|
10
10
|
default, units, bounds, and choices describe its value. Its optional `ui` object describes
|
|
11
11
|
presentation: group, shared row, hint, visibility, editing increment, and physical editor bindings.
|
|
12
12
|
Number and Slider both use `type: "number"`; a Slider also declares `ui.control: "slider"`.
|
|
13
13
|
Options use `type: "choice"`, Side profile uses `type: "side-profile"`, and a closed outline uses
|
|
14
|
-
`type: "contour"`.
|
|
14
|
+
`type: "contour"`. Switching between Number and Slider doesn't change the saved value or valid range.
|
|
15
15
|
|
|
16
16
|
JSON editing offers field completion, help, and inline validation, including references to declared
|
|
17
17
|
groups, parameters, and choice values. Fix or discard invalid JSON before applying it or returning
|
|
@@ -23,19 +23,19 @@ also checks rules that JSON Schema cannot express.
|
|
|
23
23
|
In an authored Project, open the parameter panel's **Parameter actions** menu and choose
|
|
24
24
|
**Edit controls**. The same action is available in the **MetaMesh menu → Current project** group.
|
|
25
25
|
The Model controls editor's **Visual** and **JSON** views edit the same draft. Choose
|
|
26
|
-
**Apply & return** to
|
|
26
|
+
**Apply & return** to save the definition and return to the model.
|
|
27
27
|
|
|
28
28
|
1. Add a section for one coherent decision, such as **Size** or **Outputs**.
|
|
29
29
|
2. Add a control, give it a stable ID, a plain-language label, and a useful default.
|
|
30
|
-
3. Add units and
|
|
30
|
+
3. Add units and limits that reflect what the model supports.
|
|
31
31
|
4. Try the selected control in its preview, then apply the draft and check the generated
|
|
32
32
|
`params` completion in `model.ts`.
|
|
33
33
|
|
|
34
34
|
Preview values are temporary; they do not change the default or the Project's current values.
|
|
35
35
|
|
|
36
36
|
Use labels to name the decision and descriptions for more detail. Defaults should produce a useful
|
|
37
|
-
model immediately.
|
|
38
|
-
|
|
37
|
+
model immediately. Set minimum and maximum values for each field's supported range, then check
|
|
38
|
+
relationships between controls in your source.
|
|
39
39
|
|
|
40
40
|
## Separate help from essential instructions
|
|
41
41
|
|
|
@@ -48,7 +48,7 @@ label is enough. Hints are static and appear whenever the control is visible; pu
|
|
|
48
48
|
multiple modes in `description`. Errors, warnings, and reasons a control is unavailable stay visible.
|
|
49
49
|
|
|
50
50
|
In **Visual**, edit **Hint (optional)** as ordinary text. **Visual**, **JSON**, and the live preview
|
|
51
|
-
use the same string field.
|
|
51
|
+
use the same string field. Clear it to remove the hint when you apply the definition. For example,
|
|
52
52
|
a socket-only Diameter control can include:
|
|
53
53
|
|
|
54
54
|
```json
|
|
@@ -84,8 +84,8 @@ A Slider requires `min`, `max`, and a positive `ui.step`. Multiple choice can li
|
|
|
84
84
|
selections. Lists can limit their item count; number-list items can also declare units, limits,
|
|
85
85
|
and `items.ui.step`.
|
|
86
86
|
|
|
87
|
-
A Font value
|
|
88
|
-
`services.text.layout(text, { font, fontSize })` inside generation, then pass its layout to
|
|
87
|
+
A Font value contains the selected face and weight. Pass the whole value, rather than a family-name
|
|
88
|
+
string, in `services.text.layout(text, { font, fontSize })` inside generation, then pass its layout to
|
|
89
89
|
`textSection(layout)`. Studio loads declared fonts before generation. See the
|
|
90
90
|
[text recipe](https://metamesh.studio/docs/develop/geometry-recipes#text-from-a-font-parameter) for the setup and offline
|
|
91
91
|
limits.
|
|
@@ -138,8 +138,8 @@ Add a **Side profile** control when the model needs an outer silhouette. Its **E
|
|
|
138
138
|
opens guided points with automatic smoothing, Bézier handles, straight/curved segments,
|
|
139
139
|
and numeric editing. Select a segment directly; double-click it to insert a point at that location.
|
|
140
140
|
Choosing **Curve** reveals handles while retaining the existing shape until a handle moves.
|
|
141
|
-
|
|
142
|
-
**Apply profile** changes only the draft being edited; choose **Apply & return** to
|
|
141
|
+
You'll use the same editor to set the default outline in Model controls.
|
|
142
|
+
**Apply profile** changes only the draft being edited; choose **Apply & return** to save the
|
|
143
143
|
control definition.
|
|
144
144
|
|
|
145
145
|
The value on `params` is a readonly `SideProfileValue`, with a start anchor and line or cubic
|
|
@@ -189,8 +189,8 @@ In **Physical dimensions (optional)**, link the radius and height to existing Nu
|
|
|
189
189
|
controls with unit `mm`, a positive default, and a positive minimum. A radius factor of `0.5` uses
|
|
190
190
|
half a diameter control. The corresponding JSON fields are `ui.radiusScale` and `ui.heightScale`, each
|
|
191
191
|
with `parameterId` and a positive `factor`. These bindings set editor measurements; your source
|
|
192
|
-
still applies the same physical scales when modeling.
|
|
193
|
-
an outline reaching half the radius
|
|
192
|
+
still applies the same physical scales when modeling. They describe the available size:
|
|
193
|
+
an outline reaching half the available radius produces half the diameter. The editor also shows
|
|
194
194
|
the actual maximum diameter.
|
|
195
195
|
|
|
196
196
|
Use [`sampleSideProfile()`](https://metamesh.studio/docs/reference/geometry/sampleSideProfile) to convert
|
|
@@ -276,14 +276,14 @@ XY `Contour` without a duplicated seam, rejecting invalid sampled topology and e
|
|
|
276
276
|
Reuse that contour in generation, create a filled Section with
|
|
277
277
|
[`polygon(contour)`](https://metamesh.studio/docs/reference/model/polygon), and use
|
|
278
278
|
[`section.extrude()`](https://metamesh.studio/docs/reference/model/Section#extrude) or [`section.sweep()`](https://metamesh.studio/docs/reference/model/Section#sweep) for the solid.
|
|
279
|
-
|
|
280
|
-
Data validation checks the bounded structure and closure; it
|
|
279
|
+
Your Generator decides extrusion depth, the sweep path, fit, walls, and manufacturing rules.
|
|
280
|
+
Data validation checks the bounded structure and closure; it doesn't establish those geometric
|
|
281
281
|
requirements. This control contains one contour without holes or multiple loops.
|
|
282
282
|
|
|
283
283
|
Side-profile and cross-section edits stay local until **Apply**. Workspace editors check the
|
|
284
|
-
current draft
|
|
285
|
-
remain visible. Failed checks offer **Retry draft check**. Editing a control default
|
|
286
|
-
definition draft, so check the current model after **Apply & return**.
|
|
284
|
+
current draft by running the Generator declaration and any assertions it reaches; errors block Apply
|
|
285
|
+
and warnings remain visible. Failed checks offer **Retry draft check**. Editing a control default
|
|
286
|
+
changes its definition draft, so check the current model after **Apply & return**.
|
|
287
287
|
|
|
288
288
|
<a id="expose-curve-resolution-in-the-viewport"></a>
|
|
289
289
|
|
|
@@ -352,13 +352,13 @@ reference Font, Side profile, Cross section, Number List, or Text List values.
|
|
|
352
352
|
The JSON root accepts only `groups` and `parameters`. Project identity, title, and version are
|
|
353
353
|
managed separately by Studio.
|
|
354
354
|
|
|
355
|
-
|
|
356
|
-
|
|
355
|
+
Hiding a control keeps its saved value, and source still receives the normalized value. Your
|
|
356
|
+
generation code decides whether to use it in the current mode, including in assertions and geometry.
|
|
357
357
|
|
|
358
358
|
## Add cross-field validation in TypeScript
|
|
359
359
|
|
|
360
|
-
The generation callback receives normalized readonly parameters.
|
|
361
|
-
|
|
360
|
+
The generation callback receives normalized readonly parameters. If a combination can't produce a
|
|
361
|
+
supported model, put a cheap assertion before geometry to stop the work early:
|
|
362
362
|
|
|
363
363
|
|
|
364
364
|
|
|
@@ -382,9 +382,9 @@ than your model's recommended minimum. A zero wall stops generation; a 0.5 mm wa
|
|
|
382
382
|
with a warning. Choose that minimum for the model and manufacturing process. A failed edit leaves
|
|
383
383
|
the last valid preview and its export available. Warnings allow a current model to generate and export.
|
|
384
384
|
|
|
385
|
-
Checks follow JavaScript order: reading a computed value evaluates it when needed, and
|
|
385
|
+
Checks follow JavaScript order: reading a computed value evaluates it when needed, and measuring
|
|
386
386
|
geometry evaluates its input first. Draft validation checks declarations and reached assertions
|
|
387
|
-
without finalizing parts; it
|
|
387
|
+
without finalizing parts; it doesn't prove full geometric validity. Use optional `computed`
|
|
388
388
|
values to reuse expensive layouts or shared calculations across unrelated edits. There is no
|
|
389
389
|
separate preparation callback.
|
|
390
390
|
|
|
@@ -404,9 +404,9 @@ Before relying on a Project, check:
|
|
|
404
404
|
- resetting controls returns to the documented defaults.
|
|
405
405
|
|
|
406
406
|
The Model controls editor checks the definition when you apply it and keeps invalid drafts open
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
with `model.ts`; check the workspace for source or cross-field errors before exporting.
|
|
407
|
+
so you can fix the errors. After **Apply & return**, Studio uses the updated definition to build
|
|
408
|
+
controls, normalize and save values, and type the generation context. It then validates the current
|
|
409
|
+
values with `model.ts`; check the workspace for source or cross-field errors before exporting.
|
|
410
410
|
|
|
411
411
|
|
|
412
412
|
|