@faicad/faijs 0.14.1 → 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.
Files changed (338) hide show
  1. package/dist/api/api-namespace.d.ts +7 -0
  2. package/dist/api/api-namespace.d.ts.map +1 -1
  3. package/dist/api/api-namespace.js +23 -22
  4. package/dist/api/api-namespace.js.map +1 -1
  5. package/dist/api/boolean.d.ts.map +1 -1
  6. package/dist/api/boolean.js +26 -8
  7. package/dist/api/boolean.js.map +1 -1
  8. package/dist/api/chamfer.d.ts.map +1 -1
  9. package/dist/api/chamfer.js +4 -1
  10. package/dist/api/chamfer.js.map +1 -1
  11. package/dist/api/generated/cad/script-face.d.ts +1 -1
  12. package/dist/api/generated/cad/script-face.d.ts.map +1 -1
  13. package/dist/api/generated/cad/script-face.js +1 -2
  14. package/dist/api/generated/cad/script-face.js.map +1 -1
  15. package/dist/api/generated/operations.js +16 -16
  16. package/dist/api/generated/operations.js.map +1 -1
  17. package/dist/api/generated/script-face-manifest.d.ts.map +1 -1
  18. package/dist/api/generated/script-face-manifest.js +0 -1
  19. package/dist/api/generated/script-face-manifest.js.map +1 -1
  20. package/dist/api/generated/script-face.d.ts +1 -4
  21. package/dist/api/generated/script-face.d.ts.map +1 -1
  22. package/dist/api/generated/script-face.js +2 -3
  23. package/dist/api/generated/script-face.js.map +1 -1
  24. package/dist/api/generated/sketching.js +1 -1
  25. package/dist/api/generated/sketching.js.map +1 -1
  26. package/dist/api/generated/topology.d.ts +0 -8
  27. package/dist/api/generated/topology.d.ts.map +1 -1
  28. package/dist/api/generated/topology.js +19 -26
  29. package/dist/api/generated/topology.js.map +1 -1
  30. package/dist/api/index.d.ts +1 -10
  31. package/dist/api/index.d.ts.map +1 -1
  32. package/dist/api/index.js +10 -18
  33. package/dist/api/index.js.map +1 -1
  34. package/dist/api/internal/compat-projection.d.ts +3 -1
  35. package/dist/api/internal/compat-projection.d.ts.map +1 -1
  36. package/dist/api/internal/compat-projection.js +8 -5
  37. package/dist/api/internal/compat-projection.js.map +1 -1
  38. package/dist/api/internal/replica-role-table.d.ts +36 -0
  39. package/dist/api/internal/replica-role-table.d.ts.map +1 -0
  40. package/dist/api/internal/replica-role-table.js +73 -0
  41. package/dist/api/internal/replica-role-table.js.map +1 -0
  42. package/dist/api/internal/result-unwrap.d.ts +3 -1
  43. package/dist/api/internal/result-unwrap.d.ts.map +1 -1
  44. package/dist/api/internal/result-unwrap.js +2 -2
  45. package/dist/api/internal/result-unwrap.js.map +1 -1
  46. package/dist/api/occt-kernel-bridge.d.ts +105 -27
  47. package/dist/api/occt-kernel-bridge.d.ts.map +1 -1
  48. package/dist/api/occt-kernel-bridge.js +255 -41
  49. package/dist/api/occt-kernel-bridge.js.map +1 -1
  50. package/dist/api/pattern.d.ts.map +1 -1
  51. package/dist/api/pattern.js +25 -61
  52. package/dist/api/pattern.js.map +1 -1
  53. package/dist/api/replicate.d.ts +145 -0
  54. package/dist/api/replicate.d.ts.map +1 -0
  55. package/dist/api/replicate.js +351 -0
  56. package/dist/api/replicate.js.map +1 -0
  57. package/dist/api/revolve.d.ts +36 -0
  58. package/dist/api/revolve.d.ts.map +1 -0
  59. package/dist/api/revolve.js +165 -0
  60. package/dist/api/revolve.js.map +1 -0
  61. package/dist/api/surface/arg-spec.d.ts +8 -0
  62. package/dist/api/surface/arg-spec.d.ts.map +1 -1
  63. package/dist/api/surface/arg-spec.js +37 -36
  64. package/dist/api/surface/arg-spec.js.map +1 -1
  65. package/dist/api/surface/projection-overrides.d.ts.map +1 -1
  66. package/dist/api/surface/projection-overrides.js +6 -0
  67. package/dist/api/surface/projection-overrides.js.map +1 -1
  68. package/dist/boolean/deriveNormals.d.ts +5 -4
  69. package/dist/boolean/deriveNormals.d.ts.map +1 -1
  70. package/dist/boolean/deriveNormals.js +24 -7
  71. package/dist/boolean/deriveNormals.js.map +1 -1
  72. package/dist/brep/engine/adapters/brep-mock.d.ts.map +1 -1
  73. package/dist/brep/engine/adapters/brep-mock.js +58 -0
  74. package/dist/brep/engine/adapters/brep-mock.js.map +1 -1
  75. package/dist/brep/engine/adapters/brepkit.d.ts.map +1 -1
  76. package/dist/brep/engine/adapters/brepkit.js +39 -1
  77. package/dist/brep/engine/adapters/brepkit.js.map +1 -1
  78. package/dist/brep/engine/adapters/occt.d.ts +1 -5
  79. package/dist/brep/engine/adapters/occt.d.ts.map +1 -1
  80. package/dist/brep/engine/adapters/occt.js +232 -18
  81. package/dist/brep/engine/adapters/occt.js.map +1 -1
  82. package/dist/brep/engine/primitives.d.ts +79 -0
  83. package/dist/brep/engine/primitives.d.ts.map +1 -1
  84. package/dist/brep/engine/primitives.js.map +1 -1
  85. package/dist/brep/engine/types.d.ts +18 -1
  86. package/dist/brep/engine/types.d.ts.map +1 -1
  87. package/dist/brep/engine/types.js.map +1 -1
  88. package/dist/brepkit-kernel/brepkitKernel.d.ts.map +1 -1
  89. package/dist/brepkit-kernel/brepkitKernel.js +81 -11
  90. package/dist/brepkit-kernel/brepkitKernel.js.map +1 -1
  91. package/dist/browser.d.ts +6 -28
  92. package/dist/browser.d.ts.map +1 -1
  93. package/dist/browser.js +6 -17
  94. package/dist/browser.js.map +1 -1
  95. package/dist/cad-runtime/admit-compat-lib.d.ts +13 -18
  96. package/dist/cad-runtime/admit-compat-lib.d.ts.map +1 -1
  97. package/dist/cad-runtime/admit-compat-lib.js +25 -18
  98. package/dist/cad-runtime/admit-compat-lib.js.map +1 -1
  99. package/dist/cad-runtime/backend-dispatch.d.ts +4 -2
  100. package/dist/cad-runtime/backend-dispatch.d.ts.map +1 -1
  101. package/dist/cad-runtime/backend-dispatch.js +2 -0
  102. package/dist/cad-runtime/backend-dispatch.js.map +1 -1
  103. package/dist/cad-runtime/browser-lib-loader.d.ts +4 -6
  104. package/dist/cad-runtime/browser-lib-loader.d.ts.map +1 -1
  105. package/dist/cad-runtime/browser-lib-loader.js +4 -9
  106. package/dist/cad-runtime/browser-lib-loader.js.map +1 -1
  107. package/dist/cad-runtime/ports.d.ts +0 -7
  108. package/dist/cad-runtime/ports.d.ts.map +1 -1
  109. package/dist/cad-runtime/ports.js.map +1 -1
  110. package/dist/cad-runtime/runtime.d.ts +1 -3
  111. package/dist/cad-runtime/runtime.d.ts.map +1 -1
  112. package/dist/cad-runtime/runtime.js +13 -18
  113. package/dist/cad-runtime/runtime.js.map +1 -1
  114. package/dist/env-agnostic.d.ts +38 -0
  115. package/dist/env-agnostic.d.ts.map +1 -0
  116. package/dist/env-agnostic.js +29 -0
  117. package/dist/env-agnostic.js.map +1 -0
  118. package/dist/fcstd/codegen.d.ts.map +1 -1
  119. package/dist/fcstd/codegen.js +8 -1
  120. package/dist/fcstd/codegen.js.map +1 -1
  121. package/dist/fcstd/expressions.d.ts +24 -0
  122. package/dist/fcstd/expressions.d.ts.map +1 -1
  123. package/dist/fcstd/expressions.js +91 -0
  124. package/dist/fcstd/expressions.js.map +1 -1
  125. package/dist/fcstd/feature-translate.d.ts.map +1 -1
  126. package/dist/fcstd/feature-translate.js +16 -2
  127. package/dist/fcstd/feature-translate.js.map +1 -1
  128. package/dist/fcstd/structural-types.d.ts.map +1 -1
  129. package/dist/fcstd/structural-types.js +5 -0
  130. package/dist/fcstd/structural-types.js.map +1 -1
  131. package/dist/index.d.ts +7 -24
  132. package/dist/index.d.ts.map +1 -1
  133. package/dist/index.js +10 -16
  134. package/dist/index.js.map +1 -1
  135. package/dist/lang/determinism-scanner.d.ts +9 -0
  136. package/dist/lang/determinism-scanner.d.ts.map +1 -1
  137. package/dist/lang/determinism-scanner.js +7 -1
  138. package/dist/lang/determinism-scanner.js.map +1 -1
  139. package/dist/lang/symbol-table.d.ts +31 -0
  140. package/dist/lang/symbol-table.d.ts.map +1 -1
  141. package/dist/lang/symbol-table.generated.d.ts +6 -16
  142. package/dist/lang/symbol-table.generated.d.ts.map +1 -1
  143. package/dist/lang/symbol-table.generated.js +6 -16
  144. package/dist/lang/symbol-table.generated.js.map +1 -1
  145. package/dist/lang/symbol-table.js +50 -1
  146. package/dist/lang/symbol-table.js.map +1 -1
  147. package/dist/mesh/creased-normals.d.ts +50 -0
  148. package/dist/mesh/creased-normals.d.ts.map +1 -0
  149. package/dist/mesh/creased-normals.js +114 -0
  150. package/dist/mesh/creased-normals.js.map +1 -0
  151. package/dist/mesh/decoration-provider.d.ts +53 -0
  152. package/dist/mesh/decoration-provider.d.ts.map +1 -0
  153. package/dist/mesh/decoration-provider.js +21 -0
  154. package/dist/mesh/decoration-provider.js.map +1 -0
  155. package/dist/mesh/engrave.d.ts +4 -0
  156. package/dist/mesh/engrave.d.ts.map +1 -1
  157. package/dist/mesh/engrave.js +22 -31
  158. package/dist/mesh/engrave.js.map +1 -1
  159. package/dist/mesh/index.d.ts +5 -14
  160. package/dist/mesh/index.d.ts.map +1 -1
  161. package/dist/mesh/index.js +7 -19
  162. package/dist/mesh/index.js.map +1 -1
  163. package/dist/mesh/io.d.ts +2 -1
  164. package/dist/mesh/io.d.ts.map +1 -1
  165. package/dist/mesh/io.js +5 -7
  166. package/dist/mesh/io.js.map +1 -1
  167. package/dist/mesh/primitives.d.ts +5 -18
  168. package/dist/mesh/primitives.d.ts.map +1 -1
  169. package/dist/mesh/primitives.js +4 -48
  170. package/dist/mesh/primitives.js.map +1 -1
  171. package/dist/mesh/stl-loader.d.ts +23 -0
  172. package/dist/mesh/stl-loader.d.ts.map +1 -0
  173. package/dist/mesh/stl-loader.js +139 -0
  174. package/dist/mesh/stl-loader.js.map +1 -0
  175. package/dist/module-resolver/parse-imports.d.ts +37 -0
  176. package/dist/module-resolver/parse-imports.d.ts.map +1 -0
  177. package/dist/module-resolver/parse-imports.js +39 -0
  178. package/dist/module-resolver/parse-imports.js.map +1 -0
  179. package/dist/module-resolver/resolver.d.ts +1 -1
  180. package/dist/module-resolver/resolver.js +2 -2
  181. package/dist/module-resolver/resolver.js.map +1 -1
  182. package/dist/node-host/cli.d.ts.map +1 -1
  183. package/dist/node-host/cli.js +1 -22
  184. package/dist/node-host/cli.js.map +1 -1
  185. package/dist/primitives/text/cjk-font.d.ts +42 -0
  186. package/dist/primitives/text/cjk-font.d.ts.map +1 -0
  187. package/dist/primitives/text/cjk-font.js +86 -0
  188. package/dist/primitives/text/cjk-font.js.map +1 -0
  189. package/dist/sdk.d.ts +2 -2
  190. package/dist/sdk.js +2 -2
  191. package/dist/sdk.js.map +1 -1
  192. package/dist/symbol-table.d.ts +15 -0
  193. package/dist/symbol-table.d.ts.map +1 -0
  194. package/dist/symbol-table.js +14 -0
  195. package/dist/symbol-table.js.map +1 -0
  196. package/dist/topology/naming/lineage-resolve.js +1 -1
  197. package/dist/topology/naming/lineage-resolve.js.map +1 -1
  198. package/dist/vendored/brepjs/kernel/index.d.ts +5 -0
  199. package/dist/vendored/brepjs/kernel/index.d.ts.map +1 -1
  200. package/dist/vendored/brepjs/kernel/index.js +11 -0
  201. package/dist/vendored/brepjs/kernel/index.js.map +1 -1
  202. package/dist/weapp.d.ts +3 -3
  203. package/dist/weapp.d.ts.map +1 -1
  204. package/dist/weapp.js +6 -3
  205. package/dist/weapp.js.map +1 -1
  206. package/package.json +16 -14
  207. package/dist/api/compat/index.d.ts +0 -173
  208. package/dist/api/compat/index.d.ts.map +0 -1
  209. package/dist/api/compat/index.js +0 -222
  210. package/dist/api/compat/index.js.map +0 -1
  211. package/dist/api/compound.d.ts +0 -110
  212. package/dist/api/compound.d.ts.map +0 -1
  213. package/dist/api/compound.js +0 -164
  214. package/dist/api/compound.js.map +0 -1
  215. package/dist/api/copy.d.ts +0 -40
  216. package/dist/api/copy.d.ts.map +0 -1
  217. package/dist/api/copy.js +0 -83
  218. package/dist/api/copy.js.map +0 -1
  219. package/dist/api/fai_drill.d.ts +0 -46
  220. package/dist/api/fai_drill.d.ts.map +0 -1
  221. package/dist/api/fai_drill.js +0 -243
  222. package/dist/api/fai_drill.js.map +0 -1
  223. package/dist/api/fai_extrude.d.ts +0 -36
  224. package/dist/api/fai_extrude.d.ts.map +0 -1
  225. package/dist/api/fai_extrude.js +0 -79
  226. package/dist/api/fai_extrude.js.map +0 -1
  227. package/dist/api/fai_split.d.ts +0 -46
  228. package/dist/api/fai_split.d.ts.map +0 -1
  229. package/dist/api/fai_split.js +0 -254
  230. package/dist/api/fai_split.js.map +0 -1
  231. package/dist/api/load.d.ts +0 -41
  232. package/dist/api/load.d.ts.map +0 -1
  233. package/dist/api/load.js +0 -84
  234. package/dist/api/load.js.map +0 -1
  235. package/dist/api/svgExtrude.d.ts +0 -32
  236. package/dist/api/svgExtrude.d.ts.map +0 -1
  237. package/dist/api/svgExtrude.js +0 -74
  238. package/dist/api/svgExtrude.js.map +0 -1
  239. package/dist/api/text.d.ts +0 -34
  240. package/dist/api/text.d.ts.map +0 -1
  241. package/dist/api/text.js +0 -101
  242. package/dist/api/text.js.map +0 -1
  243. package/dist/brep/text/fontTestHelper.d.ts +0 -30
  244. package/dist/brep/text/fontTestHelper.d.ts.map +0 -1
  245. package/dist/brep/text/fontTestHelper.js +0 -57
  246. package/dist/brep/text/fontTestHelper.js.map +0 -1
  247. package/dist/cad-runtime/module-executor.d.ts +0 -271
  248. package/dist/cad-runtime/module-executor.d.ts.map +0 -1
  249. package/dist/cad-runtime/module-executor.js +0 -630
  250. package/dist/cad-runtime/module-executor.js.map +0 -1
  251. package/dist/cad-runtime/terminal-dag.d.ts +0 -65
  252. package/dist/cad-runtime/terminal-dag.d.ts.map +0 -1
  253. package/dist/cad-runtime/terminal-dag.js +0 -167
  254. package/dist/cad-runtime/terminal-dag.js.map +0 -1
  255. package/dist/faqts/browser.d.ts +0 -16
  256. package/dist/faqts/browser.d.ts.map +0 -1
  257. package/dist/faqts/browser.js +0 -13
  258. package/dist/faqts/browser.js.map +0 -1
  259. package/dist/faqts/exec-blob.d.ts +0 -14
  260. package/dist/faqts/exec-blob.d.ts.map +0 -1
  261. package/dist/faqts/exec-blob.js +0 -22
  262. package/dist/faqts/exec-blob.js.map +0 -1
  263. package/dist/faqts/exec-node.d.ts +0 -15
  264. package/dist/faqts/exec-node.d.ts.map +0 -1
  265. package/dist/faqts/exec-node.js +0 -29
  266. package/dist/faqts/exec-node.js.map +0 -1
  267. package/dist/faqts/imports.d.ts +0 -74
  268. package/dist/faqts/imports.d.ts.map +0 -1
  269. package/dist/faqts/imports.js +0 -95
  270. package/dist/faqts/imports.js.map +0 -1
  271. package/dist/faqts/index.d.ts +0 -22
  272. package/dist/faqts/index.d.ts.map +0 -1
  273. package/dist/faqts/index.js +0 -21
  274. package/dist/faqts/index.js.map +0 -1
  275. package/dist/faqts/node.d.ts +0 -23
  276. package/dist/faqts/node.d.ts.map +0 -1
  277. package/dist/faqts/node.js +0 -23
  278. package/dist/faqts/node.js.map +0 -1
  279. package/dist/faqts/run.d.ts +0 -62
  280. package/dist/faqts/run.d.ts.map +0 -1
  281. package/dist/faqts/run.js +0 -62
  282. package/dist/faqts/run.js.map +0 -1
  283. package/dist/faqts/transform.d.ts +0 -43
  284. package/dist/faqts/transform.d.ts.map +0 -1
  285. package/dist/faqts/transform.js +0 -35
  286. package/dist/faqts/transform.js.map +0 -1
  287. package/dist/lang/compile.d.ts +0 -50
  288. package/dist/lang/compile.d.ts.map +0 -1
  289. package/dist/lang/compile.js +0 -368
  290. package/dist/lang/compile.js.map +0 -1
  291. package/dist/lang/keep.d.ts +0 -109
  292. package/dist/lang/keep.d.ts.map +0 -1
  293. package/dist/lang/keep.js +0 -226
  294. package/dist/lang/keep.js.map +0 -1
  295. package/dist/lang/parser.d.ts +0 -91
  296. package/dist/lang/parser.d.ts.map +0 -1
  297. package/dist/lang/parser.js +0 -1594
  298. package/dist/lang/parser.js.map +0 -1
  299. package/dist/mesh/drill-hole/DrillHoleCore.d.ts +0 -90
  300. package/dist/mesh/drill-hole/DrillHoleCore.d.ts.map +0 -1
  301. package/dist/mesh/drill-hole/DrillHoleCore.js +0 -287
  302. package/dist/mesh/drill-hole/DrillHoleCore.js.map +0 -1
  303. package/dist/mesh/drill-hole/drill-types.d.ts +0 -34
  304. package/dist/mesh/drill-hole/drill-types.d.ts.map +0 -1
  305. package/dist/mesh/drill-hole/drill-types.js +0 -7
  306. package/dist/mesh/drill-hole/drill-types.js.map +0 -1
  307. package/dist/mesh/fai_drill.d.ts +0 -21
  308. package/dist/mesh/fai_drill.d.ts.map +0 -1
  309. package/dist/mesh/fai_drill.js +0 -92
  310. package/dist/mesh/fai_drill.js.map +0 -1
  311. package/dist/mesh/fai_extrude.d.ts +0 -24
  312. package/dist/mesh/fai_extrude.d.ts.map +0 -1
  313. package/dist/mesh/fai_extrude.js +0 -42
  314. package/dist/mesh/fai_extrude.js.map +0 -1
  315. package/dist/mesh/fai_split.d.ts +0 -164
  316. package/dist/mesh/fai_split.d.ts.map +0 -1
  317. package/dist/mesh/fai_split.js +0 -269
  318. package/dist/mesh/fai_split.js.map +0 -1
  319. package/dist/primitives/svg-extrude.d.ts +0 -43
  320. package/dist/primitives/svg-extrude.d.ts.map +0 -1
  321. package/dist/primitives/svg-extrude.js +0 -78
  322. package/dist/primitives/svg-extrude.js.map +0 -1
  323. package/dist/primitives/text/cjk.d.ts +0 -61
  324. package/dist/primitives/text/cjk.d.ts.map +0 -1
  325. package/dist/primitives/text/cjk.js +0 -215
  326. package/dist/primitives/text/cjk.js.map +0 -1
  327. package/dist/primitives/text-geometry.d.ts +0 -47
  328. package/dist/primitives/text-geometry.d.ts.map +0 -1
  329. package/dist/primitives/text-geometry.js +0 -127
  330. package/dist/primitives/text-geometry.js.map +0 -1
  331. package/dist/test-helpers.d.ts +0 -31
  332. package/dist/test-helpers.d.ts.map +0 -1
  333. package/dist/test-helpers.js +0 -55
  334. package/dist/test-helpers.js.map +0 -1
  335. package/dist/vendored/brepjs/core/kernelReentrancy.d.ts +0 -41
  336. package/dist/vendored/brepjs/core/kernelReentrancy.d.ts.map +0 -1
  337. package/dist/vendored/brepjs/core/kernelReentrancy.js +0 -68
  338. package/dist/vendored/brepjs/core/kernelReentrancy.js.map +0 -1
@@ -0,0 +1,36 @@
1
+ /**
2
+ * replica-role-table — generalized replica[k] role-table builder (Phase 3 L3).
3
+ *
4
+ * Shared by the handwritten replicate ops (circularPattern / gridPattern /
5
+ * rectangularPattern / mirrorJoin). Every replica is a rigid transform T_k of
6
+ * the input; result faces = ∪ T_k(input faces). For each result face, its
7
+ * centroid is mapped back through T_k⁻¹ into input coordinates and matched to
8
+ * the nearest input-face centroid, recovering the input role, prefixed with
9
+ * the replica label: `replica[k]/<inner>`.
10
+ *
11
+ * Same mechanism as pattern.ts linearPattern (centroid clustering), generalized
12
+ * from a projection along one direction to arbitrary per-replica inverses.
13
+ */
14
+ import type { Shape } from '../../mesh/types.js';
15
+ import type { BrepHandle, BrepVec3 } from '../../brep/engine/types.js';
16
+ import type { BrepEngineApi } from '../../brep/engine/primitives.js';
17
+ import type { RoleTable } from '../../topology/naming/types.js';
18
+ /** One replica: role-table label prefix + inverse of its placement transform. */
19
+ export interface ReplicaTransform {
20
+ /** Label prefix, e.g. 'replica[2]' / 'replica[1_0]'. */
21
+ label: string;
22
+ /** Map a result-face centroid back into the input coordinate frame (T_k⁻¹). */
23
+ inverse: (c: BrepVec3) => BrepVec3;
24
+ }
25
+ /**
26
+ * Build the `replica[*]/<inner>` role table for a fused multi-replica result.
27
+ *
28
+ * @param kernel - the BREP engine api.
29
+ * @param input - the source Shape (its role table provides inner roles).
30
+ * @param resultSolid - the fused result handle.
31
+ * @param replicas - per-replica label + inverse transform.
32
+ * @param outStmt - the output statement id (role-table key).
33
+ * @returns the role table keyed by outStmt.
34
+ */
35
+ export declare function buildReplicaRoleTable(kernel: BrepEngineApi, input: Shape, resultSolid: BrepHandle, replicas: ReplicaTransform[], outStmt: string): RoleTable;
36
+ //# sourceMappingURL=replica-role-table.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replica-role-table.d.ts","sourceRoot":"","sources":["../../../src/api/internal/replica-role-table.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AACjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAA;AAI5D,iFAAiF;AACjF,MAAM,WAAW,gBAAgB;IAC/B,wDAAwD;IACxD,KAAK,EAAE,MAAM,CAAA;IACb,+EAA+E;IAC/E,OAAO,EAAE,CAAC,CAAC,EAAE,QAAQ,KAAK,QAAQ,CAAA;CACnC;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,UAAU,EACvB,QAAQ,EAAE,gBAAgB,EAAE,EAC5B,OAAO,EAAE,MAAM,GACd,SAAS,CA8CX"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * replica-role-table — generalized replica[k] role-table builder (Phase 3 L3).
3
+ *
4
+ * Shared by the handwritten replicate ops (circularPattern / gridPattern /
5
+ * rectangularPattern / mirrorJoin). Every replica is a rigid transform T_k of
6
+ * the input; result faces = ∪ T_k(input faces). For each result face, its
7
+ * centroid is mapped back through T_k⁻¹ into input coordinates and matched to
8
+ * the nearest input-face centroid, recovering the input role, prefixed with
9
+ * the replica label: `replica[k]/<inner>`.
10
+ *
11
+ * Same mechanism as pattern.ts linearPattern (centroid clustering), generalized
12
+ * from a projection along one direction to arbitrary per-replica inverses.
13
+ */
14
+ import { brepOf, inputRoleTable } from '../../shape.js';
15
+ import { getFaceHashes } from '../../brep/face-evolution.js';
16
+ /**
17
+ * Build the `replica[*]/<inner>` role table for a fused multi-replica result.
18
+ *
19
+ * @param kernel - the BREP engine api.
20
+ * @param input - the source Shape (its role table provides inner roles).
21
+ * @param resultSolid - the fused result handle.
22
+ * @param replicas - per-replica label + inverse transform.
23
+ * @param outStmt - the output statement id (role-table key).
24
+ * @returns the role table keyed by outStmt.
25
+ */
26
+ export function buildReplicaRoleTable(kernel, input, resultSolid, replicas, outStmt) {
27
+ const inputSolid = brepOf(input);
28
+ const inputTable = inputRoleTable(input);
29
+ // input face hash → role (for inner-role recovery)
30
+ const inputHashes = getFaceHashes(kernel, inputSolid);
31
+ const inputHashToRole = new Map();
32
+ if (inputTable) {
33
+ for (const roles of inputTable.values()) {
34
+ for (const [role, hashes] of roles)
35
+ for (const h of hashes)
36
+ inputHashToRole.set(h, role);
37
+ }
38
+ }
39
+ const inputFaces = kernel.getSubShapes(inputSolid, 'face');
40
+ const inputCentroids = inputFaces.map((f) => kernel.getSurfaceCenterOfMass(f));
41
+ const resultHashes = getFaceHashes(kernel, resultSolid);
42
+ const resultFaces = kernel.getSubShapes(resultSolid, 'face');
43
+ const resultCentroids = resultFaces.map((f) => kernel.getSurfaceCenterOfMass(f));
44
+ const roleTable = new Map();
45
+ const inner = new Map();
46
+ for (let i = 0; i < resultHashes.length; i++) {
47
+ const c = resultCentroids[i];
48
+ // Try every replica inverse; the one mapping closest to an input face
49
+ // centroid wins (identifies both the replica k and the inner role).
50
+ let bestLabel = replicas[0].label;
51
+ let bestRole;
52
+ let bestDist = Infinity;
53
+ for (const r of replicas) {
54
+ const p = r.inverse(c);
55
+ for (let j = 0; j < inputCentroids.length; j++) {
56
+ const ic = inputCentroids[j];
57
+ const d = (p.x - ic.x) ** 2 + (p.y - ic.y) ** 2 + (p.z - ic.z) ** 2;
58
+ if (d < bestDist) {
59
+ bestDist = d;
60
+ bestLabel = r.label;
61
+ bestRole = inputHashToRole.get(inputHashes[j]);
62
+ }
63
+ }
64
+ }
65
+ const role = `${bestLabel}/${bestRole ?? 'face'}`;
66
+ if (!inner.has(role))
67
+ inner.set(role, []);
68
+ inner.get(role).push(resultHashes[i]);
69
+ }
70
+ roleTable.set(outStmt, inner);
71
+ return roleTable;
72
+ }
73
+ //# sourceMappingURL=replica-role-table.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replica-role-table.js","sourceRoot":"","sources":["../../../src/api/internal/replica-role-table.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * replica-role-table — generalized replica[k] role-table builder (Phase 3 L3).\n *\n * Shared by the handwritten replicate ops (circularPattern / gridPattern /\n * rectangularPattern / mirrorJoin). Every replica is a rigid transform T_k of\n * the input; result faces = ∪ T_k(input faces). For each result face, its\n * centroid is mapped back through T_k⁻¹ into input coordinates and matched to\n * the nearest input-face centroid, recovering the input role, prefixed with\n * the replica label: `replica[k]/<inner>`.\n *\n * Same mechanism as pattern.ts linearPattern (centroid clustering), generalized\n * from a projection along one direction to arbitrary per-replica inverses.\n */\n\nimport type { Shape } from '../../mesh/types'\nimport type { BrepHandle, BrepVec3 } from '../../brep/engine/types'\nimport type { BrepEngineApi } from '../../brep/engine/primitives'\nimport type { RoleTable } from '../../topology/naming/types'\nimport { brepOf, inputRoleTable } from '../../shape'\nimport { getFaceHashes } from '../../brep/face-evolution'\n\n/** One replica: role-table label prefix + inverse of its placement transform. */\nexport interface ReplicaTransform {\n /** Label prefix, e.g. 'replica[2]' / 'replica[1_0]'. */\n label: string\n /** Map a result-face centroid back into the input coordinate frame (T_k⁻¹). */\n inverse: (c: BrepVec3) => BrepVec3\n}\n\n/**\n * Build the `replica[*]/<inner>` role table for a fused multi-replica result.\n *\n * @param kernel - the BREP engine api.\n * @param input - the source Shape (its role table provides inner roles).\n * @param resultSolid - the fused result handle.\n * @param replicas - per-replica label + inverse transform.\n * @param outStmt - the output statement id (role-table key).\n * @returns the role table keyed by outStmt.\n */\nexport function buildReplicaRoleTable(\n kernel: BrepEngineApi,\n input: Shape,\n resultSolid: BrepHandle,\n replicas: ReplicaTransform[],\n outStmt: string,\n): RoleTable {\n const inputSolid = brepOf(input) as BrepHandle\n const inputTable = inputRoleTable(input) as RoleTable | undefined\n\n // input face hash → role (for inner-role recovery)\n const inputHashes = getFaceHashes(kernel, inputSolid)\n const inputHashToRole = new Map<number, string>()\n if (inputTable) {\n for (const roles of inputTable.values()) {\n for (const [role, hashes] of roles) for (const h of hashes) inputHashToRole.set(h, role)\n }\n }\n const inputFaces = kernel.getSubShapes(inputSolid, 'face')\n const inputCentroids = inputFaces.map((f) => kernel.getSurfaceCenterOfMass(f))\n\n const resultHashes = getFaceHashes(kernel, resultSolid)\n const resultFaces = kernel.getSubShapes(resultSolid, 'face')\n const resultCentroids = resultFaces.map((f) => kernel.getSurfaceCenterOfMass(f))\n\n const roleTable = new Map<string, Map<string, number[]>>()\n const inner = new Map<string, number[]>()\n for (let i = 0; i < resultHashes.length; i++) {\n const c = resultCentroids[i]!\n // Try every replica inverse; the one mapping closest to an input face\n // centroid wins (identifies both the replica k and the inner role).\n let bestLabel = replicas[0]!.label\n let bestRole: string | undefined\n let bestDist = Infinity\n for (const r of replicas) {\n const p = r.inverse(c)\n for (let j = 0; j < inputCentroids.length; j++) {\n const ic = inputCentroids[j]!\n const d = (p.x - ic.x) ** 2 + (p.y - ic.y) ** 2 + (p.z - ic.z) ** 2\n if (d < bestDist) {\n bestDist = d\n bestLabel = r.label\n bestRole = inputHashToRole.get(inputHashes[j]!)\n }\n }\n }\n const role = `${bestLabel}/${bestRole ?? 'face'}`\n if (!inner.has(role)) inner.set(role, [])\n inner.get(role)!.push(resultHashes[i]!)\n }\n roleTable.set(outStmt as never, inner)\n return roleTable as unknown as RoleTable\n}\n"]}
@@ -47,7 +47,9 @@ export declare class OpError extends Error {
47
47
  readonly op: string;
48
48
  /** The `BrepError.code`, or `'E_OP_FAILED'` when the library sent none. */
49
49
  readonly code: string;
50
- constructor(op: string, code: string, message: string);
50
+ constructor(op: string, code: string, message: string, options?: {
51
+ cause?: unknown;
52
+ });
51
53
  }
52
54
  /**
53
55
  * Structural test for a Result value.
@@ -1 +1 @@
1
- {"version":3,"file":"result-unwrap.d.ts","sourceRoot":"","sources":["../../../src/api/internal/result-unwrap.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,oGAAoG;AACpG,MAAM,MAAM,UAAU,GAClB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAC5B;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAA;AAE7D;;;;;;;;;;;;;;GAcG;AACH,qBAAa,OAAQ,SAAQ,KAAK;IAChC,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,2EAA2E;IAC3E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;gBACT,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAMtD;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,UAAU,CAExD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,KAAK,CAO3D;AAED;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAO/D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAU9D"}
1
+ {"version":3,"file":"result-unwrap.d.ts","sourceRoot":"","sources":["../../../src/api/internal/result-unwrap.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,oGAAoG;AACpG,MAAM,MAAM,UAAU,GAClB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAC5B;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAA;AAE7D;;;;;;;;;;;;;;GAcG;AACH,qBAAa,OAAQ,SAAQ,KAAK;IAChC,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,2EAA2E;IAC3E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;gBACT,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;CAMrF;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,UAAU,CAExD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,KAAK,CAO3D;AAED;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAO/D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAU9D"}
@@ -36,8 +36,8 @@ export class OpError extends Error {
36
36
  op;
37
37
  /** The `BrepError.code`, or `'E_OP_FAILED'` when the library sent none. */
38
38
  code;
39
- constructor(op, code, message) {
40
- super(message);
39
+ constructor(op, code, message, options) {
40
+ super(message, options);
41
41
  this.name = 'OpError';
42
42
  this.op = op;
43
43
  this.code = code;
@@ -1 +1 @@
1
- {"version":3,"file":"result-unwrap.js","sourceRoot":"","sources":["../../../src/api/internal/result-unwrap.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAOH;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAO,OAAQ,SAAQ,KAAK;IAChC,6CAA6C;IACpC,EAAE,CAAQ;IACnB,2EAA2E;IAClE,IAAI,CAAQ;IACrB,YAAY,EAAU,EAAE,IAAY,EAAE,OAAe;QACnD,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,SAAS,CAAA;QACrB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAA;QACZ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IAClB,CAAC;CACF;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,YAAY,CAAC,CAAU;IACrC,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,OAAQ,CAAsB,CAAC,EAAE,KAAK,SAAS,CAAA;AAC/F,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,SAAS,CAAC,IAAY,EAAE,GAAY;IAClD,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;QACzB,MAAM,IAAI,GAAI,GAA0B,CAAC,IAAI,CAAA;QAC7C,MAAM,MAAM,GAAG,cAAc,IAAI,KAAK,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAA;QACnF,OAAO,IAAI,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,CAAA;IACxC,CAAC;IACD,OAAO,IAAI,KAAK,CAAC,cAAc,IAAI,kBAAkB,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;AACrE,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,GAAY;IACpD,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;QACzB,MAAM,IAAI,GAAI,GAA0B,CAAC,IAAI,CAAA;QAC7C,MAAM,OAAO,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAA;QAC/D,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,cAAc,IAAI,KAAK,OAAO,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAA;IACrF,CAAC;IACD,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,aAAa,EAAE,cAAc,IAAI,kBAAkB,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;AAC5F,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,YAAY,CAAC,CAAU,EAAE,IAAY;IACnD,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;QAAE,OAAO,CAAC,CAAA;IAC9B,IAAI,CAAC,CAAC,EAAE;QAAE,OAAO,CAAC,CAAC,KAAK,CAAA;IACxB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAwC,CAAA;IAChE,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,aAAa,CAAA;IACpC,MAAM,IAAI,OAAO,CACf,IAAI,EACJ,IAAI,EACJ,yBAAyB,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,OAAO,IAAI,kBAAkB,EAAE,CAC7E,CAAA;AACH,CAAC","sourcesContent":["/**\n * result-unwrap — the single Result→throw bridge shared by every faijs\n * statement boundary (D1).\n *\n * Design: docs/plans/2026-09-03-faijs-brepjs-compat-api.md §5.1 / §5.2\n *\n * Three-layer error semantics (§5.1):\n * library internals / TS compat face → `Result<T>` native (BrepError)\n * statement boundary → `err` unwrapped into a throw\n * faijs-specific op impls → may return `Result`; same unwrap\n *\n * This module is a **leaf**: it imports nothing, so both the SDK layer\n * (`src/define-op.ts`, whose `dist/sdk.js` must stay free of heavy static\n * imports) and the compat bridge (`api/internal/compat-op.ts`) can share one\n * implementation. Having two copies would let the two boundaries drift.\n *\n * @module\n */\n\n/** Structural shape of the vendored `Ok`/`Err` records (`vendored/brepjs/core/result.ts:12-21`). */\nexport type ResultLike =\n | { ok: true; value: unknown }\n | { ok: false; error: { code?: string; message?: string } }\n\n/**\n * Statement-boundary op failure (D1 unwrap / compat adoption).\n *\n * An `err` Result unwrapped at the statement boundary used to be thrown as a\n * plain `Error`, which `CadRuntime.runWithFailureHandling` (recognizing only\n * `BrepUnsupportedError`/`MeshUnsupportedError` by `instanceof`) re-threw out\n * of `execute()` instead of converting it into `ExecutionResult.failedAt`.\n * This class is the engine-recognizable carrier: defined in this leaf module\n * (zero imports) so both `define-op` and the compat bridge can throw it while\n * CadRuntime can catch it without importing anything heavier.\n *\n * A thrown `Error` that is *not* an `OpError` keeps its old meaning: an\n * unexpected implementation bug that must propagate (Result 体系 — expected\n * failures are `err` values, exceptions are bugs).\n */\nexport class OpError extends Error {\n /** The op name that produced the failure. */\n readonly op: string\n /** The `BrepError.code`, or `'E_OP_FAILED'` when the library sent none. */\n readonly code: string\n constructor(op: string, code: string, message: string) {\n super(message)\n this.name = 'OpError'\n this.op = op\n this.code = code\n }\n}\n\n/**\n * Structural test for a Result value.\n *\n * Only the `ok: boolean` discriminant is checked — the vendored `Result` is a\n * plain record, so no `instanceof` and no import is needed (which is what keeps\n * this module a leaf).\n *\n * @param v - the candidate value.\n * @returns true when `v` looks like an Ok/Err record.\n */\nexport function isResultLike(v: unknown): v is ResultLike {\n return typeof v === 'object' && v !== null && typeof (v as { ok?: unknown }).ok === 'boolean'\n}\n\n/**\n * Render an error thrown by (or returned from) an implementation as a\n * statement-level failure.\n *\n * The op name and the `BrepError.code` (when present) are always kept so the\n * engine's statement-level catch reports the same shape the plan's trace A/B\n * describe (`[faijs/brepjs-compat] <op>: <CODE>: <message>`).\n *\n * @param name - the op name.\n * @param err - the thrown value (Error or anything else).\n * @returns an Error carrying the op context.\n */\nexport function toOpError(name: string, err: unknown): Error {\n if (err instanceof Error) {\n const code = (err as { code?: unknown }).code\n const prefix = `[faijs/op] ${name}: ${typeof code === 'string' ? code + ': ' : ''}`\n return new Error(prefix + err.message)\n }\n return new Error(`[faijs/op] ${name}: E_OP_FAILED: ${String(err)}`)\n}\n\n/**\n * Wrap an implementation-thrown exception as an {@link OpError} (statement-\n * level failure carrier). Used by `define-op.ts` `runImpl` so that\n * `CadRuntime.directFailedAtOrThrow` recognizes the error as an op failure\n * (not a bug to re-throw).\n *\n * @param name - the op name.\n * @param err - the thrown value.\n * @returns an OpError carrying the op context and code.\n */\nexport function toOpFailure(name: string, err: unknown): OpError {\n if (err instanceof Error) {\n const code = (err as { code?: unknown }).code\n const codeStr = typeof code === 'string' ? code : 'E_OP_FAILED'\n return new OpError(name, codeStr, `[faijs/op] ${name}: ${codeStr}: ${err.message}`)\n }\n return new OpError(name, 'E_OP_FAILED', `[faijs/op] ${name}: E_OP_FAILED: ${String(err)}`)\n}\n\n/**\n * Statement-boundary unwrap (D1).\n *\n * - a non-Result product → returned untouched (plain-data ops, mesh products);\n * - `ok` → `.value`;\n * - `err` → throws an {@link OpError} carrying the op name and BrepError code\n * (the engine converts `OpError` into `ExecutionResult.failedAt`).\n *\n * @param r - the implementation product.\n * @param name - the op name (error messages).\n * @returns the unwrapped value, or the input when it was not a Result.\n * @throws an {@link OpError} when `r` is an `Err`.\n */\nexport function unwrapResult(r: unknown, name: string): unknown {\n if (!isResultLike(r)) return r\n if (r.ok) return r.value\n const e = (r.error ?? {}) as { code?: string; message?: string }\n const code = e.code ?? 'E_OP_FAILED'\n throw new OpError(\n name,\n code,\n `[faijs/brepjs-compat] ${name}: ${code}: ${e.message ?? 'operation failed'}`,\n )\n}\n"]}
1
+ {"version":3,"file":"result-unwrap.js","sourceRoot":"","sources":["../../../src/api/internal/result-unwrap.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAOH;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAO,OAAQ,SAAQ,KAAK;IAChC,6CAA6C;IACpC,EAAE,CAAQ;IACnB,2EAA2E;IAClE,IAAI,CAAQ;IACrB,YAAY,EAAU,EAAE,IAAY,EAAE,OAAe,EAAE,OAA6B;QAClF,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QACvB,IAAI,CAAC,IAAI,GAAG,SAAS,CAAA;QACrB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAA;QACZ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IAClB,CAAC;CACF;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,YAAY,CAAC,CAAU;IACrC,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,OAAQ,CAAsB,CAAC,EAAE,KAAK,SAAS,CAAA;AAC/F,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,SAAS,CAAC,IAAY,EAAE,GAAY;IAClD,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;QACzB,MAAM,IAAI,GAAI,GAA0B,CAAC,IAAI,CAAA;QAC7C,MAAM,MAAM,GAAG,cAAc,IAAI,KAAK,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAA;QACnF,OAAO,IAAI,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,CAAA;IACxC,CAAC;IACD,OAAO,IAAI,KAAK,CAAC,cAAc,IAAI,kBAAkB,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;AACrE,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,GAAY;IACpD,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;QACzB,MAAM,IAAI,GAAI,GAA0B,CAAC,IAAI,CAAA;QAC7C,MAAM,OAAO,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAA;QAC/D,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,cAAc,IAAI,KAAK,OAAO,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAA;IACrF,CAAC;IACD,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,aAAa,EAAE,cAAc,IAAI,kBAAkB,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;AAC5F,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,YAAY,CAAC,CAAU,EAAE,IAAY;IACnD,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;QAAE,OAAO,CAAC,CAAA;IAC9B,IAAI,CAAC,CAAC,EAAE;QAAE,OAAO,CAAC,CAAC,KAAK,CAAA;IACxB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAwC,CAAA;IAChE,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,aAAa,CAAA;IACpC,MAAM,IAAI,OAAO,CACf,IAAI,EACJ,IAAI,EACJ,yBAAyB,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,OAAO,IAAI,kBAAkB,EAAE,CAC7E,CAAA;AACH,CAAC","sourcesContent":["/**\n * result-unwrap — the single Result→throw bridge shared by every faijs\n * statement boundary (D1).\n *\n * Design: docs/plans/2026-09-03-faijs-brepjs-compat-api.md §5.1 / §5.2\n *\n * Three-layer error semantics (§5.1):\n * library internals / TS compat face → `Result<T>` native (BrepError)\n * statement boundary → `err` unwrapped into a throw\n * faijs-specific op impls → may return `Result`; same unwrap\n *\n * This module is a **leaf**: it imports nothing, so both the SDK layer\n * (`src/define-op.ts`, whose `dist/sdk.js` must stay free of heavy static\n * imports) and the compat bridge (`api/internal/compat-op.ts`) can share one\n * implementation. Having two copies would let the two boundaries drift.\n *\n * @module\n */\n\n/** Structural shape of the vendored `Ok`/`Err` records (`vendored/brepjs/core/result.ts:12-21`). */\nexport type ResultLike =\n | { ok: true; value: unknown }\n | { ok: false; error: { code?: string; message?: string } }\n\n/**\n * Statement-boundary op failure (D1 unwrap / compat adoption).\n *\n * An `err` Result unwrapped at the statement boundary used to be thrown as a\n * plain `Error`, which `CadRuntime.runWithFailureHandling` (recognizing only\n * `BrepUnsupportedError`/`MeshUnsupportedError` by `instanceof`) re-threw out\n * of `execute()` instead of converting it into `ExecutionResult.failedAt`.\n * This class is the engine-recognizable carrier: defined in this leaf module\n * (zero imports) so both `define-op` and the compat bridge can throw it while\n * CadRuntime can catch it without importing anything heavier.\n *\n * A thrown `Error` that is *not* an `OpError` keeps its old meaning: an\n * unexpected implementation bug that must propagate (Result 体系 — expected\n * failures are `err` values, exceptions are bugs).\n */\nexport class OpError extends Error {\n /** The op name that produced the failure. */\n readonly op: string\n /** The `BrepError.code`, or `'E_OP_FAILED'` when the library sent none. */\n readonly code: string\n constructor(op: string, code: string, message: string, options?: { cause?: unknown }) {\n super(message, options)\n this.name = 'OpError'\n this.op = op\n this.code = code\n }\n}\n\n/**\n * Structural test for a Result value.\n *\n * Only the `ok: boolean` discriminant is checked — the vendored `Result` is a\n * plain record, so no `instanceof` and no import is needed (which is what keeps\n * this module a leaf).\n *\n * @param v - the candidate value.\n * @returns true when `v` looks like an Ok/Err record.\n */\nexport function isResultLike(v: unknown): v is ResultLike {\n return typeof v === 'object' && v !== null && typeof (v as { ok?: unknown }).ok === 'boolean'\n}\n\n/**\n * Render an error thrown by (or returned from) an implementation as a\n * statement-level failure.\n *\n * The op name and the `BrepError.code` (when present) are always kept so the\n * engine's statement-level catch reports the same shape the plan's trace A/B\n * describe (`[faijs/brepjs-compat] <op>: <CODE>: <message>`).\n *\n * @param name - the op name.\n * @param err - the thrown value (Error or anything else).\n * @returns an Error carrying the op context.\n */\nexport function toOpError(name: string, err: unknown): Error {\n if (err instanceof Error) {\n const code = (err as { code?: unknown }).code\n const prefix = `[faijs/op] ${name}: ${typeof code === 'string' ? code + ': ' : ''}`\n return new Error(prefix + err.message)\n }\n return new Error(`[faijs/op] ${name}: E_OP_FAILED: ${String(err)}`)\n}\n\n/**\n * Wrap an implementation-thrown exception as an {@link OpError} (statement-\n * level failure carrier). Used by `define-op.ts` `runImpl` so that\n * `CadRuntime.directFailedAtOrThrow` recognizes the error as an op failure\n * (not a bug to re-throw).\n *\n * @param name - the op name.\n * @param err - the thrown value.\n * @returns an OpError carrying the op context and code.\n */\nexport function toOpFailure(name: string, err: unknown): OpError {\n if (err instanceof Error) {\n const code = (err as { code?: unknown }).code\n const codeStr = typeof code === 'string' ? code : 'E_OP_FAILED'\n return new OpError(name, codeStr, `[faijs/op] ${name}: ${codeStr}: ${err.message}`)\n }\n return new OpError(name, 'E_OP_FAILED', `[faijs/op] ${name}: E_OP_FAILED: ${String(err)}`)\n}\n\n/**\n * Statement-boundary unwrap (D1).\n *\n * - a non-Result product → returned untouched (plain-data ops, mesh products);\n * - `ok` → `.value`;\n * - `err` → throws an {@link OpError} carrying the op name and BrepError code\n * (the engine converts `OpError` into `ExecutionResult.failedAt`).\n *\n * @param r - the implementation product.\n * @param name - the op name (error messages).\n * @returns the unwrapped value, or the input when it was not a Result.\n * @throws an {@link OpError} when `r` is an `Err`.\n */\nexport function unwrapResult(r: unknown, name: string): unknown {\n if (!isResultLike(r)) return r\n if (r.ok) return r.value\n const e = (r.error ?? {}) as { code?: string; message?: string }\n const code = e.code ?? 'E_OP_FAILED'\n throw new OpError(\n name,\n code,\n `[faijs/brepjs-compat] ${name}: ${code}: ${e.message ?? 'operation failed'}`,\n )\n}\n"]}
@@ -1,43 +1,121 @@
1
1
  /**
2
- * L3 bridge — occt-wasm kernel single-instance injection (D10).
2
+ * L3 bridge — vendored kernel registry injection (engine-neutral, Phase 2 P2-5).
3
3
  *
4
- * The ported `kernel/occtWasm` adapter is constructor-injected (DI form, never
5
- * imports `occt-wasm` itself). This file is the **only** faijs-side place
6
- * wiring the two together (boundary rule D8/R5: core side may import the
7
- * vendored tree only from `api/`):
4
+ * 原 occt-kernel-bridge 的职责是「把 vendored kernel registry 冻结绑定到 occt-wasm
5
+ * 单实例」(D10)。Phase 2 起改为**跟随当前 BREP 引擎**:装配期把 registry 里当前
6
+ * 引擎(occt / brepkit / mock)的 `BrepEngineApi` 适配器包装为 brepjs `KernelAdapter`
7
+ * 形态注册进 vendored registry,使 `vendoredRegistry.getKernel()` 返回当前引擎——
8
+ * vendored 函数全部逻辑(命名/角色表/Result)原样保留、零改动。
8
9
  *
9
- * initOcctWasm() ──same instance──▶ OcctWasmAdapter ──▶ registerKernel
10
- * (faijs existing (vendored, DI) (vendored kernel
11
- * occt singleton) registry, D10)
10
+ * 边界规则(D8/R5)不变:本文件是 faijs 侧唯一把 vendored kernel registry 与
11
+ * faijs 引擎接线的地方;core 侧只从 `api/` import vendored 树。
12
12
  *
13
- * `occtKernel.getKernel()` returns the faijs singleton `OcctKernel`; building
14
- * the adapter over that exact instance guarantees the single-instance ban
15
- * (D10: two wasm instances would put handles in different pointer spaces and
16
- * silently desync `hasBrep`/`brepOf`/face evolution).
17
- *
18
- * See docs/plans/2026-09-01-layered-api-architecture.md §D10 / §D8.
13
+ * 装配期完整性检查(方案 §Phase 2.5):KernelAdapter 是 211 方法大接口,但 vendored
14
+ * 面存在大量**辅助构造方法**(createVector3d / createPoint3d / createDirection3d /
15
+ * createAxis1 / createAxis2 / createAxis3,见 vendored core/kernelBoundary.ts)——
16
+ * 它们不落在能力名体系内(BrepMethodKind 之外)、无法由 op 声明覆盖,任何 compat
17
+ * op / TS compat 面都可能触发。⇒ 注入前必须断言这些胶水方法在适配器上齐备,缺失
18
+ * 则在**装配期**报错(而非执行期崩)。清单见 {@link GLUE_METHODS}。
19
19
  */
20
+ import { type BrepEngine } from '../brep/engine/registry.js';
20
21
  import type { KernelAdapter } from '../vendored/brepjs/kernel/types.js';
22
+ /** occt-wasm 适配器在 vendored registry 中的注册 id。这是 vendored 注册表的
23
+ * 槽位名(宿主侧判据 + D10 globalThis 单例兼容),**不是**引擎身份标识——
24
+ * 实际引擎由注入的 adapter 决定(vendored 面全部无参 `getKernel()` 取默认)。 */
25
+ export declare const VENDORED_OCCT_KERNEL_ID = "occt-wasm";
21
26
  /**
22
- * Bind the ported kernel registry to the faijs single occt-wasm instance.
27
+ * Inject the currently-registered BREP engine into the vendored kernel registry
28
+ * (replaces the old occt-only `bindOcctKernel()` fixed binding, Phase 2 P2-5).
29
+ *
30
+ * 装配期调用(在 `registerOcctBrepEngine()` / 其它引擎注册之后)。从引擎注册表取
31
+ * 当前默认 BREP 引擎,按其 id 构造 KernelAdapter 形态注册进 vendored registry:
23
32
  *
24
- * Idempotent: the first call registers the adapter and freezes the registry
25
- * (D10 冻结); subsequent calls return the already-bound adapter without
26
- * re-registering. Call after `initOcctWasm()` has been run (e.g. inside
27
- * `registerOcctBrepEngine()` host assembly).
33
+ * - occt:`OcctWasmAdapter.fromKernel(当前引擎 primitives)`——同一 occt-wasm 单实例
34
+ * (D10 不变),211 方法完整适配器,vendored 函数行为与旧 bindOcctKernel 完全一致;
35
+ * - 其它引擎(brepkit/mock):将 BrepEngineApi 透传包装为 KernelAdapter 形态
36
+ * (`dispose`→`release` 等方法名映射 + pattern 返回形态适配),**不做方法伪造**;
37
+ * - 任一引擎注入前都做**装配期完整性检查**(GLUE_METHODS 齐备断言)。
28
38
  *
29
- * @returns the registered kernel adapter.
39
+ * 幂等:首次调用后注册并冻结;重复调用返回已注入的适配器。
40
+ *
41
+ * @returns 注册进 vendored registry 的 kernel adapter。
42
+ * @throws 无 BREP 引擎注册;或完整性检查失败(胶水方法缺失)——装配期报错。
30
43
  */
31
- export declare function bindOcctKernel(): KernelAdapter;
44
+ export declare function injectCurrentBrepEngineAsKernel(): Promise<KernelAdapter>;
45
+ /**
46
+ * 按引擎 id 构造 KernelAdapter 形态(occt 走完整适配器;其它引擎透传包装)。
47
+ *
48
+ * occt 分支保持旧 bindOcctKernel 行为:OcctWasmAdapter.fromKernel 需要 occt-wasm
49
+ * 实例(OcctKernelOwner)。当前引擎的 primitives 即 initOcctWasm 单例(occtApi 是
50
+ * 同一实例的实例覆盖,方法面完整),转换安全。
51
+ *
52
+ * 其它引擎分支:BrepEngineApi → KernelAdapter 契约面——
53
+ * - `dispose` → `release`(vendored 面用 dispose,BrepEngineApi 用 release);
54
+ * - `linearPattern` / `circularPattern` 的方向/中心/轴参数是 Vec3 对象(BrepEngineApi
55
+ * 口径),vendored 面传 [x,y,z] 三元组——包装为对象再转发;
56
+ * - 返回 BrepHandle[](BrepEngineApi)→ KernelShape[](vendored castResultShape 消费
57
+ * `.wrapped` + `.type`)——包装为 `{ wrapped, type: 'solid' }`;
58
+ * - `gridPattern` 返回单 BrepHandle → 单 KernelShape(compound 语义一致)。
59
+ * 不声明 `rectangularPattern`(纯 JS 组合,不调内核——capability-map 实证)。
60
+ *
61
+ * ⚠️ 不伪造:BrepEngineApi 未提供的方法**不**补桩;vendored 函数若触发,由
62
+ * compat op 的静态能力判定(backend-dispatch,Phase 1)在执行前拦截。
63
+ *
64
+ * @param engine - 当前 BREP 引擎(装配期从引擎注册表取得)。
65
+ * @returns 该引擎的 vendored KernelAdapter(occt → OcctWasmAdapter.fromKernel;
66
+ * 其它引擎 → BrepEngineApi 透传包装,pattern 族 Vec3↔三元组适配)。
67
+ */
68
+ export declare function buildKernelAdapter(engine: BrepEngine): KernelAdapter;
32
69
  /**
33
- * Whether the vendored kernel registry has been bound (D10).
34
- * @returns true once bound to the occt-wasm kernel.
70
+ * vendored kernel methods with no source capability in BrepEngineApi.
71
+ * Registered explicitly (not silently undefined): tests assert this list and
72
+ * the engine-contract gap is a separate decision, not a wrapping bug. No
73
+ * stubs, no fake zeros — a silent 0 is worse than a crash.
35
74
  */
36
- export declare function isOcctKernelBound(): boolean;
75
+ export declare const UNMAPPED_VENDORED_MEASURE_METHODS: readonly ["area", "length", "linearCenterOfMass"];
76
+ /**
77
+ * 装配期完整性检查:KernelAdapter 胶水方法齐备断言。
78
+ *
79
+ * @param id - 引擎注册 id(报错时定位到引擎)。
80
+ * @param adapter - 待注入 vendored registry 的 KernelAdapter。
81
+ * @throws 缺失任一胶水方法 → 装配期报错(列出引擎 id 与缺失方法名)。
82
+ */
83
+ export declare function assertGlueMethodsComplete(id: string, adapter: KernelAdapter): void;
37
84
  /**
38
- * Access the currently bound vendored kernel adapter (reads the registry).
39
- * @throws If the bridge has not been bound.
40
- * @returns the vendored occt-wasm kernel adapter.
85
+ * Test-only: clear the injection cache and reset the vendored kernel registry
86
+ * so a re-assembly (e.g. switching engines in tests) re-runs buildKernelAdapter
87
+ * + assertGlueMethodsComplete for the new engine. Never called in prod.
88
+ */
89
+ export declare function __resetKernelInjectionForTests(): void;
90
+ /**
91
+ * Whether the vendored kernel registry has been injected (engine-neutral D10).
92
+ *
93
+ * 取代旧的 `isOcctKernelBound()`(其判据 `_bound && getActiveKernelId() === 'occt-wasm'`
94
+ * 把注入面写死为 occt)。新判据只问「vendored registry 是否已注入当前引擎」——
95
+ * 不关心引擎 id,装配期换引擎(brepkit/mock)同样成立。
96
+ *
97
+ * @returns 注入是否已完成(vendored registry 已装配当前 BREP 引擎)。
98
+ */
99
+ export declare function isKernelInjected(): boolean;
100
+ /**
101
+ * Access the currently injected vendored kernel adapter (reads the registry).
102
+ * @throws If the bridge has not been injected.
103
+ * @returns the vendored kernel adapter for the current BREP engine.
41
104
  */
42
105
  export declare function getBrepjsKernel(): KernelAdapter;
106
+ /**
107
+ * 固定绑定 occt 内核到 vendored registry(Phase 2 前的装配方式)。
108
+ *
109
+ * @deprecated Phase 2 P2-5:固定绑定已被引擎中立的 injectCurrentBrepEngineAsKernel
110
+ * 取代。保留导出仅为兼容旧调用点(适配器层迁移期);新代码一律用注入函数。
111
+ * @returns 恒抛错——本函数已移除,仅保留签名占位。
112
+ */
113
+ export declare function bindOcctKernel(): KernelAdapter;
114
+ /**
115
+ * 旧 occt 专用注入判据(Phase 2 前语义:绑定且激活内核为 occt-wasm)。
116
+ *
117
+ * @deprecated Phase 2 P2-5:occt 专用判据已被引擎中立的 isKernelInjected() 取代。
118
+ * @returns 当前是否已注入(透传 isKernelInjected())。
119
+ */
120
+ export declare function isOcctKernelBound(): boolean;
43
121
  //# sourceMappingURL=occt-kernel-bridge.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"occt-kernel-bridge.d.ts","sourceRoot":"","sources":["../../src/api/occt-kernel-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAaH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAA;AAIvE;;;;;;;;;GASG;AACH,wBAAgB,cAAc,IAAI,aAAa,CAe9C;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C;AAED;;;;GAIG;AACH,wBAAgB,eAAe,IAAI,aAAa,CAE/C"}
1
+ {"version":3,"file":"occt-kernel-bridge.d.ts","sourceRoot":"","sources":["../../src/api/occt-kernel-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAIH,OAAO,EAAiB,KAAK,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAYxE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAA;AAEvE;;4DAE4D;AAC5D,eAAO,MAAM,uBAAuB,cAAc,CAAA;AAwBlD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,+BAA+B,IAAI,OAAO,CAAC,aAAa,CAAC,CAgB9E;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,UAAU,GAAG,aAAa,CAMpE;AAKD;;;;;GAKG;AACH,eAAO,MAAM,iCAAiC,mDAIpC,CAAA;AAmIV;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI,CAWlF;AAED;;;;GAIG;AACH,wBAAgB,8BAA8B,IAAI,IAAI,CAGrD;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,IAAI,OAAO,CAG1C;AAED;;;;GAIG;AACH,wBAAgB,eAAe,IAAI,aAAa,CAE/C;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,IAAI,aAAa,CAM9C;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C"}