@faicad/faijs 0.19.0 → 0.29.3

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 (510) hide show
  1. package/LICENSE +202 -28
  2. package/dist/api/api-namespace.d.ts +5 -5
  3. package/dist/api/api-namespace.d.ts.map +1 -1
  4. package/dist/api/api-namespace.js +4 -4
  5. package/dist/api/api-namespace.js.map +1 -1
  6. package/dist/api/assert.d.ts +2 -2
  7. package/dist/api/assert.js +8 -8
  8. package/dist/api/assert.js.map +1 -1
  9. package/dist/api/asset.d.ts +1 -1
  10. package/dist/api/asset.js +2 -2
  11. package/dist/api/asset.js.map +1 -1
  12. package/dist/api/boolean.d.ts +1 -1
  13. package/dist/api/boolean.d.ts.map +1 -1
  14. package/dist/api/boolean.js +128 -16
  15. package/dist/api/boolean.js.map +1 -1
  16. package/dist/api/brep-mirror/joinery-brep.d.ts.map +1 -1
  17. package/dist/api/brep-mirror/joinery-brep.js +3 -1
  18. package/dist/api/brep-mirror/joinery-brep.js.map +1 -1
  19. package/dist/api/cadquery-selectors/borrow-bridge.d.ts +14 -0
  20. package/dist/api/cadquery-selectors/borrow-bridge.d.ts.map +1 -0
  21. package/dist/api/cadquery-selectors/borrow-bridge.js +52 -0
  22. package/dist/api/cadquery-selectors/borrow-bridge.js.map +1 -0
  23. package/dist/api/cadquery-selectors/edge.d.ts +40 -0
  24. package/dist/api/cadquery-selectors/edge.d.ts.map +1 -0
  25. package/dist/api/cadquery-selectors/edge.js +70 -0
  26. package/dist/api/cadquery-selectors/edge.js.map +1 -0
  27. package/dist/api/cadquery-selectors/entity.d.ts +121 -0
  28. package/dist/api/cadquery-selectors/entity.d.ts.map +1 -0
  29. package/dist/api/cadquery-selectors/entity.js +167 -0
  30. package/dist/api/cadquery-selectors/entity.js.map +1 -0
  31. package/dist/api/cadquery-selectors/face.d.ts +33 -0
  32. package/dist/api/cadquery-selectors/face.d.ts.map +1 -0
  33. package/dist/api/cadquery-selectors/face.js +353 -0
  34. package/dist/api/cadquery-selectors/face.js.map +1 -0
  35. package/dist/api/cadquery-selectors/grammar.d.ts +50 -0
  36. package/dist/api/cadquery-selectors/grammar.d.ts.map +1 -0
  37. package/dist/api/cadquery-selectors/grammar.js +345 -0
  38. package/dist/api/cadquery-selectors/grammar.js.map +1 -0
  39. package/dist/api/cadquery-selectors/index.d.ts +18 -0
  40. package/dist/api/cadquery-selectors/index.d.ts.map +1 -0
  41. package/dist/api/cadquery-selectors/index.js +17 -0
  42. package/dist/api/cadquery-selectors/index.js.map +1 -0
  43. package/dist/api/cadquery-selectors/predicates.d.ts +76 -0
  44. package/dist/api/cadquery-selectors/predicates.d.ts.map +1 -0
  45. package/dist/api/cadquery-selectors/predicates.js +85 -0
  46. package/dist/api/cadquery-selectors/predicates.js.map +1 -0
  47. package/dist/api/cadquery-selectors/resolve.d.ts +41 -0
  48. package/dist/api/cadquery-selectors/resolve.d.ts.map +1 -0
  49. package/dist/api/cadquery-selectors/resolve.js +243 -0
  50. package/dist/api/cadquery-selectors/resolve.js.map +1 -0
  51. package/dist/api/cadquery-selectors/types.d.ts +96 -0
  52. package/dist/api/cadquery-selectors/types.d.ts.map +1 -0
  53. package/dist/api/cadquery-selectors/types.js +11 -0
  54. package/dist/api/cadquery-selectors/types.js.map +1 -0
  55. package/dist/api/chamfer.d.ts +13 -5
  56. package/dist/api/chamfer.d.ts.map +1 -1
  57. package/dist/api/chamfer.js +63 -7
  58. package/dist/api/chamfer.js.map +1 -1
  59. package/dist/api/compound-geom.d.ts +1 -1
  60. package/dist/api/compound-geom.js +1 -1
  61. package/dist/api/compound-geom.js.map +1 -1
  62. package/dist/api/draft.d.ts +1 -1
  63. package/dist/api/draft.js +1 -1
  64. package/dist/api/draft.js.map +1 -1
  65. package/dist/api/edge-ref.d.ts +1 -1
  66. package/dist/api/edge-ref.d.ts.map +1 -1
  67. package/dist/api/edge-ref.js +11 -3
  68. package/dist/api/edge-ref.js.map +1 -1
  69. package/dist/api/engrave.d.ts +1 -1
  70. package/dist/api/engrave.js +7 -7
  71. package/dist/api/engrave.js.map +1 -1
  72. package/dist/api/extrude.d.ts +6 -1
  73. package/dist/api/extrude.d.ts.map +1 -1
  74. package/dist/api/extrude.js +59 -5
  75. package/dist/api/extrude.js.map +1 -1
  76. package/dist/api/face-ref.d.ts +1 -1
  77. package/dist/api/face-ref.js +1 -1
  78. package/dist/api/face-ref.js.map +1 -1
  79. package/dist/api/feature-repair.d.ts +1 -1
  80. package/dist/api/feature-repair.js +1 -1
  81. package/dist/api/feature-repair.js.map +1 -1
  82. package/dist/api/fillet-variable.d.ts +1 -1
  83. package/dist/api/fillet-variable.js +1 -1
  84. package/dist/api/fillet-variable.js.map +1 -1
  85. package/dist/api/fillet.d.ts +28 -8
  86. package/dist/api/fillet.d.ts.map +1 -1
  87. package/dist/api/fillet.js +64 -9
  88. package/dist/api/fillet.js.map +1 -1
  89. package/dist/api/generated/script-face-manifest.d.ts +4 -0
  90. package/dist/api/generated/script-face-manifest.d.ts.map +1 -1
  91. package/dist/api/generated/script-face-manifest.js.map +1 -1
  92. package/dist/api/geom.d.ts +1 -1
  93. package/dist/api/geom.js +1 -1
  94. package/dist/api/geom.js.map +1 -1
  95. package/dist/api/helix.d.ts +1 -1
  96. package/dist/api/helix.js +1 -1
  97. package/dist/api/helix.js.map +1 -1
  98. package/dist/api/import-brep.d.ts +20 -2
  99. package/dist/api/import-brep.d.ts.map +1 -1
  100. package/dist/api/import-brep.js +28 -3
  101. package/dist/api/import-brep.js.map +1 -1
  102. package/dist/api/import-step.d.ts +17 -2
  103. package/dist/api/import-step.d.ts.map +1 -1
  104. package/dist/api/import-step.js +23 -3
  105. package/dist/api/import-step.js.map +1 -1
  106. package/dist/api/index.d.ts +2 -1
  107. package/dist/api/index.d.ts.map +1 -1
  108. package/dist/api/index.js +5 -2
  109. package/dist/api/index.js.map +1 -1
  110. package/dist/api/internal/compat-op.js +1 -1
  111. package/dist/api/internal/compat-op.js.map +1 -1
  112. package/dist/api/internal/mesh-solid-op.d.ts +236 -0
  113. package/dist/api/internal/mesh-solid-op.d.ts.map +1 -0
  114. package/dist/api/internal/mesh-solid-op.js +352 -0
  115. package/dist/api/internal/mesh-solid-op.js.map +1 -0
  116. package/dist/api/internal/svg-asset-resolver.d.ts +1 -1
  117. package/dist/api/internal/svg-asset-resolver.js +1 -1
  118. package/dist/api/internal/svg-asset-resolver.js.map +1 -1
  119. package/dist/api/knurl.d.ts +1 -1
  120. package/dist/api/knurl.d.ts.map +1 -1
  121. package/dist/api/knurl.js +3 -2
  122. package/dist/api/knurl.js.map +1 -1
  123. package/dist/api/loft.d.ts +1 -1
  124. package/dist/api/loft.js +1 -1
  125. package/dist/api/loft.js.map +1 -1
  126. package/dist/api/measurement/index.d.ts +9 -5
  127. package/dist/api/measurement/index.d.ts.map +1 -1
  128. package/dist/api/measurement/index.js +47 -20
  129. package/dist/api/measurement/index.js.map +1 -1
  130. package/dist/api/pattern.d.ts +5 -3
  131. package/dist/api/pattern.d.ts.map +1 -1
  132. package/dist/api/pattern.js +32 -4
  133. package/dist/api/pattern.js.map +1 -1
  134. package/dist/api/place.d.ts +1 -1
  135. package/dist/api/place.js +1 -1
  136. package/dist/api/place.js.map +1 -1
  137. package/dist/api/primitives.d.ts +5 -4
  138. package/dist/api/primitives.d.ts.map +1 -1
  139. package/dist/api/primitives.js +11 -5
  140. package/dist/api/primitives.js.map +1 -1
  141. package/dist/api/profile.d.ts +64 -8
  142. package/dist/api/profile.d.ts.map +1 -1
  143. package/dist/api/profile.js +61 -10
  144. package/dist/api/profile.js.map +1 -1
  145. package/dist/api/punch-hole.d.ts +3 -0
  146. package/dist/api/punch-hole.d.ts.map +1 -1
  147. package/dist/api/punch-hole.js.map +1 -1
  148. package/dist/api/reconcile.d.ts +1 -1
  149. package/dist/api/reconcile.js +1 -1
  150. package/dist/api/reconcile.js.map +1 -1
  151. package/dist/api/replicate.d.ts.map +1 -1
  152. package/dist/api/replicate.js +122 -1
  153. package/dist/api/replicate.js.map +1 -1
  154. package/dist/api/screw.d.ts +1 -1
  155. package/dist/api/screw.js +3 -3
  156. package/dist/api/screw.js.map +1 -1
  157. package/dist/api/sdf.d.ts +1 -1
  158. package/dist/api/sdf.js +2 -2
  159. package/dist/api/sdf.js.map +1 -1
  160. package/dist/api/section-by-plane.d.ts +1 -1
  161. package/dist/api/section-by-plane.d.ts.map +1 -1
  162. package/dist/api/section-by-plane.js +2 -1
  163. package/dist/api/section-by-plane.js.map +1 -1
  164. package/dist/api/shell.d.ts +11 -4
  165. package/dist/api/shell.d.ts.map +1 -1
  166. package/dist/api/shell.js +53 -7
  167. package/dist/api/shell.js.map +1 -1
  168. package/dist/api/sketch-on-face.d.ts +41 -0
  169. package/dist/api/sketch-on-face.d.ts.map +1 -1
  170. package/dist/api/sketch-on-face.js +100 -1
  171. package/dist/api/sketch-on-face.js.map +1 -1
  172. package/dist/api/sketch-on-plane.d.ts +17 -9
  173. package/dist/api/sketch-on-plane.d.ts.map +1 -1
  174. package/dist/api/sketch-on-plane.js +12 -10
  175. package/dist/api/sketch-on-plane.js.map +1 -1
  176. package/dist/api/split-by-plane.d.ts +1 -1
  177. package/dist/api/split-by-plane.d.ts.map +1 -1
  178. package/dist/api/split-by-plane.js +2 -1
  179. package/dist/api/split-by-plane.js.map +1 -1
  180. package/dist/api/split.d.ts +1 -1
  181. package/dist/api/split.js +2 -2
  182. package/dist/api/split.js.map +1 -1
  183. package/dist/api/surface/arg-spec.d.ts +8 -0
  184. package/dist/api/surface/arg-spec.d.ts.map +1 -1
  185. package/dist/api/surface/arg-spec.js.map +1 -1
  186. package/dist/api/sweep.d.ts +1 -1
  187. package/dist/api/sweep.js +1 -1
  188. package/dist/api/sweep.js.map +1 -1
  189. package/dist/api/thicken.d.ts +1 -1
  190. package/dist/api/thicken.js +1 -1
  191. package/dist/api/thicken.js.map +1 -1
  192. package/dist/api/topo-resolve.d.ts +74 -1
  193. package/dist/api/topo-resolve.d.ts.map +1 -1
  194. package/dist/api/topo-resolve.js +180 -2
  195. package/dist/api/topo-resolve.js.map +1 -1
  196. package/dist/api/transform.d.ts +10 -6
  197. package/dist/api/transform.d.ts.map +1 -1
  198. package/dist/api/transform.js +74 -21
  199. package/dist/api/transform.js.map +1 -1
  200. package/dist/api/wire.d.ts +1 -1
  201. package/dist/api/wire.js +1 -1
  202. package/dist/api/wire.js.map +1 -1
  203. package/dist/api/xml-dom.d.ts +27 -0
  204. package/dist/api/xml-dom.d.ts.map +1 -0
  205. package/dist/api/xml-dom.js +45 -0
  206. package/dist/api/xml-dom.js.map +1 -0
  207. package/dist/brep/brep-ops.d.ts +13 -11
  208. package/dist/brep/brep-ops.d.ts.map +1 -1
  209. package/dist/brep/brep-ops.js +31 -30
  210. package/dist/brep/brep-ops.js.map +1 -1
  211. package/dist/brep/brep-topology.d.ts +5 -4
  212. package/dist/brep/brep-topology.d.ts.map +1 -1
  213. package/dist/brep/brep-topology.js +9 -6
  214. package/dist/brep/brep-topology.js.map +1 -1
  215. package/dist/brep/effective-deflection.d.ts +35 -0
  216. package/dist/brep/effective-deflection.d.ts.map +1 -0
  217. package/dist/brep/effective-deflection.js +49 -0
  218. package/dist/brep/effective-deflection.js.map +1 -0
  219. package/dist/brep/engine/adapters/brep-mock.d.ts.map +1 -1
  220. package/dist/brep/engine/adapters/brep-mock.js +27 -0
  221. package/dist/brep/engine/adapters/brep-mock.js.map +1 -1
  222. package/dist/brep/engine/adapters/brepkit.d.ts +18 -0
  223. package/dist/brep/engine/adapters/brepkit.d.ts.map +1 -1
  224. package/dist/brep/engine/adapters/brepkit.js +46 -1
  225. package/dist/brep/engine/adapters/brepkit.js.map +1 -1
  226. package/dist/brep/engine/adapters/occt.d.ts +1 -1
  227. package/dist/brep/engine/adapters/occt.d.ts.map +1 -1
  228. package/dist/brep/engine/adapters/occt.js +3 -1
  229. package/dist/brep/engine/adapters/occt.js.map +1 -1
  230. package/dist/brep/engine/primitives.d.ts +29 -7
  231. package/dist/brep/engine/primitives.d.ts.map +1 -1
  232. package/dist/brep/engine/primitives.js.map +1 -1
  233. package/dist/brep/engine/registry.d.ts +24 -1
  234. package/dist/brep/engine/registry.d.ts.map +1 -1
  235. package/dist/brep/engine/registry.js +24 -0
  236. package/dist/brep/engine/registry.js.map +1 -1
  237. package/dist/brep/engine/types.d.ts +54 -3
  238. package/dist/brep/engine/types.d.ts.map +1 -1
  239. package/dist/brep/engine/types.js +10 -0
  240. package/dist/brep/engine/types.js.map +1 -1
  241. package/dist/brep/export/export-model.d.ts +79 -0
  242. package/dist/brep/export/export-model.d.ts.map +1 -0
  243. package/dist/brep/export/export-model.js +336 -0
  244. package/dist/brep/export/export-model.js.map +1 -0
  245. package/dist/brep/face-evolution.d.ts +1 -1
  246. package/dist/brep/face-evolution.d.ts.map +1 -1
  247. package/dist/brep/face-evolution.js +20 -1
  248. package/dist/brep/face-evolution.js.map +1 -1
  249. package/dist/brep/handle-bridge.d.ts +1 -1
  250. package/dist/brep/handle-bridge.js +1 -1
  251. package/dist/brep/handle-bridge.js.map +1 -1
  252. package/dist/brep/mesh-solid.d.ts +218 -0
  253. package/dist/brep/mesh-solid.d.ts.map +1 -0
  254. package/dist/brep/mesh-solid.js +229 -0
  255. package/dist/brep/mesh-solid.js.map +1 -0
  256. package/dist/brep/primitives-brep.d.ts.map +1 -1
  257. package/dist/brep/primitives-brep.js +3 -1
  258. package/dist/brep/primitives-brep.js.map +1 -1
  259. package/dist/brep/text/fontRegistry.d.ts +32 -1
  260. package/dist/brep/text/fontRegistry.d.ts.map +1 -1
  261. package/dist/brep/text/fontRegistry.js +51 -1
  262. package/dist/brep/text/fontRegistry.js.map +1 -1
  263. package/dist/brep/text/text-to-solid.d.ts.map +1 -1
  264. package/dist/brep/text/text-to-solid.js +8 -3
  265. package/dist/brep/text/text-to-solid.js.map +1 -1
  266. package/dist/brepkit-kernel/brepkitKernel.d.ts +18 -2
  267. package/dist/brepkit-kernel/brepkitKernel.d.ts.map +1 -1
  268. package/dist/brepkit-kernel/brepkitKernel.js +453 -125
  269. package/dist/brepkit-kernel/brepkitKernel.js.map +1 -1
  270. package/dist/brepkit-kernel/brepkitWasm.d.ts +8 -0
  271. package/dist/brepkit-kernel/brepkitWasm.d.ts.map +1 -1
  272. package/dist/brepkit-kernel/brepkitWasm.js +10 -0
  273. package/dist/brepkit-kernel/brepkitWasm.js.map +1 -1
  274. package/dist/browser-host/browser-font-provider.d.ts +12 -0
  275. package/dist/browser-host/browser-font-provider.d.ts.map +1 -1
  276. package/dist/browser-host/browser-font-provider.js +25 -0
  277. package/dist/browser-host/browser-font-provider.js.map +1 -1
  278. package/dist/browser.d.ts +6 -3
  279. package/dist/browser.d.ts.map +1 -1
  280. package/dist/browser.js +10 -3
  281. package/dist/browser.js.map +1 -1
  282. package/dist/cad-runtime/backend-dispatch.d.ts +28 -3
  283. package/dist/cad-runtime/backend-dispatch.d.ts.map +1 -1
  284. package/dist/cad-runtime/backend-dispatch.js +119 -4
  285. package/dist/cad-runtime/backend-dispatch.js.map +1 -1
  286. package/dist/cad-runtime/browser-lib-loader.js.map +1 -1
  287. package/dist/cad-runtime/direct-executor.d.ts +19 -3
  288. package/dist/cad-runtime/direct-executor.d.ts.map +1 -1
  289. package/dist/cad-runtime/direct-executor.js +49 -1
  290. package/dist/cad-runtime/direct-executor.js.map +1 -1
  291. package/dist/cad-runtime/ports.d.ts +3 -3
  292. package/dist/cad-runtime/ports.d.ts.map +1 -1
  293. package/dist/cad-runtime/ports.js.map +1 -1
  294. package/dist/cad-runtime/preview-exec.d.ts +4 -4
  295. package/dist/cad-runtime/preview-exec.js +2 -2
  296. package/dist/cad-runtime/preview-exec.js.map +1 -1
  297. package/dist/cad-runtime/runtime.d.ts +66 -8
  298. package/dist/cad-runtime/runtime.d.ts.map +1 -1
  299. package/dist/cad-runtime/runtime.js +121 -8
  300. package/dist/cad-runtime/runtime.js.map +1 -1
  301. package/dist/define-op.d.ts +37 -1
  302. package/dist/define-op.d.ts.map +1 -1
  303. package/dist/define-op.js +25 -1
  304. package/dist/define-op.js.map +1 -1
  305. package/dist/env-agnostic.d.ts +7 -7
  306. package/dist/env-agnostic.d.ts.map +1 -1
  307. package/dist/env-agnostic.js +3 -3
  308. package/dist/env-agnostic.js.map +1 -1
  309. package/dist/geometry2d/adapt.d.ts +39 -4
  310. package/dist/geometry2d/adapt.d.ts.map +1 -1
  311. package/dist/geometry2d/adapt.js +14 -3
  312. package/dist/geometry2d/adapt.js.map +1 -1
  313. package/dist/geometry2d/blueprint.d.ts +2 -2
  314. package/dist/geometry2d/blueprint.js +2 -2
  315. package/dist/geometry2d/blueprint.js.map +1 -1
  316. package/dist/geometry2d/bridge/lift-on-plane.d.ts +18 -8
  317. package/dist/geometry2d/bridge/lift-on-plane.d.ts.map +1 -1
  318. package/dist/geometry2d/bridge/lift-on-plane.js +71 -12
  319. package/dist/geometry2d/bridge/lift-on-plane.js.map +1 -1
  320. package/dist/geometry2d/bridge/plane.d.ts +17 -0
  321. package/dist/geometry2d/bridge/plane.d.ts.map +1 -1
  322. package/dist/geometry2d/bridge/plane.js +22 -0
  323. package/dist/geometry2d/bridge/plane.js.map +1 -1
  324. package/dist/geometry2d/curve2d.d.ts +25 -0
  325. package/dist/geometry2d/curve2d.d.ts.map +1 -1
  326. package/dist/geometry2d/curve2d.js +41 -5
  327. package/dist/geometry2d/curve2d.js.map +1 -1
  328. package/dist/geometry2d/pen-sketcher.d.ts +25 -0
  329. package/dist/geometry2d/pen-sketcher.d.ts.map +1 -1
  330. package/dist/geometry2d/pen-sketcher.js +43 -0
  331. package/dist/geometry2d/pen-sketcher.js.map +1 -1
  332. package/dist/index.d.ts +6 -2
  333. package/dist/index.d.ts.map +1 -1
  334. package/dist/index.js +10 -3
  335. package/dist/index.js.map +1 -1
  336. package/dist/io/bytes-node.d.ts +11 -0
  337. package/dist/io/bytes-node.d.ts.map +1 -0
  338. package/dist/io/bytes-node.js +28 -0
  339. package/dist/io/bytes-node.js.map +1 -0
  340. package/dist/io/bytes.d.ts +33 -0
  341. package/dist/io/bytes.d.ts.map +1 -0
  342. package/dist/io/bytes.js +41 -0
  343. package/dist/io/bytes.js.map +1 -0
  344. package/dist/io/fai-zip/container-read.d.ts +102 -0
  345. package/dist/io/fai-zip/container-read.d.ts.map +1 -0
  346. package/dist/io/fai-zip/container-read.js +305 -0
  347. package/dist/io/fai-zip/container-read.js.map +1 -0
  348. package/dist/io/fai-zip/container-write.d.ts +70 -0
  349. package/dist/io/fai-zip/container-write.d.ts.map +1 -0
  350. package/dist/io/fai-zip/container-write.js +186 -0
  351. package/dist/io/fai-zip/container-write.js.map +1 -0
  352. package/dist/io/fai-zip/container.d.ts +107 -0
  353. package/dist/io/fai-zip/container.d.ts.map +1 -0
  354. package/dist/io/fai-zip/container.js +89 -0
  355. package/dist/io/fai-zip/container.js.map +1 -0
  356. package/dist/io/fai-zip/index.d.ts +18 -0
  357. package/dist/io/fai-zip/index.d.ts.map +1 -0
  358. package/dist/io/fai-zip/index.js +4 -0
  359. package/dist/io/fai-zip/index.js.map +1 -0
  360. package/dist/io/index.d.ts +10 -0
  361. package/dist/io/index.d.ts.map +1 -0
  362. package/dist/io/index.js +13 -0
  363. package/dist/io/index.js.map +1 -0
  364. package/dist/io/zip.d.ts +68 -0
  365. package/dist/io/zip.d.ts.map +1 -0
  366. package/dist/io/zip.js +147 -0
  367. package/dist/io/zip.js.map +1 -0
  368. package/dist/lang/code-to-args.d.ts +30 -4
  369. package/dist/lang/code-to-args.d.ts.map +1 -1
  370. package/dist/lang/code-to-args.js +42 -3
  371. package/dist/lang/code-to-args.js.map +1 -1
  372. package/dist/lang/codegen.d.ts +45 -1
  373. package/dist/lang/codegen.d.ts.map +1 -1
  374. package/dist/lang/codegen.js +135 -6
  375. package/dist/lang/codegen.js.map +1 -1
  376. package/dist/lang/host-arg.d.ts +6 -0
  377. package/dist/lang/host-arg.d.ts.map +1 -1
  378. package/dist/lang/host-arg.js.map +1 -1
  379. package/dist/lang/metadata-extractor.d.ts +25 -0
  380. package/dist/lang/metadata-extractor.d.ts.map +1 -1
  381. package/dist/lang/metadata-extractor.js +289 -25
  382. package/dist/lang/metadata-extractor.js.map +1 -1
  383. package/dist/lang/parse-error.d.ts +7 -1
  384. package/dist/lang/parse-error.d.ts.map +1 -1
  385. package/dist/lang/parse-error.js.map +1 -1
  386. package/dist/lang/security-scanner.d.ts +9 -1
  387. package/dist/lang/security-scanner.d.ts.map +1 -1
  388. package/dist/lang/security-scanner.js +38 -1
  389. package/dist/lang/security-scanner.js.map +1 -1
  390. package/dist/lang/statement-summary.d.ts +1 -1
  391. package/dist/lang/statement-summary.js +1 -1
  392. package/dist/lang/statement-summary.js.map +1 -1
  393. package/dist/lang/types.d.ts +1 -1
  394. package/dist/lang/types.js +1 -1
  395. package/dist/lang/types.js.map +1 -1
  396. package/dist/mesh/index.d.ts +2 -1
  397. package/dist/mesh/index.d.ts.map +1 -1
  398. package/dist/mesh/index.js +2 -1
  399. package/dist/mesh/index.js.map +1 -1
  400. package/dist/mesh/io.d.ts +69 -9
  401. package/dist/mesh/io.d.ts.map +1 -1
  402. package/dist/mesh/io.js +121 -17
  403. package/dist/mesh/io.js.map +1 -1
  404. package/dist/mesh/reconcile.d.ts +1 -1
  405. package/dist/mesh/reconcile.js +1 -1
  406. package/dist/mesh/reconcile.js.map +1 -1
  407. package/dist/mesh/rigid-transform.d.ts +3 -3
  408. package/dist/mesh/rigid-transform.js +3 -3
  409. package/dist/mesh/rigid-transform.js.map +1 -1
  410. package/dist/mesh/stl-unit.d.ts +24 -0
  411. package/dist/mesh/stl-unit.d.ts.map +1 -0
  412. package/dist/mesh/stl-unit.js +17 -0
  413. package/dist/mesh/stl-unit.js.map +1 -0
  414. package/dist/mesh/threemf-bambu.d.ts +142 -0
  415. package/dist/mesh/threemf-bambu.d.ts.map +1 -0
  416. package/dist/mesh/threemf-bambu.js +334 -0
  417. package/dist/mesh/threemf-bambu.js.map +1 -0
  418. package/dist/mesh/threemf-loader.d.ts +50 -0
  419. package/dist/mesh/threemf-loader.d.ts.map +1 -0
  420. package/dist/mesh/threemf-loader.js +628 -0
  421. package/dist/mesh/threemf-loader.js.map +1 -0
  422. package/dist/mesh/threemf-view.d.ts +71 -0
  423. package/dist/mesh/threemf-view.d.ts.map +1 -0
  424. package/dist/mesh/threemf-view.js +100 -0
  425. package/dist/mesh/threemf-view.js.map +1 -0
  426. package/dist/mesh/transform.d.ts +2 -2
  427. package/dist/mesh/transform.d.ts.map +1 -1
  428. package/dist/mesh/transform.js +3 -3
  429. package/dist/mesh/transform.js.map +1 -1
  430. package/dist/mesh/types.d.ts +1 -1
  431. package/dist/mesh/types.d.ts.map +1 -1
  432. package/dist/mesh/types.js.map +1 -1
  433. package/dist/node-host/cli.d.ts +44 -6
  434. package/dist/node-host/cli.d.ts.map +1 -1
  435. package/dist/node-host/cli.js +127 -50
  436. package/dist/node-host/cli.js.map +1 -1
  437. package/dist/node-host/font-family-index.d.ts +93 -0
  438. package/dist/node-host/font-family-index.d.ts.map +1 -0
  439. package/dist/node-host/font-family-index.js +273 -0
  440. package/dist/node-host/font-family-index.js.map +1 -0
  441. package/dist/node-host/fs-asset-resolver.d.ts +8 -3
  442. package/dist/node-host/fs-asset-resolver.d.ts.map +1 -1
  443. package/dist/node-host/fs-asset-resolver.js +13 -5
  444. package/dist/node-host/fs-asset-resolver.js.map +1 -1
  445. package/dist/node-host/index.d.ts +8 -0
  446. package/dist/node-host/index.d.ts.map +1 -1
  447. package/dist/node-host/index.js +1 -0
  448. package/dist/node-host/index.js.map +1 -1
  449. package/dist/node-host/node-font-provider.d.ts +28 -0
  450. package/dist/node-host/node-font-provider.d.ts.map +1 -1
  451. package/dist/node-host/node-font-provider.js +49 -0
  452. package/dist/node-host/node-font-provider.js.map +1 -1
  453. package/dist/node.d.ts +1 -0
  454. package/dist/node.d.ts.map +1 -1
  455. package/dist/node.js +1 -0
  456. package/dist/node.js.map +1 -1
  457. package/dist/occt-kernel/occt-primitives.d.ts.map +1 -1
  458. package/dist/occt-kernel/occt-primitives.js +35 -2
  459. package/dist/occt-kernel/occt-primitives.js.map +1 -1
  460. package/dist/occt-kernel/occtKernel.d.ts +18 -13
  461. package/dist/occt-kernel/occtKernel.d.ts.map +1 -1
  462. package/dist/occt-kernel/occtKernel.js +20 -31
  463. package/dist/occt-kernel/occtKernel.js.map +1 -1
  464. package/dist/occt-kernel/stepColorParser.d.ts +18 -0
  465. package/dist/occt-kernel/stepColorParser.d.ts.map +1 -1
  466. package/dist/occt-kernel/stepColorParser.js +38 -0
  467. package/dist/occt-kernel/stepColorParser.js.map +1 -1
  468. package/dist/occt-kernel/topologyExt.d.ts +1 -1
  469. package/dist/occt-kernel/topologyExt.d.ts.map +1 -1
  470. package/dist/occt-kernel/topologyExt.js +8 -6
  471. package/dist/occt-kernel/topologyExt.js.map +1 -1
  472. package/dist/primitives/text/cjk-font.d.ts +2 -15
  473. package/dist/primitives/text/cjk-font.d.ts.map +1 -1
  474. package/dist/primitives/text/cjk-font.js +13 -1
  475. package/dist/primitives/text/cjk-font.js.map +1 -1
  476. package/dist/runtime-state.d.ts +103 -9
  477. package/dist/runtime-state.d.ts.map +1 -1
  478. package/dist/runtime-state.js +95 -2
  479. package/dist/runtime-state.js.map +1 -1
  480. package/dist/sdk.d.ts +4 -4
  481. package/dist/sdk.d.ts.map +1 -1
  482. package/dist/sdk.js +6 -6
  483. package/dist/sdk.js.map +1 -1
  484. package/dist/shape.d.ts +97 -2
  485. package/dist/shape.d.ts.map +1 -1
  486. package/dist/shape.js +126 -1
  487. package/dist/shape.js.map +1 -1
  488. package/dist/tolerance.d.ts +38 -0
  489. package/dist/tolerance.d.ts.map +1 -0
  490. package/dist/tolerance.js +40 -0
  491. package/dist/tolerance.js.map +1 -0
  492. package/dist/topology/naming/lineage.d.ts +6 -0
  493. package/dist/topology/naming/lineage.d.ts.map +1 -1
  494. package/dist/topology/naming/lineage.js +8 -0
  495. package/dist/topology/naming/lineage.js.map +1 -1
  496. package/dist/topology/naming/resolve-edge.d.ts +20 -1
  497. package/dist/topology/naming/resolve-edge.d.ts.map +1 -1
  498. package/dist/topology/naming/resolve-edge.js +54 -20
  499. package/dist/topology/naming/resolve-edge.js.map +1 -1
  500. package/dist/topology/naming/score.js +3 -3
  501. package/dist/topology/naming/score.js.map +1 -1
  502. package/dist/units.d.ts +248 -0
  503. package/dist/units.d.ts.map +1 -0
  504. package/dist/units.js +397 -0
  505. package/dist/units.js.map +1 -0
  506. package/dist/weapp.d.ts +6 -2
  507. package/dist/weapp.d.ts.map +1 -1
  508. package/dist/weapp.js +7 -1
  509. package/dist/weapp.js.map +1 -1
  510. package/package.json +28 -3
@@ -1 +1 @@
1
- {"version":3,"file":"pen-sketcher.js","sourceRoot":"","sources":["../../src/geometry2d/pen-sketcher.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * geometry2d — 2D `BaseSketcher2d` pen (C1), adapted for the pure-object base.\n *\n * Ported from brepjs `2d/blueprints/baseSketcher2d.ts` (Apache-2.0).\n *\n * The brepjs original accumulates kernel-backed `Curve2D` handles (mutable:\n * `delete`/`reverse`/`tangentAt`). Here those are replaced by the pure\n * `Curve2dObj` base of `geometry2d/curve2d` — each pen method emits a plain\n * object, the pointer advances by plain arithmetic, and end-tangent lookup maps\n * to `tangentCurve2d`. `curves()`/`close()` return the ordered `Curve2dObj[]`,\n * which feeds `Blueprint` and the 2D→3D placement pipeline.\n *\n * Not-yet-ported (honest `throw`s, per the D-group/port plan):\n * · `ellipse*` — needs the SVG ellipse→arc helper;\n * · `smoothSplit*` — needs the spline control helper;\n * · `customCorner`/`closeWithMirror` — needs 2D corner/mirror ops (D-group).\n *\n * @module\n */\n\nimport {\n makeLine2d,\n makeArc2dThreePoints,\n makeArc2dTangent,\n makeBezier2d,\n tangentCurve2d,\n type Curve2dObj,\n} from './curve2d'\nimport { makeEllipseArcFromSvgParams, normalizeEllipseRadii } from './svg-ellipse'\nimport { distance2d, normalize2d, polarAngle2d, polarToCartesian, samePoint } from './point'\n\nconst DEG2RAD = Math.PI / 180\nconst RAD2DEG = 180 / Math.PI\n\n/** A `[x, y]` 2D point (plain tuple). */\nexport type Point2 = [number, number]\n\n/** Options accepted by the spline methods. */\nexport type SplineOptions = {\n /** Explicit start tangent; defaults to `[1,0]` or the previous segment's end tangent. */\n startTangent?: Point2\n /** Explicit end tangent, or the literal `'symmetric'` (mirror of the start tangent). */\n endTangent?: Point2 | 'symmetric'\n /** Start control-length factor. */\n startFactor?: number\n /** End control-length factor. */\n endFactor?: number\n}\n\n/** Corner modes accepted by `customCorner` (D-group, not yet ported). */\nexport type CornerMode = 'fillet' | 'chamfer' | 'dogbone'\n\n/** Guard-style error: throw so callers immediately see pen misuse. */\nfunction bug(caller: string, message: string): never {\n throw new Error(`[geometry2d/pen] ${caller}: ${message}`)\n}\n\n/** Non-normalized tangent at the end of a curve (t=1 within its direct parameter space). */\nfunction endTangent(c: Curve2dObj): [number, number] {\n return tangentCurve2d(c, 1)\n}\n\n/**\n * Base class for 2D flood-pen sketchers that accumulate `Curve2dObj` segments.\n *\n * Provides the shared pen-drawing API (lines, arcs, beziers) used by the\n * drawing DSL. Subclasses implement `close()` to package the accumulated curves\n * as a `Blueprint` or plain curve list.\n */\nexport class BaseSketcher2d {\n /** Current pen position `[x, y]`. */\n pointer: Point2\n /** The starting point of the pen run. */\n firstPoint: Point2\n /** Accumulated segments, in draw order. */\n pendingCurves: Curve2dObj[]\n /** A queued one-shot corner transform (D-group; unused until ported). */\n _nextCorner: ((a: Curve2dObj, b: Curve2dObj) => Curve2dObj[]) | null\n\n constructor(origin: Point2 = [0, 0]) {\n this.pointer = origin\n this.firstPoint = origin\n this.pendingCurves = []\n this._nextCorner = null\n }\n\n /**\n * The most recently drawn curve, or `null`.\n * @returns the last drawn curve, or `null` when nothing has been drawn.\n */\n _lastCurve(): Curve2dObj | null {\n return this.pendingCurves.length ? this.pendingCurves[this.pendingCurves.length - 1]! : null\n }\n\n /**\n * Fetch the last drawn curve, or throw a misuse error.\n * @param caller - the calling method name (for the error message).\n * @returns the last curve.\n */\n _requireLastCurve(caller: string): Curve2dObj {\n const c = this._lastCurve()\n if (!c) bug(caller, 'You need a previous curve to continue')\n return c\n }\n\n /**\n * Add a relative offset to the current pointer.\n * @param xDist - relative x distance.\n * @param yDist - relative y distance.\n * @returns the resulting absolute point.\n */\n _resolveRelative(xDist: number, yDist: number): Point2 {\n return [this.pointer[0] + xDist, this.pointer[1] + yDist]\n }\n\n /**\n * Save a curve and advance the pen to `end`.\n * @param curve - the curve to record.\n * @param end - the new pen position.\n * @returns this pen, for chaining.\n */\n _saveCurveAndAdvance(curve: Curve2dObj, end: Point2): this {\n this.saveCurve(curve)\n this.pointer = end\n return this\n }\n\n /** The current pen position `[x, y]`. */\n get penPosition(): Point2 {\n return this.pointer\n }\n\n /** The current pen angle in degrees (direction of the last segment's end tangent). */\n get penAngle(): number {\n const last = this._lastCurve()\n if (!last) return 0\n const [dx, dy] = endTangent(last)\n return Math.atan2(dy, dx) * RAD2DEG\n }\n\n /**\n * Move the pen to an absolute position before any segment is drawn.\n * @param point - the absolute start position.\n * @returns this pen, for chaining.\n */\n movePointerTo(point: Point2): this {\n if (this.pendingCurves.length) bug('movePointerTo', 'You can only move the pointer if there is no curve defined')\n this.pointer = point\n this.firstPoint = point\n return this\n }\n\n /**\n * Record a segment, applying a queued corner transform if present.\n * @param curve - the curve to record.\n */\n saveCurve(curve: Curve2dObj): void {\n if (!this._nextCorner) {\n this.pendingCurves.push(curve)\n return\n }\n const previous = this.pendingCurves.pop()\n if (!previous) bug('saveCurve', 'No previous curve available for custom corner')\n const cornered = this._nextCorner!(previous, curve)\n this.pendingCurves.push(...cornered)\n this._nextCorner = null\n }\n\n /**\n * Draw a straight line to an absolute point.\n * @param point - the absolute end point.\n * @returns this pen, for chaining.\n */\n lineTo(point: Point2): this {\n return this._saveCurveAndAdvance(makeLine2d(this.pointer[0], this.pointer[1], point[0], point[1]), point)\n }\n\n /**\n * Draw a straight line by relative horizontal and vertical distances.\n * @param x - relative x distance.\n * @param y - relative y distance.\n * @returns this pen, for chaining.\n */\n line(x: number, y: number): this {\n return this.lineTo(this._resolveRelative(x, y))\n }\n\n /**\n * Draw a vertical line of the given signed distance.\n * @param distance - signed vertical distance.\n * @returns this pen, for chaining.\n */\n vLine(distance: number): this {\n return this.line(0, distance)\n }\n\n /**\n * Draw a horizontal line of the given signed distance.\n * @param distance - signed horizontal distance.\n * @returns this pen, for chaining.\n */\n hLine(distance: number): this {\n return this.line(distance, 0)\n }\n\n /**\n * Draw a vertical line to an absolute Y coordinate.\n * @param yPos - the absolute y.\n * @returns this pen, for chaining.\n */\n vLineTo(yPos: number): this {\n return this.lineTo([this.pointer[0], yPos])\n }\n\n /**\n * Draw a horizontal line to an absolute X coordinate.\n * @param xPos - the absolute x.\n * @returns this pen, for chaining.\n */\n hLineTo(xPos: number): this {\n return this.lineTo([xPos, this.pointer[1]])\n }\n\n /**\n * Draw a line to an absolute point in polar form.\n * @param polar - `[radius, angleDeg]`.\n * @returns this pen, for chaining.\n */\n polarLineTo(polar: Point2): this {\n const [x, y] = polarToCartesian(polar[0], polar[1] * DEG2RAD)\n return this.lineTo([x, y])\n }\n\n /**\n * Draw a line in polar relative form.\n * @param distance - radial distance.\n * @param angle - angle in degrees.\n * @returns this pen, for chaining.\n */\n polarLine(distance: number, angle: number): this {\n const [x, y] = polarToCartesian(distance, angle * DEG2RAD)\n return this.line(x, y)\n }\n\n /**\n * Draw a line tangent to the previous curve.\n * @param distance - distance along the tangent.\n * @returns this pen, for chaining.\n */\n tangentLine(distance: number): this {\n const previous = this._requireLastCurve('tangentLine')\n const [dx, dy] = normalize2d(endTangent(previous))\n return this.line(dx * distance, dy * distance)\n }\n\n /**\n * Draw a circular arc through a mid-point to an absolute end point.\n * @param end - the absolute end point.\n * @param midPoint - a point on the arc.\n * @returns this pen, for chaining.\n */\n threePointsArcTo(end: Point2, midPoint: Point2): this {\n const curve = makeArc2dThreePoints(this.pointer[0], this.pointer[1], midPoint[0], midPoint[1], end[0], end[1])\n return this._saveCurveAndAdvance(curve, end)\n }\n\n /**\n * Draw a circular arc through a via-point to an end point, both relative.\n * @param x - relative x end distance.\n * @param y - relative y end distance.\n * @param viaX - relative via x distance.\n * @param viaY - relative via y distance.\n * @returns this pen, for chaining.\n */\n threePointsArc(x: number, y: number, viaX: number, viaY: number): this {\n const [ax, ay] = this.pointer\n return this.threePointsArcTo([ax + x, ay + y], [ax + viaX, ay + viaY])\n }\n\n /**\n * Draw a circular arc to an absolute end, bulging `sagitta` off the chord.\n * @param end - the absolute end point.\n * @param sagitta - the sagitta (signed bulge off the chord).\n * @returns this pen, for chaining.\n */\n sagittaArcTo(end: Point2, sagitta: number): this {\n const [x0, y0] = this.pointer\n const [x1, y1] = end\n const midX = (x0 + x1) / 2\n const midY = (y0 + y1) / 2\n const sX = -(y1 - y0)\n const sY = x1 - x0\n const sLen = Math.hypot(sX, sY)\n if (sLen < 1e-12) bug('sagittaArcTo', 'Start and end points cannot be identical')\n const sag: Point2 = [midX + (sX / sLen) * sagitta, midY + (sY / sLen) * sagitta]\n return this.threePointsArcTo(end, sag)\n }\n\n /**\n * Draw a circular arc to a relative end, bulging `sagitta`.\n * @param x - relative x end distance.\n * @param y - relative y end distance.\n * @param sagitta - the sagitta.\n * @returns this pen, for chaining.\n */\n sagittaArc(x: number, y: number, sagitta: number): this {\n return this.sagittaArcTo(this._resolveRelative(x, y), sagitta)\n }\n\n /**\n * Draw a vertical sagitta arc of `distance` and `sagitta`.\n * @param distance - vertical distance.\n * @param sagitta - the sagitta.\n * @returns this pen, for chaining.\n */\n vSagittaArc(distance: number, sagitta: number): this {\n return this.sagittaArc(0, distance, sagitta)\n }\n\n /**\n * Draw a horizontal sagitta arc of `distance` and `sagitta`.\n * @param distance - horizontal distance.\n * @param sagitta - the sagitta.\n * @returns this pen, for chaining.\n */\n hSagittaArc(distance: number, sagitta: number): this {\n return this.sagittaArc(distance, 0, sagitta)\n }\n\n /**\n * Draw a circular arc to an absolute end via a bulge factor.\n * @param end - the absolute end point.\n * @param bulge - the bulge factor.\n * @returns this pen, for chaining.\n */\n bulgeArcTo(end: Point2, bulge: number): this {\n if (!bulge) return this.lineTo(end)\n const halfChord = distance2d(this.pointer, end) / 2\n return this.sagittaArcTo(end, -bulge * halfChord)\n }\n\n /**\n * Draw a circular arc to a relative end via a bulge factor.\n * @param x - horizontal end distance.\n * @param y - vertical end distance.\n * @param bulge - the bulge factor.\n * @returns this pen, for chaining.\n */\n bulgeArc(x: number, y: number, bulge: number): this {\n return this.bulgeArcTo(this._resolveRelative(x, y), bulge)\n }\n\n /**\n * Draw a vertical bulge arc.\n * @param distance - vertical distance.\n * @param bulge - the bulge factor.\n * @returns this pen, for chaining.\n */\n vBulgeArc(distance: number, bulge: number): this {\n return this.bulgeArc(0, distance, bulge)\n }\n\n /**\n * Draw a horizontal bulge arc.\n * @param distance - horizontal distance.\n * @param bulge - the bulge factor.\n * @returns this pen, for chaining.\n */\n hBulgeArc(distance: number, bulge: number): this {\n return this.bulgeArc(distance, 0, bulge)\n }\n\n /**\n * Draw a circular arc tangent to the previous curve, ending at `end`.\n * @param end - the absolute end point.\n * @returns this pen, for chaining.\n */\n tangentArcTo(end: Point2): this {\n const previous = this._requireLastCurve('tangentArc')\n const arc = makeArc2dTangent(this.pointer[0], this.pointer[1], ...endTangent(previous), end[0], end[1])\n return this._saveCurveAndAdvance(arc, end)\n }\n\n /**\n * Draw a tangent arc to a relative offset.\n * @param x - horizontal end distance.\n * @param y - vertical end distance.\n * @returns this pen, for chaining.\n */\n tangentArc(x: number, y: number): this {\n return this.tangentArcTo(this._resolveRelative(x, y))\n }\n\n /**\n * Draw an elliptical arc (SVG-style endpoint parameters).\n * @param end - the absolute end point.\n * @param horizontalRadius - the horizontal radius.\n * @param verticalRadius - the vertical radius.\n * @param rotation - rotation in degrees.\n * @param longAxis - SVG large-arc flag.\n * @param sweep - SVG sweep flag.\n * @returns this pen, for chaining.\n */\n ellipseTo(end: Point2, horizontalRadius: number, verticalRadius: number, rotation = 0, longAxis = false, sweep = false): this {\n const { majorRadius, minorRadius, rotationAngle } = normalizeEllipseRadii(horizontalRadius, verticalRadius, rotation)\n const arc = makeEllipseArcFromSvgParams(this.pointer, end, majorRadius, minorRadius, rotationAngle, longAxis, sweep)\n return this._saveCurveAndAdvance(arc, end)\n }\n\n /**\n * Draw an elliptical arc to a relative end point.\n * @param x - relative x end distance.\n * @param y - relative y end distance.\n * @param horizontalRadius - the horizontal radius.\n * @param verticalRadius - the vertical radius.\n * @param rotation - rotation in degrees.\n * @param longAxis - SVG large-arc flag.\n * @param sweep - SVG sweep flag.\n * @returns this pen, for chaining.\n */\n ellipse(x: number, y: number, horizontalRadius: number, verticalRadius: number, rotation = 0, longAxis = false, sweep = false): this {\n return this.ellipseTo(this._resolveRelative(x, y), horizontalRadius, verticalRadius, rotation, longAxis, sweep)\n }\n\n /**\n * Draw a half-ellipse arc to an absolute end point with a given minor radius.\n * @param end - the absolute end point.\n * @param minorRadius - the minor radius.\n * @param sweep - SVG sweep flag.\n * @returns this pen, for chaining.\n */\n halfEllipseTo(end: Point2, minorRadius: number, sweep = false): this {\n const angle = polarAngle2d(end, this.pointer)\n const dist = distance2d(end, this.pointer)\n return this.ellipseTo(end, dist / 2, minorRadius, angle * RAD2DEG, true, sweep)\n }\n\n /**\n * Draw a half-ellipse arc to a relative end point with a given minor radius.\n * @param x - relative x end distance.\n * @param y - relative y end distance.\n * @param minorRadius - the minor radius.\n * @param sweep - SVG sweep flag.\n * @returns this pen, for chaining.\n */\n halfEllipse(x: number, y: number, minorRadius: number, sweep = false): this {\n return this.halfEllipseTo(this._resolveRelative(x, y), minorRadius, sweep)\n }\n\n /**\n * Draw a Bezier curve to an absolute end through control points.\n * @param end - the absolute end point.\n * @param controlPoints - one control point (quadratic) or two (cubic).\n * @returns this pen, for chaining.\n */\n bezierCurveTo(end: Point2, controlPoints: Point2[]): this {\n const poles: [number, number][] = [[this.pointer[0], this.pointer[1]], ...controlPoints, [end[0], end[1]]]\n return this._saveCurveAndAdvance(makeBezier2d(poles), end)\n }\n\n /**\n * Draw a quadratic Bezier to an absolute end point.\n * @param end - the absolute end point.\n * @param controlPoint - the single control point.\n * @returns this pen, for chaining.\n */\n quadraticBezierCurveTo(end: Point2, controlPoint: Point2): this {\n return this.bezierCurveTo(end, [controlPoint])\n }\n\n /**\n * Draw a cubic Bezier to an absolute end point.\n * @param end - the absolute end point.\n * @param startControlPoint - the start control point.\n * @param endControlPoint - the end control point.\n * @returns this pen, for chaining.\n */\n cubicBezierCurveTo(end: Point2, startControlPoint: Point2, endControlPoint: Point2): this {\n return this.bezierCurveTo(end, [startControlPoint, endControlPoint])\n }\n\n /**\n * Draw a smooth cubic spline to an absolute end point.\n * @param _end - the absolute end point.\n * @param _config - spline smoothing options.\n * @returns this pen, for chaining.\n * @throws not yet ported (needs the spline control helper).\n */\n smoothSplineTo(_end: Point2, _config?: SplineOptions): this {\n throw new Error('[geometry2d/pen] smoothSplineTo is not yet ported')\n }\n\n /**\n * Draw a smooth cubic spline to a relative end point.\n * @param _x - relative x end distance.\n * @param _y - relative y end distance.\n * @param _config - spline smoothing options.\n * @returns this pen, for chaining.\n * @throws not yet ported (needs the spline control helper).\n */\n smoothSpline(_x: number, _y: number, _config?: SplineOptions): this {\n throw new Error('[geometry2d/pen] smoothSpline is not yet ported')\n }\n\n /**\n * Change the corner between the previous and next segment.\n * @param _radius - the corner radius.\n * @param _mode - the corner kind.\n * @returns this pen, for chaining.\n * @throws D-group corner ops (fillet/chamfer/dogbone) are not yet ported.\n */\n customCorner(_radius: number, _mode: CornerMode = 'fillet'): this {\n throw new Error('[geometry2d/pen] customCorner: D-group corner ops are not yet ported')\n }\n\n /**\n * Close the sketch by drawing a final segment back to the start.\n * @returns the closed, ordered curve list.\n */\n close(): Curve2dObj[] {\n if (!samePoint(this.pointer, this.firstPoint)) {\n this.lineTo(this.firstPoint)\n }\n return [...this.pendingCurves]\n }\n\n /**\n * Close by mirroring the drawn segments across the start→current chord.\n * @returns the closed, mirror-augmented curve list.\n * @throws not yet ported (needs the curve-mirror transform).\n */\n closeWithMirror(): Curve2dObj[] {\n throw new Error('[geometry2d/pen] closeWithMirror is not yet ported')\n }\n\n /**\n * The ordered drawn curve list (no implicit close).\n * @returns the drawn segments in draw order.\n */\n curves(): Curve2dObj[] {\n return [...this.pendingCurves]\n }\n}"]}
1
+ {"version":3,"file":"pen-sketcher.js","sourceRoot":"","sources":["../../src/geometry2d/pen-sketcher.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * geometry2d — 2D `BaseSketcher2d` pen (C1), adapted for the pure-object base.\n *\n * Ported from brepjs `2d/blueprints/baseSketcher2d.ts` (Apache-2.0).\n *\n * The brepjs original accumulates kernel-backed `Curve2D` handles (mutable:\n * `delete`/`reverse`/`tangentAt`). Here those are replaced by the pure\n * `Curve2dObj` base of `geometry2d/curve2d` — each pen method emits a plain\n * object, the pointer advances by plain arithmetic, and end-tangent lookup maps\n * to `tangentCurve2d`. `curves()`/`close()` return the ordered `Curve2dObj[]`,\n * which feeds `Blueprint` and the 2D→3D placement pipeline.\n *\n * Not-yet-ported (honest `throw`s, per the D-group/port plan):\n * · `ellipse*` — needs the SVG ellipse→arc helper;\n * · `smoothSplit*` — needs the spline control helper;\n * · `customCorner`/`closeWithMirror` — needs 2D corner/mirror ops (D-group).\n *\n * @module\n */\n\nimport {\n makeLine2d,\n makeArc2dThreePoints,\n makeArc2dTangent,\n makeBezier2d,\n tangentCurve2d,\n type Curve2dObj,\n} from './curve2d'\nimport { makeEllipseArcFromSvgParams, normalizeEllipseRadii } from './svg-ellipse'\nimport { distance2d, normalize2d, polarAngle2d, polarToCartesian, samePoint } from './point'\n\nconst DEG2RAD = Math.PI / 180\nconst RAD2DEG = 180 / Math.PI\n\n/** A `[x, y]` 2D point (plain tuple). */\nexport type Point2 = [number, number]\n\n/** Options accepted by the spline methods. */\nexport type SplineOptions = {\n /** Explicit start tangent; defaults to `[1,0]` or the previous segment's end tangent. */\n startTangent?: Point2\n /** Explicit end tangent, or the literal `'symmetric'` (mirror of the start tangent). */\n endTangent?: Point2 | 'symmetric'\n /** Start control-length factor. */\n startFactor?: number\n /** End control-length factor. */\n endFactor?: number\n}\n\n/** Corner modes accepted by `customCorner` (D-group, not yet ported). */\nexport type CornerMode = 'fillet' | 'chamfer' | 'dogbone'\n\n/** Guard-style error: throw so callers immediately see pen misuse. */\nfunction bug(caller: string, message: string): never {\n throw new Error(`[geometry2d/pen] ${caller}: ${message}`)\n}\n\n/** Non-normalized tangent at the end of a curve (t=1 within its direct parameter space). */\nfunction endTangent(c: Curve2dObj): [number, number] {\n return tangentCurve2d(c, 1)\n}\n\n/**\n * Base class for 2D flood-pen sketchers that accumulate `Curve2dObj` segments.\n *\n * Provides the shared pen-drawing API (lines, arcs, beziers) used by the\n * drawing DSL. Subclasses implement `close()` to package the accumulated curves\n * as a `Blueprint` or plain curve list.\n */\nexport class BaseSketcher2d {\n /** Current pen position `[x, y]`. */\n pointer: Point2\n /** The starting point of the pen run. */\n firstPoint: Point2\n /** Accumulated segments, in draw order. */\n pendingCurves: Curve2dObj[]\n /** A queued one-shot corner transform (D-group; unused until ported). */\n _nextCorner: ((a: Curve2dObj, b: Curve2dObj) => Curve2dObj[]) | null\n\n constructor(origin: Point2 = [0, 0]) {\n this.pointer = origin\n this.firstPoint = origin\n this.pendingCurves = []\n this._nextCorner = null\n }\n\n /**\n * The most recently drawn curve, or `null`.\n * @returns the last drawn curve, or `null` when nothing has been drawn.\n */\n _lastCurve(): Curve2dObj | null {\n return this.pendingCurves.length ? this.pendingCurves[this.pendingCurves.length - 1]! : null\n }\n\n /**\n * Fetch the last drawn curve, or throw a misuse error.\n * @param caller - the calling method name (for the error message).\n * @returns the last curve.\n */\n _requireLastCurve(caller: string): Curve2dObj {\n const c = this._lastCurve()\n if (!c) bug(caller, 'You need a previous curve to continue')\n return c\n }\n\n /**\n * Add a relative offset to the current pointer.\n * @param xDist - relative x distance.\n * @param yDist - relative y distance.\n * @returns the resulting absolute point.\n */\n _resolveRelative(xDist: number, yDist: number): Point2 {\n return [this.pointer[0] + xDist, this.pointer[1] + yDist]\n }\n\n /**\n * Save a curve and advance the pen to `end`.\n * @param curve - the curve to record.\n * @param end - the new pen position.\n * @returns this pen, for chaining.\n */\n _saveCurveAndAdvance(curve: Curve2dObj, end: Point2): this {\n this.saveCurve(curve)\n this.pointer = end\n return this\n }\n\n /** The current pen position `[x, y]`. */\n get penPosition(): Point2 {\n return this.pointer\n }\n\n /** The current pen angle in degrees (direction of the last segment's end tangent). */\n get penAngle(): number {\n const last = this._lastCurve()\n if (!last) return 0\n const [dx, dy] = endTangent(last)\n return Math.atan2(dy, dx) * RAD2DEG\n }\n\n /**\n * Move the pen to an absolute position before any segment is drawn.\n * @param point - the absolute start position.\n * @returns this pen, for chaining.\n */\n movePointerTo(point: Point2): this {\n if (this.pendingCurves.length) bug('movePointerTo', 'You can only move the pointer if there is no curve defined')\n this.pointer = point\n this.firstPoint = point\n return this\n }\n\n /**\n * Record a segment, applying a queued corner transform if present.\n * @param curve - the curve to record.\n */\n saveCurve(curve: Curve2dObj): void {\n if (!this._nextCorner) {\n this.pendingCurves.push(curve)\n return\n }\n const previous = this.pendingCurves.pop()\n if (!previous) bug('saveCurve', 'No previous curve available for custom corner')\n const cornered = this._nextCorner!(previous, curve)\n this.pendingCurves.push(...cornered)\n this._nextCorner = null\n }\n\n /**\n * Draw a straight line to an absolute point.\n * @param point - the absolute end point.\n * @returns this pen, for chaining.\n */\n lineTo(point: Point2): this {\n return this._saveCurveAndAdvance(makeLine2d(this.pointer[0], this.pointer[1], point[0], point[1]), point)\n }\n\n /**\n * Draw a straight line by relative horizontal and vertical distances.\n * @param x - relative x distance.\n * @param y - relative y distance.\n * @returns this pen, for chaining.\n */\n line(x: number, y: number): this {\n return this.lineTo(this._resolveRelative(x, y))\n }\n\n /**\n * Draw a vertical line of the given signed distance.\n * @param distance - signed vertical distance.\n * @returns this pen, for chaining.\n */\n vLine(distance: number): this {\n return this.line(0, distance)\n }\n\n /**\n * Draw a horizontal line of the given signed distance.\n * @param distance - signed horizontal distance.\n * @returns this pen, for chaining.\n */\n hLine(distance: number): this {\n return this.line(distance, 0)\n }\n\n /**\n * Draw a vertical line to an absolute Y coordinate.\n * @param yPos - the absolute y.\n * @returns this pen, for chaining.\n */\n vLineTo(yPos: number): this {\n return this.lineTo([this.pointer[0], yPos])\n }\n\n /**\n * Draw a horizontal line to an absolute X coordinate.\n * @param xPos - the absolute x.\n * @returns this pen, for chaining.\n */\n hLineTo(xPos: number): this {\n return this.lineTo([xPos, this.pointer[1]])\n }\n\n /**\n * Draw a whole contour from an explicit point list, in one call.\n *\n * The batched counterpart of a chained `lineTo` run, and the only form that\n * survives the `.fai.js` dialect: the parser caps AST nesting at 100\n * (`SEC_LIMIT`), and a chained call builds a nested\n * `MemberExpression`/`CallExpression` tree whose depth equals the segment count\n * — a contour of a few hundred tessellated points cannot be emitted as\n * `pen.lineTo(a).lineTo(b)…` (measured: a 150-call chain already trips the\n * limit). Handing the points over as ONE array literal keeps the emitted depth\n * constant (array nesting = 2) at any point count.\n *\n * The first point also (re)seats an empty pen, so `firstPoint` keeps its\n * meaning for {@link close} / `movePointerTo`. GOTCHA (2026-09-28):\n * `movePointerTo` refuses to lift the pointer once a curve exists, so ONE pen\n * carries exactly ONE contour — a shape holding many disjoint loops (a rebuilt\n * Draft drawing was measured carrying 12 / 36 / 56 / 61 of them) needs one pen\n * per loop, never one pen with several lifts.\n *\n * @param points - the contour's points in draw order (at least 2).\n * @param close - append a final segment back to `points[0]` (skipped when the\n * run already ended there, mirroring {@link close}).\n * @returns this pen, for chaining.\n */\n polyline(points: Point2[], close = false): this {\n if (points.length < 2) bug('polyline', 'a polyline needs at least two points')\n const start = points[0]!\n if (this.pendingCurves.length === 0) {\n this.pointer = [start[0], start[1]]\n this.firstPoint = this.pointer\n } else if (!samePoint(this.pointer, start)) {\n bug(\n 'polyline',\n 'a run is already in flight — the pen must be sitting on the polyline start (use one pen per contour)',\n )\n }\n for (let i = 1; i < points.length; i++) {\n const p = points[i]!\n this.lineTo([p[0], p[1]])\n }\n if (close && !samePoint(this.pointer, start)) this.lineTo([start[0], start[1]])\n return this\n }\n\n /**\n * Draw a line to an absolute point in polar form.\n * @param polar - `[radius, angleDeg]`.\n * @returns this pen, for chaining.\n */\n polarLineTo(polar: Point2): this {\n const [x, y] = polarToCartesian(polar[0], polar[1] * DEG2RAD)\n return this.lineTo([x, y])\n }\n\n /**\n * Draw a line in polar relative form.\n * @param distance - radial distance.\n * @param angle - angle in degrees.\n * @returns this pen, for chaining.\n */\n polarLine(distance: number, angle: number): this {\n const [x, y] = polarToCartesian(distance, angle * DEG2RAD)\n return this.line(x, y)\n }\n\n /**\n * Draw a line tangent to the previous curve.\n * @param distance - distance along the tangent.\n * @returns this pen, for chaining.\n */\n tangentLine(distance: number): this {\n const previous = this._requireLastCurve('tangentLine')\n const [dx, dy] = normalize2d(endTangent(previous))\n return this.line(dx * distance, dy * distance)\n }\n\n /**\n * Draw a circular arc through a mid-point to an absolute end point.\n * @param end - the absolute end point.\n * @param midPoint - a point on the arc.\n * @returns this pen, for chaining.\n */\n threePointsArcTo(end: Point2, midPoint: Point2): this {\n const curve = makeArc2dThreePoints(this.pointer[0], this.pointer[1], midPoint[0], midPoint[1], end[0], end[1])\n return this._saveCurveAndAdvance(curve, end)\n }\n\n /**\n * Draw a circular arc through a via-point to an end point, both relative.\n * @param x - relative x end distance.\n * @param y - relative y end distance.\n * @param viaX - relative via x distance.\n * @param viaY - relative via y distance.\n * @returns this pen, for chaining.\n */\n threePointsArc(x: number, y: number, viaX: number, viaY: number): this {\n const [ax, ay] = this.pointer\n return this.threePointsArcTo([ax + x, ay + y], [ax + viaX, ay + viaY])\n }\n\n /**\n * Draw a circular arc to an absolute end, bulging `sagitta` off the chord.\n * @param end - the absolute end point.\n * @param sagitta - the sagitta (signed bulge off the chord).\n * @returns this pen, for chaining.\n */\n sagittaArcTo(end: Point2, sagitta: number): this {\n const [x0, y0] = this.pointer\n const [x1, y1] = end\n const midX = (x0 + x1) / 2\n const midY = (y0 + y1) / 2\n const sX = -(y1 - y0)\n const sY = x1 - x0\n const sLen = Math.hypot(sX, sY)\n if (sLen < 1e-12) bug('sagittaArcTo', 'Start and end points cannot be identical')\n const sag: Point2 = [midX + (sX / sLen) * sagitta, midY + (sY / sLen) * sagitta]\n return this.threePointsArcTo(end, sag)\n }\n\n /**\n * Draw a circular arc to a relative end, bulging `sagitta`.\n * @param x - relative x end distance.\n * @param y - relative y end distance.\n * @param sagitta - the sagitta.\n * @returns this pen, for chaining.\n */\n sagittaArc(x: number, y: number, sagitta: number): this {\n return this.sagittaArcTo(this._resolveRelative(x, y), sagitta)\n }\n\n /**\n * Draw a vertical sagitta arc of `distance` and `sagitta`.\n * @param distance - vertical distance.\n * @param sagitta - the sagitta.\n * @returns this pen, for chaining.\n */\n vSagittaArc(distance: number, sagitta: number): this {\n return this.sagittaArc(0, distance, sagitta)\n }\n\n /**\n * Draw a horizontal sagitta arc of `distance` and `sagitta`.\n * @param distance - horizontal distance.\n * @param sagitta - the sagitta.\n * @returns this pen, for chaining.\n */\n hSagittaArc(distance: number, sagitta: number): this {\n return this.sagittaArc(distance, 0, sagitta)\n }\n\n /**\n * Draw a circular arc to an absolute end via a bulge factor.\n * @param end - the absolute end point.\n * @param bulge - the bulge factor.\n * @returns this pen, for chaining.\n */\n bulgeArcTo(end: Point2, bulge: number): this {\n if (!bulge) return this.lineTo(end)\n const halfChord = distance2d(this.pointer, end) / 2\n return this.sagittaArcTo(end, -bulge * halfChord)\n }\n\n /**\n * Draw a circular arc to a relative end via a bulge factor.\n * @param x - horizontal end distance.\n * @param y - vertical end distance.\n * @param bulge - the bulge factor.\n * @returns this pen, for chaining.\n */\n bulgeArc(x: number, y: number, bulge: number): this {\n return this.bulgeArcTo(this._resolveRelative(x, y), bulge)\n }\n\n /**\n * Draw a vertical bulge arc.\n * @param distance - vertical distance.\n * @param bulge - the bulge factor.\n * @returns this pen, for chaining.\n */\n vBulgeArc(distance: number, bulge: number): this {\n return this.bulgeArc(0, distance, bulge)\n }\n\n /**\n * Draw a horizontal bulge arc.\n * @param distance - horizontal distance.\n * @param bulge - the bulge factor.\n * @returns this pen, for chaining.\n */\n hBulgeArc(distance: number, bulge: number): this {\n return this.bulgeArc(distance, 0, bulge)\n }\n\n /**\n * Draw a circular arc tangent to the previous curve, ending at `end`.\n * @param end - the absolute end point.\n * @returns this pen, for chaining.\n */\n tangentArcTo(end: Point2): this {\n const previous = this._requireLastCurve('tangentArc')\n const arc = makeArc2dTangent(this.pointer[0], this.pointer[1], ...endTangent(previous), end[0], end[1])\n return this._saveCurveAndAdvance(arc, end)\n }\n\n /**\n * Draw a tangent arc to a relative offset.\n * @param x - horizontal end distance.\n * @param y - vertical end distance.\n * @returns this pen, for chaining.\n */\n tangentArc(x: number, y: number): this {\n return this.tangentArcTo(this._resolveRelative(x, y))\n }\n\n /**\n * Draw an elliptical arc (SVG-style endpoint parameters).\n * @param end - the absolute end point.\n * @param horizontalRadius - the horizontal radius.\n * @param verticalRadius - the vertical radius.\n * @param rotation - rotation in degrees.\n * @param longAxis - SVG large-arc flag.\n * @param sweep - SVG sweep flag.\n * @returns this pen, for chaining.\n */\n ellipseTo(end: Point2, horizontalRadius: number, verticalRadius: number, rotation = 0, longAxis = false, sweep = false): this {\n const { majorRadius, minorRadius, rotationAngle } = normalizeEllipseRadii(horizontalRadius, verticalRadius, rotation)\n const arc = makeEllipseArcFromSvgParams(this.pointer, end, majorRadius, minorRadius, rotationAngle, longAxis, sweep)\n return this._saveCurveAndAdvance(arc, end)\n }\n\n /**\n * Draw an elliptical arc to a relative end point.\n * @param x - relative x end distance.\n * @param y - relative y end distance.\n * @param horizontalRadius - the horizontal radius.\n * @param verticalRadius - the vertical radius.\n * @param rotation - rotation in degrees.\n * @param longAxis - SVG large-arc flag.\n * @param sweep - SVG sweep flag.\n * @returns this pen, for chaining.\n */\n ellipse(x: number, y: number, horizontalRadius: number, verticalRadius: number, rotation = 0, longAxis = false, sweep = false): this {\n return this.ellipseTo(this._resolveRelative(x, y), horizontalRadius, verticalRadius, rotation, longAxis, sweep)\n }\n\n /**\n * Draw a half-ellipse arc to an absolute end point with a given minor radius.\n * @param end - the absolute end point.\n * @param minorRadius - the minor radius.\n * @param sweep - SVG sweep flag.\n * @returns this pen, for chaining.\n */\n halfEllipseTo(end: Point2, minorRadius: number, sweep = false): this {\n const angle = polarAngle2d(end, this.pointer)\n const dist = distance2d(end, this.pointer)\n return this.ellipseTo(end, dist / 2, minorRadius, angle * RAD2DEG, true, sweep)\n }\n\n /**\n * Draw a half-ellipse arc to a relative end point with a given minor radius.\n * @param x - relative x end distance.\n * @param y - relative y end distance.\n * @param minorRadius - the minor radius.\n * @param sweep - SVG sweep flag.\n * @returns this pen, for chaining.\n */\n halfEllipse(x: number, y: number, minorRadius: number, sweep = false): this {\n return this.halfEllipseTo(this._resolveRelative(x, y), minorRadius, sweep)\n }\n\n /**\n * Draw a Bezier curve to an absolute end through control points.\n * @param end - the absolute end point.\n * @param controlPoints - one control point (quadratic) or two (cubic).\n * @returns this pen, for chaining.\n */\n bezierCurveTo(end: Point2, controlPoints: Point2[]): this {\n const poles: [number, number][] = [[this.pointer[0], this.pointer[1]], ...controlPoints, [end[0], end[1]]]\n return this._saveCurveAndAdvance(makeBezier2d(poles), end)\n }\n\n /**\n * Draw a quadratic Bezier to an absolute end point.\n * @param end - the absolute end point.\n * @param controlPoint - the single control point.\n * @returns this pen, for chaining.\n */\n quadraticBezierCurveTo(end: Point2, controlPoint: Point2): this {\n return this.bezierCurveTo(end, [controlPoint])\n }\n\n /**\n * Draw a cubic Bezier to an absolute end point.\n * @param end - the absolute end point.\n * @param startControlPoint - the start control point.\n * @param endControlPoint - the end control point.\n * @returns this pen, for chaining.\n */\n cubicBezierCurveTo(end: Point2, startControlPoint: Point2, endControlPoint: Point2): this {\n return this.bezierCurveTo(end, [startControlPoint, endControlPoint])\n }\n\n /**\n * Draw a smooth cubic spline to an absolute end point.\n * @param _end - the absolute end point.\n * @param _config - spline smoothing options.\n * @returns this pen, for chaining.\n * @throws not yet ported (needs the spline control helper).\n */\n smoothSplineTo(_end: Point2, _config?: SplineOptions): this {\n throw new Error('[geometry2d/pen] smoothSplineTo is not yet ported')\n }\n\n /**\n * Draw a smooth cubic spline to a relative end point.\n * @param _x - relative x end distance.\n * @param _y - relative y end distance.\n * @param _config - spline smoothing options.\n * @returns this pen, for chaining.\n * @throws not yet ported (needs the spline control helper).\n */\n smoothSpline(_x: number, _y: number, _config?: SplineOptions): this {\n throw new Error('[geometry2d/pen] smoothSpline is not yet ported')\n }\n\n /**\n * Change the corner between the previous and next segment.\n * @param _radius - the corner radius.\n * @param _mode - the corner kind.\n * @returns this pen, for chaining.\n * @throws D-group corner ops (fillet/chamfer/dogbone) are not yet ported.\n */\n customCorner(_radius: number, _mode: CornerMode = 'fillet'): this {\n throw new Error('[geometry2d/pen] customCorner: D-group corner ops are not yet ported')\n }\n\n /**\n * Close the sketch by drawing a final segment back to the start.\n * @returns the closed, ordered curve list.\n */\n close(): Curve2dObj[] {\n if (!samePoint(this.pointer, this.firstPoint)) {\n this.lineTo(this.firstPoint)\n }\n return [...this.pendingCurves]\n }\n\n /**\n * Close by mirroring the drawn segments across the start→current chord.\n * @returns the closed, mirror-augmented curve list.\n * @throws not yet ported (needs the curve-mirror transform).\n */\n closeWithMirror(): Curve2dObj[] {\n throw new Error('[geometry2d/pen] closeWithMirror is not yet ported')\n }\n\n /**\n * The ordered drawn curve list (no implicit close).\n * @returns the drawn segments in draw order.\n */\n curves(): Curve2dObj[] {\n return [...this.pendingCurves]\n }\n}"]}
package/dist/index.d.ts CHANGED
@@ -85,14 +85,18 @@ export type { SelectorManifestInput, PartTopologyInput, AssemblyTopologyResult,
85
85
  export { registerOcctBrepEngine, OCCT_BREP_ENGINE_ID } from './brep/engine/adapters/occt.js';
86
86
  export { registerBrepMockEngine, BREP_MOCK_ENGINE_ID, createBrepMockApi } from './brep/engine/adapters/brep-mock.js';
87
87
  export { registerBrepkitBrepEngine, BREPKIT_BREP_ENGINE_ID, ensureBrepkitDefaultEngine } from './brep/engine/adapters/brepkit.js';
88
+ export { registerBrepkitMeshEngine, BREPKIT_MESH_ENGINE_ID, ensureBrepkitMeshBackend } from './brep/engine/adapters/brepkit.js';
88
89
  export { setBrepkitWasmInitFn, initBrepkitWasm, isBrepkitInitialized } from './brepkit-kernel/brepkitWasm.js';
89
- export { registerBrepEngine, getBrepEngine, hasBrepEngine, getActiveBrepEngineId, registerMeshEngine, getMeshEngine, getActiveMeshEngineId, freezeEngineRegistries, } from './brep/engine/registry.js';
90
+ export { registerBrepEngine, getBrepEngine, hasBrepEngine, getActiveBrepEngineId, registerMeshEngine, getMeshEngine, getActiveMeshEngineId, freezeEngineRegistries, isMeshEngineRegistered, getMeshSolidBackend, } from './brep/engine/registry.js';
90
91
  export type { BrepEngine, BrepEngineProvider, MeshEngine } from './brep/engine/registry.js';
92
+ export { MeshSolidRegistry, normalizeMeshSolid, describeMeshSolid, buildMeshSolidTopology, weldToleranceFor } from './brep/mesh-solid.js';
93
+ export type { MeshSolidBackend, MeshSolidResult, MeshSolidKernelOps, MeshSolidInput, MeshSolidNormalizeOptions, } from './brep/mesh-solid.js';
94
+ export { assertShapeSlotExclusive } from './cad-runtime/backend-dispatch.js';
91
95
  export type { BrepEngineApi } from './brep/engine/primitives.js';
92
96
  export type { BrepHandle, BrepMeshResult, BrepBoundingBox, BrepVec3, BrepCapabilities, BrepEvolutionData, BrepXcafDocument, } from './brep/engine/types.js';
93
97
  export { buildSolidTopologyRuntime } from './brep/brep-topology.js';
94
98
  export type { SolidTopologyResult } from './brep/brep-topology.js';
95
- export { setFontLoader, getFontLoader, loadFont, ensureDefaultFont, getFont, clearFonts } from './brep/text/fontRegistry.js';
99
+ export { setFontLoader, getFontLoader, loadFont, ensureDefaultFont, ensureFont, getFont, clearFonts } from './brep/text/fontRegistry.js';
96
100
  export type { FontLoader } from './brep/text/fontRegistry.js';
97
101
  export { createBrowserPorts } from './browser-host/index.js';
98
102
  export type { CreateBrowserPortsOptions } from './browser-host/index.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -83,12 +83,19 @@ export { registerBrepMockEngine, BREP_MOCK_ENGINE_ID, createBrepMockApi } from '
83
83
  // brepkit 端侧 BREP 引擎(微信小程序等无 OCCT 环境):由宿主注入 wasm init 并抢先注册,
84
84
  // 使 ensureBrepChain 不回退 OCCT。setBrepkitWasmInitFn 注入自定义初始化(如 WXWebAssembly 实例化)。
85
85
  export { registerBrepkitBrepEngine, BREPKIT_BREP_ENGINE_ID, ensureBrepkitDefaultEngine } from './brep/engine/adapters/brepkit.js';
86
+ // brepkit 网格实体后端(网格语义路径;与 BREP 槽独立注册)。装了它,`cad.load`
87
+ // 的 STL/3MF 路径才产出「网格实体 + 近似拓扑」;不装则维持裸网格的历史行为。
88
+ export { registerBrepkitMeshEngine, BREPKIT_MESH_ENGINE_ID, ensureBrepkitMeshBackend } from './brep/engine/adapters/brepkit.js';
86
89
  export { setBrepkitWasmInitFn, initBrepkitWasm, isBrepkitInitialized } from './brepkit-kernel/brepkitWasm.js';
87
- export { registerBrepEngine, getBrepEngine, hasBrepEngine, getActiveBrepEngineId, registerMeshEngine, getMeshEngine, getActiveMeshEngineId, freezeEngineRegistries, } from './brep/engine/registry.js';
90
+ export { registerBrepEngine, getBrepEngine, hasBrepEngine, getActiveBrepEngineId, registerMeshEngine, getMeshEngine, getActiveMeshEngineId, freezeEngineRegistries, isMeshEngineRegistered, getMeshSolidBackend, } from './brep/engine/registry.js';
91
+ // 网格实体(近似拓扑的载体):端口 + 注册表 + 驱动。
92
+ export { MeshSolidRegistry, normalizeMeshSolid, describeMeshSolid, buildMeshSolidTopology, weldToleranceFor } from './brep/mesh-solid.js';
93
+ // 槽位互斥不变量(分派前置校验;缺陷即报错)
94
+ export { assertShapeSlotExclusive } from './cad-runtime/backend-dispatch.js';
88
95
  // ── BREP Topology ──
89
96
  export { buildSolidTopologyRuntime } from './brep/brep-topology.js';
90
97
  // ── Font Registry (for browser host injection) ──
91
- export { setFontLoader, getFontLoader, loadFont, ensureDefaultFont, getFont, clearFonts } from './brep/text/fontRegistry.js';
98
+ export { setFontLoader, getFontLoader, loadFont, ensureDefaultFont, ensureFont, getFont, clearFonts } from './brep/text/fontRegistry.js';
92
99
  // ── L3 Node Host ──
93
100
  // node-host 模块已移�?@faicad/faijs/node 入口,避免浏览器环境静�?import
94
101
  // node-host 模块(含 Node.js 专用代码�?fs/path)导致生产构�?404�?
@@ -101,7 +108,7 @@ export { createBrowserLibLoader, DEFAULT_CDN_BASE } from './cad-runtime/browser-
101
108
  export { BrowserEventSink } from './browser-host/browser-event-sink.js';
102
109
  export { BrowserFontProvider } from './browser-host/browser-font-provider.js';
103
110
  export { FetchAssetResolver } from './browser-host/fetch-asset-resolver.js';
104
- // ── L3 API 面(原 packages/stdlib 迁入,P6/D1)──
111
+ // ── L3 API 面(api/ 层)──
105
112
  // P23 主导出切换(§4.2 / Q1):`export * from './api/index.js'` 现在同时带来
106
113
  // ① faijs 特有 dual op(mesh+brep 双路径,D11 双形态归一);
107
114
  // ② 生成脚本面 op(`api/generated/script-face.ts`,compatOp(projectBrepOp(…)) 包装的
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @faicad/faijs �?Faicad CAD execution engine\n *\n * 公开 API 统一入口。所有导出按层组织:\n * - L0 文本层:parser / codegen / symbol-table / types\n * - L1 几何执行层:BREP ops / Shape / 导出\n * - L1 Mesh 执行层:cad API\n * - L1 Boolean/CSG 辅助:cross-section / deriveNormals / extrude-helpers / joinery-shapes\n * - L1 Primitives:geometry / screw / svg-extrude / text / types\n * - L1 SDF:sdf-runner / templates / types\n * - L1 Knurl:KnurlGenerator / subdivision / textureLoader\n * - L1 Topology:build-face-ids / build-selector-runtime / types\n * - L2 编排层:CadRuntime / HostPorts\n * - L3 Node Host:createNodePorts / CLI\n * - OCCT Kernel:initOcctWasm / getKernel / setOcctWasmInitFn / ...\n * - CSG Backend:setCsgBackend / geoToManifoldMesh / ...\n */\n\n// ── 共享面(env-agnostic:identity + runtime-state + lang/*)──\n// 手写清单已收敛:三处 umbrella(index/browser/weapp)统一 re-export,防漂移。\nexport * from './env-agnostic'\n\n// ── L1 几何执行 ──\nexport type { Shape } from './mesh/types'\nexport type { BrepChainState } from './brep/brep-chain'\nexport {\n createBrepChainState, initBrepChainState, releaseBrepChainState,\n isCadFormat,\n} from './brep/brep-chain'\nexport {\n solidToShape, getSolidBoundingBox,\n translateBrep, rotateBrep, scaleBrep,\n fuseBrep, cutBrep, commonBrep,\n drillBrep, splitBrep, extrudeBrep,\n loadBrep, matrixToArray,\n} from './brep'\nexport type { DrillBrepParams, SplitBrepParams, SplitBrepResult, ExtrudeBrepParams } from './brep'\nexport { buildStlBufferFromMesh } from './brep/export/stl'\nexport { exportStepFromSolid, exportStepFromSolids } from './brep/export/step'\nexport type { StepExportEntry } from './brep/export/step'\n\n// ── L1 Mesh ──\nexport { cad } from './mesh'\n// 宿主注入的 mesh 装饰几何(cad.engrave 的文字/SVG 几何链在 @faicad/faijs-extra)\nexport { setEngraveDecorationProvider, getEngraveDecorationProvider } from './mesh/decoration-provider'\nexport type { EngraveDecorationProvider, EngraveDecorationParams } from './mesh/decoration-provider'\nexport { setManifoldWasmUrl, getManifoldWasmUrl, getManifoldModule } from './mesh/manifold-loader'\nexport type {\n BoundingBox, FaceDescriptor,\n BoxParams, SphereParams, CylinderParams, ConeParams, WedgeParams,\n TextParams, SvgExtrudeParams, SdfParams,\n DrillParams, ExtrudeParams, EngraveParams, KnurlParams,\n SplitPlane, SplitResult,\n} from './mesh/types'\nexport { NRAD_DEFAULT, NRAD_MIN, NRAD_MAX, clampNRad } from './mesh/types'\nexport { faceAt } from './mesh/query'\n\n// ── L1 Boolean/CSG 辅助 ──\nexport { computeSection, buildExtrudedProfile } from './boolean/cross-section'\nexport { manifoldToMeshData, weldPositionsWorker, dovetailBooleanSplit, dowelOrTenonBooleanSplit } from './boolean/csg-core'\nexport { deriveNormals } from './boolean/deriveNormals'\nexport { buildExtrudeParts, makeWorldPlane } from './boolean/extrude-helpers'\nexport type { ExtrudeParts, ExtrudeOffsetMode } from './boolean/extrude-helpers'\nexport {\n buildWedgeGeometry, buildDowelGeometry, buildStraightTenonGeometry,\n} from './boolean/joinery-shapes'\nexport type { JoineryMeshData } from './boolean/joinery-shapes'\n\n// ── CSG Backend ──\nexport { setCsgBackend } from './boolean/csg-backend'\nexport { geoToManifoldMesh, manifoldMeshToGeo } from './boolean/geo-convert'\nexport type {\n ManifoldMeshData, BooleanOperation,\n DovetailGrooveParams, DowelSplitParams, StraightTenonSplitParams,\n} from './boolean/geo-convert'\n\n// ── L1 Primitives ──\nexport { mergeBufferGeometries, makePrimitiveGeo, DEFAULT_SIZE, applyPrimitiveOffset } from './primitives/mesh-primitives'\nexport { makeScrew } from './primitives/screw/screw'\nexport { getScrewSpec, getScrewSpecs, threadToPitchMm, SCREW_HEAD_DIMS } from './primitives/screw/screw-db'\nexport type { ScrewParams, ScrewSpec, ScrewSystem } from './primitives/screw/screw-db'\nexport { parseSvgNaturalSize } from './primitives/parse-svg-size'\nexport {\n extractMeshData, primitiveToBrepSolid, geometryToBrepSolid,\n brepSolidToStep, primitiveToBrepStep,\n} from './primitives/brep-primitives'\nexport type { PrimitiveToBrepResult, PrimitiveParams } from './primitives/brep-primitives'\n// B 组(svg 挤出 / 3D 文字几何链)已随 @faicad/faijs-extra 迁出;\n// 留 core 的是零 three 的 CJK 字符判定与系统字体装载。\nexport { loadSystemCjkFont, containsCjk, isCjkChar } from './primitives/text/cjk-font'\nexport type { CjkFontResult } from './primitives/text/cjk-font'\nexport type {\n PrimitiveType, PrimitiveParamsRecord, PrimitiveArgsRecord, PrimitiveMeta,\n} from './primitives/types'\nexport { nextPrimitiveColor } from './primitives/types'\n\n// ── L1 SDF ──\nexport { runSdf } from './sdf/sdf-runner'\nexport type { SdfMeshData } from './sdf/sdf-runner'\nexport { runSdfInline } from './sdf/sdf-core'\nexport { SDF_TEMPLATES, DEFAULT_SDF_TEMPLATE } from './sdf/templates'\nexport type {\n SdfMeta, SdfBox, SdfParamDef, SdfTemplateCategory,\n SdfWorkerInput, SdfWorkerMessage,\n} from './sdf/types'\nexport { boxToTuple, parseParamDefs, defaultParamValues } from './sdf/types'\n\n// ── L1 Knurl ──\nexport { applyKnurlDisplacement, KNURL_DEFAULTS } from './mesh/knurl/KnurlGenerator'\nexport type { KnurlBounds } from './mesh/knurl/KnurlGenerator'\nexport { subdivide } from './mesh/knurl/subdivision'\nexport { loadKnurlingTexture, setKnurlTextureLoader } from './mesh/knurl/textureLoader'\nexport type { TextureData } from './mesh/knurl/textureLoader'\nexport { QuantizedPointMap, weldVertices } from './mesh/knurl/meshIndex'\nexport { computeUV, MODE_TRIPLANAR, getCubicBlendWeights, type MappingSettings } from './mesh/knurl/mapping'\nexport { applyDisplacement, type DisplacementSettings } from './mesh/knurl/displacement'\n\n// ── L1 Topology ──\nexport { TOPOLOGY_FACE_ID_NONE, buildFaceIdsForPart } from './topology/build-face-ids'\nexport {\n buildSelectorRuntime, buildSelectorRuntimeData, buildSelectorRuntimeMaps,\n} from './topology/build-selector-runtime'\nexport type { SelectorRuntimeData } from './topology/build-selector-runtime'\nexport type {\n SelectorRuntime, SelectorBundle, SelectorManifest, SelectorBuffers,\n FaceRow, EdgeRow, Reference,\n BufferViewDescriptor, SelectorProxy,\n} from './topology/types'\n\nexport * from './topology/naming'\n\n// ── L2 编排�?──\n// D1(2026-09-19):createRuntime 自注册 cad 默认命名空间(引擎 + 标准库定位)。\n// 需要纯引擎(不带 cad)的宿主可直接 import { createRuntime } from './cad-runtime/runtime'。\nexport { CadRuntime, createRuntime, computeContentKey, AppendPrefixError } from './cad-runtime/createRuntimeWithCad'\nexport { createPreviewExec } from './cad-runtime/preview-exec'\nexport type { PreviewExec } from './cad-runtime/preview-exec'\nexport type { ExecutionResult, ExecuteOptions, CheckResult, CheckError, CadRuntimeOptions } from './cad-runtime/runtime'\nexport type {\n HostPorts, CsgBackend, SdfBackend, FontProvider, TextureSampler,\n AssetResolver, EventSink, ExecutionMode,\n MeshData, PlaneParams, SplitResult as CsgSplitResult,\n DovetailGrooveParams as PortDovetailGrooveParams,\n DowelSplitParams as PortDowelSplitParams,\n StraightTenonSplitParams as PortStraightTenonSplitParams,\n LibLoader, ProjectLoader,\n} from './cad-runtime/ports'\n\n// ── OCCT Kernel ──\nexport {\n initOcctWasm, getKernel, disposeOcctWasm, setOcctWasmInitFn,\n computeEffectiveDeflection, importStepToMesh, importBrepToMesh,\n meshesToStep, releaseShape,\n importAssemblyFromStep, releaseAssemblyTree, collectLeafParts,\n} from './occt-kernel/occtKernel'\nexport type {\n WasmTessellatedMesh, WasmImportResult, AssemblyPartNode,\n MeshDeflectionOptions, ShapeHandle, OcctKernel,\n Mesh, EdgeData, SurfaceKind, CurveKind,\n} from './occt-kernel/occtKernel'\n\n// ── OCCT Mesh Reconstruct ──\nexport { reconstructSolidFromMesh, meshToAsciiStl, cadShapeIsValid, meshToStepBrep } from './occt-kernel/meshReconstruct'\n\n// ── OCCT 高层导出(多实体、零 fuse) ──\nexport { exportStepFromSolidsHighLevel } from './occt-kernel/highLevelApi'\n\n// ── OCCT Topology Extension ──\nexport { buildSelectorManifest, buildAssemblySelectorManifest, buildTopologyAdjacency } from './occt-kernel/topologyExt'\nexport type { SelectorManifestInput, PartTopologyInput, AssemblyTopologyResult, TopologyAdjacency } from './occt-kernel/topologyExt'\n\n// ── BREP 引擎注册(宿主装配;引擎可切换——occt 只是默认实现) ──\nexport { registerOcctBrepEngine, OCCT_BREP_ENGINE_ID } from './brep/engine/adapters/occt'\nexport { registerBrepMockEngine, BREP_MOCK_ENGINE_ID, createBrepMockApi } from './brep/engine/adapters/brep-mock'\n// brepkit 端侧 BREP 引擎(微信小程序等无 OCCT 环境):由宿主注入 wasm init 并抢先注册,\n// 使 ensureBrepChain 不回退 OCCT。setBrepkitWasmInitFn 注入自定义初始化(如 WXWebAssembly 实例化)。\nexport { registerBrepkitBrepEngine, BREPKIT_BREP_ENGINE_ID, ensureBrepkitDefaultEngine } from './brep/engine/adapters/brepkit'\nexport { setBrepkitWasmInitFn, initBrepkitWasm, isBrepkitInitialized } from './brepkit-kernel/brepkitWasm'\nexport {\n registerBrepEngine, getBrepEngine, hasBrepEngine, getActiveBrepEngineId,\n registerMeshEngine, getMeshEngine, getActiveMeshEngineId, freezeEngineRegistries,\n} from './brep/engine/registry'\nexport type { BrepEngine, BrepEngineProvider, MeshEngine } from './brep/engine/registry'\nexport type { BrepEngineApi } from './brep/engine/primitives'\nexport type {\n BrepHandle, BrepMeshResult, BrepBoundingBox, BrepVec3, BrepCapabilities,\n BrepEvolutionData, BrepXcafDocument,\n} from './brep/engine/types'\n\n// ── BREP Topology ──\nexport { buildSolidTopologyRuntime } from './brep/brep-topology'\nexport type { SolidTopologyResult } from './brep/brep-topology'\n\n// ── Font Registry (for browser host injection) ──\nexport { setFontLoader, getFontLoader, loadFont, ensureDefaultFont, getFont, clearFonts } from './brep/text/fontRegistry'\nexport type { FontLoader } from './brep/text/fontRegistry'\n\n// ── L3 Node Host ──\n// node-host 模块已移�?@faicad/faijs/node 入口,避免浏览器环境静�?import\n// node-host 模块(含 Node.js 专用代码�?fs/path)导致生产构�?404�?\n// �?Node.js 环境中:import { createNodePorts } from '@faicad/faijs/node'\n\n// ── L3 Browser Host ──\nexport { createBrowserPorts } from './browser-host'\nexport type { CreateBrowserPortsOptions } from './browser-host'\n// D3-Browser(§9.4):CDN 通用 libLoader 工厂(a/b 混合)。**不**被 createBrowserPorts\n// 默认装配——demo 的源码 alias HMR 路径必须零网络;CDN 装载由主机显式注入。\nexport { createBrowserLibLoader, DEFAULT_CDN_BASE } from './cad-runtime/browser-lib-loader'\nexport type {\n BrowserLibLoader, BrowserLibMeta, CreateBrowserLibLoaderOptions,\n} from './cad-runtime/browser-lib-loader'\nexport { BrowserEventSink } from './browser-host/browser-event-sink'\nexport { BrowserFontProvider } from './browser-host/browser-font-provider'\nexport type { BrowserFontProviderOptions } from './browser-host/browser-font-provider'\nexport { FetchAssetResolver } from './browser-host/fetch-asset-resolver'\nexport type { FetchAssetResolverOptions } from './browser-host/fetch-asset-resolver'\n\n// ── L3 API 面(原 packages/stdlib 迁入,P6/D1)──\n// P23 主导出切换(§4.2 / Q1):`export * from './api'` 现在同时带来\n// ① faijs 特有 dual op(mesh+brep 双路径,D11 双形态归一);\n// ② 生成脚本面 op(`api/generated/script-face.ts`,compatOp(projectBrepOp(…)) 包装的\n// brep-only 语句级 op——`cad.*` 脚本面与此同源,B1 三源一致);\n// ③ 2026-09-25 core-decouple:brepjsCompat 命名空间与 op 投影随 vendored 树删除\n// (裁决 9);`api/brepjs-compat` 仅保留 core 内联的 Result / 向量 / 平面 / 错误 /\n// 常量组合器(§5.2),顶层平铺不变。\nexport * from './api'\nexport { createApiNamespace } from './api/api-namespace'\n// Vec3 双源消歧:env-agnostic(lang/types)与 api(mesh/types)均有 Vec3,\n// 显式 re-export 定为 lang 版(与收敛前 index.ts 的具名导出一致)。\nexport type { Vec3 } from './lang/types'\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @faicad/faijs �?Faicad CAD execution engine\n *\n * 公开 API 统一入口。所有导出按层组织:\n * - L0 文本层:parser / codegen / symbol-table / types\n * - L1 几何执行层:BREP ops / Shape / 导出\n * - L1 Mesh 执行层:cad API\n * - L1 Boolean/CSG 辅助:cross-section / deriveNormals / extrude-helpers / joinery-shapes\n * - L1 Primitives:geometry / screw / svg-extrude / text / types\n * - L1 SDF:sdf-runner / templates / types\n * - L1 Knurl:KnurlGenerator / subdivision / textureLoader\n * - L1 Topology:build-face-ids / build-selector-runtime / types\n * - L2 编排层:CadRuntime / HostPorts\n * - L3 Node Host:createNodePorts / CLI\n * - OCCT Kernel:initOcctWasm / getKernel / setOcctWasmInitFn / ...\n * - CSG Backend:setCsgBackend / geoToManifoldMesh / ...\n */\n\n// ── 共享面(env-agnostic:identity + runtime-state + lang/*)──\n// 手写清单已收敛:三处 umbrella(index/browser/weapp)统一 re-export,防漂移。\nexport * from './env-agnostic'\n\n// ── L1 几何执行 ──\nexport type { Shape } from './mesh/types'\nexport type { BrepChainState } from './brep/brep-chain'\nexport {\n createBrepChainState, initBrepChainState, releaseBrepChainState,\n isCadFormat,\n} from './brep/brep-chain'\nexport {\n solidToShape, getSolidBoundingBox,\n translateBrep, rotateBrep, scaleBrep,\n fuseBrep, cutBrep, commonBrep,\n drillBrep, splitBrep, extrudeBrep,\n loadBrep, matrixToArray,\n} from './brep'\nexport type { DrillBrepParams, SplitBrepParams, SplitBrepResult, ExtrudeBrepParams } from './brep'\nexport { buildStlBufferFromMesh } from './brep/export/stl'\nexport { exportStepFromSolid, exportStepFromSolids } from './brep/export/step'\nexport type { StepExportEntry } from './brep/export/step'\n\n// ── L1 Mesh ──\nexport { cad } from './mesh'\n// 宿主注入的 mesh 装饰几何(cad.engrave 的文字/SVG 几何链在 @faicad/faijs-extra)\nexport { setEngraveDecorationProvider, getEngraveDecorationProvider } from './mesh/decoration-provider'\nexport type { EngraveDecorationProvider, EngraveDecorationParams } from './mesh/decoration-provider'\nexport { setManifoldWasmUrl, getManifoldWasmUrl, getManifoldModule } from './mesh/manifold-loader'\nexport type {\n BoundingBox, FaceDescriptor,\n BoxParams, SphereParams, CylinderParams, ConeParams, WedgeParams,\n TextParams, SvgExtrudeParams, SdfParams,\n DrillParams, ExtrudeParams, EngraveParams, KnurlParams,\n SplitPlane, SplitResult,\n} from './mesh/types'\nexport { NRAD_DEFAULT, NRAD_MIN, NRAD_MAX, clampNRad } from './mesh/types'\nexport { faceAt } from './mesh/query'\n\n// ── L1 Boolean/CSG 辅助 ──\nexport { computeSection, buildExtrudedProfile } from './boolean/cross-section'\nexport { manifoldToMeshData, weldPositionsWorker, dovetailBooleanSplit, dowelOrTenonBooleanSplit } from './boolean/csg-core'\nexport { deriveNormals } from './boolean/deriveNormals'\nexport { buildExtrudeParts, makeWorldPlane } from './boolean/extrude-helpers'\nexport type { ExtrudeParts, ExtrudeOffsetMode } from './boolean/extrude-helpers'\nexport {\n buildWedgeGeometry, buildDowelGeometry, buildStraightTenonGeometry,\n} from './boolean/joinery-shapes'\nexport type { JoineryMeshData } from './boolean/joinery-shapes'\n\n// ── CSG Backend ──\nexport { setCsgBackend } from './boolean/csg-backend'\nexport { geoToManifoldMesh, manifoldMeshToGeo } from './boolean/geo-convert'\nexport type {\n ManifoldMeshData, BooleanOperation,\n DovetailGrooveParams, DowelSplitParams, StraightTenonSplitParams,\n} from './boolean/geo-convert'\n\n// ── L1 Primitives ──\nexport { mergeBufferGeometries, makePrimitiveGeo, DEFAULT_SIZE, applyPrimitiveOffset } from './primitives/mesh-primitives'\nexport { makeScrew } from './primitives/screw/screw'\nexport { getScrewSpec, getScrewSpecs, threadToPitchMm, SCREW_HEAD_DIMS } from './primitives/screw/screw-db'\nexport type { ScrewParams, ScrewSpec, ScrewSystem } from './primitives/screw/screw-db'\nexport { parseSvgNaturalSize } from './primitives/parse-svg-size'\nexport {\n extractMeshData, primitiveToBrepSolid, geometryToBrepSolid,\n brepSolidToStep, primitiveToBrepStep,\n} from './primitives/brep-primitives'\nexport type { PrimitiveToBrepResult, PrimitiveParams } from './primitives/brep-primitives'\n// B 组(svg 挤出 / 3D 文字几何链)已随 @faicad/faijs-extra 迁出;\n// 留 core 的是零 three 的 CJK 字符判定与系统字体装载。\nexport { loadSystemCjkFont, containsCjk, isCjkChar } from './primitives/text/cjk-font'\nexport type { CjkFontResult } from './primitives/text/cjk-font'\nexport type {\n PrimitiveType, PrimitiveParamsRecord, PrimitiveArgsRecord, PrimitiveMeta,\n} from './primitives/types'\nexport { nextPrimitiveColor } from './primitives/types'\n\n// ── L1 SDF ──\nexport { runSdf } from './sdf/sdf-runner'\nexport type { SdfMeshData } from './sdf/sdf-runner'\nexport { runSdfInline } from './sdf/sdf-core'\nexport { SDF_TEMPLATES, DEFAULT_SDF_TEMPLATE } from './sdf/templates'\nexport type {\n SdfMeta, SdfBox, SdfParamDef, SdfTemplateCategory,\n SdfWorkerInput, SdfWorkerMessage,\n} from './sdf/types'\nexport { boxToTuple, parseParamDefs, defaultParamValues } from './sdf/types'\n\n// ── L1 Knurl ──\nexport { applyKnurlDisplacement, KNURL_DEFAULTS } from './mesh/knurl/KnurlGenerator'\nexport type { KnurlBounds } from './mesh/knurl/KnurlGenerator'\nexport { subdivide } from './mesh/knurl/subdivision'\nexport { loadKnurlingTexture, setKnurlTextureLoader } from './mesh/knurl/textureLoader'\nexport type { TextureData } from './mesh/knurl/textureLoader'\nexport { QuantizedPointMap, weldVertices } from './mesh/knurl/meshIndex'\nexport { computeUV, MODE_TRIPLANAR, getCubicBlendWeights, type MappingSettings } from './mesh/knurl/mapping'\nexport { applyDisplacement, type DisplacementSettings } from './mesh/knurl/displacement'\n\n// ── L1 Topology ──\nexport { TOPOLOGY_FACE_ID_NONE, buildFaceIdsForPart } from './topology/build-face-ids'\nexport {\n buildSelectorRuntime, buildSelectorRuntimeData, buildSelectorRuntimeMaps,\n} from './topology/build-selector-runtime'\nexport type { SelectorRuntimeData } from './topology/build-selector-runtime'\nexport type {\n SelectorRuntime, SelectorBundle, SelectorManifest, SelectorBuffers,\n FaceRow, EdgeRow, Reference,\n BufferViewDescriptor, SelectorProxy,\n} from './topology/types'\n\nexport * from './topology/naming'\n\n// ── L2 编排�?──\n// D1(2026-09-19):createRuntime 自注册 cad 默认命名空间(引擎 + 标准库定位)。\n// 需要纯引擎(不带 cad)的宿主可直接 import { createRuntime } from './cad-runtime/runtime'。\nexport { CadRuntime, createRuntime, computeContentKey, AppendPrefixError } from './cad-runtime/createRuntimeWithCad'\nexport { createPreviewExec } from './cad-runtime/preview-exec'\nexport type { PreviewExec } from './cad-runtime/preview-exec'\nexport type { ExecutionResult, ExecuteOptions, CheckResult, CheckError, CadRuntimeOptions } from './cad-runtime/runtime'\nexport type {\n HostPorts, CsgBackend, SdfBackend, FontProvider, TextureSampler,\n AssetResolver, EventSink, ExecutionMode,\n MeshData, PlaneParams, SplitResult as CsgSplitResult,\n DovetailGrooveParams as PortDovetailGrooveParams,\n DowelSplitParams as PortDowelSplitParams,\n StraightTenonSplitParams as PortStraightTenonSplitParams,\n LibLoader, ProjectLoader,\n} from './cad-runtime/ports'\n\n// ── OCCT Kernel ──\nexport {\n initOcctWasm, getKernel, disposeOcctWasm, setOcctWasmInitFn,\n computeEffectiveDeflection, importStepToMesh, importBrepToMesh,\n meshesToStep, releaseShape,\n importAssemblyFromStep, releaseAssemblyTree, collectLeafParts,\n} from './occt-kernel/occtKernel'\nexport type {\n WasmTessellatedMesh, WasmImportResult, AssemblyPartNode,\n MeshDeflectionOptions, ShapeHandle, OcctKernel,\n Mesh, EdgeData, SurfaceKind, CurveKind,\n} from './occt-kernel/occtKernel'\n\n// ── OCCT Mesh Reconstruct ──\nexport { reconstructSolidFromMesh, meshToAsciiStl, cadShapeIsValid, meshToStepBrep } from './occt-kernel/meshReconstruct'\n\n// ── OCCT 高层导出(多实体、零 fuse) ──\nexport { exportStepFromSolidsHighLevel } from './occt-kernel/highLevelApi'\n\n// ── OCCT Topology Extension ──\nexport { buildSelectorManifest, buildAssemblySelectorManifest, buildTopologyAdjacency } from './occt-kernel/topologyExt'\nexport type { SelectorManifestInput, PartTopologyInput, AssemblyTopologyResult, TopologyAdjacency } from './occt-kernel/topologyExt'\n\n// ── BREP 引擎注册(宿主装配;引擎可切换——occt 只是默认实现) ──\nexport { registerOcctBrepEngine, OCCT_BREP_ENGINE_ID } from './brep/engine/adapters/occt'\nexport { registerBrepMockEngine, BREP_MOCK_ENGINE_ID, createBrepMockApi } from './brep/engine/adapters/brep-mock'\n// brepkit 端侧 BREP 引擎(微信小程序等无 OCCT 环境):由宿主注入 wasm init 并抢先注册,\n// 使 ensureBrepChain 不回退 OCCT。setBrepkitWasmInitFn 注入自定义初始化(如 WXWebAssembly 实例化)。\nexport { registerBrepkitBrepEngine, BREPKIT_BREP_ENGINE_ID, ensureBrepkitDefaultEngine } from './brep/engine/adapters/brepkit'\n// brepkit 网格实体后端(网格语义路径;与 BREP 槽独立注册)。装了它,`cad.load`\n// 的 STL/3MF 路径才产出「网格实体 + 近似拓扑」;不装则维持裸网格的历史行为。\nexport { registerBrepkitMeshEngine, BREPKIT_MESH_ENGINE_ID, ensureBrepkitMeshBackend } from './brep/engine/adapters/brepkit'\nexport { setBrepkitWasmInitFn, initBrepkitWasm, isBrepkitInitialized } from './brepkit-kernel/brepkitWasm'\nexport {\n registerBrepEngine, getBrepEngine, hasBrepEngine, getActiveBrepEngineId,\n registerMeshEngine, getMeshEngine, getActiveMeshEngineId, freezeEngineRegistries,\n isMeshEngineRegistered, getMeshSolidBackend,\n} from './brep/engine/registry'\nexport type { BrepEngine, BrepEngineProvider, MeshEngine } from './brep/engine/registry'\n// 网格实体(近似拓扑的载体):端口 + 注册表 + 驱动。\nexport { MeshSolidRegistry, normalizeMeshSolid, describeMeshSolid, buildMeshSolidTopology, weldToleranceFor } from './brep/mesh-solid'\nexport type {\n MeshSolidBackend, MeshSolidResult, MeshSolidKernelOps, MeshSolidInput, MeshSolidNormalizeOptions,\n} from './brep/mesh-solid'\n// 槽位互斥不变量(分派前置校验;缺陷即报错)\nexport { assertShapeSlotExclusive } from './cad-runtime/backend-dispatch'\nexport type { BrepEngineApi } from './brep/engine/primitives'\nexport type {\n BrepHandle, BrepMeshResult, BrepBoundingBox, BrepVec3, BrepCapabilities,\n BrepEvolutionData, BrepXcafDocument,\n} from './brep/engine/types'\n\n// ── BREP Topology ──\nexport { buildSolidTopologyRuntime } from './brep/brep-topology'\nexport type { SolidTopologyResult } from './brep/brep-topology'\n\n// ── Font Registry (for browser host injection) ──\nexport { setFontLoader, getFontLoader, loadFont, ensureDefaultFont, ensureFont, getFont, clearFonts } from './brep/text/fontRegistry'\nexport type { FontLoader } from './brep/text/fontRegistry'\n\n// ── L3 Node Host ──\n// node-host 模块已移�?@faicad/faijs/node 入口,避免浏览器环境静�?import\n// node-host 模块(含 Node.js 专用代码�?fs/path)导致生产构�?404�?\n// �?Node.js 环境中:import { createNodePorts } from '@faicad/faijs/node'\n\n// ── L3 Browser Host ──\nexport { createBrowserPorts } from './browser-host'\nexport type { CreateBrowserPortsOptions } from './browser-host'\n// D3-Browser(§9.4):CDN 通用 libLoader 工厂(a/b 混合)。**不**被 createBrowserPorts\n// 默认装配——demo 的源码 alias HMR 路径必须零网络;CDN 装载由主机显式注入。\nexport { createBrowserLibLoader, DEFAULT_CDN_BASE } from './cad-runtime/browser-lib-loader'\nexport type {\n BrowserLibLoader, BrowserLibMeta, CreateBrowserLibLoaderOptions,\n} from './cad-runtime/browser-lib-loader'\nexport { BrowserEventSink } from './browser-host/browser-event-sink'\nexport { BrowserFontProvider } from './browser-host/browser-font-provider'\nexport type { BrowserFontProviderOptions } from './browser-host/browser-font-provider'\nexport { FetchAssetResolver } from './browser-host/fetch-asset-resolver'\nexport type { FetchAssetResolverOptions } from './browser-host/fetch-asset-resolver'\n\n// ── L3 API 面(api/ 层)──\n// P23 主导出切换(§4.2 / Q1):`export * from './api'` 现在同时带来\n// ① faijs 特有 dual op(mesh+brep 双路径,D11 双形态归一);\n// ② 生成脚本面 op(`api/generated/script-face.ts`,compatOp(projectBrepOp(…)) 包装的\n// brep-only 语句级 op——`cad.*` 脚本面与此同源,B1 三源一致);\n// ③ 2026-09-25 core-decouple:brepjsCompat 命名空间与 op 投影随 vendored 树删除\n// (裁决 9);`api/brepjs-compat` 仅保留 core 内联的 Result / 向量 / 平面 / 错误 /\n// 常量组合器(§5.2),顶层平铺不变。\nexport * from './api'\nexport { createApiNamespace } from './api/api-namespace'\n// Vec3 双源消歧:env-agnostic(lang/types)与 api(mesh/types)均有 Vec3,\n// 显式 re-export 定为 lang 版(与收敛前 index.ts 的具名导出一致)。\nexport type { Vec3 } from './lang/types'\n"]}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Read a file into a standalone ArrayBuffer sized exactly to the file.
3
+ *
4
+ * Equivalent to `toArrayBuffer(readFileSync(path))`; provided so filesystem
5
+ * callers do not have to remember why the `.buffer` shorthand is unsafe.
6
+ *
7
+ * @param path - filesystem path to read, as a string or a `file:` URL.
8
+ * @returns a new ArrayBuffer owned solely by the caller.
9
+ */
10
+ export declare function readFileArrayBuffer(path: string | URL): ArrayBuffer;
11
+ //# sourceMappingURL=bytes-node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bytes-node.d.ts","sourceRoot":"","sources":["../../src/io/bytes-node.ts"],"names":[],"mappings":"AAgBA;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,GAAG,WAAW,CAEnE"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Node-only file reader companion to `io/bytes.ts`.
3
+ *
4
+ * `Buffer.prototype.buffer` is the Buffer's *backing store*, not the file
5
+ * bytes: on Node 24 pooled buffers come from a shared store larger than the
6
+ * file and at a non-zero byteOffset. Handing that store to a kernel that
7
+ * decodes the whole ArrayBuffer also feeds it pool residue — seen as
8
+ * "Line 2: unexpected QUID, expecting STEP" in occt-wasm importStep.
9
+ *
10
+ * Node-only by design (top-level node: imports): exported from
11
+ * `@faicad/faijs/node`, never from `io/index.ts` / the browser entries.
12
+ */
13
+ import { readFileSync } from 'node:fs';
14
+ import { fileURLToPath } from 'node:url';
15
+ import { toArrayBuffer } from './bytes.js';
16
+ /**
17
+ * Read a file into a standalone ArrayBuffer sized exactly to the file.
18
+ *
19
+ * Equivalent to `toArrayBuffer(readFileSync(path))`; provided so filesystem
20
+ * callers do not have to remember why the `.buffer` shorthand is unsafe.
21
+ *
22
+ * @param path - filesystem path to read, as a string or a `file:` URL.
23
+ * @returns a new ArrayBuffer owned solely by the caller.
24
+ */
25
+ export function readFileArrayBuffer(path) {
26
+ return toArrayBuffer(readFileSync(fileURLToPath(path)));
27
+ }
28
+ //# sourceMappingURL=bytes-node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bytes-node.js","sourceRoot":"","sources":["../../src/io/bytes-node.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAEvC;;;;;;;;GAQG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAkB;IACpD,OAAO,aAAa,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACzD,CAAC","sourcesContent":["/**\n * Node-only file reader companion to `io/bytes.ts`.\n *\n * `Buffer.prototype.buffer` is the Buffer's *backing store*, not the file\n * bytes: on Node 24 pooled buffers come from a shared store larger than the\n * file and at a non-zero byteOffset. Handing that store to a kernel that\n * decodes the whole ArrayBuffer also feeds it pool residue — seen as\n * \"Line 2: unexpected QUID, expecting STEP\" in occt-wasm importStep.\n *\n * Node-only by design (top-level node: imports): exported from\n * `@faicad/faijs/node`, never from `io/index.ts` / the browser entries.\n */\nimport { readFileSync } from 'node:fs'\nimport { fileURLToPath } from 'node:url'\nimport { toArrayBuffer } from './bytes'\n\n/**\n * Read a file into a standalone ArrayBuffer sized exactly to the file.\n *\n * Equivalent to `toArrayBuffer(readFileSync(path))`; provided so filesystem\n * callers do not have to remember why the `.buffer` shorthand is unsafe.\n *\n * @param path - filesystem path to read, as a string or a `file:` URL.\n * @returns a new ArrayBuffer owned solely by the caller.\n */\nexport function readFileArrayBuffer(path: string | URL): ArrayBuffer {\n return toArrayBuffer(readFileSync(fileURLToPath(path)))\n}\n"]}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * io/bytes — normalise a BufferSource into an exactly-owned ArrayBuffer.
3
+ *
4
+ * faijs hands geometry kernels plain `ArrayBuffer`s (see the `assets.resolveFile`
5
+ * contract in `cad-runtime/ports`). That contract has no notion of a view
6
+ * offset, so a *pooled* or *offset* backing store must never cross it: a
7
+ * consumer that decodes the whole ArrayBuffer would also read whatever else
8
+ * shares that store.
9
+ *
10
+ * This is the single place that conversion is spelled out, because the failure
11
+ * it prevents is invisible: the kernel does not report a short read, it reports
12
+ * a corrupt-parse error far away from the call that caused it.
13
+ *
14
+ * Contract:
15
+ * - Always returns a fresh ArrayBuffer whose `byteLength` equals the source's
16
+ * `byteLength`; never aliases the input.
17
+ * - Accepts any BufferSource (ArrayBuffer or any ArrayBufferView), so a caller
18
+ * holding a `Buffer`/subarray does not have to slice it by hand.
19
+ * - Zero-copy is deliberately not attempted: the sources are whole-file reads,
20
+ * where one copy is cheaper than reasoning about who else owns the store.
21
+ *
22
+ * Browser-safe: this module must stay free of node: imports — it is
23
+ * re-exported from `io/index.ts`, which is imported by browser bundles. The
24
+ * Node-only file reader lives in `io/bytes-node.ts` (`@faicad/faijs/node`).
25
+ */
26
+ /**
27
+ * Copy a BufferSource into a standalone ArrayBuffer sized exactly to its bytes.
28
+ *
29
+ * @param source - the bytes to normalise (ArrayBuffer or any ArrayBufferView).
30
+ * @returns a new ArrayBuffer owned solely by the caller.
31
+ */
32
+ export declare function toArrayBuffer(source: BufferSource): ArrayBuffer;
33
+ //# sourceMappingURL=bytes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bytes.d.ts","sourceRoot":"","sources":["../../src/io/bytes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,WAAW,CAY/D"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * io/bytes — normalise a BufferSource into an exactly-owned ArrayBuffer.
3
+ *
4
+ * faijs hands geometry kernels plain `ArrayBuffer`s (see the `assets.resolveFile`
5
+ * contract in `cad-runtime/ports`). That contract has no notion of a view
6
+ * offset, so a *pooled* or *offset* backing store must never cross it: a
7
+ * consumer that decodes the whole ArrayBuffer would also read whatever else
8
+ * shares that store.
9
+ *
10
+ * This is the single place that conversion is spelled out, because the failure
11
+ * it prevents is invisible: the kernel does not report a short read, it reports
12
+ * a corrupt-parse error far away from the call that caused it.
13
+ *
14
+ * Contract:
15
+ * - Always returns a fresh ArrayBuffer whose `byteLength` equals the source's
16
+ * `byteLength`; never aliases the input.
17
+ * - Accepts any BufferSource (ArrayBuffer or any ArrayBufferView), so a caller
18
+ * holding a `Buffer`/subarray does not have to slice it by hand.
19
+ * - Zero-copy is deliberately not attempted: the sources are whole-file reads,
20
+ * where one copy is cheaper than reasoning about who else owns the store.
21
+ *
22
+ * Browser-safe: this module must stay free of node: imports — it is
23
+ * re-exported from `io/index.ts`, which is imported by browser bundles. The
24
+ * Node-only file reader lives in `io/bytes-node.ts` (`@faicad/faijs/node`).
25
+ */
26
+ /**
27
+ * Copy a BufferSource into a standalone ArrayBuffer sized exactly to its bytes.
28
+ *
29
+ * @param source - the bytes to normalise (ArrayBuffer or any ArrayBufferView).
30
+ * @returns a new ArrayBuffer owned solely by the caller.
31
+ */
32
+ export function toArrayBuffer(source) {
33
+ if (source instanceof ArrayBuffer) {
34
+ // Already standalone in size, but callers may still hold another view onto
35
+ // it; copy so the result can never be mutated through another reference.
36
+ return source.slice(0);
37
+ }
38
+ const view = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);
39
+ return view.slice().buffer;
40
+ }
41
+ //# sourceMappingURL=bytes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bytes.js","sourceRoot":"","sources":["../../src/io/bytes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,MAAoB;IAChD,IAAI,MAAM,YAAY,WAAW,EAAE,CAAC;QAClC,2EAA2E;QAC3E,yEAAyE;QACzE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IACxB,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,UAAU,CACxB,MAA0B,CAAC,MAAqB,EAChD,MAA0B,CAAC,UAAU,EACrC,MAA0B,CAAC,UAAU,CACvC,CAAA;IACD,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,MAAqB,CAAA;AAC3C,CAAC","sourcesContent":["/**\n * io/bytes — normalise a BufferSource into an exactly-owned ArrayBuffer.\n *\n * faijs hands geometry kernels plain `ArrayBuffer`s (see the `assets.resolveFile`\n * contract in `cad-runtime/ports`). That contract has no notion of a view\n * offset, so a *pooled* or *offset* backing store must never cross it: a\n * consumer that decodes the whole ArrayBuffer would also read whatever else\n * shares that store.\n *\n * This is the single place that conversion is spelled out, because the failure\n * it prevents is invisible: the kernel does not report a short read, it reports\n * a corrupt-parse error far away from the call that caused it.\n *\n * Contract:\n * - Always returns a fresh ArrayBuffer whose `byteLength` equals the source's\n * `byteLength`; never aliases the input.\n * - Accepts any BufferSource (ArrayBuffer or any ArrayBufferView), so a caller\n * holding a `Buffer`/subarray does not have to slice it by hand.\n * - Zero-copy is deliberately not attempted: the sources are whole-file reads,\n * where one copy is cheaper than reasoning about who else owns the store.\n *\n * Browser-safe: this module must stay free of node: imports — it is\n * re-exported from `io/index.ts`, which is imported by browser bundles. The\n * Node-only file reader lives in `io/bytes-node.ts` (`@faicad/faijs/node`).\n */\n\n/**\n * Copy a BufferSource into a standalone ArrayBuffer sized exactly to its bytes.\n *\n * @param source - the bytes to normalise (ArrayBuffer or any ArrayBufferView).\n * @returns a new ArrayBuffer owned solely by the caller.\n */\nexport function toArrayBuffer(source: BufferSource): ArrayBuffer {\n if (source instanceof ArrayBuffer) {\n // Already standalone in size, but callers may still hold another view onto\n // it; copy so the result can never be mutated through another reference.\n return source.slice(0)\n }\n const view = new Uint8Array(\n (source as ArrayBufferView).buffer as ArrayBuffer,\n (source as ArrayBufferView).byteOffset,\n (source as ArrayBufferView).byteLength,\n )\n return view.slice().buffer as ArrayBuffer\n}\n"]}
@@ -0,0 +1,102 @@
1
+ /**
2
+ * Unified `.fai.zip` read API (docs/fai-zip-format.md §4–§9).
3
+ *
4
+ * Environment-independent by constraint: reading goes through `io/zip.ts`
5
+ * (`readZipEntries`) plus JSON parsing — no `node:*`, no DOM, no fs, and no
6
+ * direct ZIP library. Web workers, the weapp worker and node share this code.
7
+ *
8
+ * Contract highlights (spec §9 Reader obligations):
9
+ * - a missing/malformed manifest, `format !== 3`, a malformed `models` array,
10
+ * a missing entry, a missing named data member and a duplicate asset key are
11
+ * all errors carrying the offending value;
12
+ * - entry selection is `active` or `models[0]` — never a file-name heuristic;
13
+ * - members outside the table (§3), unknown manifest fields and unknown
14
+ * data-member keys are ignored, never errors, never decision inputs.
15
+ */
16
+ import { type ZipReadOptions } from '../zip.js';
17
+ import type { ProjectLoader } from '../../cad-runtime/ports.js';
18
+ import { type ContainerAssetEntries, type ContainerManifest, type ContainerModel } from './container.js';
19
+ /** openContainer options. */
20
+ export interface OpenContainerOptions {
21
+ /** override `manifest.active`; default = `manifest.active`, else `models[0]` */
22
+ modelId?: string;
23
+ /** override the `io/zip.ts` read caps (maxEntries / maxTotalBytes) */
24
+ caps?: ZipReadOptions;
25
+ }
26
+ /** openContainer result: manifest, active model, loader and payloads. */
27
+ export interface OpenContainerResult {
28
+ manifest: ContainerManifest;
29
+ activeModel: ContainerModel;
30
+ /** project loader over the container's module graph (listModules/readSource) */
31
+ loader: ProjectLoader;
32
+ files: Record<string, Uint8Array>;
33
+ assets: Record<string, Uint8Array>;
34
+ }
35
+ /**
36
+ * Read and validate the container manifest (spec §4).
37
+ * @param bytes the .fai.zip archive bytes
38
+ * @returns the validated manifest
39
+ * @throws when the archive is not a ZIP, the manifest is missing/malformed,
40
+ * `format !== 3`, `units !== "mm"`, `models` is empty/malformed, ids/entries
41
+ * are duplicated, an entry is not under `model/` or does not exist, `active`
42
+ * is not in `models[].id`, or a named `data` member does not exist.
43
+ */
44
+ export declare function readManifest(bytes: Uint8Array): ContainerManifest;
45
+ /**
46
+ * List the container models (validated). Same validation as readManifest.
47
+ * @param bytes the .fai.zip archive bytes
48
+ * @returns the validated model list
49
+ */
50
+ export declare function listModels(bytes: Uint8Array): ContainerModel[];
51
+ /**
52
+ * List every module under `model/` (keys relative to `model/`, sorted).
53
+ * Members outside the table are ignored (§3), never an error.
54
+ * @param bytes the .fai.zip archive bytes
55
+ * @returns module keys relative to `model/`, sorted
56
+ */
57
+ export declare function listModules(bytes: Uint8Array): string[];
58
+ /**
59
+ * Read one module's source text by module key (relative to `model/`).
60
+ * @param bytes the .fai.zip archive bytes
61
+ * @param key the module key relative to `model/` (e.g. `main.fai.js`)
62
+ * @returns the module source text
63
+ * @throws for a key outside `model/` or that does not exist
64
+ */
65
+ export declare function readModule(bytes: Uint8Array, key: string): string;
66
+ /**
67
+ * Read one model data member's JSON text by member path (e.g. `data/main.json`).
68
+ *
69
+ * The path must be exactly what `models[].data` declares (spec §4): a safe,
70
+ * relative member under `data/` ending with `.json`. Content is validated to
71
+ * parse as JSON — the editor keeps data members pure JSON (§6.1), so a
72
+ * non-JSON member is a format violation and an error, never a silent skip.
73
+ *
74
+ * @param bytes the .fai.zip archive bytes
75
+ * @param memberPath the member path named by `models[].data`
76
+ * @returns the raw JSON text
77
+ * @throws for a non-string/unsafe path, a path outside `data/`, a missing
78
+ * member, or content that does not parse as JSON
79
+ */
80
+ export declare function readDataMember(bytes: Uint8Array, memberPath: string): string;
81
+ /**
82
+ * Collect the payload bytes of a container.
83
+ * Keys are unique across `files/**` and `assets/**` together (spec §7.1);
84
+ * a duplicate key is an error rather than a pick.
85
+ * @param bytes the .fai.zip archive bytes
86
+ * @returns the payload entries keyed by asset key
87
+ */
88
+ export declare function readAssetEntries(bytes: Uint8Array): ContainerAssetEntries;
89
+ /**
90
+ * Host entry point: open a container and return the manifest, the active
91
+ * model and a ProjectLoader over its module graph, plus the payloads.
92
+ *
93
+ * The archive is unpacked exactly once for the whole call.
94
+ *
95
+ * @param bytes the .fai.zip archive bytes
96
+ * @param opts optional active-model override and `io/zip.ts` read caps
97
+ * @returns manifest, active model, project loader and payload entries
98
+ * @throws when the container is invalid, the requested model id is unknown, or
99
+ * the read caps are exceeded
100
+ */
101
+ export declare function openContainer(bytes: Uint8Array, opts?: OpenContainerOptions): OpenContainerResult;
102
+ //# sourceMappingURL=container-read.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"container-read.d.ts","sourceRoot":"","sources":["../../../src/io/fai-zip/container-read.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAkB,KAAK,cAAc,EAAE,MAAM,QAAQ,CAAA;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EAML,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACpB,MAAM,aAAa,CAAA;AAEpB,6BAA6B;AAC7B,MAAM,WAAW,oBAAoB;IACnC,gFAAgF;IAChF,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,sEAAsE;IACtE,IAAI,CAAC,EAAE,cAAc,CAAA;CACtB;AAED,yEAAyE;AACzE,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,iBAAiB,CAAA;IAC3B,WAAW,EAAE,cAAc,CAAA;IAC3B,gFAAgF;IAChF,MAAM,EAAE,aAAa,CAAA;IACrB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;IACjC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;CACnC;AAsJD;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,iBAAiB,CAEjE;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,GAAG,cAAc,EAAE,CAE9D;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,EAAE,CAEvD;AAaD;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAajE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAgB5E;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,UAAU,GAAG,qBAAqB,CAEzE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,GAAE,oBAAyB,GAAG,mBAAmB,CA+BrG"}