@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
package/dist/lang/keep.js
DELETED
|
@@ -1,226 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* keep — 统一内外 keep 机制的语义集中点(L0 零依赖)
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* keep 机制的两面:
|
|
6
|
-
* - 调用点声明:`cad.op(input, { keep: [a, b], keepHidden: true })`(UI / AI / 用户)
|
|
7
|
-
* - 函数体声明:`exec.keep(...shapes)` / `exec.keepHidden(...shapes)`(库作者)
|
|
8
|
-
*
|
|
9
|
-
* 优先级:调用点 > 函数体(resolveKeep 先铺函数体声明,再用调用点覆盖写入)。
|
|
10
|
-
*
|
|
11
|
-
* 本文件是 keep 语义的唯一集中点:parseUserKeep / withoutKeepDirectives /
|
|
12
|
-
* resolveKeep / validateKeepDirectives。消费方:compile(发射剥离)、
|
|
13
|
-
* module-executor(statementKey)、terminal-dag(消费判定)、runtime.check(校验)。
|
|
14
|
-
*
|
|
15
|
-
* L0 边界:仅依赖 ./types 与 ../identity,零运行时依赖。
|
|
16
|
-
*/
|
|
17
|
-
import { isVarRef, isCallRef, isExprRef, statementInputs } from './types.js';
|
|
18
|
-
import { asPartName } from '../identity.js';
|
|
19
|
-
// ── 剥离 ──
|
|
20
|
-
/**
|
|
21
|
-
* 剥离调用点 keep 指令(`keep` / `keepHidden` 两键)。
|
|
22
|
-
*
|
|
23
|
-
* 编译发射与 statementKey 必须剥离(设计 §7.1/§7.2):keep 透传给库函数会
|
|
24
|
-
* 挤占 params 槽 / 被当 Shape 传入(union/split 的 `...rest`)。
|
|
25
|
-
*/
|
|
26
|
-
/**
|
|
27
|
-
* Strip the call-site keep directives (`keep` / `keepHidden` keys). Both
|
|
28
|
-
* compile emission and statement-key computation must strip them (design
|
|
29
|
-
* §7.1/§7.2): passing keep through would crowd the params slot or be treated as
|
|
30
|
-
* a Shape argument (union/split `...rest`).
|
|
31
|
-
* @param args - the statement's args object, or undefined.
|
|
32
|
-
* @returns the args with the keep and keepHidden keys removed.
|
|
33
|
-
*/
|
|
34
|
-
export function withoutKeepDirectives(args) {
|
|
35
|
-
if (!args)
|
|
36
|
-
return {};
|
|
37
|
-
const { keep: _keep, keepHidden: _keepHidden, ...rest } = args;
|
|
38
|
-
return rest;
|
|
39
|
-
}
|
|
40
|
-
/** 判定 ArgIR 是否为"纯对象"位置实参(非 IR 变体、非数组的普通对象)。 */
|
|
41
|
-
function isPlainObjectArg(arg) {
|
|
42
|
-
return (arg !== null &&
|
|
43
|
-
typeof arg === 'object' &&
|
|
44
|
-
!Array.isArray(arg) &&
|
|
45
|
-
!isVarRef(arg) &&
|
|
46
|
-
!isCallRef(arg) &&
|
|
47
|
-
!isExprRef(arg) &&
|
|
48
|
-
!('$param' in arg));
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* 剥离位置实参槽中的 keep 指令(true-JS-subset 方案 §4.1):keep/keepHidden 键
|
|
52
|
-
* 存在于尾随纯对象位置实参(选项槽)中,发射/序列化前从该对象剥离。
|
|
53
|
-
* 与 withoutKeepDirectives 同语义,只是载体从 args 记录变为 positional 尾随对象。
|
|
54
|
-
* @param positional - the statement's positional argument slot.
|
|
55
|
-
* @returns a copy of the positional slot with keep/keepHidden removed from the trailing plain object.
|
|
56
|
-
*/
|
|
57
|
-
export function withoutKeepDirectivesFromPositional(positional) {
|
|
58
|
-
const last = positional[positional.length - 1];
|
|
59
|
-
if (!isPlainObjectArg(last))
|
|
60
|
-
return positional;
|
|
61
|
-
const obj = last;
|
|
62
|
-
const stripped = Object.fromEntries(Object.entries(obj).filter(([k]) => k !== 'keep' && k !== 'keepHidden'));
|
|
63
|
-
return [...positional.slice(0, -1), stripped];
|
|
64
|
-
}
|
|
65
|
-
// ── 解析 ──
|
|
66
|
-
/**
|
|
67
|
-
* 解析单条 keep 条目 → { target, hidden };形态非法返回 undefined(validate 负责报错)。
|
|
68
|
-
* hidden 为三态:undefined = 未指定(交由语句级 keepHidden 默认);true/false = 显式指定。
|
|
69
|
-
*/
|
|
70
|
-
function parseKeepEntry(entry) {
|
|
71
|
-
if (typeof entry === 'string') {
|
|
72
|
-
return { target: asPartName(entry) };
|
|
73
|
-
}
|
|
74
|
-
if (isVarRef(entry)) {
|
|
75
|
-
return { target: asPartName(entry.$ref) };
|
|
76
|
-
}
|
|
77
|
-
if (entry !== null && typeof entry === 'object' && !Array.isArray(entry)) {
|
|
78
|
-
const obj = entry;
|
|
79
|
-
const shape = obj.shape;
|
|
80
|
-
if (typeof shape === 'string') {
|
|
81
|
-
return { target: asPartName(shape), hidden: obj.hidden === true };
|
|
82
|
-
}
|
|
83
|
-
if (shape !== null && typeof shape === 'object' && isVarRef(shape)) {
|
|
84
|
-
return { target: asPartName(shape.$ref), hidden: obj.hidden === true };
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
return undefined;
|
|
88
|
-
}
|
|
89
|
-
/**
|
|
90
|
-
* 解析调用点 keep / keepHidden 指令(IR 形态 → 目标与 hidden)。
|
|
91
|
-
*
|
|
92
|
-
* 两种条目形态等价(设计 §2.3):标识符 `keep:[a,b]`(parser 产出 VarRefIR)
|
|
93
|
-
* 与字符串字面量 `keep:['a']`(parser 产出 string)。
|
|
94
|
-
* hidden 三态:仅 `{shape, hidden}` 显式条目写入;普通条目不写
|
|
95
|
-
* (hidden 由语句级 keepHidden 兜底,设计 §2.4 `?? statementDefault`)。
|
|
96
|
-
*/
|
|
97
|
-
/**
|
|
98
|
-
* Parse the call-site keep / keepHidden directives (IR shape into targets and
|
|
99
|
-
* hidden states). Identifier and string-literal entry forms are equivalent;
|
|
100
|
-
* hidden is three-valued, with only explicit `{shape, hidden}` entries written.
|
|
101
|
-
* @param stmt - the statement whose args hold the keep directives.
|
|
102
|
-
* @returns the parsed user keep targets and hidden defaults.
|
|
103
|
-
*/
|
|
104
|
-
export function parseUserKeep(stmt) {
|
|
105
|
-
const targets = [];
|
|
106
|
-
const hidden = new Map();
|
|
107
|
-
let statementDefault = false;
|
|
108
|
-
const args = stmt.args ?? {};
|
|
109
|
-
const keepArg = args.keep;
|
|
110
|
-
if (Array.isArray(keepArg)) {
|
|
111
|
-
for (const entry of keepArg) {
|
|
112
|
-
const parsed = parseKeepEntry(entry);
|
|
113
|
-
if (!parsed)
|
|
114
|
-
continue;
|
|
115
|
-
targets.push(parsed.target);
|
|
116
|
-
if (parsed.hidden !== undefined)
|
|
117
|
-
hidden.set(parsed.target, parsed.hidden);
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
const keepHiddenArg = args.keepHidden;
|
|
121
|
-
if (typeof keepHiddenArg === 'boolean')
|
|
122
|
-
statementDefault = keepHiddenArg;
|
|
123
|
-
return { targets, hidden, statementDefault };
|
|
124
|
-
}
|
|
125
|
-
// ── 合并(设计契约 §2.4) ──
|
|
126
|
-
/**
|
|
127
|
-
* 合并函数体声明与调用点声明。
|
|
128
|
-
*
|
|
129
|
-
* 优先级体现为两步顺序:先铺函数体声明(internal),再用调用点声明覆盖写入。
|
|
130
|
-
* 调用点条目的 hidden = 逐条目 hidden ?? statementDefault(D1:默认可见)。
|
|
131
|
-
*/
|
|
132
|
-
/**
|
|
133
|
-
* Merge function-body declarations with call-site declarations. Precedence is a
|
|
134
|
-
* two-step order: function-body declarations (internal) are laid down first,
|
|
135
|
-
* then call-site declarations overwrite them.
|
|
136
|
-
* @param stmt - the statement whose call-site keep directives to merge.
|
|
137
|
-
* @param internal - the function-body keep registration, if any.
|
|
138
|
-
* @returns the merged keep resolution with kept variables and hidden states.
|
|
139
|
-
*/
|
|
140
|
-
export function resolveKeep(stmt, internal) {
|
|
141
|
-
const kept = new Set(internal?.kept ?? []);
|
|
142
|
-
const hidden = new Map(internal?.hidden ?? []);
|
|
143
|
-
const user = parseUserKeep(stmt);
|
|
144
|
-
for (const v of user.targets) {
|
|
145
|
-
kept.add(v);
|
|
146
|
-
hidden.set(v, user.hidden.get(v) ?? user.statementDefault);
|
|
147
|
-
}
|
|
148
|
-
return { kept, hidden };
|
|
149
|
-
}
|
|
150
|
-
// ── 静态校验(设计 §7.4,check 用,纯静态、第三方同样适用) ──
|
|
151
|
-
/**
|
|
152
|
-
* 校验语句的 keep / keepHidden 指令(纯静态,不依赖第三方签名)。
|
|
153
|
-
* 返回错误消息列表(空 = 合法):
|
|
154
|
-
* - `keep` 必须是数组;条目必须是变量引用(字符串或标识符)或 `{shape, hidden}` 对象
|
|
155
|
-
* - 引用目标必须是本语句 inputs 之一,或出现在 args 中(VarRefIR)
|
|
156
|
-
* - `keepHidden` 必须是 boolean
|
|
157
|
-
*/
|
|
158
|
-
/**
|
|
159
|
-
* Validate a statement's keep / keepHidden directives (purely static, does not
|
|
160
|
-
* depend on third-party signatures). Returns a list of error messages, empty
|
|
161
|
-
* when the directives are legal.
|
|
162
|
-
* @param stmt - the statement whose keep directives to validate.
|
|
163
|
-
* @returns an array of error messages, empty when valid.
|
|
164
|
-
*/
|
|
165
|
-
export function validateKeepDirectives(stmt) {
|
|
166
|
-
const errors = [];
|
|
167
|
-
const args = stmt.args ?? {};
|
|
168
|
-
if ('keep' in args) {
|
|
169
|
-
const keepArg = args.keep;
|
|
170
|
-
if (!Array.isArray(keepArg)) {
|
|
171
|
-
errors.push(`statement "${stmt.id}": keep must be an array of variable references`);
|
|
172
|
-
}
|
|
173
|
-
else {
|
|
174
|
-
// 合法引用目标:positional 中的 VarRefIR/ExprIR refs + args(除 keep/keepHidden 两键)中的引用
|
|
175
|
-
const referable = new Set(statementInputs(stmt).map(String));
|
|
176
|
-
const scan = (value) => {
|
|
177
|
-
if (value === null || typeof value !== 'object')
|
|
178
|
-
return;
|
|
179
|
-
if (isVarRef(value)) {
|
|
180
|
-
referable.add(String(value.$ref));
|
|
181
|
-
return;
|
|
182
|
-
}
|
|
183
|
-
if (isExprRef(value)) {
|
|
184
|
-
// ExprIR refs(引用变量)也是合法 keep 目标;params 是参数(自身是输入)无需加入
|
|
185
|
-
for (const r of value.$expr.refs)
|
|
186
|
-
referable.add(String(r));
|
|
187
|
-
return;
|
|
188
|
-
}
|
|
189
|
-
if (isCallRef(value)) {
|
|
190
|
-
for (const a of value.$call.args)
|
|
191
|
-
scan(a);
|
|
192
|
-
return;
|
|
193
|
-
}
|
|
194
|
-
if (Array.isArray(value)) {
|
|
195
|
-
for (const item of value)
|
|
196
|
-
scan(item);
|
|
197
|
-
return;
|
|
198
|
-
}
|
|
199
|
-
for (const v of Object.values(value))
|
|
200
|
-
scan(v);
|
|
201
|
-
};
|
|
202
|
-
for (const parg of stmt.positional)
|
|
203
|
-
scan(parg);
|
|
204
|
-
for (const [k, v] of Object.entries(args)) {
|
|
205
|
-
if (k === 'keep' || k === 'keepHidden')
|
|
206
|
-
continue;
|
|
207
|
-
scan(v);
|
|
208
|
-
}
|
|
209
|
-
for (const entry of keepArg) {
|
|
210
|
-
const parsed = parseKeepEntry(entry);
|
|
211
|
-
if (!parsed) {
|
|
212
|
-
errors.push(`statement "${stmt.id}": keep entries must be variable references or {shape, hidden} objects`);
|
|
213
|
-
continue;
|
|
214
|
-
}
|
|
215
|
-
if (!referable.has(String(parsed.target))) {
|
|
216
|
-
errors.push(`statement "${stmt.id}": keep target "${String(parsed.target)}" is not an input or argument variable of this statement`);
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
if ('keepHidden' in args && typeof args.keepHidden !== 'boolean') {
|
|
222
|
-
errors.push(`statement "${stmt.id}": keepHidden must be a boolean`);
|
|
223
|
-
}
|
|
224
|
-
return errors;
|
|
225
|
-
}
|
|
226
|
-
//# sourceMappingURL=keep.js.map
|
package/dist/lang/keep.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"keep.js","sourceRoot":"","sources":["../../src/lang/keep.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * keep — 统一内外 keep 机制的语义集中点(L0 零依赖)\n *\n *\n * keep 机制的两面:\n * - 调用点声明:`cad.op(input, { keep: [a, b], keepHidden: true })`(UI / AI / 用户)\n * - 函数体声明:`exec.keep(...shapes)` / `exec.keepHidden(...shapes)`(库作者)\n *\n * 优先级:调用点 > 函数体(resolveKeep 先铺函数体声明,再用调用点覆盖写入)。\n *\n * 本文件是 keep 语义的唯一集中点:parseUserKeep / withoutKeepDirectives /\n * resolveKeep / validateKeepDirectives。消费方:compile(发射剥离)、\n * module-executor(statementKey)、terminal-dag(消费判定)、runtime.check(校验)。\n *\n * L0 边界:仅依赖 ./types 与 ../identity,零运行时依赖。\n */\n\nimport type { ArgIR, CallRefIR, StatementIR, VarRefIR, ExprIR } from './types'\nimport { isVarRef, isCallRef, isExprRef, statementInputs } from './types'\nimport { asPartName, type PartName } from '../identity'\n\n// ── 数据结构(设计契约 §6) ──\n\n/** 函数体 `exec.keep` / `exec.keepHidden` 的运行时登记记录(ModuleExecutor 持有)。 */\nexport interface InternalKeepRecord {\n /** 被声明保留的变量名集合 */\n kept: Set<PartName>\n /** kept 变量的 hidden 状态(未列出的 kept 变量 = 可见) */\n hidden: Map<PartName, boolean>\n}\n\n/** keep 合并结果(terminal-dag 消费判定 + hidden 计算)。 */\nexport interface KeepResolution {\n kept: Set<PartName>\n /** 仅对 kept 中的变量有条目;未列出者 = 可见 */\n hidden: Map<PartName, boolean>\n}\n\n/** 调用点 keep 指令解析结果。 */\nexport interface UserKeep {\n targets: PartName[]\n /** 逐条目 hidden({shape, hidden:true} 形态) */\n hidden: Map<PartName, boolean>\n /** 语句级 hidden 默认(keepHidden: true),默认 false */\n statementDefault: boolean\n}\n\n// ── 剥离 ──\n\n/**\n * 剥离调用点 keep 指令(`keep` / `keepHidden` 两键)。\n *\n * 编译发射与 statementKey 必须剥离(设计 §7.1/§7.2):keep 透传给库函数会\n * 挤占 params 槽 / 被当 Shape 传入(union/split 的 `...rest`)。\n */\n/**\n * Strip the call-site keep directives (`keep` / `keepHidden` keys). Both\n * compile emission and statement-key computation must strip them (design\n * §7.1/§7.2): passing keep through would crowd the params slot or be treated as\n * a Shape argument (union/split `...rest`).\n * @param args - the statement's args object, or undefined.\n * @returns the args with the keep and keepHidden keys removed.\n */\nexport function withoutKeepDirectives(\n args: Record<string, ArgIR> | undefined,\n): Record<string, ArgIR> {\n if (!args) return {}\n const { keep: _keep, keepHidden: _keepHidden, ...rest } = args\n return rest\n}\n\n/** 判定 ArgIR 是否为\"纯对象\"位置实参(非 IR 变体、非数组的普通对象)。 */\nfunction isPlainObjectArg(arg: ArgIR): boolean {\n return (\n arg !== null &&\n typeof arg === 'object' &&\n !Array.isArray(arg) &&\n !isVarRef(arg) &&\n !isCallRef(arg) &&\n !isExprRef(arg) &&\n !('$param' in (arg as object))\n )\n}\n\n/**\n * 剥离位置实参槽中的 keep 指令(true-JS-subset 方案 §4.1):keep/keepHidden 键\n * 存在于尾随纯对象位置实参(选项槽)中,发射/序列化前从该对象剥离。\n * 与 withoutKeepDirectives 同语义,只是载体从 args 记录变为 positional 尾随对象。\n * @param positional - the statement's positional argument slot.\n * @returns a copy of the positional slot with keep/keepHidden removed from the trailing plain object.\n */\nexport function withoutKeepDirectivesFromPositional(positional: ArgIR[]): ArgIR[] {\n const last = positional[positional.length - 1]\n if (!isPlainObjectArg(last)) return positional\n const obj = last as unknown as Record<string, ArgIR>\n const stripped = Object.fromEntries(\n Object.entries(obj).filter(([k]) => k !== 'keep' && k !== 'keepHidden'),\n )\n return [...positional.slice(0, -1), stripped as unknown as ArgIR]\n}\n\n// ── 解析 ──\n\n/**\n * 解析单条 keep 条目 → { target, hidden };形态非法返回 undefined(validate 负责报错)。\n * hidden 为三态:undefined = 未指定(交由语句级 keepHidden 默认);true/false = 显式指定。\n */\nfunction parseKeepEntry(entry: unknown): { target: PartName; hidden?: boolean } | undefined {\n if (typeof entry === 'string') {\n return { target: asPartName(entry) }\n }\n if (isVarRef(entry as ArgIR)) {\n return { target: asPartName((entry as VarRefIR).$ref) }\n }\n if (entry !== null && typeof entry === 'object' && !Array.isArray(entry)) {\n const obj = entry as Record<string, unknown>\n const shape = obj.shape\n if (typeof shape === 'string') {\n return { target: asPartName(shape), hidden: obj.hidden === true }\n }\n if (shape !== null && typeof shape === 'object' && isVarRef(shape as ArgIR)) {\n return { target: asPartName((shape as VarRefIR).$ref), hidden: obj.hidden === true }\n }\n }\n return undefined\n}\n\n/**\n * 解析调用点 keep / keepHidden 指令(IR 形态 → 目标与 hidden)。\n *\n * 两种条目形态等价(设计 §2.3):标识符 `keep:[a,b]`(parser 产出 VarRefIR)\n * 与字符串字面量 `keep:['a']`(parser 产出 string)。\n * hidden 三态:仅 `{shape, hidden}` 显式条目写入;普通条目不写\n * (hidden 由语句级 keepHidden 兜底,设计 §2.4 `?? statementDefault`)。\n */\n/**\n * Parse the call-site keep / keepHidden directives (IR shape into targets and\n * hidden states). Identifier and string-literal entry forms are equivalent;\n * hidden is three-valued, with only explicit `{shape, hidden}` entries written.\n * @param stmt - the statement whose args hold the keep directives.\n * @returns the parsed user keep targets and hidden defaults.\n */\nexport function parseUserKeep(stmt: StatementIR): UserKeep {\n const targets: PartName[] = []\n const hidden = new Map<PartName, boolean>()\n let statementDefault = false\n\n const args = stmt.args ?? {}\n const keepArg = args.keep\n if (Array.isArray(keepArg)) {\n for (const entry of keepArg) {\n const parsed = parseKeepEntry(entry)\n if (!parsed) continue\n targets.push(parsed.target)\n if (parsed.hidden !== undefined) hidden.set(parsed.target, parsed.hidden)\n }\n }\n\n const keepHiddenArg = args.keepHidden\n if (typeof keepHiddenArg === 'boolean') statementDefault = keepHiddenArg\n\n return { targets, hidden, statementDefault }\n}\n\n// ── 合并(设计契约 §2.4) ──\n\n/**\n * 合并函数体声明与调用点声明。\n *\n * 优先级体现为两步顺序:先铺函数体声明(internal),再用调用点声明覆盖写入。\n * 调用点条目的 hidden = 逐条目 hidden ?? statementDefault(D1:默认可见)。\n */\n/**\n * Merge function-body declarations with call-site declarations. Precedence is a\n * two-step order: function-body declarations (internal) are laid down first,\n * then call-site declarations overwrite them.\n * @param stmt - the statement whose call-site keep directives to merge.\n * @param internal - the function-body keep registration, if any.\n * @returns the merged keep resolution with kept variables and hidden states.\n */\nexport function resolveKeep(\n stmt: StatementIR,\n internal?: InternalKeepRecord,\n): KeepResolution {\n const kept = new Set(internal?.kept ?? [])\n const hidden = new Map(internal?.hidden ?? [])\n\n const user = parseUserKeep(stmt)\n for (const v of user.targets) {\n kept.add(v)\n hidden.set(v, user.hidden.get(v) ?? user.statementDefault)\n }\n\n return { kept, hidden }\n}\n\n// ── 静态校验(设计 §7.4,check 用,纯静态、第三方同样适用) ──\n\n/**\n * 校验语句的 keep / keepHidden 指令(纯静态,不依赖第三方签名)。\n * 返回错误消息列表(空 = 合法):\n * - `keep` 必须是数组;条目必须是变量引用(字符串或标识符)或 `{shape, hidden}` 对象\n * - 引用目标必须是本语句 inputs 之一,或出现在 args 中(VarRefIR)\n * - `keepHidden` 必须是 boolean\n */\n/**\n * Validate a statement's keep / keepHidden directives (purely static, does not\n * depend on third-party signatures). Returns a list of error messages, empty\n * when the directives are legal.\n * @param stmt - the statement whose keep directives to validate.\n * @returns an array of error messages, empty when valid.\n */\nexport function validateKeepDirectives(stmt: StatementIR): string[] {\n const errors: string[] = []\n const args = stmt.args ?? {}\n\n if ('keep' in args) {\n const keepArg = args.keep\n if (!Array.isArray(keepArg)) {\n errors.push(`statement \"${stmt.id}\": keep must be an array of variable references`)\n } else {\n // 合法引用目标:positional 中的 VarRefIR/ExprIR refs + args(除 keep/keepHidden 两键)中的引用\n const referable = new Set<string>(statementInputs(stmt).map(String))\n const scan = (value: unknown): void => {\n if (value === null || typeof value !== 'object') return\n if (isVarRef(value as ArgIR)) {\n referable.add(String((value as VarRefIR).$ref))\n return\n }\n if (isExprRef(value as ArgIR)) {\n // ExprIR refs(引用变量)也是合法 keep 目标;params 是参数(自身是输入)无需加入\n for (const r of (value as ExprIR).$expr.refs) referable.add(String(r))\n return\n }\n if (isCallRef(value as CallRefIR)) {\n for (const a of (value as CallRefIR).$call.args) scan(a)\n return\n }\n if (Array.isArray(value)) {\n for (const item of value) scan(item)\n return\n }\n for (const v of Object.values(value as Record<string, unknown>)) scan(v)\n }\n for (const parg of stmt.positional) scan(parg)\n for (const [k, v] of Object.entries(args)) {\n if (k === 'keep' || k === 'keepHidden') continue\n scan(v)\n }\n for (const entry of keepArg) {\n const parsed = parseKeepEntry(entry)\n if (!parsed) {\n errors.push(\n `statement \"${stmt.id}\": keep entries must be variable references or {shape, hidden} objects`,\n )\n continue\n }\n if (!referable.has(String(parsed.target))) {\n errors.push(\n `statement \"${stmt.id}\": keep target \"${String(parsed.target)}\" is not an input or argument variable of this statement`,\n )\n }\n }\n }\n }\n\n if ('keepHidden' in args && typeof args.keepHidden !== 'boolean') {\n errors.push(`statement \"${stmt.id}\": keepHidden must be a boolean`)\n }\n\n return errors\n}\n"]}
|
package/dist/lang/parser.d.ts
DELETED
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* parser — 文本 → ScriptIR(合法 JS 子集,设计文档 §2)
|
|
3
|
-
*
|
|
4
|
-
* 执行模型:`.fai.js` 文本先用 acorn 解析(合法性证明 J-1),再 walk AST 还原为 ScriptIR。
|
|
5
|
-
* 绝不 eval / new Function / import() 真执行。
|
|
6
|
-
*
|
|
7
|
-
* 支持的语法(合法 JS 子集):
|
|
8
|
-
* - `// apiVersion: N` — 版本声明(可选,默认 1)
|
|
9
|
-
* - `export default async (cad) => { ... }` — 唯一合法容器
|
|
10
|
-
* - `const <name> = <literal>` → ParamDef(参数声明,右侧仅字面量)
|
|
11
|
-
* - `const part<N>_v<M> = [await] cad.<op>(<inputVar>?, { ...args })` → StatementIR
|
|
12
|
-
* - `cad.union/subtract/intersect(inputVar, inputVar)` → boolean op
|
|
13
|
-
* - `cad.faceNormal(var)` / `cad.bboxCenter(var)` / ... → GeomRef
|
|
14
|
-
* - `return { shape: part<N>_v<M>, name, color, metalness, roughness }` → ScriptIR.meta
|
|
15
|
-
*
|
|
16
|
-
* 禁止(acorn 抛错或 AST walk 拒绝即 ParseError):
|
|
17
|
-
* - `param` / `with` 关键字、对象字面量用 `=`
|
|
18
|
-
* - 循环 / 条件 / IIFE / try-catch / 模板字符串
|
|
19
|
-
* - 多 default export、函数定义(除顶层箭头外)
|
|
20
|
-
* - eval / new Function / 动态 import()
|
|
21
|
-
*/
|
|
22
|
-
import type { ScriptIR } from './types.js';
|
|
23
|
-
export type { ParseErrorCode } from './parse-error.js';
|
|
24
|
-
export { ParseError } from './parse-error.js';
|
|
25
|
-
/**
|
|
26
|
-
* The result of parsing a faijs source text: the ScriptIR plus supporting
|
|
27
|
-
* line and variable mappings.
|
|
28
|
-
*/
|
|
29
|
-
export interface ParseResult {
|
|
30
|
-
script: ScriptIR;
|
|
31
|
-
/** 语句 id → 变量名映射(新格式下为恒等映射) */
|
|
32
|
-
varToId: Map<string, string>;
|
|
33
|
-
/** 每条语句在源码中的行号(1-based,与 script.statements 一一对应;analyzeCode 用) */
|
|
34
|
-
statementLines: number[];
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* 解析合法 JS 子集文本为 ScriptIR。
|
|
38
|
-
*
|
|
39
|
-
* 步骤:
|
|
40
|
-
* 1. acorn.parse — 合法性闸门(J-1),抛 SyntaxError 即文本非法
|
|
41
|
-
* 2. AST walk — 只接受允许的节点形状,遇违规即 ParseError
|
|
42
|
-
* 3. 构建 ScriptIR
|
|
43
|
-
*
|
|
44
|
-
* 零函数知识:parser 不接收任何 schemas/函数元数据(A5/A14 已删),
|
|
45
|
-
* 对 callee 名字完全均匀处理。
|
|
46
|
-
*
|
|
47
|
-
* @param code - the faijs valid-JS-subset source text to parse.
|
|
48
|
-
* @returns the parsed ScriptIR plus line and variable mappings.
|
|
49
|
-
* @throws ParseError — 含行号
|
|
50
|
-
*/
|
|
51
|
-
export interface ParseScriptOptions {
|
|
52
|
-
/**
|
|
53
|
-
* 脚本内对「默认注入命名空间」的引用标识符(U10/R2)。缺省 'cad'——
|
|
54
|
-
* 与根门面 registerLib('cad', …, {default: true}) 声明一致;宿主换默认绑定名
|
|
55
|
-
* (如 registerLib('g', …, {default: true}))时须传入同名的 defaultNs,容器形参
|
|
56
|
-
* 与语句命名空间判定才与该声明一致。
|
|
57
|
-
*/
|
|
58
|
-
defaultNs?: string;
|
|
59
|
-
/**
|
|
60
|
-
* Loose variable resolution for partial code text (CadRuntime.append receives
|
|
61
|
-
* only the newest statements). Unknown references resolve to their physical
|
|
62
|
-
* PartName instead of throwing; the caller validates them against the
|
|
63
|
-
* persistent ctx (AppendPrefixError when missing).
|
|
64
|
-
*/
|
|
65
|
-
looseVars?: boolean;
|
|
66
|
-
/**
|
|
67
|
-
* Loose local-function calls for single-line extraction (codeToArgs).
|
|
68
|
-
* A bare callee that is not in the script's function set is accepted as a
|
|
69
|
-
* local call candidate instead of throwing E_REFERENCE (D15) — the caller
|
|
70
|
-
* validates it against the full script context. ABI shape is unknown for
|
|
71
|
-
* such callees, so the binding check (validateLocalAbi) is skipped.
|
|
72
|
-
*/
|
|
73
|
-
looseLocalCalls?: boolean;
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* Parse CAD script code text into a ScriptIR.
|
|
77
|
-
*
|
|
78
|
-
* @param code - the script text to parse.
|
|
79
|
-
* @param options - optional parse options (looseVars enables loose variable
|
|
80
|
-
* resolution for partial append text).
|
|
81
|
-
* @returns the parse result (script IR + parse diagnostics).
|
|
82
|
-
*/
|
|
83
|
-
export declare function parseScript(code: string, options?: ParseScriptOptions): ParseResult;
|
|
84
|
-
/**
|
|
85
|
-
* Read the `// apiVersion: N` declaration from the top of a faijs source text,
|
|
86
|
-
* defaulting to 1 when absent.
|
|
87
|
-
* @param code - the faijs source text to inspect.
|
|
88
|
-
* @returns the declared API version number, or 1 when none is present.
|
|
89
|
-
*/
|
|
90
|
-
export declare function getApiVersion(code: string): number;
|
|
91
|
-
//# sourceMappingURL=parser.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/lang/parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAGH,OAAO,KAAK,EAMV,QAAQ,EAMT,MAAM,SAAS,CAAA;AAchB,YAAY,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AA8wC1C;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,QAAQ,CAAA;IAChB,+BAA+B;IAC/B,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC5B,kEAAkE;IAClE,cAAc,EAAE,MAAM,EAAE,CAAA;CACzB;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,WAAW,CAydnF;AAiCD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGlD"}
|