@metamesh/generator-sdk 0.17.0 → 0.19.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 +197 -0
- package/README.md +101 -65
- 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 +101 -65
- package/dist/docs/guides/parameters.md +32 -32
- package/dist/docs/manifest.json +159 -257
- 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/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/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 +2 -2
- package/dist/docs/reference/runtime/WorkerResponse.md +2 -2
- 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 +6 -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 +17 -0
- package/dist/modeling-delivery.d.ts.map +1 -0
- package/dist/modeling-delivery.js +44 -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 +5 -29
- 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/Export3mfRequest.md +0 -18
- package/dist/docs/reference/runtime/ExportError.md +0 -13
- package/dist/docs/reference/runtime/ExportSuccess.md +0 -13
- package/dist/docs/reference/runtime/ExportedFile.md +0 -13
- 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,38 @@
|
|
|
1
1
|
# `@metamesh/generator-sdk`
|
|
2
2
|
|
|
3
|
-
Turn a parametric model into a MetaMesh Generator. Define controls once,
|
|
4
|
-
|
|
3
|
+
Turn a parametric model into a reusable MetaMesh Generator. Define its controls and presets once,
|
|
4
|
+
then use that definition to infer parameter types, validate saved values, and connect the model
|
|
5
|
+
to an editing interface.
|
|
5
6
|
|
|
6
7
|
> **Preview:** `0.x` minor releases may break compatibility. Patches remain compatible within the
|
|
7
8
|
> same minor line.
|
|
8
9
|
|
|
9
10
|
## Installation
|
|
10
11
|
|
|
12
|
+
Install matching SDK and Modeling releases to build the Generator below:
|
|
13
|
+
|
|
11
14
|
```bash
|
|
12
|
-
pnpm add @metamesh/generator-sdk
|
|
15
|
+
pnpm add @metamesh/generator-sdk @metamesh/modeling
|
|
13
16
|
```
|
|
14
17
|
|
|
15
|
-
The
|
|
16
|
-
|
|
17
|
-
|
|
18
|
+
The package publishes ES modules only. Use Node.js 24 or newer. TypeScript consumers need
|
|
19
|
+
TypeScript 6.0 or newer, `strict` checking, and `NodeNext` or `Bundler` module resolution.
|
|
20
|
+
Browser hosts need an ES2023-compatible runtime; the SDK's data contracts require no WebAssembly.
|
|
21
|
+
|
|
22
|
+
You can also use the SDK on its own for definitions, parameter handling, and package validation.
|
|
23
|
+
The optional `/modeling` adapter connects it to Modeling; your application supplies the interface
|
|
24
|
+
and execution host.
|
|
18
25
|
|
|
19
26
|
## Define controls
|
|
20
27
|
|
|
21
|
-
A
|
|
22
|
-
|
|
28
|
+
A Generator combines a definition with a synchronous model program. This example makes a sleeve
|
|
29
|
+
with two diameter controls. Parameter types come from the definition, and an assertion checks
|
|
30
|
+
that the bore fits inside the outer wall:
|
|
23
31
|
|
|
24
32
|
```ts
|
|
25
33
|
import { defineGenerator } from "@metamesh/generator-sdk";
|
|
34
|
+
import { defineGeneratorModel } from "@metamesh/generator-sdk/modeling";
|
|
35
|
+
import { tube } from "@metamesh/modeling";
|
|
26
36
|
|
|
27
37
|
export const definition = defineGenerator({
|
|
28
38
|
id: "sleeve",
|
|
@@ -34,29 +44,11 @@ export const definition = defineGenerator({
|
|
|
34
44
|
{ id: "boreDiameter", label: "Bore diameter", type: "number", default: 10, min: 1 },
|
|
35
45
|
],
|
|
36
46
|
});
|
|
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
47
|
|
|
54
48
|
export default defineGeneratorModel(definition, ({ params, assert, part }) => {
|
|
55
|
-
assert(
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
{ parameterId: "boreDiameter" }
|
|
59
|
-
);
|
|
49
|
+
assert(params.boreDiameter < params.outerDiameter, "The bore must fit inside the sleeve.", {
|
|
50
|
+
parameterId: "boreDiameter",
|
|
51
|
+
});
|
|
60
52
|
return part(
|
|
61
53
|
"body",
|
|
62
54
|
tube({
|
|
@@ -68,55 +60,99 @@ export default defineGeneratorModel(definition, ({ params, assert, part }) => {
|
|
|
68
60
|
});
|
|
69
61
|
```
|
|
70
62
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
63
|
+
`defineGeneratorModel` binds the definition to the model and infers its parameters and services.
|
|
64
|
+
If you already have a program, use `defineGeneratorModule({ definition, program })`. The resulting
|
|
65
|
+
runtime is a Modeling program that an engine or model test can execute directly.
|
|
66
|
+
Add named starting configurations with `definePresets(definition, presets)`; each preset supplies
|
|
67
|
+
a complete parameter map.
|
|
68
|
+
|
|
69
|
+
Definitions and presets contain serializable data, without callbacks. Hosts normalize parameters,
|
|
70
|
+
prepare assets, and execute the model. They also own forms, viewing, persistence, and export.
|
|
71
|
+
Generator modules use format 5, which carries the callback and identity in one object;
|
|
72
|
+
nested format-4 runtimes are unsupported.
|
|
73
|
+
|
|
74
|
+
## Generator capabilities
|
|
75
75
|
|
|
76
|
-
|
|
77
|
-
|
|
76
|
+
| Area | Capabilities |
|
|
77
|
+
| ---------------------- | ---------------------------------------------------------------------------------------------------------------- |
|
|
78
|
+
| Parameter values | Numbers, booleans, choices and choice sets, text, colors, arrays, fonts, SVG, side profiles, and cross-sections. |
|
|
79
|
+
| Editing metadata | Labels, units, groups, descriptions, inline hints, sliders, paired controls, and conditional visibility. |
|
|
80
|
+
| Parameters and presets | Inferred TypeScript types, defaults, recovering normalization, strict codecs, and complete serializable presets. |
|
|
81
|
+
| Host integration | Validated package manifests, module execution, Worker messages, and incremental mesh delivery. |
|
|
78
82
|
|
|
79
|
-
|
|
83
|
+
Conditional visibility changes which controls appear. Hidden values remain saved and still
|
|
84
|
+
require validation. Put constraints between parameters in the model's assertions.
|
|
80
85
|
|
|
81
|
-
|
|
82
|
-
restores missing or invalid values from defaults, and clamps numbers. At a trust boundary, use
|
|
83
|
-
`createParamCodec(definition)` to reject incomplete, unknown, invalid, or noncanonical values.
|
|
84
|
-
Both return fresh frozen parameter maps.
|
|
86
|
+
## Validate definitions and values
|
|
85
87
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
88
|
+
`defineGenerator` checks the definition as soon as you declare it. `definePresets` checks preset
|
|
89
|
+
metadata and complete canonical values. Invalid declarations throw
|
|
90
|
+
`GeneratorPackageValidationError`. These helpers retain the supplied object or array and its
|
|
91
|
+
inferred literal types; they don't execute geometry or model assertions.
|
|
92
|
+
|
|
93
|
+
Inline parameter, editor, choice, and preset objects receive TypeScript excess-property checks.
|
|
94
|
+
Runtime validation also catches extra fields that structural typing can hide in variables or
|
|
95
|
+
generic factories.
|
|
96
|
+
|
|
97
|
+
Use `normalizeParameters` to recover saved values: it drops unknown keys, restores defaults, and
|
|
98
|
+
clamps numbers. Use `createParamCodec(definition)` when inputs must already be complete and
|
|
99
|
+
canonical; it rejects missing or unknown fields and invalid values. The
|
|
100
|
+
[parameter guide](https://github.com/JasonKoolman/metamesh/blob/main/apps/web/content/docs/develop/parameters-and-validation.mdx)
|
|
101
|
+
covers controls, conditions, and validation.
|
|
102
|
+
|
|
103
|
+
Use the codec's `parse()` to throw on invalid input, or `safeParse()` for a result you can check
|
|
104
|
+
without catching an exception. A failed parse reports issues without substitute parameters. Each `ParameterIssue` names
|
|
105
|
+
a control with `parameterId`; an optional `path` addresses a field within that control's value.
|
|
106
|
+
Hosts can pass these issues directly to `aggregateParameterIssues`.
|
|
107
|
+
|
|
108
|
+
## Execute and deliver a model
|
|
109
|
+
|
|
110
|
+
`executeGenerator` always validates its single `parameters` map against the current definition.
|
|
111
|
+
Hosts can validate before loading assets, but execution still checks the supplied values.
|
|
112
|
+
Modeling hosts use `parseGeneratorModel(value, definition)` from `/modeling` to validate a loaded
|
|
113
|
+
module and infer its executable `GeneratorModel<typeof definition>` type. Pass the default export
|
|
114
|
+
itself for local entries that also export their definition; packaged namespaces contain only the
|
|
115
|
+
default export. Use `parseGeneratorModule` from `/runtime` when you don't need the Modeling adapter.
|
|
116
|
+
Invalid module envelopes throw `TypeError`; package validation reports MetaMesh issues and errors.
|
|
117
|
+
|
|
118
|
+
For Worker hosts, `/modeling` supplies `ModelDeliveryEncoder`; `/runtime` supplies `PartDeliveryDecoder`.
|
|
119
|
+
Transfers carry local buffers under `geometry`, with placement beside them. Decode resource
|
|
120
|
+
references before application use or export. Receiving hosts own the buffers and keep them immutable
|
|
121
|
+
and attached.
|
|
122
|
+
|
|
123
|
+
Model statistics use `signedVolume` in mm³. `generateMs` measures the engine run;
|
|
124
|
+
`timings.totalMs` covers the host workflow, including stages outside the engine. Hosts report only
|
|
125
|
+
the timing stages they measure, using `paramsMs` for parameter processing and `finalizeMs` for
|
|
126
|
+
finalization. `byteCount` counts finalized world-space position and index buffer bytes, counting
|
|
127
|
+
shared buffers once; it doesn't measure the local buffers transferred by a Worker.
|
|
89
128
|
|
|
90
129
|
## API entry points
|
|
91
130
|
|
|
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/
|
|
131
|
+
| Import | Responsibility |
|
|
132
|
+
| ------------------------------------ | ------------------------------------------------------------------- |
|
|
133
|
+
| `@metamesh/generator-sdk` | Definitions, presets, inferred types, and module authoring. |
|
|
134
|
+
| `@metamesh/generator-sdk/modeling` | Definition-inferred Modeling programs. |
|
|
135
|
+
| `@metamesh/generator-sdk/parameters` | Defaults, saved values, normalization, and strict codecs. |
|
|
136
|
+
| `@metamesh/generator-sdk/runtime` | Execution, generated geometry, and Worker protocols. |
|
|
137
|
+
| `@metamesh/generator-sdk/packages` | Package, catalog, installation, and definition-document validation. |
|
|
138
|
+
| `@metamesh/generator-sdk/fonts` | Immutable font selection values. |
|
|
100
139
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
admitted buffers immutable and attached; call `clear()` when replacing the delivery source.
|
|
140
|
+
`@metamesh/generator-sdk/parameters.schema.json` supports offline definition editing. The SDK
|
|
141
|
+
validates references, defaults, and cross-field rules in addition to the structural schema.
|
|
104
142
|
|
|
105
143
|
## Documentation
|
|
106
144
|
|
|
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.
|
|
145
|
+
Resolve `@metamesh/generator-sdk/docs/manifest.json` for exact-version Markdown guides and annotated
|
|
146
|
+
API references. With [CLI](https://github.com/JasonKoolman/metamesh/blob/main/packages/cli/README.md) installed:
|
|
112
147
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
148
|
+
```bash
|
|
149
|
+
pnpm exec metamesh docs search "parameters"
|
|
150
|
+
pnpm exec metamesh docs show sdk/guide/generator-modules
|
|
151
|
+
```
|
|
116
152
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
153
|
+
See [local authoring](https://github.com/JasonKoolman/metamesh/blob/main/apps/web/content/docs/create/author-locally.mdx)
|
|
154
|
+
for the complete workflow and [Contributing](https://github.com/JasonKoolman/metamesh/blob/main/CONTRIBUTING.md)
|
|
155
|
+
for package development.
|
|
120
156
|
|
|
121
157
|
## License
|
|
122
158
|
|
|
@@ -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,10 +84,10 @@ 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
|
-
[text recipe](https://metamesh.studio/docs/develop/
|
|
90
|
+
[text recipe](https://metamesh.studio/docs/develop/svg-and-text#text-from-a-font-parameter) for the setup and offline
|
|
91
91
|
limits.
|
|
92
92
|
|
|
93
93
|
## Show controls side by side
|
|
@@ -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
|
|
@@ -269,21 +269,21 @@ with a `parameterId` and positive `factor`, such as `{ "parameterId": "width", "
|
|
|
269
269
|
Bindings describe the coordinate envelope; they never rescale the saved value. Without them,
|
|
270
270
|
the editor displays percentages.
|
|
271
271
|
|
|
272
|
-
Inside generation or a
|
|
272
|
+
Inside generation or a memo helper, pass `params.crossSection` to
|
|
273
273
|
[`sampleContour()`](https://metamesh.studio/docs/reference/geometry/sampleContour) with physical `widthScale`,
|
|
274
274
|
`heightScale`, and a millimetre resolution policy. It returns an immutable counterclockwise
|
|
275
275
|
XY `Contour` without a duplicated seam, rejecting invalid sampled topology and exhausted budgets.
|
|
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,10 +382,10 @@ 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:
|
|
385
|
+
Checks follow JavaScript order: `memo` calls run their helper on a cache miss, and measuring
|
|
386
386
|
geometry evaluates its input first. Draft validation checks declarations and reached assertions
|
|
387
|
-
without finalizing parts; it
|
|
388
|
-
|
|
387
|
+
without finalizing parts; it doesn't prove full geometric validity. Use optional `memo`
|
|
388
|
+
calls to reuse expensive layouts or shared calculations across unrelated edits. There is no
|
|
389
389
|
separate preparation callback.
|
|
390
390
|
|
|
391
391
|
## Test the definition as a contract
|
|
@@ -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
|
|