@faicad/faijs 0.13.2 → 0.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (485) hide show
  1. package/dist/api/api-namespace.d.ts +7 -0
  2. package/dist/api/api-namespace.d.ts.map +1 -1
  3. package/dist/api/api-namespace.js +44 -17
  4. package/dist/api/api-namespace.js.map +1 -1
  5. package/dist/api/boolean.d.ts +19 -0
  6. package/dist/api/boolean.d.ts.map +1 -1
  7. package/dist/api/boolean.js +71 -12
  8. package/dist/api/boolean.js.map +1 -1
  9. package/dist/api/chamfer.d.ts.map +1 -1
  10. package/dist/api/chamfer.js +12 -8
  11. package/dist/api/chamfer.js.map +1 -1
  12. package/dist/api/compound-geom.d.ts +45 -0
  13. package/dist/api/compound-geom.d.ts.map +1 -0
  14. package/dist/api/compound-geom.js +85 -0
  15. package/dist/api/compound-geom.js.map +1 -0
  16. package/dist/api/edge-ref.d.ts.map +1 -1
  17. package/dist/api/edge-ref.js +7 -4
  18. package/dist/api/edge-ref.js.map +1 -1
  19. package/dist/api/engrave.d.ts.map +1 -1
  20. package/dist/api/engrave.js +1 -0
  21. package/dist/api/engrave.js.map +1 -1
  22. package/dist/api/extrude.d.ts.map +1 -1
  23. package/dist/api/extrude.js +131 -3
  24. package/dist/api/extrude.js.map +1 -1
  25. package/dist/api/face-ref.d.ts.map +1 -1
  26. package/dist/api/face-ref.js +7 -4
  27. package/dist/api/face-ref.js.map +1 -1
  28. package/dist/api/fillet.d.ts.map +1 -1
  29. package/dist/api/fillet.js +6 -5
  30. package/dist/api/fillet.js.map +1 -1
  31. package/dist/api/generated/cad/script-face.d.ts +1 -1
  32. package/dist/api/generated/cad/script-face.d.ts.map +1 -1
  33. package/dist/api/generated/cad/script-face.js +1 -2
  34. package/dist/api/generated/cad/script-face.js.map +1 -1
  35. package/dist/api/generated/operations.js +16 -16
  36. package/dist/api/generated/operations.js.map +1 -1
  37. package/dist/api/generated/script-face-manifest.d.ts.map +1 -1
  38. package/dist/api/generated/script-face-manifest.js +0 -2
  39. package/dist/api/generated/script-face-manifest.js.map +1 -1
  40. package/dist/api/generated/script-face.d.ts +1 -7
  41. package/dist/api/generated/script-face.d.ts.map +1 -1
  42. package/dist/api/generated/script-face.js +2 -4
  43. package/dist/api/generated/script-face.js.map +1 -1
  44. package/dist/api/generated/sketching.js +1 -1
  45. package/dist/api/generated/sketching.js.map +1 -1
  46. package/dist/api/generated/topology.d.ts +0 -56
  47. package/dist/api/generated/topology.d.ts.map +1 -1
  48. package/dist/api/generated/topology.js +19 -68
  49. package/dist/api/generated/topology.js.map +1 -1
  50. package/dist/api/import-brep.d.ts +36 -0
  51. package/dist/api/import-brep.d.ts.map +1 -0
  52. package/dist/api/import-brep.js +72 -0
  53. package/dist/api/import-brep.js.map +1 -0
  54. package/dist/api/import-step.d.ts +28 -0
  55. package/dist/api/import-step.d.ts.map +1 -0
  56. package/dist/api/import-step.js +57 -0
  57. package/dist/api/import-step.js.map +1 -0
  58. package/dist/api/index.d.ts +8 -12
  59. package/dist/api/index.d.ts.map +1 -1
  60. package/dist/api/index.js +22 -16
  61. package/dist/api/index.js.map +1 -1
  62. package/dist/api/internal/compat-op.d.ts.map +1 -1
  63. package/dist/api/internal/compat-op.js +2 -1
  64. package/dist/api/internal/compat-op.js.map +1 -1
  65. package/dist/api/internal/compat-projection.d.ts +3 -1
  66. package/dist/api/internal/compat-projection.d.ts.map +1 -1
  67. package/dist/api/internal/compat-projection.js +8 -5
  68. package/dist/api/internal/compat-projection.js.map +1 -1
  69. package/dist/api/internal/replica-role-table.d.ts +36 -0
  70. package/dist/api/internal/replica-role-table.d.ts.map +1 -0
  71. package/dist/api/internal/replica-role-table.js +73 -0
  72. package/dist/api/internal/replica-role-table.js.map +1 -0
  73. package/dist/api/internal/result-unwrap.d.ts +3 -1
  74. package/dist/api/internal/result-unwrap.d.ts.map +1 -1
  75. package/dist/api/internal/result-unwrap.js +2 -2
  76. package/dist/api/internal/result-unwrap.js.map +1 -1
  77. package/dist/api/knurl.d.ts.map +1 -1
  78. package/dist/api/knurl.js +1 -0
  79. package/dist/api/knurl.js.map +1 -1
  80. package/dist/api/occt-kernel-bridge.d.ts +105 -27
  81. package/dist/api/occt-kernel-bridge.d.ts.map +1 -1
  82. package/dist/api/occt-kernel-bridge.js +255 -41
  83. package/dist/api/occt-kernel-bridge.js.map +1 -1
  84. package/dist/api/pattern.d.ts +32 -0
  85. package/dist/api/pattern.d.ts.map +1 -0
  86. package/dist/api/pattern.js +85 -0
  87. package/dist/api/pattern.js.map +1 -0
  88. package/dist/api/place.d.ts +35 -0
  89. package/dist/api/place.d.ts.map +1 -0
  90. package/dist/api/place.js +113 -0
  91. package/dist/api/place.js.map +1 -0
  92. package/dist/api/primitives.d.ts.map +1 -1
  93. package/dist/api/primitives.js +10 -3
  94. package/dist/api/primitives.js.map +1 -1
  95. package/dist/api/replicate.d.ts +145 -0
  96. package/dist/api/replicate.d.ts.map +1 -0
  97. package/dist/api/replicate.js +351 -0
  98. package/dist/api/replicate.js.map +1 -0
  99. package/dist/api/revolve.d.ts +36 -0
  100. package/dist/api/revolve.d.ts.map +1 -0
  101. package/dist/api/revolve.js +165 -0
  102. package/dist/api/revolve.js.map +1 -0
  103. package/dist/api/screw.d.ts.map +1 -1
  104. package/dist/api/screw.js +1 -0
  105. package/dist/api/screw.js.map +1 -1
  106. package/dist/api/sdf.d.ts.map +1 -1
  107. package/dist/api/sdf.js +1 -0
  108. package/dist/api/sdf.js.map +1 -1
  109. package/dist/api/sketch.d.ts.map +1 -1
  110. package/dist/api/sketch.js +1 -0
  111. package/dist/api/sketch.js.map +1 -1
  112. package/dist/api/split.d.ts +31 -0
  113. package/dist/api/split.d.ts.map +1 -0
  114. package/dist/api/split.js +96 -0
  115. package/dist/api/split.js.map +1 -0
  116. package/dist/api/surface/arg-spec.d.ts +17 -0
  117. package/dist/api/surface/arg-spec.d.ts.map +1 -1
  118. package/dist/api/surface/arg-spec.js +86 -66
  119. package/dist/api/surface/arg-spec.js.map +1 -1
  120. package/dist/api/surface/projection-overrides.d.ts.map +1 -1
  121. package/dist/api/surface/projection-overrides.js +6 -0
  122. package/dist/api/surface/projection-overrides.js.map +1 -1
  123. package/dist/api/topo-resolve.d.ts.map +1 -1
  124. package/dist/api/topo-resolve.js +65 -3
  125. package/dist/api/topo-resolve.js.map +1 -1
  126. package/dist/api/transform.d.ts +4 -0
  127. package/dist/api/transform.d.ts.map +1 -1
  128. package/dist/api/transform.js +44 -12
  129. package/dist/api/transform.js.map +1 -1
  130. package/dist/boolean/deriveNormals.d.ts +5 -4
  131. package/dist/boolean/deriveNormals.d.ts.map +1 -1
  132. package/dist/boolean/deriveNormals.js +24 -7
  133. package/dist/boolean/deriveNormals.js.map +1 -1
  134. package/dist/brep/brep-ops.d.ts +34 -1
  135. package/dist/brep/brep-ops.d.ts.map +1 -1
  136. package/dist/brep/brep-ops.js +62 -22
  137. package/dist/brep/brep-ops.js.map +1 -1
  138. package/dist/brep/engine/adapters/brep-mock.d.ts.map +1 -1
  139. package/dist/brep/engine/adapters/brep-mock.js +66 -0
  140. package/dist/brep/engine/adapters/brep-mock.js.map +1 -1
  141. package/dist/brep/engine/adapters/brepkit.d.ts.map +1 -1
  142. package/dist/brep/engine/adapters/brepkit.js +44 -1
  143. package/dist/brep/engine/adapters/brepkit.js.map +1 -1
  144. package/dist/brep/engine/adapters/occt.d.ts +1 -5
  145. package/dist/brep/engine/adapters/occt.d.ts.map +1 -1
  146. package/dist/brep/engine/adapters/occt.js +246 -9
  147. package/dist/brep/engine/adapters/occt.js.map +1 -1
  148. package/dist/brep/engine/primitives.d.ts +96 -0
  149. package/dist/brep/engine/primitives.d.ts.map +1 -1
  150. package/dist/brep/engine/primitives.js.map +1 -1
  151. package/dist/brep/engine/types.d.ts +66 -6
  152. package/dist/brep/engine/types.d.ts.map +1 -1
  153. package/dist/brep/engine/types.js.map +1 -1
  154. package/dist/brep/export/step.d.ts.map +1 -1
  155. package/dist/brep/export/step.js +6 -1
  156. package/dist/brep/export/step.js.map +1 -1
  157. package/dist/brep/face-evolution.d.ts +78 -8
  158. package/dist/brep/face-evolution.d.ts.map +1 -1
  159. package/dist/brep/face-evolution.js +130 -17
  160. package/dist/brep/face-evolution.js.map +1 -1
  161. package/dist/brepkit-kernel/brepkitKernel.d.ts +1 -1
  162. package/dist/brepkit-kernel/brepkitKernel.d.ts.map +1 -1
  163. package/dist/brepkit-kernel/brepkitKernel.js +108 -12
  164. package/dist/brepkit-kernel/brepkitKernel.js.map +1 -1
  165. package/dist/browser.d.ts +6 -28
  166. package/dist/browser.d.ts.map +1 -1
  167. package/dist/browser.js +6 -17
  168. package/dist/browser.js.map +1 -1
  169. package/dist/cad-runtime/admit-compat-lib.d.ts +13 -0
  170. package/dist/cad-runtime/admit-compat-lib.d.ts.map +1 -1
  171. package/dist/cad-runtime/admit-compat-lib.js +27 -0
  172. package/dist/cad-runtime/admit-compat-lib.js.map +1 -1
  173. package/dist/cad-runtime/backend-dispatch.d.ts +46 -3
  174. package/dist/cad-runtime/backend-dispatch.d.ts.map +1 -1
  175. package/dist/cad-runtime/backend-dispatch.js +48 -3
  176. package/dist/cad-runtime/backend-dispatch.js.map +1 -1
  177. package/dist/cad-runtime/browser-lib-loader.d.ts +4 -4
  178. package/dist/cad-runtime/browser-lib-loader.d.ts.map +1 -1
  179. package/dist/cad-runtime/browser-lib-loader.js +7 -4
  180. package/dist/cad-runtime/browser-lib-loader.js.map +1 -1
  181. package/dist/cad-runtime/direct-executor.d.ts.map +1 -1
  182. package/dist/cad-runtime/direct-executor.js +14 -4
  183. package/dist/cad-runtime/direct-executor.js.map +1 -1
  184. package/dist/cad-runtime/module-registry.d.ts +3 -1
  185. package/dist/cad-runtime/module-registry.d.ts.map +1 -1
  186. package/dist/cad-runtime/module-registry.js +13 -1
  187. package/dist/cad-runtime/module-registry.js.map +1 -1
  188. package/dist/cad-runtime/runtime-concurrent-error.d.ts +38 -0
  189. package/dist/cad-runtime/runtime-concurrent-error.d.ts.map +1 -0
  190. package/dist/cad-runtime/runtime-concurrent-error.js +43 -0
  191. package/dist/cad-runtime/runtime-concurrent-error.js.map +1 -0
  192. package/dist/cad-runtime/runtime.d.ts +52 -2
  193. package/dist/cad-runtime/runtime.d.ts.map +1 -1
  194. package/dist/cad-runtime/runtime.js +180 -9
  195. package/dist/cad-runtime/runtime.js.map +1 -1
  196. package/dist/define-op.d.ts +22 -0
  197. package/dist/define-op.d.ts.map +1 -1
  198. package/dist/define-op.js +82 -12
  199. package/dist/define-op.js.map +1 -1
  200. package/dist/env-agnostic.d.ts +38 -0
  201. package/dist/env-agnostic.d.ts.map +1 -0
  202. package/dist/env-agnostic.js +29 -0
  203. package/dist/env-agnostic.js.map +1 -0
  204. package/dist/fcstd/attachment.d.ts +8 -1
  205. package/dist/fcstd/attachment.d.ts.map +1 -1
  206. package/dist/fcstd/attachment.js +7 -1
  207. package/dist/fcstd/attachment.js.map +1 -1
  208. package/dist/fcstd/build-fai-zip.d.ts.map +1 -1
  209. package/dist/fcstd/build-fai-zip.js +12 -7
  210. package/dist/fcstd/build-fai-zip.js.map +1 -1
  211. package/dist/fcstd/codegen.d.ts +10 -1
  212. package/dist/fcstd/codegen.d.ts.map +1 -1
  213. package/dist/fcstd/codegen.js +158 -49
  214. package/dist/fcstd/codegen.js.map +1 -1
  215. package/dist/fcstd/contour.d.ts.map +1 -1
  216. package/dist/fcstd/contour.js +23 -24
  217. package/dist/fcstd/contour.js.map +1 -1
  218. package/dist/fcstd/convert.d.ts +2 -18
  219. package/dist/fcstd/convert.d.ts.map +1 -1
  220. package/dist/fcstd/convert.js +35 -53
  221. package/dist/fcstd/convert.js.map +1 -1
  222. package/dist/fcstd/expressions.d.ts +24 -0
  223. package/dist/fcstd/expressions.d.ts.map +1 -1
  224. package/dist/fcstd/expressions.js +91 -0
  225. package/dist/fcstd/expressions.js.map +1 -1
  226. package/dist/fcstd/external-geo.d.ts +12 -1
  227. package/dist/fcstd/external-geo.d.ts.map +1 -1
  228. package/dist/fcstd/external-geo.js +15 -1
  229. package/dist/fcstd/external-geo.js.map +1 -1
  230. package/dist/fcstd/feature-translate.d.ts +21 -1
  231. package/dist/fcstd/feature-translate.d.ts.map +1 -1
  232. package/dist/fcstd/feature-translate.js +124 -8
  233. package/dist/fcstd/feature-translate.js.map +1 -1
  234. package/dist/fcstd/structural-types.d.ts +83 -0
  235. package/dist/fcstd/structural-types.d.ts.map +1 -0
  236. package/dist/fcstd/structural-types.js +121 -0
  237. package/dist/fcstd/structural-types.js.map +1 -0
  238. package/dist/index.d.ts +7 -23
  239. package/dist/index.d.ts.map +1 -1
  240. package/dist/index.js +10 -16
  241. package/dist/index.js.map +1 -1
  242. package/dist/lang/determinism-scanner.d.ts +71 -0
  243. package/dist/lang/determinism-scanner.d.ts.map +1 -0
  244. package/dist/lang/determinism-scanner.js +625 -0
  245. package/dist/lang/determinism-scanner.js.map +1 -0
  246. package/dist/lang/symbol-table.d.ts +31 -0
  247. package/dist/lang/symbol-table.d.ts.map +1 -1
  248. package/dist/lang/symbol-table.generated.d.ts +13 -19
  249. package/dist/lang/symbol-table.generated.d.ts.map +1 -1
  250. package/dist/lang/symbol-table.generated.js +13 -19
  251. package/dist/lang/symbol-table.generated.js.map +1 -1
  252. package/dist/lang/symbol-table.js +50 -1
  253. package/dist/lang/symbol-table.js.map +1 -1
  254. package/dist/mesh/creased-normals.d.ts +50 -0
  255. package/dist/mesh/creased-normals.d.ts.map +1 -0
  256. package/dist/mesh/creased-normals.js +114 -0
  257. package/dist/mesh/creased-normals.js.map +1 -0
  258. package/dist/mesh/decoration-provider.d.ts +53 -0
  259. package/dist/mesh/decoration-provider.d.ts.map +1 -0
  260. package/dist/mesh/decoration-provider.js +21 -0
  261. package/dist/mesh/decoration-provider.js.map +1 -0
  262. package/dist/mesh/engrave.d.ts +4 -0
  263. package/dist/mesh/engrave.d.ts.map +1 -1
  264. package/dist/mesh/engrave.js +22 -31
  265. package/dist/mesh/engrave.js.map +1 -1
  266. package/dist/mesh/index.d.ts +5 -14
  267. package/dist/mesh/index.d.ts.map +1 -1
  268. package/dist/mesh/index.js +7 -18
  269. package/dist/mesh/index.js.map +1 -1
  270. package/dist/mesh/io.d.ts +2 -1
  271. package/dist/mesh/io.d.ts.map +1 -1
  272. package/dist/mesh/io.js +5 -7
  273. package/dist/mesh/io.js.map +1 -1
  274. package/dist/mesh/primitives.d.ts +5 -18
  275. package/dist/mesh/primitives.d.ts.map +1 -1
  276. package/dist/mesh/primitives.js +4 -48
  277. package/dist/mesh/primitives.js.map +1 -1
  278. package/dist/mesh/stl-loader.d.ts +23 -0
  279. package/dist/mesh/stl-loader.d.ts.map +1 -0
  280. package/dist/mesh/stl-loader.js +139 -0
  281. package/dist/mesh/stl-loader.js.map +1 -0
  282. package/dist/module-resolver/parse-imports.d.ts +37 -0
  283. package/dist/module-resolver/parse-imports.d.ts.map +1 -0
  284. package/dist/module-resolver/parse-imports.js +39 -0
  285. package/dist/module-resolver/parse-imports.js.map +1 -0
  286. package/dist/module-resolver/resolver.d.ts +1 -1
  287. package/dist/module-resolver/resolver.js +2 -2
  288. package/dist/module-resolver/resolver.js.map +1 -1
  289. package/dist/node-host/cli.d.ts.map +1 -1
  290. package/dist/node-host/cli.js +37 -4
  291. package/dist/node-host/cli.js.map +1 -1
  292. package/dist/primitives/text/cjk-font.d.ts +42 -0
  293. package/dist/primitives/text/cjk-font.d.ts.map +1 -0
  294. package/dist/primitives/text/cjk-font.js +86 -0
  295. package/dist/primitives/text/cjk-font.js.map +1 -0
  296. package/dist/runtime-state.d.ts +18 -6
  297. package/dist/runtime-state.d.ts.map +1 -1
  298. package/dist/runtime-state.js +9 -1
  299. package/dist/runtime-state.js.map +1 -1
  300. package/dist/sdk.d.ts +2 -2
  301. package/dist/sdk.js +2 -2
  302. package/dist/sdk.js.map +1 -1
  303. package/dist/shape.d.ts +15 -0
  304. package/dist/shape.d.ts.map +1 -1
  305. package/dist/shape.js +26 -3
  306. package/dist/shape.js.map +1 -1
  307. package/dist/symbol-table.d.ts +15 -0
  308. package/dist/symbol-table.d.ts.map +1 -0
  309. package/dist/symbol-table.js +14 -0
  310. package/dist/symbol-table.js.map +1 -0
  311. package/dist/topology/naming/build-naming.d.ts +14 -30
  312. package/dist/topology/naming/build-naming.d.ts.map +1 -1
  313. package/dist/topology/naming/build-naming.js +21 -54
  314. package/dist/topology/naming/build-naming.js.map +1 -1
  315. package/dist/topology/naming/capture-topo-ref.d.ts.map +1 -1
  316. package/dist/topology/naming/capture-topo-ref.js +5 -0
  317. package/dist/topology/naming/capture-topo-ref.js.map +1 -1
  318. package/dist/topology/naming/index.d.ts +3 -0
  319. package/dist/topology/naming/index.d.ts.map +1 -1
  320. package/dist/topology/naming/index.js +3 -0
  321. package/dist/topology/naming/index.js.map +1 -1
  322. package/dist/topology/naming/lineage-resolve.d.ts +80 -0
  323. package/dist/topology/naming/lineage-resolve.d.ts.map +1 -0
  324. package/dist/topology/naming/lineage-resolve.js +120 -0
  325. package/dist/topology/naming/lineage-resolve.js.map +1 -0
  326. package/dist/topology/naming/lineage.d.ts +349 -0
  327. package/dist/topology/naming/lineage.d.ts.map +1 -0
  328. package/dist/topology/naming/lineage.js +398 -0
  329. package/dist/topology/naming/lineage.js.map +1 -0
  330. package/dist/topology/naming/migrate.d.ts +41 -0
  331. package/dist/topology/naming/migrate.d.ts.map +1 -0
  332. package/dist/topology/naming/migrate.js +88 -0
  333. package/dist/topology/naming/migrate.js.map +1 -0
  334. package/dist/topology/naming/role-name.d.ts +176 -0
  335. package/dist/topology/naming/role-name.d.ts.map +1 -0
  336. package/dist/topology/naming/role-name.js +344 -0
  337. package/dist/topology/naming/role-name.js.map +1 -0
  338. package/dist/topology/naming/roles.d.ts +20 -22
  339. package/dist/topology/naming/roles.d.ts.map +1 -1
  340. package/dist/topology/naming/roles.js +51 -49
  341. package/dist/topology/naming/roles.js.map +1 -1
  342. package/dist/topology/naming/types.d.ts +65 -18
  343. package/dist/topology/naming/types.d.ts.map +1 -1
  344. package/dist/topology/naming/types.js.map +1 -1
  345. package/dist/vendored/brepjs/kernel/index.d.ts +5 -0
  346. package/dist/vendored/brepjs/kernel/index.d.ts.map +1 -1
  347. package/dist/vendored/brepjs/kernel/index.js +11 -0
  348. package/dist/vendored/brepjs/kernel/index.js.map +1 -1
  349. package/dist/weapp.d.ts +4 -4
  350. package/dist/weapp.d.ts.map +1 -1
  351. package/dist/weapp.js +7 -4
  352. package/dist/weapp.js.map +1 -1
  353. package/package.json +16 -14
  354. package/dist/api/compat/index.d.ts +0 -173
  355. package/dist/api/compat/index.d.ts.map +0 -1
  356. package/dist/api/compat/index.js +0 -222
  357. package/dist/api/compat/index.js.map +0 -1
  358. package/dist/api/compound.d.ts +0 -108
  359. package/dist/api/compound.d.ts.map +0 -1
  360. package/dist/api/compound.js +0 -162
  361. package/dist/api/compound.js.map +0 -1
  362. package/dist/api/copy.d.ts +0 -39
  363. package/dist/api/copy.d.ts.map +0 -1
  364. package/dist/api/copy.js +0 -81
  365. package/dist/api/copy.js.map +0 -1
  366. package/dist/api/fai_drill.d.ts +0 -46
  367. package/dist/api/fai_drill.d.ts.map +0 -1
  368. package/dist/api/fai_drill.js +0 -230
  369. package/dist/api/fai_drill.js.map +0 -1
  370. package/dist/api/fai_extrude.d.ts +0 -36
  371. package/dist/api/fai_extrude.d.ts.map +0 -1
  372. package/dist/api/fai_extrude.js +0 -78
  373. package/dist/api/fai_extrude.js.map +0 -1
  374. package/dist/api/fai_split.d.ts +0 -46
  375. package/dist/api/fai_split.d.ts.map +0 -1
  376. package/dist/api/fai_split.js +0 -253
  377. package/dist/api/fai_split.js.map +0 -1
  378. package/dist/api/load.d.ts +0 -39
  379. package/dist/api/load.d.ts.map +0 -1
  380. package/dist/api/load.js +0 -82
  381. package/dist/api/load.js.map +0 -1
  382. package/dist/api/svgExtrude.d.ts +0 -32
  383. package/dist/api/svgExtrude.d.ts.map +0 -1
  384. package/dist/api/svgExtrude.js +0 -73
  385. package/dist/api/svgExtrude.js.map +0 -1
  386. package/dist/api/text.d.ts +0 -34
  387. package/dist/api/text.d.ts.map +0 -1
  388. package/dist/api/text.js +0 -100
  389. package/dist/api/text.js.map +0 -1
  390. package/dist/brep/text/fontTestHelper.d.ts +0 -30
  391. package/dist/brep/text/fontTestHelper.d.ts.map +0 -1
  392. package/dist/brep/text/fontTestHelper.js +0 -57
  393. package/dist/brep/text/fontTestHelper.js.map +0 -1
  394. package/dist/cad-runtime/module-executor.d.ts +0 -271
  395. package/dist/cad-runtime/module-executor.d.ts.map +0 -1
  396. package/dist/cad-runtime/module-executor.js +0 -630
  397. package/dist/cad-runtime/module-executor.js.map +0 -1
  398. package/dist/cad-runtime/terminal-dag.d.ts +0 -65
  399. package/dist/cad-runtime/terminal-dag.d.ts.map +0 -1
  400. package/dist/cad-runtime/terminal-dag.js +0 -167
  401. package/dist/cad-runtime/terminal-dag.js.map +0 -1
  402. package/dist/faqts/browser.d.ts +0 -16
  403. package/dist/faqts/browser.d.ts.map +0 -1
  404. package/dist/faqts/browser.js +0 -13
  405. package/dist/faqts/browser.js.map +0 -1
  406. package/dist/faqts/exec-blob.d.ts +0 -14
  407. package/dist/faqts/exec-blob.d.ts.map +0 -1
  408. package/dist/faqts/exec-blob.js +0 -22
  409. package/dist/faqts/exec-blob.js.map +0 -1
  410. package/dist/faqts/exec-node.d.ts +0 -15
  411. package/dist/faqts/exec-node.d.ts.map +0 -1
  412. package/dist/faqts/exec-node.js +0 -29
  413. package/dist/faqts/exec-node.js.map +0 -1
  414. package/dist/faqts/imports.d.ts +0 -74
  415. package/dist/faqts/imports.d.ts.map +0 -1
  416. package/dist/faqts/imports.js +0 -95
  417. package/dist/faqts/imports.js.map +0 -1
  418. package/dist/faqts/index.d.ts +0 -22
  419. package/dist/faqts/index.d.ts.map +0 -1
  420. package/dist/faqts/index.js +0 -21
  421. package/dist/faqts/index.js.map +0 -1
  422. package/dist/faqts/node.d.ts +0 -23
  423. package/dist/faqts/node.d.ts.map +0 -1
  424. package/dist/faqts/node.js +0 -23
  425. package/dist/faqts/node.js.map +0 -1
  426. package/dist/faqts/run.d.ts +0 -62
  427. package/dist/faqts/run.d.ts.map +0 -1
  428. package/dist/faqts/run.js +0 -62
  429. package/dist/faqts/run.js.map +0 -1
  430. package/dist/faqts/transform.d.ts +0 -43
  431. package/dist/faqts/transform.d.ts.map +0 -1
  432. package/dist/faqts/transform.js +0 -35
  433. package/dist/faqts/transform.js.map +0 -1
  434. package/dist/lang/compile.d.ts +0 -50
  435. package/dist/lang/compile.d.ts.map +0 -1
  436. package/dist/lang/compile.js +0 -368
  437. package/dist/lang/compile.js.map +0 -1
  438. package/dist/lang/keep.d.ts +0 -109
  439. package/dist/lang/keep.d.ts.map +0 -1
  440. package/dist/lang/keep.js +0 -226
  441. package/dist/lang/keep.js.map +0 -1
  442. package/dist/lang/parser.d.ts +0 -91
  443. package/dist/lang/parser.d.ts.map +0 -1
  444. package/dist/lang/parser.js +0 -1594
  445. package/dist/lang/parser.js.map +0 -1
  446. package/dist/mesh/drill-hole/DrillHoleCore.d.ts +0 -90
  447. package/dist/mesh/drill-hole/DrillHoleCore.d.ts.map +0 -1
  448. package/dist/mesh/drill-hole/DrillHoleCore.js +0 -287
  449. package/dist/mesh/drill-hole/DrillHoleCore.js.map +0 -1
  450. package/dist/mesh/drill-hole/drill-types.d.ts +0 -34
  451. package/dist/mesh/drill-hole/drill-types.d.ts.map +0 -1
  452. package/dist/mesh/drill-hole/drill-types.js +0 -7
  453. package/dist/mesh/drill-hole/drill-types.js.map +0 -1
  454. package/dist/mesh/fai_drill.d.ts +0 -21
  455. package/dist/mesh/fai_drill.d.ts.map +0 -1
  456. package/dist/mesh/fai_drill.js +0 -92
  457. package/dist/mesh/fai_drill.js.map +0 -1
  458. package/dist/mesh/fai_extrude.d.ts +0 -24
  459. package/dist/mesh/fai_extrude.d.ts.map +0 -1
  460. package/dist/mesh/fai_extrude.js +0 -42
  461. package/dist/mesh/fai_extrude.js.map +0 -1
  462. package/dist/mesh/fai_split.d.ts +0 -164
  463. package/dist/mesh/fai_split.d.ts.map +0 -1
  464. package/dist/mesh/fai_split.js +0 -269
  465. package/dist/mesh/fai_split.js.map +0 -1
  466. package/dist/primitives/svg-extrude.d.ts +0 -43
  467. package/dist/primitives/svg-extrude.d.ts.map +0 -1
  468. package/dist/primitives/svg-extrude.js +0 -78
  469. package/dist/primitives/svg-extrude.js.map +0 -1
  470. package/dist/primitives/text/cjk.d.ts +0 -61
  471. package/dist/primitives/text/cjk.d.ts.map +0 -1
  472. package/dist/primitives/text/cjk.js +0 -215
  473. package/dist/primitives/text/cjk.js.map +0 -1
  474. package/dist/primitives/text-geometry.d.ts +0 -47
  475. package/dist/primitives/text-geometry.d.ts.map +0 -1
  476. package/dist/primitives/text-geometry.js +0 -127
  477. package/dist/primitives/text-geometry.js.map +0 -1
  478. package/dist/test-helpers.d.ts +0 -31
  479. package/dist/test-helpers.d.ts.map +0 -1
  480. package/dist/test-helpers.js +0 -55
  481. package/dist/test-helpers.js.map +0 -1
  482. package/dist/vendored/brepjs/core/kernelReentrancy.d.ts +0 -41
  483. package/dist/vendored/brepjs/core/kernelReentrancy.d.ts.map +0 -1
  484. package/dist/vendored/brepjs/core/kernelReentrancy.js +0 -68
  485. package/dist/vendored/brepjs/core/kernelReentrancy.js.map +0 -1
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * brepkit-kernel/brepkitKernel — brepkit 内核 → faijs BrepEngineApi 适配器(v1 白名单)
3
3
  *
4
- * 设计要点(对应 3d_editor/docs/plans/2026-09-18-weapp-voice-ai-modeling-design.md §5):
4
+ * 设计要点(对应 3d_editor 项目的 weapp-voice-ai-modeling 设计计划 §5):
5
5
  * - 句柄:brepkit u32 句柄与 faijs BrepHandle(number) 同构,直通零转换;
6
6
  * - 拓扑红线:meshShape 用 tessellateSolidGrouped 输出 faceGroups,与三角化几何同源;
7
7
  * - 面溯源:布尔/倒角走 *WithEvolution,映射为 BrepEvolutionData(hash 编码);
@@ -166,21 +166,21 @@ export async function createBrepkitPrimitives() {
166
166
  makeBoxFromCorners(corner1, corner2) {
167
167
  const dx = Math.abs(corner2.x - corner1.x), dy = Math.abs(corner2.y - corner1.y), dz = Math.abs(corner2.z - corner1.z);
168
168
  const h = kernel.makeBox(dx, dy, dz);
169
- return asHandle(kernel.transformSolid(h, translationMatrix(Math.min(corner1.x, corner2.x), Math.min(corner1.y, corner2.y), Math.min(corner1.z, corner2.z))));
169
+ return asHandle(kernel.transformSolid(h, toKernelMatrix(translationMatrix(Math.min(corner1.x, corner2.x), Math.min(corner1.y, corner2.y), Math.min(corner1.z, corner2.z)))));
170
170
  },
171
171
  makeCylinder(radius, height) { return asHandle(kernel.makeCylinder(radius, height)); },
172
172
  makeSphere(radius) { return asHandle(kernel.makeSphere(radius, 32)); },
173
173
  makeCone(r1, r2, height) { return asHandle(kernel.makeCone(r1, r2, height)); },
174
174
  makeRectangle(_width, _height) { return unsupported('makeRectangle'); },
175
175
  // ── 造型运算 ──
176
- extrude(_shape, _dx, _dy, _dz) { return unsupported('extrude'); },
176
+ extrude(_shape, _dx, _dy, _dz) { return unsupported('extrude'); }, // ⚠️ wasm extrude(face, dir, distance) 语义不同 → 保持 unsupported
177
177
  loft(_wires, _isSolid, _ruled) { return unsupported('loft'); },
178
178
  // ── 布尔与分割 ──
179
179
  fuse(a, b) { return asHandle(trackFallback(kernel.fuse(asNum(a), asNum(b)))); },
180
180
  cut(a, b) { return asHandle(trackFallback(kernel.cut(asNum(a), asNum(b)))); },
181
181
  common(a, b) { return asHandle(trackFallback(kernel.common(asNum(a), asNum(b)))); },
182
182
  intersect(a, b) { return asHandle(trackFallback(kernel.common(asNum(a), asNum(b)))); },
183
- section(_a, _b) { return unsupported('section'); },
183
+ section(_a, _b) { return unsupported('section'); }, // ⚠️ wasm section(solid+平面) 语义不同 → 保持 unsupported
184
184
  fuseAll(shapes) {
185
185
  return asHandle(trackFallback(kernel.fuseAll(Int32Array.from(shapes.map(asNum)))));
186
186
  },
@@ -208,32 +208,52 @@ export async function createBrepkitPrimitives() {
208
208
  // ── 变换 ──
209
209
  // ⚠️ brepkit 的 transformSolid 是「原地修改、返回 undefined」——必须先 copySolid
210
210
  // 复制出新句柄再变换,否则会篡改调用方手里的原实体(单测 2026-09-19 实证)。
211
+ // ⚠️ 矩阵方言:faijs 接口口径是 3×4 行主序 12 元素(见 brep/engine/primitives.ts);
212
+ // brepkit transformSolid 吃 4×4 行主序 16 元素。所有 transformSolid 调用一律经
213
+ // toKernelMatrix 归一(下方唯一转换点),禁止直出 16 元素旁路。
211
214
  translate(shape, dx, dy, dz) {
212
215
  const c = kernel.copySolid(asNum(shape));
213
- kernel.transformSolid(c, translationMatrix(dx, dy, dz));
216
+ kernel.transformSolid(c, toKernelMatrix(translationMatrix(dx, dy, dz)));
214
217
  return asHandle(c);
215
218
  },
216
219
  scale(shape, center, factor) {
217
220
  const c = kernel.copySolid(asNum(shape));
218
- kernel.transformSolid(c, scaleMatrix(center, factor));
221
+ kernel.transformSolid(c, toKernelMatrix(scaleMatrix(center, factor)));
219
222
  return asHandle(c);
220
223
  },
221
224
  transform(shape, matrix) {
222
225
  const c = kernel.copySolid(asNum(shape));
223
- kernel.transformSolid(c, matrix);
226
+ kernel.transformSolid(c, toKernelMatrix(matrix));
224
227
  return asHandle(c);
225
228
  },
226
229
  located(shape, matrix) {
227
230
  const c = kernel.copySolid(asNum(shape));
228
- kernel.transformSolid(c, matrix);
231
+ kernel.transformSolid(c, toKernelMatrix(matrix));
229
232
  return asHandle(c);
230
233
  },
231
234
  generalTransform(shape, matrix) {
232
235
  const c = kernel.copySolid(asNum(shape));
233
- kernel.transformSolid(c, matrix);
236
+ kernel.transformSolid(c, toKernelMatrix(matrix));
234
237
  return asHandle(c);
235
238
  },
236
239
  copy(shape) { return asHandle(kernel.copySolid(asNum(shape))); },
240
+ // ── 阵列(Phase 2:brepkit wasm 已导出 linearPattern/circularPattern/gridPattern) ──
241
+ // brepkit wasm 的 pattern 内核函数都返回 compound(含全部副本,README「Returns a
242
+ // compound handle containing all copies」实证)→ 经 getCompoundSolids 拆成数组。
243
+ linearPattern(shape, direction, spacing, count) {
244
+ const compound = kernel.linearPattern(asNum(shape), direction.x, direction.y, direction.z, spacing, count);
245
+ return arr(kernel.getCompoundSolids(compound)).map(asHandle);
246
+ },
247
+ circularPattern(shape, center, axis, angleStep, count) {
248
+ // ⚠️ brepkit wasm circularPattern(solid, ax, ay, az, count) 无 center/angle 参数:
249
+ // 固定整圆均分(每份 360°/count)。fullAngle=360 时与 vendored/occt 语义一致;
250
+ // 其它角度跨度无法表达(语义限制记录于此,parity 测试用整圆)。
251
+ const compound = kernel.circularPattern(asNum(shape), axis.x, axis.y, axis.z, count);
252
+ return arr(kernel.getCompoundSolids(compound)).map(asHandle);
253
+ },
254
+ gridPattern(shape, directionX, directionY, spacingX, spacingY, countX, countY) {
255
+ return asHandle(kernel.gridPattern(asNum(shape), directionX.x, directionX.y, directionX.z, directionY.x, directionY.y, directionY.z, spacingX, spacingY, countX, countY));
256
+ },
237
257
  // ── 曲线构造 ──
238
258
  makeLineEdge(start, end) {
239
259
  return asHandle(kernel.makeLineEdge(start.x, start.y, start.z, end.x, end.y, end.z));
@@ -520,28 +540,104 @@ export async function createBrepkitPrimitives() {
520
540
  intersectWithHistory(_a, _b, _inputFaceHashes, _hashUpperBound) {
521
541
  return unsupported('intersectWithHistory');
522
542
  },
543
+ // Phase 0.1 补齐的 7 个:brepkit 适配器 v1 未实现 —— 如实抛错,不伪造。
544
+ // ⚠️ 这些桩**不能**被当作"已实现"来探测:`typeof api.xWithHistory === 'function'`
545
+ // 恒为真。Phase 0.2 起适配器的 `evolution` 是逐核函数**名单**
546
+ // (`adapters/brepkit.ts` = ['fuse','cut','fillet']),名单才是唯一真相来源;
547
+ // 声明多写一项 = 让该 op 静默通过静态判定后死在这些桩上(红线违规)。
548
+ translateWithHistory(_shape, _dx, _dy, _dz, _inputFaceHashes, _hashUpperBound) {
549
+ return unsupported('translateWithHistory');
550
+ },
551
+ rotateWithHistory(_shape, _axis, _angleRad, _inputFaceHashes, _hashUpperBound) {
552
+ return unsupported('rotateWithHistory');
553
+ },
554
+ mirrorWithHistory(_shape, _point, _normal, _inputFaceHashes, _hashUpperBound) {
555
+ return unsupported('mirrorWithHistory');
556
+ },
557
+ scaleWithHistory(_shape, _center, _factor, _inputFaceHashes, _hashUpperBound) {
558
+ return unsupported('scaleWithHistory');
559
+ },
560
+ shellWithHistory(_solid, _faces, _thickness, _tolerance, _inputFaceHashes, _hashUpperBound) {
561
+ return unsupported('shellWithHistory');
562
+ },
563
+ offsetWithHistory(_solid, _distance, _tolerance, _inputFaceHashes, _hashUpperBound) {
564
+ return unsupported('offsetWithHistory');
565
+ },
566
+ thickenWithHistory(_shape, _thickness, _tolerance, _inputFaceHashes, _hashUpperBound) {
567
+ return unsupported('thickenWithHistory');
568
+ },
523
569
  // ── XCAF 装配(v1 关闭) ──
524
570
  createXCAFDocument() { return unsupported('createXCAFDocument'); },
525
571
  importXCAFFromSTEP(_stepData) { return unsupported('importXCAFFromSTEP'); },
572
+ // ── Phase 3 登记方法(capability-map 64 方法收口):真实现 3 个(wasm 有对应导出,
573
+ // 命名映射),其余如实 unsupported——能力表不声明,静态判定拦截 ──
574
+ boundingBox(shape) { return kernel.getBoundingBox(asNum(shape)); },
575
+ surfaceCenterOfMass(face) { return kernel.getSurfaceCenterOfMass(asNum(face)); },
576
+ dispose(_shape) { },
577
+ shapeType(_shape) { return unsupported('shapeType'); },
578
+ isNull(_shape) { return unsupported('isNull'); },
579
+ iterShapes(_shape) { return unsupported('iterShapes'); },
580
+ locate(_shape, _matrix) { return unsupported('locate'); },
581
+ copyShape(_shape) { return unsupported('copyShape'); },
582
+ downcast(_shape, _targetType) { return unsupported('downcast'); },
583
+ composeTransform(_m1, _m2) { return unsupported('composeTransform'); },
584
+ buildExtrusionLaw(_profile, _length, _endFactor) { return unsupported('buildExtrusionLaw'); },
585
+ buildEdgeOnSurface(_curve, _surface) { return unsupported('buildEdgeOnSurface'); },
586
+ healFace(_shape, _tolerance) { return unsupported('healFace'); },
587
+ healWire(_shape, _tolerance) { return unsupported('healWire'); },
588
+ fixSelfIntersection(_wire) { return unsupported('fixSelfIntersection'); },
589
+ hullFromPoints(_points, _tolerance) { return unsupported('hullFromPoints'); },
590
+ loftAdvanced(_wires, _options) { return unsupported('loftAdvanced'); },
591
+ makeEllipsoid(rx, ry, rz) { return asHandle(kernel.makeEllipsoid(rx, ry, rz)); }, // Phase 3: wasm 同签名真实现(brepkit-wasm.d.ts:1354)
592
+ makeFaceOnSurface(_face, _wire) { return unsupported('makeFaceOnSurface'); },
593
+ makeTorus(majorRadius, minorRadius) { return asHandle(kernel.makeTorus(majorRadius, minorRadius, 64)); }, // Phase 3: wasm 真实现(segments 固定 64,BrepEngineApi 不暴露)
594
+ makeVertex(x, y, z) { return asHandle(kernel.makeVertex(x, y, z)); }, // Phase 3: wasm 同签名真实现
595
+ makeWireFromMixed(_items) { return unsupported('makeWireFromMixed'); },
596
+ mirror(shape, point, normal) { return asHandle(kernel.mirror(asNum(shape), point.x, point.y, point.z, normal.x, normal.y, normal.z)); }, // Phase 3: wasm 真实现
597
+ revolveVec(_shape, _center, _direction, _angleDeg) { return unsupported('revolveVec'); },
598
+ sew(_shapes, _tolerance) { return unsupported('sew'); },
599
+ shell(solid, facesToRemove, thickness, _tolerance) { return asHandle(kernel.shell(asNum(solid), thickness, Uint32Array.from(facesToRemove.map(asNum)))); }, // Phase 3: wasm 真实现(tolerance 忽略)
600
+ simplePipe(_profile, _spine) { return unsupported('simplePipe'); },
601
+ simplify(_shape) { return unsupported('simplify'); },
602
+ split(_shape, _tools) { return unsupported('split'); }, // ⚠️ wasm split 是平面分割(solid+平面参数),与 BrepEngineApi 工具实体分割语义不匹配 → 保持 unsupported
603
+ sweepPipeShell(_profile, _spine, _freenet, _smooth) { return unsupported('sweepPipeShell'); },
604
+ generalTransformNonOrthogonal(_shape, _matrix) { return unsupported('generalTransformNonOrthogonal'); },
605
+ generalTransformWithHistory(_shape, _matrix, _inputFaceHashes, _hashUpperBound) { return unsupported('generalTransformWithHistory'); },
606
+ applyComposedTransformWithHistory(_shape, _matrix, _inputFaceHashes, _hashUpperBound) { return unsupported('applyComposedTransformWithHistory'); },
526
607
  };
527
608
  return api;
528
609
  }
529
610
  // ── 工具 ──
530
- /** 4×4 行主序平移矩阵(brepkit transformSolid 格式:平移在最后一列,index 3/7/11;2026-09-19 实测)。 */
611
+ /** 3×4 行主序平移矩阵(faijs 接口方言:平移在 index 3/7/11,与 matrixToArray 同构)。 */
531
612
  function translationMatrix(dx, dy, dz) {
532
613
  return [
533
614
  1, 0, 0, dx,
534
615
  0, 1, 0, dy,
535
616
  0, 0, 1, dz,
536
- 0, 0, 0, 1,
537
617
  ];
538
618
  }
539
- /** 4×4 行主序缩放矩阵(绕 center 缩放)。 */
619
+ /** 3×4 行主序缩放矩阵(绕 center 缩放;faijs 接口方言,12 元素)。 */
540
620
  function scaleMatrix(center, factor) {
541
621
  return [
542
622
  factor, 0, 0, center.x * (1 - factor),
543
623
  0, factor, 0, center.y * (1 - factor),
544
624
  0, 0, factor, center.z * (1 - factor),
625
+ ];
626
+ }
627
+ /**
628
+ * 唯一的矩阵方言转换点:faijs 3×4 行主序(12 元素,matrixToArray 口径)→
629
+ * brepkit transformSolid 的 4×4 行主序(16 元素,补底行 0,0,0,1)。
630
+ * translate/scale 内部矩阵与 transform/located/generalTransform 的宿主入参
631
+ * 全部经此归一;非 12 元素直接抛错(方言不清 = 缺陷,静默通过即红线违规)。
632
+ */
633
+ function toKernelMatrix(matrix) {
634
+ if (matrix.length !== 12) {
635
+ throw new Error(`[brepkit] matrix dialect violation: expected 12 elements (3x4 row-major, faijs interface contract), got ${matrix.length}`);
636
+ }
637
+ return [
638
+ matrix[0], matrix[1], matrix[2], matrix[3],
639
+ matrix[4], matrix[5], matrix[6], matrix[7],
640
+ matrix[8], matrix[9], matrix[10], matrix[11],
545
641
  0, 0, 0, 1,
546
642
  ];
547
643
  }
@@ -1 +1 @@
1
- {"version":3,"file":"brepkitKernel.js","sourceRoot":"","sources":["../../src/brepkit-kernel/brepkitKernel.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * brepkit-kernel/brepkitKernel — brepkit 内核 → faijs BrepEngineApi 适配器(v1 白名单)\n *\n * 设计要点(对应 3d_editor/docs/plans/2026-09-18-weapp-voice-ai-modeling-design.md §5):\n * - 句柄:brepkit u32 句柄与 faijs BrepHandle(number) 同构,直通零转换;\n * - 拓扑红线:meshShape 用 tessellateSolidGrouped 输出 faceGroups,与三角化几何同源;\n * - 面溯源:布尔/倒角走 *WithEvolution,映射为 BrepEvolutionData(hash 编码);\n * - 链纪律:kernel.meshFallbackCount 计数差 > 0 → getMeshFallbackCount 暴露给宿主,\n * 由宿主标记 BREP 链中断(不在此层静默处理);\n * - v1 白名单之外的方法:显式抛错(报错好于掩盖,禁止空实现假成功)。\n */\n\nimport { initBrepkitWasm, type BrepKitKernel } from './brepkitWasm'\nimport type { BrepEngineApi } from '../brep/engine/primitives'\nimport type {\n BrepBoundingBox,\n BrepCurveParameters,\n BrepEdgeData,\n BrepEvolutionData,\n BrepHandle,\n BrepMeshResult,\n BrepSubShapeType,\n BrepTessellateOptions,\n BrepUvBounds,\n BrepVec3,\n BrepXcafDocument,\n} from '../brep/engine/types'\n\n// ── 句柄桥接:brepkit number 句柄 ↔ BrepHandle(零运行时成本,与 occt 适配器同构) ──\nconst asHandle = (n: number): BrepHandle => n as BrepHandle\nconst asNum = (h: BrepHandle): number => h as unknown as number\nconst arr = (x: ArrayLike<number> | number[]): number[] => Array.from(x as ArrayLike<number>)\n\n/**\n * brepkit 几何查询返回值归一为 number[]。\n *\n * 关键事实(npm brepkit-wasm d.ts 与本地 web-target 胶水一致):\n * getSurfaceDomain / getFaceNormal / evaluateSurfaceNormal / evaluateSurface /\n * evaluateEdgeCurve / evaluateEdgeCurveD1 / getEdgeCurveParameters / centerOfMass\n * 返回 **Float64Array**(不是 JSON 字符串);\n * 仅 getAnalyticSurfaceParams / getNurbsCurveData / tessellateSolidGrouped /\n * *WithEvolution 返回 JSON 字符串。\n *\n * 历史 bug:曾误以为全部返回 JSON 字符串而统一 JSON.parse,导致\n * `String(Float64Array)` 变成逗号拼接数字串(如 \"-1000000,1000000,...\"),\n * JSON.parse 在第一个逗号处抛 \"Unexpected non-whitespace character after JSON\"。\n * 这里同时兼容:JSON 字符串 / TypedArray / 普通数组 / {x,y,z} / 数字键对象。\n */\nfunction toNumArray(v: unknown): number[] {\n if (typeof v === 'string') {\n const parsed: unknown = JSON.parse(v)\n if (Array.isArray(parsed)) return parsed.map(Number)\n if (parsed && typeof parsed === 'object') {\n const o = parsed as Record<string, unknown>\n if (typeof o.x === 'number') return [o.x, Number(o.y), Number(o.z)]\n if (o[0] !== undefined) {\n const out: number[] = []\n for (let i = 0; o[i] !== undefined; i++) out.push(Number(o[i]))\n return out\n }\n }\n return []\n }\n if (v && typeof v === 'object') {\n if (Array.isArray(v)) return v.map(Number)\n if ('length' in v) return Array.from(v as ArrayLike<number>, Number)\n const o = v as Record<string, unknown>\n if (typeof o.x === 'number') return [o.x, Number(o.y), Number(o.z)]\n if (o[0] !== undefined) {\n const out: number[] = []\n for (let i = 0; o[i] !== undefined; i++) out.push(Number(o[i]))\n return out\n }\n }\n return []\n}\n\n/** v1 白名单外的方法统一抛错(携带适配器上下文与 v1 范围说明)。 */\nfunction unsupported(name: string): never {\n throw new Error(`[brepkit-kernel] BrepEngineApi.${name} 不在 brepkit 适配器 v1 白名单内(能力表见设计文档 §5.2)。该操作请在 OCCT 链执行,或等待适配器扩展。`)\n}\n\n/** 面稳定指纹:解析曲面参数 + 面积 → FNV-1a → 取模上界(跨操作可追溯,与句柄无关)。 */\nfunction faceFingerprint(kernel: BrepKitKernel, face: number, upperBound: number): number {\n let params = ''\n try { params = String(kernel.getAnalyticSurfaceParams(face) ?? '') } catch { /* 非解析面 */ }\n let area = 0\n try { area = Number(kernel.faceArea?.(face, 0.1) ?? 0) } catch { /* 查询失败用 0 */ }\n const basis = `${params}|${area.toFixed(6)}`\n let h = 0x811c9dc5\n for (let i = 0; i < basis.length; i++) {\n h ^= basis.charCodeAt(i)\n h = Math.imul(h, 0x01000193) >>> 0\n }\n return upperBound > 0 ? h % upperBound : h\n}\n\n/** 面演化数据(BrepEvolutionData):brepkit evolution JSON → hash 编码三元组。 */\nfunction mapEvolution(\n kernel: BrepKitKernel,\n raw: string,\n resultHandle: number,\n inputFaceHashes: number[],\n hashUpperBound: number,\n): BrepEvolutionData {\n // raw: {solid, evolution:{modified:{oldHandle:[newHandles]}, generated:{oldHandle:[new]}, deleted:[oldHandles]}}\n const parsed = JSON.parse(raw) as {\n solid: number\n evolution: { modified: Record<string, number[]>; generated: Record<string, number[]>; deleted: number[] }\n }\n const evo = parsed.evolution ?? { modified: {}, generated: {}, deleted: [] }\n const modifiedKeys = new Set(Object.keys(evo.modified ?? {}).map(Number))\n const deletedKeys = new Set((evo.deleted ?? []).map(Number))\n // 输入面 hash → 是否被改/删:通过该输入面在输入 hash 快照中的位置无法直接回溯句柄,\n // 诚实映射:modified/deleted 用\"发生变化的输入句柄数 == 输入面数\"的对齐近似——\n // v1 精确溯源依赖 per-shape hash 注册表(subShapeHashes 时登记 hash↔handle)。\n const registry = hashRegistry.get(kernel)\n const modified: number[] = []\n const deleted: number[] = []\n if (registry) {\n for (const [hash, handle] of registry) {\n if (modifiedKeys.has(handle)) modified.push(hash)\n if (deletedKeys.has(handle)) deleted.push(hash)\n }\n }\n // generated:结果实体的新面 hash(数量按 generated 表展开)\n const generated: number[] = []\n for (const news of Object.values(evo.generated ?? {})) {\n for (const nh of news) generated.push(faceFingerprint(kernel, nh, hashUpperBound))\n }\n // 更新注册表:结果实体 faces 的最新 hash 登记(供下一次演化对齐)\n try {\n const faces = arr(kernel.getSolidFaces(resultHandle))\n const reg = registry ?? new Map<number, number>()\n for (const f of faces) reg.set(faceFingerprint(kernel, f, hashUpperBound), f)\n hashRegistry.set(kernel, reg)\n } catch { /* 非实体结果跳过登记 */ }\n return { result: asHandle(resultHandle), modified, generated, deleted }\n}\n\n/** per-kernel 的 hash↔handle 登记表(fuseWithHistory 溯源对齐用)。 */\nconst hashRegistry = new WeakMap<BrepKitKernel, Map<number, number>>()\n\n/** brepkit 适配器返回类型:BrepEngineApi + brepkit 专属诊断。 */\ntype BrepkitEngineExtras = BrepEngineApi & { getMeshFallbackCount(): number }\n\n/**\n * 创建 brepkit BrepEngineApi 实现(v1 白名单)。\n * 与 occt 的 initOcctWasm 同位:返回满足引擎契约的原语集合。\n * @returns a promise resolving to the BrepEngineApi implementation plus brepkit-specific\n * diagnostics (`getMeshFallbackCount`).\n */\nexport async function createBrepkitPrimitives(): Promise<BrepkitEngineExtras> {\n const kernel = await initBrepkitWasm()\n liveKernel = kernel\n let lastFallbackCount = 0\n // 已知面句柄集合:getSubShapes(shape,'face') 返回的面在此登记;\n // getSubShapes(handle,'edge'/'vertex') 据此分发到 face 级或 solid 级 API。\n const knownFaces = new Set<number>()\n const readFallback = (): number => {\n try {\n return typeof kernel.meshFallbackCount === 'function' ? Number(kernel.meshFallbackCount()) : 0\n } catch { return 0 }\n }\n /** 布尔类操作后登记回退计数差(§5.4:宿主每步读取,>0 即链中断)。 */\n const trackFallback = <T>(r: T): T => { lastFallbackCount = readFallback(); return r }\n\n const api = {\n // ── 生命周期 ──\n release(_shape: BrepHandle): void { /* GC 型:brepkit 句柄由内核统一管理,无逐句柄 free API */ },\n /** 内核级诊断:距上次读取的 mesh 布尔回退计数差(>0 = BREP 链已中断)。 */\n getMeshFallbackCount(): number {\n const now = readFallback()\n const delta = now - lastFallbackCount\n lastFallbackCount = now\n return delta\n },\n\n // ── 实体图元 ──\n makeBox(dx: number, dy: number, dz: number): BrepHandle { return asHandle(kernel.makeBox(dx, dy, dz)) },\n makeBoxFromCorners(corner1: BrepVec3, corner2: BrepVec3): BrepHandle {\n const dx = Math.abs(corner2.x - corner1.x), dy = Math.abs(corner2.y - corner1.y), dz = Math.abs(corner2.z - corner1.z)\n const h = kernel.makeBox(dx, dy, dz)\n return asHandle(kernel.transformSolid(h, translationMatrix(\n Math.min(corner1.x, corner2.x), Math.min(corner1.y, corner2.y), Math.min(corner1.z, corner2.z),\n )))\n },\n makeCylinder(radius: number, height: number): BrepHandle { return asHandle(kernel.makeCylinder(radius, height)) },\n makeSphere(radius: number): BrepHandle { return asHandle(kernel.makeSphere(radius, 32)) },\n makeCone(r1: number, r2: number, height: number): BrepHandle { return asHandle(kernel.makeCone(r1, r2, height)) },\n makeRectangle(_width: number, _height: number): BrepHandle { return unsupported('makeRectangle') },\n\n // ── 造型运算 ──\n extrude(_shape: BrepHandle, _dx: number, _dy: number, _dz: number): BrepHandle { return unsupported('extrude') },\n loft(_wires: BrepHandle[], _isSolid: boolean, _ruled: boolean): BrepHandle { return unsupported('loft') },\n\n // ── 布尔与分割 ──\n fuse(a: BrepHandle, b: BrepHandle): BrepHandle { return asHandle(trackFallback(kernel.fuse(asNum(a), asNum(b)))) },\n cut(a: BrepHandle, b: BrepHandle): BrepHandle { return asHandle(trackFallback(kernel.cut(asNum(a), asNum(b)))) },\n common(a: BrepHandle, b: BrepHandle): BrepHandle { return asHandle(trackFallback(kernel.common(asNum(a), asNum(b)))) },\n intersect(a: BrepHandle, b: BrepHandle): BrepHandle { return asHandle(trackFallback(kernel.common(asNum(a), asNum(b)))) },\n section(_a: BrepHandle, _b: BrepHandle): BrepHandle { return unsupported('section') },\n fuseAll(shapes: BrepHandle[]): BrepHandle {\n return asHandle(trackFallback(kernel.fuseAll(Int32Array.from(shapes.map(asNum)))))\n },\n\n // ── 倒角与圆角 ──\n chamfer(solid: BrepHandle, edges: BrepHandle[], distance: number): BrepHandle {\n return asHandle(trackFallback(kernel.chamfer(asNum(solid), Int32Array.from(edges.map(asNum)), distance)))\n },\n chamferDistAngle(solid: BrepHandle, edges: BrepHandle[], distance: number, angleDeg: number): BrepHandle {\n return asHandle(trackFallback(kernel.chamferDistanceAngle(asNum(solid), Int32Array.from(edges.map(asNum)), distance, angleDeg)))\n },\n fillet(solid: BrepHandle, edges: BrepHandle[], radius: number): BrepHandle {\n return asHandle(trackFallback(kernel.fillet(asNum(solid), Int32Array.from(edges.map(asNum)), radius)))\n },\n filletVariable(solid: BrepHandle, edge: BrepHandle, startRadius: number, endRadius: number): BrepHandle {\n return asHandle(trackFallback(kernel.filletVariable(asNum(solid), asNum(edge), startRadius, endRadius)))\n },\n filletWithHistory(solid: BrepHandle, edges: BrepHandle[], radius: number, inputFaceHashes: number[], hashUpperBound: number): BrepEvolutionData {\n const raw = kernel.filletWithEvolution(asNum(solid), Int32Array.from(edges.map(asNum)), radius)\n return mapEvolution(kernel, raw, JSON.parse(raw).solid, inputFaceHashes, hashUpperBound)\n },\n chamferWithHistory(_solid: BrepHandle, _edges: BrepHandle[], _distance: number, _inputFaceHashes: number[], _hashUpperBound: number): BrepEvolutionData {\n // brepkit 无 chamferWithEvolution → 等距倒角演化不支持,诚实报错(能力表 evolution 仅覆盖 fuse/cut/fillet)\n return unsupported('chamferWithHistory')\n },\n\n // ── 变换 ──\n // ⚠️ brepkit 的 transformSolid 是「原地修改、返回 undefined」——必须先 copySolid\n // 复制出新句柄再变换,否则会篡改调用方手里的原实体(单测 2026-09-19 实证)。\n translate(shape: BrepHandle, dx: number, dy: number, dz: number): BrepHandle {\n const c = kernel.copySolid(asNum(shape))\n kernel.transformSolid(c, translationMatrix(dx, dy, dz))\n return asHandle(c)\n },\n scale(shape: BrepHandle, center: BrepVec3, factor: number): BrepHandle {\n const c = kernel.copySolid(asNum(shape))\n kernel.transformSolid(c, scaleMatrix(center, factor))\n return asHandle(c)\n },\n transform(shape: BrepHandle, matrix: number[]): BrepHandle {\n const c = kernel.copySolid(asNum(shape))\n kernel.transformSolid(c, matrix)\n return asHandle(c)\n },\n located(shape: BrepHandle, matrix: number[]): BrepHandle {\n const c = kernel.copySolid(asNum(shape))\n kernel.transformSolid(c, matrix)\n return asHandle(c)\n },\n generalTransform(shape: BrepHandle, matrix: number[]): BrepHandle {\n const c = kernel.copySolid(asNum(shape))\n kernel.transformSolid(c, matrix)\n return asHandle(c)\n },\n copy(shape: BrepHandle): BrepHandle { return asHandle(kernel.copySolid(asNum(shape))) },\n\n // ── 曲线构造 ──\n makeLineEdge(start: BrepVec3, end: BrepVec3): BrepHandle {\n return asHandle(kernel.makeLineEdge(start.x, start.y, start.z, end.x, end.y, end.z))\n },\n makeArcEdge(_start: BrepVec3, _mid: BrepVec3, _end: BrepVec3): BrepHandle { return unsupported('makeArcEdge') },\n makeBezierEdge(_controlPoints: BrepVec3[]): BrepHandle { return unsupported('makeBezierEdge') },\n\n // ── 拓扑构造 ──\n makeWire(edges: BrepHandle[]): BrepHandle {\n return asHandle(kernel.makeWire(Int32Array.from(edges.map(asNum)), false))\n },\n makeFace(wire: BrepHandle): BrepHandle { return asHandle(kernel.makeFaceFromWire(asNum(wire))) },\n makeCompound(shapes: BrepHandle[]): BrepHandle {\n return asHandle(kernel.makeCompound(Int32Array.from(shapes.map(asNum))))\n },\n sewAndSolidify(faces: BrepHandle[], tolerance?: number): BrepHandle {\n return asHandle(kernel.sewFaces(Int32Array.from(faces.map(asNum)), tolerance ?? 1e-6))\n },\n buildTriFace(_a: BrepVec3, _b: BrepVec3, _c: BrepVec3): BrepHandle { return unsupported('buildTriFace') },\n addHolesInFace(face: BrepHandle, holeWires: BrepHandle[]): BrepHandle {\n return asHandle(kernel.addHolesToFace(asNum(face), Int32Array.from(holeWires.map(asNum))))\n },\n\n // ── 三角化(BREP→mesh 唯一出口) ──\n meshShape(shape: BrepHandle, options?: BrepTessellateOptions): BrepMeshResult {\n const deflection = options?.linearDeflection ?? 0.1\n const angular = options?.angularDeflection ?? 0.5\n const raw = kernel.tessellateSolidGrouped(asNum(shape), deflection, angular)\n const m = JSON.parse(raw) as { positions: number[]; normals: number[]; indices: number[]; faceOffsets: number[] }\n // faceOffsets 形如 [start0, start1, ..., totalEnd]:以「索引数组单位」计的每面偏移(2026-09-19 实测),\n // 除以 3 换算为 faijs 契约的三角形单位 [triStart, triCount, faceHash]\n const fo = m.faceOffsets\n const faceCount = Math.max(0, fo.length - 1)\n const faceHashes: number[] = []\n try {\n const faces = arr(kernel.getSolidFaces(asNum(shape)))\n for (let i = 0; i < faceCount && i < faces.length; i++) faceHashes.push(faceFingerprint(kernel, faces[i], 1e9))\n } catch { /* 非实体:faceHash 置 0 */ }\n const faceGroups = new Int32Array(faceCount * 3)\n for (let i = 0; i < faceCount; i++) {\n faceGroups[i * 3] = fo[i] / 3\n faceGroups[i * 3 + 1] = (fo[i + 1] - fo[i]) / 3\n faceGroups[i * 3 + 2] = faceHashes[i] ?? 0\n }\n return {\n positions: new Float32Array(m.positions),\n normals: new Float32Array(m.normals),\n indices: new Uint32Array(m.indices),\n vertexCount: m.positions.length / 3,\n triangleCount: m.indices.length / 3,\n faceGroups,\n faceCount,\n }\n },\n wireframe(shape: BrepHandle, deflection?: number): BrepEdgeData {\n const d = deflection ?? 0.1\n // JsEdgeLines:edgeCount/offsets/positions 均为属性(offsets/positions 为 TypedArray,2026-09-19 实测)\n const me = kernel.meshEdgesAll(asNum(shape), d, 0.5) as {\n edgeCount: number; offsets: ArrayLike<number>; positions: ArrayLike<number>\n }\n const edgeCount = Number(me.edgeCount)\n const offsets = arr(me.offsets)\n const positions = arr(me.positions)\n const edgeGroups = new Int32Array(edgeCount * 3)\n for (let i = 0; i < edgeCount; i++) {\n const start = offsets[i] ?? 0\n const count = (offsets[i + 1] ?? positions.length / 3) - start\n edgeGroups[i * 3] = start\n edgeGroups[i * 3 + 1] = count\n edgeGroups[i * 3 + 2] = i // 线框 hash 用序号(wireframe 不参与跨操作溯源)\n }\n return { points: new Float32Array(positions), edgeGroups, pointCount: positions.length, edgeCount }\n },\n\n // ── 拓扑查询 ──\n // 注意:拓扑 manifest(topologyExt.buildSelectorManifestCore)会在「面句柄」上调用\n // getSubShapes(face, 'edge'/'vertex'),而 brepkit 的 getSolidEdges/getSolidVertices\n // 只接受 solid 句柄;brepkit 提供 getFaceEdges(face)/getFaceVertices(face)。\n // brepkit 没有 shape-type 分类 API,且 getFaceEdges(solid) 不抛错(会返回某一面的边),\n // 不能用 try/catch 探测。改用「已知面集」:每次枚举面时把面句柄记入 knownFaces,\n // edge/vertex 查询时按句柄是否在 knownFaces 里分发到 face 级或 solid 级 API。\n getSubShapes(shape: BrepHandle, type: BrepSubShapeType): BrepHandle[] {\n const s = asNum(shape)\n let list: number[]\n if (type === 'face') {\n // 输入可能是 solid 或 shell\n try { list = arr(kernel.getSolidFaces(s)) }\n catch { list = arr(kernel.getShellFaces?.(s) ?? []) }\n for (const f of list) knownFaces.add(f)\n } else if (type === 'edge') {\n list = knownFaces.has(s)\n ? arr(kernel.getFaceEdges(s))\n : arr(kernel.getSolidEdges(s))\n } else if (type === 'vertex') {\n list = knownFaces.has(s)\n ? arr(kernel.getFaceVertices(s))\n : arr(kernel.getSolidVertices(s))\n } else if (type === 'shell') {\n list = arr(kernel.getSolidShells?.(s) ?? [])\n } else if (type === 'solid') {\n // 输入可能是 compound(多实体)或单个 solid。\n try { list = arr(kernel.getCompoundSolids(s)) }\n catch { list = [s] }\n } else {\n return unsupported(`getSubShapes(${type})`)\n }\n return list.map(asHandle)\n },\n queryBatch(shapes: BrepHandle[]): Array<{ area: number }> {\n return shapes.map(h => {\n try { return { area: Number(kernel.faceArea(asNum(h))) } } catch { return { area: 0 } }\n })\n },\n subShapeHashes(shape: BrepHandle, type: BrepSubShapeType, hashUpperBound: number): number[] {\n if (type !== 'face') return unsupported(`subShapeHashes(${type})`)\n const faces = arr(kernel.getSolidFaces(asNum(shape)))\n const hashes = faces.map(f => faceFingerprint(kernel, f, hashUpperBound))\n // 登记 hash↔handle(fuseWithHistory 溯源对齐依赖此表)\n const reg = hashRegistry.get(kernel) ?? new Map<number, number>()\n faces.forEach((f, i) => reg.set(hashes[i], f))\n hashRegistry.set(kernel, reg)\n return hashes\n },\n hashCode(shape: BrepHandle, upperBound: number): number {\n return faceFingerprint(kernel, asNum(shape), upperBound)\n },\n isSame(a: BrepHandle, b: BrepHandle): boolean { return asNum(a) === asNum(b) },\n isSolid(shape: BrepHandle): boolean {\n try { return arr(kernel.getSolidFaces(asNum(shape))).length > 0 } catch { return false }\n },\n shapeOrientation(shape: BrepHandle): string {\n try { return String(kernel.getShapeOrientation(asNum(shape))) } catch { return 'forward' }\n },\n\n // ── 几何求值 ──\n curveType(edge: BrepHandle): string { return String(kernel.getEdgeCurveType(asNum(edge))) },\n curvePointAtParam(edge: BrepHandle, param: number): BrepVec3 {\n // evaluateEdgeCurve 返回 Float64Array [x,y,z](非 JSON 字符串)\n return vec3Of(toNumArray(kernel.evaluateEdgeCurve(asNum(edge), param)))\n },\n curveTangent(edge: BrepHandle, param: number): BrepVec3 {\n // evaluateEdgeCurveD1 返回 Float64Array [px,py,pz, tx,ty,tz](点+切向量)\n const d = toNumArray(kernel.evaluateEdgeCurveD1(asNum(edge), param))\n return { x: d[3] ?? 0, y: d[4] ?? 0, z: d[5] ?? 0 }\n },\n curveParameters(edge: BrepHandle): BrepCurveParameters {\n // getEdgeCurveParameters 返回 Float64Array [first, last]\n const d = toNumArray(kernel.getEdgeCurveParameters(asNum(edge)))\n return { first: d[0] ?? 0, last: d[d.length - 1] ?? 1 }\n },\n curveIsClosed(edge: BrepHandle): boolean {\n // brepkit 无直接 edge-isClosed API;按曲线类型 + Nurbs 元数据判定:\n // CIRCLE/ELLIPSE 类曲线恒闭合;LINE 恒不闭合;\n // 其他曲线尝试 getNurbsCurveData().closed,拿不到时按不闭合处理(保守,不报错)。\n try {\n const t = String(kernel.getEdgeCurveType(asNum(edge))).toUpperCase()\n if (t === 'CIRCLE' || t === 'ELLIPSE') return true\n if (t === 'LINE') return false\n } catch { /* 类型查询失败走 Nurbs 元数据 */ }\n try {\n const raw = kernel.getNurbsCurveData(asNum(edge))\n if (typeof raw === 'string') {\n const p = JSON.parse(raw) as { closed?: boolean; periodic?: boolean }\n return !!p.closed || !!p.periodic\n }\n if (raw && typeof raw === 'object') {\n const o = raw as Record<string, unknown>\n return !!(o.closed || o.periodic)\n }\n } catch { /* 非 Nurbs 边 */ }\n return false\n },\n curveLength(edge: BrepHandle): number { return Number(kernel.edgeLength(asNum(edge))) },\n surfaceType(face: BrepHandle): string { return String(kernel.getSurfaceType(asNum(face))) },\n surfaceNormal(face: BrepHandle, u: number, v: number): BrepVec3 {\n // evaluateSurfaceNormal(face,u,v) 返回 Float64Array [nx,ny,nz];\n // 注意:getFaceNormal(face) 只接受 face 一个参数,不带 u/v,不能用于参数空间法向。\n return vec3Of(toNumArray(kernel.evaluateSurfaceNormal(asNum(face), u, v)))\n },\n pointOnSurface(face: BrepHandle, u: number, v: number): BrepVec3 {\n // evaluateSurface 返回 Float64Array [x,y,z]\n return vec3Of(toNumArray(kernel.evaluateSurface(asNum(face), u, v)))\n },\n uvBounds(face: BrepHandle): BrepUvBounds {\n // getSurfaceDomain 返回 Float64Array [uMin,uMax,vMin,vMax]\n const d = toNumArray(kernel.getSurfaceDomain(asNum(face)))\n return { uMin: d[0] ?? 0, uMax: d[1] ?? 1, vMin: d[2] ?? 0, vMax: d[3] ?? 1 }\n },\n getSurfaceCenterOfMass(face: BrepHandle): BrepVec3 {\n // brepkit 无 per-face 质心 API;用 UV 域中点在曲面上求值作为面中心近似\n // (与 OCCT 路径的「面中心用于命名/拾取锚点」语义一致,不追求精确质心)。\n const b = this.uvBounds(face)\n return this.pointOnSurface(face, (b.uMin + b.uMax) / 2, (b.vMin + b.vMax) / 2)\n },\n getFaceCylinderData(face: BrepHandle): { radius: number } | null {\n try {\n const p = JSON.parse(kernel.getAnalyticSurfaceParams(asNum(face))) as { type?: string; radius?: number }\n if (p?.type === 'cylinder' && typeof p.radius === 'number') return { radius: p.radius }\n } catch { /* 非解析面 */ }\n return null\n },\n getNurbsCurveData(edge: BrepHandle): { degree: number; periodic: boolean; rational: boolean } | null {\n try {\n const p = JSON.parse(kernel.getNurbsCurveData(asNum(edge))) as { degree?: number; periodic?: boolean; rational?: boolean }\n if (p && typeof p.degree === 'number') return { degree: p.degree, periodic: !!p.periodic, rational: !!p.rational }\n } catch { /* 非 Nurbs 边 */ }\n return null\n },\n\n // ── 测量 ──\n getBoundingBox(shape: BrepHandle, _useTriangulation?: boolean): BrepBoundingBox {\n const b = kernel.boundingBox(asNum(shape)) as ArrayLike<number>\n return { xmin: b[0], ymin: b[1], zmin: b[2], xmax: b[3], ymax: b[4], zmax: b[5] }\n },\n getVolume(shape: BrepHandle): number { return Number(kernel.volume(asNum(shape), 0.05)) },\n getCenterOfMass(shape: BrepHandle): BrepVec3 {\n // centerOfMass 返回 Float64Array [x,y,z](非 JSON 字符串)\n return vec3Of(toNumArray(kernel.centerOfMass(asNum(shape), 0.05)))\n },\n\n // ── 校验与修复 ──\n isValid(_shape: BrepHandle): boolean { return unsupported('isValid') },\n unifySameDomain(shape: BrepHandle): BrepHandle { return shape /* brepkit 无对应 API;恒等返回(不丢句柄) */ },\n healSolid(shape: BrepHandle, _tolerance?: number): BrepHandle { return asHandle(kernel.healSolid(asNum(shape))) },\n fixShape(shape: BrepHandle): BrepHandle { return asHandle(kernel.healSolid(asNum(shape))) },\n fixFaceOrientations(shape: BrepHandle): BrepHandle { return asHandle(kernel.fixFaceOrientations(asNum(shape))) },\n removeDegenerateEdges(_shape: BrepHandle): BrepHandle { return unsupported('removeDegenerateEdges') },\n\n // ── IO ──\n importStep(data: string | ArrayBuffer): BrepHandle {\n const text = typeof data === 'string' ? data : new TextDecoder().decode(data)\n return asHandle(kernel.importStep(text))\n },\n exportStep(shape: BrepHandle): string {\n // brepkit exportStep 返回 UTF-8 字节(Uint8Array),需解码为 STEP 文本(2026-09-19 实测)\n const bytes = kernel.exportStep(asNum(shape))\n return typeof bytes === 'string' ? bytes : new TextDecoder().decode(bytes)\n },\n importStl(_data: string | ArrayBuffer): BrepHandle { return unsupported('importStl') },\n fromBREP(data: string): BrepHandle {\n const bytes = Uint8Array.from(atobPolyfill(data))\n return asHandle(kernel.deserializeSolid(bytes))\n },\n\n // ── 面演化(可选能力槽) ──\n cutWithHistory(a: BrepHandle, b: BrepHandle, inputFaceHashes: number[], hashUpperBound: number): BrepEvolutionData {\n const raw = kernel.cutWithEvolution(asNum(a), asNum(b))\n return mapEvolution(kernel, raw, JSON.parse(raw).solid, inputFaceHashes, hashUpperBound)\n },\n fuseWithHistory(a: BrepHandle, b: BrepHandle, inputFaceHashes: number[], hashUpperBound: number): BrepEvolutionData {\n const raw = kernel.fuseWithEvolution(asNum(a), asNum(b))\n return mapEvolution(kernel, raw, JSON.parse(raw).solid, inputFaceHashes, hashUpperBound)\n },\n intersectWithHistory(_a: BrepHandle, _b: BrepHandle, _inputFaceHashes: number[], _hashUpperBound: number): BrepEvolutionData {\n return unsupported('intersectWithHistory')\n },\n\n // ── XCAF 装配(v1 关闭) ──\n createXCAFDocument(): BrepXcafDocument { return unsupported('createXCAFDocument') },\n importXCAFFromSTEP(_stepData: string): BrepXcafDocument { return unsupported('importXCAFFromSTEP') },\n }\n return api\n}\n\n// ── 工具 ──\n\n/** 4×4 行主序平移矩阵(brepkit transformSolid 格式:平移在最后一列,index 3/7/11;2026-09-19 实测)。 */\nfunction translationMatrix(dx: number, dy: number, dz: number): number[] {\n return [\n 1, 0, 0, dx,\n 0, 1, 0, dy,\n 0, 0, 1, dz,\n 0, 0, 0, 1,\n ]\n}\n\n/** 4×4 行主序缩放矩阵(绕 center 缩放)。 */\nfunction scaleMatrix(center: BrepVec3, factor: number): number[] {\n return [\n factor, 0, 0, center.x * (1 - factor),\n 0, factor, 0, center.y * (1 - factor),\n 0, 0, factor, center.z * (1 - factor),\n 0, 0, 0, 1,\n ]\n}\n\n/** wasm 返回的点/向量形态归一(数组 [x,y,z] 或 {x,y,z})。 */\nfunction vec3Of(p: number[] | { x: number; y: number; z: number }): BrepVec3 {\n if (Array.isArray(p)) return { x: p[0], y: p[1], z: p[2] }\n return { x: Number(p.x), y: Number(p.y), z: Number(p.z) }\n}\n\n/** base64 解码(node 与浏览器通用,避免直接依赖 Buffer)。 */\nfunction atobPolyfill(s: string): string {\n if (typeof atob === 'function') return atob(s)\n\n return Buffer.from(s, 'base64').toString('binary')\n}\n\n/** 释放内核单例(测试收尾用;宿主常驻不需调用)。 */\nlet liveKernel: BrepKitKernel | null = null\n\n/** 释放内核单例(测试收尾用;宿主常驻不需调用)。 */\nexport function disposeBrepkit(): void {\n try {\n if (liveKernel?.free) liveKernel.free()\n } catch { /* 已释放 */ }\n liveKernel = null\n}\n\n/** brepkit 适配器原语集类型(BrepEngineApi + brepkit 专属诊断 getMeshFallbackCount)。 */\nexport type BrepkitPrimitives = Awaited<ReturnType<typeof createBrepkitPrimitives>>\n"]}
1
+ {"version":3,"file":"brepkitKernel.js","sourceRoot":"","sources":["../../src/brepkit-kernel/brepkitKernel.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * brepkit-kernel/brepkitKernel — brepkit 内核 → faijs BrepEngineApi 适配器(v1 白名单)\n *\n * 设计要点(对应 3d_editor 项目的 weapp-voice-ai-modeling 设计计划 §5):\n * - 句柄:brepkit u32 句柄与 faijs BrepHandle(number) 同构,直通零转换;\n * - 拓扑红线:meshShape 用 tessellateSolidGrouped 输出 faceGroups,与三角化几何同源;\n * - 面溯源:布尔/倒角走 *WithEvolution,映射为 BrepEvolutionData(hash 编码);\n * - 链纪律:kernel.meshFallbackCount 计数差 > 0 → getMeshFallbackCount 暴露给宿主,\n * 由宿主标记 BREP 链中断(不在此层静默处理);\n * - v1 白名单之外的方法:显式抛错(报错好于掩盖,禁止空实现假成功)。\n */\n\nimport { initBrepkitWasm, type BrepKitKernel } from './brepkitWasm'\nimport type { BrepEngineApi } from '../brep/engine/primitives'\nimport type {\n BrepBoundingBox,\n BrepCurveParameters,\n BrepEdgeData,\n BrepEvolutionData,\n BrepHandle,\n BrepMeshResult,\n BrepSubShapeType,\n BrepTessellateOptions,\n BrepUvBounds,\n BrepVec3,\n BrepXcafDocument,\n} from '../brep/engine/types'\n\n// ── 句柄桥接:brepkit number 句柄 ↔ BrepHandle(零运行时成本,与 occt 适配器同构) ──\nconst asHandle = (n: number): BrepHandle => n as BrepHandle\nconst asNum = (h: BrepHandle): number => h as unknown as number\nconst arr = (x: ArrayLike<number> | number[]): number[] => Array.from(x as ArrayLike<number>)\n\n/**\n * brepkit 几何查询返回值归一为 number[]。\n *\n * 关键事实(npm brepkit-wasm d.ts 与本地 web-target 胶水一致):\n * getSurfaceDomain / getFaceNormal / evaluateSurfaceNormal / evaluateSurface /\n * evaluateEdgeCurve / evaluateEdgeCurveD1 / getEdgeCurveParameters / centerOfMass\n * 返回 **Float64Array**(不是 JSON 字符串);\n * 仅 getAnalyticSurfaceParams / getNurbsCurveData / tessellateSolidGrouped /\n * *WithEvolution 返回 JSON 字符串。\n *\n * 历史 bug:曾误以为全部返回 JSON 字符串而统一 JSON.parse,导致\n * `String(Float64Array)` 变成逗号拼接数字串(如 \"-1000000,1000000,...\"),\n * JSON.parse 在第一个逗号处抛 \"Unexpected non-whitespace character after JSON\"。\n * 这里同时兼容:JSON 字符串 / TypedArray / 普通数组 / {x,y,z} / 数字键对象。\n */\nfunction toNumArray(v: unknown): number[] {\n if (typeof v === 'string') {\n const parsed: unknown = JSON.parse(v)\n if (Array.isArray(parsed)) return parsed.map(Number)\n if (parsed && typeof parsed === 'object') {\n const o = parsed as Record<string, unknown>\n if (typeof o.x === 'number') return [o.x, Number(o.y), Number(o.z)]\n if (o[0] !== undefined) {\n const out: number[] = []\n for (let i = 0; o[i] !== undefined; i++) out.push(Number(o[i]))\n return out\n }\n }\n return []\n }\n if (v && typeof v === 'object') {\n if (Array.isArray(v)) return v.map(Number)\n if ('length' in v) return Array.from(v as ArrayLike<number>, Number)\n const o = v as Record<string, unknown>\n if (typeof o.x === 'number') return [o.x, Number(o.y), Number(o.z)]\n if (o[0] !== undefined) {\n const out: number[] = []\n for (let i = 0; o[i] !== undefined; i++) out.push(Number(o[i]))\n return out\n }\n }\n return []\n}\n\n/** v1 白名单外的方法统一抛错(携带适配器上下文与 v1 范围说明)。 */\nfunction unsupported(name: string): never {\n throw new Error(`[brepkit-kernel] BrepEngineApi.${name} 不在 brepkit 适配器 v1 白名单内(能力表见设计文档 §5.2)。该操作请在 OCCT 链执行,或等待适配器扩展。`)\n}\n\n/** 面稳定指纹:解析曲面参数 + 面积 → FNV-1a → 取模上界(跨操作可追溯,与句柄无关)。 */\nfunction faceFingerprint(kernel: BrepKitKernel, face: number, upperBound: number): number {\n let params = ''\n try { params = String(kernel.getAnalyticSurfaceParams(face) ?? '') } catch { /* 非解析面 */ }\n let area = 0\n try { area = Number(kernel.faceArea?.(face, 0.1) ?? 0) } catch { /* 查询失败用 0 */ }\n const basis = `${params}|${area.toFixed(6)}`\n let h = 0x811c9dc5\n for (let i = 0; i < basis.length; i++) {\n h ^= basis.charCodeAt(i)\n h = Math.imul(h, 0x01000193) >>> 0\n }\n return upperBound > 0 ? h % upperBound : h\n}\n\n/** 面演化数据(BrepEvolutionData):brepkit evolution JSON → hash 编码三元组。 */\nfunction mapEvolution(\n kernel: BrepKitKernel,\n raw: string,\n resultHandle: number,\n inputFaceHashes: number[],\n hashUpperBound: number,\n): BrepEvolutionData {\n // raw: {solid, evolution:{modified:{oldHandle:[newHandles]}, generated:{oldHandle:[new]}, deleted:[oldHandles]}}\n const parsed = JSON.parse(raw) as {\n solid: number\n evolution: { modified: Record<string, number[]>; generated: Record<string, number[]>; deleted: number[] }\n }\n const evo = parsed.evolution ?? { modified: {}, generated: {}, deleted: [] }\n const modifiedKeys = new Set(Object.keys(evo.modified ?? {}).map(Number))\n const deletedKeys = new Set((evo.deleted ?? []).map(Number))\n // 输入面 hash → 是否被改/删:通过该输入面在输入 hash 快照中的位置无法直接回溯句柄,\n // 诚实映射:modified/deleted 用\"发生变化的输入句柄数 == 输入面数\"的对齐近似——\n // v1 精确溯源依赖 per-shape hash 注册表(subShapeHashes 时登记 hash↔handle)。\n const registry = hashRegistry.get(kernel)\n const modified: number[] = []\n const deleted: number[] = []\n if (registry) {\n for (const [hash, handle] of registry) {\n if (modifiedKeys.has(handle)) modified.push(hash)\n if (deletedKeys.has(handle)) deleted.push(hash)\n }\n }\n // generated:结果实体的新面 hash(数量按 generated 表展开)\n const generated: number[] = []\n for (const news of Object.values(evo.generated ?? {})) {\n for (const nh of news) generated.push(faceFingerprint(kernel, nh, hashUpperBound))\n }\n // 更新注册表:结果实体 faces 的最新 hash 登记(供下一次演化对齐)\n try {\n const faces = arr(kernel.getSolidFaces(resultHandle))\n const reg = registry ?? new Map<number, number>()\n for (const f of faces) reg.set(faceFingerprint(kernel, f, hashUpperBound), f)\n hashRegistry.set(kernel, reg)\n } catch { /* 非实体结果跳过登记 */ }\n return { result: asHandle(resultHandle), modified, generated, deleted }\n}\n\n/** per-kernel 的 hash↔handle 登记表(fuseWithHistory 溯源对齐用)。 */\nconst hashRegistry = new WeakMap<BrepKitKernel, Map<number, number>>()\n\n/** brepkit 适配器返回类型:BrepEngineApi + brepkit 专属诊断。 */\ntype BrepkitEngineExtras = BrepEngineApi & { getMeshFallbackCount(): number }\n\n/**\n * 创建 brepkit BrepEngineApi 实现(v1 白名单)。\n * 与 occt 的 initOcctWasm 同位:返回满足引擎契约的原语集合。\n * @returns a promise resolving to the BrepEngineApi implementation plus brepkit-specific\n * diagnostics (`getMeshFallbackCount`).\n */\nexport async function createBrepkitPrimitives(): Promise<BrepkitEngineExtras> {\n const kernel = await initBrepkitWasm()\n liveKernel = kernel\n let lastFallbackCount = 0\n // 已知面句柄集合:getSubShapes(shape,'face') 返回的面在此登记;\n // getSubShapes(handle,'edge'/'vertex') 据此分发到 face 级或 solid 级 API。\n const knownFaces = new Set<number>()\n const readFallback = (): number => {\n try {\n return typeof kernel.meshFallbackCount === 'function' ? Number(kernel.meshFallbackCount()) : 0\n } catch { return 0 }\n }\n /** 布尔类操作后登记回退计数差(§5.4:宿主每步读取,>0 即链中断)。 */\n const trackFallback = <T>(r: T): T => { lastFallbackCount = readFallback(); return r }\n\n const api = {\n // ── 生命周期 ──\n release(_shape: BrepHandle): void { /* GC 型:brepkit 句柄由内核统一管理,无逐句柄 free API */ },\n /** 内核级诊断:距上次读取的 mesh 布尔回退计数差(>0 = BREP 链已中断)。 */\n getMeshFallbackCount(): number {\n const now = readFallback()\n const delta = now - lastFallbackCount\n lastFallbackCount = now\n return delta\n },\n\n // ── 实体图元 ──\n makeBox(dx: number, dy: number, dz: number): BrepHandle { return asHandle(kernel.makeBox(dx, dy, dz)) },\n makeBoxFromCorners(corner1: BrepVec3, corner2: BrepVec3): BrepHandle {\n const dx = Math.abs(corner2.x - corner1.x), dy = Math.abs(corner2.y - corner1.y), dz = Math.abs(corner2.z - corner1.z)\n const h = kernel.makeBox(dx, dy, dz)\n return asHandle(kernel.transformSolid(h, toKernelMatrix(translationMatrix(\n Math.min(corner1.x, corner2.x), Math.min(corner1.y, corner2.y), Math.min(corner1.z, corner2.z),\n ))))\n },\n makeCylinder(radius: number, height: number): BrepHandle { return asHandle(kernel.makeCylinder(radius, height)) },\n makeSphere(radius: number): BrepHandle { return asHandle(kernel.makeSphere(radius, 32)) },\n makeCone(r1: number, r2: number, height: number): BrepHandle { return asHandle(kernel.makeCone(r1, r2, height)) },\n makeRectangle(_width: number, _height: number): BrepHandle { return unsupported('makeRectangle') },\n\n // ── 造型运算 ──\n extrude(_shape: BrepHandle, _dx: number, _dy: number, _dz: number): BrepHandle { return unsupported('extrude') }, // ⚠️ wasm extrude(face, dir, distance) 语义不同 → 保持 unsupported\n loft(_wires: BrepHandle[], _isSolid: boolean, _ruled: boolean): BrepHandle { return unsupported('loft') },\n\n // ── 布尔与分割 ──\n fuse(a: BrepHandle, b: BrepHandle): BrepHandle { return asHandle(trackFallback(kernel.fuse(asNum(a), asNum(b)))) },\n cut(a: BrepHandle, b: BrepHandle): BrepHandle { return asHandle(trackFallback(kernel.cut(asNum(a), asNum(b)))) },\n common(a: BrepHandle, b: BrepHandle): BrepHandle { return asHandle(trackFallback(kernel.common(asNum(a), asNum(b)))) },\n intersect(a: BrepHandle, b: BrepHandle): BrepHandle { return asHandle(trackFallback(kernel.common(asNum(a), asNum(b)))) },\n section(_a: BrepHandle, _b: BrepHandle): BrepHandle { return unsupported('section') }, // ⚠️ wasm section(solid+平面) 语义不同 → 保持 unsupported\n fuseAll(shapes: BrepHandle[]): BrepHandle {\n return asHandle(trackFallback(kernel.fuseAll(Int32Array.from(shapes.map(asNum)))))\n },\n\n // ── 倒角与圆角 ──\n chamfer(solid: BrepHandle, edges: BrepHandle[], distance: number): BrepHandle {\n return asHandle(trackFallback(kernel.chamfer(asNum(solid), Int32Array.from(edges.map(asNum)), distance)))\n },\n chamferDistAngle(solid: BrepHandle, edges: BrepHandle[], distance: number, angleDeg: number): BrepHandle {\n return asHandle(trackFallback(kernel.chamferDistanceAngle(asNum(solid), Int32Array.from(edges.map(asNum)), distance, angleDeg)))\n },\n fillet(solid: BrepHandle, edges: BrepHandle[], radius: number): BrepHandle {\n return asHandle(trackFallback(kernel.fillet(asNum(solid), Int32Array.from(edges.map(asNum)), radius)))\n },\n filletVariable(solid: BrepHandle, edge: BrepHandle, startRadius: number, endRadius: number): BrepHandle {\n return asHandle(trackFallback(kernel.filletVariable(asNum(solid), asNum(edge), startRadius, endRadius)))\n },\n filletWithHistory(solid: BrepHandle, edges: BrepHandle[], radius: number, inputFaceHashes: number[], hashUpperBound: number): BrepEvolutionData {\n const raw = kernel.filletWithEvolution(asNum(solid), Int32Array.from(edges.map(asNum)), radius)\n return mapEvolution(kernel, raw, JSON.parse(raw).solid, inputFaceHashes, hashUpperBound)\n },\n chamferWithHistory(_solid: BrepHandle, _edges: BrepHandle[], _distance: number, _inputFaceHashes: number[], _hashUpperBound: number): BrepEvolutionData {\n // brepkit 无 chamferWithEvolution → 等距倒角演化不支持,诚实报错(能力表 evolution 仅覆盖 fuse/cut/fillet)\n return unsupported('chamferWithHistory')\n },\n\n // ── 变换 ──\n // ⚠️ brepkit 的 transformSolid 是「原地修改、返回 undefined」——必须先 copySolid\n // 复制出新句柄再变换,否则会篡改调用方手里的原实体(单测 2026-09-19 实证)。\n // ⚠️ 矩阵方言:faijs 接口口径是 3×4 行主序 12 元素(见 brep/engine/primitives.ts);\n // brepkit transformSolid 吃 4×4 行主序 16 元素。所有 transformSolid 调用一律经\n // toKernelMatrix 归一(下方唯一转换点),禁止直出 16 元素旁路。\n translate(shape: BrepHandle, dx: number, dy: number, dz: number): BrepHandle {\n const c = kernel.copySolid(asNum(shape))\n kernel.transformSolid(c, toKernelMatrix(translationMatrix(dx, dy, dz)))\n return asHandle(c)\n },\n scale(shape: BrepHandle, center: BrepVec3, factor: number): BrepHandle {\n const c = kernel.copySolid(asNum(shape))\n kernel.transformSolid(c, toKernelMatrix(scaleMatrix(center, factor)))\n return asHandle(c)\n },\n transform(shape: BrepHandle, matrix: number[]): BrepHandle {\n const c = kernel.copySolid(asNum(shape))\n kernel.transformSolid(c, toKernelMatrix(matrix))\n return asHandle(c)\n },\n located(shape: BrepHandle, matrix: number[]): BrepHandle {\n const c = kernel.copySolid(asNum(shape))\n kernel.transformSolid(c, toKernelMatrix(matrix))\n return asHandle(c)\n },\n generalTransform(shape: BrepHandle, matrix: number[]): BrepHandle {\n const c = kernel.copySolid(asNum(shape))\n kernel.transformSolid(c, toKernelMatrix(matrix))\n return asHandle(c)\n },\n copy(shape: BrepHandle): BrepHandle { return asHandle(kernel.copySolid(asNum(shape))) },\n\n // ── 阵列(Phase 2:brepkit wasm 已导出 linearPattern/circularPattern/gridPattern) ──\n // brepkit wasm 的 pattern 内核函数都返回 compound(含全部副本,README「Returns a\n // compound handle containing all copies」实证)→ 经 getCompoundSolids 拆成数组。\n linearPattern(shape: BrepHandle, direction: BrepVec3, spacing: number, count: number): BrepHandle[] {\n const compound = kernel.linearPattern(asNum(shape), direction.x, direction.y, direction.z, spacing, count)\n return arr(kernel.getCompoundSolids(compound)).map(asHandle)\n },\n circularPattern(shape: BrepHandle, center: BrepVec3, axis: BrepVec3, angleStep: number, count: number): BrepHandle[] {\n // ⚠️ brepkit wasm circularPattern(solid, ax, ay, az, count) 无 center/angle 参数:\n // 固定整圆均分(每份 360°/count)。fullAngle=360 时与 vendored/occt 语义一致;\n // 其它角度跨度无法表达(语义限制记录于此,parity 测试用整圆)。\n const compound = kernel.circularPattern(asNum(shape), axis.x, axis.y, axis.z, count)\n return arr(kernel.getCompoundSolids(compound)).map(asHandle)\n },\n gridPattern(shape: BrepHandle, directionX: BrepVec3, directionY: BrepVec3, spacingX: number, spacingY: number, countX: number, countY: number): BrepHandle {\n return asHandle(kernel.gridPattern(\n asNum(shape),\n directionX.x, directionX.y, directionX.z,\n directionY.x, directionY.y, directionY.z,\n spacingX, spacingY, countX, countY,\n ))\n },\n\n // ── 曲线构造 ──\n makeLineEdge(start: BrepVec3, end: BrepVec3): BrepHandle {\n return asHandle(kernel.makeLineEdge(start.x, start.y, start.z, end.x, end.y, end.z))\n },\n makeArcEdge(_start: BrepVec3, _mid: BrepVec3, _end: BrepVec3): BrepHandle { return unsupported('makeArcEdge') },\n makeBezierEdge(_controlPoints: BrepVec3[]): BrepHandle { return unsupported('makeBezierEdge') },\n\n // ── 拓扑构造 ──\n makeWire(edges: BrepHandle[]): BrepHandle {\n return asHandle(kernel.makeWire(Int32Array.from(edges.map(asNum)), false))\n },\n makeFace(wire: BrepHandle): BrepHandle { return asHandle(kernel.makeFaceFromWire(asNum(wire))) },\n makeCompound(shapes: BrepHandle[]): BrepHandle {\n return asHandle(kernel.makeCompound(Int32Array.from(shapes.map(asNum))))\n },\n sewAndSolidify(faces: BrepHandle[], tolerance?: number): BrepHandle {\n return asHandle(kernel.sewFaces(Int32Array.from(faces.map(asNum)), tolerance ?? 1e-6))\n },\n buildTriFace(_a: BrepVec3, _b: BrepVec3, _c: BrepVec3): BrepHandle { return unsupported('buildTriFace') },\n addHolesInFace(face: BrepHandle, holeWires: BrepHandle[]): BrepHandle {\n return asHandle(kernel.addHolesToFace(asNum(face), Int32Array.from(holeWires.map(asNum))))\n },\n\n // ── 三角化(BREP→mesh 唯一出口) ──\n meshShape(shape: BrepHandle, options?: BrepTessellateOptions): BrepMeshResult {\n const deflection = options?.linearDeflection ?? 0.1\n const angular = options?.angularDeflection ?? 0.5\n const raw = kernel.tessellateSolidGrouped(asNum(shape), deflection, angular)\n const m = JSON.parse(raw) as { positions: number[]; normals: number[]; indices: number[]; faceOffsets: number[] }\n // faceOffsets 形如 [start0, start1, ..., totalEnd]:以「索引数组单位」计的每面偏移(2026-09-19 实测),\n // 除以 3 换算为 faijs 契约的三角形单位 [triStart, triCount, faceHash]\n const fo = m.faceOffsets\n const faceCount = Math.max(0, fo.length - 1)\n const faceHashes: number[] = []\n try {\n const faces = arr(kernel.getSolidFaces(asNum(shape)))\n for (let i = 0; i < faceCount && i < faces.length; i++) faceHashes.push(faceFingerprint(kernel, faces[i], 1e9))\n } catch { /* 非实体:faceHash 置 0 */ }\n const faceGroups = new Int32Array(faceCount * 3)\n for (let i = 0; i < faceCount; i++) {\n faceGroups[i * 3] = fo[i] / 3\n faceGroups[i * 3 + 1] = (fo[i + 1] - fo[i]) / 3\n faceGroups[i * 3 + 2] = faceHashes[i] ?? 0\n }\n return {\n positions: new Float32Array(m.positions),\n normals: new Float32Array(m.normals),\n indices: new Uint32Array(m.indices),\n vertexCount: m.positions.length / 3,\n triangleCount: m.indices.length / 3,\n faceGroups,\n faceCount,\n }\n },\n wireframe(shape: BrepHandle, deflection?: number): BrepEdgeData {\n const d = deflection ?? 0.1\n // JsEdgeLines:edgeCount/offsets/positions 均为属性(offsets/positions 为 TypedArray,2026-09-19 实测)\n const me = kernel.meshEdgesAll(asNum(shape), d, 0.5) as {\n edgeCount: number; offsets: ArrayLike<number>; positions: ArrayLike<number>\n }\n const edgeCount = Number(me.edgeCount)\n const offsets = arr(me.offsets)\n const positions = arr(me.positions)\n const edgeGroups = new Int32Array(edgeCount * 3)\n for (let i = 0; i < edgeCount; i++) {\n const start = offsets[i] ?? 0\n const count = (offsets[i + 1] ?? positions.length / 3) - start\n edgeGroups[i * 3] = start\n edgeGroups[i * 3 + 1] = count\n edgeGroups[i * 3 + 2] = i // 线框 hash 用序号(wireframe 不参与跨操作溯源)\n }\n return { points: new Float32Array(positions), edgeGroups, pointCount: positions.length, edgeCount }\n },\n\n // ── 拓扑查询 ──\n // 注意:拓扑 manifest(topologyExt.buildSelectorManifestCore)会在「面句柄」上调用\n // getSubShapes(face, 'edge'/'vertex'),而 brepkit 的 getSolidEdges/getSolidVertices\n // 只接受 solid 句柄;brepkit 提供 getFaceEdges(face)/getFaceVertices(face)。\n // brepkit 没有 shape-type 分类 API,且 getFaceEdges(solid) 不抛错(会返回某一面的边),\n // 不能用 try/catch 探测。改用「已知面集」:每次枚举面时把面句柄记入 knownFaces,\n // edge/vertex 查询时按句柄是否在 knownFaces 里分发到 face 级或 solid 级 API。\n getSubShapes(shape: BrepHandle, type: BrepSubShapeType): BrepHandle[] {\n const s = asNum(shape)\n let list: number[]\n if (type === 'face') {\n // 输入可能是 solid 或 shell\n try { list = arr(kernel.getSolidFaces(s)) }\n catch { list = arr(kernel.getShellFaces?.(s) ?? []) }\n for (const f of list) knownFaces.add(f)\n } else if (type === 'edge') {\n list = knownFaces.has(s)\n ? arr(kernel.getFaceEdges(s))\n : arr(kernel.getSolidEdges(s))\n } else if (type === 'vertex') {\n list = knownFaces.has(s)\n ? arr(kernel.getFaceVertices(s))\n : arr(kernel.getSolidVertices(s))\n } else if (type === 'shell') {\n list = arr(kernel.getSolidShells?.(s) ?? [])\n } else if (type === 'solid') {\n // 输入可能是 compound(多实体)或单个 solid。\n try { list = arr(kernel.getCompoundSolids(s)) }\n catch { list = [s] }\n } else {\n return unsupported(`getSubShapes(${type})`)\n }\n return list.map(asHandle)\n },\n queryBatch(shapes: BrepHandle[]): Array<{ area: number }> {\n return shapes.map(h => {\n try { return { area: Number(kernel.faceArea(asNum(h))) } } catch { return { area: 0 } }\n })\n },\n subShapeHashes(shape: BrepHandle, type: BrepSubShapeType, hashUpperBound: number): number[] {\n if (type !== 'face') return unsupported(`subShapeHashes(${type})`)\n const faces = arr(kernel.getSolidFaces(asNum(shape)))\n const hashes = faces.map(f => faceFingerprint(kernel, f, hashUpperBound))\n // 登记 hash↔handle(fuseWithHistory 溯源对齐依赖此表)\n const reg = hashRegistry.get(kernel) ?? new Map<number, number>()\n faces.forEach((f, i) => reg.set(hashes[i], f))\n hashRegistry.set(kernel, reg)\n return hashes\n },\n hashCode(shape: BrepHandle, upperBound: number): number {\n return faceFingerprint(kernel, asNum(shape), upperBound)\n },\n isSame(a: BrepHandle, b: BrepHandle): boolean { return asNum(a) === asNum(b) },\n isSolid(shape: BrepHandle): boolean {\n try { return arr(kernel.getSolidFaces(asNum(shape))).length > 0 } catch { return false }\n },\n shapeOrientation(shape: BrepHandle): string {\n try { return String(kernel.getShapeOrientation(asNum(shape))) } catch { return 'forward' }\n },\n\n // ── 几何求值 ──\n curveType(edge: BrepHandle): string { return String(kernel.getEdgeCurveType(asNum(edge))) },\n curvePointAtParam(edge: BrepHandle, param: number): BrepVec3 {\n // evaluateEdgeCurve 返回 Float64Array [x,y,z](非 JSON 字符串)\n return vec3Of(toNumArray(kernel.evaluateEdgeCurve(asNum(edge), param)))\n },\n curveTangent(edge: BrepHandle, param: number): BrepVec3 {\n // evaluateEdgeCurveD1 返回 Float64Array [px,py,pz, tx,ty,tz](点+切向量)\n const d = toNumArray(kernel.evaluateEdgeCurveD1(asNum(edge), param))\n return { x: d[3] ?? 0, y: d[4] ?? 0, z: d[5] ?? 0 }\n },\n curveParameters(edge: BrepHandle): BrepCurveParameters {\n // getEdgeCurveParameters 返回 Float64Array [first, last]\n const d = toNumArray(kernel.getEdgeCurveParameters(asNum(edge)))\n return { first: d[0] ?? 0, last: d[d.length - 1] ?? 1 }\n },\n curveIsClosed(edge: BrepHandle): boolean {\n // brepkit 无直接 edge-isClosed API;按曲线类型 + Nurbs 元数据判定:\n // CIRCLE/ELLIPSE 类曲线恒闭合;LINE 恒不闭合;\n // 其他曲线尝试 getNurbsCurveData().closed,拿不到时按不闭合处理(保守,不报错)。\n try {\n const t = String(kernel.getEdgeCurveType(asNum(edge))).toUpperCase()\n if (t === 'CIRCLE' || t === 'ELLIPSE') return true\n if (t === 'LINE') return false\n } catch { /* 类型查询失败走 Nurbs 元数据 */ }\n try {\n const raw = kernel.getNurbsCurveData(asNum(edge))\n if (typeof raw === 'string') {\n const p = JSON.parse(raw) as { closed?: boolean; periodic?: boolean }\n return !!p.closed || !!p.periodic\n }\n if (raw && typeof raw === 'object') {\n const o = raw as Record<string, unknown>\n return !!(o.closed || o.periodic)\n }\n } catch { /* 非 Nurbs 边 */ }\n return false\n },\n curveLength(edge: BrepHandle): number { return Number(kernel.edgeLength(asNum(edge))) },\n surfaceType(face: BrepHandle): string { return String(kernel.getSurfaceType(asNum(face))) },\n surfaceNormal(face: BrepHandle, u: number, v: number): BrepVec3 {\n // evaluateSurfaceNormal(face,u,v) 返回 Float64Array [nx,ny,nz];\n // 注意:getFaceNormal(face) 只接受 face 一个参数,不带 u/v,不能用于参数空间法向。\n return vec3Of(toNumArray(kernel.evaluateSurfaceNormal(asNum(face), u, v)))\n },\n pointOnSurface(face: BrepHandle, u: number, v: number): BrepVec3 {\n // evaluateSurface 返回 Float64Array [x,y,z]\n return vec3Of(toNumArray(kernel.evaluateSurface(asNum(face), u, v)))\n },\n uvBounds(face: BrepHandle): BrepUvBounds {\n // getSurfaceDomain 返回 Float64Array [uMin,uMax,vMin,vMax]\n const d = toNumArray(kernel.getSurfaceDomain(asNum(face)))\n return { uMin: d[0] ?? 0, uMax: d[1] ?? 1, vMin: d[2] ?? 0, vMax: d[3] ?? 1 }\n },\n getSurfaceCenterOfMass(face: BrepHandle): BrepVec3 {\n // brepkit 无 per-face 质心 API;用 UV 域中点在曲面上求值作为面中心近似\n // (与 OCCT 路径的「面中心用于命名/拾取锚点」语义一致,不追求精确质心)。\n const b = this.uvBounds(face)\n return this.pointOnSurface(face, (b.uMin + b.uMax) / 2, (b.vMin + b.vMax) / 2)\n },\n getFaceCylinderData(face: BrepHandle): { radius: number } | null {\n try {\n const p = JSON.parse(kernel.getAnalyticSurfaceParams(asNum(face))) as { type?: string; radius?: number }\n if (p?.type === 'cylinder' && typeof p.radius === 'number') return { radius: p.radius }\n } catch { /* 非解析面 */ }\n return null\n },\n getNurbsCurveData(edge: BrepHandle): { degree: number; periodic: boolean; rational: boolean } | null {\n try {\n const p = JSON.parse(kernel.getNurbsCurveData(asNum(edge))) as { degree?: number; periodic?: boolean; rational?: boolean }\n if (p && typeof p.degree === 'number') return { degree: p.degree, periodic: !!p.periodic, rational: !!p.rational }\n } catch { /* 非 Nurbs 边 */ }\n return null\n },\n\n // ── 测量 ──\n getBoundingBox(shape: BrepHandle, _useTriangulation?: boolean): BrepBoundingBox {\n const b = kernel.boundingBox(asNum(shape)) as ArrayLike<number>\n return { xmin: b[0], ymin: b[1], zmin: b[2], xmax: b[3], ymax: b[4], zmax: b[5] }\n },\n getVolume(shape: BrepHandle): number { return Number(kernel.volume(asNum(shape), 0.05)) },\n getCenterOfMass(shape: BrepHandle): BrepVec3 {\n // centerOfMass 返回 Float64Array [x,y,z](非 JSON 字符串)\n return vec3Of(toNumArray(kernel.centerOfMass(asNum(shape), 0.05)))\n },\n\n // ── 校验与修复 ──\n isValid(_shape: BrepHandle): boolean { return unsupported('isValid') },\n unifySameDomain(shape: BrepHandle): BrepHandle { return shape /* brepkit 无对应 API;恒等返回(不丢句柄) */ },\n healSolid(shape: BrepHandle, _tolerance?: number): BrepHandle { return asHandle(kernel.healSolid(asNum(shape))) },\n fixShape(shape: BrepHandle): BrepHandle { return asHandle(kernel.healSolid(asNum(shape))) },\n fixFaceOrientations(shape: BrepHandle): BrepHandle { return asHandle(kernel.fixFaceOrientations(asNum(shape))) },\n removeDegenerateEdges(_shape: BrepHandle): BrepHandle { return unsupported('removeDegenerateEdges') },\n\n // ── IO ──\n importStep(data: string | ArrayBuffer): BrepHandle {\n const text = typeof data === 'string' ? data : new TextDecoder().decode(data)\n return asHandle(kernel.importStep(text))\n },\n exportStep(shape: BrepHandle): string {\n // brepkit exportStep 返回 UTF-8 字节(Uint8Array),需解码为 STEP 文本(2026-09-19 实测)\n const bytes = kernel.exportStep(asNum(shape))\n return typeof bytes === 'string' ? bytes : new TextDecoder().decode(bytes)\n },\n importStl(_data: string | ArrayBuffer): BrepHandle { return unsupported('importStl') },\n fromBREP(data: string): BrepHandle {\n const bytes = Uint8Array.from(atobPolyfill(data))\n return asHandle(kernel.deserializeSolid(bytes))\n },\n\n // ── 面演化(可选能力槽) ──\n cutWithHistory(a: BrepHandle, b: BrepHandle, inputFaceHashes: number[], hashUpperBound: number): BrepEvolutionData {\n const raw = kernel.cutWithEvolution(asNum(a), asNum(b))\n return mapEvolution(kernel, raw, JSON.parse(raw).solid, inputFaceHashes, hashUpperBound)\n },\n fuseWithHistory(a: BrepHandle, b: BrepHandle, inputFaceHashes: number[], hashUpperBound: number): BrepEvolutionData {\n const raw = kernel.fuseWithEvolution(asNum(a), asNum(b))\n return mapEvolution(kernel, raw, JSON.parse(raw).solid, inputFaceHashes, hashUpperBound)\n },\n intersectWithHistory(_a: BrepHandle, _b: BrepHandle, _inputFaceHashes: number[], _hashUpperBound: number): BrepEvolutionData {\n return unsupported('intersectWithHistory')\n },\n // Phase 0.1 补齐的 7 个:brepkit 适配器 v1 未实现 —— 如实抛错,不伪造。\n // ⚠️ 这些桩**不能**被当作\"已实现\"来探测:`typeof api.xWithHistory === 'function'`\n // 恒为真。Phase 0.2 起适配器的 `evolution` 是逐核函数**名单**\n // (`adapters/brepkit.ts` = ['fuse','cut','fillet']),名单才是唯一真相来源;\n // 声明多写一项 = 让该 op 静默通过静态判定后死在这些桩上(红线违规)。\n translateWithHistory(_shape: BrepHandle, _dx: number, _dy: number, _dz: number, _inputFaceHashes: number[], _hashUpperBound: number): BrepEvolutionData {\n return unsupported('translateWithHistory')\n },\n rotateWithHistory(_shape: BrepHandle, _axis: { point: BrepVec3; direction: BrepVec3 }, _angleRad: number, _inputFaceHashes: number[], _hashUpperBound: number): BrepEvolutionData {\n return unsupported('rotateWithHistory')\n },\n mirrorWithHistory(_shape: BrepHandle, _point: BrepVec3, _normal: BrepVec3, _inputFaceHashes: number[], _hashUpperBound: number): BrepEvolutionData {\n return unsupported('mirrorWithHistory')\n },\n scaleWithHistory(_shape: BrepHandle, _center: BrepVec3, _factor: number, _inputFaceHashes: number[], _hashUpperBound: number): BrepEvolutionData {\n return unsupported('scaleWithHistory')\n },\n shellWithHistory(_solid: BrepHandle, _faces: BrepHandle[], _thickness: number, _tolerance: number, _inputFaceHashes: number[], _hashUpperBound: number): BrepEvolutionData {\n return unsupported('shellWithHistory')\n },\n offsetWithHistory(_solid: BrepHandle, _distance: number, _tolerance: number, _inputFaceHashes: number[], _hashUpperBound: number): BrepEvolutionData {\n return unsupported('offsetWithHistory')\n },\n thickenWithHistory(_shape: BrepHandle, _thickness: number, _tolerance: number, _inputFaceHashes: number[], _hashUpperBound: number): BrepEvolutionData {\n return unsupported('thickenWithHistory')\n },\n\n // ── XCAF 装配(v1 关闭) ──\n createXCAFDocument(): BrepXcafDocument { return unsupported('createXCAFDocument') },\n importXCAFFromSTEP(_stepData: string): BrepXcafDocument { return unsupported('importXCAFFromSTEP') },\n\n // ── Phase 3 登记方法(capability-map 64 方法收口):真实现 3 个(wasm 有对应导出,\n // 命名映射),其余如实 unsupported——能力表不声明,静态判定拦截 ──\n boundingBox(shape: BrepHandle): BrepBoundingBox { return kernel.getBoundingBox(asNum(shape)) },\n surfaceCenterOfMass(face: BrepHandle): BrepVec3 { return kernel.getSurfaceCenterOfMass(asNum(face)) },\n dispose(_shape?: BrepHandle): void { /* GC 型引擎:无显式释放 */ },\n shapeType(_shape: BrepHandle): BrepSubShapeType { return unsupported('shapeType') },\n isNull(_shape: BrepHandle): boolean { return unsupported('isNull') },\n iterShapes(_shape: BrepHandle): BrepHandle[] { return unsupported('iterShapes') },\n locate(_shape: BrepHandle, _matrix: number[]): BrepHandle { return unsupported('locate') },\n copyShape(_shape: BrepHandle): BrepHandle { return unsupported('copyShape') },\n downcast(_shape: BrepHandle, _targetType: BrepSubShapeType): BrepHandle { return unsupported('downcast') },\n composeTransform(_m1: number[], _m2: number[]): number[] { return unsupported('composeTransform') },\n buildExtrusionLaw(_profile: string, _length: number, _endFactor: number): BrepHandle { return unsupported('buildExtrusionLaw') },\n buildEdgeOnSurface(_curve: BrepHandle, _surface: BrepHandle): BrepHandle { return unsupported('buildEdgeOnSurface') },\n healFace(_shape: BrepHandle, _tolerance?: number): BrepHandle { return unsupported('healFace') },\n healWire(_shape: BrepHandle, _tolerance?: number): BrepHandle { return unsupported('healWire') },\n fixSelfIntersection(_wire: BrepHandle): BrepHandle { return unsupported('fixSelfIntersection') },\n hullFromPoints(_points: BrepVec3[], _tolerance: number): BrepHandle { return unsupported('hullFromPoints') },\n loftAdvanced(_wires: BrepHandle[], _options?: { solid?: boolean; ruled?: boolean; tolerance?: number }): BrepHandle { return unsupported('loftAdvanced') },\n makeEllipsoid(rx: number, ry: number, rz: number): BrepHandle { return asHandle(kernel.makeEllipsoid(rx, ry, rz)) }, // Phase 3: wasm 同签名真实现(brepkit-wasm.d.ts:1354)\n makeFaceOnSurface(_face: BrepHandle, _wire: BrepHandle): BrepHandle { return unsupported('makeFaceOnSurface') },\n makeTorus(majorRadius: number, minorRadius: number): BrepHandle { return asHandle(kernel.makeTorus(majorRadius, minorRadius, 64)) }, // Phase 3: wasm 真实现(segments 固定 64,BrepEngineApi 不暴露)\n makeVertex(x: number, y: number, z: number): BrepHandle { return asHandle(kernel.makeVertex(x, y, z)) }, // Phase 3: wasm 同签名真实现\n makeWireFromMixed(_items: BrepHandle[]): BrepHandle { return unsupported('makeWireFromMixed') },\n mirror(shape: BrepHandle, point: BrepVec3, normal: BrepVec3): BrepHandle { return asHandle(kernel.mirror(asNum(shape), point.x, point.y, point.z, normal.x, normal.y, normal.z)) }, // Phase 3: wasm 真实现\n revolveVec(_shape: BrepHandle, _center: BrepVec3, _direction: BrepVec3, _angleDeg: number): BrepHandle { return unsupported('revolveVec') },\n sew(_shapes: BrepHandle[], _tolerance?: number): BrepHandle { return unsupported('sew') },\n shell(solid: BrepHandle, facesToRemove: BrepHandle[], thickness: number, _tolerance: number): BrepHandle { return asHandle(kernel.shell(asNum(solid), thickness, Uint32Array.from(facesToRemove.map(asNum)))) }, // Phase 3: wasm 真实现(tolerance 忽略)\n simplePipe(_profile: BrepHandle, _spine: BrepHandle): BrepHandle { return unsupported('simplePipe') },\n simplify(_shape: BrepHandle): BrepHandle { return unsupported('simplify') },\n split(_shape: BrepHandle, _tools: BrepHandle[]): BrepHandle { return unsupported('split') }, // ⚠️ wasm split 是平面分割(solid+平面参数),与 BrepEngineApi 工具实体分割语义不匹配 → 保持 unsupported\n sweepPipeShell(_profile: BrepHandle, _spine: BrepHandle, _freenet?: boolean, _smooth?: boolean): BrepHandle { return unsupported('sweepPipeShell') },\n generalTransformNonOrthogonal(_shape: BrepHandle, _matrix: number[]): BrepHandle { return unsupported('generalTransformNonOrthogonal') },\n generalTransformWithHistory(_shape: BrepHandle, _matrix: number[], _inputFaceHashes: number[], _hashUpperBound: number): BrepEvolutionData { return unsupported('generalTransformWithHistory') },\n applyComposedTransformWithHistory(_shape: BrepHandle, _matrix: number[], _inputFaceHashes: number[], _hashUpperBound: number): BrepEvolutionData { return unsupported('applyComposedTransformWithHistory') },\n }\n return api\n}\n\n// ── 工具 ──\n\n/** 3×4 行主序平移矩阵(faijs 接口方言:平移在 index 3/7/11,与 matrixToArray 同构)。 */\nfunction translationMatrix(dx: number, dy: number, dz: number): number[] {\n return [\n 1, 0, 0, dx,\n 0, 1, 0, dy,\n 0, 0, 1, dz,\n ]\n}\n\n/** 3×4 行主序缩放矩阵(绕 center 缩放;faijs 接口方言,12 元素)。 */\nfunction scaleMatrix(center: BrepVec3, factor: number): number[] {\n return [\n factor, 0, 0, center.x * (1 - factor),\n 0, factor, 0, center.y * (1 - factor),\n 0, 0, factor, center.z * (1 - factor),\n ]\n}\n\n/**\n * 唯一的矩阵方言转换点:faijs 3×4 行主序(12 元素,matrixToArray 口径)→\n * brepkit transformSolid 的 4×4 行主序(16 元素,补底行 0,0,0,1)。\n * translate/scale 内部矩阵与 transform/located/generalTransform 的宿主入参\n * 全部经此归一;非 12 元素直接抛错(方言不清 = 缺陷,静默通过即红线违规)。\n */\nfunction toKernelMatrix(matrix: number[]): number[] {\n if (matrix.length !== 12) {\n throw new Error(\n `[brepkit] matrix dialect violation: expected 12 elements (3x4 row-major, faijs interface contract), got ${matrix.length}`,\n )\n }\n return [\n matrix[0], matrix[1], matrix[2], matrix[3],\n matrix[4], matrix[5], matrix[6], matrix[7],\n matrix[8], matrix[9], matrix[10], matrix[11],\n 0, 0, 0, 1,\n ]\n}\n\n/** wasm 返回的点/向量形态归一(数组 [x,y,z] 或 {x,y,z})。 */\nfunction vec3Of(p: number[] | { x: number; y: number; z: number }): BrepVec3 {\n if (Array.isArray(p)) return { x: p[0], y: p[1], z: p[2] }\n return { x: Number(p.x), y: Number(p.y), z: Number(p.z) }\n}\n\n/** base64 解码(node 与浏览器通用,避免直接依赖 Buffer)。 */\nfunction atobPolyfill(s: string): string {\n if (typeof atob === 'function') return atob(s)\n\n return Buffer.from(s, 'base64').toString('binary')\n}\n\n/** 释放内核单例(测试收尾用;宿主常驻不需调用)。 */\nlet liveKernel: BrepKitKernel | null = null\n\n/** 释放内核单例(测试收尾用;宿主常驻不需调用)。 */\nexport function disposeBrepkit(): void {\n try {\n if (liveKernel?.free) liveKernel.free()\n } catch { /* 已释放 */ }\n liveKernel = null\n}\n\n/** brepkit 适配器原语集类型(BrepEngineApi + brepkit 专属诊断 getMeshFallbackCount)。 */\nexport type BrepkitPrimitives = Awaited<ReturnType<typeof createBrepkitPrimitives>>\n"]}
package/dist/browser.d.ts CHANGED
@@ -16,27 +16,7 @@
16
16
  * CadRuntime.execute / 高层 API(importStep/exportStep/ensureOcctKernel);
17
17
  * 主线程 CSG/SDF 预览走 previewMeshIntersect / runSdfMain。
18
18
  */
19
- export { configureBackends, getBackends, setCurrentStmt, getCurrentStmt, keep, keepHidden, getRuntimeState, nameOf, setName, setKeepSink, setPendingAssemblyTransforms, takePendingAssemblyTransforms, assertContractVersion, CONTRACT_VERSION, } from './runtime-state.js';
20
- export type { Backends, FaijsRuntimeState, ShapeSlot, KeepSink, RuntimeExecutionMode, AssemblyTransform, StdlibFn, StdlibNamespace, } from './runtime-state.js';
21
- export type { FileId, InnerId, ScopedId, StmtId, PartName, GroupName, RefId, ReferenceId, SelectorKey, OccurrenceId, ShapeId, FaceId, EdgeId, NodeId, StatementId, FaceSelector, } from './identity.js';
22
- export { asFileId, asInnerId, asScopedId, asStmtId, asPartName, asGroupName, asRefId, asReferenceId, asSelectorKey, asOccurrenceId, asShapeId, asFaceId, asEdgeId, asNodeId, toScopedId, splitScopedId, isScopedId, toInnerId, } from './identity.js';
23
- export type { Vec3, JsonValue, TerminalShape, ParamDef, } from './lang/types.js';
24
- export { derivePartName, getMaxModelNum, } from './lang/allocate-id.js';
25
- export type { DerivePartNameInput, DerivePartNameResult } from './lang/allocate-id.js';
26
- export { fmtNum, formatCodeLine } from './lang/codegen.js';
27
- export type { FormatCodeLineInput } from './lang/codegen.js';
28
- export { analyzeCode } from './lang/statement-summary.js';
29
- export type { StatementSummary } from './lang/statement-summary.js';
30
- export { codeToArgs } from './lang/code-to-args.js';
31
- export type { CodeToArgsResult } from './lang/code-to-args.js';
32
- export { extractMetadata } from './lang/metadata-extractor.js';
33
- export type { UiMetadata, ArgSource, ParamEntry, ImportEntry, FunctionEntry, BlockEntry, KeepEntry, ExtractMetadataOptions, } from './lang/metadata-extractor.js';
34
- export { validateExpression } from './lang/expr-validate.js';
35
- export type { ExprValidateInput, ExprValidateResult } from './lang/expr-validate.js';
36
- export { editArgSource } from './lang/source-edit.js';
37
- export type { EditSourceError } from './lang/source-edit.js';
38
- export type { HostArg, HostRef, HostVarRef, HostParamRef, HostCallRef, HostExprRef, HostRefKind, } from './lang/host-arg.js';
39
- export { isHostVarRef, isHostParamRef, isHostCallRef, isHostExprRef, isHostRef, hostArgToDisplay, hostArgToLiteral, HOST_REF_KINDS, } from './lang/host-arg.js';
19
+ export * from './env-agnostic.js';
40
20
  export { CadRuntime, createRuntime, AppendPrefixError } from './cad-runtime/createRuntimeWithCad.js';
41
21
  export { createPreviewExec } from './cad-runtime/preview-exec.js';
42
22
  export type { PreviewExec } from './cad-runtime/preview-exec.js';
@@ -89,9 +69,8 @@ export type { PrimitiveType, PrimitiveParamsRecord, PrimitiveArgsRecord, Primiti
89
69
  export { nextPrimitiveColor } from './primitives/types.js';
90
70
  export type { ScrewParams, ScrewSpec, ScrewSystem } from './primitives/screw/screw-db.js';
91
71
  export { getScrewSpec, getScrewSpecs, threadToPitchMm, SCREW_HEAD_DIMS } from './primitives/screw/screw-db.js';
92
- export type { CjkFontResult } from './primitives/text/cjk.js';
93
- export { loadSystemCjkFont, containsCjk, isCjkChar } from './primitives/text/cjk.js';
94
- export { getOpentypeFont } from './primitives/text-geometry.js';
72
+ export type { CjkFontResult } from './primitives/text/cjk-font.js';
73
+ export { loadSystemCjkFont, containsCjk, isCjkChar } from './primitives/text/cjk-font.js';
95
74
  export type { ExtrudeParts, ExtrudeOffsetMode } from './boolean/extrude-helpers.js';
96
75
  export type { JoineryMeshData } from './boolean/joinery-shapes.js';
97
76
  export type { ManifoldMeshData, BooleanOperation, DovetailGrooveParams, DowelSplitParams, StraightTenonSplitParams, } from './boolean/geo-convert.js';
@@ -108,13 +87,11 @@ export { geoToManifoldMesh, manifoldMeshToGeo } from './boolean/geo-convert.js';
108
87
  export { manifoldToMeshData, weldPositionsWorker, dovetailBooleanSplit, dowelOrTenonBooleanSplit, chainBoolean, meshToManifold } from './boolean/csg-core.js';
109
88
  export { previewMeshIntersect } from './boolean/manifold-preview.js';
110
89
  export type { ManifoldMeshData as PreviewManifoldMeshData } from './boolean/manifold-preview.js';
111
- export { svgToExtrudedGeometry, parseSvgShapes } from './primitives/svg-extrude.js';
112
- export type { SvgExtrudeOptions } from './primitives/svg-extrude.js';
113
- export { createTextGeometry, opentypePathToGeometry } from './primitives/text-geometry.js';
90
+ export { setEngraveDecorationProvider, getEngraveDecorationProvider } from './mesh/decoration-provider.js';
91
+ export type { EngraveDecorationProvider, EngraveDecorationParams } from './mesh/decoration-provider.js';
114
92
  export { runSdfInline } from './sdf/sdf-core.js';
115
93
  export { runSdf as runSdfMain } from './sdf/sdf-runner.js';
116
94
  export type { SdfMeshData as PreviewSdfMesh } from './sdf/sdf-runner.js';
117
- export { createMixedTextGeometry } from './primitives/text/cjk.js';
118
95
  export { applyKnurlDisplacement, KNURL_DEFAULTS } from './mesh/knurl/KnurlGenerator.js';
119
96
  export { subdivide } from './mesh/knurl/subdivision.js';
120
97
  export { loadKnurlingTexture } from './mesh/knurl/textureLoader.js';
@@ -131,4 +108,5 @@ export { exportStepFromSolid, exportStepFromSolids } from './brep/export/step.js
131
108
  export type { StepExportEntry } from './brep/export/step.js';
132
109
  export { reconstructSolidFromMesh, meshToAsciiStl, cadShapeIsValid, meshToStepBrep } from './occt-kernel/meshReconstruct.js';
133
110
  export * from './api/index.js';
111
+ export type { Vec3 } from './lang/types.js';
134
112
  //# sourceMappingURL=browser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EACL,iBAAiB,EAAE,WAAW,EAAE,cAAc,EAAE,cAAc,EAC9D,IAAI,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAC/D,4BAA4B,EAAE,6BAA6B,EAAE,qBAAqB,EAClF,gBAAgB,GACjB,MAAM,iBAAiB,CAAA;AACxB,YAAY,EACV,QAAQ,EAAE,iBAAiB,EAAE,SAAS,EAAE,QAAQ,EAAE,oBAAoB,EACtE,iBAAiB,EAAE,QAAQ,EAAE,eAAe,GAC7C,MAAM,iBAAiB,CAAA;AAMxB,YAAY,EACV,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EACtD,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,OAAO,EACtD,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,GAClD,MAAM,YAAY,CAAA;AACnB,OAAO,EACL,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAClE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,SAAS,EAChE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAC5B,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,GACjD,MAAM,YAAY,CAAA;AAMnB,YAAY,EACV,IAAI,EAAE,SAAS,EACf,aAAa,EAAE,QAAQ,GACxB,MAAM,cAAc,CAAA;AACrB,OAAO,EACL,cAAc,EAAE,cAAc,GAC/B,MAAM,oBAAoB,CAAA;AAC3B,YAAY,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AACnF,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACvD,YAAY,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,YAAY,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,YAAY,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAE3D,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAC3D,YAAY,EACV,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EACpF,sBAAsB,GACvB,MAAM,2BAA2B,CAAA;AAElC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,YAAY,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACjF,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,YAAY,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAEzD,YAAY,EACV,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,GAClF,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa,EAAE,SAAS,EACrE,gBAAgB,EAAE,gBAAgB,EAAE,cAAc,GACnD,MAAM,iBAAiB,CAAA;AAOxB,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAA;AACjG,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AAC9D,YAAY,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAC7D,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACnI,YAAY,EACV,SAAS,EACT,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,cAAc,EACpD,aAAa,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAClD,QAAQ,EAAE,WAAW,EAAE,WAAW,IAAI,cAAc,EACpD,oBAAoB,IAAI,wBAAwB,EAChD,gBAAgB,IAAI,oBAAoB,EACxC,wBAAwB,IAAI,4BAA4B,GACzD,MAAM,qBAAqB,CAAA;AAG5B,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAC/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAG5D,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,QAAQ,EAAE,iBAAiB,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AACzH,YAAY,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAGlE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AACnD,YAAY,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAA;AAG/D,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AAC3F,YAAY,EACV,gBAAgB,EAAE,cAAc,EAAE,6BAA6B,GAChE,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAA;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAA;AAC1E,YAAY,EAAE,0BAA0B,EAAE,MAAM,sCAAsC,CAAA;AACtF,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAA;AACxE,YAAY,EAAE,yBAAyB,EAAE,MAAM,qCAAqC,CAAA;AACpF,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAA;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAA;AAGpE,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,UAAU,EAAE,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,6BAA6B,EAAE,MAAM,4BAA4B,CAAA;AACpK,YAAY,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AAE3G,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,mBAAmB,EAAE,IAAI,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAG3H,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AACzF,OAAO,EACL,kBAAkB,EAAE,aAAa,EAAE,aAAa,EAAE,qBAAqB,EAAE,sBAAsB,GAChG,MAAM,wBAAwB,CAAA;AAC/B,YAAY,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAC5E,YAAY,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAC7D,YAAY,EACV,UAAU,EAAE,cAAc,EAAE,eAAe,EAAE,QAAQ,EAAE,gBAAgB,EACvE,iBAAiB,EAAE,gBAAgB,GACpC,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,sBAAsB,EAAE,KAAK,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAG1F,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAM1C,YAAY,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AAGzC,YAAY,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AAC5E,YAAY,EACV,eAAe,EAAE,cAAc,EAAE,gBAAgB,EAAE,eAAe,EAClE,OAAO,EAAE,OAAO,EAAE,SAAS,EAC3B,oBAAoB,EAAE,aAAa,GACpC,MAAM,kBAAkB,CAAA;AAGzB,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAA;AAG5E,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AAGjE,cAAc,mBAAmB,CAAA;AAKjC,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAA;AAClG,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AAC/D,YAAY,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAG/D,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AACrC,YAAY,EACV,WAAW,EAAE,cAAc,EAC3B,SAAS,EAAE,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,WAAW,EAChE,UAAU,EAAE,gBAAgB,EAAE,SAAS,EACvC,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,WAAW,EACtD,UAAU,EAAE,WAAW,GACxB,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAG1E,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AACrE,YAAY,EACV,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,mBAAmB,EACjD,cAAc,EAAE,gBAAgB,GACjC,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAG5E,YAAY,EACV,aAAa,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,aAAa,GACzE,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AACvD,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AACtF,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAA;AAC3G,YAAY,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAC1D,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACjF,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAG5D,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAChF,YAAY,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC/D,YAAY,EACV,gBAAgB,EAAE,gBAAgB,EAClC,oBAAoB,EAAE,gBAAgB,EAAE,wBAAwB,GACjE,MAAM,uBAAuB,CAAA;AAC9B,YAAY,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAC7D,YAAY,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAC9D,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAC3G,YAAY,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAO1F,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAA;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AACvD,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAC9E,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAC7E,OAAO,EACL,kBAAkB,EAAE,kBAAkB,EAAE,0BAA0B,GACnE,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAC5E,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAC1J,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAA;AACjE,YAAY,EAAE,gBAAgB,IAAI,uBAAuB,EAAE,MAAM,4BAA4B,CAAA;AAC7F,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAChF,YAAY,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AACjE,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAA;AACvF,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,kBAAkB,CAAA;AACvD,YAAY,EAAE,WAAW,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACrE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAA;AAG/D,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AACpF,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAChE,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AACxE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,oBAAoB,EAAE,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAC5G,OAAO,EAAE,iBAAiB,EAAE,KAAK,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAGxF,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AAC1H,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACpD,OAAO,EACL,eAAe,EAAE,oBAAoB,EAAE,mBAAmB,EAC1D,eAAe,EAAE,mBAAmB,GACrC,MAAM,8BAA8B,CAAA;AAGrC,OAAO,EACL,YAAY,EACZ,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,kBAAkB,EACxD,QAAQ,EAAE,OAAO,EAAE,UAAU,EAC7B,SAAS,EAAE,SAAS,EAAE,WAAW,EACjC,QAAQ,EAAE,aAAa,GACxB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAA;AAC1D,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AAC9E,YAAY,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,EAAE,wBAAwB,EAAE,cAAc,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AAGzH,cAAc,OAAO,CAAA"}
1
+ {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"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"}