@faicad/faijs 0.33.2 → 0.35.8

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 (429) hide show
  1. package/dist/api/api-namespace.d.ts +14 -14
  2. package/dist/api/api-namespace.d.ts.map +1 -1
  3. package/dist/api/api-namespace.js +40 -14
  4. package/dist/api/api-namespace.js.map +1 -1
  5. package/dist/api/appearance.d.ts +47 -6
  6. package/dist/api/appearance.d.ts.map +1 -1
  7. package/dist/api/appearance.js.map +1 -1
  8. package/dist/api/assembly/entities.js +14 -4
  9. package/dist/api/assembly/entities.js.map +1 -1
  10. package/dist/api/assembly/solve-tree.d.ts +1 -0
  11. package/dist/api/assembly/solve-tree.d.ts.map +1 -1
  12. package/dist/api/assembly/solve-tree.js +42 -17
  13. package/dist/api/assembly/solve-tree.js.map +1 -1
  14. package/dist/api/assembly/solve.d.ts +1 -0
  15. package/dist/api/assembly/solve.d.ts.map +1 -1
  16. package/dist/api/assembly/solve.js.map +1 -1
  17. package/dist/api/assembly/solvers/global-solver.d.ts.map +1 -1
  18. package/dist/api/assembly/solvers/global-solver.js +130 -23
  19. package/dist/api/assembly/solvers/global-solver.js.map +1 -1
  20. package/dist/api/assembly/solvers/pose-from-delta.d.ts +9 -0
  21. package/dist/api/assembly/solvers/pose-from-delta.d.ts.map +1 -1
  22. package/dist/api/assembly/solvers/pose-from-delta.js +23 -0
  23. package/dist/api/assembly/solvers/pose-from-delta.js.map +1 -1
  24. package/dist/api/assembly/solvers/types.d.ts +20 -2
  25. package/dist/api/assembly/solvers/types.d.ts.map +1 -1
  26. package/dist/api/assembly/solvers/types.js.map +1 -1
  27. package/dist/api/chamfer.d.ts +7 -4
  28. package/dist/api/chamfer.d.ts.map +1 -1
  29. package/dist/api/chamfer.js +57 -13
  30. package/dist/api/chamfer.js.map +1 -1
  31. package/dist/api/draft.d.ts +7 -4
  32. package/dist/api/draft.d.ts.map +1 -1
  33. package/dist/api/draft.js +11 -6
  34. package/dist/api/draft.js.map +1 -1
  35. package/dist/api/edge-ref.d.ts +4 -4
  36. package/dist/api/edge-ref.js +4 -4
  37. package/dist/api/edge-ref.js.map +1 -1
  38. package/dist/api/extrude.d.ts +10 -6
  39. package/dist/api/extrude.d.ts.map +1 -1
  40. package/dist/api/extrude.js +54 -26
  41. package/dist/api/extrude.js.map +1 -1
  42. package/dist/api/face-ref.d.ts +4 -4
  43. package/dist/api/face-ref.js +4 -4
  44. package/dist/api/face-ref.js.map +1 -1
  45. package/dist/api/feature-repair.d.ts +6 -3
  46. package/dist/api/feature-repair.d.ts.map +1 -1
  47. package/dist/api/feature-repair.js +12 -7
  48. package/dist/api/feature-repair.js.map +1 -1
  49. package/dist/api/fillet-variable.d.ts +6 -2
  50. package/dist/api/fillet-variable.d.ts.map +1 -1
  51. package/dist/api/fillet-variable.js +24 -6
  52. package/dist/api/fillet-variable.js.map +1 -1
  53. package/dist/api/fillet.d.ts +7 -4
  54. package/dist/api/fillet.d.ts.map +1 -1
  55. package/dist/api/fillet.js +92 -12
  56. package/dist/api/fillet.js.map +1 -1
  57. package/dist/api/generated/script-face-manifest.js +1 -1
  58. package/dist/api/generated/script-face-manifest.js.map +1 -1
  59. package/dist/api/generated/topology.js +1 -1
  60. package/dist/api/generated/topology.js.map +1 -1
  61. package/dist/api/helix.d.ts +13 -13
  62. package/dist/api/helix.d.ts.map +1 -1
  63. package/dist/api/helix.js +19 -24
  64. package/dist/api/helix.js.map +1 -1
  65. package/dist/api/import-brep.d.ts +10 -18
  66. package/dist/api/import-brep.d.ts.map +1 -1
  67. package/dist/api/import-brep.js +17 -25
  68. package/dist/api/import-brep.js.map +1 -1
  69. package/dist/api/import-step.d.ts +10 -15
  70. package/dist/api/import-step.d.ts.map +1 -1
  71. package/dist/api/import-step.js +24 -29
  72. package/dist/api/import-step.js.map +1 -1
  73. package/dist/api/index.js +2 -2
  74. package/dist/api/index.js.map +1 -1
  75. package/dist/api/internal/export-members.js.map +1 -1
  76. package/dist/api/loft-advanced.d.ts +4 -0
  77. package/dist/api/loft-advanced.d.ts.map +1 -1
  78. package/dist/api/loft-advanced.js +4 -0
  79. package/dist/api/loft-advanced.js.map +1 -1
  80. package/dist/api/loft.d.ts +5 -3
  81. package/dist/api/loft.d.ts.map +1 -1
  82. package/dist/api/loft.js +5 -3
  83. package/dist/api/loft.js.map +1 -1
  84. package/dist/api/meta.d.ts +42 -6
  85. package/dist/api/meta.d.ts.map +1 -1
  86. package/dist/api/meta.js.map +1 -1
  87. package/dist/api/primitives.d.ts +3 -2
  88. package/dist/api/primitives.d.ts.map +1 -1
  89. package/dist/api/primitives.js +3 -2
  90. package/dist/api/primitives.js.map +1 -1
  91. package/dist/api/punch-hole.d.ts +5 -2
  92. package/dist/api/punch-hole.d.ts.map +1 -1
  93. package/dist/api/punch-hole.js +4 -1
  94. package/dist/api/punch-hole.js.map +1 -1
  95. package/dist/api/replicate.d.ts +4 -5
  96. package/dist/api/replicate.d.ts.map +1 -1
  97. package/dist/api/replicate.js +4 -5
  98. package/dist/api/replicate.js.map +1 -1
  99. package/dist/api/selectors-to-refs.d.ts +83 -0
  100. package/dist/api/selectors-to-refs.d.ts.map +1 -0
  101. package/dist/api/selectors-to-refs.js +211 -0
  102. package/dist/api/selectors-to-refs.js.map +1 -0
  103. package/dist/api/shell.d.ts +17 -8
  104. package/dist/api/shell.d.ts.map +1 -1
  105. package/dist/api/shell.js +45 -15
  106. package/dist/api/shell.js.map +1 -1
  107. package/dist/api/sketch-on-face.d.ts +12 -6
  108. package/dist/api/sketch-on-face.d.ts.map +1 -1
  109. package/dist/api/sketch-on-face.js +31 -4
  110. package/dist/api/sketch-on-face.js.map +1 -1
  111. package/dist/api/sketch-on-plane.d.ts +3 -0
  112. package/dist/api/sketch-on-plane.d.ts.map +1 -1
  113. package/dist/api/sketch-on-plane.js +3 -0
  114. package/dist/api/sketch-on-plane.js.map +1 -1
  115. package/dist/api/sketch-on-surface.d.ts +4 -1
  116. package/dist/api/sketch-on-surface.d.ts.map +1 -1
  117. package/dist/api/sketch-on-surface.js +4 -1
  118. package/dist/api/sketch-on-surface.js.map +1 -1
  119. package/dist/api/surface/arg-spec.d.ts.map +1 -1
  120. package/dist/api/surface/arg-spec.js +5 -6
  121. package/dist/api/surface/arg-spec.js.map +1 -1
  122. package/dist/api/topo-resolve.d.ts.map +1 -1
  123. package/dist/api/topo-resolve.js +24 -5
  124. package/dist/api/topo-resolve.js.map +1 -1
  125. package/dist/api/view/view-projection.d.ts.map +1 -1
  126. package/dist/api/view/view-projection.js +9 -2
  127. package/dist/api/view/view-projection.js.map +1 -1
  128. package/dist/brep/brep-chain.js +2 -2
  129. package/dist/brep/brep-chain.js.map +1 -1
  130. package/dist/brep/brep-ops.d.ts +1 -1
  131. package/dist/brep/brep-ops.js +1 -1
  132. package/dist/brep/brep-ops.js.map +1 -1
  133. package/dist/brep/engine/adapters/brep-mock.d.ts.map +1 -1
  134. package/dist/brep/engine/adapters/brep-mock.js +45 -0
  135. package/dist/brep/engine/adapters/brep-mock.js.map +1 -1
  136. package/dist/brep/engine/primitives.d.ts +87 -3
  137. package/dist/brep/engine/primitives.d.ts.map +1 -1
  138. package/dist/brep/engine/primitives.js +1 -1
  139. package/dist/brep/engine/primitives.js.map +1 -1
  140. package/dist/brep/engine/registry.d.ts +33 -7
  141. package/dist/brep/engine/registry.d.ts.map +1 -1
  142. package/dist/brep/engine/registry.js +47 -16
  143. package/dist/brep/engine/registry.js.map +1 -1
  144. package/dist/brep/handle-bridge.d.ts +14 -15
  145. package/dist/brep/handle-bridge.d.ts.map +1 -1
  146. package/dist/brep/handle-bridge.js +35 -15
  147. package/dist/brep/handle-bridge.js.map +1 -1
  148. package/dist/brep/primitives-brep.js +2 -2
  149. package/dist/brep/primitives-brep.js.map +1 -1
  150. package/dist/brep/text/text-to-solid.d.ts +40 -3
  151. package/dist/brep/text/text-to-solid.d.ts.map +1 -1
  152. package/dist/brep/text/text-to-solid.js +104 -24
  153. package/dist/brep/text/text-to-solid.js.map +1 -1
  154. package/dist/brepkit-kernel/brepkitKernel.d.ts +2 -2
  155. package/dist/brepkit-kernel/brepkitKernel.d.ts.map +1 -1
  156. package/dist/brepkit-kernel/brepkitKernel.js +328 -38
  157. package/dist/brepkit-kernel/brepkitKernel.js.map +1 -1
  158. package/dist/brepkit-kernel/brepkitWasm.d.ts +3 -1
  159. package/dist/brepkit-kernel/brepkitWasm.d.ts.map +1 -1
  160. package/dist/brepkit-kernel/brepkitWasm.js +13 -9
  161. package/dist/brepkit-kernel/brepkitWasm.js.map +1 -1
  162. package/dist/brepkit-kernel/multi-version-test.d.ts +2 -2
  163. package/dist/brepkit-kernel/multi-version-test.d.ts.map +1 -1
  164. package/dist/brepkit-kernel/multi-version-test.js +6 -6
  165. package/dist/brepkit-kernel/multi-version-test.js.map +1 -1
  166. package/dist/browser.d.ts +2 -3
  167. package/dist/browser.d.ts.map +1 -1
  168. package/dist/browser.js +1 -2
  169. package/dist/browser.js.map +1 -1
  170. package/dist/cad-runtime/admit-compat-lib.d.ts +9 -1
  171. package/dist/cad-runtime/admit-compat-lib.d.ts.map +1 -1
  172. package/dist/cad-runtime/admit-compat-lib.js +11 -1
  173. package/dist/cad-runtime/admit-compat-lib.js.map +1 -1
  174. package/dist/cad-runtime/browser-lib-loader.d.ts +16 -11
  175. package/dist/cad-runtime/browser-lib-loader.d.ts.map +1 -1
  176. package/dist/cad-runtime/browser-lib-loader.js +16 -8
  177. package/dist/cad-runtime/browser-lib-loader.js.map +1 -1
  178. package/dist/cad-runtime/direct-executor.d.ts +62 -5
  179. package/dist/cad-runtime/direct-executor.d.ts.map +1 -1
  180. package/dist/cad-runtime/direct-executor.js +617 -42
  181. package/dist/cad-runtime/direct-executor.js.map +1 -1
  182. package/dist/cad-runtime/interp/closure.d.ts +3 -2
  183. package/dist/cad-runtime/interp/closure.d.ts.map +1 -1
  184. package/dist/cad-runtime/interp/closure.js.map +1 -1
  185. package/dist/cad-runtime/interp/env.d.ts +9 -6
  186. package/dist/cad-runtime/interp/env.d.ts.map +1 -1
  187. package/dist/cad-runtime/interp/env.js +4 -2
  188. package/dist/cad-runtime/interp/env.js.map +1 -1
  189. package/dist/cad-runtime/lib-decl.d.ts +121 -0
  190. package/dist/cad-runtime/lib-decl.d.ts.map +1 -0
  191. package/dist/cad-runtime/lib-decl.js +100 -0
  192. package/dist/cad-runtime/lib-decl.js.map +1 -0
  193. package/dist/cad-runtime/ports.d.ts +12 -0
  194. package/dist/cad-runtime/ports.d.ts.map +1 -1
  195. package/dist/cad-runtime/ports.js.map +1 -1
  196. package/dist/cad-runtime/runtime.d.ts +59 -5
  197. package/dist/cad-runtime/runtime.d.ts.map +1 -1
  198. package/dist/cad-runtime/runtime.js +252 -20
  199. package/dist/cad-runtime/runtime.js.map +1 -1
  200. package/dist/extra/browser.d.ts +9 -0
  201. package/dist/extra/browser.d.ts.map +1 -0
  202. package/dist/extra/browser.js +9 -0
  203. package/dist/extra/browser.js.map +1 -0
  204. package/dist/extra/editor-ops.d.ts +22 -0
  205. package/dist/extra/editor-ops.d.ts.map +1 -0
  206. package/dist/extra/editor-ops.js +21 -0
  207. package/dist/extra/editor-ops.js.map +1 -0
  208. package/dist/extra/extras/svg-extrude.d.ts +45 -0
  209. package/dist/extra/extras/svg-extrude.d.ts.map +1 -0
  210. package/dist/extra/extras/svg-extrude.js +110 -0
  211. package/dist/extra/extras/svg-extrude.js.map +1 -0
  212. package/dist/extra/extras/text-cjk.d.ts +36 -0
  213. package/dist/extra/extras/text-cjk.d.ts.map +1 -0
  214. package/dist/extra/extras/text-cjk.js +86 -0
  215. package/dist/extra/extras/text-cjk.js.map +1 -0
  216. package/dist/extra/extras/text-geometry.d.ts +69 -0
  217. package/dist/extra/extras/text-geometry.d.ts.map +1 -0
  218. package/dist/extra/extras/text-geometry.js +188 -0
  219. package/dist/extra/extras/text-geometry.js.map +1 -0
  220. package/dist/extra/index.d.ts +40 -0
  221. package/dist/extra/index.d.ts.map +1 -0
  222. package/dist/extra/index.js +40 -0
  223. package/dist/extra/index.js.map +1 -0
  224. package/dist/extra/mesh/drill-hole/DrillHoleCore.d.ts +94 -0
  225. package/dist/extra/mesh/drill-hole/DrillHoleCore.d.ts.map +1 -0
  226. package/dist/extra/mesh/drill-hole/DrillHoleCore.js +282 -0
  227. package/dist/extra/mesh/drill-hole/DrillHoleCore.js.map +1 -0
  228. package/dist/extra/mesh/drill-hole/drill-types.d.ts +34 -0
  229. package/dist/extra/mesh/drill-hole/drill-types.d.ts.map +1 -0
  230. package/dist/extra/mesh/drill-hole/drill-types.js +7 -0
  231. package/dist/extra/mesh/drill-hole/drill-types.js.map +1 -0
  232. package/dist/extra/mesh/engrave-decoration.d.ts +42 -0
  233. package/dist/extra/mesh/engrave-decoration.d.ts.map +1 -0
  234. package/dist/extra/mesh/engrave-decoration.js +39 -0
  235. package/dist/extra/mesh/engrave-decoration.js.map +1 -0
  236. package/dist/extra/mesh/fai_drill.d.ts +21 -0
  237. package/dist/extra/mesh/fai_drill.d.ts.map +1 -0
  238. package/dist/extra/mesh/fai_drill.js +89 -0
  239. package/dist/extra/mesh/fai_drill.js.map +1 -0
  240. package/dist/extra/mesh/fai_extrude.d.ts +24 -0
  241. package/dist/extra/mesh/fai_extrude.d.ts.map +1 -0
  242. package/dist/extra/mesh/fai_extrude.js +42 -0
  243. package/dist/extra/mesh/fai_extrude.js.map +1 -0
  244. package/dist/extra/mesh/fai_split.d.ts +164 -0
  245. package/dist/extra/mesh/fai_split.d.ts.map +1 -0
  246. package/dist/extra/mesh/fai_split.js +269 -0
  247. package/dist/extra/mesh/fai_split.js.map +1 -0
  248. package/dist/extra/mesh/primitives.d.ts +29 -0
  249. package/dist/extra/mesh/primitives.d.ts.map +1 -0
  250. package/dist/extra/mesh/primitives.js +41 -0
  251. package/dist/extra/mesh/primitives.js.map +1 -0
  252. package/dist/extra/op-names.d.ts +37 -0
  253. package/dist/extra/op-names.d.ts.map +1 -0
  254. package/dist/extra/op-names.js +46 -0
  255. package/dist/extra/op-names.js.map +1 -0
  256. package/dist/extra/ops/compound.d.ts +140 -0
  257. package/dist/extra/ops/compound.d.ts.map +1 -0
  258. package/dist/extra/ops/compound.js +167 -0
  259. package/dist/extra/ops/compound.js.map +1 -0
  260. package/dist/extra/ops/copy.d.ts +40 -0
  261. package/dist/extra/ops/copy.d.ts.map +1 -0
  262. package/dist/extra/ops/copy.js +83 -0
  263. package/dist/extra/ops/copy.js.map +1 -0
  264. package/dist/extra/ops/fai_drill.d.ts +51 -0
  265. package/dist/extra/ops/fai_drill.d.ts.map +1 -0
  266. package/dist/extra/ops/fai_drill.js +233 -0
  267. package/dist/extra/ops/fai_drill.js.map +1 -0
  268. package/dist/extra/ops/fai_extrude.d.ts +36 -0
  269. package/dist/extra/ops/fai_extrude.d.ts.map +1 -0
  270. package/dist/extra/ops/fai_extrude.js +84 -0
  271. package/dist/extra/ops/fai_extrude.js.map +1 -0
  272. package/dist/extra/ops/fai_split.d.ts +46 -0
  273. package/dist/extra/ops/fai_split.d.ts.map +1 -0
  274. package/dist/extra/ops/fai_split.js +235 -0
  275. package/dist/extra/ops/fai_split.js.map +1 -0
  276. package/dist/extra/ops/load.d.ts +49 -0
  277. package/dist/extra/ops/load.d.ts.map +1 -0
  278. package/dist/extra/ops/load.js +423 -0
  279. package/dist/extra/ops/load.js.map +1 -0
  280. package/dist/extra/ops/svg-extrude.d.ts +32 -0
  281. package/dist/extra/ops/svg-extrude.d.ts.map +1 -0
  282. package/dist/extra/ops/svg-extrude.js +74 -0
  283. package/dist/extra/ops/svg-extrude.js.map +1 -0
  284. package/dist/extra/ops/text.d.ts +34 -0
  285. package/dist/extra/ops/text.d.ts.map +1 -0
  286. package/dist/extra/ops/text.js +100 -0
  287. package/dist/extra/ops/text.js.map +1 -0
  288. package/dist/geometry2d/bridge/lift-on-plane.d.ts +8 -5
  289. package/dist/geometry2d/bridge/lift-on-plane.d.ts.map +1 -1
  290. package/dist/geometry2d/bridge/lift-on-plane.js +8 -5
  291. package/dist/geometry2d/bridge/lift-on-plane.js.map +1 -1
  292. package/dist/index.d.ts +6 -2
  293. package/dist/index.d.ts.map +1 -1
  294. package/dist/index.js +8 -2
  295. package/dist/index.js.map +1 -1
  296. package/dist/lang/symbol-table.d.ts +3 -3
  297. package/dist/lang/symbol-table.generated.d.ts +10 -0
  298. package/dist/lang/symbol-table.generated.d.ts.map +1 -1
  299. package/dist/lang/symbol-table.generated.js +10 -0
  300. package/dist/lang/symbol-table.generated.js.map +1 -1
  301. package/dist/lang/symbol-table.js +3 -3
  302. package/dist/lang/symbol-table.js.map +1 -1
  303. package/dist/math3d/index.d.ts +1 -1
  304. package/dist/math3d/index.js +1 -1
  305. package/dist/math3d/index.js.map +1 -1
  306. package/dist/mesh/engrave.d.ts +2 -3
  307. package/dist/mesh/engrave.d.ts.map +1 -1
  308. package/dist/mesh/engrave.js +4 -11
  309. package/dist/mesh/engrave.js.map +1 -1
  310. package/dist/mesh/index.d.ts +0 -2
  311. package/dist/mesh/index.d.ts.map +1 -1
  312. package/dist/mesh/index.js +0 -2
  313. package/dist/mesh/index.js.map +1 -1
  314. package/dist/mesh/primitives.d.ts +7 -5
  315. package/dist/mesh/primitives.d.ts.map +1 -1
  316. package/dist/mesh/primitives.js +16 -9
  317. package/dist/mesh/primitives.js.map +1 -1
  318. package/dist/mesh/types.d.ts +4 -3
  319. package/dist/mesh/types.d.ts.map +1 -1
  320. package/dist/mesh/types.js.map +1 -1
  321. package/dist/node-host/cli.d.ts +11 -4
  322. package/dist/node-host/cli.d.ts.map +1 -1
  323. package/dist/node-host/cli.js +53 -28
  324. package/dist/node-host/cli.js.map +1 -1
  325. package/dist/node-host/execute-script.d.ts.map +1 -1
  326. package/dist/node-host/execute-script.js +3 -4
  327. package/dist/node-host/execute-script.js.map +1 -1
  328. package/dist/node-host/lib-package-json.d.ts +36 -0
  329. package/dist/node-host/lib-package-json.d.ts.map +1 -0
  330. package/dist/node-host/lib-package-json.js +73 -0
  331. package/dist/node-host/lib-package-json.js.map +1 -0
  332. package/dist/occt-kernel/occt-primitives.d.ts.map +1 -1
  333. package/dist/occt-kernel/occt-primitives.js +41 -0
  334. package/dist/occt-kernel/occt-primitives.js.map +1 -1
  335. package/dist/occt-kernel/occtKernel.d.ts +1 -1
  336. package/dist/occt-kernel/occtKernel.js +1 -1
  337. package/dist/occt-kernel/occtKernel.js.map +1 -1
  338. package/dist/primitives/brep-primitives.d.ts.map +1 -1
  339. package/dist/primitives/brep-primitives.js +39 -12
  340. package/dist/primitives/brep-primitives.js.map +1 -1
  341. package/dist/runtime-state.d.ts +28 -1
  342. package/dist/runtime-state.d.ts.map +1 -1
  343. package/dist/runtime-state.js +14 -1
  344. package/dist/runtime-state.js.map +1 -1
  345. package/dist/sdk.d.ts +2 -2
  346. package/dist/sdk.d.ts.map +1 -1
  347. package/dist/sdk.js +11 -2
  348. package/dist/sdk.js.map +1 -1
  349. package/dist/sketch/bspline.d.ts +58 -0
  350. package/dist/sketch/bspline.d.ts.map +1 -0
  351. package/dist/sketch/bspline.js +104 -0
  352. package/dist/sketch/bspline.js.map +1 -0
  353. package/dist/sketch/canonical.d.ts +239 -0
  354. package/dist/sketch/canonical.d.ts.map +1 -0
  355. package/dist/sketch/canonical.js +17 -0
  356. package/dist/sketch/canonical.js.map +1 -0
  357. package/dist/sketch/contour.d.ts +43 -0
  358. package/dist/sketch/contour.d.ts.map +1 -0
  359. package/dist/sketch/contour.js +202 -0
  360. package/dist/sketch/contour.js.map +1 -0
  361. package/dist/sketch/dim-spec.d.ts +32 -0
  362. package/dist/sketch/dim-spec.d.ts.map +1 -0
  363. package/dist/sketch/dim-spec.js +112 -0
  364. package/dist/sketch/dim-spec.js.map +1 -0
  365. package/dist/sketch/faces.d.ts +45 -0
  366. package/dist/sketch/faces.d.ts.map +1 -0
  367. package/dist/sketch/faces.js +108 -0
  368. package/dist/sketch/faces.js.map +1 -0
  369. package/dist/sketch/fcstd-types.d.ts +194 -0
  370. package/dist/sketch/fcstd-types.d.ts.map +1 -0
  371. package/dist/sketch/fcstd-types.js +67 -0
  372. package/dist/sketch/fcstd-types.js.map +1 -0
  373. package/dist/sketch/index.d.ts +46 -0
  374. package/dist/sketch/index.d.ts.map +1 -0
  375. package/dist/sketch/index.js +39 -0
  376. package/dist/sketch/index.js.map +1 -0
  377. package/dist/sketch/node.d.ts +14 -0
  378. package/dist/sketch/node.d.ts.map +1 -0
  379. package/dist/sketch/node.js +43 -0
  380. package/dist/sketch/node.js.map +1 -0
  381. package/dist/sketch/op.d.ts +111 -0
  382. package/dist/sketch/op.d.ts.map +1 -0
  383. package/dist/sketch/op.js +185 -0
  384. package/dist/sketch/op.js.map +1 -0
  385. package/dist/sketch/planegcs-backend.d.ts +69 -0
  386. package/dist/sketch/planegcs-backend.d.ts.map +1 -0
  387. package/dist/sketch/planegcs-backend.js +812 -0
  388. package/dist/sketch/planegcs-backend.js.map +1 -0
  389. package/dist/sketch/project.d.ts +176 -0
  390. package/dist/sketch/project.d.ts.map +1 -0
  391. package/dist/sketch/project.js +656 -0
  392. package/dist/sketch/project.js.map +1 -0
  393. package/dist/sketch/shapes.d.ts +370 -0
  394. package/dist/sketch/shapes.d.ts.map +1 -0
  395. package/dist/sketch/shapes.js +959 -0
  396. package/dist/sketch/shapes.js.map +1 -0
  397. package/dist/sketch/solve.d.ts +21 -0
  398. package/dist/sketch/solve.d.ts.map +1 -0
  399. package/dist/sketch/solve.js +144 -0
  400. package/dist/sketch/solve.js.map +1 -0
  401. package/dist/sketch/solver-loader.d.ts +47 -0
  402. package/dist/sketch/solver-loader.d.ts.map +1 -0
  403. package/dist/sketch/solver-loader.js +77 -0
  404. package/dist/sketch/solver-loader.js.map +1 -0
  405. package/dist/sketch/solver.d.ts +63 -0
  406. package/dist/sketch/solver.d.ts.map +1 -0
  407. package/dist/sketch/solver.js +28 -0
  408. package/dist/sketch/solver.js.map +1 -0
  409. package/dist/sketch/verify.d.ts +53 -0
  410. package/dist/sketch/verify.d.ts.map +1 -0
  411. package/dist/sketch/verify.js +71 -0
  412. package/dist/sketch/verify.js.map +1 -0
  413. package/dist/topology/naming/geom-hint.d.ts +12 -0
  414. package/dist/topology/naming/geom-hint.d.ts.map +1 -1
  415. package/dist/topology/naming/geom-hint.js +1 -1
  416. package/dist/topology/naming/geom-hint.js.map +1 -1
  417. package/dist/topology/naming/lineage.d.ts +1 -0
  418. package/dist/topology/naming/lineage.d.ts.map +1 -1
  419. package/dist/topology/naming/lineage.js +37 -1
  420. package/dist/topology/naming/lineage.js.map +1 -1
  421. package/dist/topology/naming/resolve-face.d.ts +13 -2
  422. package/dist/topology/naming/resolve-face.d.ts.map +1 -1
  423. package/dist/topology/naming/resolve-face.js +18 -2
  424. package/dist/topology/naming/resolve-face.js.map +1 -1
  425. package/dist/weapp.d.ts +1 -1
  426. package/dist/weapp.d.ts.map +1 -1
  427. package/dist/weapp.js +1 -1
  428. package/dist/weapp.js.map +1 -1
  429. package/package.json +43 -11
@@ -4,7 +4,9 @@
4
4
  * 装载策略(与 occt-kernel 一致):
5
5
  * - 宿主可调用 setBrepkitWasmInitFn(fn) 注入自定义初始化函数
6
6
  * (小程序 Worker 传 WXWebAssembly 实例化路径;node 测试走 npm 包默认 init);
7
- * - 未注入时,node 环境直接 require('@faicad/brepkit2-wasm')(该包胶水零 eval,可直接装载);
7
+ * - 未注入时,node 环境直接 require('brepkit-wasm')(v4.x 官方包,胶水零 eval,可直接装载);
8
+ * 注意:不是 @faicad/brepkit2-wasm(v2 fork 已弃用,见 weapp scripts/rebuild-brepkit-wasm.mjs
9
+ * 的「VENDOR WASM 来源」注释)——两者 fillet/chamfer 内核行为不同。
8
10
  * - 两边都没有 → 抛带上下文的错误(报错好于掩盖,禁止静默回退)。
9
11
  */
10
12
  /** brepkit 内核实例形态(BrepKernel 类,228 个方法;类型面见 npm 包 brepkit_wasm.d.ts)。 */
@@ -1 +1 @@
1
- {"version":3,"file":"brepkitWasm.d.ts","sourceRoot":"","sources":["../../src/brepkit-kernel/brepkitWasm.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,yEAAyE;AACzE,MAAM,MAAM,aAAa,GAAG,GAAG,CAAA;AAkD/B;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,CAAC,MAAM,OAAO,CAAC,aAAa,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAKpF;AAED;;;GAGG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAAC,aAAa,CAAC,CAwBxD;AAED;mCACmC;AACnC,wBAAgB,oBAAoB,IAAI,OAAO,CAE9C;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC"}
1
+ {"version":3,"file":"brepkitWasm.d.ts","sourceRoot":"","sources":["../../src/brepkit-kernel/brepkitWasm.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,yEAAyE;AACzE,MAAM,MAAM,aAAa,GAAG,GAAG,CAAA;AAkD/B;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,CAAC,MAAM,OAAO,CAAC,aAAa,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAKpF;AAED;;;GAGG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAAC,aAAa,CAAC,CA0BxD;AAED;mCACmC;AACnC,wBAAgB,oBAAoB,IAAI,OAAO,CAE9C;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC"}
@@ -4,7 +4,9 @@
4
4
  * 装载策略(与 occt-kernel 一致):
5
5
  * - 宿主可调用 setBrepkitWasmInitFn(fn) 注入自定义初始化函数
6
6
  * (小程序 Worker 传 WXWebAssembly 实例化路径;node 测试走 npm 包默认 init);
7
- * - 未注入时,node 环境直接 require('@faicad/brepkit2-wasm')(该包胶水零 eval,可直接装载);
7
+ * - 未注入时,node 环境直接 require('brepkit-wasm')(v4.x 官方包,胶水零 eval,可直接装载);
8
+ * 注意:不是 @faicad/brepkit2-wasm(v2 fork 已弃用,见 weapp scripts/rebuild-brepkit-wasm.mjs
9
+ * 的「VENDOR WASM 来源」注释)——两者 fillet/chamfer 内核行为不同。
8
10
  * - 两边都没有 → 抛带上下文的错误(报错好于掩盖,禁止静默回退)。
9
11
  */
10
12
  // 2026-09-26 跨实例共享(随 0.18.2 发布):customInitFn / initPromise 从模块级
@@ -24,7 +26,7 @@ const BREPKIT_KERNEL_STATE_VERSION = 1;
24
26
  *
25
27
  * @returns the shared brepkit kernel state singleton.
26
28
  */
27
- function getBrepkitKernelSharedState() {
29
+ function getBrepKitKernelSharedState() {
28
30
  const g = globalThis;
29
31
  const existing = g[BREPKIT_KERNEL_KEY];
30
32
  if (existing) {
@@ -47,7 +49,7 @@ function getBrepkitKernelSharedState() {
47
49
  * @param fn - the initialization function to use, or null to clear
48
50
  */
49
51
  export function setBrepkitWasmInitFn(fn) {
50
- const s = getBrepkitKernelSharedState();
52
+ const s = getBrepKitKernelSharedState();
51
53
  s.customInitFn = fn;
52
54
  // 挂点变化后丢弃进行中的初始化(下一次 init 用新挂点重来)。
53
55
  s.initPromise = null;
@@ -57,7 +59,7 @@ export function setBrepkitWasmInitFn(fn) {
57
59
  * @returns Promise 解析为 BrepKernel 实例。
58
60
  */
59
61
  export function initBrepkitWasm() {
60
- const s = getBrepkitKernelSharedState();
62
+ const s = getBrepKitKernelSharedState();
61
63
  if (s.initPromise)
62
64
  return s.initPromise;
63
65
  s.initPromise = (async () => {
@@ -65,14 +67,16 @@ export function initBrepkitWasm() {
65
67
  return await s.customInitFn();
66
68
  // node 环境(单测 / CLI):npm 包默认装载路径
67
69
  if (typeof process !== 'undefined' && process.versions?.node) {
68
- // Non-literal specifier: @faicad/brepkit2-wasm is an optional runtime
70
+ // Non-literal specifier: brepkit-wasm is an optional runtime
69
71
  // injection (a devDependency for tests; hosts inject their own loader) —
70
72
  // a literal would make tsc fail with TS2307 when the package is absent.
71
73
  // A missing package surfaces at runtime (below).
72
- const specifier = '@faicad/brepkit2-wasm';
74
+ // ⚠️ 版本线:v4 官方包(C:/git/opencascade/brepkit 源码,见 weapp
75
+ // rebuild-brepkit-wasm.mjs「VENDOR WASM 来源」)。勿换回 @faicad/brepkit2-wasm。
76
+ const specifier = 'brepkit-wasm';
73
77
  const mod = (await import(/* @vite-ignore */ specifier));
74
78
  if (!mod?.BrepKernel) {
75
- throw new Error('initBrepkitWasm: @faicad/brepkit2-wasm is not installed; install it or call setBrepkitWasmInitFn() first.');
79
+ throw new Error('initBrepkitWasm: brepkit-wasm is not installed; install it or call setBrepkitWasmInitFn() first.');
76
80
  }
77
81
  return new mod.BrepKernel();
78
82
  }
@@ -83,7 +87,7 @@ export function initBrepkitWasm() {
83
87
  /** 是否已初始化完成(测试诊断用)。
84
88
  * @returns true 表示 init 已启动/完成。 */
85
89
  export function isBrepkitInitialized() {
86
- return getBrepkitKernelSharedState().initPromise !== null;
90
+ return getBrepKitKernelSharedState().initPromise !== null;
87
91
  }
88
92
  /**
89
93
  * 丢弃当前初始化结果(测试收尾 / 内核释放后调用)。
@@ -93,6 +97,6 @@ export function isBrepkitInitialized() {
93
97
  * to rust`)。`customInitFn` 不受影响(宿主注入的装载路径仍在)。
94
98
  */
95
99
  export function resetBrepkitWasm() {
96
- getBrepkitKernelSharedState().initPromise = null;
100
+ getBrepKitKernelSharedState().initPromise = null;
97
101
  }
98
102
  //# sourceMappingURL=brepkitWasm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"brepkitWasm.js","sourceRoot":"","sources":["../../src/brepkit-kernel/brepkitWasm.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAOH,gEAAgE;AAChE,+DAA+D;AAC/D,8CAA8C;AAC9C,0DAA0D;AAC1D,yCAAyC;AACzC,uCAAuC;AAEvC,MAAM,kBAAkB,GAAG,iCAAiC,CAAA;AAC5D,MAAM,4BAA4B,GAAG,CAAC,CAAA;AAStC;;;;;;;;GAQG;AACH,SAAS,2BAA2B;IAClC,MAAM,CAAC,GAAG,UAAgD,CAAA;IAC1D,MAAM,QAAQ,GAAG,CAAC,CAAC,kBAAkB,CAAyC,CAAA;IAC9E,IAAI,QAAQ,EAAE,CAAC;QACb,IAAI,QAAQ,CAAC,YAAY,KAAK,4BAA4B,EAAE,CAAC;YAC3D,MAAM,IAAI,KAAK,CACb,yDAAyD,QAAQ,CAAC,YAAY,cAAc,4BAA4B,EAAE,CAC3H,CAAA;QACH,CAAC;QACD,OAAO,QAAQ,CAAA;IACjB,CAAC;IACD,MAAM,OAAO,GAA6B;QACxC,YAAY,EAAE,4BAA4B;QAC1C,YAAY,EAAE,IAAI;QAClB,WAAW,EAAE,IAAI;KAClB,CAAA;IACD,CAAC,CAAC,kBAAkB,CAAC,GAAG,OAAO,CAAA;IAC/B,OAAO,OAAO,CAAA;AAChB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,EAAyC;IAC5E,MAAM,CAAC,GAAG,2BAA2B,EAAE,CAAA;IACvC,CAAC,CAAC,YAAY,GAAG,EAAE,CAAA;IACnB,mCAAmC;IACnC,CAAC,CAAC,WAAW,GAAG,IAAI,CAAA;AACtB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe;IAC7B,MAAM,CAAC,GAAG,2BAA2B,EAAE,CAAA;IACvC,IAAI,CAAC,CAAC,WAAW;QAAE,OAAO,CAAC,CAAC,WAAW,CAAA;IACvC,CAAC,CAAC,WAAW,GAAG,CAAC,KAAK,IAA4B,EAAE;QAClD,IAAI,CAAC,CAAC,YAAY;YAAE,OAAO,MAAM,CAAC,CAAC,YAAY,EAAE,CAAA;QACjD,gCAAgC;QAEhC,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC;YAC7D,sEAAsE;YACtE,yEAAyE;YACzE,wEAAwE;YACxE,iDAAiD;YACjD,MAAM,SAAS,GAAG,uBAAuB,CAAA;YACzC,MAAM,GAAG,GAAG,CAAC,MAAM,MAAM,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAEtD,CAAA;YACD,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,CAAC;gBACrB,MAAM,IAAI,KAAK,CAAC,2GAA2G,CAAC,CAAA;YAC9H,CAAC;YACD,OAAO,IAAI,GAAG,CAAC,UAAU,EAAmB,CAAA;QAC9C,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,uGAAuG,CAAC,CAAA;IAC1H,CAAC,CAAC,EAAE,CAAA;IACJ,OAAO,CAAC,CAAC,WAAW,CAAA;AACtB,CAAC;AAED;mCACmC;AACnC,MAAM,UAAU,oBAAoB;IAClC,OAAO,2BAA2B,EAAE,CAAC,WAAW,KAAK,IAAI,CAAA;AAC3D,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB;IAC9B,2BAA2B,EAAE,CAAC,WAAW,GAAG,IAAI,CAAA;AAClD,CAAC","sourcesContent":["/**\n * brepkit-kernel/brepkitWasm — brepkit-wasm 装载(setOcctWasmInitFn 同构的注入点)\n *\n * 装载策略(与 occt-kernel 一致):\n * - 宿主可调用 setBrepkitWasmInitFn(fn) 注入自定义初始化函数\n * (小程序 Worker 传 WXWebAssembly 实例化路径;node 测试走 npm 包默认 init);\n * - 未注入时,node 环境直接 require('@faicad/brepkit2-wasm')(该包胶水零 eval,可直接装载);\n * - 两边都没有 → 抛带上下文的错误(报错好于掩盖,禁止静默回退)。\n */\n\n/** brepkit 内核实例形态(BrepKernel 类,228 个方法;类型面见 npm 包 brepkit_wasm.d.ts)。 */\nexport type BrepKitKernel = any\n\ntype BrepKitInitFn = () => Promise<BrepKitKernel>\n\n// 2026-09-26 跨实例共享(随 0.18.2 发布):customInitFn / initPromise 从模块级\n// 单例提升为挂在 globalThis 上的共享状态(与 occtKernel.ts / runtime-state.ts\n// 同款设计)。原因:CDN 外部化的 faijs 多实例各自持有独立内核 → 句柄不互通\n// (occtKernel.ts 顶部注释详述);小程序 Worker 场景同理。挂到 globalThis 后,\n// 任一实例 initBrepkitWasm() 产出的内核全局可见,句柄互通。\n// 构建期去重(external / dedupe)仍是主手段,这里是兜底。\n\nconst BREPKIT_KERNEL_KEY = '__FAICAD_FAIJS_BREPKIT_KERNEL__'\nconst BREPKIT_KERNEL_STATE_VERSION = 1\n\n/** brepkit 内核共享状态(跨 faijs 模块实例,浏览器/Node/小程序 Worker 多环境)。 */\ninterface BrepkitKernelSharedState {\n stateVersion: number\n customInitFn: BrepKitInitFn | null\n initPromise: Promise<BrepKitKernel> | null\n}\n\n/**\n * 获取 brepkit 内核共享状态(单例)。\n *\n * 挂在 globalThis 上是为了让\"两份 faijs 代码\"(宿主 bundle 一份、第三方库\n * 外部化一份)共享同一份内核状态——否则两份 initPromise 导致内核各自初始化、\n * 句柄不互通(几何孤岛)。\n *\n * @returns the shared brepkit kernel state singleton.\n */\nfunction getBrepkitKernelSharedState(): BrepkitKernelSharedState {\n const g = globalThis as unknown as Record<string, unknown>\n const existing = g[BREPKIT_KERNEL_KEY] as BrepkitKernelSharedState | undefined\n if (existing) {\n if (existing.stateVersion !== BREPKIT_KERNEL_STATE_VERSION) {\n throw new Error(\n `[faijs] brepkit kernel state version mismatch: loaded=${existing.stateVersion}, expected=${BREPKIT_KERNEL_STATE_VERSION}`,\n )\n }\n return existing\n }\n const created: BrepkitKernelSharedState = {\n stateVersion: BREPKIT_KERNEL_STATE_VERSION,\n customInitFn: null,\n initPromise: null,\n }\n g[BREPKIT_KERNEL_KEY] = created\n return created\n}\n\n/**\n * 注入自定义 brepkit wasm 初始化函数(宿主装配期调用一次)。写入共享挂点——\n * 任意 faijs 实例(含 CDN 外部化实例 / 小程序 Worker 副实例)都优先使用。\n * @param fn - the initialization function to use, or null to clear\n */\nexport function setBrepkitWasmInitFn(fn: (() => Promise<BrepKitKernel>) | null): void {\n const s = getBrepkitKernelSharedState()\n s.customInitFn = fn\n // 挂点变化后丢弃进行中的初始化(下一次 init 用新挂点重来)。\n s.initPromise = null\n}\n\n/**\n * 初始化并返回 BrepKernel 单例(幂等:多次调用共享同一次初始化)。\n * @returns Promise 解析为 BrepKernel 实例。\n */\nexport function initBrepkitWasm(): Promise<BrepKitKernel> {\n const s = getBrepkitKernelSharedState()\n if (s.initPromise) return s.initPromise\n s.initPromise = (async (): Promise<BrepKitKernel> => {\n if (s.customInitFn) return await s.customInitFn()\n // node 环境(单测 / CLI):npm 包默认装载路径\n\n if (typeof process !== 'undefined' && process.versions?.node) {\n // Non-literal specifier: @faicad/brepkit2-wasm is an optional runtime\n // injection (a devDependency for tests; hosts inject their own loader) —\n // a literal would make tsc fail with TS2307 when the package is absent.\n // A missing package surfaces at runtime (below).\n const specifier = '@faicad/brepkit2-wasm'\n const mod = (await import(/* @vite-ignore */ specifier)) as {\n BrepKernel: new () => BrepKitKernel\n }\n if (!mod?.BrepKernel) {\n throw new Error('initBrepkitWasm: @faicad/brepkit2-wasm is not installed; install it or call setBrepkitWasmInitFn() first.')\n }\n return new mod.BrepKernel() as BrepKitKernel\n }\n throw new Error('initBrepkitWasm: no init function set and not in Node environment. Call setBrepkitWasmInitFn() first.')\n })()\n return s.initPromise\n}\n\n/** 是否已初始化完成(测试诊断用)。\n * @returns true 表示 init 已启动/完成。 */\nexport function isBrepkitInitialized(): boolean {\n return getBrepkitKernelSharedState().initPromise !== null\n}\n\n/**\n * 丢弃当前初始化结果(测试收尾 / 内核释放后调用)。\n *\n * `disposeBrepkit()` 必须调它——否则已释放的内核仍被缓存的 `initPromise` 引用,\n * 下一次 `initBrepkitWasm()` 会返回**已释放**的内核(实测报 `null pointer passed\n * to rust`)。`customInitFn` 不受影响(宿主注入的装载路径仍在)。\n */\nexport function resetBrepkitWasm(): void {\n getBrepkitKernelSharedState().initPromise = null\n}\n"]}
1
+ {"version":3,"file":"brepkitWasm.js","sourceRoot":"","sources":["../../src/brepkit-kernel/brepkitWasm.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAOH,gEAAgE;AAChE,+DAA+D;AAC/D,8CAA8C;AAC9C,0DAA0D;AAC1D,yCAAyC;AACzC,uCAAuC;AAEvC,MAAM,kBAAkB,GAAG,iCAAiC,CAAA;AAC5D,MAAM,4BAA4B,GAAG,CAAC,CAAA;AAStC;;;;;;;;GAQG;AACH,SAAS,2BAA2B;IAClC,MAAM,CAAC,GAAG,UAAgD,CAAA;IAC1D,MAAM,QAAQ,GAAG,CAAC,CAAC,kBAAkB,CAAyC,CAAA;IAC9E,IAAI,QAAQ,EAAE,CAAC;QACb,IAAI,QAAQ,CAAC,YAAY,KAAK,4BAA4B,EAAE,CAAC;YAC3D,MAAM,IAAI,KAAK,CACb,yDAAyD,QAAQ,CAAC,YAAY,cAAc,4BAA4B,EAAE,CAC3H,CAAA;QACH,CAAC;QACD,OAAO,QAAQ,CAAA;IACjB,CAAC;IACD,MAAM,OAAO,GAA6B;QACxC,YAAY,EAAE,4BAA4B;QAC1C,YAAY,EAAE,IAAI;QAClB,WAAW,EAAE,IAAI;KAClB,CAAA;IACD,CAAC,CAAC,kBAAkB,CAAC,GAAG,OAAO,CAAA;IAC/B,OAAO,OAAO,CAAA;AAChB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,EAAyC;IAC5E,MAAM,CAAC,GAAG,2BAA2B,EAAE,CAAA;IACvC,CAAC,CAAC,YAAY,GAAG,EAAE,CAAA;IACnB,mCAAmC;IACnC,CAAC,CAAC,WAAW,GAAG,IAAI,CAAA;AACtB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe;IAC7B,MAAM,CAAC,GAAG,2BAA2B,EAAE,CAAA;IACvC,IAAI,CAAC,CAAC,WAAW;QAAE,OAAO,CAAC,CAAC,WAAW,CAAA;IACvC,CAAC,CAAC,WAAW,GAAG,CAAC,KAAK,IAA4B,EAAE;QAClD,IAAI,CAAC,CAAC,YAAY;YAAE,OAAO,MAAM,CAAC,CAAC,YAAY,EAAE,CAAA;QACjD,gCAAgC;QAEhC,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC;YAC7D,6DAA6D;YAC7D,yEAAyE;YACzE,wEAAwE;YACxE,iDAAiD;YACjD,sDAAsD;YACtD,uEAAuE;YACvE,MAAM,SAAS,GAAG,cAAc,CAAA;YAChC,MAAM,GAAG,GAAG,CAAC,MAAM,MAAM,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAEtD,CAAA;YACD,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,CAAC;gBACrB,MAAM,IAAI,KAAK,CAAC,kGAAkG,CAAC,CAAA;YACrH,CAAC;YACD,OAAO,IAAI,GAAG,CAAC,UAAU,EAAmB,CAAA;QAC9C,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,uGAAuG,CAAC,CAAA;IAC1H,CAAC,CAAC,EAAE,CAAA;IACJ,OAAO,CAAC,CAAC,WAAW,CAAA;AACtB,CAAC;AAED;mCACmC;AACnC,MAAM,UAAU,oBAAoB;IAClC,OAAO,2BAA2B,EAAE,CAAC,WAAW,KAAK,IAAI,CAAA;AAC3D,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB;IAC9B,2BAA2B,EAAE,CAAC,WAAW,GAAG,IAAI,CAAA;AAClD,CAAC","sourcesContent":["/**\n * brepkit-kernel/brepkitWasm — brepkit-wasm 装载(setOcctWasmInitFn 同构的注入点)\n *\n * 装载策略(与 occt-kernel 一致):\n * - 宿主可调用 setBrepkitWasmInitFn(fn) 注入自定义初始化函数\n * (小程序 Worker 传 WXWebAssembly 实例化路径;node 测试走 npm 包默认 init);\n * - 未注入时,node 环境直接 require('brepkit-wasm')(v4.x 官方包,胶水零 eval,可直接装载);\n * 注意:不是 @faicad/brepkit2-wasm(v2 fork 已弃用,见 weapp scripts/rebuild-brepkit-wasm.mjs\n * 的「VENDOR WASM 来源」注释)——两者 fillet/chamfer 内核行为不同。\n * - 两边都没有 → 抛带上下文的错误(报错好于掩盖,禁止静默回退)。\n */\n\n/** brepkit 内核实例形态(BrepKernel 类,228 个方法;类型面见 npm 包 brepkit_wasm.d.ts)。 */\nexport type BrepKitKernel = any\n\ntype BrepKitInitFn = () => Promise<BrepKitKernel>\n\n// 2026-09-26 跨实例共享(随 0.18.2 发布):customInitFn / initPromise 从模块级\n// 单例提升为挂在 globalThis 上的共享状态(与 occtKernel.ts / runtime-state.ts\n// 同款设计)。原因:CDN 外部化的 faijs 多实例各自持有独立内核 → 句柄不互通\n// (occtKernel.ts 顶部注释详述);小程序 Worker 场景同理。挂到 globalThis 后,\n// 任一实例 initBrepkitWasm() 产出的内核全局可见,句柄互通。\n// 构建期去重(external / dedupe)仍是主手段,这里是兜底。\n\nconst BREPKIT_KERNEL_KEY = '__FAICAD_FAIJS_BREPKIT_KERNEL__'\nconst BREPKIT_KERNEL_STATE_VERSION = 1\n\n/** brepkit 内核共享状态(跨 faijs 模块实例,浏览器/Node/小程序 Worker 多环境)。 */\ninterface BrepkitKernelSharedState {\n stateVersion: number\n customInitFn: BrepKitInitFn | null\n initPromise: Promise<BrepKitKernel> | null\n}\n\n/**\n * 获取 brepkit 内核共享状态(单例)。\n *\n * 挂在 globalThis 上是为了让\"两份 faijs 代码\"(宿主 bundle 一份、第三方库\n * 外部化一份)共享同一份内核状态——否则两份 initPromise 导致内核各自初始化、\n * 句柄不互通(几何孤岛)。\n *\n * @returns the shared brepkit kernel state singleton.\n */\nfunction getBrepKitKernelSharedState(): BrepkitKernelSharedState {\n const g = globalThis as unknown as Record<string, unknown>\n const existing = g[BREPKIT_KERNEL_KEY] as BrepkitKernelSharedState | undefined\n if (existing) {\n if (existing.stateVersion !== BREPKIT_KERNEL_STATE_VERSION) {\n throw new Error(\n `[faijs] brepkit kernel state version mismatch: loaded=${existing.stateVersion}, expected=${BREPKIT_KERNEL_STATE_VERSION}`,\n )\n }\n return existing\n }\n const created: BrepkitKernelSharedState = {\n stateVersion: BREPKIT_KERNEL_STATE_VERSION,\n customInitFn: null,\n initPromise: null,\n }\n g[BREPKIT_KERNEL_KEY] = created\n return created\n}\n\n/**\n * 注入自定义 brepkit wasm 初始化函数(宿主装配期调用一次)。写入共享挂点——\n * 任意 faijs 实例(含 CDN 外部化实例 / 小程序 Worker 副实例)都优先使用。\n * @param fn - the initialization function to use, or null to clear\n */\nexport function setBrepkitWasmInitFn(fn: (() => Promise<BrepKitKernel>) | null): void {\n const s = getBrepKitKernelSharedState()\n s.customInitFn = fn\n // 挂点变化后丢弃进行中的初始化(下一次 init 用新挂点重来)。\n s.initPromise = null\n}\n\n/**\n * 初始化并返回 BrepKernel 单例(幂等:多次调用共享同一次初始化)。\n * @returns Promise 解析为 BrepKernel 实例。\n */\nexport function initBrepkitWasm(): Promise<BrepKitKernel> {\n const s = getBrepKitKernelSharedState()\n if (s.initPromise) return s.initPromise\n s.initPromise = (async (): Promise<BrepKitKernel> => {\n if (s.customInitFn) return await s.customInitFn()\n // node 环境(单测 / CLI):npm 包默认装载路径\n\n if (typeof process !== 'undefined' && process.versions?.node) {\n // Non-literal specifier: brepkit-wasm is an optional runtime\n // injection (a devDependency for tests; hosts inject their own loader) —\n // a literal would make tsc fail with TS2307 when the package is absent.\n // A missing package surfaces at runtime (below).\n // ⚠️ 版本线:v4 官方包(C:/git/opencascade/brepkit 源码,见 weapp\n // rebuild-brepkit-wasm.mjs「VENDOR WASM 来源」)。勿换回 @faicad/brepkit2-wasm。\n const specifier = 'brepkit-wasm'\n const mod = (await import(/* @vite-ignore */ specifier)) as {\n BrepKernel: new () => BrepKitKernel\n }\n if (!mod?.BrepKernel) {\n throw new Error('initBrepkitWasm: brepkit-wasm is not installed; install it or call setBrepkitWasmInitFn() first.')\n }\n return new mod.BrepKernel() as BrepKitKernel\n }\n throw new Error('initBrepkitWasm: no init function set and not in Node environment. Call setBrepkitWasmInitFn() first.')\n })()\n return s.initPromise\n}\n\n/** 是否已初始化完成(测试诊断用)。\n * @returns true 表示 init 已启动/完成。 */\nexport function isBrepkitInitialized(): boolean {\n return getBrepKitKernelSharedState().initPromise !== null\n}\n\n/**\n * 丢弃当前初始化结果(测试收尾 / 内核释放后调用)。\n *\n * `disposeBrepkit()` 必须调它——否则已释放的内核仍被缓存的 `initPromise` 引用,\n * 下一次 `initBrepkitWasm()` 会返回**已释放**的内核(实测报 `null pointer passed\n * to rust`)。`customInitFn` 不受影响(宿主注入的装载路径仍在)。\n */\nexport function resetBrepkitWasm(): void {\n getBrepKitKernelSharedState().initPromise = null\n}\n"]}
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * 让 faijs 测试在同一 Node 进程内切换三个 brepkit 内核版本:
5
5
  * - 2.129.15(上游 `brepkit-wasm` 基线,MIT OR Apache-2.0)
6
- * - 2.130.0(Faicad fork `@faicad/brepkit2-wasm`,仓库当前 devDependency)
6
+ * - 4.1.49(上游 `brepkit-wasm`,仓库当前 devDependency)
7
7
  * - 4.0.32(上游 `brepkit-wasm` 的 npm dist-tag latest)
8
8
  *
9
9
  * 解包产物位于 `_test-kernels/brepkit-<version>/package/`(由 `npm pack` 拉取并解包,
@@ -21,7 +21,7 @@
21
21
  * 实例化,故按绝对路径 import 即天然隔离,不会与 node_modules 的包名缓存冲突。
22
22
  */
23
23
  /** 可在同进程切换的 brepkit 内核版本。 */
24
- export type BrepkitTestVersion = '2.129.15' | '2.130.0' | '4.0.32';
24
+ export type BrepkitTestVersion = '2.129.15' | '4.1.49' | '4.0.32';
25
25
  /**
26
26
  * 切换到指定 brepkit-wasm 版本并重新注册为 BREP 引擎。
27
27
  *
@@ -1 +1 @@
1
- {"version":3,"file":"multi-version-test.d.ts","sourceRoot":"","sources":["../../src/brepkit-kernel/multi-version-test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AASH,6BAA6B;AAC7B,MAAM,MAAM,kBAAkB,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAA;AA+ClE;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAYnF;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CAI3D;AAED,wBAAwB;AACxB,eAAO,MAAM,iBAAiB,2BAAmB,CAAA"}
1
+ {"version":3,"file":"multi-version-test.d.ts","sourceRoot":"","sources":["../../src/brepkit-kernel/multi-version-test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AASH,6BAA6B;AAC7B,MAAM,MAAM,kBAAkB,GAAG,UAAU,GAAG,QAAQ,GAAG,QAAQ,CAAA;AA+CjE;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAYnF;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CAI3D;AAED,wBAAwB;AACxB,eAAO,MAAM,iBAAiB,2BAAmB,CAAA"}
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * 让 faijs 测试在同一 Node 进程内切换三个 brepkit 内核版本:
5
5
  * - 2.129.15(上游 `brepkit-wasm` 基线,MIT OR Apache-2.0)
6
- * - 2.130.0(Faicad fork `@faicad/brepkit2-wasm`,仓库当前 devDependency)
6
+ * - 4.1.49(上游 `brepkit-wasm`,仓库当前 devDependency)
7
7
  * - 4.0.32(上游 `brepkit-wasm` 的 npm dist-tag latest)
8
8
  *
9
9
  * 解包产物位于 `_test-kernels/brepkit-<version>/package/`(由 `npm pack` 拉取并解包,
@@ -26,24 +26,24 @@ import { setBrepkitWasmInitFn } from './brepkitWasm.js';
26
26
  import { disposeBrepkit } from './brepkitKernel.js';
27
27
  import { __resetEngineRegistriesForTests } from '../brep/engine/registry.js';
28
28
  import { registerBrepkitBrepEngine } from '../brep/engine/adapters/brepkit.js';
29
- /** 解包版本(2.129.15 / 4.0.32)相对本辅助文件的目录名;2.130.0 走 node_modules。 */
29
+ /** 解包版本(2.129.15 / 4.0.32)相对本辅助文件的目录名;4.1.49 走 node_modules。 */
30
30
  const UNPACKED_PKG_DIR = ['2.129.15', '4.0.32'];
31
31
  /** 本辅助文件所在目录(vite-node / 原生 ESM 在 node 环境下均暴露 file:// 源文件 URL)。 */
32
32
  const hereDir = dirname(fileURLToPath(import.meta.url));
33
33
  /**
34
34
  * 从指定版本装载 BrepKernel 类。
35
35
  *
36
- * - 2.130.0:复用 node_modules 默认包路径(与 brepkitWasm.ts 生产路径一致)。
36
+ * - 4.1.49:复用 node_modules 默认包路径(与 brepkitWasm.ts 生产路径一致)。
37
37
  * - 2.129.15 / 4.0.32:按绝对路径动态 import 解包后的 node cjs 入口;
38
38
  * vite 注释标记让 vite-node 不拦截、交回原生 Node ESM 装载,
39
39
  * cjs 入口内部用 __dirname 相对定位 wasm,因此与 cwd 无关。
40
40
  */
41
41
  async function loadBrepKernelClass(version) {
42
- if (version === '2.130.0') {
42
+ if (version === '4.1.49') {
43
43
  // node_modules 默认路径(与 brepkitWasm.ts 生产装载同 specifier)。
44
- const mod = (await import(/* @vite-ignore */ '@faicad/brepkit2-wasm'));
44
+ const mod = (await import(/* @vite-ignore */ 'brepkit-wasm'));
45
45
  if (!mod?.BrepKernel) {
46
- throw new Error(`[multi-version] 2.130.0: node_modules @faicad/brepkit2-wasm 未导出 BrepKernel`);
46
+ throw new Error(`[multi-version] 4.1.49: node_modules brepkit-wasm 未导出 BrepKernel`);
47
47
  }
48
48
  return mod.BrepKernel;
49
49
  }
@@ -1 +1 @@
1
- {"version":3,"file":"multi-version-test.js","sourceRoot":"","sources":["../../src/brepkit-kernel/multi-version-test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACvD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,oBAAoB,EAAsB,MAAM,eAAe,CAAA;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,EAAE,+BAA+B,EAAE,MAAM,yBAAyB,CAAA;AACzE,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAA;AAK3E,iEAAiE;AACjE,MAAM,gBAAgB,GAA6C,CAAC,UAAU,EAAE,QAAQ,CAAU,CAAA;AAElG,mEAAmE;AACnE,MAAM,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;AAIvD;;;;;;;GAOG;AACH,KAAK,UAAU,mBAAmB,CAAC,OAA2B;IAC5D,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,uDAAuD;QACvD,MAAM,GAAG,GAAG,CAAC,MAAM,MAAM,CAAC,kBAAkB,CAAC,uBAAuB,CAAC,CAEpE,CAAA;QACD,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,4EAA4E,CAAC,CAAA;QAC/F,CAAC;QACD,OAAO,GAAG,CAAC,UAAU,CAAA;IACvB,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAClB,OAAO,EACP,eAAe,EACf,WAAW,OAAO,EAAE,EACpB,SAAS,EACT,uBAAuB,CACxB,CAAA;IACD,iEAAiE;IACjE,MAAM,GAAG,GAAG,CAAC,MAAM,MAAM,CAAC,kBAAkB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAExE,CAAA;IACD,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,mBAAmB,OAAO,KAAK,OAAO,iBAAiB,CAAC,CAAA;IAC1E,CAAC;IACD,OAAO,GAAG,CAAC,UAAU,CAAA;AACvB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,OAA2B;IAClE,2DAA2D;IAC3D,cAAc,EAAE,CAAA;IAChB,yDAAyD;IACzD,oBAAoB,CAAC,KAAK,IAAI,EAAE;QAC9B,MAAM,IAAI,GAAG,MAAM,mBAAmB,CAAC,OAAO,CAAC,CAAA;QAC/C,OAAO,IAAI,IAAI,EAAE,CAAA;IACnB,CAAC,CAAC,CAAA;IACF,8CAA8C;IAC9C,+BAA+B,EAAE,CAAA;IACjC,yEAAyE;IACzE,MAAM,yBAAyB,EAAE,CAAA;AACnC,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB;IACzC,cAAc,EAAE,CAAA;IAChB,oBAAoB,CAAC,IAAI,CAAC,CAAA;IAC1B,+BAA+B,EAAE,CAAA;AACnC,CAAC;AAED,wBAAwB;AACxB,MAAM,CAAC,MAAM,iBAAiB,GAAG,gBAAgB,CAAA","sourcesContent":["/**\n * brepkit-kernel/multi-version-test — 同进程多版本 brepkit-wasm 装载辅助(仅测试用)\n *\n * 让 faijs 测试在同一 Node 进程内切换三个 brepkit 内核版本:\n * - 2.129.15(上游 `brepkit-wasm` 基线,MIT OR Apache-2.0)\n * - 2.130.0(Faicad fork `@faicad/brepkit2-wasm`,仓库当前 devDependency)\n * - 4.0.32(上游 `brepkit-wasm` 的 npm dist-tag latest)\n *\n * 解包产物位于 `_test-kernels/brepkit-<version>/package/`(由 `npm pack` 拉取并解包,\n * 已 gitignore,不进入 dist / 不提交)。2.130.0 直接走 node_modules。\n *\n * 切换序列(与 brep/engine/measurement-parity.test.ts 的 reset+重注册范式一致,\n * 全程只经公开导出 API 操作,不改动内核源码):\n * 1. disposeBrepkit() —— 释放 liveKernel 单例\n * 2. setBrepkitWasmInitFn(customFn) —— 重置 initPromise 并注入新版本装载函数\n * 3. __resetEngineRegistriesForTests() —— 清空引擎注册表(provider/cache/默认)\n * 4. registerBrepkitBrepEngine() —— 用新版本重新注册(内部触发 wasm 装载)\n *\n * customFn 内从对应版本的绝对路径取 BrepKernel 类并 `new` 之——三个版本的 cjs\n * 入口(brepkit_wasm_node.cjs)在加载时同步 readFileSync 自身同目录的 wasm 并\n * 实例化,故按绝对路径 import 即天然隔离,不会与 node_modules 的包名缓存冲突。\n */\n\nimport { fileURLToPath, pathToFileURL } from 'node:url'\nimport { dirname, join } from 'node:path'\nimport { setBrepkitWasmInitFn, type BrepKitKernel } from './brepkitWasm'\nimport { disposeBrepkit } from './brepkitKernel'\nimport { __resetEngineRegistriesForTests } from '../brep/engine/registry'\nimport { registerBrepkitBrepEngine } from '../brep/engine/adapters/brepkit'\n\n/** 可在同进程切换的 brepkit 内核版本。 */\nexport type BrepkitTestVersion = '2.129.15' | '2.130.0' | '4.0.32'\n\n/** 解包版本(2.129.15 / 4.0.32)相对本辅助文件的目录名;2.130.0 走 node_modules。 */\nconst UNPACKED_PKG_DIR: Exclude<BrepkitTestVersion, '2.130.0'>[] = ['2.129.15', '4.0.32'] as const\n\n/** 本辅助文件所在目录(vite-node / 原生 ESM 在 node 环境下均暴露 file:// 源文件 URL)。 */\nconst hereDir = dirname(fileURLToPath(import.meta.url))\n\ntype BrepKernelCtor = new () => BrepKitKernel\n\n/**\n * 从指定版本装载 BrepKernel 类。\n *\n * - 2.130.0:复用 node_modules 默认包路径(与 brepkitWasm.ts 生产路径一致)。\n * - 2.129.15 / 4.0.32:按绝对路径动态 import 解包后的 node cjs 入口;\n * vite 注释标记让 vite-node 不拦截、交回原生 Node ESM 装载,\n * cjs 入口内部用 __dirname 相对定位 wasm,因此与 cwd 无关。\n */\nasync function loadBrepKernelClass(version: BrepkitTestVersion): Promise<BrepKernelCtor> {\n if (version === '2.130.0') {\n // node_modules 默认路径(与 brepkitWasm.ts 生产装载同 specifier)。\n const mod = (await import(/* @vite-ignore */ '@faicad/brepkit2-wasm')) as {\n BrepKernel?: BrepKernelCtor\n }\n if (!mod?.BrepKernel) {\n throw new Error(`[multi-version] 2.130.0: node_modules @faicad/brepkit2-wasm 未导出 BrepKernel`)\n }\n return mod.BrepKernel\n }\n\n const cjsPath = join(\n hereDir,\n '_test-kernels',\n `brepkit-${version}`,\n 'package',\n 'brepkit_wasm_node.cjs',\n )\n // 原生 Node ESM import CJS:返回 namespace,命名导出经 cjs-module-lexer 暴露。\n const mod = (await import(/* @vite-ignore */ pathToFileURL(cjsPath).href)) as {\n BrepKernel?: BrepKernelCtor\n }\n if (!mod?.BrepKernel) {\n throw new Error(`[multi-version] ${version}: ${cjsPath} 未导出 BrepKernel`)\n }\n return mod.BrepKernel\n}\n\n/**\n * 切换到指定 brepkit-wasm 版本并重新注册为 BREP 引擎。\n *\n * 抛出的错误(wasm 装载失败 / BrepKernel 缺失 / 构造抛错)一律原样上抛,\n * 不在此 try-catch 掩盖——测试需要看到真实失败原因。\n * @param version - 目标 brepkit-wasm 版本标识(BrepkitTestVersion 联合类型之一)。\n */\nexport async function loadBrepkitVersion(version: BrepkitTestVersion): Promise<void> {\n // 1. 释放旧 liveKernel(wasm 模块级实例仍驻留,但 JS 句柄与 liveKernel 解绑)。\n disposeBrepkit()\n // 2. 注入新版本装载函数(setBrepkitWasmInitFn 内部同时清空 initPromise)。\n setBrepkitWasmInitFn(async () => {\n const Ctor = await loadBrepKernelClass(version)\n return new Ctor()\n })\n // 3. 清空引擎注册表(provider/cache/默认 id/frozen 标志)。\n __resetEngineRegistriesForTests()\n // 4. 重新注册:内部 createBrepkitPrimitives → initBrepkitWasm → 上面注入的 customFn。\n await registerBrepkitBrepEngine()\n}\n\n/**\n * 测试收尾:dispose + 清掉自定义 initFn(恢复默认 node_modules 装载路径)+ 清注册表。\n * 不重新注册任何引擎——收尾后本进程不再假定默认 BREP 引擎。\n */\nexport async function resetToDefaultBrepkit(): Promise<void> {\n disposeBrepkit()\n setBrepkitWasmInitFn(null)\n __resetEngineRegistriesForTests()\n}\n\n/** 解包版本目录清单(诊断/校验用)。 */\nexport const UNPACKED_VERSIONS = UNPACKED_PKG_DIR\n"]}
1
+ {"version":3,"file":"multi-version-test.js","sourceRoot":"","sources":["../../src/brepkit-kernel/multi-version-test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACvD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,oBAAoB,EAAsB,MAAM,eAAe,CAAA;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,EAAE,+BAA+B,EAAE,MAAM,yBAAyB,CAAA;AACzE,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAA;AAK3E,gEAAgE;AAChE,MAAM,gBAAgB,GAA4C,CAAC,UAAU,EAAE,QAAQ,CAAU,CAAA;AAEjG,mEAAmE;AACnE,MAAM,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;AAIvD;;;;;;;GAOG;AACH,KAAK,UAAU,mBAAmB,CAAC,OAA2B;IAC5D,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,uDAAuD;QACvD,MAAM,GAAG,GAAG,CAAC,MAAM,MAAM,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAE3D,CAAA;QACD,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAA;QACrF,CAAC;QACD,OAAO,GAAG,CAAC,UAAU,CAAA;IACvB,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAClB,OAAO,EACP,eAAe,EACf,WAAW,OAAO,EAAE,EACpB,SAAS,EACT,uBAAuB,CACxB,CAAA;IACD,iEAAiE;IACjE,MAAM,GAAG,GAAG,CAAC,MAAM,MAAM,CAAC,kBAAkB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAExE,CAAA;IACD,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,mBAAmB,OAAO,KAAK,OAAO,iBAAiB,CAAC,CAAA;IAC1E,CAAC;IACD,OAAO,GAAG,CAAC,UAAU,CAAA;AACvB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,OAA2B;IAClE,2DAA2D;IAC3D,cAAc,EAAE,CAAA;IAChB,yDAAyD;IACzD,oBAAoB,CAAC,KAAK,IAAI,EAAE;QAC9B,MAAM,IAAI,GAAG,MAAM,mBAAmB,CAAC,OAAO,CAAC,CAAA;QAC/C,OAAO,IAAI,IAAI,EAAE,CAAA;IACnB,CAAC,CAAC,CAAA;IACF,8CAA8C;IAC9C,+BAA+B,EAAE,CAAA;IACjC,yEAAyE;IACzE,MAAM,yBAAyB,EAAE,CAAA;AACnC,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB;IACzC,cAAc,EAAE,CAAA;IAChB,oBAAoB,CAAC,IAAI,CAAC,CAAA;IAC1B,+BAA+B,EAAE,CAAA;AACnC,CAAC;AAED,wBAAwB;AACxB,MAAM,CAAC,MAAM,iBAAiB,GAAG,gBAAgB,CAAA","sourcesContent":["/**\n * brepkit-kernel/multi-version-test — 同进程多版本 brepkit-wasm 装载辅助(仅测试用)\n *\n * 让 faijs 测试在同一 Node 进程内切换三个 brepkit 内核版本:\n * - 2.129.15(上游 `brepkit-wasm` 基线,MIT OR Apache-2.0)\n * - 4.1.49(上游 `brepkit-wasm`,仓库当前 devDependency)\n * - 4.0.32(上游 `brepkit-wasm` 的 npm dist-tag latest)\n *\n * 解包产物位于 `_test-kernels/brepkit-<version>/package/`(由 `npm pack` 拉取并解包,\n * 已 gitignore,不进入 dist / 不提交)。2.130.0 直接走 node_modules。\n *\n * 切换序列(与 brep/engine/measurement-parity.test.ts 的 reset+重注册范式一致,\n * 全程只经公开导出 API 操作,不改动内核源码):\n * 1. disposeBrepkit() —— 释放 liveKernel 单例\n * 2. setBrepkitWasmInitFn(customFn) —— 重置 initPromise 并注入新版本装载函数\n * 3. __resetEngineRegistriesForTests() —— 清空引擎注册表(provider/cache/默认)\n * 4. registerBrepkitBrepEngine() —— 用新版本重新注册(内部触发 wasm 装载)\n *\n * customFn 内从对应版本的绝对路径取 BrepKernel 类并 `new` 之——三个版本的 cjs\n * 入口(brepkit_wasm_node.cjs)在加载时同步 readFileSync 自身同目录的 wasm 并\n * 实例化,故按绝对路径 import 即天然隔离,不会与 node_modules 的包名缓存冲突。\n */\n\nimport { fileURLToPath, pathToFileURL } from 'node:url'\nimport { dirname, join } from 'node:path'\nimport { setBrepkitWasmInitFn, type BrepKitKernel } from './brepkitWasm'\nimport { disposeBrepkit } from './brepkitKernel'\nimport { __resetEngineRegistriesForTests } from '../brep/engine/registry'\nimport { registerBrepkitBrepEngine } from '../brep/engine/adapters/brepkit'\n\n/** 可在同进程切换的 brepkit 内核版本。 */\nexport type BrepkitTestVersion = '2.129.15' | '4.1.49' | '4.0.32'\n\n/** 解包版本(2.129.15 / 4.0.32)相对本辅助文件的目录名;4.1.49 走 node_modules。 */\nconst UNPACKED_PKG_DIR: Exclude<BrepkitTestVersion, '4.1.49'>[] = ['2.129.15', '4.0.32'] as const\n\n/** 本辅助文件所在目录(vite-node / 原生 ESM 在 node 环境下均暴露 file:// 源文件 URL)。 */\nconst hereDir = dirname(fileURLToPath(import.meta.url))\n\ntype BrepKernelCtor = new () => BrepKitKernel\n\n/**\n * 从指定版本装载 BrepKernel 类。\n *\n * - 4.1.49:复用 node_modules 默认包路径(与 brepkitWasm.ts 生产路径一致)。\n * - 2.129.15 / 4.0.32:按绝对路径动态 import 解包后的 node cjs 入口;\n * vite 注释标记让 vite-node 不拦截、交回原生 Node ESM 装载,\n * cjs 入口内部用 __dirname 相对定位 wasm,因此与 cwd 无关。\n */\nasync function loadBrepKernelClass(version: BrepkitTestVersion): Promise<BrepKernelCtor> {\n if (version === '4.1.49') {\n // node_modules 默认路径(与 brepkitWasm.ts 生产装载同 specifier)。\n const mod = (await import(/* @vite-ignore */ 'brepkit-wasm')) as {\n BrepKernel?: BrepKernelCtor\n }\n if (!mod?.BrepKernel) {\n throw new Error(`[multi-version] 4.1.49: node_modules brepkit-wasm 未导出 BrepKernel`)\n }\n return mod.BrepKernel\n }\n\n const cjsPath = join(\n hereDir,\n '_test-kernels',\n `brepkit-${version}`,\n 'package',\n 'brepkit_wasm_node.cjs',\n )\n // 原生 Node ESM import CJS:返回 namespace,命名导出经 cjs-module-lexer 暴露。\n const mod = (await import(/* @vite-ignore */ pathToFileURL(cjsPath).href)) as {\n BrepKernel?: BrepKernelCtor\n }\n if (!mod?.BrepKernel) {\n throw new Error(`[multi-version] ${version}: ${cjsPath} 未导出 BrepKernel`)\n }\n return mod.BrepKernel\n}\n\n/**\n * 切换到指定 brepkit-wasm 版本并重新注册为 BREP 引擎。\n *\n * 抛出的错误(wasm 装载失败 / BrepKernel 缺失 / 构造抛错)一律原样上抛,\n * 不在此 try-catch 掩盖——测试需要看到真实失败原因。\n * @param version - 目标 brepkit-wasm 版本标识(BrepkitTestVersion 联合类型之一)。\n */\nexport async function loadBrepkitVersion(version: BrepkitTestVersion): Promise<void> {\n // 1. 释放旧 liveKernel(wasm 模块级实例仍驻留,但 JS 句柄与 liveKernel 解绑)。\n disposeBrepkit()\n // 2. 注入新版本装载函数(setBrepkitWasmInitFn 内部同时清空 initPromise)。\n setBrepkitWasmInitFn(async () => {\n const Ctor = await loadBrepKernelClass(version)\n return new Ctor()\n })\n // 3. 清空引擎注册表(provider/cache/默认 id/frozen 标志)。\n __resetEngineRegistriesForTests()\n // 4. 重新注册:内部 createBrepkitPrimitives → initBrepkitWasm → 上面注入的 customFn。\n await registerBrepkitBrepEngine()\n}\n\n/**\n * 测试收尾:dispose + 清掉自定义 initFn(恢复默认 node_modules 装载路径)+ 清注册表。\n * 不重新注册任何引擎——收尾后本进程不再假定默认 BREP 引擎。\n */\nexport async function resetToDefaultBrepkit(): Promise<void> {\n disposeBrepkit()\n setBrepkitWasmInitFn(null)\n __resetEngineRegistriesForTests()\n}\n\n/** 解包版本目录清单(诊断/校验用)。 */\nexport const UNPACKED_VERSIONS = UNPACKED_PKG_DIR\n"]}
package/dist/browser.d.ts CHANGED
@@ -27,6 +27,7 @@ export { createBrowserPorts } from './browser-host/index.js';
27
27
  export type { CreateBrowserPortsOptions } from './browser-host/index.js';
28
28
  export { createBrowserLibLoader, DEFAULT_CDN_BASE } from './cad-runtime/browser-lib-loader.js';
29
29
  export type { BrowserLibLoader, BrowserLibMeta, CreateBrowserLibLoaderOptions, } from './cad-runtime/browser-lib-loader.js';
30
+ export type { LibRole, LibDecl, LibMeta, LibFunctionView, LibDescription, LibCallableView, LibRejectedView, LibsUnderEngine, } from './cad-runtime/lib-decl.js';
30
31
  export { BrowserEventSink } from './browser-host/browser-event-sink.js';
31
32
  export { BrowserFontProvider } from './browser-host/browser-font-provider.js';
32
33
  export type { BrowserFontProviderOptions } from './browser-host/browser-font-provider.js';
@@ -38,7 +39,7 @@ export { importStep, importStepMultiPart, exportStep, releaseSolid, ensureOcctKe
38
39
  export type { ImportStepResult, ImportStepPartResult, ExportStepOptions } from './occt-kernel/highLevelApi.js';
39
40
  export type { OcctKernel, ShapeHandle, WasmTessellatedMesh, Mesh, MeshDeflectionOptions } from './occt-kernel/highLevelApi.js';
40
41
  export { registerOcctBrepEngine, OCCT_BREP_ENGINE_ID } from './brep/engine/adapters/occt.js';
41
- export { registerBrepEngine, getBrepEngine, hasBrepEngine, getActiveBrepEngineId, freezeEngineRegistries, registerMeshEngine, getMeshEngine, getActiveMeshEngineId, isMeshEngineRegistered, getMeshSolidBackend, } from './brep/engine/registry.js';
42
+ export { registerBrepEngine, getBrepEngine, getActiveBrepEngine, hasBrepEngine, getActiveBrepEngineId, freezeEngineRegistries, registerMeshEngine, getMeshEngine, getActiveMeshEngine, getActiveMeshEngineId, isMeshEngineRegistered, getMeshSolidBackend, } from './brep/engine/registry.js';
42
43
  export type { BrepEngine, BrepEngineProvider, MeshEngine } from './brep/engine/registry.js';
43
44
  export { MeshSolidRegistry, normalizeMeshSolid, describeMeshSolid, buildMeshSolidTopology, weldToleranceFor } from './brep/mesh-solid.js';
44
45
  export type { MeshSolidBackend, MeshSolidResult, MeshSolidKernelOps, MeshSolidInput, MeshSolidNormalizeOptions, } from './brep/mesh-solid.js';
@@ -86,8 +87,6 @@ export { geoToManifoldMesh, manifoldMeshToGeo } from './boolean/geo-convert.js';
86
87
  export { manifoldToMeshData, weldPositionsWorker, dovetailBooleanSplit, dowelOrTenonBooleanSplit, chainBoolean, meshToManifold } from './boolean/csg-core.js';
87
88
  export { previewMeshIntersect } from './boolean/manifold-preview.js';
88
89
  export type { ManifoldMeshData as PreviewManifoldMeshData } from './boolean/manifold-preview.js';
89
- export { setEngraveDecorationProvider, getEngraveDecorationProvider } from './mesh/decoration-provider.js';
90
- export type { EngraveDecorationProvider, EngraveDecorationParams } from './mesh/decoration-provider.js';
91
90
  export { runSdfInline } from './sdf/sdf-core.js';
92
91
  export { runSdf as runSdfMain } from './sdf/sdf-runner.js';
93
92
  export type { SdfMeshData as PreviewSdfMesh } from './sdf/sdf-runner.js';
@@ -1 +1 @@
1
- {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"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"}
package/dist/browser.js CHANGED
@@ -36,7 +36,7 @@ export { WorkerSdfBackend } from './browser-host/worker-sdf-backend.js';
36
36
  export { importStep, importStepMultiPart, exportStep, releaseSolid, ensureOcctKernel, disposeOcct, exportStepFromSolidsHighLevel } from './occt-kernel/highLevelApi.js';
37
37
  // ── BREP 引擎注册(宿主装配;引擎可切换——occt 只是默认实现) ──
38
38
  export { registerOcctBrepEngine, OCCT_BREP_ENGINE_ID } from './brep/engine/adapters/occt.js';
39
- export { registerBrepEngine, getBrepEngine, hasBrepEngine, getActiveBrepEngineId, freezeEngineRegistries, registerMeshEngine, getMeshEngine, getActiveMeshEngineId, isMeshEngineRegistered, getMeshSolidBackend, } from './brep/engine/registry.js';
39
+ export { registerBrepEngine, getBrepEngine, getActiveBrepEngine, hasBrepEngine, getActiveBrepEngineId, freezeEngineRegistries, registerMeshEngine, getMeshEngine, getActiveMeshEngine, getActiveMeshEngineId, isMeshEngineRegistered, getMeshSolidBackend, } from './brep/engine/registry.js';
40
40
  export { MeshSolidRegistry, normalizeMeshSolid, describeMeshSolid, buildMeshSolidTopology, weldToleranceFor } from './brep/mesh-solid.js';
41
41
  export { assertShapeSlotExclusive } from './cad-runtime/backend-dispatch.js';
42
42
  export { buildTopologyAdjacency } from './occt-kernel/topologyExt.js';
@@ -69,7 +69,6 @@ export { buildWedgeGeometry, buildDowelGeometry, buildStraightTenonGeometry, } f
69
69
  export { geoToManifoldMesh, manifoldMeshToGeo } from './boolean/geo-convert.js';
70
70
  export { manifoldToMeshData, weldPositionsWorker, dovetailBooleanSplit, dowelOrTenonBooleanSplit, chainBoolean, meshToManifold } from './boolean/csg-core.js';
71
71
  export { previewMeshIntersect } from './boolean/manifold-preview.js';
72
- export { setEngraveDecorationProvider, getEngraveDecorationProvider } from './mesh/decoration-provider.js';
73
72
  export { runSdfInline } from './sdf/sdf-core.js';
74
73
  export { runSdf as runSdfMain } from './sdf/sdf-runner.js';
75
74
  // Knurl D 类
@@ -1 +1 @@
1
- {"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @faicad/faijs/browser — Browser-safe exports (F6: A/B/C/D 四类收敛)\n *\n * Excludes L3 Node Host modules (node-host/*) that depend on node:fs/node:path.\n * Use this entry point in browser/worker contexts to avoid pulling in Node.js code.\n *\n * For full exports (including Node.js), use @faicad/faijs instead.\n *\n * 导出分类(契约 §11 白名单四类):\n * - A 类 = lang/ 全部导出(脚本类型 + 构建辅助 + 接口约定类型 + 常量)\n * - B 类 = cad-runtime/ + createBrowserPorts + 外部资源注入点 + 执行位置选项\n * - C 类 = 执行产物类型(Shape + 拓扑数据类型 + buildSelectorRuntimeMaps)\n * - D 类 = 辅助函数 + 预览 API(明确导出后使用)\n */\n\n// 共享面(env-agnostic:identity + runtime-state + lang/*)\nexport * from './env-agnostic'\n\n// ═══════════════════════════════════════════════════════════\n// B 类:cad-runtime/ + createBrowserPorts + 外部资源注入点\n// ═══════════════════════════════════════════════════════════\n\nexport { CadRuntime, createRuntime, createBareRuntime, AppendPrefixError } from './cad-runtime/runtime'\nexport { createPreviewExec } from './cad-runtime/preview-exec'\nexport type { PreviewExec } from './cad-runtime/preview-exec'\nexport type { ExecutionResult, ExecuteOptions, CheckResult, CheckError, PartTopology, TopologySource } from './cad-runtime/runtime'\nexport type {\n HostPorts,\n CsgBackend, SdfBackend, FontProvider, TextureSampler,\n AssetResolver, EventSink, ExecutionMode, HostEnv, LibLoader,\n MeshData, PlaneParams, SplitResult as CsgSplitResult,\n DovetailGrooveParams as PortDovetailGrooveParams,\n DowelSplitParams as PortDowelSplitParams,\n StraightTenonSplitParams as PortStraightTenonSplitParams,\n} from './cad-runtime/ports'\n\n// 外部资源注入点\nexport { setManifoldWasmUrl, getManifoldWasmUrl } from './mesh/manifold-loader'\nexport { setOcctWasmInitFn } from './occt-kernel/occtKernel'\nexport { setFontLoader, getFontLoader, loadFont, ensureDefaultFont, ensureFont, getFont, clearFonts } from './brep/text/fontRegistry'\nexport type { FontLoader } from './brep/text/fontRegistry'\nexport { setKnurlTextureLoader } from './mesh/knurl/textureLoader'\n\n// L3 Browser Host 工厂\nexport { createBrowserPorts } from './browser-host'\nexport type { CreateBrowserPortsOptions } from './browser-host'\nexport { createBrowserLibLoader, DEFAULT_CDN_BASE } from './cad-runtime/browser-lib-loader'\nexport type {\n BrowserLibLoader, BrowserLibMeta, CreateBrowserLibLoaderOptions,\n} from './cad-runtime/browser-lib-loader'\nexport { BrowserEventSink } from './browser-host/browser-event-sink'\nexport { BrowserFontProvider } from './browser-host/browser-font-provider'\nexport type { BrowserFontProviderOptions } from './browser-host/browser-font-provider'\nexport { FetchAssetResolver } from './browser-host/fetch-asset-resolver'\nexport type { FetchAssetResolverOptions } from './browser-host/fetch-asset-resolver'\nexport { WorkerCsgBackend } from './browser-host/worker-csg-backend'\nexport { WorkerSdfBackend } from './browser-host/worker-sdf-backend'\n\n// E12.2: OCCT 高层 API(B 类——宿主用这些替代底层 kernel 函数)\nexport { importStep, importStepMultiPart, exportStep, releaseSolid, ensureOcctKernel, disposeOcct, exportStepFromSolidsHighLevel } from './occt-kernel/highLevelApi'\nexport type { ImportStepResult, ImportStepPartResult, ExportStepOptions } from './occt-kernel/highLevelApi'\nexport type { OcctKernel, ShapeHandle, WasmTessellatedMesh, Mesh, MeshDeflectionOptions } from './occt-kernel/highLevelApi'\n\n// ── BREP 引擎注册(宿主装配;引擎可切换——occt 只是默认实现) ──\nexport { registerOcctBrepEngine, OCCT_BREP_ENGINE_ID } from './brep/engine/adapters/occt'\nexport {\n registerBrepEngine, getBrepEngine, hasBrepEngine, getActiveBrepEngineId, freezeEngineRegistries,\n registerMeshEngine, getMeshEngine, getActiveMeshEngineId, isMeshEngineRegistered, getMeshSolidBackend,\n} from './brep/engine/registry'\nexport type { BrepEngine, BrepEngineProvider, MeshEngine } from './brep/engine/registry'\nexport { MeshSolidRegistry, normalizeMeshSolid, describeMeshSolid, buildMeshSolidTopology, weldToleranceFor } from './brep/mesh-solid'\nexport type {\n MeshSolidBackend, MeshSolidResult, MeshSolidKernelOps, MeshSolidInput, MeshSolidNormalizeOptions,\n} from './brep/mesh-solid'\nexport { assertShapeSlotExclusive } from './cad-runtime/backend-dispatch'\nexport type { BrepEngineApi } from './brep/engine/primitives'\nexport type {\n BrepHandle, BrepMeshResult, BrepBoundingBox, BrepVec3, BrepEvolutionKind,\n BrepEvolutionData, BrepXcafDocument,\n} from './brep/engine/types'\nexport { buildTopologyAdjacency, type TopologyAdjacency } from './occt-kernel/topologyExt'\n\n// keep-syntax(P7):宿主守卫——outputs 现含 compound,消费端须区分\nexport { isCompoundLike } from './shape'\nexport { isMeshShape } from './mesh/types'\n\n// ═══════════════════════════════════════════════════════════\n// C 类:执行产物类型(Shape + 拓扑数据类型 + buildSelectorRuntimeMaps)\n// ═══════════════════════════════════════════════════════════\n\nexport type { Shape } from './mesh/types'\n\n// 拓扑数据类型\nexport type { SelectorRuntimeData } from './topology/build-selector-runtime'\nexport type {\n SelectorRuntime, SelectorBundle, SelectorManifest, SelectorBuffers,\n FaceRow, EdgeRow, Reference,\n BufferViewDescriptor, SelectorProxy,\n} from './topology/types'\n\nexport { buildSelectorRuntimeMaps } from './topology/build-selector-runtime'\nexport { TOPOLOGY_FACE_ID_NONE } from './topology/build-face-ids'\n\n// ── TopoRef 命名层(§3.7/§3.8:命名属于核心公共能力,随 browser/node 走)──\nexport * from './topology/naming'\n\n// D 类辅助:拓扑构建函数\nexport { buildSelectorRuntime, buildSelectorRuntimeData } from './topology/build-selector-runtime'\nexport { buildFaceIdsForPart } from './topology/build-face-ids'\nexport type { SolidTopologyResult } from './brep/brep-topology'\n\n// C 类辅助:面查询\nexport { faceAt } from './mesh/query'\nexport type {\n BoundingBox, FaceDescriptor,\n BoxParams, SphereParams, CylinderParams, ConeParams, WedgeParams,\n TextParams, SvgExtrudeParams, SdfParams,\n DrillParams, ExtrudeParams, EngraveParams, KnurlParams,\n SplitPlane, SplitResult,\n} from './mesh/types'\nexport { NRAD_DEFAULT, NRAD_MIN, NRAD_MAX, clampNRad } from './mesh/types'\n\n// SDF 类型\nexport type { SdfMeshData } from './sdf/sdf-runner'\nexport { SDF_TEMPLATES, DEFAULT_SDF_TEMPLATE } from './sdf/templates'\nexport type {\n SdfMeta, SdfBox, SdfParamDef, SdfTemplateCategory,\n SdfWorkerInput, SdfWorkerMessage,\n} from './sdf/types'\nexport { boxToTuple, parseParamDefs, defaultParamValues } from './sdf/types'\n\n// Primitive 类型\nexport type {\n PrimitiveType, PrimitiveParamsRecord, PrimitiveArgsRecord, PrimitiveMeta,\n} from './primitives/types'\nexport { nextPrimitiveColor } from './primitives/types'\nexport type { ScrewParams, ScrewSpec, ScrewSystem } from './primitives/screw/screw-db'\nexport { getScrewSpec, getScrewSpecs, threadToPitchMm, SCREW_HEAD_DIMS } from './primitives/screw/screw-db'\nexport type { CjkFontResult } from './primitives/text/cjk-font'\nexport { loadSystemCjkFont, containsCjk, isCjkChar } from './primitives/text/cjk-font'\n\n// Boolean/CSG 辅助类型\nexport type { ExtrudeParts, ExtrudeOffsetMode } from './boolean/extrude-helpers'\nexport type { JoineryMeshData } from './boolean/joinery-shapes'\nexport type {\n ManifoldMeshData, BooleanOperation,\n DovetailGrooveParams, DowelSplitParams, StraightTenonSplitParams,\n} from './boolean/geo-convert'\nexport type { TextureData } from './mesh/knurl/textureLoader'\nexport type { KnurlBounds } from './mesh/knurl/KnurlGenerator'\nexport type { DrillBrepParams, SplitBrepParams, SplitBrepResult, ExtrudeBrepParams } from './brep/brep-ops'\nexport type { PrimitiveToBrepResult, PrimitiveParams } from './primitives/brep-primitives'\n\n// ── 导入模型结构(P0)──\nexport type {\n ImportModel, ImportPart, ImportAssemblyNode, ImportBambuViews,\n} from './mesh/import-model'\n\n// ═══════════════════════════════════════════════════════════\n// D 类:辅助函数 + 预览 API\n// ═══════════════════════════════════════════════════════════\n\n// 预览 API\nexport { deriveNormals } from './boolean/deriveNormals'\nexport { computeSection, buildExtrudedProfile } from './boolean/cross-section'\nexport { buildExtrudeParts, makeWorldPlane } from './boolean/extrude-helpers'\nexport {\n buildWedgeGeometry, buildDowelGeometry, buildStraightTenonGeometry,\n} from './boolean/joinery-shapes'\nexport { geoToManifoldMesh, manifoldMeshToGeo } from './boolean/geo-convert'\nexport { manifoldToMeshData, weldPositionsWorker, dovetailBooleanSplit, dowelOrTenonBooleanSplit, chainBoolean, meshToManifold } from './boolean/csg-core'\nexport { previewMeshIntersect } from './boolean/manifold-preview'\nexport type { ManifoldMeshData as PreviewManifoldMeshData } from './boolean/manifold-preview'\nexport { setEngraveDecorationProvider, getEngraveDecorationProvider } from './mesh/decoration-provider'\nexport type { EngraveDecorationProvider, EngraveDecorationParams } from './mesh/decoration-provider'\nexport { runSdfInline } from './sdf/sdf-core'\nexport { runSdf as runSdfMain } from './sdf/sdf-runner'\nexport type { SdfMeshData as PreviewSdfMesh } from './sdf/sdf-runner'\n\n// Knurl D 类\nexport { applyKnurlDisplacement, KNURL_DEFAULTS } from './mesh/knurl/KnurlGenerator'\nexport { subdivide } from './mesh/knurl/subdivision'\nexport { loadKnurlingTexture } from './mesh/knurl/textureLoader'\nexport { QuantizedPointMap, weldVertices } from './mesh/knurl/meshIndex'\nexport { computeUV, MODE_TRIPLANAR, getCubicBlendWeights, type MappingSettings } from './mesh/knurl/mapping'\nexport { applyDisplacement, type DisplacementSettings } from './mesh/knurl/displacement'\n\n// Primitive D 类(预览用)\nexport { mergeBufferGeometries, makePrimitiveGeo, DEFAULT_SIZE, applyPrimitiveOffset } from './primitives/mesh-primitives'\nexport { makeScrew } from './primitives/screw/screw'\nexport {\n extractMeshData, primitiveToBrepSolid, geometryToBrepSolid,\n brepSolidToStep, primitiveToBrepStep,\n} from './primitives/brep-primitives'\n\n// BREP 辅助(D 类)\nexport {\n solidToShape,\n translateBrep, rotateBrep, scaleBrep, applyTransformBrep,\n fuseBrep, cutBrep, commonBrep,\n drillBrep, splitBrep, extrudeBrep,\n loadBrep, loadBrepAssembly, matrixToArray,\n type LoadBrepAssemblyPart,\n} from './brep/brep-ops'\nexport { getSolidBoundingBox } from './brep/brep-utils'\nexport { buildStlBufferFromMesh } from './brep/export/stl'\nexport { exportStepFromSolid, exportStepFromSolids } from './brep/export/step'\nexport type { StepExportEntry } from './brep/export/step'\nexport { reconstructSolidFromMesh, meshToAsciiStl, cadShapeIsValid, meshToStepBrep } from './occt-kernel/meshReconstruct'\n\n// ── L3 API 面(api/ 层)──\nexport * from './api'\n// Vec3 双源消歧:env-agnostic(lang/types)与 api(mesh/types)均有 Vec3,\n// 显式 re-export 定为 lang 版(与收敛前 browser.ts 的具名导出一致)。\nexport type { Vec3 } from './lang/types'\n"]}
1
+ {"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @faicad/faijs/browser — Browser-safe exports (F6: A/B/C/D 四类收敛)\n *\n * Excludes L3 Node Host modules (node-host/*) that depend on node:fs/node:path.\n * Use this entry point in browser/worker contexts to avoid pulling in Node.js code.\n *\n * For full exports (including Node.js), use @faicad/faijs instead.\n *\n * 导出分类(契约 §11 白名单四类):\n * - A 类 = lang/ 全部导出(脚本类型 + 构建辅助 + 接口约定类型 + 常量)\n * - B 类 = cad-runtime/ + createBrowserPorts + 外部资源注入点 + 执行位置选项\n * - C 类 = 执行产物类型(Shape + 拓扑数据类型 + buildSelectorRuntimeMaps)\n * - D 类 = 辅助函数 + 预览 API(明确导出后使用)\n */\n\n// 共享面(env-agnostic:identity + runtime-state + lang/*)\nexport * from './env-agnostic'\n\n// ═══════════════════════════════════════════════════════════\n// B 类:cad-runtime/ + createBrowserPorts + 外部资源注入点\n// ═══════════════════════════════════════════════════════════\n\nexport { CadRuntime, createRuntime, createBareRuntime, AppendPrefixError } from './cad-runtime/runtime'\nexport { createPreviewExec } from './cad-runtime/preview-exec'\nexport type { PreviewExec } from './cad-runtime/preview-exec'\nexport type { ExecutionResult, ExecuteOptions, CheckResult, CheckError, PartTopology, TopologySource } from './cad-runtime/runtime'\nexport type {\n HostPorts,\n CsgBackend, SdfBackend, FontProvider, TextureSampler,\n AssetResolver, EventSink, ExecutionMode, HostEnv, LibLoader,\n MeshData, PlaneParams, SplitResult as CsgSplitResult,\n DovetailGrooveParams as PortDovetailGrooveParams,\n DowelSplitParams as PortDowelSplitParams,\n StraightTenonSplitParams as PortStraightTenonSplitParams,\n} from './cad-runtime/ports'\n\n// 外部资源注入点\nexport { setManifoldWasmUrl, getManifoldWasmUrl } from './mesh/manifold-loader'\nexport { setOcctWasmInitFn } from './occt-kernel/occtKernel'\nexport { setFontLoader, getFontLoader, loadFont, ensureDefaultFont, ensureFont, getFont, clearFonts } from './brep/text/fontRegistry'\nexport type { FontLoader } from './brep/text/fontRegistry'\nexport { setKnurlTextureLoader } from './mesh/knurl/textureLoader'\n\n// L3 Browser Host 工厂\nexport { createBrowserPorts } from './browser-host'\nexport type { CreateBrowserPortsOptions } from './browser-host'\nexport { createBrowserLibLoader, DEFAULT_CDN_BASE } from './cad-runtime/browser-lib-loader'\nexport type {\n BrowserLibLoader, BrowserLibMeta, CreateBrowserLibLoaderOptions,\n} from './cad-runtime/browser-lib-loader'\n// 两级声明契约(2026-10-14 §3.3)的**类型面**:`BrowserLibMeta = LibMeta`,宿主写\n// `lib-meta.json` / 读 `describeLib` / `libsUnder` 时要能命名这些形状。运行期函数\n// (assertLibDecl 等)只在 @faicad/faijs 主入口导出,浏览器包不带。\nexport type {\n LibRole, LibDecl, LibMeta,\n LibFunctionView, LibDescription, LibCallableView, LibRejectedView, LibsUnderEngine,\n} from './cad-runtime/lib-decl'\nexport { BrowserEventSink } from './browser-host/browser-event-sink'\nexport { BrowserFontProvider } from './browser-host/browser-font-provider'\nexport type { BrowserFontProviderOptions } from './browser-host/browser-font-provider'\nexport { FetchAssetResolver } from './browser-host/fetch-asset-resolver'\nexport type { FetchAssetResolverOptions } from './browser-host/fetch-asset-resolver'\nexport { WorkerCsgBackend } from './browser-host/worker-csg-backend'\nexport { WorkerSdfBackend } from './browser-host/worker-sdf-backend'\n\n// E12.2: OCCT 高层 API(B 类——宿主用这些替代底层 kernel 函数)\nexport { importStep, importStepMultiPart, exportStep, releaseSolid, ensureOcctKernel, disposeOcct, exportStepFromSolidsHighLevel } from './occt-kernel/highLevelApi'\nexport type { ImportStepResult, ImportStepPartResult, ExportStepOptions } from './occt-kernel/highLevelApi'\nexport type { OcctKernel, ShapeHandle, WasmTessellatedMesh, Mesh, MeshDeflectionOptions } from './occt-kernel/highLevelApi'\n\n// ── BREP 引擎注册(宿主装配;引擎可切换——occt 只是默认实现) ──\nexport { registerOcctBrepEngine, OCCT_BREP_ENGINE_ID } from './brep/engine/adapters/occt'\nexport {\n registerBrepEngine, getBrepEngine, getActiveBrepEngine, hasBrepEngine, getActiveBrepEngineId, freezeEngineRegistries,\n registerMeshEngine, getMeshEngine, getActiveMeshEngine, getActiveMeshEngineId, isMeshEngineRegistered, getMeshSolidBackend,\n} from './brep/engine/registry'\nexport type { BrepEngine, BrepEngineProvider, MeshEngine } from './brep/engine/registry'\nexport { MeshSolidRegistry, normalizeMeshSolid, describeMeshSolid, buildMeshSolidTopology, weldToleranceFor } from './brep/mesh-solid'\nexport type {\n MeshSolidBackend, MeshSolidResult, MeshSolidKernelOps, MeshSolidInput, MeshSolidNormalizeOptions,\n} from './brep/mesh-solid'\nexport { assertShapeSlotExclusive } from './cad-runtime/backend-dispatch'\nexport type { BrepEngineApi } from './brep/engine/primitives'\nexport type {\n BrepHandle, BrepMeshResult, BrepBoundingBox, BrepVec3, BrepEvolutionKind,\n BrepEvolutionData, BrepXcafDocument,\n} from './brep/engine/types'\nexport { buildTopologyAdjacency, type TopologyAdjacency } from './occt-kernel/topologyExt'\n\n// keep-syntax(P7):宿主守卫——outputs 现含 compound,消费端须区分\nexport { isCompoundLike } from './shape'\nexport { isMeshShape } from './mesh/types'\n\n// ═══════════════════════════════════════════════════════════\n// C 类:执行产物类型(Shape + 拓扑数据类型 + buildSelectorRuntimeMaps)\n// ═══════════════════════════════════════════════════════════\n\nexport type { Shape } from './mesh/types'\n\n// 拓扑数据类型\nexport type { SelectorRuntimeData } from './topology/build-selector-runtime'\nexport type {\n SelectorRuntime, SelectorBundle, SelectorManifest, SelectorBuffers,\n FaceRow, EdgeRow, Reference,\n BufferViewDescriptor, SelectorProxy,\n} from './topology/types'\n\nexport { buildSelectorRuntimeMaps } from './topology/build-selector-runtime'\nexport { TOPOLOGY_FACE_ID_NONE } from './topology/build-face-ids'\n\n// ── TopoRef 命名层(§3.7/§3.8:命名属于核心公共能力,随 browser/node 走)──\nexport * from './topology/naming'\n\n// D 类辅助:拓扑构建函数\nexport { buildSelectorRuntime, buildSelectorRuntimeData } from './topology/build-selector-runtime'\nexport { buildFaceIdsForPart } from './topology/build-face-ids'\nexport type { SolidTopologyResult } from './brep/brep-topology'\n\n// C 类辅助:面查询\nexport { faceAt } from './mesh/query'\nexport type {\n BoundingBox, FaceDescriptor,\n BoxParams, SphereParams, CylinderParams, ConeParams, WedgeParams,\n TextParams, SvgExtrudeParams, SdfParams,\n DrillParams, ExtrudeParams, EngraveParams, KnurlParams,\n SplitPlane, SplitResult,\n} from './mesh/types'\nexport { NRAD_DEFAULT, NRAD_MIN, NRAD_MAX, clampNRad } from './mesh/types'\n\n// SDF 类型\nexport type { SdfMeshData } from './sdf/sdf-runner'\nexport { SDF_TEMPLATES, DEFAULT_SDF_TEMPLATE } from './sdf/templates'\nexport type {\n SdfMeta, SdfBox, SdfParamDef, SdfTemplateCategory,\n SdfWorkerInput, SdfWorkerMessage,\n} from './sdf/types'\nexport { boxToTuple, parseParamDefs, defaultParamValues } from './sdf/types'\n\n// Primitive 类型\nexport type {\n PrimitiveType, PrimitiveParamsRecord, PrimitiveArgsRecord, PrimitiveMeta,\n} from './primitives/types'\nexport { nextPrimitiveColor } from './primitives/types'\nexport type { ScrewParams, ScrewSpec, ScrewSystem } from './primitives/screw/screw-db'\nexport { getScrewSpec, getScrewSpecs, threadToPitchMm, SCREW_HEAD_DIMS } from './primitives/screw/screw-db'\nexport type { CjkFontResult } from './primitives/text/cjk-font'\nexport { loadSystemCjkFont, containsCjk, isCjkChar } from './primitives/text/cjk-font'\n\n// Boolean/CSG 辅助类型\nexport type { ExtrudeParts, ExtrudeOffsetMode } from './boolean/extrude-helpers'\nexport type { JoineryMeshData } from './boolean/joinery-shapes'\nexport type {\n ManifoldMeshData, BooleanOperation,\n DovetailGrooveParams, DowelSplitParams, StraightTenonSplitParams,\n} from './boolean/geo-convert'\nexport type { TextureData } from './mesh/knurl/textureLoader'\nexport type { KnurlBounds } from './mesh/knurl/KnurlGenerator'\nexport type { DrillBrepParams, SplitBrepParams, SplitBrepResult, ExtrudeBrepParams } from './brep/brep-ops'\nexport type { PrimitiveToBrepResult, PrimitiveParams } from './primitives/brep-primitives'\n\n// ── 导入模型结构(P0)──\nexport type {\n ImportModel, ImportPart, ImportAssemblyNode, ImportBambuViews,\n} from './mesh/import-model'\n\n// ═══════════════════════════════════════════════════════════\n// D 类:辅助函数 + 预览 API\n// ═══════════════════════════════════════════════════════════\n\n// 预览 API\nexport { deriveNormals } from './boolean/deriveNormals'\nexport { computeSection, buildExtrudedProfile } from './boolean/cross-section'\nexport { buildExtrudeParts, makeWorldPlane } from './boolean/extrude-helpers'\nexport {\n buildWedgeGeometry, buildDowelGeometry, buildStraightTenonGeometry,\n} from './boolean/joinery-shapes'\nexport { geoToManifoldMesh, manifoldMeshToGeo } from './boolean/geo-convert'\nexport { manifoldToMeshData, weldPositionsWorker, dovetailBooleanSplit, dowelOrTenonBooleanSplit, chainBoolean, meshToManifold } from './boolean/csg-core'\nexport { previewMeshIntersect } from './boolean/manifold-preview'\nexport type { ManifoldMeshData as PreviewManifoldMeshData } from './boolean/manifold-preview'\nexport { runSdfInline } from './sdf/sdf-core'\nexport { runSdf as runSdfMain } from './sdf/sdf-runner'\nexport type { SdfMeshData as PreviewSdfMesh } from './sdf/sdf-runner'\n\n// Knurl D 类\nexport { applyKnurlDisplacement, KNURL_DEFAULTS } from './mesh/knurl/KnurlGenerator'\nexport { subdivide } from './mesh/knurl/subdivision'\nexport { loadKnurlingTexture } from './mesh/knurl/textureLoader'\nexport { QuantizedPointMap, weldVertices } from './mesh/knurl/meshIndex'\nexport { computeUV, MODE_TRIPLANAR, getCubicBlendWeights, type MappingSettings } from './mesh/knurl/mapping'\nexport { applyDisplacement, type DisplacementSettings } from './mesh/knurl/displacement'\n\n// Primitive D 类(预览用)\nexport { mergeBufferGeometries, makePrimitiveGeo, DEFAULT_SIZE, applyPrimitiveOffset } from './primitives/mesh-primitives'\nexport { makeScrew } from './primitives/screw/screw'\nexport {\n extractMeshData, primitiveToBrepSolid, geometryToBrepSolid,\n brepSolidToStep, primitiveToBrepStep,\n} from './primitives/brep-primitives'\n\n// BREP 辅助(D 类)\nexport {\n solidToShape,\n translateBrep, rotateBrep, scaleBrep, applyTransformBrep,\n fuseBrep, cutBrep, commonBrep,\n drillBrep, splitBrep, extrudeBrep,\n loadBrep, loadBrepAssembly, matrixToArray,\n type LoadBrepAssemblyPart,\n} from './brep/brep-ops'\nexport { getSolidBoundingBox } from './brep/brep-utils'\nexport { buildStlBufferFromMesh } from './brep/export/stl'\nexport { exportStepFromSolid, exportStepFromSolids } from './brep/export/step'\nexport type { StepExportEntry } from './brep/export/step'\nexport { reconstructSolidFromMesh, meshToAsciiStl, cadShapeIsValid, meshToStepBrep } from './occt-kernel/meshReconstruct'\n\n// ── L3 API 面(api/ 层)──\nexport * from './api'\n// Vec3 双源消歧:env-agnostic(lang/types)与 api(mesh/types)均有 Vec3,\n// 显式 re-export 定为 lang 版(与收敛前 browser.ts 的具名导出一致)。\nexport type { Vec3 } from './lang/types'\n"]}
@@ -9,6 +9,11 @@
9
9
  *
10
10
  * Multi-output annotation: the only contract name is `fn.outputs` (the
11
11
  * `outputs` defineOp option); the legacy name is deleted repo-wide.
12
+ * Engine annotation: `fn.engines` (2026-10-14). A bare function's effective engine
13
+ * set is `fn.engines ?? libPlatform ?? neutral` — resolved HERE, once, so the
14
+ * dispatch layer keeps reading only op metadata. `libPlatform` comes from the
15
+ * library-level `faijs.lib.platform` declaration (see `lib-decl.ts`): a library
16
+ * whose platform is `['occt']` needs no per-function `fn.engines`.
12
17
  *
13
18
  * Naming (2026-09-23): library authors no longer declare face naming
14
19
  * (`faijs.naming` / `fn.naming` / `namingFor` removed). A library is a black-box
@@ -22,6 +27,7 @@
22
27
  *
23
28
  * @module
24
29
  */
30
+ import type { BrepEngineId } from '../brep/engine/types.js';
25
31
  /**
26
32
  * Establish an admission-stage wrapper namespace for registerLib.
27
33
  *
@@ -34,7 +40,9 @@
34
40
  * (unmodeled); no naming declaration is read or required (2026-09-23).
35
41
  *
36
42
  * @param ns the library namespace object being registered.
43
+ * @param libPlatform the library-level engine constraint (`faijs.lib.platform`).
44
+ * A function's own `fn.engines` wins over it; both absent = neutral (§3.3).
37
45
  * @returns the admitted namespace (bare functions replaced by compatOp facades).
38
46
  */
39
- export declare function admitCompatLib(ns: Record<string, unknown>): Record<string, unknown>;
47
+ export declare function admitCompatLib(ns: Record<string, unknown>, libPlatform?: readonly BrepEngineId[]): Record<string, unknown>;
40
48
  //# sourceMappingURL=admit-compat-lib.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"admit-compat-lib.d.ts","sourceRoot":"","sources":["../../src/cad-runtime/admit-compat-lib.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAsBH;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAC5B,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC1B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAazB"}
1
+ {"version":3,"file":"admit-compat-lib.d.ts","sourceRoot":"","sources":["../../src/cad-runtime/admit-compat-lib.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAKH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAoBxD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,cAAc,CAC5B,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC3B,WAAW,CAAC,EAAE,SAAS,YAAY,EAAE,GACpC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAezB"}
@@ -9,6 +9,11 @@
9
9
  *
10
10
  * Multi-output annotation: the only contract name is `fn.outputs` (the
11
11
  * `outputs` defineOp option); the legacy name is deleted repo-wide.
12
+ * Engine annotation: `fn.engines` (2026-10-14). A bare function's effective engine
13
+ * set is `fn.engines ?? libPlatform ?? neutral` — resolved HERE, once, so the
14
+ * dispatch layer keeps reading only op metadata. `libPlatform` comes from the
15
+ * library-level `faijs.lib.platform` declaration (see `lib-decl.ts`): a library
16
+ * whose platform is `['occt']` needs no per-function `fn.engines`.
12
17
  *
13
18
  * Naming (2026-09-23): library authors no longer declare face naming
14
19
  * (`faijs.naming` / `fn.naming` / `namingFor` removed). A library is a black-box
@@ -24,6 +29,7 @@
24
29
  */
25
30
  import { assertLibConforms, DUAL_OP_META } from '../define-op.js';
26
31
  import { compatOp } from '../api/internal/compat-op.js';
32
+ import { resolveFunctionEngines } from './lib-decl.js';
27
33
  /**
28
34
  * Default provenance for every bare library function (2026-09-23).
29
35
  *
@@ -49,9 +55,11 @@ const BARE_LIFT_DEFAULT_NAMING = {
49
55
  * (unmodeled); no naming declaration is read or required (2026-09-23).
50
56
  *
51
57
  * @param ns the library namespace object being registered.
58
+ * @param libPlatform the library-level engine constraint (`faijs.lib.platform`).
59
+ * A function's own `fn.engines` wins over it; both absent = neutral (§3.3).
52
60
  * @returns the admitted namespace (bare functions replaced by compatOp facades).
53
61
  */
54
- export function admitCompatLib(ns) {
62
+ export function admitCompatLib(ns, libPlatform) {
55
63
  assertLibConforms(ns);
56
64
  const out = {};
57
65
  for (const [name, v] of Object.entries(ns)) {
@@ -66,6 +74,8 @@ export function admitCompatLib(ns) {
66
74
  out[name] = compatOp(v, {
67
75
  name,
68
76
  outputs: v.outputs, // only fn.outputs; no other annotation name is recognized (§3.6)
77
+ // 有效引擎 = fn.engines ?? libPlatform ?? 中立(在此一次解析完,分派侧只读元数据)
78
+ engines: resolveFunctionEngines(v.engines, libPlatform),
69
79
  naming: BARE_LIFT_DEFAULT_NAMING,
70
80
  });
71
81
  }
@@ -1 +1 @@
1
- {"version":3,"file":"admit-compat-lib.js","sourceRoot":"","sources":["../../src/cad-runtime/admit-compat-lib.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAA;AAKpD;;;;;;;;GAQG;AACH,MAAM,wBAAwB,GAAe;IAC3C,IAAI,EAAE,WAAW;IACjB,MAAM,EAAE,kFAAkF;CAC3F,CAAA;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,cAAc,CAC5B,EAA2B;IAE3B,iBAAiB,CAAC,EAAE,CAAC,CAAA;IACrB,MAAM,GAAG,GAA4B,EAAE,CAAA;IACvC,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;QAC3C,IAAI,OAAO,CAAC,KAAK,UAAU,EAAE,CAAC;YAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAAC,SAAQ;QAAC,CAAC;QACxD,IAAK,CAAwC,CAAC,YAAY,CAAC,EAAE,CAAC;YAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAAC,SAAQ;QAAC,CAAC;QACxF,GAAG,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAiC,EAAE;YACtD,IAAI;YACJ,OAAO,EAAG,CAAoB,CAAC,OAAO,EAAE,iEAAiE;YACzG,MAAM,EAAE,wBAAwB;SACjC,CAAC,CAAA;IACJ,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC","sourcesContent":["/**\n * admit-compat-lib — registerLib's admission-stage enhancement (B4 fix).\n *\n * Hard ordering constraint: assertLibConforms runs BEFORE wrapping — DUAL_OP_META\n * hangs on the function object with enumerable:false (define-op.ts) and\n * assertLibConforms iterates values via Object.values to judge metadata; a\n * wrap-first admission would let bare functions silently skip the whole strict\n * validation pass (verified in practice, R8).\n *\n * Multi-output annotation: the only contract name is `fn.outputs` (the\n * `outputs` defineOp option); the legacy name is deleted repo-wide.\n *\n * Naming (2026-09-23): library authors no longer declare face naming\n * (`faijs.naming` / `fn.naming` / `namingFor` removed). A library is a black-box\n * part producer — its functions output parts, not single-op geometry, so no\n * per-function or per-library naming declaration can carry information.\n * Every bare\n * function is admitted with the fixed default `unmodeled` provenance: its\n * faces carry no stable identity and face references degrade to geometric\n * matching. Op-level naming (defineOp's `DUAL_OP_META.naming` / roleTable)\n * remains the only place where face naming is declared.\n *\n * @module\n */\n\nimport { assertLibConforms, DUAL_OP_META } from '../define-op'\nimport { compatOp } from '../api/internal/compat-op'\nimport type { Provenance } from '../topology/naming/lineage'\n\ntype OutputsCarrier = { outputs?: string[] }\n\n/**\n * Default provenance for every bare library function (2026-09-23).\n *\n * Library functions are black-box part producers: no per-function or\n * per-library naming declaration exists (see file header). Faces of library\n * output get no stable identity — face references degrade to geometric\n * matching. The `default:` reason prefix distinguishes this implicit category\n * from a library author's explicit unmodeled accounting.\n */\nconst BARE_LIFT_DEFAULT_NAMING: Provenance = {\n kind: 'unmodeled',\n reason: 'default: bare library function lift — library parts have no op-level face naming',\n}\n\n/**\n * Establish an admission-stage wrapper namespace for registerLib.\n *\n * Non-functions (contractVersion / resource objects) and native dual-ops\n * (already carrying DUAL_OP_META) pass through just as they are; any bare\n * function is lifted through compatOp so it cannot silently bypass the\n * statement-level boundary contract (B4).\n *\n * Every bare function is admitted with `BARE_LIFT_DEFAULT_NAMING`\n * (unmodeled); no naming declaration is read or required (2026-09-23).\n *\n * @param ns the library namespace object being registered.\n * @returns the admitted namespace (bare functions replaced by compatOp facades).\n */\nexport function admitCompatLib(\n ns: Record<string, unknown>,\n): Record<string, unknown> {\n assertLibConforms(ns)\n const out: Record<string, unknown> = {}\n for (const [name, v] of Object.entries(ns)) {\n if (typeof v !== 'function') { out[name] = v; continue }\n if ((v as unknown as Record<string, unknown>)[DUAL_OP_META]) { out[name] = v; continue }\n out[name] = compatOp(v as (...a: unknown[]) => unknown, {\n name,\n outputs: (v as OutputsCarrier).outputs, // only fn.outputs; no other annotation name is recognized (§3.6)\n naming: BARE_LIFT_DEFAULT_NAMING,\n })\n }\n return out\n}\n"]}
1
+ {"version":3,"file":"admit-compat-lib.js","sourceRoot":"","sources":["../../src/cad-runtime/admit-compat-lib.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAA;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAA;AAOnD;;;;;;;;GAQG;AACH,MAAM,wBAAwB,GAAe;IAC3C,IAAI,EAAE,WAAW;IACjB,MAAM,EAAE,kFAAkF;CAC3F,CAAA;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,cAAc,CAC5B,EAA2B,EAC3B,WAAqC;IAErC,iBAAiB,CAAC,EAAE,CAAC,CAAA;IACrB,MAAM,GAAG,GAA4B,EAAE,CAAA;IACvC,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;QAC3C,IAAI,OAAO,CAAC,KAAK,UAAU,EAAE,CAAC;YAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAAC,SAAQ;QAAC,CAAC;QACxD,IAAK,CAAwC,CAAC,YAAY,CAAC,EAAE,CAAC;YAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAAC,SAAQ;QAAC,CAAC;QACxF,GAAG,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAiC,EAAE;YACtD,IAAI;YACJ,OAAO,EAAG,CAAoB,CAAC,OAAO,EAAE,iEAAiE;YACzG,2DAA2D;YAC3D,OAAO,EAAE,sBAAsB,CAAE,CAAmB,CAAC,OAAO,EAAE,WAAW,CAAC;YAC1E,MAAM,EAAE,wBAAwB;SACjC,CAAC,CAAA;IACJ,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC","sourcesContent":["/**\n * admit-compat-lib — registerLib's admission-stage enhancement (B4 fix).\n *\n * Hard ordering constraint: assertLibConforms runs BEFORE wrapping — DUAL_OP_META\n * hangs on the function object with enumerable:false (define-op.ts) and\n * assertLibConforms iterates values via Object.values to judge metadata; a\n * wrap-first admission would let bare functions silently skip the whole strict\n * validation pass (verified in practice, R8).\n *\n * Multi-output annotation: the only contract name is `fn.outputs` (the\n * `outputs` defineOp option); the legacy name is deleted repo-wide.\n * Engine annotation: `fn.engines` (2026-10-14). A bare function's effective engine\n * set is `fn.engines ?? libPlatform ?? neutral` — resolved HERE, once, so the\n * dispatch layer keeps reading only op metadata. `libPlatform` comes from the\n * library-level `faijs.lib.platform` declaration (see `lib-decl.ts`): a library\n * whose platform is `['occt']` needs no per-function `fn.engines`.\n *\n * Naming (2026-09-23): library authors no longer declare face naming\n * (`faijs.naming` / `fn.naming` / `namingFor` removed). A library is a black-box\n * part producer — its functions output parts, not single-op geometry, so no\n * per-function or per-library naming declaration can carry information.\n * Every bare\n * function is admitted with the fixed default `unmodeled` provenance: its\n * faces carry no stable identity and face references degrade to geometric\n * matching. Op-level naming (defineOp's `DUAL_OP_META.naming` / roleTable)\n * remains the only place where face naming is declared.\n *\n * @module\n */\n\nimport { assertLibConforms, DUAL_OP_META } from '../define-op'\nimport { compatOp } from '../api/internal/compat-op'\nimport { resolveFunctionEngines } from './lib-decl'\nimport type { BrepEngineId } from '../brep/engine/types'\nimport type { Provenance } from '../topology/naming/lineage'\n\ntype OutputsCarrier = { outputs?: string[] }\ntype EngineCarrier = { engines?: readonly BrepEngineId[] }\n\n/**\n * Default provenance for every bare library function (2026-09-23).\n *\n * Library functions are black-box part producers: no per-function or\n * per-library naming declaration exists (see file header). Faces of library\n * output get no stable identity — face references degrade to geometric\n * matching. The `default:` reason prefix distinguishes this implicit category\n * from a library author's explicit unmodeled accounting.\n */\nconst BARE_LIFT_DEFAULT_NAMING: Provenance = {\n kind: 'unmodeled',\n reason: 'default: bare library function lift — library parts have no op-level face naming',\n}\n\n/**\n * Establish an admission-stage wrapper namespace for registerLib.\n *\n * Non-functions (contractVersion / resource objects) and native dual-ops\n * (already carrying DUAL_OP_META) pass through just as they are; any bare\n * function is lifted through compatOp so it cannot silently bypass the\n * statement-level boundary contract (B4).\n *\n * Every bare function is admitted with `BARE_LIFT_DEFAULT_NAMING`\n * (unmodeled); no naming declaration is read or required (2026-09-23).\n *\n * @param ns the library namespace object being registered.\n * @param libPlatform the library-level engine constraint (`faijs.lib.platform`).\n * A function's own `fn.engines` wins over it; both absent = neutral (§3.3).\n * @returns the admitted namespace (bare functions replaced by compatOp facades).\n */\nexport function admitCompatLib(\n ns: Record<string, unknown>,\n libPlatform?: readonly BrepEngineId[],\n): Record<string, unknown> {\n assertLibConforms(ns)\n const out: Record<string, unknown> = {}\n for (const [name, v] of Object.entries(ns)) {\n if (typeof v !== 'function') { out[name] = v; continue }\n if ((v as unknown as Record<string, unknown>)[DUAL_OP_META]) { out[name] = v; continue }\n out[name] = compatOp(v as (...a: unknown[]) => unknown, {\n name,\n outputs: (v as OutputsCarrier).outputs, // only fn.outputs; no other annotation name is recognized (§3.6)\n // 有效引擎 = fn.engines ?? libPlatform ?? 中立(在此一次解析完,分派侧只读元数据)\n engines: resolveFunctionEngines((v as EngineCarrier).engines, libPlatform),\n naming: BARE_LIFT_DEFAULT_NAMING,\n })\n }\n return out\n}\n"]}
@@ -17,22 +17,26 @@
17
17
  * 是 npm 全名(`@faicad/sheetmetal`)。`aliases` 把 specifier 映到包名后再装载,
18
18
  * 与 node 侧 `CLI_SHORT_NAMES` 归一同一职责。
19
19
  *
20
- * `autoLiftFor` 是**同步**回调(`runtime.ts` 在装载后立即取值),所以逐库
21
- * `faijs.autoLift` 必须**预先**可用:主机从构建期产物 `lib-meta.json`
22
- * (`scripts/gen-importmap.mjs` 生成)经 `meta` 传入;也可调 `prefetchMeta()`
23
- * 在网络可达时抓各库 `package.json` 预热(失败静默回落推断式)。
20
+ * `autoLiftFor` 与 `libMetaFor` 都是**同步**回调(`runtime.ts` 在装载后立即取值),
21
+ * 所以逐库 `faijs.autoLift` 与 `faijs.lib` 必须**预先**可用:主机从构建期产物
22
+ * `lib-meta.json`(`scripts/gen-importmap.mjs` 生成)经 `meta` 传入;也可调
23
+ * `prefetchMeta()` 在网络可达时抓各库 `package.json` 预热(失败静默回落推断式 /
24
+ * 中立)。
24
25
  *
25
26
  * 本工厂**不**被 `createBrowserPorts` 默认装配——demo 走源码 alias 的 HMR 路径
26
27
  * 必须保持零网络;CDN 装载仅服务「从 npm 消费已发布包」的场景,由主机显式注入。
27
28
  */
28
29
  import type { LibLoader } from './ports.js';
30
+ import type { LibMeta } from './lib-decl.js';
29
31
  /** 默认 CDN base(Q8 定稿:jsDelivr npm 镜像;ESM 取 `+esm`)。 */
30
32
  export declare const DEFAULT_CDN_BASE = "https://cdn.jsdelivr.net/npm/";
31
- /** 逐库元数据(与 `lib-meta.json` 键形一致)。 */
32
- export interface BrowserLibMeta {
33
- /** `package.json` 的 `faijs.autoLift` 外置字段(D3-autoLift)。 */
34
- autoLift?: boolean;
35
- }
33
+ /**
34
+ * 逐库元数据(与 `lib-meta.json` 键形一致)。
35
+ *
36
+ * 是 `package.json` 的**原始投影**:`autoLift` 喂 `options.autoLiftFor`,
37
+ * `lib` / `peers` 喂 `libMetaFor`(§3.3 库级定位声明)。校验在装配期。
38
+ */
39
+ export type BrowserLibMeta = LibMeta;
36
40
  /** `createBrowserLibLoader` 的选项。 */
37
41
  export interface CreateBrowserLibLoaderOptions {
38
42
  /** CDN base,须以 `/` 结尾(缺省 `DEFAULT_CDN_BASE`)。 */
@@ -57,8 +61,9 @@ export interface CreateBrowserLibLoaderOptions {
57
61
  /** 浏览器 `LibLoader`(在契约上附加元数据预热)。 */
58
62
  export interface BrowserLibLoader extends LibLoader {
59
63
  /**
60
- * 抓取已知各库的 `package.json`,把 `faijs.autoLift` 填进内部 meta 缓存。
61
- * 网络失败静默跳过(保持未声明 → 回落推断式)。在 `execute` 前 await 一次即可。
64
+ * 抓取已知各库的 `package.json`,把 `faijs.autoLift` / `faijs.lib` /
65
+ * `peerDependencies` 填进内部 meta 缓存。网络失败静默跳过(保持未声明 →
66
+ * 回落推断式 / 中立)。在 `execute` 前 await 一次即可。
62
67
  * @returns promise resolving when all known libs have been probed.
63
68
  */
64
69
  prefetchMeta(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"browser-lib-loader.d.ts","sourceRoot":"","sources":["../../src/cad-runtime/browser-lib-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAGxC,uDAAuD;AACvD,eAAO,MAAM,gBAAgB,kCAAkC,CAAA;AAE/D,qCAAqC;AACrC,MAAM,WAAW,cAAc;IAC7B,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,oCAAoC;AACpC,MAAM,WAAW,6BAA6B;IAC5C,iDAAiD;IACjD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,qEAAqE;IACrE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACjC,+EAA+E;IAC/E,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,0CAA0C;IAC1C,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IACf,sDAAsD;IACtD,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;IACrC,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,2DAA2D;IAC3D,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,+CAA+C;IAC/C,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IAChD,uEAAuE;IACvE,SAAS,CAAC,EAAE,OAAO,KAAK,CAAA;CACzB;AAED,oCAAoC;AACpC,MAAM,WAAW,gBAAiB,SAAQ,SAAS;IACjD;;;;OAIG;IACH,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CAC9B;AAOD;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,GAAE,6BAAkC,GAAG,gBAAgB,CA6EjG"}
1
+ {"version":3,"file":"browser-lib-loader.d.ts","sourceRoot":"","sources":["../../src/cad-runtime/browser-lib-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AACxC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAGzC,uDAAuD;AACvD,eAAO,MAAM,gBAAgB,kCAAkC,CAAA;AAE/D;;;;;GAKG;AACH,MAAM,MAAM,cAAc,GAAG,OAAO,CAAA;AAEpC,oCAAoC;AACpC,MAAM,WAAW,6BAA6B;IAC5C,iDAAiD;IACjD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,qEAAqE;IACrE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACjC,+EAA+E;IAC/E,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,0CAA0C;IAC1C,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IACf,sDAAsD;IACtD,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;IACrC,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,2DAA2D;IAC3D,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,+CAA+C;IAC/C,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IAChD,uEAAuE;IACvE,SAAS,CAAC,EAAE,OAAO,KAAK,CAAA;CACzB;AAED,oCAAoC;AACpC,MAAM,WAAW,gBAAiB,SAAQ,SAAS;IACjD;;;;;OAKG;IACH,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CAC9B;AAOD;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,GAAE,6BAAkC,GAAG,gBAAgB,CAuFjG"}