@faicad/faijs 0.30.9 → 0.31.1

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 (284) hide show
  1. package/dist/api/align/index.d.ts +64 -0
  2. package/dist/api/align/index.d.ts.map +1 -0
  3. package/dist/api/align/index.js +101 -0
  4. package/dist/api/align/index.js.map +1 -0
  5. package/dist/api/api-namespace.d.ts +5 -4
  6. package/dist/api/api-namespace.d.ts.map +1 -1
  7. package/dist/api/api-namespace.js +36 -4
  8. package/dist/api/api-namespace.js.map +1 -1
  9. package/dist/api/boolean-op/index.d.ts +65 -0
  10. package/dist/api/boolean-op/index.d.ts.map +1 -0
  11. package/dist/api/boolean-op/index.js +113 -0
  12. package/dist/api/boolean-op/index.js.map +1 -0
  13. package/dist/api/boolean.d.ts.map +1 -1
  14. package/dist/api/boolean.js +15 -27
  15. package/dist/api/boolean.js.map +1 -1
  16. package/dist/api/brep-operations/healingFns.d.ts +13 -0
  17. package/dist/api/brep-operations/healingFns.d.ts.map +1 -1
  18. package/dist/api/brep-operations/healingFns.js +28 -1
  19. package/dist/api/brep-operations/healingFns.js.map +1 -1
  20. package/dist/api/brep-operations/topologyFns.d.ts +27 -6
  21. package/dist/api/brep-operations/topologyFns.d.ts.map +1 -1
  22. package/dist/api/brep-operations/topologyFns.js +46 -22
  23. package/dist/api/brep-operations/topologyFns.js.map +1 -1
  24. package/dist/api/chamfer.d.ts +5 -4
  25. package/dist/api/chamfer.d.ts.map +1 -1
  26. package/dist/api/chamfer.js +12 -11
  27. package/dist/api/chamfer.js.map +1 -1
  28. package/dist/api/curve-sketch/index.d.ts.map +1 -1
  29. package/dist/api/curve-sketch/index.js +9 -3
  30. package/dist/api/curve-sketch/index.js.map +1 -1
  31. package/dist/api/draft.d.ts.map +1 -1
  32. package/dist/api/draft.js +1 -3
  33. package/dist/api/draft.js.map +1 -1
  34. package/dist/api/engrave.d.ts.map +1 -1
  35. package/dist/api/engrave.js +3 -13
  36. package/dist/api/engrave.js.map +1 -1
  37. package/dist/api/export-3mf.d.ts +73 -0
  38. package/dist/api/export-3mf.d.ts.map +1 -0
  39. package/dist/api/export-3mf.js +121 -0
  40. package/dist/api/export-3mf.js.map +1 -0
  41. package/dist/api/export-brep.d.ts +6 -0
  42. package/dist/api/export-brep.d.ts.map +1 -1
  43. package/dist/api/export-brep.js +11 -2
  44. package/dist/api/export-brep.js.map +1 -1
  45. package/dist/api/export-step.d.ts +67 -0
  46. package/dist/api/export-step.d.ts.map +1 -0
  47. package/dist/api/export-step.js +98 -0
  48. package/dist/api/export-step.js.map +1 -0
  49. package/dist/api/export-stl.d.ts +8 -0
  50. package/dist/api/export-stl.d.ts.map +1 -1
  51. package/dist/api/export-stl.js +23 -8
  52. package/dist/api/export-stl.js.map +1 -1
  53. package/dist/api/feature-repair.d.ts +1 -1
  54. package/dist/api/feature-repair.d.ts.map +1 -1
  55. package/dist/api/feature-repair.js +1 -7
  56. package/dist/api/feature-repair.js.map +1 -1
  57. package/dist/api/fillet-variable.d.ts.map +1 -1
  58. package/dist/api/fillet-variable.js +0 -1
  59. package/dist/api/fillet-variable.js.map +1 -1
  60. package/dist/api/fillet.d.ts +3 -3
  61. package/dist/api/fillet.d.ts.map +1 -1
  62. package/dist/api/fillet.js +3 -4
  63. package/dist/api/fillet.js.map +1 -1
  64. package/dist/api/generated/operations.js +6 -6
  65. package/dist/api/generated/operations.js.map +1 -1
  66. package/dist/api/generated/script-face-manifest.d.ts +1 -1
  67. package/dist/api/generated/script-face-manifest.js +3 -3
  68. package/dist/api/generated/script-face-manifest.js.map +1 -1
  69. package/dist/api/generated/script-face.d.ts +1 -1
  70. package/dist/api/generated/script-face.js +1 -1
  71. package/dist/api/generated/script-face.js.map +1 -1
  72. package/dist/api/generated/sketching.js +1 -1
  73. package/dist/api/generated/sketching.js.map +1 -1
  74. package/dist/api/generated/topology.js +10 -10
  75. package/dist/api/generated/topology.js.map +1 -1
  76. package/dist/api/helix.d.ts +1 -1
  77. package/dist/api/helix.js +1 -1
  78. package/dist/api/helix.js.map +1 -1
  79. package/dist/api/index.d.ts +4 -1
  80. package/dist/api/index.d.ts.map +1 -1
  81. package/dist/api/index.js +16 -4
  82. package/dist/api/index.js.map +1 -1
  83. package/dist/api/internal/compat-op.d.ts +6 -6
  84. package/dist/api/internal/compat-op.d.ts.map +1 -1
  85. package/dist/api/internal/compat-op.js +7 -9
  86. package/dist/api/internal/compat-op.js.map +1 -1
  87. package/dist/api/internal/export-members.d.ts +80 -0
  88. package/dist/api/internal/export-members.d.ts.map +1 -0
  89. package/dist/api/internal/export-members.js +104 -0
  90. package/dist/api/internal/export-members.js.map +1 -0
  91. package/dist/api/internal/l3-bridge.d.ts +17 -0
  92. package/dist/api/internal/l3-bridge.d.ts.map +1 -1
  93. package/dist/api/internal/l3-bridge.js +23 -1
  94. package/dist/api/internal/l3-bridge.js.map +1 -1
  95. package/dist/api/measure-query/index.d.ts +262 -0
  96. package/dist/api/measure-query/index.d.ts.map +1 -0
  97. package/dist/api/measure-query/index.js +390 -0
  98. package/dist/api/measure-query/index.js.map +1 -0
  99. package/dist/api/pattern.d.ts.map +1 -1
  100. package/dist/api/pattern.js +0 -3
  101. package/dist/api/pattern.js.map +1 -1
  102. package/dist/api/primitives.d.ts +6 -6
  103. package/dist/api/primitives.d.ts.map +1 -1
  104. package/dist/api/primitives.js +12 -11
  105. package/dist/api/primitives.js.map +1 -1
  106. package/dist/api/profile.d.ts.map +1 -1
  107. package/dist/api/profile.js +0 -1
  108. package/dist/api/profile.js.map +1 -1
  109. package/dist/api/punch-hole.d.ts.map +1 -1
  110. package/dist/api/punch-hole.js +0 -1
  111. package/dist/api/punch-hole.js.map +1 -1
  112. package/dist/api/replicate.d.ts +5 -7
  113. package/dist/api/replicate.d.ts.map +1 -1
  114. package/dist/api/replicate.js +18 -56
  115. package/dist/api/replicate.js.map +1 -1
  116. package/dist/api/section-by-plane.d.ts.map +1 -1
  117. package/dist/api/section-by-plane.js +0 -1
  118. package/dist/api/section-by-plane.js.map +1 -1
  119. package/dist/api/shell.d.ts +1 -1
  120. package/dist/api/shell.d.ts.map +1 -1
  121. package/dist/api/shell.js +11 -2
  122. package/dist/api/shell.js.map +1 -1
  123. package/dist/api/sketch-on-face.d.ts +3 -3
  124. package/dist/api/sketch-on-face.d.ts.map +1 -1
  125. package/dist/api/sketch-on-face.js +6 -4
  126. package/dist/api/sketch-on-face.js.map +1 -1
  127. package/dist/api/sketch-on-plane.d.ts.map +1 -1
  128. package/dist/api/sketch-on-plane.js +0 -1
  129. package/dist/api/sketch-on-plane.js.map +1 -1
  130. package/dist/api/split-by-plane.d.ts.map +1 -1
  131. package/dist/api/split-by-plane.js +0 -1
  132. package/dist/api/split-by-plane.js.map +1 -1
  133. package/dist/api/split.d.ts +1 -1
  134. package/dist/api/split.js +1 -1
  135. package/dist/api/split.js.map +1 -1
  136. package/dist/api/surface/arg-spec.d.ts +3 -12
  137. package/dist/api/surface/arg-spec.d.ts.map +1 -1
  138. package/dist/api/surface/arg-spec.js +19 -26
  139. package/dist/api/surface/arg-spec.js.map +1 -1
  140. package/dist/api/sweep.d.ts +15 -3
  141. package/dist/api/sweep.d.ts.map +1 -1
  142. package/dist/api/sweep.js +5 -3
  143. package/dist/api/sweep.js.map +1 -1
  144. package/dist/api/thicken.d.ts.map +1 -1
  145. package/dist/api/thicken.js +11 -2
  146. package/dist/api/thicken.js.map +1 -1
  147. package/dist/api/transform.d.ts +3 -3
  148. package/dist/api/transform.d.ts.map +1 -1
  149. package/dist/api/transform.js +47 -17
  150. package/dist/api/transform.js.map +1 -1
  151. package/dist/boolean/index.d.ts +23 -0
  152. package/dist/boolean/index.d.ts.map +1 -0
  153. package/dist/boolean/index.js +27 -0
  154. package/dist/boolean/index.js.map +1 -0
  155. package/dist/brep/brep-chain.d.ts +1 -19
  156. package/dist/brep/brep-chain.d.ts.map +1 -1
  157. package/dist/brep/brep-chain.js +0 -1
  158. package/dist/brep/brep-chain.js.map +1 -1
  159. package/dist/brep/brep-ops.d.ts +4 -1
  160. package/dist/brep/brep-ops.d.ts.map +1 -1
  161. package/dist/brep/brep-ops.js +9 -5
  162. package/dist/brep/brep-ops.js.map +1 -1
  163. package/dist/brep/engine/adapters/brep-mock.d.ts.map +1 -1
  164. package/dist/brep/engine/adapters/brep-mock.js +0 -3
  165. package/dist/brep/engine/adapters/brep-mock.js.map +1 -1
  166. package/dist/brep/engine/adapters/brepkit.d.ts +4 -3
  167. package/dist/brep/engine/adapters/brepkit.d.ts.map +1 -1
  168. package/dist/brep/engine/adapters/brepkit.js +4 -98
  169. package/dist/brep/engine/adapters/brepkit.js.map +1 -1
  170. package/dist/brep/engine/adapters/occt.d.ts.map +1 -1
  171. package/dist/brep/engine/adapters/occt.js +0 -144
  172. package/dist/brep/engine/adapters/occt.js.map +1 -1
  173. package/dist/brep/engine/native-history.d.ts +27 -0
  174. package/dist/brep/engine/native-history.d.ts.map +1 -0
  175. package/dist/brep/engine/native-history.js +54 -0
  176. package/dist/brep/engine/native-history.js.map +1 -0
  177. package/dist/brep/engine/registry.d.ts +2 -4
  178. package/dist/brep/engine/registry.d.ts.map +1 -1
  179. package/dist/brep/engine/registry.js +1 -1
  180. package/dist/brep/engine/registry.js.map +1 -1
  181. package/dist/brep/engine/types.d.ts +35 -77
  182. package/dist/brep/engine/types.d.ts.map +1 -1
  183. package/dist/brep/engine/types.js.map +1 -1
  184. package/dist/brep/export/export-model.d.ts +21 -0
  185. package/dist/brep/export/export-model.d.ts.map +1 -1
  186. package/dist/brep/export/export-model.js +171 -73
  187. package/dist/brep/export/export-model.js.map +1 -1
  188. package/dist/brep/export/step.d.ts +17 -1
  189. package/dist/brep/export/step.d.ts.map +1 -1
  190. package/dist/brep/export/step.js +133 -0
  191. package/dist/brep/export/step.js.map +1 -1
  192. package/dist/brep/export/stl.d.ts +22 -1
  193. package/dist/brep/export/stl.d.ts.map +1 -1
  194. package/dist/brep/export/stl.js +58 -10
  195. package/dist/brep/export/stl.js.map +1 -1
  196. package/dist/brep/export/transform12.d.ts +47 -0
  197. package/dist/brep/export/transform12.d.ts.map +1 -0
  198. package/dist/brep/export/transform12.js +87 -0
  199. package/dist/brep/export/transform12.js.map +1 -0
  200. package/dist/brep/face-evolution.d.ts +53 -0
  201. package/dist/brep/face-evolution.d.ts.map +1 -1
  202. package/dist/brep/face-evolution.js +65 -0
  203. package/dist/brep/face-evolution.js.map +1 -1
  204. package/dist/browser-host/index.d.ts +4 -1
  205. package/dist/browser-host/index.d.ts.map +1 -1
  206. package/dist/browser-host/index.js +7 -1
  207. package/dist/browser-host/index.js.map +1 -1
  208. package/dist/browser.d.ts +4 -8
  209. package/dist/browser.d.ts.map +1 -1
  210. package/dist/browser.js +4 -26
  211. package/dist/browser.js.map +1 -1
  212. package/dist/cad-runtime/backend-dispatch.d.ts +13 -58
  213. package/dist/cad-runtime/backend-dispatch.d.ts.map +1 -1
  214. package/dist/cad-runtime/backend-dispatch.js +22 -80
  215. package/dist/cad-runtime/backend-dispatch.js.map +1 -1
  216. package/dist/cad-runtime/content-key.d.ts +3 -3
  217. package/dist/cad-runtime/content-key.js +3 -3
  218. package/dist/cad-runtime/content-key.js.map +1 -1
  219. package/dist/cad-runtime/ports.d.ts +28 -0
  220. package/dist/cad-runtime/ports.d.ts.map +1 -1
  221. package/dist/cad-runtime/ports.js.map +1 -1
  222. package/dist/cad-runtime/runtime.d.ts +33 -12
  223. package/dist/cad-runtime/runtime.d.ts.map +1 -1
  224. package/dist/cad-runtime/runtime.js +44 -48
  225. package/dist/cad-runtime/runtime.js.map +1 -1
  226. package/dist/define-op.d.ts +6 -11
  227. package/dist/define-op.d.ts.map +1 -1
  228. package/dist/define-op.js +3 -20
  229. package/dist/define-op.js.map +1 -1
  230. package/dist/env-agnostic.d.ts +2 -2
  231. package/dist/env-agnostic.d.ts.map +1 -1
  232. package/dist/env-agnostic.js +1 -1
  233. package/dist/env-agnostic.js.map +1 -1
  234. package/dist/index.d.ts +13 -64
  235. package/dist/index.d.ts.map +1 -1
  236. package/dist/index.js +17 -75
  237. package/dist/index.js.map +1 -1
  238. package/dist/lang/symbol-table.generated.d.ts +17 -0
  239. package/dist/lang/symbol-table.generated.d.ts.map +1 -1
  240. package/dist/lang/symbol-table.generated.js +17 -0
  241. package/dist/lang/symbol-table.generated.js.map +1 -1
  242. package/dist/mesh/index.d.ts +18 -23
  243. package/dist/mesh/index.d.ts.map +1 -1
  244. package/dist/mesh/index.js +18 -20
  245. package/dist/mesh/index.js.map +1 -1
  246. package/dist/mesh/io.d.ts +42 -14
  247. package/dist/mesh/io.d.ts.map +1 -1
  248. package/dist/mesh/io.js +77 -13
  249. package/dist/mesh/io.js.map +1 -1
  250. package/dist/mesh/threemf-loader.d.ts +38 -4
  251. package/dist/mesh/threemf-loader.d.ts.map +1 -1
  252. package/dist/mesh/threemf-loader.js +115 -34
  253. package/dist/mesh/threemf-loader.js.map +1 -1
  254. package/dist/mesh/types.d.ts +30 -0
  255. package/dist/mesh/types.d.ts.map +1 -1
  256. package/dist/mesh/types.js.map +1 -1
  257. package/dist/node-host/execute-script.d.ts +2 -1
  258. package/dist/node-host/execute-script.d.ts.map +1 -1
  259. package/dist/node-host/execute-script.js +5 -4
  260. package/dist/node-host/execute-script.js.map +1 -1
  261. package/dist/node-host/index.d.ts +1 -0
  262. package/dist/node-host/index.d.ts.map +1 -1
  263. package/dist/node-host/index.js +4 -0
  264. package/dist/node-host/index.js.map +1 -1
  265. package/dist/primitives/index.d.ts +19 -0
  266. package/dist/primitives/index.d.ts.map +1 -0
  267. package/dist/primitives/index.js +21 -0
  268. package/dist/primitives/index.js.map +1 -0
  269. package/dist/runtime-state.d.ts +63 -29
  270. package/dist/runtime-state.d.ts.map +1 -1
  271. package/dist/runtime-state.js +57 -0
  272. package/dist/runtime-state.js.map +1 -1
  273. package/dist/sdf/index.d.ts +12 -0
  274. package/dist/sdf/index.d.ts.map +1 -0
  275. package/dist/sdf/index.js +13 -0
  276. package/dist/sdf/index.js.map +1 -0
  277. package/dist/sdk.d.ts +0 -1
  278. package/dist/sdk.d.ts.map +1 -1
  279. package/dist/sdk.js.map +1 -1
  280. package/dist/weapp.d.ts +2 -2
  281. package/dist/weapp.d.ts.map +1 -1
  282. package/dist/weapp.js +1 -1
  283. package/dist/weapp.js.map +1 -1
  284. package/package.json +276 -35
package/dist/index.js CHANGED
@@ -1,75 +1,32 @@
1
1
  /**
2
- * @faicad/faijs �?Faicad CAD execution engine
2
+ * @faicad/faijs — Faicad CAD execution engine
3
3
  *
4
- * 公开 API 统一入口。所有导出按层组织:
5
- * - L0 文本层:parser / codegen / symbol-table / types
6
- * - L1 几何执行层:BREP ops / Shape / 导出
7
- * - L1 Mesh 执行层:cad API
8
- * - L1 Boolean/CSG 辅助:cross-section / deriveNormals / extrude-helpers / joinery-shapes
9
- * - L1 Primitives:geometry / screw / svg-extrude / text / types
10
- * - L1 SDF:sdf-runner / templates / types
11
- * - L1 Knurl:KnurlGenerator / subdivision / textureLoader
12
- * - L1 Topology:build-face-ids / build-selector-runtime / types
13
- * - L2 编排层:CadRuntime / HostPorts
14
- * - L3 Node Host:createNodePorts / CLI
15
- * - OCCT Kernel:initOcctWasm / getKernel / setOcctWasmInitFn / ...
16
- * - CSG Backend:setCsgBackend / geoToManifoldMesh / ...
4
+ * Public API umbrella entry. All exports are re-exports (no new signatures).
5
+ * Organized by architecture layer (L0–L3); each layer consumes `export *` from
6
+ * its sub-module index.ts, with explicit disambiguation for same-name types.
17
7
  */
18
8
  // ── 共享面(env-agnostic:identity + runtime-state + lang/*)──
19
- // 手写清单已收敛:三处 umbrella(index/browser/weapp)统一 re-export,防漂移。
20
9
  export * from './env-agnostic.js';
21
- export { createBrepChainState, initBrepChainState, releaseBrepChainState, isCadFormat, } from './brep/brep-chain.js';
22
- export { solidToShape, getSolidBoundingBox, translateBrep, rotateBrep, scaleBrep, fuseBrep, cutBrep, commonBrep, drillBrep, splitBrep, extrudeBrep, loadBrep, matrixToArray, } from './brep/index.js';
10
+ // ── L1 Mesh(types + knurl + decoration + manifold-loader + query + import-model)──
11
+ export * from './mesh/index.js';
12
+ // ── L1 BREP(ops + chain + utils + export)──
13
+ export * from './brep/index.js';
23
14
  export { buildStlBufferFromMesh } from './brep/export/stl.js';
24
15
  export { exportStepFromSolid, exportStepFromSolids } from './brep/export/step.js';
25
- // ── L1 Mesh ──
26
- // B3 correction (2026-10-06): no `cad` / `meshCad` aggregate is exported from the library
27
- // face. `cad` belongs to the script face (host-injected ops); TS consumers import
28
- // per-module from `@faicad/faijs/mesh/*`.
29
- // 宿主注入的 mesh 装饰几何(cad.engrave 的文字/SVG 几何链在 @faicad/faijs-extra)
30
- export { setEngraveDecorationProvider, getEngraveDecorationProvider } from './mesh/decoration-provider.js';
31
- export { setManifoldWasmUrl, getManifoldWasmUrl, getManifoldModule } from './mesh/manifold-loader.js';
32
- export { NRAD_DEFAULT, NRAD_MIN, NRAD_MAX, clampNRad } from './mesh/types.js';
33
- export { faceAt } from './mesh/query.js';
34
- // ── L1 Boolean/CSG 辅助 ──
35
- export { computeSection, buildExtrudedProfile } from './boolean/cross-section.js';
36
- export { manifoldToMeshData, weldPositionsWorker, dovetailBooleanSplit, dowelOrTenonBooleanSplit } from './boolean/csg-core.js';
37
- export { deriveNormals } from './boolean/deriveNormals.js';
38
- export { buildExtrudeParts, makeWorldPlane } from './boolean/extrude-helpers.js';
39
- export { buildWedgeGeometry, buildDowelGeometry, buildStraightTenonGeometry, } from './boolean/joinery-shapes.js';
40
- // ── CSG Backend ──
41
- export { setCsgBackend } from './boolean/csg-backend.js';
42
- export { geoToManifoldMesh, manifoldMeshToGeo } from './boolean/geo-convert.js';
16
+ // ── L1 Boolean/CSG ──
17
+ export * from './boolean/index.js';
43
18
  // ── L1 Primitives ──
44
- export { mergeBufferGeometries, makePrimitiveGeo, DEFAULT_SIZE, applyPrimitiveOffset } from './primitives/mesh-primitives.js';
45
- export { makeScrew } from './primitives/screw/screw.js';
46
- export { getScrewSpec, getScrewSpecs, threadToPitchMm, SCREW_HEAD_DIMS } from './primitives/screw/screw-db.js';
47
- export { parseSvgNaturalSize } from './primitives/parse-svg-size.js';
48
- export { extractMeshData, primitiveToBrepSolid, geometryToBrepSolid, brepSolidToStep, primitiveToBrepStep, } from './primitives/brep-primitives.js';
49
- // B 组(svg 挤出 / 3D 文字几何链)已随 @faicad/faijs-extra 迁出;
50
- // 留 core 的是零 three 的 CJK 字符判定与系统字体装载。
51
- export { loadSystemCjkFont, containsCjk, isCjkChar } from './primitives/text/cjk-font.js';
52
- export { nextPrimitiveColor } from './primitives/types.js';
19
+ export * from './primitives/index.js';
53
20
  // ── L1 SDF ──
54
- export { runSdf } from './sdf/sdf-runner.js';
55
- export { runSdfInline } from './sdf/sdf-core.js';
56
- export { SDF_TEMPLATES, DEFAULT_SDF_TEMPLATE } from './sdf/templates.js';
57
- export { boxToTuple, parseParamDefs, defaultParamValues } from './sdf/types.js';
58
- // ── L1 Knurl ──
59
- export { applyKnurlDisplacement, KNURL_DEFAULTS } from './mesh/knurl/KnurlGenerator.js';
60
- export { subdivide } from './mesh/knurl/subdivision.js';
61
- export { loadKnurlingTexture, setKnurlTextureLoader } from './mesh/knurl/textureLoader.js';
62
- export { QuantizedPointMap, weldVertices } from './mesh/knurl/meshIndex.js';
63
- export { computeUV, MODE_TRIPLANAR, getCubicBlendWeights } from './mesh/knurl/mapping.js';
64
- export { applyDisplacement } from './mesh/knurl/displacement.js';
21
+ export * from './sdf.js';
65
22
  // ── L1 Topology ──
66
23
  export { TOPOLOGY_FACE_ID_NONE, buildFaceIdsForPart } from './topology/build-face-ids.js';
67
24
  export { buildSelectorRuntime, buildSelectorRuntimeData, buildSelectorRuntimeMaps, } from './topology/build-selector-runtime.js';
68
25
  export * from './topology/naming/index.js';
69
- // ── L2 编排�?──
70
- // D1(2026-09-19):createRuntime 自注册 cad 默认命名空间(引擎 + 标准库定位)。
71
- // 需要纯引擎(不带 cad)的宿主可直接 import { createRuntime } from './cad-runtime/runtime.js'。
72
- export { CadRuntime, createRuntime, computeContentKey, AppendPrefixError } from './cad-runtime/createRuntimeWithCad.js';
26
+ // ── L2 编排层 ──
27
+ // createRuntime auto-registers the built-in cad namespace (D1, facade-refactor
28
+ // 2026-10-08). Use createBareRuntime for a pure engine without cad.
29
+ export { CadRuntime, createRuntime, createBareRuntime, computeContentKey, AppendPrefixError } from './cad-runtime/runtime.js';
73
30
  export { createPreviewExec } from './cad-runtime/preview-exec.js';
74
31
  // ── OCCT Kernel ──
75
32
  export { initOcctWasm, getKernel, disposeOcctWasm, setOcctWasmInitFn, computeEffectiveDeflection, importStepToMesh, importBrepToMesh, meshesToStep, releaseShape, importAssemblyFromStep, releaseAssemblyTree, collectLeafParts, } from './occt-kernel/occtKernel.js';
@@ -98,30 +55,15 @@ export { assertShapeSlotExclusive } from './cad-runtime/backend-dispatch.js';
98
55
  export { buildSolidTopologyRuntime } from './brep/brep-topology.js';
99
56
  // ── Font Registry (for browser host injection) ──
100
57
  export { setFontLoader, getFontLoader, loadFont, ensureDefaultFont, ensureFont, getFont, clearFonts } from './brep/text/fontRegistry.js';
101
- // ── L3 Node Host ──
102
- // node-host 模块已移�?@faicad/faijs/node 入口,避免浏览器环境静�?import
103
- // node-host 模块(含 Node.js 专用代码�?fs/path)导致生产构�?404�?
104
- // �?Node.js 环境中:import { createNodePorts } from '@faicad/faijs/node'
105
58
  // ── L3 Browser Host ──
106
59
  export { createBrowserPorts } from './browser-host/index.js';
107
- // D3-Browser(§9.4):CDN 通用 libLoader 工厂(a/b 混合)。**不**被 createBrowserPorts
108
- // 默认装配——demo 的源码 alias HMR 路径必须零网络;CDN 装载由主机显式注入。
109
60
  export { createBrowserLibLoader, DEFAULT_CDN_BASE } from './cad-runtime/browser-lib-loader.js';
110
61
  export { BrowserEventSink } from './browser-host/browser-event-sink.js';
111
62
  export { BrowserFontProvider } from './browser-host/browser-font-provider.js';
112
63
  export { FetchAssetResolver } from './browser-host/fetch-asset-resolver.js';
113
64
  // ── L3 API 面(api/ 层)──
114
- // P23 主导出切换(§4.2 / Q1):`export * from './api/index.js'` 现在同时带来
115
- // ① faijs 特有 dual op(mesh+brep 双路径,D11 双形态归一);
116
- // ② 生成脚本面 op(`api/generated/script-face.ts`,defineOp({ brep: __own_* }) 直连的
117
- // brep-only 语句级 op——`cad.*` 脚本面与此同源,B1 三源一致);
118
- // ③ 2026-09-25 core-decouple:brepjsCompat 命名空间与 op 投影随旧子包删除
119
- // (裁决 9);`api/geom-types`(原名 api/brepjs-compat,2026-10-07 改名)仅保留 core 内联的 Result / 向量 / 平面 / 错误 /
120
- // 常量组合器(§5.2),顶层平铺不变。
121
65
  export * from './api/index.js';
122
66
  export { createApiNamespace } from './api/api-namespace.js';
123
- // B5 (2026-10-06): unit constants re-exported from the main entry. In the script
124
- // face they are import-free globals (S4_SAFE_GLOBALS subset); TS consumers now
125
- // get the same names here instead of hunting for the /units subpath.
67
+ // ── Units ──
126
68
  export { MM, CM, M, MICRON, INCH, FOOT, YARD, DEGREE, RADIAN, SCRIPT_UNIT_NAMES, } from './units.js';
127
69
  //# sourceMappingURL=index.js.map
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 ──\n// B3 correction (2026-10-06): no `cad` / `meshCad` aggregate is exported from the library\n// face. `cad` belongs to the script face (host-injected ops); TS consumers import\n// per-module from `@faicad/faijs/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`,defineOp({ brep: __own_* }) 直连的\n// brep-only 语句级 op——`cad.*` 脚本面与此同源,B1 三源一致);\n// ③ 2026-09-25 core-decouple:brepjsCompat 命名空间与 op 投影随旧子包删除\n// (裁决 9);`api/geom-types`(原名 api/brepjs-compat,2026-10-07 改名)仅保留 core 内联的 Result / 向量 / 平面 / 错误 /\n// 常量组合器(§5.2),顶层平铺不变。\nexport * from './api'\nexport { createApiNamespace } from './api/api-namespace'\n// B5 (2026-10-06): unit constants re-exported from the main entry. In the script\n// face they are import-free globals (S4_SAFE_GLOBALS subset); TS consumers now\n// get the same names here instead of hunting for the /units subpath.\nexport {\n MM, CM, M, MICRON, INCH, FOOT, YARD,\n DEGREE, RADIAN,\n SCRIPT_UNIT_NAMES,\n} from './units'\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 * Public API umbrella entry. All exports are re-exports (no new signatures).\n * Organized by architecture layer (L0–L3); each layer consumes `export *` from\n * its sub-module index.ts, with explicit disambiguation for same-name types.\n */\n\n// ── 共享面(env-agnostic:identity + runtime-state + lang/*)──\nexport * from './env-agnostic'\n\n// ── L1 Mesh(types + knurl + decoration + manifold-loader + query + import-model)──\nexport * from './mesh'\n\n// ── L1 BREP(ops + chain + utils + export)──\nexport * 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 Boolean/CSG ──\nexport * from './boolean'\n\n// ── L1 Primitives ──\nexport * from './primitives'\n\n// ── L1 SDF ──\nexport * from './sdf'\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'\nexport * from './topology/naming'\n\n// ── L2 编排层 ──\n// createRuntime auto-registers the built-in cad namespace (D1, facade-refactor\n// 2026-10-08). Use createBareRuntime for a pure engine without cad.\nexport { CadRuntime, createRuntime, createBareRuntime, computeContentKey, AppendPrefixError } from './cad-runtime/runtime'\nexport { createPreviewExec } from './cad-runtime/preview-exec'\nexport type { PreviewExec } from './cad-runtime/preview-exec'\nexport type { ExecutionResult, ExecuteOptions, CheckResult, CheckError, CadRuntimeOptions, PartTopology, TopologySource } from './cad-runtime/runtime'\nexport type {\n HostPorts, CsgBackend, SdfBackend, FontProvider, TextureSampler,\n AssetResolver, EventSink, ExecutionMode, HostEnv,\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, BrepEvolutionKind,\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 Browser Host ──\nexport { createBrowserPorts } from './browser-host'\nexport type { CreateBrowserPortsOptions } from './browser-host'\nexport { createBrowserLibLoader, DEFAULT_CDN_BASE } from './cad-runtime/browser-lib-loader'\nexport type {\n BrowserLibLoader, BrowserLibMeta, CreateBrowserLibLoaderOptions,\n} from './cad-runtime/browser-lib-loader'\nexport { BrowserEventSink } from './browser-host/browser-event-sink'\nexport { BrowserFontProvider } from './browser-host/browser-font-provider'\nexport type { BrowserFontProviderOptions } from './browser-host/browser-font-provider'\nexport { FetchAssetResolver } from './browser-host/fetch-asset-resolver'\nexport type { FetchAssetResolverOptions } from './browser-host/fetch-asset-resolver'\n\n// ── L3 API 面(api/ 层)──\nexport * from './api'\nexport { createApiNamespace } from './api/api-namespace'\n\n// ── Units ──\nexport {\n MM, CM, M, MICRON, INCH, FOOT, YARD,\n DEGREE, RADIAN,\n SCRIPT_UNIT_NAMES,\n} from './units'\n\n// ── 重名消歧:Vec3 双源(lang/types vs mesh/types),显式指定 lang 版 ──\nexport type { Vec3 } from './lang/types'\n"]}
@@ -51,6 +51,8 @@ declare const _default: {
51
51
  halfSpace: {};
52
52
  exportStl: {};
53
53
  exportBrep: {};
54
+ exportStep: {};
55
+ export3mf: {};
54
56
  isEdge: {};
55
57
  isFace: {};
56
58
  isShell: {};
@@ -81,6 +83,21 @@ declare const _default: {
81
83
  outerWire: {};
82
84
  draftPrism: {};
83
85
  pipe: {};
86
+ containsPoint: {};
87
+ distanceBetween: {};
88
+ inertia: {};
89
+ linearCenterOfMass: {};
90
+ projectPointOnEdge: {};
91
+ projectPointOnFace: {};
92
+ classifyPointOnFace: {};
93
+ uvFromPoint: {};
94
+ vertexPosition: {};
95
+ subShapeCount: {};
96
+ iterShapes: {};
97
+ liftCurve2d: {};
98
+ commonCells: {};
99
+ boolean: {};
100
+ alignTo: {};
84
101
  faceNormal: {};
85
102
  bboxCenter: {};
86
103
  bboxMin: {};
@@ -1 +1 @@
1
- {"version":3,"file":"symbol-table.generated.d.ts","sourceRoot":"","sources":["../../src/lang/symbol-table.generated.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACH,wBAoIC"}
1
+ {"version":3,"file":"symbol-table.generated.d.ts","sourceRoot":"","sources":["../../src/lang/symbol-table.generated.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACH,wBAqJC"}
@@ -51,6 +51,8 @@ export default {
51
51
  "halfSpace": {},
52
52
  "exportStl": {},
53
53
  "exportBrep": {},
54
+ "exportStep": {},
55
+ "export3mf": {},
54
56
  "isEdge": {},
55
57
  "isFace": {},
56
58
  "isShell": {},
@@ -81,6 +83,21 @@ export default {
81
83
  "outerWire": {},
82
84
  "draftPrism": {},
83
85
  "pipe": {},
86
+ "containsPoint": {},
87
+ "distanceBetween": {},
88
+ "inertia": {},
89
+ "linearCenterOfMass": {},
90
+ "projectPointOnEdge": {},
91
+ "projectPointOnFace": {},
92
+ "classifyPointOnFace": {},
93
+ "uvFromPoint": {},
94
+ "vertexPosition": {},
95
+ "subShapeCount": {},
96
+ "iterShapes": {},
97
+ "liftCurve2d": {},
98
+ "commonCells": {},
99
+ "boolean": {},
100
+ "alignTo": {},
84
101
  "faceNormal": {},
85
102
  "bboxCenter": {},
86
103
  "bboxMin": {},
@@ -1 +1 @@
1
- {"version":3,"file":"symbol-table.generated.js","sourceRoot":"","sources":["../../src/lang/symbol-table.generated.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * symbol-table 生成文件 — 禁手改。\n * 由 scripts/gen-symbol-table.ts 从 api-namespace 的 cad 命名空间生成(键存在性)。\n * keep-syntax P1 后符号表只承载 check() 符号检查(\"函数不存在\"判定);\n * 保留语义由 keep 声明表达,不再有 readonly 标注。\n */\nexport default {\n \"box\": {},\n \"sphere\": {},\n \"cylinder\": {},\n \"cone\": {},\n \"wedge\": {},\n \"screw\": {},\n \"profile\": {},\n \"sketchOnPlane\": {},\n \"sketchOnFace\": {},\n \"punchHole\": {},\n \"wire\": {},\n \"helix\": {},\n \"sdf\": {},\n \"translate\": {},\n \"rotate_euler\": {},\n \"scale\": {},\n \"scale3d\": {},\n \"engrave\": {},\n \"chamfer\": {},\n \"fillet\": {},\n \"knurl\": {},\n \"shell\": {},\n \"draft\": {},\n \"thicken\": {},\n \"filletVariable\": {},\n \"splitByPlane\": {},\n \"sectionByPlane\": {},\n \"defeature\": {},\n \"reverseShape\": {},\n \"unifySameDomain\": {},\n \"sew\": {},\n \"sewAndSolidify\": {},\n \"removeHolesFromFace\": {},\n \"union\": {},\n \"subtract\": {},\n \"intersect\": {},\n \"extrude\": {},\n \"revolve\": {},\n \"sweep\": {},\n \"loft\": {},\n \"surface\": {},\n \"offset2d\": {},\n \"solidFromFaces\": {},\n \"halfSpace\": {},\n \"exportStl\": {},\n \"exportBrep\": {},\n \"isEdge\": {},\n \"isFace\": {},\n \"isShell\": {},\n \"isVertex\": {},\n \"isWire\": {},\n \"isCompound\": {},\n \"isCompSolid\": {},\n \"isEqual\": {},\n \"toSVG\": {},\n \"toMultiviewSVG\": {},\n \"toPNG\": {},\n \"toMultiviewPNG\": {},\n \"edge\": {},\n \"circleArc\": {},\n \"ellipseEdge\": {},\n \"ellipseArc\": {},\n \"tangentArc\": {},\n \"approximatePoints\": {},\n \"interpolateWithTangents\": {},\n \"curveDegreeElevate\": {},\n \"curveKnotInsert\": {},\n \"curveKnotRemove\": {},\n \"curveIsPeriodic\": {},\n \"faceOnSurface\": {},\n \"nonPlanarFace\": {},\n \"makeSolid\": {},\n \"reverseSurfaceU\": {},\n \"outerWire\": {},\n \"draftPrism\": {},\n \"pipe\": {},\n \"faceNormal\": {},\n \"bboxCenter\": {},\n \"bboxMin\": {},\n \"bboxMax\": {},\n \"edgeRef\": {},\n \"faceRef\": {},\n \"jointTrajectory\": {},\n \"inverseKinematics\": {},\n \"mechanismDOF\": {},\n \"asset\": {},\n \"import_brep\": {},\n \"import_step\": {},\n \"compound\": {},\n \"place\": {},\n \"cut\": {},\n \"split\": {},\n \"linearPattern\": {},\n \"circularPattern\": {},\n \"gridPattern\": {},\n \"rectangularPattern\": {},\n \"mirrorJoin\": {},\n \"mirror\": {},\n \"clone\": {},\n \"torus\": {},\n \"fuse\": {},\n \"inspectMassProps\": {},\n \"area\": {},\n \"length\": {},\n \"volume\": {},\n \"centerOfMass\": {},\n \"viewCamera\": {},\n \"projectView\": {},\n \"projectSheet\": {},\n \"complexExtrude\": {},\n \"twistExtrude\": {},\n \"roof\": {},\n \"drill\": {},\n \"pocket\": {},\n \"boss\": {},\n \"thread\": {},\n \"convexHull\": {},\n \"makeBaseBox\": {},\n \"ellipsoid\": {},\n \"rotate\": {},\n \"applyMatrix\": {},\n \"locate\": {},\n \"offset\": {},\n \"heal\": {},\n \"simplify\": {},\n \"isValid\": {},\n \"isSameShape\": {},\n \"autoHeal\": {},\n \"fixShape\": {},\n \"healSolid\": {},\n \"fixSelfIntersection\": {}\n}\n"]}
1
+ {"version":3,"file":"symbol-table.generated.js","sourceRoot":"","sources":["../../src/lang/symbol-table.generated.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * symbol-table 生成文件 — 禁手改。\n * 由 scripts/gen-symbol-table.ts 从 api-namespace 的 cad 命名空间生成(键存在性)。\n * keep-syntax P1 后符号表只承载 check() 符号检查(\"函数不存在\"判定);\n * 保留语义由 keep 声明表达,不再有 readonly 标注。\n */\nexport default {\n \"box\": {},\n \"sphere\": {},\n \"cylinder\": {},\n \"cone\": {},\n \"wedge\": {},\n \"screw\": {},\n \"profile\": {},\n \"sketchOnPlane\": {},\n \"sketchOnFace\": {},\n \"punchHole\": {},\n \"wire\": {},\n \"helix\": {},\n \"sdf\": {},\n \"translate\": {},\n \"rotate_euler\": {},\n \"scale\": {},\n \"scale3d\": {},\n \"engrave\": {},\n \"chamfer\": {},\n \"fillet\": {},\n \"knurl\": {},\n \"shell\": {},\n \"draft\": {},\n \"thicken\": {},\n \"filletVariable\": {},\n \"splitByPlane\": {},\n \"sectionByPlane\": {},\n \"defeature\": {},\n \"reverseShape\": {},\n \"unifySameDomain\": {},\n \"sew\": {},\n \"sewAndSolidify\": {},\n \"removeHolesFromFace\": {},\n \"union\": {},\n \"subtract\": {},\n \"intersect\": {},\n \"extrude\": {},\n \"revolve\": {},\n \"sweep\": {},\n \"loft\": {},\n \"surface\": {},\n \"offset2d\": {},\n \"solidFromFaces\": {},\n \"halfSpace\": {},\n \"exportStl\": {},\n \"exportBrep\": {},\n \"exportStep\": {},\n \"export3mf\": {},\n \"isEdge\": {},\n \"isFace\": {},\n \"isShell\": {},\n \"isVertex\": {},\n \"isWire\": {},\n \"isCompound\": {},\n \"isCompSolid\": {},\n \"isEqual\": {},\n \"toSVG\": {},\n \"toMultiviewSVG\": {},\n \"toPNG\": {},\n \"toMultiviewPNG\": {},\n \"edge\": {},\n \"circleArc\": {},\n \"ellipseEdge\": {},\n \"ellipseArc\": {},\n \"tangentArc\": {},\n \"approximatePoints\": {},\n \"interpolateWithTangents\": {},\n \"curveDegreeElevate\": {},\n \"curveKnotInsert\": {},\n \"curveKnotRemove\": {},\n \"curveIsPeriodic\": {},\n \"faceOnSurface\": {},\n \"nonPlanarFace\": {},\n \"makeSolid\": {},\n \"reverseSurfaceU\": {},\n \"outerWire\": {},\n \"draftPrism\": {},\n \"pipe\": {},\n \"containsPoint\": {},\n \"distanceBetween\": {},\n \"inertia\": {},\n \"linearCenterOfMass\": {},\n \"projectPointOnEdge\": {},\n \"projectPointOnFace\": {},\n \"classifyPointOnFace\": {},\n \"uvFromPoint\": {},\n \"vertexPosition\": {},\n \"subShapeCount\": {},\n \"iterShapes\": {},\n \"liftCurve2d\": {},\n \"commonCells\": {},\n \"boolean\": {},\n \"alignTo\": {},\n \"faceNormal\": {},\n \"bboxCenter\": {},\n \"bboxMin\": {},\n \"bboxMax\": {},\n \"edgeRef\": {},\n \"faceRef\": {},\n \"jointTrajectory\": {},\n \"inverseKinematics\": {},\n \"mechanismDOF\": {},\n \"asset\": {},\n \"import_brep\": {},\n \"import_step\": {},\n \"compound\": {},\n \"place\": {},\n \"cut\": {},\n \"split\": {},\n \"linearPattern\": {},\n \"circularPattern\": {},\n \"gridPattern\": {},\n \"rectangularPattern\": {},\n \"mirrorJoin\": {},\n \"mirror\": {},\n \"clone\": {},\n \"torus\": {},\n \"fuse\": {},\n \"inspectMassProps\": {},\n \"area\": {},\n \"length\": {},\n \"volume\": {},\n \"centerOfMass\": {},\n \"viewCamera\": {},\n \"projectView\": {},\n \"projectSheet\": {},\n \"complexExtrude\": {},\n \"twistExtrude\": {},\n \"roof\": {},\n \"drill\": {},\n \"pocket\": {},\n \"boss\": {},\n \"thread\": {},\n \"convexHull\": {},\n \"makeBaseBox\": {},\n \"ellipsoid\": {},\n \"rotate\": {},\n \"applyMatrix\": {},\n \"locate\": {},\n \"offset\": {},\n \"heal\": {},\n \"simplify\": {},\n \"isValid\": {},\n \"isSameShape\": {},\n \"autoHeal\": {},\n \"fixShape\": {},\n \"healSolid\": {},\n \"fixSelfIntersection\": {}\n}\n"]}
@@ -9,29 +9,24 @@
9
9
  * 3. 同步签名、异步执行:API 签名同步(或 async);worker 边界由 ScriptEngine 处理
10
10
  * 4. 坐标系:右手系 +Z 向上、毫米、角度用度
11
11
  *
12
- * ⚠️ B3 补正(2026-10-06,用户决定):本文件**不再导出任何聚合对象**。
13
- *
14
- * 此前这里有一个把 primitives / brep / transform / boolean / engrave / query / io
15
- * 全量聚合进来的对象(曾名 `cad`,B3 一度改名 `meshCad`)。它把内核实现包装成一个
16
- * 「形似平台 API」的门面,使下游(含本仓测试)能 `import { cad } from '../mesh/index.js'`
17
- * 把内核当成 faijs 的公开 API——这正是要根除的混淆。改名只是换了张皮,因此聚合
18
- * 对象已整体删除,不再以任何名字存在。
19
- *
20
- * 要哪一层的实现,就从对应模块具名导入:
21
- * - `mesh/primitives` box / sphere / cylinder / cone / wedge / screw / sdf
22
- * - `mesh/transform` translate / rotate_euler / scale / scale3d / transformMatrix
23
- * - `mesh/boolean` union / subtract / intersect
24
- * - `mesh/engrave` engrave / knurl
25
- * - `mesh/query` boundingBox / bboxCenter / volume / faceAt
26
- * - `mesh/io` importFile / detectStepUnit
27
- * - `brep`、`brep/primitives-brep` BREP(OCCT)路径
28
- *
29
- * 注意:脚本面的 `cad`(宿主经 `registerLib('cad', …)` 注入的 op 命名空间)与这一层
30
- * 是两回事——它不在这里,也不该被这里 import。见 AGENTS.md「库开发者 vs 脚本开发者」。
12
+ * ⚠️ B3 补正(2026-10-06):本文件不导出任何聚合对象(`cad` / `meshCad` 已删除)。
13
+ * 要内核实现就从对应模块具名导入。门面层经 `export * from './mesh.js'` 消费。
31
14
  */
32
- export type { Shape, Vec3, BoundingBox, FaceDescriptor } from './types.js';
15
+ export type { Shape, BoundingBox, FaceDescriptor, BoxParams, SphereParams, CylinderParams, ConeParams, WedgeParams, TextParams, SvgExtrudeParams, SdfParams, DrillParams, ExtrudeParams, EngraveParams, KnurlParams, SplitPlane, SplitResult, DovetailSplitParams, TenonSplitParams, } from './types.js';
16
+ export { NRAD_DEFAULT, NRAD_MIN, NRAD_MAX, clampNRad } from './types.js';
17
+ export { isMeshShape } from './types.js';
33
18
  export { guessStlUnit } from './stl-unit.js';
34
- export type { BoxParams, SphereParams, CylinderParams, ConeParams, WedgeParams, TextParams, SvgExtrudeParams, SdfParams, DrillParams, ExtrudeParams, EngraveParams, KnurlParams, SplitPlane, SplitResult, DovetailSplitParams, DowelSplitParams, TenonSplitParams, } from './types.js';
35
- export type { BrepChainState, DrillBrepParams, SplitBrepParams, SplitBrepResult, ExtrudeBrepParams, } from '../brep/index.js';
36
- export { createBrepChainState, initBrepChainState, releaseBrepChainState, solidToShape, isCadFormat, } from '../brep/index.js';
19
+ export { setEngraveDecorationProvider, getEngraveDecorationProvider } from './decoration-provider.js';
20
+ export type { EngraveDecorationProvider, EngraveDecorationParams } from './decoration-provider.js';
21
+ export { setManifoldWasmUrl, getManifoldWasmUrl, getManifoldModule } from './manifold-loader.js';
22
+ export { faceAt } from './query.js';
23
+ export { applyKnurlDisplacement, KNURL_DEFAULTS } from './knurl/KnurlGenerator.js';
24
+ export type { KnurlBounds } from './knurl/KnurlGenerator.js';
25
+ export { subdivide } from './knurl/subdivision.js';
26
+ export { loadKnurlingTexture, setKnurlTextureLoader } from './knurl/textureLoader.js';
27
+ export type { TextureData } from './knurl/textureLoader.js';
28
+ export { QuantizedPointMap, weldVertices } from './knurl/meshIndex.js';
29
+ export { computeUV, MODE_TRIPLANAR, getCubicBlendWeights, type MappingSettings } from './knurl/mapping.js';
30
+ export { applyDisplacement, type DisplacementSettings } from './knurl/displacement.js';
31
+ export type { ImportModel, ImportPart, ImportAssemblyNode, ImportBambuViews, } from './import-model.js';
37
32
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mesh/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAIH,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AACzC,YAAY,EACV,SAAS,EAAE,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,WAAW,EAChE,UAAU,EAAE,gBAAgB,EAAE,SAAS,EACvC,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,WAAW,EACtD,UAAU,EAAE,WAAW,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,gBAAgB,GACjF,MAAM,SAAS,CAAA;AAGhB,YAAY,EACV,cAAc,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EACjE,iBAAiB,GAClB,MAAM,SAAS,CAAA;AAChB,OAAO,EACL,oBAAoB,EAAE,kBAAkB,EAAE,qBAAqB,EAC/D,YAAY,EACZ,WAAW,GACZ,MAAM,SAAS,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mesh/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,YAAY,EACV,KAAK,EAAE,WAAW,EAAE,cAAc,EAClC,SAAS,EAAE,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,WAAW,EAChE,UAAU,EAAE,gBAAgB,EAAE,SAAS,EACvC,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,WAAW,EACtD,UAAU,EAAE,WAAW,EAAE,mBAAmB,EAAE,gBAAgB,GAC/D,MAAM,SAAS,CAAA;AAChB,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAGrC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAGzC,OAAO,EAAE,4BAA4B,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAA;AAClG,YAAY,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAA;AAG/F,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAG7F,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAGhC,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAC/E,YAAY,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAC/C,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAA;AAClF,YAAY,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACnE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,oBAAoB,EAAE,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACvG,OAAO,EAAE,iBAAiB,EAAE,KAAK,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAGnF,YAAY,EACV,WAAW,EAAE,UAAU,EAAE,kBAAkB,EAAE,gBAAgB,GAC9D,MAAM,gBAAgB,CAAA"}
@@ -9,26 +9,24 @@
9
9
  * 3. 同步签名、异步执行:API 签名同步(或 async);worker 边界由 ScriptEngine 处理
10
10
  * 4. 坐标系:右手系 +Z 向上、毫米、角度用度
11
11
  *
12
- * ⚠️ B3 补正(2026-10-06,用户决定):本文件**不再导出任何聚合对象**。
13
- *
14
- * 此前这里有一个把 primitives / brep / transform / boolean / engrave / query / io
15
- * 全量聚合进来的对象(曾名 `cad`,B3 一度改名 `meshCad`)。它把内核实现包装成一个
16
- * 「形似平台 API」的门面,使下游(含本仓测试)能 `import { cad } from '../mesh/index.js'`
17
- * 把内核当成 faijs 的公开 API——这正是要根除的混淆。改名只是换了张皮,因此聚合
18
- * 对象已整体删除,不再以任何名字存在。
19
- *
20
- * 要哪一层的实现,就从对应模块具名导入:
21
- * - `mesh/primitives` box / sphere / cylinder / cone / wedge / screw / sdf
22
- * - `mesh/transform` translate / rotate_euler / scale / scale3d / transformMatrix
23
- * - `mesh/boolean` union / subtract / intersect
24
- * - `mesh/engrave` engrave / knurl
25
- * - `mesh/query` boundingBox / bboxCenter / volume / faceAt
26
- * - `mesh/io` importFile / detectStepUnit
27
- * - `brep`、`brep/primitives-brep` BREP(OCCT)路径
28
- *
29
- * 注意:脚本面的 `cad`(宿主经 `registerLib('cad', …)` 注入的 op 命名空间)与这一层
30
- * 是两回事——它不在这里,也不该被这里 import。见 AGENTS.md「库开发者 vs 脚本开发者」。
12
+ * ⚠️ B3 补正(2026-10-06):本文件不导出任何聚合对象(`cad` / `meshCad` 已删除)。
13
+ * 要内核实现就从对应模块具名导入。门面层经 `export * from './mesh.js'` 消费。
31
14
  */
15
+ export { NRAD_DEFAULT, NRAD_MIN, NRAD_MAX, clampNRad } from './types.js';
16
+ export { isMeshShape } from './types.js';
17
+ // ── stl-unit ──
32
18
  export { guessStlUnit } from './stl-unit.js';
33
- export { createBrepChainState, initBrepChainState, releaseBrepChainState, solidToShape, isCadFormat, } from '../brep/index.js';
19
+ // ── decoration-provider ──
20
+ export { setEngraveDecorationProvider, getEngraveDecorationProvider } from './decoration-provider.js';
21
+ // ── manifold-loader ──
22
+ export { setManifoldWasmUrl, getManifoldWasmUrl, getManifoldModule } from './manifold-loader.js';
23
+ // ── query ──
24
+ export { faceAt } from './query.js';
25
+ // ── knurl ──
26
+ export { applyKnurlDisplacement, KNURL_DEFAULTS } from './knurl/KnurlGenerator.js';
27
+ export { subdivide } from './knurl/subdivision.js';
28
+ export { loadKnurlingTexture, setKnurlTextureLoader } from './knurl/textureLoader.js';
29
+ export { QuantizedPointMap, weldVertices } from './knurl/meshIndex.js';
30
+ export { computeUV, MODE_TRIPLANAR, getCubicBlendWeights } from './knurl/mapping.js';
31
+ export { applyDisplacement } from './knurl/displacement.js';
34
32
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mesh/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAKH,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAazC,OAAO,EACL,oBAAoB,EAAE,kBAAkB,EAAE,qBAAqB,EAC/D,YAAY,EACZ,WAAW,GACZ,MAAM,SAAS,CAAA","sourcesContent":["/**\n * mesh — 纯数据几何内核(按模块组织的实现层)\n *\n * See docs/api-contract.md §1 (architecture layers) and §10 (api function catalog).\n *\n * 原则(§5.1):\n * 1. 全部纯数据:输入输出是 Shape (ManifoldMeshData),不碰 THREE 场景、不读 store\n * 2. 不可变:每个 API 返回新几何,不修改输入\n * 3. 同步签名、异步执行:API 签名同步(或 async);worker 边界由 ScriptEngine 处理\n * 4. 坐标系:右手系 +Z 向上、毫米、角度用度\n *\n * ⚠️ B3 补正(2026-10-06,用户决定):本文件**不再导出任何聚合对象**。\n *\n * 此前这里有一个把 primitives / brep / transform / boolean / engrave / query / io\n * 全量聚合进来的对象(曾名 `cad`,B3 一度改名 `meshCad`)。它把内核实现包装成一个\n * 「形似平台 API」的门面,使下游(含本仓测试)能 `import { cad } from '../mesh'`\n * 把内核当成 faijs 的公开 API——这正是要根除的混淆。改名只是换了张皮,因此聚合\n * 对象已整体删除,不再以任何名字存在。\n *\n * 要哪一层的实现,就从对应模块具名导入:\n * - `mesh/primitives` box / sphere / cylinder / cone / wedge / screw / sdf\n * - `mesh/transform` translate / rotate_euler / scale / scale3d / transformMatrix\n * - `mesh/boolean` union / subtract / intersect\n * - `mesh/engrave` engrave / knurl\n * - `mesh/query` boundingBox / bboxCenter / volume / faceAt\n * - `mesh/io` importFile / detectStepUnit\n * - `brep`、`brep/primitives-brep` BREP(OCCT)路径\n *\n * 注意:脚本面的 `cad`(宿主经 `registerLib('cad', …)` 注入的 op 命名空间)与这一层\n * 是两回事——它不在这里,也不该被这里 import。见 AGENTS.md「库开发者 vs 脚本开发者」。\n */\n\n// ── 类型导出 ──\n\nexport type { Shape, Vec3, BoundingBox, FaceDescriptor } from './types'\nexport { guessStlUnit } from './stl-unit'\nexport type {\n BoxParams, SphereParams, CylinderParams, ConeParams, WedgeParams,\n TextParams, SvgExtrudeParams, SdfParams,\n DrillParams, ExtrudeParams, EngraveParams, KnurlParams,\n SplitPlane, SplitResult, DovetailSplitParams, DowelSplitParams, TenonSplitParams,\n} from './types'\n\n// BREP ops 类型导出\nexport type {\n BrepChainState, DrillBrepParams, SplitBrepParams, SplitBrepResult,\n ExtrudeBrepParams,\n} from '../brep'\nexport {\n createBrepChainState, initBrepChainState, releaseBrepChainState,\n solidToShape,\n isCadFormat,\n} from '../brep'\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mesh/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAUH,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAErC,iBAAiB;AACjB,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAEzC,4BAA4B;AAC5B,OAAO,EAAE,4BAA4B,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAA;AAGlG,wBAAwB;AACxB,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAE7F,cAAc;AACd,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAEhC,cAAc;AACd,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAE/E,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAC/C,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAA;AAElF,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACnE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,oBAAoB,EAAwB,MAAM,iBAAiB,CAAA;AACvG,OAAO,EAAE,iBAAiB,EAA6B,MAAM,sBAAsB,CAAA","sourcesContent":["/**\n * mesh — 纯数据几何内核(按模块组织的实现层)\n *\n * See docs/api-contract.md §1 (architecture layers) and §10 (api function catalog).\n *\n * 原则(§5.1):\n * 1. 全部纯数据:输入输出是 Shape (ManifoldMeshData),不碰 THREE 场景、不读 store\n * 2. 不可变:每个 API 返回新几何,不修改输入\n * 3. 同步签名、异步执行:API 签名同步(或 async);worker 边界由 ScriptEngine 处理\n * 4. 坐标系:右手系 +Z 向上、毫米、角度用度\n *\n * ⚠️ B3 补正(2026-10-06):本文件不导出任何聚合对象(`cad` / `meshCad` 已删除)。\n * 要内核实现就从对应模块具名导入。门面层经 `export * from './mesh'` 消费。\n */\n\n// ── types ──\nexport type {\n Shape, BoundingBox, FaceDescriptor,\n BoxParams, SphereParams, CylinderParams, ConeParams, WedgeParams,\n TextParams, SvgExtrudeParams, SdfParams,\n DrillParams, ExtrudeParams, EngraveParams, KnurlParams,\n SplitPlane, SplitResult, DovetailSplitParams, TenonSplitParams,\n} from './types'\nexport { NRAD_DEFAULT, NRAD_MIN, NRAD_MAX, clampNRad } from './types'\nexport { isMeshShape } from './types'\n\n// ── stl-unit ──\nexport { guessStlUnit } from './stl-unit'\n\n// ── decoration-provider ──\nexport { setEngraveDecorationProvider, getEngraveDecorationProvider } from './decoration-provider'\nexport type { EngraveDecorationProvider, EngraveDecorationParams } from './decoration-provider'\n\n// ── manifold-loader ──\nexport { setManifoldWasmUrl, getManifoldWasmUrl, getManifoldModule } from './manifold-loader'\n\n// ── query ──\nexport { faceAt } from './query'\n\n// ── knurl ──\nexport { applyKnurlDisplacement, KNURL_DEFAULTS } from './knurl/KnurlGenerator'\nexport type { KnurlBounds } from './knurl/KnurlGenerator'\nexport { subdivide } from './knurl/subdivision'\nexport { loadKnurlingTexture, setKnurlTextureLoader } from './knurl/textureLoader'\nexport type { TextureData } from './knurl/textureLoader'\nexport { QuantizedPointMap, weldVertices } from './knurl/meshIndex'\nexport { computeUV, MODE_TRIPLANAR, getCubicBlendWeights, type MappingSettings } from './knurl/mapping'\nexport { applyDisplacement, type DisplacementSettings } from './knurl/displacement'\n\n// ── import-model ──\nexport type {\n ImportModel, ImportPart, ImportAssemblyNode, ImportBambuViews,\n} from './import-model'\n"]}
package/dist/mesh/io.d.ts CHANGED
@@ -6,20 +6,29 @@
6
6
  * 坐标永远以 faijs 基准长度单位(mm)存储 — Shape 不贴 unit 标签(D3)。
7
7
  *
8
8
  * 单位换算边界(unit-system §5.2):
9
- * - STL 无单位元数据 → 由 `opts.unit` 显式声明优先;未声明时 faijs 按历史
10
- * host 行为做启发式猜测(`guessStlUnit`,unified 方案 §6.1/§8 —— 3d_editor
11
- * 迁移回归的单位断言依赖此行为)。猜测收敛在 faijs 内(红线 R0:宿主不
12
- * 自实现单位换算),G0 = 折算后坐标,渲染 = 拓扑 = G0。
9
+ * - 本模块只处理 **mesh 格式(STL/3MF)**,坐标可直接折算 → `opts.unit` 提供即
10
+ * **强制设置模型的源单位**(直接指定,覆盖/忽略模型内部记录的单位——STL 无
11
+ * 内部单位、3MF `<model unit>` 声明被覆盖),按 `unitScale(unit)` 折算坐标。
12
+ * 它**只可能来自调用方的显式知识**(脚本作者手写 `cad.load({ file, unit })`、
13
+ * 或宿主让用户选定单位后传入);调用方不知道单位时**必须省略**——省略时:
14
+ * STL 走 faijs 启发式(`guessStlUnit`,unified 方案 §6.1/§8 —— 3d_editor
15
+ * 迁移回归的单位断言依赖此行为)、3MF 走文件 `<model unit>`(无声明 →
16
+ * millimeter)。猜测/折算收敛在 faijs 内(红线 R0:宿主不自实现单位换算),
17
+ * G0 = 折算后坐标,渲染 = 拓扑 = G0。
18
+ * - **STEP/.brep 不经过本模块**(走 BREP 链,load op 内 OCCT 读取):OCCT 按
19
+ * 文件内部单位声明折算(SI_UNIT),**不支持强制设置单位**——load op 对
20
+ * BREP 路径 + 用户显式 unit 直接**明确报错**(不缩放、不 workaround)。
13
21
  * - 3MF `<model unit>` 由解析器读取并换算(micron/mm/cm/inch/foot/meter)。
14
22
  *
15
23
  * 返回契约(unit-system §10.6):`importFile` 返回 `{ shape, unit }` — `unit`
16
- * 是文件源单位(必然有值;faijs 是单一真源):3MF/STEP 取文件声明(STEP 无声明
17
- * → 'mm',与 OCCT 一致),STL 取 opts.unit 或 guessStlUnit 启发式猜测。坐标恒
18
- * 为基准值 — `unit` 只作元数据(sourceUnit 记录、导出目标判定),绝不参与几何
19
- * 缩放(读入折算已由内核/解析器完成,二次缩放 = 双重换算)。
24
+ * 是文件源单位(必然有值;faijs 是单一真源):3MF 取 opts.unit(强制)或文件
25
+ * 声明(无声明 → millimeter),STL 取 opts.unit 或 guessStlUnit 启发式猜测。
26
+ * 坐标恒为基准值 — `unit` 只作元数据(sourceUnit 记录、导出目标判定),绝不
27
+ * 参与几何缩放(读入折算已由解析器完成,二次缩放 = 双重换算)。
20
28
  */
21
29
  import { type UnitName } from '../units.js';
22
30
  import type { Shape } from './types.js';
31
+ import type { CompoundShape } from '../shape.js';
23
32
  import type { FileMeta } from '../api/meta.js';
24
33
  import type { ImportModel } from './import-model.js';
25
34
  /** Result of a unit-aware file import. */
@@ -33,8 +42,10 @@ export interface ImportFileResult {
33
42
  parts: Shape[];
34
43
  /**
35
44
  * The file's source unit (always present; faijs is the single source of truth).
36
- * 3MF/STEP: the file's declared unit (STEP 无声明 → 'mm', 与 OCCT 一致).
37
- * STL: opts.unit if declared, else the guessStlUnit heuristic result.
45
+ * 3MF: opts.unit (forced) if provided, else the file's declared unit
46
+ * (无声明 → millimeter). STL: opts.unit (forced) if provided, else the
47
+ * guessStlUnit heuristic result. STEP/BREP 不经过本模块(OCCT 链不支持
48
+ * 强制设置单位,load op 报错)。
38
49
  * Metadata only — coordinates are already in the faijs base unit (mm).
39
50
  */
40
51
  unit: UnitName;
@@ -54,6 +65,15 @@ export interface ImportFileResult {
54
65
  * 单/多零件均登记(单零件 parts 长度 1)。
55
66
  */
56
67
  importModel?: ImportModel;
68
+ /**
69
+ * 装配层级(方案 2026-10-08 §2.1 / 第 5 步「导入归一」):当 3MF 含 `<components>`
70
+ * 装配结构时,按层级重建为 `CompoundShape`,每个子节点携带相对父的 `transform`
71
+ * (来自 3MF `<component transform>` / build `<item transform>`,行主序 3×4,平移在
72
+ * 末列,与写出器同源)。仅当存在真实装配(多 item 或任一 item 带 components)时存在;
73
+ * 单零件平铺导入不走它(`shape` / `parts` 已覆盖)。viewer 用 `parts`(已烘焙实例),
74
+ * 往返/层级消费者用 `assembly`(局部几何 + 节点 transform)。
75
+ */
76
+ assembly?: Shape | CompoundShape;
57
77
  }
58
78
  /**
59
79
  * Bounded scan window for `detectStepUnit`. Unit entities sit at the front of
@@ -88,10 +108,18 @@ export declare function detectStepUnit(stepText: string): UnitName | null;
88
108
  * @param buffer - the raw file bytes to parse (already decompressed; stpz
89
109
  * unzipping is the caller's job — faijs never unzips implicitly).
90
110
  * @param format - format identifier such as 'stl', '3mf'/'threemf' or 'step'
91
- * (defaults to 'stl').
92
- * @param opts - optional settings; `unit` (a UnitName string) declares the
93
- * source unit for formats without unit metadata (e.g. STL). Defaults to
94
- * the guessStlUnit heuristic when omitted.
111
+ * (defaults to 'stl'). **仅 mesh 格式(STL/3MF)走本模块**;STEP/BREP 走
112
+ * BREP 链(load op 内 OCCT 读取,不支持强制设置单位)。
113
+ * @param opts - optional settings; `unit` (a UnitName string) **force-sets the
114
+ * model's source unit** (STL/3MF): it is NOT a default, it directly specifies
115
+ * the unit and overrides/ignores any unit recorded inside the model (3MF
116
+ * `<model unit>`; STL has none), geometry scaled by `unitScale(unit)`. Only
117
+ * provide it when the caller actually knows the unit (author-written
118
+ * `cad.load({ file, unit })`, or a host unit picker). When the caller does
119
+ * NOT know the unit, it MUST omit `unit` — STL then guesses via
120
+ * `guessStlUnit` (the only allowed guessing path), 3MF uses the file
121
+ * declaration (none → millimeter). A wrong explicit unit scales geometry
122
+ * wrongly and is never re-guessed.
95
123
  * @returns the shape with base-unit coordinates plus the file's source unit
96
124
  * (`unit`, metadata only; always present — faijs is the single source of truth).
97
125
  */
@@ -1 +1 @@
1
- {"version":3,"file":"io.d.ts","sourceRoot":"","sources":["../../src/mesh/io.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAOH,OAAO,EAAa,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAA;AAEnD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAEpC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAEjD,0CAA0C;AAC1C,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,KAAK,CAAA;IACZ;;;;OAIG;IACH,KAAK,EAAE,KAAK,EAAE,CAAA;IACd;;;;;OAKG;IACH,IAAI,EAAE,QAAQ,CAAA;IACd;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB;;;OAGG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB;;;OAGG;IACH,WAAW,CAAC,EAAE,WAAW,CAAA;CAC1B;AAuBD;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,QAAa,CAAA;AAE/C;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAqBhE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,WAAW,EACnB,MAAM,CAAC,EAAE,MAAM,EACf,IAAI,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,QAAQ,CAAA;CAAE,GACzB,OAAO,CAAC,gBAAgB,CAAC,CA6F3B"}
1
+ {"version":3,"file":"io.d.ts","sourceRoot":"","sources":["../../src/mesh/io.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAOH,OAAO,EAAa,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAA;AAEnD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAE7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAEjD,0CAA0C;AAC1C,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,KAAK,CAAA;IACZ;;;;OAIG;IACH,KAAK,EAAE,KAAK,EAAE,CAAA;IACd;;;;;;;OAOG;IACH,IAAI,EAAE,QAAQ,CAAA;IACd;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB;;;OAGG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB;;;OAGG;IACH,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,KAAK,GAAG,aAAa,CAAA;CACjC;AAuBD;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,QAAa,CAAA;AAE/C;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAqBhE;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,WAAW,EACnB,MAAM,CAAC,EAAE,MAAM,EACf,IAAI,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,QAAQ,CAAA;CAAE,GACzB,OAAO,CAAC,gBAAgB,CAAC,CAmG3B"}