@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,230 +0,0 @@
1
- /**
2
- * stdlib drill — 钻孔库函数
3
- *
4
- *
5
- * dispatchPath 静态判定 brep/mesh。
6
- * BREP 路径:OCCT cut(简单孔)或 threadBrep + cut(螺丝孔)。
7
- */
8
- import { cad } from '../mesh/index.js';
9
- import { drillBrep, solidToShape, matrixToArray, } from '../brep/brep-ops.js';
10
- import { threadBrep } from './brep-mirror/threadFns.js';
11
- import { getScrewSpec, threadToPitchMm } from '../primitives/screw/screw-db.js';
12
- import * as THREE from 'three';
13
- import { getBackends } from '../runtime-state.js';
14
- import { fromBrep, brepOf } from '../shape.js';
15
- import { defineOp } from '../sdk.js';
16
- import { assertPositiveNumber, assertNumber, assertVec3 } from './assert.js';
17
- import { resolveFaceGeometry } from './topo-resolve.js';
18
- // ── per-op 参数自校验(Phase 2.2;stdlib 被直接 import 时的防御层) ──
19
- /**
20
- * Validate drill parameters: `diameter` must be a positive number, `position`
21
- * (if provided) a vec3, and `depth` (if provided) a number (<= 0 means a through hole).
22
- * @param params - the raw drill operation parameters.
23
- */
24
- export function assertDrillParams(params) {
25
- assertPositiveNumber(params.diameter, 'drill.diameter');
26
- if (params.position !== undefined && params.position !== null) {
27
- assertVec3(params.position, 'drill.position');
28
- }
29
- if (params.depth !== undefined && params.depth !== null) {
30
- assertNumber(params.depth, 'drill.depth');
31
- }
32
- }
33
- /** 世界坐标 → 几何体局部坐标(含单位缩放)。 */
34
- function worldToLocalPosition(worldPos, partTransform) {
35
- const offset = partTransform?.position;
36
- if (!offset)
37
- return worldPos;
38
- const scale = partTransform?.scale;
39
- if (scale && (scale[0] !== 1 || scale[1] !== 1 || scale[2] !== 1)) {
40
- return [
41
- (worldPos[0] - offset[0]) / scale[0],
42
- (worldPos[1] - offset[1]) / scale[1],
43
- (worldPos[2] - offset[2]) / scale[2],
44
- ];
45
- }
46
- return [
47
- worldPos[0] - offset[0],
48
- worldPos[1] - offset[1],
49
- worldPos[2] - offset[2],
50
- ];
51
- }
52
- /** 解析 direction 枚举 → 钻孔方向向量。 */
53
- function resolveDirection(params, faceNormal) {
54
- const directionEnum = params.direction ?? 'normal';
55
- if (directionEnum === 'normal')
56
- return faceNormal;
57
- if (directionEnum === 'x')
58
- return [-1, 0, 0];
59
- if (directionEnum === 'y')
60
- return [0, -1, 0];
61
- if (directionEnum === 'z')
62
- return [0, 0, -1];
63
- return faceNormal;
64
- }
65
- /**
66
- * 面法向派生(§6.2):钻孔轴向是「点击点的真实面法向」——曲面(圆柱面等)上
67
- * 仅凭 FaceTopoRef 的单一 hint 法向无法还原点击点的径向方向(引擎无 点→曲面
68
- * 投影 API),故轴向优先使用宿主捕获的 `faceNormal` 快照(与 position 同为点击
69
- * 快照);`face: FaceTopoRef` 作为持久化身份引用(跨重放追踪),仅在无
70
- * `faceNormal` 的历史/手写脚本时才按其派生的法向兜底。
71
- *
72
- * @param input - the target geometry (used to resolve the face ref).
73
- * @param params - raw drill params.
74
- * @returns the face normal the drill axis uses.
75
- */
76
- function faceNormalFrom(input, params) {
77
- const faceNormal = params.faceNormal;
78
- if (faceNormal && Array.isArray(faceNormal)) {
79
- return faceNormal;
80
- }
81
- const face = params.face;
82
- if (face && typeof face === 'object' && face.kind === 'face') {
83
- const kernel = getBackends().kernel.brep;
84
- const geom = resolveFaceGeometry(kernel, input, face);
85
- return geom.normal;
86
- }
87
- return [0, 0, 1];
88
- }
89
- /** BREP 螺丝孔:底孔(圆柱 cut)+ 内螺纹(threadBrep + cut)。 */
90
- function screwHoleBrep(kernel, upstreamSolid, params, direction, faceNormal, localPosition) {
91
- const diameter = params.diameter;
92
- const depth = params.depth;
93
- // 1. 底孔(圆柱 cut)
94
- const result = drillBrep(kernel, upstreamSolid, {
95
- diameter,
96
- depth,
97
- position: localPosition,
98
- direction,
99
- faceNormal,
100
- holeType: 'simple',
101
- });
102
- // 2. 螺纹(内螺纹 ridge,inward=true)
103
- const screwSystem = params.screwSystem ?? 'metric';
104
- const screwSpecIdx = params.screwSpecIdx ?? 4; // M5 default(与 mesh 路径一致)
105
- const screwThread = params.screwThread ?? 'coarse';
106
- const spec = getScrewSpec(screwSystem, screwSpecIdx);
107
- const pitch = threadToPitchMm(screwSystem, spec, screwThread);
108
- if (pitch > 0) {
109
- const threadSolid = threadBrep(kernel, {
110
- radius: diameter / 2,
111
- pitch,
112
- height: depth > 0 ? depth : 20,
113
- inward: true,
114
- });
115
- const dir = new THREE.Vector3(...direction).normalize();
116
- const fn = new THREE.Vector3(...faceNormal);
117
- if (dir.dot(fn) > 0)
118
- dir.negate();
119
- const zAxis = new THREE.Vector3(0, 0, 1);
120
- const quat = new THREE.Quaternion().setFromUnitVectors(zAxis, dir);
121
- const rotMatrix = new THREE.Matrix4().makeRotationFromQuaternion(quat);
122
- const transMatrix = new THREE.Matrix4().makeTranslation(localPosition[0], localPosition[1], localPosition[2]);
123
- const fullMatrix = new THREE.Matrix4().multiplyMatrices(transMatrix, rotMatrix);
124
- const positionedThread = kernel.transform(threadSolid, matrixToArray(fullMatrix));
125
- kernel.release(threadSolid);
126
- const finalResult = kernel.cut(result, positionedThread);
127
- kernel.release(result);
128
- kernel.release(positionedThread);
129
- return finalResult;
130
- }
131
- return result;
132
- }
133
- /** BREP 路径:OCCT cut(简单孔)或 threadBrep + cut(螺丝孔)。 */
134
- function drillBrepPath(input, params) {
135
- const kernel = getBackends().kernel.brep;
136
- if (!kernel)
137
- throw new Error('[stdlib/drill] no OCCT kernel');
138
- const inputSolid = brepOf(input);
139
- if (!inputSolid)
140
- throw new Error('[stdlib/drill] input is not BREP');
141
- const faceNormal = faceNormalFrom(input, params);
142
- const direction = resolveDirection(params, faceNormal);
143
- const holeType = params.holeType;
144
- // 世界坐标 → 局部坐标(cad.load 返回的几何体在原始文件坐标系中)
145
- const partTransform = getBackends().config.partTransform;
146
- const localPosition = worldToLocalPosition(params.position, partTransform);
147
- let resultSolid;
148
- if (holeType === 'screw') {
149
- resultSolid = screwHoleBrep(kernel, inputSolid, params, direction, faceNormal, localPosition);
150
- }
151
- else {
152
- resultSolid = drillBrep(kernel, inputSolid, {
153
- diameter: params.diameter,
154
- depth: params.depth,
155
- position: localPosition,
156
- direction,
157
- faceNormal,
158
- holeType: 'simple',
159
- });
160
- }
161
- return fromBrep(solidToShape(kernel, resultSolid), { solid: resultSolid });
162
- }
163
- /** mesh 路径:manifold-3d mesh-CSG。 */
164
- async function drillMeshPath(input, params) {
165
- const faceNormal = faceNormalFrom(input, params);
166
- const direction = resolveDirection(params, faceNormal);
167
- const partTransform = getBackends().config.partTransform;
168
- const localPos = worldToLocalPosition(params.position, partTransform);
169
- const scale = partTransform?.scale;
170
- const unitScale = scale && (scale[0] !== 1 || scale[1] !== 1 || scale[2] !== 1)
171
- ? scale[0]
172
- : 1;
173
- return cad.fai_drill(input, {
174
- diameter: params.diameter / unitScale,
175
- depth: params.depth / unitScale,
176
- type: params.depth > 0 ? 'blind' : 'through',
177
- position: localPos,
178
- direction,
179
- faceNormal,
180
- tolerance: params.tolerance !== undefined ? params.tolerance / unitScale : undefined,
181
- holeType: params.holeType,
182
- screwSystem: params.screwSystem,
183
- screwSpecIdx: params.screwSpecIdx,
184
- screwThread: params.screwThread,
185
- screwHead: params.screwHead,
186
- });
187
- }
188
- /**
189
- * 在几何体上钻孔(CSG 减除)。depth=0 为通孔,>0 为盲孔。
190
- * @group 特征
191
- * @inputs 1
192
- * @async true
193
- * @qual ok
194
- * @name fai_drill
195
- * @deprecated `fai_` 前缀 op 是 ../3d_editor 项目特有的操作,不属于 faijs 平台面;将来会迁往该项目并从 faijs 删除。新代码请勿使用。
196
- * @note 键名以本表为准:`type: 'through'|'blind'` 与 `direction` 为向量的旧素材是无效写法——孔型由 `depth`(0=通孔)推导,`direction` 是 'normal'|'x'|'y'|'z' 枚举。
197
- * @returns Shape 钻孔后的几何。
198
- * @param input - 目标几何。type:Shape required:true
199
- * @param params.diameter - 孔径(mm)。type:number required:true
200
- * @param params.depth - 孔深(mm);0 = 通孔,> 0 = 盲孔。type:number 默认 0
201
- * @param params.holeType - 孔类型:simple 简单孔 / screw 螺丝孔。type:'simple' | 'screw' 默认 'simple'
202
- * @param params.direction - 钻孔轴向(normal 表示沿面法向)。type:'normal' | 'x' | 'y' | 'z' 默认 'normal'
203
- * @param params.position - 孔心位置。type:[x,y,z] 默认 原点
204
- * @param params.face - 面引用(§6.2 新形态:`FaceTopoRef`,执行期按输入 Shape 解析派生法向;优先于 `faceNormal`)。type:FaceTopoRef
205
- * @param params.faceNormal - 面法向(决定朝向;历史兜底,§6.2 起宿主不再写,改由 `face` 解析)。type:[x,y,z] 默认 [0,0,1]
206
- * @param params.tolerance - 公差(mm)。type:number 默认 0.3
207
- * @param params.screwSystem - 螺丝孔制式(holeType='screw' 时用)。type:'metric' | 'imperial' 默认 'metric'
208
- * @param params.screwSpecIdx - 螺丝规格索引(holeType='screw' 时用;4 → M5)。type:number 默认 4
209
- * @param params.screwThread - 螺丝螺纹类型。type:'coarse' | 'fine' | 'custom' 默认 'coarse'
210
- * @param params.screwHead - 螺丝头型。type:'hex' | 'chc' | 'none' 默认 'none'
211
- * @example
212
- * const p = await cad.fai_drill(part0, { diameter: 5 })
213
- * const p = await cad.fai_drill(part0, { diameter: 5, depth: 3 })
214
- * const p = await cad.fai_drill(part0, { diameter: 5.2, depth: 8, holeType: 'screw', screwSystem: 'metric', screwSpecIdx: 4, screwThread: 'coarse', screwHead: 'none' })
215
- */
216
- export const fai_drill = defineOp({
217
- mesh: async (input, params) => {
218
- if (!input)
219
- throw new Error('[stdlib/drill] no input geometry');
220
- assertDrillParams(params);
221
- return drillMeshPath(input, params);
222
- },
223
- brep: (input, params) => {
224
- if (!input)
225
- throw new Error('[stdlib/drill] no input geometry');
226
- assertDrillParams(params);
227
- return drillBrepPath(input, params);
228
- },
229
- });
230
- //# sourceMappingURL=fai_drill.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fai_drill.js","sourceRoot":"","sources":["../../src/api/fai_drill.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * stdlib drill — 钻孔库函数\n *\n *\n * dispatchPath 静态判定 brep/mesh。\n * BREP 路径:OCCT cut(简单孔)或 threadBrep + cut(螺丝孔)。\n */\n\nimport type { Shape, Vec3 } from '../mesh/types'\nimport { cad } from '../mesh'\nimport {\n drillBrep,\n solidToShape,\n matrixToArray,\n} from '../brep/brep-ops'\nimport { threadBrep } from './brep-mirror/threadFns'\nimport { getScrewSpec, threadToPitchMm } from '../primitives/screw/screw-db'\nimport * as THREE from 'three'\nimport { getBackends } from '../runtime-state'\nimport { fromBrep, brepOf } from '../shape'\nimport { defineOp } from '../sdk'\nimport type { BrepHandle } from '../brep/engine/types'\nimport type { BrepEngineApi } from '../brep/engine/primitives'\nimport { assertPositiveNumber, assertNumber, assertVec3 } from './assert'\nimport type { FaceTopoRef } from '../topology/naming'\nimport { resolveFaceGeometry } from './topo-resolve'\n\n// ── per-op 参数自校验(Phase 2.2;stdlib 被直接 import 时的防御层) ──\n\n/**\n * Validate drill parameters: `diameter` must be a positive number, `position`\n * (if provided) a vec3, and `depth` (if provided) a number (<= 0 means a through hole).\n * @param params - the raw drill operation parameters.\n */\nexport function assertDrillParams(params: Record<string, unknown>): void {\n assertPositiveNumber(params.diameter, 'drill.diameter')\n if (params.position !== undefined && params.position !== null) {\n assertVec3(params.position, 'drill.position')\n }\n if (params.depth !== undefined && params.depth !== null) {\n assertNumber(params.depth, 'drill.depth')\n }\n}\n\n/** 世界坐标 → 几何体局部坐标(含单位缩放)。 */\nfunction worldToLocalPosition(\n worldPos: [number, number, number],\n partTransform: { position: [number, number, number]; scale?: [number, number, number] } | undefined,\n): [number, number, number] {\n const offset = partTransform?.position\n if (!offset) return worldPos\n const scale = partTransform?.scale\n if (scale && (scale[0] !== 1 || scale[1] !== 1 || scale[2] !== 1)) {\n return [\n (worldPos[0] - offset[0]) / scale[0],\n (worldPos[1] - offset[1]) / scale[1],\n (worldPos[2] - offset[2]) / scale[2],\n ]\n }\n return [\n worldPos[0] - offset[0],\n worldPos[1] - offset[1],\n worldPos[2] - offset[2],\n ]\n}\n\n/** 解析 direction 枚举 → 钻孔方向向量。 */\nfunction resolveDirection(params: Record<string, unknown>, faceNormal: Vec3): Vec3 {\n const directionEnum = (params.direction as string | undefined) ?? 'normal'\n if (directionEnum === 'normal') return faceNormal\n if (directionEnum === 'x') return [-1, 0, 0]\n if (directionEnum === 'y') return [0, -1, 0]\n if (directionEnum === 'z') return [0, 0, -1]\n return faceNormal\n}\n\n/**\n * 面法向派生(§6.2):钻孔轴向是「点击点的真实面法向」——曲面(圆柱面等)上\n * 仅凭 FaceTopoRef 的单一 hint 法向无法还原点击点的径向方向(引擎无 点→曲面\n * 投影 API),故轴向优先使用宿主捕获的 `faceNormal` 快照(与 position 同为点击\n * 快照);`face: FaceTopoRef` 作为持久化身份引用(跨重放追踪),仅在无\n * `faceNormal` 的历史/手写脚本时才按其派生的法向兜底。\n *\n * @param input - the target geometry (used to resolve the face ref).\n * @param params - raw drill params.\n * @returns the face normal the drill axis uses.\n */\nfunction faceNormalFrom(input: Shape, params: Record<string, unknown>): Vec3 {\n const faceNormal = params.faceNormal as Vec3 | undefined\n if (faceNormal && Array.isArray(faceNormal)) {\n return faceNormal\n }\n const face = params.face as FaceTopoRef | undefined\n if (face && typeof face === 'object' && face.kind === 'face') {\n const kernel = getBackends().kernel.brep as BrepEngineApi | null\n const geom = resolveFaceGeometry(kernel, input, face)\n return geom.normal\n }\n return [0, 0, 1]\n}\n\n/** BREP 螺丝孔:底孔(圆柱 cut)+ 内螺纹(threadBrep + cut)。 */\nfunction screwHoleBrep(\n kernel: BrepEngineApi,\n upstreamSolid: BrepHandle,\n params: Record<string, unknown>,\n direction: Vec3,\n faceNormal: Vec3,\n localPosition: [number, number, number],\n): BrepHandle {\n const diameter = params.diameter as number\n const depth = params.depth as number\n // 1. 底孔(圆柱 cut)\n const result = drillBrep(kernel, upstreamSolid, {\n diameter,\n depth,\n position: localPosition,\n direction,\n faceNormal,\n holeType: 'simple',\n })\n\n // 2. 螺纹(内螺纹 ridge,inward=true)\n const screwSystem = (params.screwSystem as 'metric' | 'imperial') ?? 'metric'\n const screwSpecIdx = (params.screwSpecIdx as number) ?? 4 // M5 default(与 mesh 路径一致)\n const screwThread = (params.screwThread as 'coarse' | 'fine' | 'custom') ?? 'coarse'\n const spec = getScrewSpec(screwSystem, screwSpecIdx)\n const pitch = threadToPitchMm(screwSystem, spec, screwThread)\n\n if (pitch > 0) {\n const threadSolid = threadBrep(kernel, {\n radius: diameter / 2,\n pitch,\n height: depth > 0 ? depth : 20,\n inward: true,\n })\n const dir = new THREE.Vector3(...direction).normalize()\n const fn = new THREE.Vector3(...faceNormal)\n if (dir.dot(fn) > 0) dir.negate()\n\n const zAxis = new THREE.Vector3(0, 0, 1)\n const quat = new THREE.Quaternion().setFromUnitVectors(zAxis, dir)\n const rotMatrix = new THREE.Matrix4().makeRotationFromQuaternion(quat)\n const transMatrix = new THREE.Matrix4().makeTranslation(localPosition[0], localPosition[1], localPosition[2])\n const fullMatrix = new THREE.Matrix4().multiplyMatrices(transMatrix, rotMatrix)\n\n const positionedThread = kernel.transform(threadSolid, matrixToArray(fullMatrix))\n kernel.release(threadSolid)\n\n const finalResult = kernel.cut(result, positionedThread)\n kernel.release(result)\n kernel.release(positionedThread)\n return finalResult\n }\n\n return result\n}\n\n/** BREP 路径:OCCT cut(简单孔)或 threadBrep + cut(螺丝孔)。 */\nfunction drillBrepPath(input: Shape, params: Record<string, unknown>): Shape {\n const kernel = getBackends().kernel.brep as BrepEngineApi | null\n if (!kernel) throw new Error('[stdlib/drill] no OCCT kernel')\n const inputSolid = brepOf(input) as BrepHandle | undefined\n if (!inputSolid) throw new Error('[stdlib/drill] input is not BREP')\n\n const faceNormal = faceNormalFrom(input, params)\n const direction = resolveDirection(params, faceNormal)\n const holeType = params.holeType as 'simple' | 'screw' | undefined\n\n // 世界坐标 → 局部坐标(cad.load 返回的几何体在原始文件坐标系中)\n const partTransform = getBackends().config.partTransform\n const localPosition = worldToLocalPosition(params.position as [number, number, number], partTransform)\n\n let resultSolid: BrepHandle\n if (holeType === 'screw') {\n resultSolid = screwHoleBrep(kernel, inputSolid, params, direction, faceNormal, localPosition)\n } else {\n resultSolid = drillBrep(kernel, inputSolid, {\n diameter: params.diameter as number,\n depth: params.depth as number,\n position: localPosition,\n direction,\n faceNormal,\n holeType: 'simple',\n })\n }\n\n return fromBrep(solidToShape(kernel, resultSolid), { solid: resultSolid })\n}\n\n/** mesh 路径:manifold-3d mesh-CSG。 */\nasync function drillMeshPath(input: Shape, params: Record<string, unknown>): Promise<Shape> {\n const faceNormal = faceNormalFrom(input, params)\n const direction = resolveDirection(params, faceNormal)\n const partTransform = getBackends().config.partTransform\n const localPos = worldToLocalPosition(params.position as [number, number, number], partTransform)\n\n const scale = partTransform?.scale\n const unitScale = scale && (scale[0] !== 1 || scale[1] !== 1 || scale[2] !== 1)\n ? scale[0]\n : 1\n\n return cad.fai_drill(input, {\n diameter: (params.diameter as number) / unitScale,\n depth: (params.depth as number) / unitScale,\n type: (params.depth as number) > 0 ? 'blind' : 'through',\n position: localPos,\n direction,\n faceNormal,\n tolerance: (params.tolerance as number | undefined) !== undefined ? (params.tolerance as number) / unitScale : undefined,\n holeType: params.holeType as 'simple' | 'screw' | undefined,\n screwSystem: params.screwSystem as string | undefined,\n screwSpecIdx: params.screwSpecIdx as number | undefined,\n screwThread: params.screwThread as string | undefined,\n screwHead: params.screwHead as string | undefined,\n })\n}\n\n/**\n * 在几何体上钻孔(CSG 减除)。depth=0 为通孔,>0 为盲孔。\n * @group 特征\n * @inputs 1\n * @async true\n * @qual ok\n * @name fai_drill\n * @deprecated `fai_` 前缀 op 是 ../3d_editor 项目特有的操作,不属于 faijs 平台面;将来会迁往该项目并从 faijs 删除。新代码请勿使用。\n * @note 键名以本表为准:`type: 'through'|'blind'` 与 `direction` 为向量的旧素材是无效写法——孔型由 `depth`(0=通孔)推导,`direction` 是 'normal'|'x'|'y'|'z' 枚举。\n * @returns Shape 钻孔后的几何。\n * @param input - 目标几何。type:Shape required:true\n * @param params.diameter - 孔径(mm)。type:number required:true\n * @param params.depth - 孔深(mm);0 = 通孔,> 0 = 盲孔。type:number 默认 0\n * @param params.holeType - 孔类型:simple 简单孔 / screw 螺丝孔。type:'simple' | 'screw' 默认 'simple'\n * @param params.direction - 钻孔轴向(normal 表示沿面法向)。type:'normal' | 'x' | 'y' | 'z' 默认 'normal'\n * @param params.position - 孔心位置。type:[x,y,z] 默认 原点\n * @param params.face - 面引用(§6.2 新形态:`FaceTopoRef`,执行期按输入 Shape 解析派生法向;优先于 `faceNormal`)。type:FaceTopoRef\n * @param params.faceNormal - 面法向(决定朝向;历史兜底,§6.2 起宿主不再写,改由 `face` 解析)。type:[x,y,z] 默认 [0,0,1]\n * @param params.tolerance - 公差(mm)。type:number 默认 0.3\n * @param params.screwSystem - 螺丝孔制式(holeType='screw' 时用)。type:'metric' | 'imperial' 默认 'metric'\n * @param params.screwSpecIdx - 螺丝规格索引(holeType='screw' 时用;4 → M5)。type:number 默认 4\n * @param params.screwThread - 螺丝螺纹类型。type:'coarse' | 'fine' | 'custom' 默认 'coarse'\n * @param params.screwHead - 螺丝头型。type:'hex' | 'chc' | 'none' 默认 'none'\n * @example\n * const p = await cad.fai_drill(part0, { diameter: 5 })\n * const p = await cad.fai_drill(part0, { diameter: 5, depth: 3 })\n * const p = await cad.fai_drill(part0, { diameter: 5.2, depth: 8, holeType: 'screw', screwSystem: 'metric', screwSpecIdx: 4, screwThread: 'coarse', screwHead: 'none' })\n */\nexport const fai_drill = defineOp({\n mesh: async (input: Shape, params: Record<string, unknown>) => {\n if (!input) throw new Error('[stdlib/drill] no input geometry')\n assertDrillParams(params)\n return drillMeshPath(input, params)\n },\n brep: (input: Shape, params: Record<string, unknown>) => {\n if (!input) throw new Error('[stdlib/drill] no input geometry')\n assertDrillParams(params)\n return drillBrepPath(input, params)\n },\n})\n"]}
@@ -1,36 +0,0 @@
1
- /**
2
- * stdlib extrude — 拉伸库函数
3
- *
4
- *
5
- * dispatchPath 静态判定 brep/mesh,产物经 solid()/fromBrep() 构造器创建。
6
- */
7
- import type { Shape } from '../mesh/types.js';
8
- /**
9
- * Validate extrude parameters: `length` must be a positive number.
10
- * @param params - the raw extrude operation parameters.
11
- */
12
- export declare function assertExtrudeParams(params: Record<string, unknown>): void;
13
- /**
14
- * 沿法向拉伸几何。
15
- * @group 特征
16
- * @inputs 1
17
- * @async true
18
- * @qual ok
19
- * @name fai_extrude
20
- * @deprecated `fai_` 前缀 op 是 ../3d_editor 项目特有的操作,不属于 faijs 平台面;将来会迁往该项目并从 faijs 删除。新代码请勿使用。
21
- * @returns Shape 拉伸后的几何。
22
- * @param input - 目标几何。type:Shape required:true
23
- * @param params.length - 总拉伸量(mm)。type:number required:true
24
- * @param params.mode - 拉伸方向:centered 双向各一半 / forward 正向 / backward 反向。type:'centered' | 'forward' | 'backward' 默认 'centered'
25
- * @param params.normal - 拉伸方向法向。type:[x,y,z] 默认 当前面法向 [0,0,1]
26
- * @param params.originOffset - 切面在法向上的偏移。type:number 默认 0
27
- * @param params.space - 坐标空间声明。type:'local' | 'world'
28
- * @example
29
- * const p = await cad.fai_extrude(part0, { length: 10 })
30
- * const p = await cad.fai_extrude(part0, { length: 10, mode: 'forward' })
31
- * const p = await cad.fai_extrude(part0, { length: 10, normal: [0,0,1], originOffset: 2 })
32
- */
33
- export declare const fai_extrude: ((input: Shape, params: Record<string, unknown>) => Promise<Shape>) & {
34
- __faijs__dualOp?: import("../define-op.js").DualOpMeta;
35
- };
36
- //# sourceMappingURL=fai_extrude.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fai_extrude.d.ts","sourceRoot":"","sources":["../../src/api/fai_extrude.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAQ,MAAM,eAAe,CAAA;AAYhD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAEzE;AAqBD;;;;;;;;;;;;;;;;;;;IAmBI;AACJ,eAAO,MAAM,WAAW;;CAgBtB,CAAA"}
@@ -1,78 +0,0 @@
1
- /**
2
- * stdlib extrude — 拉伸库函数
3
- *
4
- *
5
- * dispatchPath 静态判定 brep/mesh,产物经 solid()/fromBrep() 构造器创建。
6
- */
7
- import { cad } from '../mesh/index.js';
8
- import { extrudeBrep, solidToShape } from '../brep/brep-ops.js';
9
- import { getBackends } from '../runtime-state.js';
10
- import { fromBrep, brepOf } from '../shape.js';
11
- import { defineOp } from '../sdk.js';
12
- import { assertPositiveNumber } from './assert.js';
13
- // ── per-op 参数自校验(Phase 2.2;stdlib 被直接 import 时的防御层) ──
14
- /**
15
- * Validate extrude parameters: `length` must be a positive number.
16
- * @param params - the raw extrude operation parameters.
17
- */
18
- export function assertExtrudeParams(params) {
19
- assertPositiveNumber(params.length, 'extrude.length');
20
- }
21
- /** BREP 路径:OCCT extrude + 三角化 + fromBrep 登记。 */
22
- function extrudeBrepPath(input, params) {
23
- const kernel = getBackends().kernel.brep;
24
- if (!kernel)
25
- throw new Error('[stdlib/extrude] no OCCT kernel');
26
- const inputSolid = brepOf(input);
27
- if (!inputSolid)
28
- throw new Error('[stdlib/extrude] input is not BREP');
29
- const normal = params.normal ?? [0, 0, 1];
30
- const originOffset = params.originOffset ?? 0;
31
- const resultSolid = extrudeBrep(kernel, inputSolid, {
32
- normal,
33
- originOffset,
34
- length: params.length,
35
- mode: params.mode,
36
- });
37
- return fromBrep(solidToShape(kernel, resultSolid), { solid: resultSolid });
38
- }
39
- /**
40
- * 沿法向拉伸几何。
41
- * @group 特征
42
- * @inputs 1
43
- * @async true
44
- * @qual ok
45
- * @name fai_extrude
46
- * @deprecated `fai_` 前缀 op 是 ../3d_editor 项目特有的操作,不属于 faijs 平台面;将来会迁往该项目并从 faijs 删除。新代码请勿使用。
47
- * @returns Shape 拉伸后的几何。
48
- * @param input - 目标几何。type:Shape required:true
49
- * @param params.length - 总拉伸量(mm)。type:number required:true
50
- * @param params.mode - 拉伸方向:centered 双向各一半 / forward 正向 / backward 反向。type:'centered' | 'forward' | 'backward' 默认 'centered'
51
- * @param params.normal - 拉伸方向法向。type:[x,y,z] 默认 当前面法向 [0,0,1]
52
- * @param params.originOffset - 切面在法向上的偏移。type:number 默认 0
53
- * @param params.space - 坐标空间声明。type:'local' | 'world'
54
- * @example
55
- * const p = await cad.fai_extrude(part0, { length: 10 })
56
- * const p = await cad.fai_extrude(part0, { length: 10, mode: 'forward' })
57
- * const p = await cad.fai_extrude(part0, { length: 10, normal: [0,0,1], originOffset: 2 })
58
- */
59
- export const fai_extrude = defineOp({
60
- mesh: async (input, params) => {
61
- if (!input)
62
- throw new Error('[stdlib/extrude] no input geometry');
63
- assertExtrudeParams(params);
64
- return cad.fai_extrude(input, {
65
- normal: params.normal ?? [0, 0, 1],
66
- originOffset: params.originOffset ?? 0,
67
- length: params.length,
68
- mode: params.mode,
69
- });
70
- },
71
- brep: (input, params) => {
72
- if (!input)
73
- throw new Error('[stdlib/extrude] no input geometry');
74
- assertExtrudeParams(params);
75
- return extrudeBrepPath(input, params);
76
- },
77
- });
78
- //# sourceMappingURL=fai_extrude.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fai_extrude.js","sourceRoot":"","sources":["../../src/api/fai_extrude.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,GAAG,EAAE,MAAM,SAAS,CAAA;AAC7B,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAA;AACjC,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAI/C,wDAAwD;AAExD;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAA+B;IACjE,oBAAoB,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;AACvD,CAAC;AAED,gDAAgD;AAChD,SAAS,eAAe,CAAC,KAAY,EAAE,MAA+B;IACpE,MAAM,MAAM,GAAG,WAAW,EAAE,CAAC,MAAM,CAAC,IAA4B,CAAA;IAChE,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAA;IAC/D,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAA2B,CAAA;IAC1D,IAAI,CAAC,UAAU;QAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAA;IAEtE,MAAM,MAAM,GAAI,MAAM,CAAC,MAA2B,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IAC/D,MAAM,YAAY,GAAI,MAAM,CAAC,YAAmC,IAAI,CAAC,CAAA;IACrE,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE;QAClD,MAAM;QACN,YAAY;QACZ,MAAM,EAAE,MAAM,CAAC,MAAgB;QAC/B,IAAI,EAAE,MAAM,CAAC,IAAuD;KACrE,CAAC,CAAA;IAEF,OAAO,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAA;AAC5E,CAAC;AAED;;;;;;;;;;;;;;;;;;;IAmBI;AACJ,MAAM,CAAC,MAAM,WAAW,GAAG,QAAQ,CAAC;IAClC,IAAI,EAAE,KAAK,EAAE,KAAY,EAAE,MAA+B,EAAE,EAAE;QAC5D,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAA;QACjE,mBAAmB,CAAC,MAAM,CAAC,CAAA;QAC3B,OAAO,GAAG,CAAC,WAAW,CAAC,KAAK,EAAE;YAC5B,MAAM,EAAG,MAAM,CAAC,MAA2B,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACxD,YAAY,EAAG,MAAM,CAAC,YAAmC,IAAI,CAAC;YAC9D,MAAM,EAAE,MAAM,CAAC,MAAgB;YAC/B,IAAI,EAAE,MAAM,CAAC,IAAuD;SACrE,CAAC,CAAA;IACJ,CAAC;IACD,IAAI,EAAE,CAAC,KAAY,EAAE,MAA+B,EAAE,EAAE;QACtD,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAA;QACjE,mBAAmB,CAAC,MAAM,CAAC,CAAA;QAC3B,OAAO,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;IACvC,CAAC;CACF,CAAC,CAAA","sourcesContent":["/**\n * stdlib extrude — 拉伸库函数\n *\n *\n * dispatchPath 静态判定 brep/mesh,产物经 solid()/fromBrep() 构造器创建。\n */\n\nimport type { Shape, Vec3 } from '../mesh/types'\nimport { cad } from '../mesh'\nimport { extrudeBrep, solidToShape } from '../brep/brep-ops'\nimport { getBackends } from '../runtime-state'\nimport { fromBrep, brepOf } from '../shape'\nimport { defineOp } from '../sdk'\nimport { assertPositiveNumber } from './assert'\nimport type { BrepHandle } from '../brep/engine/types'\nimport type { BrepEngineApi } from '../brep/engine/primitives'\n\n// ── per-op 参数自校验(Phase 2.2;stdlib 被直接 import 时的防御层) ──\n\n/**\n * Validate extrude parameters: `length` must be a positive number.\n * @param params - the raw extrude operation parameters.\n */\nexport function assertExtrudeParams(params: Record<string, unknown>): void {\n assertPositiveNumber(params.length, 'extrude.length')\n}\n\n/** BREP 路径:OCCT extrude + 三角化 + fromBrep 登记。 */\nfunction extrudeBrepPath(input: Shape, params: Record<string, unknown>): Shape {\n const kernel = getBackends().kernel.brep as BrepEngineApi | null\n if (!kernel) throw new Error('[stdlib/extrude] no OCCT kernel')\n const inputSolid = brepOf(input) as BrepHandle | undefined\n if (!inputSolid) throw new Error('[stdlib/extrude] input is not BREP')\n\n const normal = (params.normal as Vec3 | undefined) ?? [0, 0, 1]\n const originOffset = (params.originOffset as number | undefined) ?? 0\n const resultSolid = extrudeBrep(kernel, inputSolid, {\n normal,\n originOffset,\n length: params.length as number,\n mode: params.mode as 'centered' | 'forward' | 'backward' | undefined,\n })\n\n return fromBrep(solidToShape(kernel, resultSolid), { solid: resultSolid })\n}\n\n/**\n * 沿法向拉伸几何。\n * @group 特征\n * @inputs 1\n * @async true\n * @qual ok\n * @name fai_extrude\n * @deprecated `fai_` 前缀 op 是 ../3d_editor 项目特有的操作,不属于 faijs 平台面;将来会迁往该项目并从 faijs 删除。新代码请勿使用。\n * @returns Shape 拉伸后的几何。\n * @param input - 目标几何。type:Shape required:true\n * @param params.length - 总拉伸量(mm)。type:number required:true\n * @param params.mode - 拉伸方向:centered 双向各一半 / forward 正向 / backward 反向。type:'centered' | 'forward' | 'backward' 默认 'centered'\n * @param params.normal - 拉伸方向法向。type:[x,y,z] 默认 当前面法向 [0,0,1]\n * @param params.originOffset - 切面在法向上的偏移。type:number 默认 0\n * @param params.space - 坐标空间声明。type:'local' | 'world'\n * @example\n * const p = await cad.fai_extrude(part0, { length: 10 })\n * const p = await cad.fai_extrude(part0, { length: 10, mode: 'forward' })\n * const p = await cad.fai_extrude(part0, { length: 10, normal: [0,0,1], originOffset: 2 })\n */\nexport const fai_extrude = defineOp({\n mesh: async (input: Shape, params: Record<string, unknown>) => {\n if (!input) throw new Error('[stdlib/extrude] no input geometry')\n assertExtrudeParams(params)\n return cad.fai_extrude(input, {\n normal: (params.normal as Vec3 | undefined) ?? [0, 0, 1],\n originOffset: (params.originOffset as number | undefined) ?? 0,\n length: params.length as number,\n mode: params.mode as 'centered' | 'forward' | 'backward' | undefined,\n })\n },\n brep: (input: Shape, params: Record<string, unknown>) => {\n if (!input) throw new Error('[stdlib/extrude] no input geometry')\n assertExtrudeParams(params)\n return extrudeBrepPath(input, params)\n },\n})\n"]}
@@ -1,46 +0,0 @@
1
- /**
2
- * stdlib split — 分割库函数(返回具名对象 { front, back })
3
- *
4
- *
5
- * dispatchPath 静态判定 brep/mesh,双输出以具名对象返回(替代 outputCache 多输出写入)。
6
- */
7
- import type { Shape } from '../mesh/types.js';
8
- /**
9
- * 分割几何,返回具名对象 { front, back } 两个独立零件。
10
- * @group 特征
11
- * @inputs 1
12
- * @async true
13
- * @qual warn
14
- * @name fai_split
15
- * @deprecated `fai_` 前缀 op 是 ../3d_editor 项目特有的操作,不属于 faijs 平台面;将来会迁往该项目并从 faijs 删除。新代码请勿使用。
16
- * @returns { front: Shape; back: Shape } 必须用解构 `const { front: partA, back: partB } = await cad.fai_split(...)` 取出两个零件。
17
- * @param input - 目标几何。type:Shape required:true
18
- * @param params.cutMode - 切割模式。type:'plane' | 'dovetail' | 'dowel' | 'tenon' | 'straight-tenon' | 'straight' 默认 'plane'
19
- * @param params.normal - 切割面法向。type:[x,y,z] 默认 [0,0,1]
20
- * @param params.offset - 切割面沿法向偏移(过 bbCenter)。type:number 默认 0
21
- * @param params.inPlaneAngleDeg - 切割面面内旋转角(度)。type:number 默认 0
22
- * @param params.bbCenter - 包围盒中心(缺省自动推导)。type:[x,y,z] 默认 自动
23
- * @param params.bboxSize - 包围盒尺寸(缺省自动推导)。type:[x,y,z] 默认 自动
24
- * @param params.applyExplode - 是否将两侧沿法向分离位移(bbox 对角线 2% + 榫卯深度一半)。type:boolean 默认 true
25
- * @param params.grooveDepth - 燕尾槽深(cutMode='dovetail')。type:number
26
- * @param params.grooveWidth - 燕尾槽宽(cutMode='dovetail')。type:number
27
- * @param params.grooveDepthTolerance - 燕尾槽深公差。type:number
28
- * @param params.grooveWidthTolerance - 燕尾槽宽公差。type:number
29
- * @param params.grooveFlapsAngle - 燕尾槽翼角(度)。type:number
30
- * @param params.dowelDiameter - 定位销直径(cutMode='dowel')。type:number
31
- * @param params.dowelDiameterTolerance - 定位销直径公差。type:number
32
- * @param params.dowelHeight - 定位销高度。type:number
33
- * @param params.dowelHeightTolerance - 定位销高度公差。type:number
34
- * @param params.tenonSideLength - 直榫边长(cutMode='tenon'/'straight-tenon')。type:number
35
- * @param params.tenonSideLengthTolerance - 直榫边长公差。type:number
36
- * @param params.tenonHeight - 直榫高度。type:number
37
- * @param params.tenonHeightTolerance - 直榫高度公差。type:number
38
- * @param params.selectedSections - 参与榫卯的截面下标。type:number[]
39
- * @note 切割面统一用 `normal`/`offset`/`inPlaneAngleDeg` 描述;早期文本层曾与执行层键名断裂(planeRotation/planePosition),已修并统一为上述键名。
40
- * @example
41
- * const { front: part1, back: part2 } = await cad.fai_split(part0, { normal: [0, 0, 1], offset: 5, cutMode: 'dovetail', grooveDepth: 3, grooveWidth: 5 })
42
- */
43
- export declare const fai_split: ((input: Shape, params?: Record<string, unknown> | undefined) => Promise<Record<string, Shape>>) & {
44
- __faijs__dualOp?: import("../define-op.js").DualOpMeta;
45
- };
46
- //# sourceMappingURL=fai_split.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fai_split.d.ts","sourceRoot":"","sources":["../../src/api/fai_split.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAQ,MAAM,eAAe,CAAA;AA+NhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAkCI;AACJ,eAAO,MAAM,SAAS;;CAgBpB,CAAA"}