@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/browser.js
CHANGED
|
@@ -16,18 +16,9 @@
|
|
|
16
16
|
* CadRuntime.execute / 高层 API(importStep/exportStep/ensureOcctKernel);
|
|
17
17
|
* 主线程 CSG/SDF 预览走 previewMeshIntersect / runSdfMain。
|
|
18
18
|
*/
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
export
|
|
22
|
-
export { fmtNum, formatCodeLine } from './lang/codegen.js';
|
|
23
|
-
export { analyzeCode } from './lang/statement-summary.js';
|
|
24
|
-
export { codeToArgs } from './lang/code-to-args.js';
|
|
25
|
-
// MetadataExtractor — 无 IR 元数据提取器(UI 通道语义源;UiMetadata 全量)
|
|
26
|
-
export { extractMetadata } from './lang/metadata-extractor.js';
|
|
27
|
-
// 参数表达式编辑(P0-C/P0-D):实时校验层 + 编辑面板纯函数
|
|
28
|
-
export { validateExpression } from './lang/expr-validate.js';
|
|
29
|
-
export { editArgSource } from './lang/source-edit.js';
|
|
30
|
-
export { isHostVarRef, isHostParamRef, isHostCallRef, isHostExprRef, isHostRef, hostArgToDisplay, hostArgToLiteral, HOST_REF_KINDS, } from './lang/host-arg.js';
|
|
19
|
+
// 共享面(env-agnostic:identity + runtime-state + lang/*)——手写清单已收敛,
|
|
20
|
+
// 三处 umbrella(index/browser/weapp)统一 re-export,防漂移。
|
|
21
|
+
export * from './env-agnostic.js';
|
|
31
22
|
// ═══════════════════════════════════════════════════════════
|
|
32
23
|
// B 类:cad-runtime/ + createBrowserPorts + 外部资源注入点
|
|
33
24
|
// ═══════════════════════════════════════════════════════════
|
|
@@ -78,8 +69,7 @@ export { SDF_TEMPLATES, DEFAULT_SDF_TEMPLATE } from './sdf/templates.js';
|
|
|
78
69
|
export { boxToTuple, parseParamDefs, defaultParamValues } from './sdf/types.js';
|
|
79
70
|
export { nextPrimitiveColor } from './primitives/types.js';
|
|
80
71
|
export { getScrewSpec, getScrewSpecs, threadToPitchMm, SCREW_HEAD_DIMS } from './primitives/screw/screw-db.js';
|
|
81
|
-
export { loadSystemCjkFont, containsCjk, isCjkChar } from './primitives/text/cjk.js';
|
|
82
|
-
export { getOpentypeFont } from './primitives/text-geometry.js';
|
|
72
|
+
export { loadSystemCjkFont, containsCjk, isCjkChar } from './primitives/text/cjk-font.js';
|
|
83
73
|
// ═══════════════════════════════════════════════════════════
|
|
84
74
|
// D 类:辅助函数 + 预览 API
|
|
85
75
|
// ═══════════════════════════════════════════════════════════
|
|
@@ -92,11 +82,10 @@ export { buildWedgeGeometry, buildDowelGeometry, buildStraightTenonGeometry, } f
|
|
|
92
82
|
export { geoToManifoldMesh, manifoldMeshToGeo } from './boolean/geo-convert.js';
|
|
93
83
|
export { manifoldToMeshData, weldPositionsWorker, dovetailBooleanSplit, dowelOrTenonBooleanSplit, chainBoolean, meshToManifold } from './boolean/csg-core.js';
|
|
94
84
|
export { previewMeshIntersect } from './boolean/manifold-preview.js';
|
|
95
|
-
|
|
96
|
-
export {
|
|
85
|
+
// 宿主注入的 mesh 装饰几何(cad.engrave 的文字/SVG 几何链在 @faicad/faijs-extra)
|
|
86
|
+
export { setEngraveDecorationProvider, getEngraveDecorationProvider } from './mesh/decoration-provider.js';
|
|
97
87
|
export { runSdfInline } from './sdf/sdf-core.js';
|
|
98
88
|
export { runSdf as runSdfMain } from './sdf/sdf-runner.js';
|
|
99
|
-
export { createMixedTextGeometry } from './primitives/text/cjk.js';
|
|
100
89
|
// Knurl D 类
|
|
101
90
|
export { applyKnurlDisplacement, KNURL_DEFAULTS } from './mesh/knurl/KnurlGenerator.js';
|
|
102
91
|
export { subdivide } from './mesh/knurl/subdivision.js';
|
package/dist/browser.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @faicad/faijs/browser — Browser-safe exports (F6: A/B/C/D 四类收敛)\n *\n * Excludes L3 Node Host modules (node-host/*) that depend on node:fs/node:path.\n * Use this entry point in browser/worker contexts to avoid pulling in Node.js code.\n *\n * For full exports (including Node.js), use @faicad/faijs instead.\n *\n * 导出分类(契约 §11 白名单四类):\n * - A 类 = lang/ 全部导出(脚本类型 + 构建辅助 + 接口约定类型 + 常量)\n * - B 类 = cad-runtime/ + createBrowserPorts + 外部资源注入点 + 执行位置选项\n * - C 类 = 执行产物类型(Shape + 拓扑数据类型 + buildSelectorRuntimeMaps)\n * - D 类 = 辅助函数 + 预览 API(明确导出后使用)\n *\n * Phase 2 收尾完成:deprecated 区已删除。宿主如需执行/读取几何,一律走\n * CadRuntime.execute / 高层 API(importStep/exportStep/ensureOcctKernel);\n * 主线程 CSG/SDF 预览走 previewMeshIntersect / runSdfMain。\n */\n\nexport {\n configureBackends, getBackends, setCurrentStmt, getCurrentStmt,\n keep, keepHidden, getRuntimeState, nameOf, setName, setKeepSink,\n setPendingAssemblyTransforms, takePendingAssemblyTransforms, assertContractVersion,\n CONTRACT_VERSION,\n} from './runtime-state'\nexport type {\n Backends, FaijsRuntimeState, ShapeSlot, KeepSink, RuntimeExecutionMode,\n AssemblyTransform, StdlibFn, StdlibNamespace,\n} from './runtime-state'\n\n// ═══════════════════════════════════════════════════════════\n// identity:品牌类型 + 信任点(f0,零依赖)\n// ═══════════════════════════════════════════════════════════\n\nexport type {\n FileId, InnerId, ScopedId, StmtId, PartName, GroupName,\n RefId, ReferenceId, SelectorKey, OccurrenceId, ShapeId,\n FaceId, EdgeId, NodeId, StatementId, FaceSelector,\n} from './identity'\nexport {\n asFileId, asInnerId, asScopedId, asStmtId, asPartName, asGroupName,\n asRefId, asReferenceId, asSelectorKey, asOccurrenceId, asShapeId,\n asFaceId, asEdgeId, asNodeId,\n toScopedId, splitScopedId, isScopedId, toInnerId,\n} from './identity'\n\n// ═══════════════════════════════════════════════════════════\n// A 类:lang/ 文本面导出(IR 是引擎内部实现细节,不导出;公开面只有代码文本工具与结果类型)\n// ═══════════════════════════════════════════════════════════\n\nexport type {\n Vec3, JsonValue,\n TerminalShape, ParamDef,\n} from './lang/types'\nexport {\n derivePartName, getMaxModelNum,\n} from './lang/allocate-id'\nexport type { DerivePartNameInput, DerivePartNameResult } from './lang/allocate-id'\nexport { fmtNum, formatCodeLine } from './lang/codegen'\nexport type { FormatCodeLineInput } from './lang/codegen'\nexport { analyzeCode } from './lang/statement-summary'\nexport type { StatementSummary } from './lang/statement-summary'\nexport { codeToArgs } from './lang/code-to-args'\nexport type { CodeToArgsResult } from './lang/code-to-args'\n// MetadataExtractor — 无 IR 元数据提取器(UI 通道语义源;UiMetadata 全量)\nexport { extractMetadata } from './lang/metadata-extractor'\nexport type {\n UiMetadata, ArgSource, ParamEntry, ImportEntry, FunctionEntry, BlockEntry, KeepEntry,\n ExtractMetadataOptions,\n} from './lang/metadata-extractor'\n// 参数表达式编辑(P0-C/P0-D):实时校验层 + 编辑面板纯函数\nexport { validateExpression } from './lang/expr-validate'\nexport type { ExprValidateInput, ExprValidateResult } from './lang/expr-validate'\nexport { editArgSource } from './lang/source-edit'\nexport type { EditSourceError } from './lang/source-edit'\n// HostArg — 宿主友好位置参数类型(IR 屏蔽层)\nexport type {\n HostArg, HostRef, HostVarRef, HostParamRef, HostCallRef, HostExprRef, HostRefKind,\n} from './lang/host-arg'\nexport {\n isHostVarRef, isHostParamRef, isHostCallRef, isHostExprRef, isHostRef,\n hostArgToDisplay, hostArgToLiteral, HOST_REF_KINDS,\n} from './lang/host-arg'\n\n// ═══════════════════════════════════════════════════════════\n// B 类:cad-runtime/ + createBrowserPorts + 外部资源注入点\n// ═══════════════════════════════════════════════════════════\n\n// D1(2026-09-19):浏览器入口同样自注册 cad(与 index.ts 同源包装,避免门面注入)。\nexport { CadRuntime, createRuntime, AppendPrefixError } from './cad-runtime/createRuntimeWithCad'\nexport { createPreviewExec } from './cad-runtime/preview-exec'\nexport type { PreviewExec } from './cad-runtime/preview-exec'\nexport type { ExecutionResult, ExecuteOptions, CheckResult, CheckError, PartTopology, TopologySource } from './cad-runtime/runtime'\nexport type {\n HostPorts,\n CsgBackend, SdfBackend, FontProvider, TextureSampler,\n AssetResolver, EventSink, ExecutionMode, LibLoader,\n MeshData, PlaneParams, SplitResult as CsgSplitResult,\n DovetailGrooveParams as PortDovetailGrooveParams,\n DowelSplitParams as PortDowelSplitParams,\n StraightTenonSplitParams as PortStraightTenonSplitParams,\n} from './cad-runtime/ports'\n\n// 外部资源注入点\nexport { setManifoldWasmUrl, getManifoldWasmUrl } from './mesh/manifold-loader'\nexport { setOcctWasmInitFn } from './occt-kernel/occtKernel'\n// brepkit(weapp 专用 BREP 引擎)不在此导出——见 weapp.ts 与\n// docs/plans/2026-09-20-weapp-host-entry-design.md。\nexport { setFontLoader, getFontLoader, loadFont, ensureDefaultFont, getFont, clearFonts } from './brep/text/fontRegistry'\nexport type { FontLoader } from './brep/text/fontRegistry'\nexport { setKnurlTextureLoader } from './mesh/knurl/textureLoader'\n\n// L3 Browser Host 工厂\nexport { createBrowserPorts } from './browser-host'\nexport type { CreateBrowserPortsOptions } from './browser-host'\n// D3-Browser(§9.4):CDN 通用 libLoader 工厂(a/b 混合)。**不**被 createBrowserPorts\n// 默认装配——demo 的源码 alias HMR 路径必须零网络;CDN 装载由主机显式注入。\nexport { createBrowserLibLoader, DEFAULT_CDN_BASE } from './cad-runtime/browser-lib-loader'\nexport type {\n BrowserLibLoader, BrowserLibMeta, CreateBrowserLibLoaderOptions,\n} from './cad-runtime/browser-lib-loader'\nexport { BrowserEventSink } from './browser-host/browser-event-sink'\nexport { BrowserFontProvider } from './browser-host/browser-font-provider'\nexport type { BrowserFontProviderOptions } from './browser-host/browser-font-provider'\nexport { FetchAssetResolver } from './browser-host/fetch-asset-resolver'\nexport type { FetchAssetResolverOptions } from './browser-host/fetch-asset-resolver'\nexport { WorkerCsgBackend } from './browser-host/worker-csg-backend'\nexport { WorkerSdfBackend } from './browser-host/worker-sdf-backend'\n\n// E12.2: OCCT 高层 API(B 类——宿主用这些替代底层 kernel 函数)\nexport { importStep, importStepMultiPart, exportStep, releaseSolid, ensureOcctKernel, disposeOcct, exportStepFromSolidsHighLevel } from './occt-kernel/highLevelApi'\nexport type { ImportStepResult, ImportStepPartResult, ExportStepOptions } from './occt-kernel/highLevelApi'\n// 高层 API 的类型签名依赖的 OCCT 句柄/内核类型(D 类,公共契约)\nexport type { OcctKernel, ShapeHandle, WasmTessellatedMesh, Mesh, MeshDeflectionOptions } from './occt-kernel/highLevelApi'\n\n// ── BREP 引擎注册(宿主装配;引擎可切换——occt 只是默认实现) ──\nexport { registerOcctBrepEngine, OCCT_BREP_ENGINE_ID } from './brep/engine/adapters/occt'\nexport {\n registerBrepEngine, getBrepEngine, hasBrepEngine, getActiveBrepEngineId, freezeEngineRegistries,\n} from './brep/engine/registry'\nexport type { BrepEngine, BrepEngineProvider } from './brep/engine/registry'\nexport type { BrepEngineApi } from './brep/engine/primitives'\nexport type {\n BrepHandle, BrepMeshResult, BrepBoundingBox, BrepVec3, BrepCapabilities,\n BrepEvolutionData, BrepXcafDocument,\n} from './brep/engine/types'\nexport { buildTopologyAdjacency, type TopologyAdjacency } from './occt-kernel/topologyExt'\n\n// keep-syntax(P7):宿主守卫——outputs 现含 compound,消费端须区分\nexport { isCompoundLike } from './shape'\nexport { isMeshShape } from './mesh/types'\n\n// ═══════════════════════════════════════════════════════════\n// C 类:执行产物类型(Shape + 拓扑数据类型 + buildSelectorRuntimeMaps)\n// ═══════════════════════════════════════════════════════════\n\nexport type { Shape } from './mesh/types'\n\n// 拓扑数据类型\nexport type { SelectorRuntimeData } from './topology/build-selector-runtime'\nexport type {\n SelectorRuntime, SelectorBundle, SelectorManifest, SelectorBuffers,\n FaceRow, EdgeRow, Reference,\n BufferViewDescriptor, SelectorProxy,\n} from './topology/types'\n\n// buildSelectorRuntimeMaps: C 类(从 SelectorRuntimeData 构建 SelectorRuntime Maps)\nexport { buildSelectorRuntimeMaps } from './topology/build-selector-runtime'\n\n// 拓扑常量\nexport { TOPOLOGY_FACE_ID_NONE } from './topology/build-face-ids'\n\n// ── TopoRef 命名层(§3.7/§3.8:命名属于核心公共能力,随 browser/node 走)──\nexport * from './topology/naming'\n\n// D 类辅助:拓扑构建函数(宿主在加载时刻调用,构建 mesh/primitive 近似拓扑)\n// 注意:这些只在加载/创建时刻合法,变更后不重新生成\n// BREP 真拓扑通过 CadRuntime.buildBrepTopology() 获取,不再直接导出 buildSolidTopologyRuntime\nexport { buildSelectorRuntime, buildSelectorRuntimeData } from './topology/build-selector-runtime'\nexport { buildFaceIdsForPart } from './topology/build-face-ids'\nexport type { SolidTopologyResult } from './brep/brep-topology'\n\n// C 类辅助:面查询\nexport { faceAt } from './mesh/query'\nexport type {\n BoundingBox, FaceDescriptor,\n BoxParams, SphereParams, CylinderParams, ConeParams, WedgeParams,\n TextParams, SvgExtrudeParams, SdfParams,\n DrillParams, ExtrudeParams, EngraveParams, KnurlParams,\n SplitPlane, SplitResult,\n} from './mesh/types'\nexport { NRAD_DEFAULT, NRAD_MIN, NRAD_MAX, clampNRad } from './mesh/types'\n\n// SDF 类型\nexport type { SdfMeshData } from './sdf/sdf-runner'\nexport { SDF_TEMPLATES, DEFAULT_SDF_TEMPLATE } from './sdf/templates'\nexport type {\n SdfMeta, SdfBox, SdfParamDef, SdfTemplateCategory,\n SdfWorkerInput, SdfWorkerMessage,\n} from './sdf/types'\nexport { boxToTuple, parseParamDefs, defaultParamValues } from './sdf/types'\n\n// Primitive 类型\nexport type {\n PrimitiveType, PrimitiveParamsRecord, PrimitiveArgsRecord, PrimitiveMeta,\n} from './primitives/types'\nexport { nextPrimitiveColor } from './primitives/types'\nexport type { ScrewParams, ScrewSpec, ScrewSystem } from './primitives/screw/screw-db'\nexport { getScrewSpec, getScrewSpecs, threadToPitchMm, SCREW_HEAD_DIMS } from './primitives/screw/screw-db'\nexport type { CjkFontResult } from './primitives/text/cjk'\nexport { loadSystemCjkFont, containsCjk, isCjkChar } from './primitives/text/cjk'\nexport { getOpentypeFont } from './primitives/text-geometry'\n\n// Boolean/CSG 辅助类型\nexport type { ExtrudeParts, ExtrudeOffsetMode } from './boolean/extrude-helpers'\nexport type { JoineryMeshData } from './boolean/joinery-shapes'\nexport type {\n ManifoldMeshData, BooleanOperation,\n DovetailGrooveParams, DowelSplitParams, StraightTenonSplitParams,\n} from './boolean/geo-convert'\nexport type { TextureData } from './mesh/knurl/textureLoader'\nexport type { KnurlBounds } from './mesh/knurl/KnurlGenerator'\nexport type { DrillBrepParams, SplitBrepParams, SplitBrepResult, ExtrudeBrepParams } from './brep/brep-ops'\nexport type { PrimitiveToBrepResult, PrimitiveParams } from './primitives/brep-primitives'\n\n// ═══════════════════════════════════════════════════════════\n// D 类:辅助函数 + 预览 API\n// ═══════════════════════════════════════════════════════════\n\n// 预览 API(D 类——宿主用这些做交互预览,不提交几何)\nexport { cad } from './mesh'\nexport { deriveNormals } from './boolean/deriveNormals'\nexport { computeSection, buildExtrudedProfile } from './boolean/cross-section'\nexport { buildExtrudeParts, makeWorldPlane } from './boolean/extrude-helpers'\nexport {\n buildWedgeGeometry, buildDowelGeometry, buildStraightTenonGeometry,\n} from './boolean/joinery-shapes'\nexport { geoToManifoldMesh, manifoldMeshToGeo } from './boolean/geo-convert'\nexport { manifoldToMeshData, weldPositionsWorker, dovetailBooleanSplit, dowelOrTenonBooleanSplit, chainBoolean, meshToManifold } from './boolean/csg-core'\nexport { previewMeshIntersect } from './boolean/manifold-preview'\nexport type { ManifoldMeshData as PreviewManifoldMeshData } from './boolean/manifold-preview'\nexport { svgToExtrudedGeometry, parseSvgShapes } from './primitives/svg-extrude'\nexport type { SvgExtrudeOptions } from './primitives/svg-extrude'\nexport { createTextGeometry, opentypePathToGeometry } from './primitives/text-geometry'\nexport { runSdfInline } from './sdf/sdf-core'\nexport { runSdf as runSdfMain } from './sdf/sdf-runner'\nexport type { SdfMeshData as PreviewSdfMesh } from './sdf/sdf-runner'\nexport { createMixedTextGeometry } from './primitives/text/cjk'\n\n// Knurl D 类\nexport { applyKnurlDisplacement, KNURL_DEFAULTS } from './mesh/knurl/KnurlGenerator'\nexport { subdivide } from './mesh/knurl/subdivision'\nexport { loadKnurlingTexture } from './mesh/knurl/textureLoader'\nexport { QuantizedPointMap, weldVertices } from './mesh/knurl/meshIndex'\nexport { computeUV, MODE_TRIPLANAR, getCubicBlendWeights, type MappingSettings } from './mesh/knurl/mapping'\nexport { applyDisplacement, type DisplacementSettings } from './mesh/knurl/displacement'\n\n// Primitive D 类(预览用)\nexport { mergeBufferGeometries, makePrimitiveGeo, DEFAULT_SIZE, applyPrimitiveOffset } from './primitives/mesh-primitives'\nexport { makeScrew } from './primitives/screw/screw'\nexport {\n extractMeshData, primitiveToBrepSolid, geometryToBrepSolid,\n brepSolidToStep, primitiveToBrepStep,\n} from './primitives/brep-primitives'\n\n// BREP 辅助(D 类)\nexport {\n solidToShape,\n translateBrep, rotateBrep, scaleBrep, applyTransformBrep,\n fuseBrep, cutBrep, commonBrep,\n drillBrep, splitBrep, extrudeBrep,\n loadBrep, matrixToArray,\n} from './brep/brep-ops'\nexport { getSolidBoundingBox } from './brep/brep-utils'\nexport { buildStlBufferFromMesh } from './brep/export/stl'\nexport { exportStepFromSolid, exportStepFromSolids } from './brep/export/step'\nexport type { StepExportEntry } from './brep/export/step'\nexport { reconstructSolidFromMesh, meshToAsciiStl, cadShapeIsValid, meshToStepBrep } from './occt-kernel/meshReconstruct'\n\n// ── L3 API 面(P6/D1:原 packages/stdlib 迁入 core)──\nexport * from './api'\n"]}
|
|
1
|
+
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @faicad/faijs/browser — Browser-safe exports (F6: A/B/C/D 四类收敛)\n *\n * Excludes L3 Node Host modules (node-host/*) that depend on node:fs/node:path.\n * Use this entry point in browser/worker contexts to avoid pulling in Node.js code.\n *\n * For full exports (including Node.js), use @faicad/faijs instead.\n *\n * 导出分类(契约 §11 白名单四类):\n * - A 类 = lang/ 全部导出(脚本类型 + 构建辅助 + 接口约定类型 + 常量)\n * - B 类 = cad-runtime/ + createBrowserPorts + 外部资源注入点 + 执行位置选项\n * - C 类 = 执行产物类型(Shape + 拓扑数据类型 + buildSelectorRuntimeMaps)\n * - D 类 = 辅助函数 + 预览 API(明确导出后使用)\n *\n * Phase 2 收尾完成:deprecated 区已删除。宿主如需执行/读取几何,一律走\n * CadRuntime.execute / 高层 API(importStep/exportStep/ensureOcctKernel);\n * 主线程 CSG/SDF 预览走 previewMeshIntersect / runSdfMain。\n */\n\n// 共享面(env-agnostic:identity + runtime-state + lang/*)——手写清单已收敛,\n// 三处 umbrella(index/browser/weapp)统一 re-export,防漂移。\nexport * from './env-agnostic'\n\n// ═══════════════════════════════════════════════════════════\n// B 类:cad-runtime/ + createBrowserPorts + 外部资源注入点\n// ═══════════════════════════════════════════════════════════\n\n// D1(2026-09-19):浏览器入口同样自注册 cad(与 index.ts 同源包装,避免门面注入)。\nexport { CadRuntime, createRuntime, AppendPrefixError } from './cad-runtime/createRuntimeWithCad'\nexport { createPreviewExec } from './cad-runtime/preview-exec'\nexport type { PreviewExec } from './cad-runtime/preview-exec'\nexport type { ExecutionResult, ExecuteOptions, CheckResult, CheckError, PartTopology, TopologySource } from './cad-runtime/runtime'\nexport type {\n HostPorts,\n CsgBackend, SdfBackend, FontProvider, TextureSampler,\n AssetResolver, EventSink, ExecutionMode, LibLoader,\n MeshData, PlaneParams, SplitResult as CsgSplitResult,\n DovetailGrooveParams as PortDovetailGrooveParams,\n DowelSplitParams as PortDowelSplitParams,\n StraightTenonSplitParams as PortStraightTenonSplitParams,\n} from './cad-runtime/ports'\n\n// 外部资源注入点\nexport { setManifoldWasmUrl, getManifoldWasmUrl } from './mesh/manifold-loader'\nexport { setOcctWasmInitFn } from './occt-kernel/occtKernel'\n// brepkit(weapp 专用 BREP 引擎)不在此导出——见 weapp.ts 与\n// docs/plans/2026-09-20-weapp-host-entry-design.md。\nexport { setFontLoader, getFontLoader, loadFont, ensureDefaultFont, getFont, clearFonts } from './brep/text/fontRegistry'\nexport type { FontLoader } from './brep/text/fontRegistry'\nexport { setKnurlTextureLoader } from './mesh/knurl/textureLoader'\n\n// L3 Browser Host 工厂\nexport { createBrowserPorts } from './browser-host'\nexport type { CreateBrowserPortsOptions } from './browser-host'\n// D3-Browser(§9.4):CDN 通用 libLoader 工厂(a/b 混合)。**不**被 createBrowserPorts\n// 默认装配——demo 的源码 alias HMR 路径必须零网络;CDN 装载由主机显式注入。\nexport { createBrowserLibLoader, DEFAULT_CDN_BASE } from './cad-runtime/browser-lib-loader'\nexport type {\n BrowserLibLoader, BrowserLibMeta, CreateBrowserLibLoaderOptions,\n} from './cad-runtime/browser-lib-loader'\nexport { BrowserEventSink } from './browser-host/browser-event-sink'\nexport { BrowserFontProvider } from './browser-host/browser-font-provider'\nexport type { BrowserFontProviderOptions } from './browser-host/browser-font-provider'\nexport { FetchAssetResolver } from './browser-host/fetch-asset-resolver'\nexport type { FetchAssetResolverOptions } from './browser-host/fetch-asset-resolver'\nexport { WorkerCsgBackend } from './browser-host/worker-csg-backend'\nexport { WorkerSdfBackend } from './browser-host/worker-sdf-backend'\n\n// E12.2: OCCT 高层 API(B 类——宿主用这些替代底层 kernel 函数)\nexport { importStep, importStepMultiPart, exportStep, releaseSolid, ensureOcctKernel, disposeOcct, exportStepFromSolidsHighLevel } from './occt-kernel/highLevelApi'\nexport type { ImportStepResult, ImportStepPartResult, ExportStepOptions } from './occt-kernel/highLevelApi'\n// 高层 API 的类型签名依赖的 OCCT 句柄/内核类型(D 类,公共契约)\nexport type { OcctKernel, ShapeHandle, WasmTessellatedMesh, Mesh, MeshDeflectionOptions } from './occt-kernel/highLevelApi'\n\n// ── BREP 引擎注册(宿主装配;引擎可切换——occt 只是默认实现) ──\nexport { registerOcctBrepEngine, OCCT_BREP_ENGINE_ID } from './brep/engine/adapters/occt'\nexport {\n registerBrepEngine, getBrepEngine, hasBrepEngine, getActiveBrepEngineId, freezeEngineRegistries,\n} from './brep/engine/registry'\nexport type { BrepEngine, BrepEngineProvider } from './brep/engine/registry'\nexport type { BrepEngineApi } from './brep/engine/primitives'\nexport type {\n BrepHandle, BrepMeshResult, BrepBoundingBox, BrepVec3, BrepCapabilities,\n BrepEvolutionData, BrepXcafDocument,\n} from './brep/engine/types'\nexport { buildTopologyAdjacency, type TopologyAdjacency } from './occt-kernel/topologyExt'\n\n// keep-syntax(P7):宿主守卫——outputs 现含 compound,消费端须区分\nexport { isCompoundLike } from './shape'\nexport { isMeshShape } from './mesh/types'\n\n// ═══════════════════════════════════════════════════════════\n// C 类:执行产物类型(Shape + 拓扑数据类型 + buildSelectorRuntimeMaps)\n// ═══════════════════════════════════════════════════════════\n\nexport type { Shape } from './mesh/types'\n\n// 拓扑数据类型\nexport type { SelectorRuntimeData } from './topology/build-selector-runtime'\nexport type {\n SelectorRuntime, SelectorBundle, SelectorManifest, SelectorBuffers,\n FaceRow, EdgeRow, Reference,\n BufferViewDescriptor, SelectorProxy,\n} from './topology/types'\n\n// buildSelectorRuntimeMaps: C 类(从 SelectorRuntimeData 构建 SelectorRuntime Maps)\nexport { buildSelectorRuntimeMaps } from './topology/build-selector-runtime'\n\n// 拓扑常量\nexport { TOPOLOGY_FACE_ID_NONE } from './topology/build-face-ids'\n\n// ── TopoRef 命名层(§3.7/§3.8:命名属于核心公共能力,随 browser/node 走)──\nexport * from './topology/naming'\n\n// D 类辅助:拓扑构建函数(宿主在加载时刻调用,构建 mesh/primitive 近似拓扑)\n// 注意:这些只在加载/创建时刻合法,变更后不重新生成\n// BREP 真拓扑通过 CadRuntime.buildBrepTopology() 获取,不再直接导出 buildSolidTopologyRuntime\nexport { buildSelectorRuntime, buildSelectorRuntimeData } from './topology/build-selector-runtime'\nexport { buildFaceIdsForPart } from './topology/build-face-ids'\nexport type { SolidTopologyResult } from './brep/brep-topology'\n\n// C 类辅助:面查询\nexport { faceAt } from './mesh/query'\nexport type {\n BoundingBox, FaceDescriptor,\n BoxParams, SphereParams, CylinderParams, ConeParams, WedgeParams,\n TextParams, SvgExtrudeParams, SdfParams,\n DrillParams, ExtrudeParams, EngraveParams, KnurlParams,\n SplitPlane, SplitResult,\n} from './mesh/types'\nexport { NRAD_DEFAULT, NRAD_MIN, NRAD_MAX, clampNRad } from './mesh/types'\n\n// SDF 类型\nexport type { SdfMeshData } from './sdf/sdf-runner'\nexport { SDF_TEMPLATES, DEFAULT_SDF_TEMPLATE } from './sdf/templates'\nexport type {\n SdfMeta, SdfBox, SdfParamDef, SdfTemplateCategory,\n SdfWorkerInput, SdfWorkerMessage,\n} from './sdf/types'\nexport { boxToTuple, parseParamDefs, defaultParamValues } from './sdf/types'\n\n// Primitive 类型\nexport type {\n PrimitiveType, PrimitiveParamsRecord, PrimitiveArgsRecord, PrimitiveMeta,\n} from './primitives/types'\nexport { nextPrimitiveColor } from './primitives/types'\nexport type { ScrewParams, ScrewSpec, ScrewSystem } from './primitives/screw/screw-db'\nexport { getScrewSpec, getScrewSpecs, threadToPitchMm, SCREW_HEAD_DIMS } from './primitives/screw/screw-db'\n// B 组(svg 挤出 / 3D 文字几何链)已随 @faicad/faijs-extra 迁出;留 core 的是\n// 零 three 的 CJK 字符判定与系统字体装载。\nexport type { CjkFontResult } from './primitives/text/cjk-font'\nexport { loadSystemCjkFont, containsCjk, isCjkChar } from './primitives/text/cjk-font'\n\n// Boolean/CSG 辅助类型\nexport type { ExtrudeParts, ExtrudeOffsetMode } from './boolean/extrude-helpers'\nexport type { JoineryMeshData } from './boolean/joinery-shapes'\nexport type {\n ManifoldMeshData, BooleanOperation,\n DovetailGrooveParams, DowelSplitParams, StraightTenonSplitParams,\n} from './boolean/geo-convert'\nexport type { TextureData } from './mesh/knurl/textureLoader'\nexport type { KnurlBounds } from './mesh/knurl/KnurlGenerator'\nexport type { DrillBrepParams, SplitBrepParams, SplitBrepResult, ExtrudeBrepParams } from './brep/brep-ops'\nexport type { PrimitiveToBrepResult, PrimitiveParams } from './primitives/brep-primitives'\n\n// ═══════════════════════════════════════════════════════════\n// D 类:辅助函数 + 预览 API\n// ═══════════════════════════════════════════════════════════\n\n// 预览 API(D 类——宿主用这些做交互预览,不提交几何)\nexport { cad } from './mesh'\nexport { deriveNormals } from './boolean/deriveNormals'\nexport { computeSection, buildExtrudedProfile } from './boolean/cross-section'\nexport { buildExtrudeParts, makeWorldPlane } from './boolean/extrude-helpers'\nexport {\n buildWedgeGeometry, buildDowelGeometry, buildStraightTenonGeometry,\n} from './boolean/joinery-shapes'\nexport { geoToManifoldMesh, manifoldMeshToGeo } from './boolean/geo-convert'\nexport { manifoldToMeshData, weldPositionsWorker, dovetailBooleanSplit, dowelOrTenonBooleanSplit, chainBoolean, meshToManifold } from './boolean/csg-core'\nexport { previewMeshIntersect } from './boolean/manifold-preview'\nexport type { ManifoldMeshData as PreviewManifoldMeshData } from './boolean/manifold-preview'\n// 宿主注入的 mesh 装饰几何(cad.engrave 的文字/SVG 几何链在 @faicad/faijs-extra)\nexport { setEngraveDecorationProvider, getEngraveDecorationProvider } from './mesh/decoration-provider'\nexport type { EngraveDecorationProvider, EngraveDecorationParams } from './mesh/decoration-provider'\nexport { runSdfInline } from './sdf/sdf-core'\nexport { runSdf as runSdfMain } from './sdf/sdf-runner'\nexport type { SdfMeshData as PreviewSdfMesh } from './sdf/sdf-runner'\n\n// Knurl D 类\nexport { applyKnurlDisplacement, KNURL_DEFAULTS } from './mesh/knurl/KnurlGenerator'\nexport { subdivide } from './mesh/knurl/subdivision'\nexport { loadKnurlingTexture } from './mesh/knurl/textureLoader'\nexport { QuantizedPointMap, weldVertices } from './mesh/knurl/meshIndex'\nexport { computeUV, MODE_TRIPLANAR, getCubicBlendWeights, type MappingSettings } from './mesh/knurl/mapping'\nexport { applyDisplacement, type DisplacementSettings } from './mesh/knurl/displacement'\n\n// Primitive D 类(预览用)\nexport { mergeBufferGeometries, makePrimitiveGeo, DEFAULT_SIZE, applyPrimitiveOffset } from './primitives/mesh-primitives'\nexport { makeScrew } from './primitives/screw/screw'\nexport {\n extractMeshData, primitiveToBrepSolid, geometryToBrepSolid,\n brepSolidToStep, primitiveToBrepStep,\n} from './primitives/brep-primitives'\n\n// BREP 辅助(D 类)\nexport {\n solidToShape,\n translateBrep, rotateBrep, scaleBrep, applyTransformBrep,\n fuseBrep, cutBrep, commonBrep,\n drillBrep, splitBrep, extrudeBrep,\n loadBrep, matrixToArray,\n} from './brep/brep-ops'\nexport { getSolidBoundingBox } from './brep/brep-utils'\nexport { buildStlBufferFromMesh } from './brep/export/stl'\nexport { exportStepFromSolid, exportStepFromSolids } from './brep/export/step'\nexport type { StepExportEntry } from './brep/export/step'\nexport { reconstructSolidFromMesh, meshToAsciiStl, cadShapeIsValid, meshToStepBrep } from './occt-kernel/meshReconstruct'\n\n// ── L3 API 面(P6/D1:原 packages/stdlib 迁入 core)──\nexport * from './api'\n// Vec3 双源消歧:env-agnostic(lang/types)与 api(mesh/types)均有 Vec3,\n// 显式 re-export 定为 lang 版(与收敛前 browser.ts 的具名导出一致)。\nexport type { Vec3 } from './lang/types'\n"]}
|
|
@@ -12,6 +12,16 @@
|
|
|
12
12
|
* Multi-output annotation: the only contract name is `fn.outputs` (the
|
|
13
13
|
* `outputs` defineOp option); the legacy name is deleted repo-wide.
|
|
14
14
|
*
|
|
15
|
+
* Naming (2026-09-23): library authors no longer declare face naming
|
|
16
|
+
* (`faijs.naming` / `fn.naming` / `namingFor` removed). A library is a black-box
|
|
17
|
+
* part producer — its functions output parts, not single-op geometry, so no
|
|
18
|
+
* per-function or per-library naming declaration can carry information
|
|
19
|
+
* (design: docs/plans/2026-09-23-relax-lib-naming-design.md). Every bare
|
|
20
|
+
* function is admitted with the fixed default `unmodeled` provenance: its
|
|
21
|
+
* faces carry no stable identity and face references degrade to geometric
|
|
22
|
+
* matching. Op-level naming (defineOp's `DUAL_OP_META.naming` / roleTable)
|
|
23
|
+
* remains the only place where face naming is declared.
|
|
24
|
+
*
|
|
15
25
|
* @module
|
|
16
26
|
*/
|
|
17
27
|
/**
|
|
@@ -22,6 +32,9 @@
|
|
|
22
32
|
* function is lifted through compatOp so it cannot silently bypass the
|
|
23
33
|
* statement-level boundary contract (B4).
|
|
24
34
|
*
|
|
35
|
+
* Every bare function is admitted with `BARE_LIFT_DEFAULT_NAMING`
|
|
36
|
+
* (unmodeled); no naming declaration is read or required (2026-09-23).
|
|
37
|
+
*
|
|
25
38
|
* @param ns the library namespace object being registered.
|
|
26
39
|
* @returns the admitted namespace (bare functions replaced by compatOp facades).
|
|
27
40
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admit-compat-lib.d.ts","sourceRoot":"","sources":["../../src/cad-runtime/admit-compat-lib.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"admit-compat-lib.d.ts","sourceRoot":"","sources":["../../src/cad-runtime/admit-compat-lib.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAsBH;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAanF"}
|
|
@@ -12,10 +12,33 @@
|
|
|
12
12
|
* Multi-output annotation: the only contract name is `fn.outputs` (the
|
|
13
13
|
* `outputs` defineOp option); the legacy name is deleted repo-wide.
|
|
14
14
|
*
|
|
15
|
+
* Naming (2026-09-23): library authors no longer declare face naming
|
|
16
|
+
* (`faijs.naming` / `fn.naming` / `namingFor` removed). A library is a black-box
|
|
17
|
+
* part producer — its functions output parts, not single-op geometry, so no
|
|
18
|
+
* per-function or per-library naming declaration can carry information
|
|
19
|
+
* (design: docs/plans/2026-09-23-relax-lib-naming-design.md). Every bare
|
|
20
|
+
* function is admitted with the fixed default `unmodeled` provenance: its
|
|
21
|
+
* faces carry no stable identity and face references degrade to geometric
|
|
22
|
+
* matching. Op-level naming (defineOp's `DUAL_OP_META.naming` / roleTable)
|
|
23
|
+
* remains the only place where face naming is declared.
|
|
24
|
+
*
|
|
15
25
|
* @module
|
|
16
26
|
*/
|
|
17
27
|
import { assertLibConforms, DUAL_OP_META } from '../define-op.js';
|
|
18
28
|
import { compatOp } from '../api/internal/compat-op.js';
|
|
29
|
+
/**
|
|
30
|
+
* Default provenance for every bare library function (2026-09-23).
|
|
31
|
+
*
|
|
32
|
+
* Library functions are black-box part producers: no per-function or
|
|
33
|
+
* per-library naming declaration exists (see file header). Faces of library
|
|
34
|
+
* output get no stable identity — face references degrade to geometric
|
|
35
|
+
* matching. The `default:` reason prefix distinguishes this implicit category
|
|
36
|
+
* from a library author's explicit unmodeled accounting.
|
|
37
|
+
*/
|
|
38
|
+
const BARE_LIFT_DEFAULT_NAMING = {
|
|
39
|
+
kind: 'unmodeled',
|
|
40
|
+
reason: 'default: bare library function lift — library parts have no op-level face naming',
|
|
41
|
+
};
|
|
19
42
|
/**
|
|
20
43
|
* Establish an admission-stage wrapper namespace for registerLib.
|
|
21
44
|
*
|
|
@@ -24,6 +47,9 @@ import { compatOp } from '../api/internal/compat-op.js';
|
|
|
24
47
|
* function is lifted through compatOp so it cannot silently bypass the
|
|
25
48
|
* statement-level boundary contract (B4).
|
|
26
49
|
*
|
|
50
|
+
* Every bare function is admitted with `BARE_LIFT_DEFAULT_NAMING`
|
|
51
|
+
* (unmodeled); no naming declaration is read or required (2026-09-23).
|
|
52
|
+
*
|
|
27
53
|
* @param ns the library namespace object being registered.
|
|
28
54
|
* @returns the admitted namespace (bare functions replaced by compatOp facades).
|
|
29
55
|
*/
|
|
@@ -42,6 +68,7 @@ export function admitCompatLib(ns) {
|
|
|
42
68
|
out[name] = compatOp(v, {
|
|
43
69
|
name,
|
|
44
70
|
outputs: v.outputs, // only fn.outputs; no other annotation name is recognized (§3.6)
|
|
71
|
+
naming: BARE_LIFT_DEFAULT_NAMING,
|
|
45
72
|
});
|
|
46
73
|
}
|
|
47
74
|
return out;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admit-compat-lib.js","sourceRoot":"","sources":["../../src/cad-runtime/admit-compat-lib.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"admit-compat-lib.js","sourceRoot":"","sources":["../../src/cad-runtime/admit-compat-lib.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAA;AAKpD;;;;;;;;GAQG;AACH,MAAM,wBAAwB,GAAe;IAC3C,IAAI,EAAE,WAAW;IACjB,MAAM,EAAE,kFAAkF;CAC3F,CAAA;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,cAAc,CAAC,EAA2B;IACxD,iBAAiB,CAAC,EAAE,CAAC,CAAA;IACrB,MAAM,GAAG,GAA4B,EAAE,CAAA;IACvC,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;QAC3C,IAAI,OAAO,CAAC,KAAK,UAAU,EAAE,CAAC;YAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAAC,SAAQ;QAAC,CAAC;QACxD,IAAK,CAAwC,CAAC,YAAY,CAAC,EAAE,CAAC;YAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAAC,SAAQ;QAAC,CAAC;QACxF,GAAG,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAiC,EAAE;YACtD,IAAI;YACJ,OAAO,EAAG,CAAoB,CAAC,OAAO,EAAE,iEAAiE;YACzG,MAAM,EAAE,wBAAwB;SACjC,CAAC,CAAA;IACJ,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC","sourcesContent":["/**\n * admit-compat-lib — registerLib's admission-stage enhancement (B4 fix).\n *\n * Design: docs/plans/2026-09-03-faijs-brepjs-compat-api.md §4.3.3\n *\n * Hard ordering constraint: assertLibConforms runs BEFORE wrapping — DUAL_OP_META\n * hangs on the function object with enumerable:false (define-op.ts) and\n * assertLibConforms iterates values via Object.values to judge metadata; a\n * wrap-first admission would let bare functions silently skip the whole strict\n * validation pass (verified in practice, R8).\n *\n * Multi-output annotation: the only contract name is `fn.outputs` (the\n * `outputs` defineOp option); the legacy name is deleted repo-wide.\n *\n * Naming (2026-09-23): library authors no longer declare face naming\n * (`faijs.naming` / `fn.naming` / `namingFor` removed). A library is a black-box\n * part producer — its functions output parts, not single-op geometry, so no\n * per-function or per-library naming declaration can carry information\n * (design: docs/plans/2026-09-23-relax-lib-naming-design.md). Every bare\n * function is admitted with the fixed default `unmodeled` provenance: its\n * faces carry no stable identity and face references degrade to geometric\n * matching. Op-level naming (defineOp's `DUAL_OP_META.naming` / roleTable)\n * remains the only place where face naming is declared.\n *\n * @module\n */\n\nimport { assertLibConforms, DUAL_OP_META } from '../define-op'\nimport { compatOp } from '../api/internal/compat-op'\nimport type { Provenance } from '../topology/naming/lineage'\n\ntype OutputsCarrier = { outputs?: string[] }\n\n/**\n * Default provenance for every bare library function (2026-09-23).\n *\n * Library functions are black-box part producers: no per-function or\n * per-library naming declaration exists (see file header). Faces of library\n * output get no stable identity — face references degrade to geometric\n * matching. The `default:` reason prefix distinguishes this implicit category\n * from a library author's explicit unmodeled accounting.\n */\nconst BARE_LIFT_DEFAULT_NAMING: Provenance = {\n kind: 'unmodeled',\n reason: 'default: bare library function lift — library parts have no op-level face naming',\n}\n\n/**\n * Establish an admission-stage wrapper namespace for registerLib.\n *\n * Non-functions (contractVersion / resource objects) and native dual-ops\n * (already carrying DUAL_OP_META) pass through just as they are; any bare\n * function is lifted through compatOp so it cannot silently bypass the\n * statement-level boundary contract (B4).\n *\n * Every bare function is admitted with `BARE_LIFT_DEFAULT_NAMING`\n * (unmodeled); no naming declaration is read or required (2026-09-23).\n *\n * @param ns the library namespace object being registered.\n * @returns the admitted namespace (bare functions replaced by compatOp facades).\n */\nexport function admitCompatLib(ns: Record<string, unknown>): Record<string, unknown> {\n assertLibConforms(ns)\n const out: Record<string, unknown> = {}\n for (const [name, v] of Object.entries(ns)) {\n if (typeof v !== 'function') { out[name] = v; continue }\n if ((v as unknown as Record<string, unknown>)[DUAL_OP_META]) { out[name] = v; continue }\n out[name] = compatOp(v as (...a: unknown[]) => unknown, {\n name,\n outputs: (v as OutputsCarrier).outputs, // only fn.outputs; no other annotation name is recognized (§3.6)\n naming: BARE_LIFT_DEFAULT_NAMING,\n })\n }\n return out\n}\n"]}
|
|
@@ -13,11 +13,50 @@
|
|
|
13
13
|
* 不依赖 cad-runtime 的任何其他模块,因此不构成循环。
|
|
14
14
|
* P4b(可选)把函数拆成 brep/mesh 双实现后,此依赖会自然消失。
|
|
15
15
|
*/
|
|
16
|
+
import type { BrepEvolutionKind, BrepMethodKind } from '../brep/engine/types.js';
|
|
16
17
|
import type { Shape } from '../mesh/types.js';
|
|
17
18
|
/** 静态判定的两个可能结果:走 BREP 链或 mesh 链。 */
|
|
18
19
|
export type BrepPath = 'brep' | 'mesh';
|
|
19
|
-
/**
|
|
20
|
-
|
|
20
|
+
/**
|
|
21
|
+
* 能力名:族级布尔位(`BrepCapabilities` 里类型为 boolean 的字段)**加上**逐核函数的
|
|
22
|
+
* 面演化名(`BrepEvolutionKind`,`evolution` 名单里的条目)。
|
|
23
|
+
*
|
|
24
|
+
* ⚠️ `'evolution'` 已从本联合中**移除**(2026-09-22 Phase 0.2):它曾是"面演化族"的
|
|
25
|
+
* 族级名,但族级声明会多报能力(内核可只提供部分 `*WithHistory`)→ 静态判定失效。
|
|
26
|
+
* op 现在必须声明**具体**要哪个核函数(如 `['cut']`),引擎声明**具体**提供哪些
|
|
27
|
+
* (`evolution: ['fuse','cut','fillet']`)。见 `brep/engine/types.ts` 的 `BrepEvolutionKind`。
|
|
28
|
+
*/
|
|
29
|
+
export type BrepCapabilityName = 'heal' | 'directEdit' | 'advSurface' | 'assembly' | 'meshLift' | BrepEvolutionKind | BrepMethodKind;
|
|
30
|
+
/**
|
|
31
|
+
* 引擎能力声明的宽松镜像(`runtime-state.Backends.config.brepCapabilities` 同构;
|
|
32
|
+
* 该模块须零依赖,故不复用 `BrepCapabilities`)。
|
|
33
|
+
*/
|
|
34
|
+
export interface EngineCapabilitiesLike {
|
|
35
|
+
/** 本引擎实际提供的 `*WithHistory` 核函数名。 */
|
|
36
|
+
evolution?: readonly string[];
|
|
37
|
+
/** 本引擎实际提供的非演化内核方法名(`BrepMethodKind`)。 */
|
|
38
|
+
methods?: readonly string[];
|
|
39
|
+
heal?: boolean;
|
|
40
|
+
directEdit?: boolean;
|
|
41
|
+
advSurface?: boolean;
|
|
42
|
+
assembly?: boolean;
|
|
43
|
+
meshLift?: boolean;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* 引擎能力声明 → 受支持能力名集合(族级布尔位 + `evolution` 名单展开成逐个核函数名)。
|
|
47
|
+
* @param caps - 当前引擎的能力声明(缺省 = 空集,即什么都不支持)。
|
|
48
|
+
* @returns 该引擎声明支持的 `BrepCapabilityName` 集合。
|
|
49
|
+
*/
|
|
50
|
+
export declare function engineCapabilitySet(caps: EngineCapabilitiesLike | undefined): ReadonlySet<string>;
|
|
51
|
+
/**
|
|
52
|
+
* 声明列表中第一个**当前引擎不具备**的能力名(全具备则 `undefined`)。
|
|
53
|
+
*
|
|
54
|
+
* 读的是运行时配置里的能力声明(与 `dispatchPath` 同一来源),因此调用点与分派点
|
|
55
|
+
* 对"缺哪个能力"的判断必然一致——不会出现"defineOp 认为缺 evolution、dispatch 认为具备"。
|
|
56
|
+
* @param declared - op 声明的能力名列表(来自 `DualOpMeta.capabilities`)。
|
|
57
|
+
* @returns 第一个缺失的能力名,或 undefined。
|
|
58
|
+
*/
|
|
59
|
+
export declare function firstMissingCapability(declared: readonly BrepCapabilityName[] | undefined): BrepCapabilityName | undefined;
|
|
21
60
|
/**
|
|
22
61
|
* Decide whether this invocation takes the BREP or the mesh backend path.
|
|
23
62
|
*
|
|
@@ -35,7 +74,11 @@ export type BrepCapabilityName = 'evolution' | 'heal' | 'directEdit' | 'advSurfa
|
|
|
35
74
|
* Capability routing (requiredCapability): when the current engine (registry)
|
|
36
75
|
* lacks a declared capability, brep mode throws a BrepUnsupportedError (an
|
|
37
76
|
* explicit error, never a silent fallback) while auto mode statically degrades
|
|
38
|
-
* to mesh (never fabricating a missing capability).
|
|
77
|
+
* to mesh (never fabricating a missing capability). The capability is matched
|
|
78
|
+
* against the engine's declaration as a set of concrete names: family booleans
|
|
79
|
+
* plus the engine's `evolution` list of `*WithHistory` kernel function names
|
|
80
|
+
* (Phase 0.2 — a family-level `evolution: true` would over-report, since a
|
|
81
|
+
* kernel may provide only a subset of the evolution family).
|
|
39
82
|
*
|
|
40
83
|
* Red line unchanged: static dispatch, no runtime try-catch fallback. The
|
|
41
84
|
* decision happens before the implementation runs and is never revised after a
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backend-dispatch.d.ts","sourceRoot":"","sources":["../../src/cad-runtime/backend-dispatch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAE1C,oCAAoC;AACpC,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAA;AAEtC
|
|
1
|
+
{"version":3,"file":"backend-dispatch.d.ts","sourceRoot":"","sources":["../../src/cad-runtime/backend-dispatch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAC7E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAE1C,oCAAoC;AACpC,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAA;AAEtC;;;;;;;;GAQG;AACH,MAAM,MAAM,kBAAkB,GAC1B,MAAM,GACN,YAAY,GACZ,YAAY,GACZ,UAAU,GACV,UAAU,GACV,iBAAiB,GACjB,cAAc,CAAA;AAElB;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,oCAAoC;IACpC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAC7B,0CAA0C;IAC1C,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAC3B,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,sBAAsB,GAAG,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC,CAWjG;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,SAAS,kBAAkB,EAAE,GAAG,SAAS,GAClD,kBAAkB,GAAG,SAAS,CAIhC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,KAAK,EAAE,EACf,KAAK,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,EACzC,kBAAkB,CAAC,EAAE,kBAAkB,GACtC,QAAQ,CAiDV"}
|
|
@@ -15,6 +15,45 @@
|
|
|
15
15
|
*/
|
|
16
16
|
import { getBackends, getCurrentStmt, BrepUnsupportedError, MeshUnsupportedError } from '../runtime-state.js';
|
|
17
17
|
import { hasBrep } from '../shape.js';
|
|
18
|
+
/**
|
|
19
|
+
* 引擎能力声明 → 受支持能力名集合(族级布尔位 + `evolution` 名单展开成逐个核函数名)。
|
|
20
|
+
* @param caps - 当前引擎的能力声明(缺省 = 空集,即什么都不支持)。
|
|
21
|
+
* @returns 该引擎声明支持的 `BrepCapabilityName` 集合。
|
|
22
|
+
*/
|
|
23
|
+
export function engineCapabilitySet(caps) {
|
|
24
|
+
const set = new Set();
|
|
25
|
+
if (!caps)
|
|
26
|
+
return set;
|
|
27
|
+
for (const kind of caps.evolution ?? [])
|
|
28
|
+
set.add(kind);
|
|
29
|
+
for (const method of caps.methods ?? [])
|
|
30
|
+
set.add(method);
|
|
31
|
+
if (caps.heal)
|
|
32
|
+
set.add('heal');
|
|
33
|
+
if (caps.directEdit)
|
|
34
|
+
set.add('directEdit');
|
|
35
|
+
if (caps.advSurface)
|
|
36
|
+
set.add('advSurface');
|
|
37
|
+
if (caps.assembly)
|
|
38
|
+
set.add('assembly');
|
|
39
|
+
if (caps.meshLift)
|
|
40
|
+
set.add('meshLift');
|
|
41
|
+
return set;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* 声明列表中第一个**当前引擎不具备**的能力名(全具备则 `undefined`)。
|
|
45
|
+
*
|
|
46
|
+
* 读的是运行时配置里的能力声明(与 `dispatchPath` 同一来源),因此调用点与分派点
|
|
47
|
+
* 对"缺哪个能力"的判断必然一致——不会出现"defineOp 认为缺 evolution、dispatch 认为具备"。
|
|
48
|
+
* @param declared - op 声明的能力名列表(来自 `DualOpMeta.capabilities`)。
|
|
49
|
+
* @returns 第一个缺失的能力名,或 undefined。
|
|
50
|
+
*/
|
|
51
|
+
export function firstMissingCapability(declared) {
|
|
52
|
+
if (!declared?.length)
|
|
53
|
+
return undefined;
|
|
54
|
+
const supported = engineCapabilitySet(getBackends().config.brepCapabilities);
|
|
55
|
+
return declared.find((cap) => !supported.has(cap));
|
|
56
|
+
}
|
|
18
57
|
/**
|
|
19
58
|
* Decide whether this invocation takes the BREP or the mesh backend path.
|
|
20
59
|
*
|
|
@@ -32,7 +71,11 @@ import { hasBrep } from '../shape.js';
|
|
|
32
71
|
* Capability routing (requiredCapability): when the current engine (registry)
|
|
33
72
|
* lacks a declared capability, brep mode throws a BrepUnsupportedError (an
|
|
34
73
|
* explicit error, never a silent fallback) while auto mode statically degrades
|
|
35
|
-
* to mesh (never fabricating a missing capability).
|
|
74
|
+
* to mesh (never fabricating a missing capability). The capability is matched
|
|
75
|
+
* against the engine's declaration as a set of concrete names: family booleans
|
|
76
|
+
* plus the engine's `evolution` list of `*WithHistory` kernel function names
|
|
77
|
+
* (Phase 0.2 — a family-level `evolution: true` would over-report, since a
|
|
78
|
+
* kernel may provide only a subset of the evolution family).
|
|
36
79
|
*
|
|
37
80
|
* Red line unchanged: static dispatch, no runtime try-catch fallback. The
|
|
38
81
|
* decision happens before the implementation runs and is never revised after a
|
|
@@ -57,6 +100,8 @@ export function dispatchPath(inputs, impls, requiredCapability) {
|
|
|
57
100
|
return 'mesh';
|
|
58
101
|
}
|
|
59
102
|
const currentStmt = getCurrentStmt();
|
|
103
|
+
// 引擎能力声明 → 具体能力名集合(族级布尔位 + evolution 名单逐核函数展开)。
|
|
104
|
+
const supported = engineCapabilitySet(config.brepCapabilities);
|
|
60
105
|
if (config.mode === 'brep') {
|
|
61
106
|
if (!impls.brep) {
|
|
62
107
|
throw new BrepUnsupportedError('E_BREP_UNSUPPORTED: function has no BREP implementation', currentStmt);
|
|
@@ -65,13 +110,13 @@ export function dispatchPath(inputs, impls, requiredCapability) {
|
|
|
65
110
|
throw new BrepUnsupportedError('E_BREP_UNSUPPORTED: input is not BREP', currentStmt);
|
|
66
111
|
}
|
|
67
112
|
// 能力路由:brep 模式缺能力 → 明确报错,不静默回退
|
|
68
|
-
if (requiredCapability && !
|
|
113
|
+
if (requiredCapability && !supported.has(requiredCapability)) {
|
|
69
114
|
throw new BrepUnsupportedError(`E_BREP_UNSUPPORTED: current engine lacks capability '${requiredCapability}' (brepEngineId=${config.brepEngineId ?? '<none>'})`, currentStmt);
|
|
70
115
|
}
|
|
71
116
|
return 'brep';
|
|
72
117
|
}
|
|
73
118
|
// auto 模式:能力路由(缺能力 → 静态降级走 mesh;brep-only 无 mesh 可降 → 明确报错)
|
|
74
|
-
if (requiredCapability && !
|
|
119
|
+
if (requiredCapability && !supported.has(requiredCapability)) {
|
|
75
120
|
if (!impls.mesh) {
|
|
76
121
|
throw new MeshUnsupportedError(`E_MESH_UNSUPPORTED: current engine lacks capability '${requiredCapability}' and function has no mesh implementation`, currentStmt);
|
|
77
122
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backend-dispatch.js","sourceRoot":"","sources":["../../src/cad-runtime/backend-dispatch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AAC1G,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"backend-dispatch.js","sourceRoot":"","sources":["../../src/cad-runtime/backend-dispatch.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * backend-dispatch — BREP/mesh 路径静态判定(引擎侧)\n *\n *\n * 红线(AGENTS.md):BREP 链是否可用,由静态规则在执行前判定,\n * **禁止运行时 try-catch 回退**。BREP 路径抛异常 = 设计缺陷或 bug,必须直接报错暴露。\n *\n * 本文件从 src/stdlib/internal/resolve-path.ts 迁移而来:判定是引擎的职责,\n * 不该由每个库函数各自调用。\n *\n * ⚠️ 分层例外:本文件位于 cad-runtime/ 但被 stdlib/ import。\n * 这是安全的——它只依赖 runtime-state / stdlib/shape / mesh/types,\n * 不依赖 cad-runtime 的任何其他模块,因此不构成循环。\n * P4b(可选)把函数拆成 brep/mesh 双实现后,此依赖会自然消失。\n */\n\nimport { getBackends, getCurrentStmt, BrepUnsupportedError, MeshUnsupportedError } from '../runtime-state'\nimport { hasBrep } from '../shape'\nimport type { BrepEvolutionKind, BrepMethodKind } from '../brep/engine/types'\nimport type { Shape } from '../mesh/types'\n\n/** 静态判定的两个可能结果:走 BREP 链或 mesh 链。 */\nexport type BrepPath = 'brep' | 'mesh'\n\n/**\n * 能力名:族级布尔位(`BrepCapabilities` 里类型为 boolean 的字段)**加上**逐核函数的\n * 面演化名(`BrepEvolutionKind`,`evolution` 名单里的条目)。\n *\n * ⚠️ `'evolution'` 已从本联合中**移除**(2026-09-22 Phase 0.2):它曾是\"面演化族\"的\n * 族级名,但族级声明会多报能力(内核可只提供部分 `*WithHistory`)→ 静态判定失效。\n * op 现在必须声明**具体**要哪个核函数(如 `['cut']`),引擎声明**具体**提供哪些\n * (`evolution: ['fuse','cut','fillet']`)。见 `brep/engine/types.ts` 的 `BrepEvolutionKind`。\n */\nexport type BrepCapabilityName =\n | 'heal'\n | 'directEdit'\n | 'advSurface'\n | 'assembly'\n | 'meshLift'\n | BrepEvolutionKind\n | BrepMethodKind\n\n/**\n * 引擎能力声明的宽松镜像(`runtime-state.Backends.config.brepCapabilities` 同构;\n * 该模块须零依赖,故不复用 `BrepCapabilities`)。\n */\nexport interface EngineCapabilitiesLike {\n /** 本引擎实际提供的 `*WithHistory` 核函数名。 */\n evolution?: readonly string[]\n /** 本引擎实际提供的非演化内核方法名(`BrepMethodKind`)。 */\n methods?: readonly string[]\n heal?: boolean\n directEdit?: boolean\n advSurface?: boolean\n assembly?: boolean\n meshLift?: boolean\n}\n\n/**\n * 引擎能力声明 → 受支持能力名集合(族级布尔位 + `evolution` 名单展开成逐个核函数名)。\n * @param caps - 当前引擎的能力声明(缺省 = 空集,即什么都不支持)。\n * @returns 该引擎声明支持的 `BrepCapabilityName` 集合。\n */\nexport function engineCapabilitySet(caps: EngineCapabilitiesLike | undefined): ReadonlySet<string> {\n const set = new Set<string>()\n if (!caps) return set\n for (const kind of caps.evolution ?? []) set.add(kind)\n for (const method of caps.methods ?? []) set.add(method)\n if (caps.heal) set.add('heal')\n if (caps.directEdit) set.add('directEdit')\n if (caps.advSurface) set.add('advSurface')\n if (caps.assembly) set.add('assembly')\n if (caps.meshLift) set.add('meshLift')\n return set\n}\n\n/**\n * 声明列表中第一个**当前引擎不具备**的能力名(全具备则 `undefined`)。\n *\n * 读的是运行时配置里的能力声明(与 `dispatchPath` 同一来源),因此调用点与分派点\n * 对\"缺哪个能力\"的判断必然一致——不会出现\"defineOp 认为缺 evolution、dispatch 认为具备\"。\n * @param declared - op 声明的能力名列表(来自 `DualOpMeta.capabilities`)。\n * @returns 第一个缺失的能力名,或 undefined。\n */\nexport function firstMissingCapability(\n declared: readonly BrepCapabilityName[] | undefined,\n): BrepCapabilityName | undefined {\n if (!declared?.length) return undefined\n const supported = engineCapabilitySet(getBackends().config.brepCapabilities)\n return declared.find((cap) => !supported.has(cap))\n}\n\n/**\n * Decide whether this invocation takes the BREP or the mesh backend path.\n *\n * Bidirectional dispatch (defineOp contract, D1/D1b/D2):\n * - `impls` carries mesh/brep implementation presence (function reference or\n * undefined, fixed at defineOp construction — static).\n * - `mode='mesh'` → always mesh; missing mesh implementation (brep-only)\n * throws `MeshUnsupportedError`.\n * - `mode='brep'` → missing brep / input off chain / missing capability throws\n * `BrepUnsupportedError`.\n * - `mode='auto'` → brep when brep exists and all inputs are on the chain;\n * otherwise mesh when mesh exists; brep-only with a broken input chain (or\n * missing capability) throws `MeshUnsupportedError` — no mesh to fall back to.\n *\n * Capability routing (requiredCapability): when the current engine (registry)\n * lacks a declared capability, brep mode throws a BrepUnsupportedError (an\n * explicit error, never a silent fallback) while auto mode statically degrades\n * to mesh (never fabricating a missing capability). The capability is matched\n * against the engine's declaration as a set of concrete names: family booleans\n * plus the engine's `evolution` list of `*WithHistory` kernel function names\n * (Phase 0.2 — a family-level `evolution: true` would over-report, since a\n * kernel may provide only a subset of the evolution family).\n *\n * Red line unchanged: static dispatch, no runtime try-catch fallback. The\n * decision happens before the implementation runs and is never revised after a\n * failed execution.\n *\n * Third-party library authors never call this directly — `defineOp` (SDK)\n * invokes it inside its wrapper; authors only declare the implementation set.\n * @param inputs - the shapes feeding the operation, used to test whether all\n * lie on the BREP chain.\n * @param impls - the operation's implementation set: `mesh`/`brep` presence\n * (function reference or undefined; fixed at defineOp construction).\n * @param requiredCapability - an optional capability the operation declares;\n * a missing capability routes the dispatch.\n * @returns the selected backend path: 'brep' or 'mesh'.\n */\nexport function dispatchPath(\n inputs: Shape[],\n impls: { mesh?: unknown; brep?: unknown },\n requiredCapability?: BrepCapabilityName,\n): BrepPath {\n const { config } = getBackends()\n\n if (config.mode === 'mesh') {\n if (!impls.mesh) {\n throw new MeshUnsupportedError('E_MESH_UNSUPPORTED: function has no mesh implementation', getCurrentStmt())\n }\n return 'mesh'\n }\n const currentStmt = getCurrentStmt()\n // 引擎能力声明 → 具体能力名集合(族级布尔位 + evolution 名单逐核函数展开)。\n const supported = engineCapabilitySet(config.brepCapabilities)\n\n if (config.mode === 'brep') {\n if (!impls.brep) {\n throw new BrepUnsupportedError('E_BREP_UNSUPPORTED: function has no BREP implementation', currentStmt)\n }\n if (!inputs.every(hasBrep)) {\n throw new BrepUnsupportedError('E_BREP_UNSUPPORTED: input is not BREP', currentStmt)\n }\n // 能力路由:brep 模式缺能力 → 明确报错,不静默回退\n if (requiredCapability && !supported.has(requiredCapability)) {\n throw new BrepUnsupportedError(\n `E_BREP_UNSUPPORTED: current engine lacks capability '${requiredCapability}' (brepEngineId=${config.brepEngineId ?? '<none>'})`,\n currentStmt,\n )\n }\n return 'brep'\n }\n\n // auto 模式:能力路由(缺能力 → 静态降级走 mesh;brep-only 无 mesh 可降 → 明确报错)\n if (requiredCapability && !supported.has(requiredCapability)) {\n if (!impls.mesh) {\n throw new MeshUnsupportedError(\n `E_MESH_UNSUPPORTED: current engine lacks capability '${requiredCapability}' and function has no mesh implementation`,\n currentStmt,\n )\n }\n return 'mesh'\n }\n\n if (impls.brep && inputs.every(hasBrep)) return 'brep'\n if (!impls.mesh) {\n throw new MeshUnsupportedError(\n 'E_MESH_UNSUPPORTED: input is not BREP and function has no mesh implementation',\n currentStmt,\n )\n }\n return 'mesh'\n}\n"]}
|
|
@@ -13,9 +13,9 @@
|
|
|
13
13
|
* `` `${cdnBase}${pkg}@${version}/+esm` `` 直链,版本精确 pin 到已发布版本,保证
|
|
14
14
|
* 可复现与缓存命中;release 产物用。
|
|
15
15
|
*
|
|
16
|
-
* 别名归一:脚本 specifier 常是短名(demo 的 `.fai.js` 写 `
|
|
17
|
-
*
|
|
18
|
-
*
|
|
16
|
+
* 别名归一:脚本 specifier 常是短名(demo 的 `.fai.js` 写 `sheetmetal`),而 CDN 上
|
|
17
|
+
* 是 npm 全名(`@faicad/sheetmetal`)。`aliases` 把 specifier 映到包名后再装载,
|
|
18
|
+
* 与 node 侧 `CLI_SHORT_NAMES` 归一同一职责。
|
|
19
19
|
*
|
|
20
20
|
* `autoLiftFor` 是**同步**回调(`runtime.ts` 在装载后立即取值),所以逐库
|
|
21
21
|
* `faijs.autoLift` 必须**预先**可用:主机从构建期产物 `lib-meta.json`
|
|
@@ -39,7 +39,7 @@ export interface CreateBrowserLibLoaderOptions {
|
|
|
39
39
|
cdnBase?: string;
|
|
40
40
|
/** 方案 b:精确 pin 的 `packageName → version`(`versions.json`);提供即走直链。 */
|
|
41
41
|
versions?: Record<string, string>;
|
|
42
|
-
/** 别名表:脚本 import specifier → npm 包名(如 `
|
|
42
|
+
/** 别名表:脚本 import specifier → npm 包名(如 `sheetmetal` → `@faicad/sheetmetal`)。 */
|
|
43
43
|
aliases?: Record<string, string>;
|
|
44
44
|
/** 允许装载的 **npm 包名**白名单;缺省不限制(生产建议显式给)。 */
|
|
45
45
|
libs?: string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser-lib-loader.d.ts","sourceRoot":"","sources":["../../src/cad-runtime/browser-lib-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAGxC,uDAAuD;AACvD,eAAO,MAAM,gBAAgB,kCAAkC,CAAA;AAE/D,qCAAqC;AACrC,MAAM,WAAW,cAAc;IAC7B,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,oCAAoC;AACpC,MAAM,WAAW,6BAA6B;IAC5C,iDAAiD;IACjD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,qEAAqE;IACrE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACjC
|
|
1
|
+
{"version":3,"file":"browser-lib-loader.d.ts","sourceRoot":"","sources":["../../src/cad-runtime/browser-lib-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAGxC,uDAAuD;AACvD,eAAO,MAAM,gBAAgB,kCAAkC,CAAA;AAE/D,qCAAqC;AACrC,MAAM,WAAW,cAAc;IAC7B,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,oCAAoC;AACpC,MAAM,WAAW,6BAA6B;IAC5C,iDAAiD;IACjD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,qEAAqE;IACrE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACjC,+EAA+E;IAC/E,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,0CAA0C;IAC1C,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IACf,sDAAsD;IACtD,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;IACrC,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,2DAA2D;IAC3D,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,+CAA+C;IAC/C,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IAChD,uEAAuE;IACvE,SAAS,CAAC,EAAE,OAAO,KAAK,CAAA;CACzB;AAED,oCAAoC;AACpC,MAAM,WAAW,gBAAiB,SAAQ,SAAS;IACjD;;;;OAIG;IACH,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CAC9B;AAOD;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,GAAE,6BAAkC,GAAG,gBAAgB,CA6EjG"}
|
|
@@ -13,9 +13,9 @@
|
|
|
13
13
|
* `` `${cdnBase}${pkg}@${version}/+esm` `` 直链,版本精确 pin 到已发布版本,保证
|
|
14
14
|
* 可复现与缓存命中;release 产物用。
|
|
15
15
|
*
|
|
16
|
-
* 别名归一:脚本 specifier 常是短名(demo 的 `.fai.js` 写 `
|
|
17
|
-
*
|
|
18
|
-
*
|
|
16
|
+
* 别名归一:脚本 specifier 常是短名(demo 的 `.fai.js` 写 `sheetmetal`),而 CDN 上
|
|
17
|
+
* 是 npm 全名(`@faicad/sheetmetal`)。`aliases` 把 specifier 映到包名后再装载,
|
|
18
|
+
* 与 node 侧 `CLI_SHORT_NAMES` 归一同一职责。
|
|
19
19
|
*
|
|
20
20
|
* `autoLiftFor` 是**同步**回调(`runtime.ts` 在装载后立即取值),所以逐库
|
|
21
21
|
* `faijs.autoLift` 必须**预先**可用:主机从构建期产物 `lib-meta.json`
|
|
@@ -100,8 +100,11 @@ export function createBrowserLibLoader(opts = {}) {
|
|
|
100
100
|
return;
|
|
101
101
|
const pj = (await res.json());
|
|
102
102
|
const lifted = pj.faijs?.autoLift;
|
|
103
|
+
const entry = {};
|
|
103
104
|
if (typeof lifted === 'boolean')
|
|
104
|
-
|
|
105
|
+
entry.autoLift = lifted;
|
|
106
|
+
if (entry.autoLift !== undefined)
|
|
107
|
+
meta[pkg] = entry;
|
|
105
108
|
}
|
|
106
109
|
catch {
|
|
107
110
|
// 网络不可达 / 非法 JSON → 保持未声明,交由 runtime 推断式。
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser-lib-loader.js","sourceRoot":"","sources":["../../src/cad-runtime/browser-lib-loader.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"browser-lib-loader.js","sourceRoot":"","sources":["../../src/cad-runtime/browser-lib-loader.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * browser-lib-loader — 浏览器通用 `LibLoader` 工厂(D3-Browser,§9.4)\n *\n * 与 node 侧 `cliPortsLibLoader`(`node-host/cli.ts`)对称:都实现 `LibLoader`\n * 契约(`loadLib` / `listLibs` / `options.autoLiftFor`),差别只在装载通道——\n * node 用 `import(pkg)` 从 `node_modules` 解析,浏览器用**动态 `import()`** 取 CDN。\n *\n * 两条通路(Q8 定稿的 a/b 混合,共用同一 `CDN_BASE`):\n * - **方案 a(importmap)**:不提供 `versions` 时,用**已解析的包名**做裸 specifier\n * 动态 `import(pkg)`,由页面 `<script type=\"importmap\">` 的 scope\n * (`\"@faicad/\": \"CDN_BASE/*@faicad/\"`)在后端按依赖图取版。零版本表,dev / playground 用。\n * - **方案 b(精确 pin)**:提供 `versions`(`versions.json`)时拼\n * `` `${cdnBase}${pkg}@${version}/+esm` `` 直链,版本精确 pin 到已发布版本,保证\n * 可复现与缓存命中;release 产物用。\n *\n * 别名归一:脚本 specifier 常是短名(demo 的 `.fai.js` 写 `sheetmetal`),而 CDN 上\n * 是 npm 全名(`@faicad/sheetmetal`)。`aliases` 把 specifier 映到包名后再装载,\n * 与 node 侧 `CLI_SHORT_NAMES` 归一同一职责。\n *\n * `autoLiftFor` 是**同步**回调(`runtime.ts` 在装载后立即取值),所以逐库\n * `faijs.autoLift` 必须**预先**可用:主机从构建期产物 `lib-meta.json`\n * (`scripts/gen-importmap.mjs` 生成)经 `meta` 传入;也可调 `prefetchMeta()`\n * 在网络可达时抓各库 `package.json` 预热(失败静默回落推断式)。\n *\n * 本工厂**不**被 `createBrowserPorts` 默认装配——demo 走源码 alias 的 HMR 路径\n * 必须保持零网络;CDN 装载仅服务「从 npm 消费已发布包」的场景,由主机显式注入。\n */\n\nimport type { LibLoader } from './ports'\nimport type { StdlibNamespace } from '../runtime-state'\n\n/** 默认 CDN base(Q8 定稿:jsDelivr npm 镜像;ESM 取 `+esm`)。 */\nexport const DEFAULT_CDN_BASE = 'https://cdn.jsdelivr.net/npm/'\n\n/** 逐库元数据(与 `lib-meta.json` 键形一致)。 */\nexport interface BrowserLibMeta {\n /** `package.json` 的 `faijs.autoLift` 外置字段(D3-autoLift)。 */\n autoLift?: boolean\n}\n\n/** `createBrowserLibLoader` 的选项。 */\nexport interface CreateBrowserLibLoaderOptions {\n /** CDN base,须以 `/` 结尾(缺省 `DEFAULT_CDN_BASE`)。 */\n cdnBase?: string\n /** 方案 b:精确 pin 的 `packageName → version`(`versions.json`);提供即走直链。 */\n versions?: Record<string, string>\n /** 别名表:脚本 import specifier → npm 包名(如 `sheetmetal` → `@faicad/sheetmetal`)。 */\n aliases?: Record<string, string>\n /** 允许装载的 **npm 包名**白名单;缺省不限制(生产建议显式给)。 */\n libs?: string[]\n /** 逐库元数据(`lib-meta.json`),喂 `options.autoLiftFor`。 */\n meta?: Record<string, BrowserLibMeta>\n /** 全局 autoLift 缺省(喂 `options.autoLift`);缺省交由 runtime 推断式决定。 */\n autoLift?: boolean\n /** 强制方案 a(即使提供了 `versions` 也用裸 specifier,依赖 importmap)。 */\n forceImportMap?: boolean\n /** 注入的动态 import 实现(测试用);缺省为原生动态 `import()`。 */\n importModule?: (url: string) => Promise<unknown>\n /** 注入的 fetch(`prefetchMeta` 用);缺省全局 `fetch`,无则 `prefetchMeta` 为空操作。 */\n fetchImpl?: typeof fetch\n}\n\n/** 浏览器 `LibLoader`(在契约上附加元数据预热)。 */\nexport interface BrowserLibLoader extends LibLoader {\n /**\n * 抓取已知各库的 `package.json`,把 `faijs.autoLift` 填进内部 meta 缓存。\n * 网络失败静默跳过(保持未声明 → 回落推断式)。在 `execute` 前 await 一次即可。\n * @returns promise resolving when all known libs have been probed.\n */\n prefetchMeta(): Promise<void>\n}\n\n/** 归一 CDN base:保证尾随 `/`,避免拼接出 `.../npm@1.0.0` 这类坏 URL。 */\nfunction withTrailingSlash(base: string): string {\n return base.endsWith('/') ? base : `${base}/`\n}\n\n/**\n * 创建浏览器通用 `LibLoader`。\n *\n * 装载顺序:`name` → `aliases` 归一为 npm 包名 → 白名单校验 → 方案 b 直链(有\n * `versions[pkg]` 且未 `forceImportMap`)或方案 a 裸 specifier → 动态 `import()`;\n * 同一包名并发/重复装载共享同一 in-flight promise(CDN 只取一次)。\n * @param opts - CDN base、版本表 / 别名 / 元数据,以及测试用注入点。\n * @returns 满足 `LibLoader` 契约、并附加 `prefetchMeta()` 的浏览器装载器。\n */\nexport function createBrowserLibLoader(opts: CreateBrowserLibLoaderOptions = {}): BrowserLibLoader {\n const cdnBase = withTrailingSlash(opts.cdnBase ?? DEFAULT_CDN_BASE)\n const aliases: Record<string, string> = { ...(opts.aliases ?? {}) }\n const versions = opts.versions\n const allow = opts.libs ? new Set(opts.libs) : undefined\n const meta: Record<string, BrowserLibMeta> = { ...(opts.meta ?? {}) }\n const importModule =\n opts.importModule ?? ((url: string): Promise<unknown> => import(/* @vite-ignore */ url))\n const fetchImpl = opts.fetchImpl ?? (typeof fetch !== 'undefined' ? fetch : undefined)\n\n /** specifier → npm 包名。 */\n const pkgOf = (name: string): string => aliases[name] ?? name\n\n /** 已知 specifier 集合:别名键 ∪ 显式 libs ∪ 版本表键(后两者本身即合法 specifier)。 */\n const specifiers = new Set<string>([\n ...Object.keys(aliases),\n ...(opts.libs ?? []),\n ...Object.keys(versions ?? {}),\n ])\n\n /** 方案 b 的直链;返回 `undefined` 表示走方案 a。 */\n const urlOf = (pkg: string): string | undefined => {\n if (opts.forceImportMap) return undefined\n const v = versions?.[pkg]\n return v ? `${cdnBase}${pkg}@${v}/+esm` : undefined\n }\n\n const pending = new Map<string, Promise<StdlibNamespace>>()\n\n return {\n loadLib: (name: string): Promise<StdlibNamespace> => {\n const pkg = pkgOf(name)\n if (allow && !allow.has(pkg)) {\n return Promise.reject(\n new Error(`package \"${pkg}\" (from specifier \"${name}\") is not in the browser library whitelist`),\n )\n }\n const cached = pending.get(pkg)\n if (cached) return cached\n const url = urlOf(pkg)\n const job = importModule(url ?? pkg).then((mod) => mod as StdlibNamespace)\n pending.set(pkg, job)\n // 装载失败不留毒缓存:清掉后可重试(如网络恢复)。\n job.catch(() => pending.delete(pkg))\n return job\n },\n\n listLibs: () => [...specifiers],\n\n options: {\n ...(opts.autoLift === undefined ? {} : { autoLift: opts.autoLift }),\n // 逐库 autoLift 优先于全局:未声明 → undefined → 回落全局 / runtime 推断式。\n autoLiftFor: (name: string) => meta[pkgOf(name)]?.autoLift,\n },\n\n prefetchMeta: async (): Promise<void> => {\n if (!fetchImpl) return\n const pkgs = new Set<string>([...specifiers].map(pkgOf))\n await Promise.all(\n [...pkgs].map(async (pkg) => {\n if (meta[pkg]) return\n const v = versions?.[pkg]\n try {\n const res = await fetchImpl(`${cdnBase}${pkg}${v ? `@${v}` : ''}/package.json`)\n if (!res.ok) return\n const pj = (await res.json()) as { faijs?: { autoLift?: boolean } }\n const lifted = pj.faijs?.autoLift\n const entry: BrowserLibMeta = {}\n if (typeof lifted === 'boolean') entry.autoLift = lifted\n if (entry.autoLift !== undefined) meta[pkg] = entry\n } catch {\n // 网络不可达 / 非法 JSON → 保持未声明,交由 runtime 推断式。\n }\n }),\n )\n },\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"direct-executor.d.ts","sourceRoot":"","sources":["../../src/cad-runtime/direct-executor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAG3C,OAAO,EAA2H,KAAK,sBAAsB,EAAwB,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"direct-executor.d.ts","sourceRoot":"","sources":["../../src/cad-runtime/direct-executor.ts"],"names":[],"mappings":"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"}
|