@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-naming.js","sourceRoot":"","sources":["../../../src/topology/naming/build-naming.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"build-naming.js","sourceRoot":"","sources":["../../../src/topology/naming/build-naming.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * build-naming.ts — ExecutionResult.naming 生成(§3.7)\n *\n * 从「part 的面行 + RoleTable」生成 FaceNaming/EdgeNaming 命名行,供宿主 O(1)\n * 反查(拾取序号 → 命名行 → captureTopoRef)。序号(1起) ↔ 数组下标。\n *\n * Phase 1.6/1.7 换型(§4.1/§4.2):\n * - RoleTable 外层键与 naming 行的 origin 一律是 **StmtId**(不再 PartName)。\n * - role 是 RoleName 的线格式串(无 'box:' 前缀)。\n * - **无身份面显式 `role: null`**——`''` 静默兜底已删(G6);mesh 来源只填 hint。\n */\n\nimport type { StmtId, PartName } from '../../identity'\nimport type { RoleTable, FaceNaming, EdgeNaming, PartNaming, RoleQualifier } from './types'\nimport { faceRowToHint, edgeRowToHint } from './geom-hint'\nimport { roleOfOrdinal } from './roles'\n\n/** 面的源行数据(FaceRow 子集,够生成 hint + 反查)。axis 为宿主注入的轴快照(装配轴约束用)。 */\nexport interface NamingFaceRow {\n readonly surfaceType?: string\n readonly normal?: readonly number[] | null\n readonly center?: readonly number[] | null\n readonly area?: number\n readonly axis?: { readonly origin?: readonly number[] | null; readonly direction?: readonly number[] | null } | null\n}\n\n/** 边的源行数据(EdgeRow 子集)。axis 为直边/圆边的轴快照(装配轴约束用)。 */\nexport interface NamingEdgeRow {\n readonly length?: number\n readonly center?: readonly number[] | null\n readonly axis?: { readonly origin?: readonly number[] | null; readonly direction?: readonly number[] | null } | null\n}\n\n/** 生成 PartNaming 的输入。 */\nexport interface PartNamingInput {\n readonly source: 'brep' | 'primitive' | 'mesh'\n /** 该 part 变量名(仅 UI 显示兜底用;身份一律走 roleTable 的 StmtId)。 */\n readonly partName: PartName\n /** 面命名源行(序号 1 起 ↔ 数组下标 0 起)。 */\n readonly faces: readonly NamingFaceRow[]\n /** 边命名源行(序号 1 起 ↔ 数组下标 0 起)。 */\n readonly edges: readonly NamingEdgeRow[]\n /** BREP:RoleTable(可能多 origin,键=StmtId);mesh/primitive 缺省。 */\n readonly roleTable?: RoleTable\n /** BREP:subShapeHashes(shape,'face'),序号 → hash 对照(roleOfOrdinal 用)。 */\n readonly ordinalToHash?: readonly number[]\n /** 每条边的两邻面序号(1 起;来自 manifest faceEdgeRows/edgeFaceRows)。mesh 无邻接 → undefined。 */\n readonly edgeFaceOrdinals?: ReadonlyArray<readonly [number, number] | null>\n}\n\n/**\n * 逐 origin 反查一个面的 {origin, role}(布尔合流后 RoleTable 含多个 origin)。\n *\n * @param table - the RoleTable (may have several origins after a boolean merge; keys are StmtId strings).\n * @param ordinalToHash - ordinal → hash array (subShapeHashes).\n * @param ordinal - the face ordinal (1-based).\n * @returns the owning origin (StmtId) and role, or undefined when no origin tracks it.\n */\nexport function findOriginRole(\n table: RoleTable,\n ordinalToHash: readonly number[],\n ordinal: number,\n): { origin: StmtId; role: string } | undefined {\n for (const [origin, roles] of table) {\n const role = roleOfOrdinal(roles, ordinalToHash, ordinal)\n if (role !== undefined) return { origin: origin as StmtId, role }\n }\n return undefined\n}\n\n/**\n * 生成一个 part 的命名数据(§3.7 ExecutionResult.naming 元素)。\n *\n * Phase 1.8(D6):mesh 伪拓扑已删——primitive/mesh 来源**不再派生 role**\n * (拓扑身份是 BREP 专有能力,§3);primitive 分支与 mesh 一致只填 hint。\n * G6:无身份面显式 `role: null`(`''` 兜底已删)。\n *\n * @param input - the part naming input.\n * @returns the PartNaming rows.\n */\nexport function buildPartNaming(input: PartNamingInput): PartNaming {\n const { source } = input\n const faceNaming: FaceNaming[] = []\n input.faces.forEach((row, i) => {\n const hint = faceRowToHint(row)\n if (source === 'brep' && input.roleTable && input.ordinalToHash) {\n const found = findOriginRole(input.roleTable, input.ordinalToHash, i + 1)\n if (found) {\n faceNaming.push({ origin: found.origin, role: found.role, hint })\n return\n }\n // BREP 链上未追踪的面:显式无身份(G6——不再伪造 role='')\n faceNaming.push({ origin: null, role: null, hint })\n return\n }\n // primitive / mesh:拓扑身份是 BREP 专有能力(§3/D6)——只填 hint,origin/role 显式 null\n faceNaming.push({ origin: null, role: null, hint })\n })\n\n const edgeNaming: EdgeNaming[] = input.edges.map((row, i) => {\n const hint = edgeRowToHint(row)\n const pair = input.edgeFaceOrdinals?.[i]\n if (pair && input.roleTable && input.ordinalToHash) {\n const a = findOriginRole(input.roleTable, input.ordinalToHash, pair[0])\n const b = findOriginRole(input.roleTable, input.ordinalToHash, pair[1])\n if (a && b) {\n const qa: RoleQualifier = { origin: a.origin, role: a.role }\n const qb: RoleQualifier = { origin: b.origin, role: b.role }\n return { faces: [qa, qb], hint }\n }\n }\n return { faces: null, hint }\n })\n\n return { source, faceNaming, edgeNaming }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capture-topo-ref.d.ts","sourceRoot":"","sources":["../../../src/topology/naming/capture-topo-ref.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAgB,KAAK,UAAU,EAAE,KAAK,UAAU,EAAE,KAAK,OAAO,EAAE,MAAM,SAAS,CAAA;AAOtF;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,UAAU,GAAG,UAAU,GAAG,OAAO,
|
|
1
|
+
{"version":3,"file":"capture-topo-ref.d.ts","sourceRoot":"","sources":["../../../src/topology/naming/capture-topo-ref.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAgB,KAAK,UAAU,EAAE,KAAK,UAAU,EAAE,KAAK,OAAO,EAAE,MAAM,SAAS,CAAA;AAOtF;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,UAAU,GAAG,UAAU,GAAG,OAAO,CAqBpE"}
|
|
@@ -29,6 +29,11 @@ export function captureTopoRef(row) {
|
|
|
29
29
|
}
|
|
30
30
|
return { kind: 'edge', faces: row.faces, hint: row.hint };
|
|
31
31
|
}
|
|
32
|
+
// Phase 1.6/1.8:无身份行(origin/role=null,mesh 或未追踪面)不能构造 FaceTopoRef
|
|
33
|
+
// ——身份字段是引用的主键,伪造空值正是被删除的静默降级(G6)。
|
|
34
|
+
if (row.origin === null || row.role === null) {
|
|
35
|
+
throw new TopoRefError('E_TOPO_NOT_FOUND', 'face', 'face naming row has no identity (mesh path or untracked face on the BREP chain)');
|
|
36
|
+
}
|
|
32
37
|
return { kind: 'face', origin: row.origin, role: row.role, hint: row.hint };
|
|
33
38
|
}
|
|
34
39
|
//# sourceMappingURL=capture-topo-ref.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capture-topo-ref.js","sourceRoot":"","sources":["../../../src/topology/naming/capture-topo-ref.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAkD,MAAM,SAAS,CAAA;AAEtF,6CAA6C;AAC7C,SAAS,YAAY,CAAC,GAA4B;IAChD,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,CAAA;AACjC,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,cAAc,CAAC,GAA4B;IACzD,IAAI,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;QACtB,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,YAAY,CACpB,kBAAkB,EAClB,MAAM,EACN,4DAA4D,CAC7D,CAAA;QACH,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAA;IAC3D,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAA;AAC7E,CAAC","sourcesContent":["/**\n * capture-topo-ref.ts — 由命名行构造 TopoRef(§3.7 根门面导出,纯函数、不含前端状态)\n *\n * 宿主拾取到 Reference(序号)→ 经 ExecutionResult.naming 定位命名行 →\n * captureTopoRef(row) → 可直接塞进 op 参数的 TopoRef。\n * ReferenceId/ordinal 的解析与命名行定位由宿主完成(§6.1),本函数只做纯构造。\n */\n\nimport { TopoRefError, type EdgeNaming, type FaceNaming, type TopoRef } from './types'\n\n/** 结构守卫:EdgeNaming(hint.kind === 'edge')。 */\nfunction isEdgeNaming(row: FaceNaming | EdgeNaming): row is EdgeNaming {\n return row.hint.kind === 'edge'\n}\n\n/**\n * 由命名行构造 TopoRef。\n *\n * - FaceNaming → FaceTopoRef{kind:'face', origin, role, hint};\n * - EdgeNaming → EdgeTopoRef{kind:'edge', faces, hint}。\n *\n * EdgeNaming.faces 为 null(mesh 无邻接,§5.3 能力边界)时无法构造 lineage,\n * 显式抛 TopoRefError(E_TOPO_NOT_FOUND)——绝不静默产出残缺引用。\n *\n * @param row - the naming row (face or edge) to convert.\n * @returns the corresponding TopoRef.\n */\nexport function captureTopoRef(row: FaceNaming | EdgeNaming): TopoRef {\n if (isEdgeNaming(row)) {\n if (!row.faces) {\n throw new TopoRefError(\n 'E_TOPO_NOT_FOUND',\n 'edge',\n 'edge naming has no adjacent-face lineage (mesh limitation)',\n )\n }\n return { kind: 'edge', faces: row.faces, hint: row.hint }\n }\n return { kind: 'face', origin: row.origin, role: row.role, hint: row.hint }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"capture-topo-ref.js","sourceRoot":"","sources":["../../../src/topology/naming/capture-topo-ref.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAkD,MAAM,SAAS,CAAA;AAEtF,6CAA6C;AAC7C,SAAS,YAAY,CAAC,GAA4B;IAChD,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,CAAA;AACjC,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,cAAc,CAAC,GAA4B;IACzD,IAAI,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;QACtB,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,YAAY,CACpB,kBAAkB,EAClB,MAAM,EACN,4DAA4D,CAC7D,CAAA;QACH,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAA;IAC3D,CAAC;IACD,kEAAkE;IAClE,mCAAmC;IACnC,IAAI,GAAG,CAAC,MAAM,KAAK,IAAI,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;QAC7C,MAAM,IAAI,YAAY,CACpB,kBAAkB,EAClB,MAAM,EACN,iFAAiF,CAClF,CAAA;IACH,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAA;AAC7E,CAAC","sourcesContent":["/**\n * capture-topo-ref.ts — 由命名行构造 TopoRef(§3.7 根门面导出,纯函数、不含前端状态)\n *\n * 宿主拾取到 Reference(序号)→ 经 ExecutionResult.naming 定位命名行 →\n * captureTopoRef(row) → 可直接塞进 op 参数的 TopoRef。\n * ReferenceId/ordinal 的解析与命名行定位由宿主完成(§6.1),本函数只做纯构造。\n */\n\nimport { TopoRefError, type EdgeNaming, type FaceNaming, type TopoRef } from './types'\n\n/** 结构守卫:EdgeNaming(hint.kind === 'edge')。 */\nfunction isEdgeNaming(row: FaceNaming | EdgeNaming): row is EdgeNaming {\n return row.hint.kind === 'edge'\n}\n\n/**\n * 由命名行构造 TopoRef。\n *\n * - FaceNaming → FaceTopoRef{kind:'face', origin, role, hint};\n * - EdgeNaming → EdgeTopoRef{kind:'edge', faces, hint}。\n *\n * EdgeNaming.faces 为 null(mesh 无邻接,§5.3 能力边界)时无法构造 lineage,\n * 显式抛 TopoRefError(E_TOPO_NOT_FOUND)——绝不静默产出残缺引用。\n *\n * @param row - the naming row (face or edge) to convert.\n * @returns the corresponding TopoRef.\n */\nexport function captureTopoRef(row: FaceNaming | EdgeNaming): TopoRef {\n if (isEdgeNaming(row)) {\n if (!row.faces) {\n throw new TopoRefError(\n 'E_TOPO_NOT_FOUND',\n 'edge',\n 'edge naming has no adjacent-face lineage (mesh limitation)',\n )\n }\n return { kind: 'edge', faces: row.faces, hint: row.hint }\n }\n // Phase 1.6/1.8:无身份行(origin/role=null,mesh 或未追踪面)不能构造 FaceTopoRef\n // ——身份字段是引用的主键,伪造空值正是被删除的静默降级(G6)。\n if (row.origin === null || row.role === null) {\n throw new TopoRefError(\n 'E_TOPO_NOT_FOUND',\n 'face',\n 'face naming row has no identity (mesh path or untracked face on the BREP chain)',\n )\n }\n return { kind: 'face', origin: row.origin, role: row.role, hint: row.hint }\n}\n"]}
|
|
@@ -5,6 +5,8 @@
|
|
|
5
5
|
* 或活 BREP 句柄。绝不反向把序号当稳定身份存进脚本。
|
|
6
6
|
*/
|
|
7
7
|
export * from './types.js';
|
|
8
|
+
export * from './role-name.js';
|
|
9
|
+
export * from './lineage.js';
|
|
8
10
|
export * from './geom-hint.js';
|
|
9
11
|
export * from './score.js';
|
|
10
12
|
export * from './roles.js';
|
|
@@ -16,4 +18,5 @@ export * from './resolver.js';
|
|
|
16
18
|
export * from './ref-params.js';
|
|
17
19
|
export * from './capture-topo-ref.js';
|
|
18
20
|
export * from './build-naming.js';
|
|
21
|
+
export * from './migrate.js';
|
|
19
22
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/topology/naming/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,SAAS,CAAA;AACvB,cAAc,aAAa,CAAA;AAC3B,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA;AACvB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,kBAAkB,CAAA;AAChC,cAAc,mBAAmB,CAAA;AACjC,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA;AAC5B,cAAc,oBAAoB,CAAA;AAClC,cAAc,gBAAgB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/topology/naming/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,SAAS,CAAA;AACvB,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA;AACvB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,kBAAkB,CAAA;AAChC,cAAc,mBAAmB,CAAA;AACjC,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA;AAC5B,cAAc,oBAAoB,CAAA;AAClC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,WAAW,CAAA"}
|
|
@@ -5,6 +5,8 @@
|
|
|
5
5
|
* 或活 BREP 句柄。绝不反向把序号当稳定身份存进脚本。
|
|
6
6
|
*/
|
|
7
7
|
export * from './types.js';
|
|
8
|
+
export * from './role-name.js';
|
|
9
|
+
export * from './lineage.js';
|
|
8
10
|
export * from './geom-hint.js';
|
|
9
11
|
export * from './score.js';
|
|
10
12
|
export * from './roles.js';
|
|
@@ -16,4 +18,5 @@ export * from './resolver.js';
|
|
|
16
18
|
export * from './ref-params.js';
|
|
17
19
|
export * from './capture-topo-ref.js';
|
|
18
20
|
export * from './build-naming.js';
|
|
21
|
+
export * from './migrate.js';
|
|
19
22
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/topology/naming/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,SAAS,CAAA;AACvB,cAAc,aAAa,CAAA;AAC3B,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA;AACvB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,kBAAkB,CAAA;AAChC,cAAc,mBAAmB,CAAA;AACjC,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA;AAC5B,cAAc,oBAAoB,CAAA;AAClC,cAAc,gBAAgB,CAAA","sourcesContent":["/**\n *\n * 跨历史身份层:TopoRef(纯数据、写进 .fai.js)+ RoleTable(运行期、不序列化)。\n * 解析方向固定为单向:TopoRef(稳定)→ 解析器 → 当前快照的序号 FaceId/EdgeId\n * 或活 BREP 句柄。绝不反向把序号当稳定身份存进脚本。\n */\n\nexport * from './types'\nexport * from './geom-hint'\nexport * from './score'\nexport * from './roles'\nexport * from './resolve-face'\nexport * from './resolve-edge'\nexport * from './resolve-vertex'\nexport * from './resolve-derived'\nexport * from './resolver'\nexport * from './ref-params'\nexport * from './capture-topo-ref'\nexport * from './build-naming'\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/topology/naming/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,SAAS,CAAA;AACvB,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA;AACvB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,kBAAkB,CAAA;AAChC,cAAc,mBAAmB,CAAA;AACjC,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA;AAC5B,cAAc,oBAAoB,CAAA;AAClC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,WAAW,CAAA","sourcesContent":["/**\n *\n * 跨历史身份层:TopoRef(纯数据、写进 .fai.js)+ RoleTable(运行期、不序列化)。\n * 解析方向固定为单向:TopoRef(稳定)→ 解析器 → 当前快照的序号 FaceId/EdgeId\n * 或活 BREP 句柄。绝不反向把序号当稳定身份存进脚本。\n */\n\nexport * from './types'\nexport * from './role-name'\nexport * from './lineage'\nexport * from './geom-hint'\nexport * from './score'\nexport * from './roles'\nexport * from './resolve-face'\nexport * from './resolve-edge'\nexport * from './resolve-vertex'\nexport * from './resolve-derived'\nexport * from './resolver'\nexport * from './ref-params'\nexport * from './capture-topo-ref'\nexport * from './build-naming'\nexport * from './migrate'\n"]}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* lineage-resolve.ts — 回走推进器(1.10 前置②,计划 §4.5)。
|
|
3
|
+
*
|
|
4
|
+
* 「产物上的 roleTable 只是缓存」的重算引擎:缓存 miss 时沿血缘 DAG
|
|
5
|
+
* 从身份原点 `(origin, role)` 走到目标 part,产出该 role 在目标 part 上的
|
|
6
|
+
* 面 hash 集合——与 `slot.roleTable.get(origin)?.get(role)` 语义等价。
|
|
7
|
+
*
|
|
8
|
+
* ## 推进载体:序号(ordinal),不是 hash
|
|
9
|
+
*
|
|
10
|
+
* hash 是内存指针哈希,跨 Shape 实例必变(copy 一个新 handle,hash 全换),
|
|
11
|
+
* **不能**作为跨节点推进的载体。跨节点稳定的是两样东西:
|
|
12
|
+
* - role(因果坐标,本机制的存在理由);
|
|
13
|
+
* - 面枚举序号(`slot.faceEvolution` 记录的正是 ordinal→ordinal[] 的演化,
|
|
14
|
+
* 1.10 前置①已把每个 brep op 的演化挂到血缘节点)。
|
|
15
|
+
*
|
|
16
|
+
* 推进三步:
|
|
17
|
+
* 1. **锚定**:root 语句的输出 part 上,role → hash 集合(读 root 的现存
|
|
18
|
+
* roleTable——它现在是缓存,读它是合法的),再换算成 root 上的序号集合;
|
|
19
|
+
* 2. **逐节点推进**:沿 DAG 每个节点用其 `evolution`(ordinal 键)把序号集合
|
|
20
|
+
* 映射到输出序号(`evo.get(o) ?? [o]`——"未变"的两种上报形态都容纳);
|
|
21
|
+
* 3. **落地**:目标 part 上把最终序号集合换算回 hash 集合。
|
|
22
|
+
*
|
|
23
|
+
* 任一步数据缺失 → 返回结构化失败原因(不静默返回空集——空集会被上层当成
|
|
24
|
+
* "面被删除",那是另一个语义)。
|
|
25
|
+
*/
|
|
26
|
+
import type { PartName, StmtId } from '../../identity.js';
|
|
27
|
+
import type { LineageGraph } from './lineage.js';
|
|
28
|
+
import { formatRoleName } from './role-name.js';
|
|
29
|
+
/** 回走所需的外部读口(由调用方注入:runtime 持有 kernel 与 slots)。 */
|
|
30
|
+
export interface LineageResolveDeps {
|
|
31
|
+
/** part 的 BREP 句柄(回走链上的中间产物经 solidCache 存活)。 */
|
|
32
|
+
brepOf: (part: PartName) => unknown | undefined;
|
|
33
|
+
/** 句柄的全部面 hash(枚举序 = ordinal 1 起,与 faceEvolution 同序)。 */
|
|
34
|
+
faceHashes: (handle: unknown) => readonly number[];
|
|
35
|
+
/** 读某 part 的 roleTable 缓存(root 锚定用;返回 origin→role→hash[])。 */
|
|
36
|
+
roleTableOf: (part: PartName) => ReadonlyMap<string, ReadonlyMap<string, readonly number[]>> | undefined;
|
|
37
|
+
}
|
|
38
|
+
/** 回走失败原因(结构化,不静默)。 */
|
|
39
|
+
export type LineageResolveFailure = {
|
|
40
|
+
readonly reason: 'no-lineage-node';
|
|
41
|
+
readonly stmt: string;
|
|
42
|
+
} | {
|
|
43
|
+
readonly reason: 'no-root-part';
|
|
44
|
+
readonly stmt: string;
|
|
45
|
+
} | {
|
|
46
|
+
readonly reason: 'no-handle';
|
|
47
|
+
readonly part: string;
|
|
48
|
+
} | {
|
|
49
|
+
readonly reason: 'no-role-table';
|
|
50
|
+
readonly part: string;
|
|
51
|
+
} | {
|
|
52
|
+
readonly reason: 'role-not-in-table';
|
|
53
|
+
readonly origin: string;
|
|
54
|
+
readonly role: string;
|
|
55
|
+
} | {
|
|
56
|
+
readonly reason: 'hash-not-found';
|
|
57
|
+
readonly part: string;
|
|
58
|
+
readonly count: number;
|
|
59
|
+
} | {
|
|
60
|
+
readonly reason: 'no-evolution';
|
|
61
|
+
readonly stmt: string;
|
|
62
|
+
readonly op: string;
|
|
63
|
+
};
|
|
64
|
+
/** 回走成功:role 在目标 part 上的面 hash 集合。 */
|
|
65
|
+
export interface LineageResolveSuccess {
|
|
66
|
+
readonly hashes: readonly number[];
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* 沿血缘 DAG 回走:`(origin, role)` → 目标 part 上的 hash 集合。
|
|
70
|
+
*
|
|
71
|
+
* @param graph - the lineage graph (registered per execution).
|
|
72
|
+
* @param origin - the origin statement id of the identity.
|
|
73
|
+
* @param roleLine - the role in wire format (as stored in TopoRef).
|
|
74
|
+
* @param targetPart - the part whose snapshot we resolve against.
|
|
75
|
+
* @param deps - external readers (handles / hashes / role-table cache).
|
|
76
|
+
* @returns success with the hash set, or a structured failure.
|
|
77
|
+
*/
|
|
78
|
+
export declare function resolveViaLineage(graph: LineageGraph, origin: StmtId, roleLine: string, targetPart: PartName, deps: LineageResolveDeps): LineageResolveSuccess | LineageResolveFailure;
|
|
79
|
+
export { formatRoleName };
|
|
80
|
+
//# sourceMappingURL=lineage-resolve.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lineage-resolve.d.ts","sourceRoot":"","sources":["../../../src/topology/naming/lineage-resolve.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAC7C,OAAO,EAAiB,cAAc,EAAE,MAAM,aAAa,CAAA;AAE3D,mDAAmD;AACnD,MAAM,WAAW,kBAAkB;IACjC,gDAAgD;IAChD,MAAM,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,OAAO,GAAG,SAAS,CAAA;IAC/C,yDAAyD;IACzD,UAAU,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,SAAS,MAAM,EAAE,CAAA;IAClD,8DAA8D;IAC9D,WAAW,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,GAAG,SAAS,CAAA;CACzG;AAED,uBAAuB;AACvB,MAAM,MAAM,qBAAqB,GAC7B;IAAE,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC7D;IAAE,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC1D;IAAE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACvD;IAAE,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC3D;IAAE,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACxF;IAAE,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACpF;IAAE,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAA;AAEnF,sCAAsC;AACtC,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAA;CACnC;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,QAAQ,EACpB,IAAI,EAAE,kBAAkB,GACvB,qBAAqB,GAAG,qBAAqB,CAyE/C;AAID,OAAO,EAAE,cAAc,EAAE,CAAA"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* lineage-resolve.ts — 回走推进器(1.10 前置②,计划 §4.5)。
|
|
3
|
+
*
|
|
4
|
+
* 「产物上的 roleTable 只是缓存」的重算引擎:缓存 miss 时沿血缘 DAG
|
|
5
|
+
* 从身份原点 `(origin, role)` 走到目标 part,产出该 role 在目标 part 上的
|
|
6
|
+
* 面 hash 集合——与 `slot.roleTable.get(origin)?.get(role)` 语义等价。
|
|
7
|
+
*
|
|
8
|
+
* ## 推进载体:序号(ordinal),不是 hash
|
|
9
|
+
*
|
|
10
|
+
* hash 是内存指针哈希,跨 Shape 实例必变(copy 一个新 handle,hash 全换),
|
|
11
|
+
* **不能**作为跨节点推进的载体。跨节点稳定的是两样东西:
|
|
12
|
+
* - role(因果坐标,本机制的存在理由);
|
|
13
|
+
* - 面枚举序号(`slot.faceEvolution` 记录的正是 ordinal→ordinal[] 的演化,
|
|
14
|
+
* 1.10 前置①已把每个 brep op 的演化挂到血缘节点)。
|
|
15
|
+
*
|
|
16
|
+
* 推进三步:
|
|
17
|
+
* 1. **锚定**:root 语句的输出 part 上,role → hash 集合(读 root 的现存
|
|
18
|
+
* roleTable——它现在是缓存,读它是合法的),再换算成 root 上的序号集合;
|
|
19
|
+
* 2. **逐节点推进**:沿 DAG 每个节点用其 `evolution`(ordinal 键)把序号集合
|
|
20
|
+
* 映射到输出序号(`evo.get(o) ?? [o]`——"未变"的两种上报形态都容纳);
|
|
21
|
+
* 3. **落地**:目标 part 上把最终序号集合换算回 hash 集合。
|
|
22
|
+
*
|
|
23
|
+
* 任一步数据缺失 → 返回结构化失败原因(不静默返回空集——空集会被上层当成
|
|
24
|
+
* "面被删除",那是另一个语义)。
|
|
25
|
+
*/
|
|
26
|
+
import { parseRoleName, formatRoleName } from './role-name.js';
|
|
27
|
+
/**
|
|
28
|
+
* 沿血缘 DAG 回走:`(origin, role)` → 目标 part 上的 hash 集合。
|
|
29
|
+
*
|
|
30
|
+
* @param graph - the lineage graph (registered per execution).
|
|
31
|
+
* @param origin - the origin statement id of the identity.
|
|
32
|
+
* @param roleLine - the role in wire format (as stored in TopoRef).
|
|
33
|
+
* @param targetPart - the part whose snapshot we resolve against.
|
|
34
|
+
* @param deps - external readers (handles / hashes / role-table cache).
|
|
35
|
+
* @returns success with the hash set, or a structured failure.
|
|
36
|
+
*/
|
|
37
|
+
export function resolveViaLineage(graph, origin, roleLine, targetPart, deps) {
|
|
38
|
+
const role = parseRoleName(roleLine);
|
|
39
|
+
if (!role)
|
|
40
|
+
return { reason: 'role-not-in-table', origin, role: roleLine };
|
|
41
|
+
// ── 链收集:origin 节点 →(经消费者边)→ 产出 targetPart 的节点 ──
|
|
42
|
+
// 行走方向是「origin → 谁消费了我的输出 → 谁又消费了它的输出」:
|
|
43
|
+
// 中间 part 的产出方是 origin 自己(stmtOf 指回原点),不能用产出方找下一步。
|
|
44
|
+
const chain = [];
|
|
45
|
+
{
|
|
46
|
+
const start = graph.node(origin);
|
|
47
|
+
if (!start)
|
|
48
|
+
return { reason: 'no-lineage-node', stmt: String(origin) };
|
|
49
|
+
const rootPart = start.outputs[0];
|
|
50
|
+
if (!rootPart)
|
|
51
|
+
return { reason: 'no-root-part', stmt: String(origin) };
|
|
52
|
+
const startEvo = start.evolution && !('modified' in start.evolution) ? start.evolution : undefined;
|
|
53
|
+
chain.push({ stmt: origin, part: rootPart, evolution: startEvo });
|
|
54
|
+
let currentPart = rootPart;
|
|
55
|
+
while (true) {
|
|
56
|
+
if (currentPart === targetPart)
|
|
57
|
+
break;
|
|
58
|
+
const consumer = graph.nodeConsuming(currentPart);
|
|
59
|
+
if (!consumer)
|
|
60
|
+
return { reason: 'no-lineage-node', stmt: String(currentPart) };
|
|
61
|
+
const evo = consumer.evolution && !('modified' in consumer.evolution) ? consumer.evolution : undefined;
|
|
62
|
+
// 承载 part:消费者的输出里选一个(单输出链取第一个;多输出如 split 取含
|
|
63
|
+
// targetPart 的那个,否则取第一个——多输出分支的精确选择由调用方语义决定)。
|
|
64
|
+
const carry = consumer.outputs.includes(targetPart) ? targetPart : consumer.outputs[0];
|
|
65
|
+
chain.push({ stmt: consumer.stmt, part: carry, evolution: evo });
|
|
66
|
+
currentPart = carry;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
// ── 锚定:root part 上 role → hash → ordinal ──
|
|
70
|
+
const root = chain[0];
|
|
71
|
+
const rootHandle = deps.brepOf(root.part);
|
|
72
|
+
if (rootHandle === undefined)
|
|
73
|
+
return { reason: 'no-handle', part: root.part };
|
|
74
|
+
const rootTable = deps.roleTableOf(root.part);
|
|
75
|
+
if (!rootTable)
|
|
76
|
+
return { reason: 'no-role-table', part: root.part };
|
|
77
|
+
// root 的 roleTable 键形:origin(StmtId 串)→ role 线格式 → hashes。
|
|
78
|
+
const rootHashes = rootTable.get(String(origin))?.get(roleLine);
|
|
79
|
+
if (rootHashes === undefined || rootHashes.length === 0) {
|
|
80
|
+
return { reason: 'role-not-in-table', origin, role: roleLine };
|
|
81
|
+
}
|
|
82
|
+
const rootAll = deps.faceHashes(rootHandle);
|
|
83
|
+
let ordinals = [];
|
|
84
|
+
for (const h of rootHashes) {
|
|
85
|
+
const idx = rootAll.indexOf(h);
|
|
86
|
+
if (idx < 0)
|
|
87
|
+
return { reason: 'hash-not-found', part: root.part, count: rootHashes.length };
|
|
88
|
+
ordinals.push(idx + 1); // ordinal 1 起
|
|
89
|
+
}
|
|
90
|
+
// ── 逐节点推进(ordinal 键演化;链上首节点是原点,其演化作用于其输入,
|
|
91
|
+
// 因此推进从链的第二个节点开始)──
|
|
92
|
+
for (let i = 1; i < chain.length; i++) {
|
|
93
|
+
const node = chain[i];
|
|
94
|
+
if (!node.evolution) {
|
|
95
|
+
// identity 类 op(copy/place/transform)登记时 slot 里有 identityEvolution;
|
|
96
|
+
// 演化缺失说明该节点未按 1.10 前置①挂接 —— 显式失败,不默认恒等。
|
|
97
|
+
const g = graph.node(node.stmt);
|
|
98
|
+
return { reason: 'no-evolution', stmt: node.stmt, op: g?.op ?? '?' };
|
|
99
|
+
}
|
|
100
|
+
ordinals = ordinals.flatMap((o) => node.evolution.get(o) ?? [o]);
|
|
101
|
+
}
|
|
102
|
+
// ── 落地:目标 part 上 ordinal → hash ──
|
|
103
|
+
const last = chain[chain.length - 1];
|
|
104
|
+
const targetHandle = deps.brepOf(last.part);
|
|
105
|
+
if (targetHandle === undefined)
|
|
106
|
+
return { reason: 'no-handle', part: last.part };
|
|
107
|
+
const targetAll = deps.faceHashes(targetHandle);
|
|
108
|
+
const hashes = [];
|
|
109
|
+
for (const o of ordinals) {
|
|
110
|
+
const h = targetAll[o - 1];
|
|
111
|
+
if (h === undefined)
|
|
112
|
+
return { reason: 'hash-not-found', part: last.part, count: ordinals.length };
|
|
113
|
+
hashes.push(h);
|
|
114
|
+
}
|
|
115
|
+
return { hashes };
|
|
116
|
+
}
|
|
117
|
+
// formatRoleName 在 API 面保留导出(role 线格式与 TopoRef 序列化的唯一权威),
|
|
118
|
+
// 本模块仅经 parseRoleName 校验线格式合法性。
|
|
119
|
+
export { formatRoleName };
|
|
120
|
+
//# sourceMappingURL=lineage-resolve.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lineage-resolve.js","sourceRoot":"","sources":["../../../src/topology/naming/lineage-resolve.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * lineage-resolve.ts — 回走推进器(1.10 前置②,计划 §4.5)。\n *\n * 「产物上的 roleTable 只是缓存」的重算引擎:缓存 miss 时沿血缘 DAG\n * 从身份原点 `(origin, role)` 走到目标 part,产出该 role 在目标 part 上的\n * 面 hash 集合——与 `slot.roleTable.get(origin)?.get(role)` 语义等价。\n *\n * ## 推进载体:序号(ordinal),不是 hash\n *\n * hash 是内存指针哈希,跨 Shape 实例必变(copy 一个新 handle,hash 全换),\n * **不能**作为跨节点推进的载体。跨节点稳定的是两样东西:\n * - role(因果坐标,本机制的存在理由);\n * - 面枚举序号(`slot.faceEvolution` 记录的正是 ordinal→ordinal[] 的演化,\n * 1.10 前置①已把每个 brep op 的演化挂到血缘节点)。\n *\n * 推进三步:\n * 1. **锚定**:root 语句的输出 part 上,role → hash 集合(读 root 的现存\n * roleTable——它现在是缓存,读它是合法的),再换算成 root 上的序号集合;\n * 2. **逐节点推进**:沿 DAG 每个节点用其 `evolution`(ordinal 键)把序号集合\n * 映射到输出序号(`evo.get(o) ?? [o]`——\"未变\"的两种上报形态都容纳);\n * 3. **落地**:目标 part 上把最终序号集合换算回 hash 集合。\n *\n * 任一步数据缺失 → 返回结构化失败原因(不静默返回空集——空集会被上层当成\n * \"面被删除\",那是另一个语义)。\n */\n\nimport type { PartName, StmtId } from '../../identity'\nimport type { LineageGraph } from './lineage'\nimport { parseRoleName, formatRoleName } from './role-name'\n\n/** 回走所需的外部读口(由调用方注入:runtime 持有 kernel 与 slots)。 */\nexport interface LineageResolveDeps {\n /** part 的 BREP 句柄(回走链上的中间产物经 solidCache 存活)。 */\n brepOf: (part: PartName) => unknown | undefined\n /** 句柄的全部面 hash(枚举序 = ordinal 1 起,与 faceEvolution 同序)。 */\n faceHashes: (handle: unknown) => readonly number[]\n /** 读某 part 的 roleTable 缓存(root 锚定用;返回 origin→role→hash[])。 */\n roleTableOf: (part: PartName) => ReadonlyMap<string, ReadonlyMap<string, readonly number[]>> | undefined\n}\n\n/** 回走失败原因(结构化,不静默)。 */\nexport type LineageResolveFailure =\n | { readonly reason: 'no-lineage-node'; readonly stmt: string }\n | { readonly reason: 'no-root-part'; readonly stmt: string }\n | { readonly reason: 'no-handle'; readonly part: string }\n | { readonly reason: 'no-role-table'; readonly part: string }\n | { readonly reason: 'role-not-in-table'; readonly origin: string; readonly role: string }\n | { readonly reason: 'hash-not-found'; readonly part: string; readonly count: number }\n | { readonly reason: 'no-evolution'; readonly stmt: string; readonly op: string }\n\n/** 回走成功:role 在目标 part 上的面 hash 集合。 */\nexport interface LineageResolveSuccess {\n readonly hashes: readonly number[]\n}\n\n/**\n * 沿血缘 DAG 回走:`(origin, role)` → 目标 part 上的 hash 集合。\n *\n * @param graph - the lineage graph (registered per execution).\n * @param origin - the origin statement id of the identity.\n * @param roleLine - the role in wire format (as stored in TopoRef).\n * @param targetPart - the part whose snapshot we resolve against.\n * @param deps - external readers (handles / hashes / role-table cache).\n * @returns success with the hash set, or a structured failure.\n */\nexport function resolveViaLineage(\n graph: LineageGraph,\n origin: StmtId,\n roleLine: string,\n targetPart: PartName,\n deps: LineageResolveDeps,\n): LineageResolveSuccess | LineageResolveFailure {\n const role = parseRoleName(roleLine)\n if (!role) return { reason: 'role-not-in-table', origin, role: roleLine }\n\n // ── 链收集:origin 节点 →(经消费者边)→ 产出 targetPart 的节点 ──\n // 行走方向是「origin → 谁消费了我的输出 → 谁又消费了它的输出」:\n // 中间 part 的产出方是 origin 自己(stmtOf 指回原点),不能用产出方找下一步。\n const chain: { stmt: StmtId; part: PartName; evolution?: Map<number, number[]> }[] = []\n {\n const start = graph.node(origin)\n if (!start) return { reason: 'no-lineage-node', stmt: String(origin) }\n const rootPart = start.outputs[0]\n if (!rootPart) return { reason: 'no-root-part', stmt: String(origin) }\n const startEvo = start.evolution && !('modified' in start.evolution) ? (start.evolution as Map<number, number[]>) : undefined\n chain.push({ stmt: origin, part: rootPart, evolution: startEvo })\n let currentPart: PartName = rootPart\n while (true) {\n if (currentPart === targetPart) break\n const consumer = graph.nodeConsuming(currentPart)\n if (!consumer) return { reason: 'no-lineage-node', stmt: String(currentPart) }\n const evo = consumer.evolution && !('modified' in consumer.evolution) ? (consumer.evolution as Map<number, number[]>) : undefined\n // 承载 part:消费者的输出里选一个(单输出链取第一个;多输出如 split 取含\n // targetPart 的那个,否则取第一个——多输出分支的精确选择由调用方语义决定)。\n const carry = consumer.outputs.includes(targetPart) ? targetPart : consumer.outputs[0]!\n chain.push({ stmt: consumer.stmt, part: carry, evolution: evo })\n currentPart = carry\n }\n }\n\n // ── 锚定:root part 上 role → hash → ordinal ──\n const root = chain[0]!\n const rootHandle = deps.brepOf(root.part)\n if (rootHandle === undefined) return { reason: 'no-handle', part: root.part }\n const rootTable = deps.roleTableOf(root.part)\n if (!rootTable) return { reason: 'no-role-table', part: root.part }\n // root 的 roleTable 键形:origin(StmtId 串)→ role 线格式 → hashes。\n const rootHashes = rootTable.get(String(origin))?.get(roleLine)\n if (rootHashes === undefined || rootHashes.length === 0) {\n return { reason: 'role-not-in-table', origin, role: roleLine }\n }\n const rootAll = deps.faceHashes(rootHandle)\n let ordinals: number[] = []\n for (const h of rootHashes) {\n const idx = rootAll.indexOf(h)\n if (idx < 0) return { reason: 'hash-not-found', part: root.part, count: rootHashes.length }\n ordinals.push(idx + 1) // ordinal 1 起\n }\n\n // ── 逐节点推进(ordinal 键演化;链上首节点是原点,其演化作用于其输入,\n // 因此推进从链的第二个节点开始)──\n for (let i = 1; i < chain.length; i++) {\n const node = chain[i]!\n if (!node.evolution) {\n // identity 类 op(copy/place/transform)登记时 slot 里有 identityEvolution;\n // 演化缺失说明该节点未按 1.10 前置①挂接 —— 显式失败,不默认恒等。\n const g = graph.node(node.stmt)\n return { reason: 'no-evolution', stmt: node.stmt, op: g?.op ?? '?' }\n }\n ordinals = ordinals.flatMap((o) => node.evolution!.get(o) ?? [o])\n }\n\n // ── 落地:目标 part 上 ordinal → hash ──\n const last = chain[chain.length - 1]!\n const targetHandle = deps.brepOf(last.part)\n if (targetHandle === undefined) return { reason: 'no-handle', part: last.part }\n const targetAll = deps.faceHashes(targetHandle)\n const hashes: number[] = []\n for (const o of ordinals) {\n const h = targetAll[o - 1]\n if (h === undefined) return { reason: 'hash-not-found', part: last.part, count: ordinals.length }\n hashes.push(h)\n }\n return { hashes }\n}\n\n// formatRoleName 在 API 面保留导出(role 线格式与 TopoRef 序列化的唯一权威),\n// 本模块仅经 parseRoleName 校验线格式合法性。\nexport { formatRoleName }\n"]}
|