@faicad/faijs 0.13.2 → 0.16.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/dist/api/api-namespace.d.ts +7 -0
- package/dist/api/api-namespace.d.ts.map +1 -1
- package/dist/api/api-namespace.js +44 -17
- package/dist/api/api-namespace.js.map +1 -1
- package/dist/api/boolean.d.ts +19 -0
- package/dist/api/boolean.d.ts.map +1 -1
- package/dist/api/boolean.js +71 -12
- package/dist/api/boolean.js.map +1 -1
- package/dist/api/chamfer.d.ts.map +1 -1
- package/dist/api/chamfer.js +12 -8
- package/dist/api/chamfer.js.map +1 -1
- package/dist/api/compound-geom.d.ts +45 -0
- package/dist/api/compound-geom.d.ts.map +1 -0
- package/dist/api/compound-geom.js +85 -0
- package/dist/api/compound-geom.js.map +1 -0
- package/dist/api/edge-ref.d.ts.map +1 -1
- package/dist/api/edge-ref.js +7 -4
- package/dist/api/edge-ref.js.map +1 -1
- package/dist/api/engrave.d.ts.map +1 -1
- package/dist/api/engrave.js +1 -0
- package/dist/api/engrave.js.map +1 -1
- package/dist/api/extrude.d.ts.map +1 -1
- package/dist/api/extrude.js +131 -3
- package/dist/api/extrude.js.map +1 -1
- package/dist/api/face-ref.d.ts.map +1 -1
- package/dist/api/face-ref.js +7 -4
- package/dist/api/face-ref.js.map +1 -1
- package/dist/api/fillet.d.ts.map +1 -1
- package/dist/api/fillet.js +6 -5
- package/dist/api/fillet.js.map +1 -1
- package/dist/api/generated/cad/script-face.d.ts +1 -1
- package/dist/api/generated/cad/script-face.d.ts.map +1 -1
- package/dist/api/generated/cad/script-face.js +1 -2
- package/dist/api/generated/cad/script-face.js.map +1 -1
- package/dist/api/generated/operations.js +16 -16
- package/dist/api/generated/operations.js.map +1 -1
- package/dist/api/generated/script-face-manifest.d.ts.map +1 -1
- package/dist/api/generated/script-face-manifest.js +0 -2
- package/dist/api/generated/script-face-manifest.js.map +1 -1
- package/dist/api/generated/script-face.d.ts +1 -7
- package/dist/api/generated/script-face.d.ts.map +1 -1
- package/dist/api/generated/script-face.js +2 -4
- package/dist/api/generated/script-face.js.map +1 -1
- package/dist/api/generated/sketching.js +1 -1
- package/dist/api/generated/sketching.js.map +1 -1
- package/dist/api/generated/topology.d.ts +0 -56
- package/dist/api/generated/topology.d.ts.map +1 -1
- package/dist/api/generated/topology.js +19 -68
- package/dist/api/generated/topology.js.map +1 -1
- package/dist/api/import-brep.d.ts +36 -0
- package/dist/api/import-brep.d.ts.map +1 -0
- package/dist/api/import-brep.js +72 -0
- package/dist/api/import-brep.js.map +1 -0
- package/dist/api/import-step.d.ts +28 -0
- package/dist/api/import-step.d.ts.map +1 -0
- package/dist/api/import-step.js +57 -0
- package/dist/api/import-step.js.map +1 -0
- package/dist/api/index.d.ts +8 -12
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +22 -16
- package/dist/api/index.js.map +1 -1
- package/dist/api/internal/compat-op.d.ts.map +1 -1
- package/dist/api/internal/compat-op.js +2 -1
- package/dist/api/internal/compat-op.js.map +1 -1
- package/dist/api/internal/compat-projection.d.ts +3 -1
- package/dist/api/internal/compat-projection.d.ts.map +1 -1
- package/dist/api/internal/compat-projection.js +8 -5
- package/dist/api/internal/compat-projection.js.map +1 -1
- package/dist/api/internal/replica-role-table.d.ts +36 -0
- package/dist/api/internal/replica-role-table.d.ts.map +1 -0
- package/dist/api/internal/replica-role-table.js +73 -0
- package/dist/api/internal/replica-role-table.js.map +1 -0
- package/dist/api/internal/result-unwrap.d.ts +3 -1
- package/dist/api/internal/result-unwrap.d.ts.map +1 -1
- package/dist/api/internal/result-unwrap.js +2 -2
- package/dist/api/internal/result-unwrap.js.map +1 -1
- package/dist/api/knurl.d.ts.map +1 -1
- package/dist/api/knurl.js +1 -0
- package/dist/api/knurl.js.map +1 -1
- package/dist/api/occt-kernel-bridge.d.ts +105 -27
- package/dist/api/occt-kernel-bridge.d.ts.map +1 -1
- package/dist/api/occt-kernel-bridge.js +255 -41
- package/dist/api/occt-kernel-bridge.js.map +1 -1
- package/dist/api/pattern.d.ts +32 -0
- package/dist/api/pattern.d.ts.map +1 -0
- package/dist/api/pattern.js +85 -0
- package/dist/api/pattern.js.map +1 -0
- package/dist/api/place.d.ts +35 -0
- package/dist/api/place.d.ts.map +1 -0
- package/dist/api/place.js +113 -0
- package/dist/api/place.js.map +1 -0
- package/dist/api/primitives.d.ts.map +1 -1
- package/dist/api/primitives.js +10 -3
- package/dist/api/primitives.js.map +1 -1
- package/dist/api/replicate.d.ts +145 -0
- package/dist/api/replicate.d.ts.map +1 -0
- package/dist/api/replicate.js +351 -0
- package/dist/api/replicate.js.map +1 -0
- package/dist/api/revolve.d.ts +36 -0
- package/dist/api/revolve.d.ts.map +1 -0
- package/dist/api/revolve.js +165 -0
- package/dist/api/revolve.js.map +1 -0
- package/dist/api/screw.d.ts.map +1 -1
- package/dist/api/screw.js +1 -0
- package/dist/api/screw.js.map +1 -1
- package/dist/api/sdf.d.ts.map +1 -1
- package/dist/api/sdf.js +1 -0
- package/dist/api/sdf.js.map +1 -1
- package/dist/api/sketch.d.ts.map +1 -1
- package/dist/api/sketch.js +1 -0
- package/dist/api/sketch.js.map +1 -1
- package/dist/api/split.d.ts +31 -0
- package/dist/api/split.d.ts.map +1 -0
- package/dist/api/split.js +96 -0
- package/dist/api/split.js.map +1 -0
- package/dist/api/surface/arg-spec.d.ts +17 -0
- package/dist/api/surface/arg-spec.d.ts.map +1 -1
- package/dist/api/surface/arg-spec.js +86 -66
- package/dist/api/surface/arg-spec.js.map +1 -1
- package/dist/api/surface/projection-overrides.d.ts.map +1 -1
- package/dist/api/surface/projection-overrides.js +6 -0
- package/dist/api/surface/projection-overrides.js.map +1 -1
- package/dist/api/topo-resolve.d.ts.map +1 -1
- package/dist/api/topo-resolve.js +65 -3
- package/dist/api/topo-resolve.js.map +1 -1
- package/dist/api/transform.d.ts +4 -0
- package/dist/api/transform.d.ts.map +1 -1
- package/dist/api/transform.js +44 -12
- package/dist/api/transform.js.map +1 -1
- package/dist/boolean/deriveNormals.d.ts +5 -4
- package/dist/boolean/deriveNormals.d.ts.map +1 -1
- package/dist/boolean/deriveNormals.js +24 -7
- package/dist/boolean/deriveNormals.js.map +1 -1
- package/dist/brep/brep-ops.d.ts +34 -1
- package/dist/brep/brep-ops.d.ts.map +1 -1
- package/dist/brep/brep-ops.js +62 -22
- package/dist/brep/brep-ops.js.map +1 -1
- package/dist/brep/engine/adapters/brep-mock.d.ts.map +1 -1
- package/dist/brep/engine/adapters/brep-mock.js +66 -0
- package/dist/brep/engine/adapters/brep-mock.js.map +1 -1
- package/dist/brep/engine/adapters/brepkit.d.ts.map +1 -1
- package/dist/brep/engine/adapters/brepkit.js +44 -1
- package/dist/brep/engine/adapters/brepkit.js.map +1 -1
- package/dist/brep/engine/adapters/occt.d.ts +1 -5
- package/dist/brep/engine/adapters/occt.d.ts.map +1 -1
- package/dist/brep/engine/adapters/occt.js +246 -9
- package/dist/brep/engine/adapters/occt.js.map +1 -1
- package/dist/brep/engine/primitives.d.ts +96 -0
- package/dist/brep/engine/primitives.d.ts.map +1 -1
- package/dist/brep/engine/primitives.js.map +1 -1
- package/dist/brep/engine/types.d.ts +66 -6
- package/dist/brep/engine/types.d.ts.map +1 -1
- package/dist/brep/engine/types.js.map +1 -1
- package/dist/brep/export/step.d.ts.map +1 -1
- package/dist/brep/export/step.js +6 -1
- package/dist/brep/export/step.js.map +1 -1
- package/dist/brep/face-evolution.d.ts +78 -8
- package/dist/brep/face-evolution.d.ts.map +1 -1
- package/dist/brep/face-evolution.js +130 -17
- package/dist/brep/face-evolution.js.map +1 -1
- package/dist/brepkit-kernel/brepkitKernel.d.ts +1 -1
- package/dist/brepkit-kernel/brepkitKernel.d.ts.map +1 -1
- package/dist/brepkit-kernel/brepkitKernel.js +108 -12
- package/dist/brepkit-kernel/brepkitKernel.js.map +1 -1
- package/dist/browser.d.ts +6 -28
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.js +6 -17
- package/dist/browser.js.map +1 -1
- package/dist/cad-runtime/admit-compat-lib.d.ts +13 -0
- package/dist/cad-runtime/admit-compat-lib.d.ts.map +1 -1
- package/dist/cad-runtime/admit-compat-lib.js +27 -0
- package/dist/cad-runtime/admit-compat-lib.js.map +1 -1
- package/dist/cad-runtime/backend-dispatch.d.ts +46 -3
- package/dist/cad-runtime/backend-dispatch.d.ts.map +1 -1
- package/dist/cad-runtime/backend-dispatch.js +48 -3
- package/dist/cad-runtime/backend-dispatch.js.map +1 -1
- package/dist/cad-runtime/browser-lib-loader.d.ts +4 -4
- package/dist/cad-runtime/browser-lib-loader.d.ts.map +1 -1
- package/dist/cad-runtime/browser-lib-loader.js +7 -4
- package/dist/cad-runtime/browser-lib-loader.js.map +1 -1
- package/dist/cad-runtime/direct-executor.d.ts.map +1 -1
- package/dist/cad-runtime/direct-executor.js +14 -4
- package/dist/cad-runtime/direct-executor.js.map +1 -1
- package/dist/cad-runtime/module-registry.d.ts +3 -1
- package/dist/cad-runtime/module-registry.d.ts.map +1 -1
- package/dist/cad-runtime/module-registry.js +13 -1
- package/dist/cad-runtime/module-registry.js.map +1 -1
- package/dist/cad-runtime/runtime-concurrent-error.d.ts +38 -0
- package/dist/cad-runtime/runtime-concurrent-error.d.ts.map +1 -0
- package/dist/cad-runtime/runtime-concurrent-error.js +43 -0
- package/dist/cad-runtime/runtime-concurrent-error.js.map +1 -0
- package/dist/cad-runtime/runtime.d.ts +52 -2
- package/dist/cad-runtime/runtime.d.ts.map +1 -1
- package/dist/cad-runtime/runtime.js +180 -9
- package/dist/cad-runtime/runtime.js.map +1 -1
- package/dist/define-op.d.ts +22 -0
- package/dist/define-op.d.ts.map +1 -1
- package/dist/define-op.js +82 -12
- package/dist/define-op.js.map +1 -1
- package/dist/env-agnostic.d.ts +38 -0
- package/dist/env-agnostic.d.ts.map +1 -0
- package/dist/env-agnostic.js +29 -0
- package/dist/env-agnostic.js.map +1 -0
- package/dist/fcstd/attachment.d.ts +8 -1
- package/dist/fcstd/attachment.d.ts.map +1 -1
- package/dist/fcstd/attachment.js +7 -1
- package/dist/fcstd/attachment.js.map +1 -1
- package/dist/fcstd/build-fai-zip.d.ts.map +1 -1
- package/dist/fcstd/build-fai-zip.js +12 -7
- package/dist/fcstd/build-fai-zip.js.map +1 -1
- package/dist/fcstd/codegen.d.ts +10 -1
- package/dist/fcstd/codegen.d.ts.map +1 -1
- package/dist/fcstd/codegen.js +158 -49
- package/dist/fcstd/codegen.js.map +1 -1
- package/dist/fcstd/contour.d.ts.map +1 -1
- package/dist/fcstd/contour.js +23 -24
- package/dist/fcstd/contour.js.map +1 -1
- package/dist/fcstd/convert.d.ts +2 -18
- package/dist/fcstd/convert.d.ts.map +1 -1
- package/dist/fcstd/convert.js +35 -53
- package/dist/fcstd/convert.js.map +1 -1
- package/dist/fcstd/expressions.d.ts +24 -0
- package/dist/fcstd/expressions.d.ts.map +1 -1
- package/dist/fcstd/expressions.js +91 -0
- package/dist/fcstd/expressions.js.map +1 -1
- package/dist/fcstd/external-geo.d.ts +12 -1
- package/dist/fcstd/external-geo.d.ts.map +1 -1
- package/dist/fcstd/external-geo.js +15 -1
- package/dist/fcstd/external-geo.js.map +1 -1
- package/dist/fcstd/feature-translate.d.ts +21 -1
- package/dist/fcstd/feature-translate.d.ts.map +1 -1
- package/dist/fcstd/feature-translate.js +124 -8
- package/dist/fcstd/feature-translate.js.map +1 -1
- package/dist/fcstd/structural-types.d.ts +83 -0
- package/dist/fcstd/structural-types.d.ts.map +1 -0
- package/dist/fcstd/structural-types.js +121 -0
- package/dist/fcstd/structural-types.js.map +1 -0
- package/dist/index.d.ts +7 -23
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -16
- package/dist/index.js.map +1 -1
- package/dist/lang/determinism-scanner.d.ts +71 -0
- package/dist/lang/determinism-scanner.d.ts.map +1 -0
- package/dist/lang/determinism-scanner.js +625 -0
- package/dist/lang/determinism-scanner.js.map +1 -0
- package/dist/lang/symbol-table.d.ts +31 -0
- package/dist/lang/symbol-table.d.ts.map +1 -1
- package/dist/lang/symbol-table.generated.d.ts +13 -19
- package/dist/lang/symbol-table.generated.d.ts.map +1 -1
- package/dist/lang/symbol-table.generated.js +13 -19
- package/dist/lang/symbol-table.generated.js.map +1 -1
- package/dist/lang/symbol-table.js +50 -1
- package/dist/lang/symbol-table.js.map +1 -1
- package/dist/mesh/creased-normals.d.ts +50 -0
- package/dist/mesh/creased-normals.d.ts.map +1 -0
- package/dist/mesh/creased-normals.js +114 -0
- package/dist/mesh/creased-normals.js.map +1 -0
- package/dist/mesh/decoration-provider.d.ts +53 -0
- package/dist/mesh/decoration-provider.d.ts.map +1 -0
- package/dist/mesh/decoration-provider.js +21 -0
- package/dist/mesh/decoration-provider.js.map +1 -0
- package/dist/mesh/engrave.d.ts +4 -0
- package/dist/mesh/engrave.d.ts.map +1 -1
- package/dist/mesh/engrave.js +22 -31
- package/dist/mesh/engrave.js.map +1 -1
- package/dist/mesh/index.d.ts +5 -14
- package/dist/mesh/index.d.ts.map +1 -1
- package/dist/mesh/index.js +7 -18
- package/dist/mesh/index.js.map +1 -1
- package/dist/mesh/io.d.ts +2 -1
- package/dist/mesh/io.d.ts.map +1 -1
- package/dist/mesh/io.js +5 -7
- package/dist/mesh/io.js.map +1 -1
- package/dist/mesh/primitives.d.ts +5 -18
- package/dist/mesh/primitives.d.ts.map +1 -1
- package/dist/mesh/primitives.js +4 -48
- package/dist/mesh/primitives.js.map +1 -1
- package/dist/mesh/stl-loader.d.ts +23 -0
- package/dist/mesh/stl-loader.d.ts.map +1 -0
- package/dist/mesh/stl-loader.js +139 -0
- package/dist/mesh/stl-loader.js.map +1 -0
- package/dist/module-resolver/parse-imports.d.ts +37 -0
- package/dist/module-resolver/parse-imports.d.ts.map +1 -0
- package/dist/module-resolver/parse-imports.js +39 -0
- package/dist/module-resolver/parse-imports.js.map +1 -0
- package/dist/module-resolver/resolver.d.ts +1 -1
- package/dist/module-resolver/resolver.js +2 -2
- package/dist/module-resolver/resolver.js.map +1 -1
- package/dist/node-host/cli.d.ts.map +1 -1
- package/dist/node-host/cli.js +37 -4
- package/dist/node-host/cli.js.map +1 -1
- package/dist/primitives/text/cjk-font.d.ts +42 -0
- package/dist/primitives/text/cjk-font.d.ts.map +1 -0
- package/dist/primitives/text/cjk-font.js +86 -0
- package/dist/primitives/text/cjk-font.js.map +1 -0
- package/dist/runtime-state.d.ts +18 -6
- package/dist/runtime-state.d.ts.map +1 -1
- package/dist/runtime-state.js +9 -1
- package/dist/runtime-state.js.map +1 -1
- package/dist/sdk.d.ts +2 -2
- package/dist/sdk.js +2 -2
- package/dist/sdk.js.map +1 -1
- package/dist/shape.d.ts +15 -0
- package/dist/shape.d.ts.map +1 -1
- package/dist/shape.js +26 -3
- package/dist/shape.js.map +1 -1
- package/dist/symbol-table.d.ts +15 -0
- package/dist/symbol-table.d.ts.map +1 -0
- package/dist/symbol-table.js +14 -0
- package/dist/symbol-table.js.map +1 -0
- package/dist/topology/naming/build-naming.d.ts +14 -30
- package/dist/topology/naming/build-naming.d.ts.map +1 -1
- package/dist/topology/naming/build-naming.js +21 -54
- package/dist/topology/naming/build-naming.js.map +1 -1
- package/dist/topology/naming/capture-topo-ref.d.ts.map +1 -1
- package/dist/topology/naming/capture-topo-ref.js +5 -0
- package/dist/topology/naming/capture-topo-ref.js.map +1 -1
- package/dist/topology/naming/index.d.ts +3 -0
- package/dist/topology/naming/index.d.ts.map +1 -1
- package/dist/topology/naming/index.js +3 -0
- package/dist/topology/naming/index.js.map +1 -1
- package/dist/topology/naming/lineage-resolve.d.ts +80 -0
- package/dist/topology/naming/lineage-resolve.d.ts.map +1 -0
- package/dist/topology/naming/lineage-resolve.js +120 -0
- package/dist/topology/naming/lineage-resolve.js.map +1 -0
- package/dist/topology/naming/lineage.d.ts +349 -0
- package/dist/topology/naming/lineage.d.ts.map +1 -0
- package/dist/topology/naming/lineage.js +398 -0
- package/dist/topology/naming/lineage.js.map +1 -0
- package/dist/topology/naming/migrate.d.ts +41 -0
- package/dist/topology/naming/migrate.d.ts.map +1 -0
- package/dist/topology/naming/migrate.js +88 -0
- package/dist/topology/naming/migrate.js.map +1 -0
- package/dist/topology/naming/role-name.d.ts +176 -0
- package/dist/topology/naming/role-name.d.ts.map +1 -0
- package/dist/topology/naming/role-name.js +344 -0
- package/dist/topology/naming/role-name.js.map +1 -0
- package/dist/topology/naming/roles.d.ts +20 -22
- package/dist/topology/naming/roles.d.ts.map +1 -1
- package/dist/topology/naming/roles.js +51 -49
- package/dist/topology/naming/roles.js.map +1 -1
- package/dist/topology/naming/types.d.ts +65 -18
- package/dist/topology/naming/types.d.ts.map +1 -1
- package/dist/topology/naming/types.js.map +1 -1
- package/dist/vendored/brepjs/kernel/index.d.ts +5 -0
- package/dist/vendored/brepjs/kernel/index.d.ts.map +1 -1
- package/dist/vendored/brepjs/kernel/index.js +11 -0
- package/dist/vendored/brepjs/kernel/index.js.map +1 -1
- package/dist/weapp.d.ts +4 -4
- package/dist/weapp.d.ts.map +1 -1
- package/dist/weapp.js +7 -4
- package/dist/weapp.js.map +1 -1
- package/package.json +16 -14
- package/dist/api/compat/index.d.ts +0 -173
- package/dist/api/compat/index.d.ts.map +0 -1
- package/dist/api/compat/index.js +0 -222
- package/dist/api/compat/index.js.map +0 -1
- package/dist/api/compound.d.ts +0 -108
- package/dist/api/compound.d.ts.map +0 -1
- package/dist/api/compound.js +0 -162
- package/dist/api/compound.js.map +0 -1
- package/dist/api/copy.d.ts +0 -39
- package/dist/api/copy.d.ts.map +0 -1
- package/dist/api/copy.js +0 -81
- package/dist/api/copy.js.map +0 -1
- package/dist/api/fai_drill.d.ts +0 -46
- package/dist/api/fai_drill.d.ts.map +0 -1
- package/dist/api/fai_drill.js +0 -230
- package/dist/api/fai_drill.js.map +0 -1
- package/dist/api/fai_extrude.d.ts +0 -36
- package/dist/api/fai_extrude.d.ts.map +0 -1
- package/dist/api/fai_extrude.js +0 -78
- package/dist/api/fai_extrude.js.map +0 -1
- package/dist/api/fai_split.d.ts +0 -46
- package/dist/api/fai_split.d.ts.map +0 -1
- package/dist/api/fai_split.js +0 -253
- package/dist/api/fai_split.js.map +0 -1
- package/dist/api/load.d.ts +0 -39
- package/dist/api/load.d.ts.map +0 -1
- package/dist/api/load.js +0 -82
- package/dist/api/load.js.map +0 -1
- package/dist/api/svgExtrude.d.ts +0 -32
- package/dist/api/svgExtrude.d.ts.map +0 -1
- package/dist/api/svgExtrude.js +0 -73
- package/dist/api/svgExtrude.js.map +0 -1
- package/dist/api/text.d.ts +0 -34
- package/dist/api/text.d.ts.map +0 -1
- package/dist/api/text.js +0 -100
- package/dist/api/text.js.map +0 -1
- package/dist/brep/text/fontTestHelper.d.ts +0 -30
- package/dist/brep/text/fontTestHelper.d.ts.map +0 -1
- package/dist/brep/text/fontTestHelper.js +0 -57
- package/dist/brep/text/fontTestHelper.js.map +0 -1
- package/dist/cad-runtime/module-executor.d.ts +0 -271
- package/dist/cad-runtime/module-executor.d.ts.map +0 -1
- package/dist/cad-runtime/module-executor.js +0 -630
- package/dist/cad-runtime/module-executor.js.map +0 -1
- package/dist/cad-runtime/terminal-dag.d.ts +0 -65
- package/dist/cad-runtime/terminal-dag.d.ts.map +0 -1
- package/dist/cad-runtime/terminal-dag.js +0 -167
- package/dist/cad-runtime/terminal-dag.js.map +0 -1
- package/dist/faqts/browser.d.ts +0 -16
- package/dist/faqts/browser.d.ts.map +0 -1
- package/dist/faqts/browser.js +0 -13
- package/dist/faqts/browser.js.map +0 -1
- package/dist/faqts/exec-blob.d.ts +0 -14
- package/dist/faqts/exec-blob.d.ts.map +0 -1
- package/dist/faqts/exec-blob.js +0 -22
- package/dist/faqts/exec-blob.js.map +0 -1
- package/dist/faqts/exec-node.d.ts +0 -15
- package/dist/faqts/exec-node.d.ts.map +0 -1
- package/dist/faqts/exec-node.js +0 -29
- package/dist/faqts/exec-node.js.map +0 -1
- package/dist/faqts/imports.d.ts +0 -74
- package/dist/faqts/imports.d.ts.map +0 -1
- package/dist/faqts/imports.js +0 -95
- package/dist/faqts/imports.js.map +0 -1
- package/dist/faqts/index.d.ts +0 -22
- package/dist/faqts/index.d.ts.map +0 -1
- package/dist/faqts/index.js +0 -21
- package/dist/faqts/index.js.map +0 -1
- package/dist/faqts/node.d.ts +0 -23
- package/dist/faqts/node.d.ts.map +0 -1
- package/dist/faqts/node.js +0 -23
- package/dist/faqts/node.js.map +0 -1
- package/dist/faqts/run.d.ts +0 -62
- package/dist/faqts/run.d.ts.map +0 -1
- package/dist/faqts/run.js +0 -62
- package/dist/faqts/run.js.map +0 -1
- package/dist/faqts/transform.d.ts +0 -43
- package/dist/faqts/transform.d.ts.map +0 -1
- package/dist/faqts/transform.js +0 -35
- package/dist/faqts/transform.js.map +0 -1
- package/dist/lang/compile.d.ts +0 -50
- package/dist/lang/compile.d.ts.map +0 -1
- package/dist/lang/compile.js +0 -368
- package/dist/lang/compile.js.map +0 -1
- package/dist/lang/keep.d.ts +0 -109
- package/dist/lang/keep.d.ts.map +0 -1
- package/dist/lang/keep.js +0 -226
- package/dist/lang/keep.js.map +0 -1
- package/dist/lang/parser.d.ts +0 -91
- package/dist/lang/parser.d.ts.map +0 -1
- package/dist/lang/parser.js +0 -1594
- package/dist/lang/parser.js.map +0 -1
- package/dist/mesh/drill-hole/DrillHoleCore.d.ts +0 -90
- package/dist/mesh/drill-hole/DrillHoleCore.d.ts.map +0 -1
- package/dist/mesh/drill-hole/DrillHoleCore.js +0 -287
- package/dist/mesh/drill-hole/DrillHoleCore.js.map +0 -1
- package/dist/mesh/drill-hole/drill-types.d.ts +0 -34
- package/dist/mesh/drill-hole/drill-types.d.ts.map +0 -1
- package/dist/mesh/drill-hole/drill-types.js +0 -7
- package/dist/mesh/drill-hole/drill-types.js.map +0 -1
- package/dist/mesh/fai_drill.d.ts +0 -21
- package/dist/mesh/fai_drill.d.ts.map +0 -1
- package/dist/mesh/fai_drill.js +0 -92
- package/dist/mesh/fai_drill.js.map +0 -1
- package/dist/mesh/fai_extrude.d.ts +0 -24
- package/dist/mesh/fai_extrude.d.ts.map +0 -1
- package/dist/mesh/fai_extrude.js +0 -42
- package/dist/mesh/fai_extrude.js.map +0 -1
- package/dist/mesh/fai_split.d.ts +0 -164
- package/dist/mesh/fai_split.d.ts.map +0 -1
- package/dist/mesh/fai_split.js +0 -269
- package/dist/mesh/fai_split.js.map +0 -1
- package/dist/primitives/svg-extrude.d.ts +0 -43
- package/dist/primitives/svg-extrude.d.ts.map +0 -1
- package/dist/primitives/svg-extrude.js +0 -78
- package/dist/primitives/svg-extrude.js.map +0 -1
- package/dist/primitives/text/cjk.d.ts +0 -61
- package/dist/primitives/text/cjk.d.ts.map +0 -1
- package/dist/primitives/text/cjk.js +0 -215
- package/dist/primitives/text/cjk.js.map +0 -1
- package/dist/primitives/text-geometry.d.ts +0 -47
- package/dist/primitives/text-geometry.d.ts.map +0 -1
- package/dist/primitives/text-geometry.js +0 -127
- package/dist/primitives/text-geometry.js.map +0 -1
- package/dist/test-helpers.d.ts +0 -31
- package/dist/test-helpers.d.ts.map +0 -1
- package/dist/test-helpers.js +0 -55
- package/dist/test-helpers.js.map +0 -1
- package/dist/vendored/brepjs/core/kernelReentrancy.d.ts +0 -41
- package/dist/vendored/brepjs/core/kernelReentrancy.d.ts.map +0 -1
- package/dist/vendored/brepjs/core/kernelReentrancy.js +0 -68
- package/dist/vendored/brepjs/core/kernelReentrancy.js.map +0 -1
|
@@ -34,13 +34,30 @@ import { computeContentKey, stableFingerprint } from './content-key.js';
|
|
|
34
34
|
export { computeContentKey } from './content-key.js';
|
|
35
35
|
export { stableFingerprint } from './content-key.js';
|
|
36
36
|
import { isCompoundLike, getSlot, ensureSlot } from '../shape.js';
|
|
37
|
-
import { buildPartNaming
|
|
37
|
+
import { buildPartNaming } from '../topology/naming/build-naming.js';
|
|
38
38
|
import { faceRowToHint } from '../topology/naming/geom-hint.js';
|
|
39
39
|
import { HASH_UPPER_BOUND } from '../brep/face-evolution.js';
|
|
40
|
+
import { scanDeterminism } from '../lang/determinism-scanner.js';
|
|
40
41
|
// 执行护栏超时错误(§6.3 / D8)定义在独立叶子文件 execution-limit-error.ts,
|
|
41
42
|
// DirectExecutor(direct 路径单元循环内检查)与本文件共用;此处 import + re-export
|
|
42
43
|
// 保持宿主 import 面不变(module 路径 runWithFailureHandling 的 Promise.race 使用)。
|
|
43
44
|
export { ExecutionLimitError } from './execution-limit-error.js';
|
|
45
|
+
import { RuntimeConcurrentError } from './runtime-concurrent-error.js';
|
|
46
|
+
export { RuntimeConcurrentError } from './runtime-concurrent-error.js';
|
|
47
|
+
/**
|
|
48
|
+
* 全局执行态锁(C1):进程内同一时刻只允许一个 runtime 处于执行态。
|
|
49
|
+
*
|
|
50
|
+
* 进程级单例(`setCurrentStmt` / backends / 内核)决定了并发执行多 runtime 不可支持;
|
|
51
|
+
* 旧行为是"互踩"(见 {@link CadRuntime.claimBackends} 文档),现在改为显式拒绝。
|
|
52
|
+
*
|
|
53
|
+
* **同实例的重入放行**:`update` 内部会经 `executeDirectText`/`appendDirectText` 落入
|
|
54
|
+
* 同一调用栈——那已被"同一栈上串行"保证,不构成并发。跨实例一律拒绝。
|
|
55
|
+
*/
|
|
56
|
+
let executingRuntimeId = null;
|
|
57
|
+
/** 执行态持有者(诊断用:错误信息里给出被谁挡住)。 */
|
|
58
|
+
let executingEntry = null;
|
|
59
|
+
/** runtime id 分配器(仅用于错误信息定位,不参与任何语义判定)。 */
|
|
60
|
+
let nextRuntimeId = 1;
|
|
44
61
|
/**
|
|
45
62
|
* Thrown by CadRuntime.append when a newly appended statement references a
|
|
46
63
|
* variable that is not in the persistent context — its producer was never
|
|
@@ -125,8 +142,14 @@ export class CadRuntime {
|
|
|
125
142
|
topologyCache = new Map();
|
|
126
143
|
/** 无 IR 执行器(DirectExecutor,T5 后唯一执行路径) */
|
|
127
144
|
directExecutor;
|
|
145
|
+
/** 实例 id(仅用于 C1 并发错误信息里的定位,不参与任何语义判定)。 */
|
|
146
|
+
runtimeId = nextRuntimeId++;
|
|
128
147
|
/** 安全策略档位(透传给 extractMetadata 与 DirectExecutor;缺省 'strict') */
|
|
129
148
|
securityPolicy;
|
|
149
|
+
/** 确定性扫描档位(缺省 'error';execute/append 前对源码做 B 档 taint 扫描)。 */
|
|
150
|
+
determinismPolicy;
|
|
151
|
+
/** warn 档位下收集的确定性警告,合并进最终 ExecutionResult.infos。 */
|
|
152
|
+
determinismWarnings = [];
|
|
130
153
|
/** 宿主注册库(含 cad:由根门面 createRuntime 包装注入;注入编译产物 fn 的第二参 ns) */
|
|
131
154
|
libs;
|
|
132
155
|
/** 库内容身份表 (binding → content hash),增量 key 用(B2,§7.3) */
|
|
@@ -177,6 +200,9 @@ export class CadRuntime {
|
|
|
177
200
|
// wrapping — DUAL_OP_META hangs on the function object with
|
|
178
201
|
// enumerable:false, and wrapping first would let bare functions silently
|
|
179
202
|
// skip the strict validation pass (R8).
|
|
203
|
+
// Naming (2026-09-23): library authors no longer declare face naming; every
|
|
204
|
+
// bare function is admitted with the default unmodeled provenance (see
|
|
205
|
+
// admit-compat-lib.ts / docs/plans/2026-09-23-relax-lib-naming-design.md).
|
|
180
206
|
const lift = options?.autoLift ?? !hasDualOp(ns);
|
|
181
207
|
const admitted = lift
|
|
182
208
|
? admitCompatLib(ns)
|
|
@@ -201,6 +227,7 @@ export class CadRuntime {
|
|
|
201
227
|
this.libs = libs;
|
|
202
228
|
this.namespaces = { ...libs };
|
|
203
229
|
this.securityPolicy = options.security ?? 'strict';
|
|
230
|
+
this.determinismPolicy = options.determinism ?? 'error';
|
|
204
231
|
this.directExecutor = new DirectExecutor({
|
|
205
232
|
namespaces: this.namespaces,
|
|
206
233
|
setSolid: (partName, solid) => { this.solidCache.set(partName, solid); },
|
|
@@ -218,7 +245,11 @@ export class CadRuntime {
|
|
|
218
245
|
* 先前 runtime 的后续 execute 会被静默劫持(dispatch 走错槽、缓存键漂移、
|
|
219
246
|
* 顶替释放旧 BREP 句柄后拓扑重建撞上悬空句柄)。因此除构造外,每个执行入口
|
|
220
247
|
* (execute,所有执行路径的汇聚点)都必须先重新认领本实例的配置。
|
|
221
|
-
*
|
|
248
|
+
*
|
|
249
|
+
* ⚠️ 并发交错执行多个 runtime **仍会互踩**——这条限制现在由全局执行态锁强制
|
|
250
|
+
* ({@link withExecutionLock}):第二个 runtime 在他人执行态时抛
|
|
251
|
+
* {@link RuntimeConcurrentError}(E_RUNTIME_CONCURRENT),不再"尽力而为"。
|
|
252
|
+
* 用户已裁决不允许并发(开发计划 §4.7 C1)。
|
|
222
253
|
* ⚠️ getter 的 this 指向所在对象字面量,用箭头闭包捕获实例(避免 no-this-alias)。
|
|
223
254
|
*/
|
|
224
255
|
claimBackends() {
|
|
@@ -284,14 +315,48 @@ export class CadRuntime {
|
|
|
284
315
|
return this.brepChain;
|
|
285
316
|
}
|
|
286
317
|
// ── 公开入口:execute / append / update(输入一律是代码文本,IR 在引擎内部) ──
|
|
318
|
+
/**
|
|
319
|
+
* 取全局执行态锁并运行 `fn`(C1)。跨实例并发 → 抛 {@link RuntimeConcurrentError};
|
|
320
|
+
* 本实例重入(update 内部落到 executeDirectText/appendDirectText)放行。
|
|
321
|
+
*
|
|
322
|
+
* 刻意**同步**取锁(不在取锁前 await):这样 `runtimeA.execute(...)` 尚未 await 时
|
|
323
|
+
* 紧接着调 `runtimeB.execute(...)` 必然被拒绝,行为可确定、可测试。
|
|
324
|
+
* @param entry - 入口名(execute / append / update),仅用于错误信息。
|
|
325
|
+
* @param fn - 实际执行体。
|
|
326
|
+
* @returns fn 的结果;无论成功失败都释放锁(finally)。
|
|
327
|
+
*/
|
|
328
|
+
async withExecutionLock(entry, fn) {
|
|
329
|
+
if (executingRuntimeId !== null && executingRuntimeId !== this.runtimeId) {
|
|
330
|
+
throw new RuntimeConcurrentError(executingRuntimeId, this.runtimeId, entry);
|
|
331
|
+
}
|
|
332
|
+
const reentrant = executingRuntimeId === this.runtimeId;
|
|
333
|
+
if (!reentrant) {
|
|
334
|
+
executingRuntimeId = this.runtimeId;
|
|
335
|
+
executingEntry = entry;
|
|
336
|
+
}
|
|
337
|
+
try {
|
|
338
|
+
return await fn();
|
|
339
|
+
}
|
|
340
|
+
finally {
|
|
341
|
+
if (!reentrant) {
|
|
342
|
+
executingRuntimeId = null;
|
|
343
|
+
executingEntry = null;
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
/** 当前执行态持有者的入口名(诊断;无持有者时 null)。 */
|
|
348
|
+
static get executingEntry() {
|
|
349
|
+
return executingEntry;
|
|
350
|
+
}
|
|
287
351
|
/**
|
|
288
352
|
* Full execution from code text: parse → execute every statement.
|
|
289
353
|
* @param code - the .fai.js source text.
|
|
290
354
|
* @param opts - optional execution options.
|
|
291
355
|
* @returns promise resolving to the ExecutionResult.
|
|
356
|
+
* @throws {RuntimeConcurrentError} when another CadRuntime is already executing (C1).
|
|
292
357
|
*/
|
|
293
358
|
async execute(code, opts) {
|
|
294
|
-
return this.executeDirectText(code, opts);
|
|
359
|
+
return this.withExecutionLock('execute', () => this.executeDirectText(code, opts));
|
|
295
360
|
}
|
|
296
361
|
/**
|
|
297
362
|
* Append new statements (incremental execution): only execute the new code
|
|
@@ -300,9 +365,97 @@ export class CadRuntime {
|
|
|
300
365
|
* @param code - the new .fai.js source text to append.
|
|
301
366
|
* @param opts - optional execution options.
|
|
302
367
|
* @returns promise resolving to the ExecutionResult.
|
|
368
|
+
* @throws {RuntimeConcurrentError} when another CadRuntime is already executing (C1).
|
|
303
369
|
*/
|
|
304
370
|
async append(code, opts) {
|
|
305
|
-
return this.appendDirectText(code, opts);
|
|
371
|
+
return this.withExecutionLock('append', () => this.appendDirectText(code, opts));
|
|
372
|
+
}
|
|
373
|
+
/**
|
|
374
|
+
* 确定性扫描门(B 档 taint):执行前对源码做静态扫描,违规按 determinismPolicy 处理。
|
|
375
|
+
*
|
|
376
|
+
* 扫描范围:主文件 + @faicad/* 库源码(经 libLoader.loadSource,若宿主提供)。
|
|
377
|
+
* 项目内相对 import 模块的扫描由 ModuleRegistry.load 内部完成(构造时传入 policy)。
|
|
378
|
+
*
|
|
379
|
+
* @returns ExecutionResult(违规 + policy='error' 时),null(通过或 warn/off)。
|
|
380
|
+
* warn 档位下警告收集到 this.determinismWarnings,由调用方合并进 infos。
|
|
381
|
+
*/
|
|
382
|
+
async runDeterminismGate(code, meta) {
|
|
383
|
+
if (this.determinismPolicy === 'off')
|
|
384
|
+
return null;
|
|
385
|
+
this.determinismWarnings = [];
|
|
386
|
+
const hints = this.extractDeterminismHints(meta);
|
|
387
|
+
const violations = scanDeterminism(code, {
|
|
388
|
+
defaultNs: this.defaultNsName,
|
|
389
|
+
extraNamespaces: hints.namespaces,
|
|
390
|
+
extraCallees: hints.callees,
|
|
391
|
+
}).violations;
|
|
392
|
+
// 库源码扫描(@faicad/* 非引擎;经 libLoader.loadSource,宿主未提供则跳过)
|
|
393
|
+
const loadSource = this.ports.libLoader?.loadSource;
|
|
394
|
+
if (loadSource) {
|
|
395
|
+
for (const imp of meta.imports ?? []) {
|
|
396
|
+
const spec = imp.packageName ?? imp.specifier ?? '';
|
|
397
|
+
if (!spec.startsWith('@faicad/'))
|
|
398
|
+
continue;
|
|
399
|
+
if (spec === '@faicad/faijs' || spec.startsWith('@faicad/faijs/'))
|
|
400
|
+
continue;
|
|
401
|
+
let src;
|
|
402
|
+
try {
|
|
403
|
+
src = await loadSource(spec);
|
|
404
|
+
}
|
|
405
|
+
catch {
|
|
406
|
+
// 库源码不可读 → 跳过(不阻断执行;库违规由库作者负责)
|
|
407
|
+
}
|
|
408
|
+
if (src) {
|
|
409
|
+
// scanLibrarySource strict:库源码含 TS 语法 → 显式抛错(不静默跳过)
|
|
410
|
+
violations.push(...this.scanLibrarySource(src, hints).violations);
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
if (violations.length === 0)
|
|
415
|
+
return null;
|
|
416
|
+
const formatted = violations.map((v) => `[determinism] line ${v.lineNo} [${v.source}]: ${v.message}`);
|
|
417
|
+
if (this.determinismPolicy === 'warn') {
|
|
418
|
+
this.determinismWarnings = formatted;
|
|
419
|
+
return null;
|
|
420
|
+
}
|
|
421
|
+
// 'error'
|
|
422
|
+
const first = violations[0];
|
|
423
|
+
return {
|
|
424
|
+
outputs: new Map(),
|
|
425
|
+
brepChain: this.brepChain,
|
|
426
|
+
terminals: [],
|
|
427
|
+
infos: [],
|
|
428
|
+
failedAt: {
|
|
429
|
+
index: -1,
|
|
430
|
+
callee: 'determinism',
|
|
431
|
+
message: formatted[0],
|
|
432
|
+
lineNo: first.lineNo,
|
|
433
|
+
code: 'E_DETERMINISM',
|
|
434
|
+
},
|
|
435
|
+
};
|
|
436
|
+
}
|
|
437
|
+
/** 从 meta.imports 提取扫描提示:namespace import → extraNamespaces,named import → extraCallees。 */
|
|
438
|
+
extractDeterminismHints(meta) {
|
|
439
|
+
const namespaces = [];
|
|
440
|
+
const callees = [];
|
|
441
|
+
for (const imp of meta.imports ?? []) {
|
|
442
|
+
if (imp.kind === 'namespace' && imp.localName)
|
|
443
|
+
namespaces.push(imp.localName);
|
|
444
|
+
if (imp.kind === 'named')
|
|
445
|
+
callees.push(...imp.bindings);
|
|
446
|
+
}
|
|
447
|
+
return { namespaces, callees };
|
|
448
|
+
}
|
|
449
|
+
/** 扫描库源码(契约:输入必须是编译后的纯 JS;含 TS 语法/解析失败 → 显式报错,无剥离、无回退)。 */
|
|
450
|
+
scanLibrarySource(src, hints) {
|
|
451
|
+
return {
|
|
452
|
+
violations: scanDeterminism(src, {
|
|
453
|
+
defaultNs: this.defaultNsName,
|
|
454
|
+
extraNamespaces: hints.namespaces,
|
|
455
|
+
extraCallees: hints.callees,
|
|
456
|
+
strict: true, // 库源码非法(含 TS 语法)→ 抛错,不静默跳过
|
|
457
|
+
}).violations,
|
|
458
|
+
};
|
|
306
459
|
}
|
|
307
460
|
/**
|
|
308
461
|
* Direct-mode full execution: the code text runs on the DirectExecutor
|
|
@@ -315,6 +468,9 @@ export class CadRuntime {
|
|
|
315
468
|
this.claimBackends();
|
|
316
469
|
this.accumulatedCode = code;
|
|
317
470
|
const meta = extractMetadata(code, { defaultNs: this.defaultNsName, security: this.securityPolicy, namespaces: Object.keys(this.libs) });
|
|
471
|
+
const determinismFailure = await this.runDeterminismGate(code, meta);
|
|
472
|
+
if (determinismFailure)
|
|
473
|
+
return determinismFailure;
|
|
318
474
|
const libLoadFailure = await this.autoLoadLibsFromImports(meta.imports);
|
|
319
475
|
if (libLoadFailure)
|
|
320
476
|
return libLoadFailure;
|
|
@@ -340,6 +496,8 @@ export class CadRuntime {
|
|
|
340
496
|
return this.directFailedAtOrThrow(outcome.failedAt, meta);
|
|
341
497
|
}
|
|
342
498
|
const result = this.collectDirectResult(meta, opts);
|
|
499
|
+
if (this.determinismWarnings.length > 0)
|
|
500
|
+
result.infos.push(...this.determinismWarnings);
|
|
343
501
|
this.recordFingerprints(opts);
|
|
344
502
|
return result;
|
|
345
503
|
}
|
|
@@ -403,6 +561,9 @@ export class CadRuntime {
|
|
|
403
561
|
// A1 安全扫描需把 ctx 已有键 + 已注册命名空间都作为 knownNames(避免 SEC_FREE_IDENT 误杀 append 场景)。
|
|
404
562
|
const appendKnownNames = [...Object.keys(this.libs), ...de.listCtxKeys()];
|
|
405
563
|
const meta = extractMetadata(fullCode, { defaultNs: this.defaultNsName, looseVars: true, security: this.securityPolicy, namespaces: appendKnownNames, nsNames: Object.keys(this.libs) });
|
|
564
|
+
const determinismFailure = await this.runDeterminismGate(fullCode, meta);
|
|
565
|
+
if (determinismFailure)
|
|
566
|
+
return determinismFailure;
|
|
406
567
|
const libLoadFailure = await this.autoLoadLibsFromImports(meta.imports);
|
|
407
568
|
if (libLoadFailure)
|
|
408
569
|
return libLoadFailure;
|
|
@@ -427,6 +588,8 @@ export class CadRuntime {
|
|
|
427
588
|
return this.directFailedAtOrThrow(outcome.failedAt, meta);
|
|
428
589
|
}
|
|
429
590
|
const result = this.collectDirectResult(meta, opts);
|
|
591
|
+
if (this.determinismWarnings.length > 0)
|
|
592
|
+
result.infos.push(...this.determinismWarnings);
|
|
430
593
|
this.recordFingerprints(opts);
|
|
431
594
|
return result;
|
|
432
595
|
}
|
|
@@ -452,7 +615,7 @@ export class CadRuntime {
|
|
|
452
615
|
return { seed: {} };
|
|
453
616
|
if (!(meta.imports ?? []).some((imp) => isRelativeSpecifier(imp.specifier)))
|
|
454
617
|
return { seed: {} };
|
|
455
|
-
const registry = new ModuleRegistry(loader, (code, imports) => this.runDirectModule(code, imports), this.securityPolicy);
|
|
618
|
+
const registry = new ModuleRegistry(loader, (code, imports) => this.runDirectModule(code, imports), this.securityPolicy, this.determinismPolicy);
|
|
456
619
|
try {
|
|
457
620
|
const seed = await registry.resolveImports(meta.imports ?? [], baseKey);
|
|
458
621
|
return { seed };
|
|
@@ -523,9 +686,15 @@ export class CadRuntime {
|
|
|
523
686
|
const v = de.getCtxVar(String(name));
|
|
524
687
|
if (isShapeLike(v)) {
|
|
525
688
|
const shape = v;
|
|
689
|
+
// 非实体导入(C6 线框/面/壳)不携带显示网格——positions/indices 为
|
|
690
|
+
// undefined 是已知限制(load-nonsolid.test.ts),content key 退化为
|
|
691
|
+
// 占位值而不是崩溃。
|
|
692
|
+
const hasMesh = shape.positions instanceof Float32Array && shape.indices instanceof Uint32Array;
|
|
526
693
|
this.statementCache.set(name, {
|
|
527
694
|
statementKey: `direct:${String(name)}`,
|
|
528
|
-
outputContentKey:
|
|
695
|
+
outputContentKey: hasMesh
|
|
696
|
+
? computeContentKey(shape.positions, shape.indices)
|
|
697
|
+
: `direct:nomesh:${String(name)}`,
|
|
529
698
|
output: shape,
|
|
530
699
|
});
|
|
531
700
|
}
|
|
@@ -777,8 +946,9 @@ export class CadRuntime {
|
|
|
777
946
|
};
|
|
778
947
|
}
|
|
779
948
|
if (partTopo.source === 'primitive') {
|
|
780
|
-
|
|
781
|
-
|
|
949
|
+
// Phase 1.8(D6):primitive 不再派生伪拓扑 role——拓扑身份是 BREP 专有能力,
|
|
950
|
+
// primitive/mesh 一致只填 hint(naming 行 origin/role 显式 null)。
|
|
951
|
+
return { source: partTopo.source, partName, faces, edges, edgeFaceOrdinals };
|
|
782
952
|
}
|
|
783
953
|
return { source: partTopo.source, partName, faces, edges, edgeFaceOrdinals };
|
|
784
954
|
}
|
|
@@ -822,9 +992,10 @@ export class CadRuntime {
|
|
|
822
992
|
* @param newCode - the .fai.js source text after the edit.
|
|
823
993
|
* @param opts - optional execution options.
|
|
824
994
|
* @returns promise resolving to the ExecutionResult.
|
|
995
|
+
* @throws {RuntimeConcurrentError} when another CadRuntime is already executing (C1).
|
|
825
996
|
*/
|
|
826
997
|
async update(oldCode, newCode, opts) {
|
|
827
|
-
return this.updateIncremental(oldCode, newCode, opts);
|
|
998
|
+
return this.withExecutionLock('update', () => this.updateIncremental(oldCode, newCode, opts));
|
|
828
999
|
}
|
|
829
1000
|
// ── 公开:缓存访问 ──
|
|
830
1001
|
/**
|