@faicad/faijs 0.35.2 → 0.35.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/dist/api/assembly/entities.js +14 -4
  2. package/dist/api/assembly/entities.js.map +1 -1
  3. package/dist/api/extrude.d.ts.map +1 -1
  4. package/dist/api/extrude.js +4 -1
  5. package/dist/api/extrude.js.map +1 -1
  6. package/dist/api/fillet.d.ts.map +1 -1
  7. package/dist/api/fillet.js +47 -0
  8. package/dist/api/fillet.js.map +1 -1
  9. package/dist/api/generated/script-face-manifest.js +1 -1
  10. package/dist/api/generated/script-face-manifest.js.map +1 -1
  11. package/dist/api/generated/topology.js +1 -1
  12. package/dist/api/generated/topology.js.map +1 -1
  13. package/dist/api/primitives.d.ts +3 -2
  14. package/dist/api/primitives.d.ts.map +1 -1
  15. package/dist/api/primitives.js +3 -2
  16. package/dist/api/primitives.js.map +1 -1
  17. package/dist/api/surface/arg-spec.d.ts.map +1 -1
  18. package/dist/api/surface/arg-spec.js +5 -6
  19. package/dist/api/surface/arg-spec.js.map +1 -1
  20. package/dist/api/topo-resolve.d.ts.map +1 -1
  21. package/dist/api/topo-resolve.js +24 -5
  22. package/dist/api/topo-resolve.js.map +1 -1
  23. package/dist/brepkit-kernel/brepkitKernel.d.ts.map +1 -1
  24. package/dist/brepkit-kernel/brepkitKernel.js +13 -2
  25. package/dist/brepkit-kernel/brepkitKernel.js.map +1 -1
  26. package/dist/brepkit-kernel/brepkitWasm.d.ts +3 -1
  27. package/dist/brepkit-kernel/brepkitWasm.d.ts.map +1 -1
  28. package/dist/brepkit-kernel/brepkitWasm.js +6 -2
  29. package/dist/brepkit-kernel/brepkitWasm.js.map +1 -1
  30. package/dist/cad-runtime/runtime.d.ts.map +1 -1
  31. package/dist/cad-runtime/runtime.js +15 -2
  32. package/dist/cad-runtime/runtime.js.map +1 -1
  33. package/dist/extra/ops/load.d.ts.map +1 -1
  34. package/dist/extra/ops/load.js +40 -2
  35. package/dist/extra/ops/load.js.map +1 -1
  36. package/dist/mesh/primitives.d.ts +6 -4
  37. package/dist/mesh/primitives.d.ts.map +1 -1
  38. package/dist/mesh/primitives.js +15 -8
  39. package/dist/mesh/primitives.js.map +1 -1
  40. package/dist/mesh/types.d.ts +4 -3
  41. package/dist/mesh/types.d.ts.map +1 -1
  42. package/dist/mesh/types.js.map +1 -1
  43. package/dist/primitives/brep-primitives.d.ts.map +1 -1
  44. package/dist/primitives/brep-primitives.js +39 -12
  45. package/dist/primitives/brep-primitives.js.map +1 -1
  46. package/dist/topology/naming/geom-hint.d.ts +12 -0
  47. package/dist/topology/naming/geom-hint.d.ts.map +1 -1
  48. package/dist/topology/naming/geom-hint.js +1 -1
  49. package/dist/topology/naming/geom-hint.js.map +1 -1
  50. package/dist/topology/naming/lineage.d.ts +1 -0
  51. package/dist/topology/naming/lineage.d.ts.map +1 -1
  52. package/dist/topology/naming/lineage.js +37 -1
  53. package/dist/topology/naming/lineage.js.map +1 -1
  54. package/dist/topology/naming/resolve-face.d.ts +13 -2
  55. package/dist/topology/naming/resolve-face.d.ts.map +1 -1
  56. package/dist/topology/naming/resolve-face.js +18 -2
  57. package/dist/topology/naming/resolve-face.js.map +1 -1
  58. package/package.json +1 -1
@@ -4,7 +4,9 @@
4
4
  * 装载策略(与 occt-kernel 一致):
5
5
  * - 宿主可调用 setBrepkitWasmInitFn(fn) 注入自定义初始化函数
6
6
  * (小程序 Worker 传 WXWebAssembly 实例化路径;node 测试走 npm 包默认 init);
7
- * - 未注入时,node 环境直接 require('@faicad/brepkit2-wasm')(该包胶水零 eval,可直接装载);
7
+ * - 未注入时,node 环境直接 require('brepkit-wasm')(v4.x 官方包,胶水零 eval,可直接装载);
8
+ * 注意:不是 @faicad/brepkit2-wasm(v2 fork 已弃用,见 weapp scripts/rebuild-brepkit-wasm.mjs
9
+ * 的「VENDOR WASM 来源」注释)——两者 fillet/chamfer 内核行为不同。
8
10
  * - 两边都没有 → 抛带上下文的错误(报错好于掩盖,禁止静默回退)。
9
11
  */
10
12
  /** brepkit 内核实例形态(BrepKernel 类,228 个方法;类型面见 npm 包 brepkit_wasm.d.ts)。 */
@@ -1 +1 @@
1
- {"version":3,"file":"brepkitWasm.d.ts","sourceRoot":"","sources":["../../src/brepkit-kernel/brepkitWasm.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,yEAAyE;AACzE,MAAM,MAAM,aAAa,GAAG,GAAG,CAAA;AAkD/B;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,CAAC,MAAM,OAAO,CAAC,aAAa,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAKpF;AAED;;;GAGG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAAC,aAAa,CAAC,CAwBxD;AAED;mCACmC;AACnC,wBAAgB,oBAAoB,IAAI,OAAO,CAE9C;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC"}
1
+ {"version":3,"file":"brepkitWasm.d.ts","sourceRoot":"","sources":["../../src/brepkit-kernel/brepkitWasm.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,yEAAyE;AACzE,MAAM,MAAM,aAAa,GAAG,GAAG,CAAA;AAkD/B;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,CAAC,MAAM,OAAO,CAAC,aAAa,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAKpF;AAED;;;GAGG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAAC,aAAa,CAAC,CA0BxD;AAED;mCACmC;AACnC,wBAAgB,oBAAoB,IAAI,OAAO,CAE9C;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC"}
@@ -4,7 +4,9 @@
4
4
  * 装载策略(与 occt-kernel 一致):
5
5
  * - 宿主可调用 setBrepkitWasmInitFn(fn) 注入自定义初始化函数
6
6
  * (小程序 Worker 传 WXWebAssembly 实例化路径;node 测试走 npm 包默认 init);
7
- * - 未注入时,node 环境直接 require('@faicad/brepkit2-wasm')(该包胶水零 eval,可直接装载);
7
+ * - 未注入时,node 环境直接 require('brepkit-wasm')(v4.x 官方包,胶水零 eval,可直接装载);
8
+ * 注意:不是 @faicad/brepkit2-wasm(v2 fork 已弃用,见 weapp scripts/rebuild-brepkit-wasm.mjs
9
+ * 的「VENDOR WASM 来源」注释)——两者 fillet/chamfer 内核行为不同。
8
10
  * - 两边都没有 → 抛带上下文的错误(报错好于掩盖,禁止静默回退)。
9
11
  */
10
12
  // 2026-09-26 跨实例共享(随 0.18.2 发布):customInitFn / initPromise 从模块级
@@ -65,10 +67,12 @@ export function initBrepkitWasm() {
65
67
  return await s.customInitFn();
66
68
  // node 环境(单测 / CLI):npm 包默认装载路径
67
69
  if (typeof process !== 'undefined' && process.versions?.node) {
68
- // Non-literal specifier: @faicad/brepkit2-wasm is an optional runtime
70
+ // Non-literal specifier: brepkit-wasm is an optional runtime
69
71
  // injection (a devDependency for tests; hosts inject their own loader) —
70
72
  // a literal would make tsc fail with TS2307 when the package is absent.
71
73
  // A missing package surfaces at runtime (below).
74
+ // ⚠️ 版本线:v4 官方包(C:/git/opencascade/brepkit 源码,见 weapp
75
+ // rebuild-brepkit-wasm.mjs「VENDOR WASM 来源」)。勿换回 @faicad/brepkit2-wasm。
72
76
  const specifier = 'brepkit-wasm';
73
77
  const mod = (await import(/* @vite-ignore */ specifier));
74
78
  if (!mod?.BrepKernel) {
@@ -1 +1 @@
1
- {"version":3,"file":"brepkitWasm.js","sourceRoot":"","sources":["../../src/brepkit-kernel/brepkitWasm.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAOH,gEAAgE;AAChE,+DAA+D;AAC/D,8CAA8C;AAC9C,0DAA0D;AAC1D,yCAAyC;AACzC,uCAAuC;AAEvC,MAAM,kBAAkB,GAAG,iCAAiC,CAAA;AAC5D,MAAM,4BAA4B,GAAG,CAAC,CAAA;AAStC;;;;;;;;GAQG;AACH,SAAS,2BAA2B;IAClC,MAAM,CAAC,GAAG,UAAgD,CAAA;IAC1D,MAAM,QAAQ,GAAG,CAAC,CAAC,kBAAkB,CAAyC,CAAA;IAC9E,IAAI,QAAQ,EAAE,CAAC;QACb,IAAI,QAAQ,CAAC,YAAY,KAAK,4BAA4B,EAAE,CAAC;YAC3D,MAAM,IAAI,KAAK,CACb,yDAAyD,QAAQ,CAAC,YAAY,cAAc,4BAA4B,EAAE,CAC3H,CAAA;QACH,CAAC;QACD,OAAO,QAAQ,CAAA;IACjB,CAAC;IACD,MAAM,OAAO,GAA6B;QACxC,YAAY,EAAE,4BAA4B;QAC1C,YAAY,EAAE,IAAI;QAClB,WAAW,EAAE,IAAI;KAClB,CAAA;IACD,CAAC,CAAC,kBAAkB,CAAC,GAAG,OAAO,CAAA;IAC/B,OAAO,OAAO,CAAA;AAChB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,EAAyC;IAC5E,MAAM,CAAC,GAAG,2BAA2B,EAAE,CAAA;IACvC,CAAC,CAAC,YAAY,GAAG,EAAE,CAAA;IACnB,mCAAmC;IACnC,CAAC,CAAC,WAAW,GAAG,IAAI,CAAA;AACtB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe;IAC7B,MAAM,CAAC,GAAG,2BAA2B,EAAE,CAAA;IACvC,IAAI,CAAC,CAAC,WAAW;QAAE,OAAO,CAAC,CAAC,WAAW,CAAA;IACvC,CAAC,CAAC,WAAW,GAAG,CAAC,KAAK,IAA4B,EAAE;QAClD,IAAI,CAAC,CAAC,YAAY;YAAE,OAAO,MAAM,CAAC,CAAC,YAAY,EAAE,CAAA;QACjD,gCAAgC;QAEhC,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC;YAC7D,sEAAsE;YACtE,yEAAyE;YACzE,wEAAwE;YACxE,iDAAiD;YACjD,MAAM,SAAS,GAAG,cAAc,CAAA;YAChC,MAAM,GAAG,GAAG,CAAC,MAAM,MAAM,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAEtD,CAAA;YACD,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,CAAC;gBACrB,MAAM,IAAI,KAAK,CAAC,kGAAkG,CAAC,CAAA;YACrH,CAAC;YACD,OAAO,IAAI,GAAG,CAAC,UAAU,EAAmB,CAAA;QAC9C,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,uGAAuG,CAAC,CAAA;IAC1H,CAAC,CAAC,EAAE,CAAA;IACJ,OAAO,CAAC,CAAC,WAAW,CAAA;AACtB,CAAC;AAED;mCACmC;AACnC,MAAM,UAAU,oBAAoB;IAClC,OAAO,2BAA2B,EAAE,CAAC,WAAW,KAAK,IAAI,CAAA;AAC3D,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB;IAC9B,2BAA2B,EAAE,CAAC,WAAW,GAAG,IAAI,CAAA;AAClD,CAAC","sourcesContent":["/**\n * brepkit-kernel/brepkitWasm — brepkit-wasm 装载(setOcctWasmInitFn 同构的注入点)\n *\n * 装载策略(与 occt-kernel 一致):\n * - 宿主可调用 setBrepkitWasmInitFn(fn) 注入自定义初始化函数\n * (小程序 Worker 传 WXWebAssembly 实例化路径;node 测试走 npm 包默认 init);\n * - 未注入时,node 环境直接 require('@faicad/brepkit2-wasm')(该包胶水零 eval,可直接装载);\n * - 两边都没有 → 抛带上下文的错误(报错好于掩盖,禁止静默回退)。\n */\n\n/** brepkit 内核实例形态(BrepKernel 类,228 个方法;类型面见 npm 包 brepkit_wasm.d.ts)。 */\nexport type BrepKitKernel = any\n\ntype BrepKitInitFn = () => Promise<BrepKitKernel>\n\n// 2026-09-26 跨实例共享(随 0.18.2 发布):customInitFn / initPromise 从模块级\n// 单例提升为挂在 globalThis 上的共享状态(与 occtKernel.ts / runtime-state.ts\n// 同款设计)。原因:CDN 外部化的 faijs 多实例各自持有独立内核 → 句柄不互通\n// (occtKernel.ts 顶部注释详述);小程序 Worker 场景同理。挂到 globalThis 后,\n// 任一实例 initBrepkitWasm() 产出的内核全局可见,句柄互通。\n// 构建期去重(external / dedupe)仍是主手段,这里是兜底。\n\nconst BREPKIT_KERNEL_KEY = '__FAICAD_FAIJS_BREPKIT_KERNEL__'\nconst BREPKIT_KERNEL_STATE_VERSION = 1\n\n/** brepkit 内核共享状态(跨 faijs 模块实例,浏览器/Node/小程序 Worker 多环境)。 */\ninterface BrepkitKernelSharedState {\n stateVersion: number\n customInitFn: BrepKitInitFn | null\n initPromise: Promise<BrepKitKernel> | null\n}\n\n/**\n * 获取 brepkit 内核共享状态(单例)。\n *\n * 挂在 globalThis 上是为了让\"两份 faijs 代码\"(宿主 bundle 一份、第三方库\n * 外部化一份)共享同一份内核状态——否则两份 initPromise 导致内核各自初始化、\n * 句柄不互通(几何孤岛)。\n *\n * @returns the shared brepkit kernel state singleton.\n */\nfunction getBrepKitKernelSharedState(): BrepkitKernelSharedState {\n const g = globalThis as unknown as Record<string, unknown>\n const existing = g[BREPKIT_KERNEL_KEY] as BrepkitKernelSharedState | undefined\n if (existing) {\n if (existing.stateVersion !== BREPKIT_KERNEL_STATE_VERSION) {\n throw new Error(\n `[faijs] brepkit kernel state version mismatch: loaded=${existing.stateVersion}, expected=${BREPKIT_KERNEL_STATE_VERSION}`,\n )\n }\n return existing\n }\n const created: BrepkitKernelSharedState = {\n stateVersion: BREPKIT_KERNEL_STATE_VERSION,\n customInitFn: null,\n initPromise: null,\n }\n g[BREPKIT_KERNEL_KEY] = created\n return created\n}\n\n/**\n * 注入自定义 brepkit wasm 初始化函数(宿主装配期调用一次)。写入共享挂点——\n * 任意 faijs 实例(含 CDN 外部化实例 / 小程序 Worker 副实例)都优先使用。\n * @param fn - the initialization function to use, or null to clear\n */\nexport function setBrepkitWasmInitFn(fn: (() => Promise<BrepKitKernel>) | null): void {\n const s = getBrepKitKernelSharedState()\n s.customInitFn = fn\n // 挂点变化后丢弃进行中的初始化(下一次 init 用新挂点重来)。\n s.initPromise = null\n}\n\n/**\n * 初始化并返回 BrepKernel 单例(幂等:多次调用共享同一次初始化)。\n * @returns Promise 解析为 BrepKernel 实例。\n */\nexport function initBrepkitWasm(): Promise<BrepKitKernel> {\n const s = getBrepKitKernelSharedState()\n if (s.initPromise) return s.initPromise\n s.initPromise = (async (): Promise<BrepKitKernel> => {\n if (s.customInitFn) return await s.customInitFn()\n // node 环境(单测 / CLI):npm 包默认装载路径\n\n if (typeof process !== 'undefined' && process.versions?.node) {\n // Non-literal specifier: @faicad/brepkit2-wasm is an optional runtime\n // injection (a devDependency for tests; hosts inject their own loader) —\n // a literal would make tsc fail with TS2307 when the package is absent.\n // A missing package surfaces at runtime (below).\n const specifier = 'brepkit-wasm'\n const mod = (await import(/* @vite-ignore */ specifier)) as {\n BrepKernel: new () => BrepKitKernel\n }\n if (!mod?.BrepKernel) {\n throw new Error('initBrepkitWasm: brepkit-wasm is not installed; install it or call setBrepkitWasmInitFn() first.')\n }\n return new mod.BrepKernel() as BrepKitKernel\n }\n throw new Error('initBrepkitWasm: no init function set and not in Node environment. Call setBrepkitWasmInitFn() first.')\n })()\n return s.initPromise\n}\n\n/** 是否已初始化完成(测试诊断用)。\n * @returns true 表示 init 已启动/完成。 */\nexport function isBrepkitInitialized(): boolean {\n return getBrepKitKernelSharedState().initPromise !== null\n}\n\n/**\n * 丢弃当前初始化结果(测试收尾 / 内核释放后调用)。\n *\n * `disposeBrepkit()` 必须调它——否则已释放的内核仍被缓存的 `initPromise` 引用,\n * 下一次 `initBrepkitWasm()` 会返回**已释放**的内核(实测报 `null pointer passed\n * to rust`)。`customInitFn` 不受影响(宿主注入的装载路径仍在)。\n */\nexport function resetBrepkitWasm(): void {\n getBrepKitKernelSharedState().initPromise = null\n}\n"]}
1
+ {"version":3,"file":"brepkitWasm.js","sourceRoot":"","sources":["../../src/brepkit-kernel/brepkitWasm.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAOH,gEAAgE;AAChE,+DAA+D;AAC/D,8CAA8C;AAC9C,0DAA0D;AAC1D,yCAAyC;AACzC,uCAAuC;AAEvC,MAAM,kBAAkB,GAAG,iCAAiC,CAAA;AAC5D,MAAM,4BAA4B,GAAG,CAAC,CAAA;AAStC;;;;;;;;GAQG;AACH,SAAS,2BAA2B;IAClC,MAAM,CAAC,GAAG,UAAgD,CAAA;IAC1D,MAAM,QAAQ,GAAG,CAAC,CAAC,kBAAkB,CAAyC,CAAA;IAC9E,IAAI,QAAQ,EAAE,CAAC;QACb,IAAI,QAAQ,CAAC,YAAY,KAAK,4BAA4B,EAAE,CAAC;YAC3D,MAAM,IAAI,KAAK,CACb,yDAAyD,QAAQ,CAAC,YAAY,cAAc,4BAA4B,EAAE,CAC3H,CAAA;QACH,CAAC;QACD,OAAO,QAAQ,CAAA;IACjB,CAAC;IACD,MAAM,OAAO,GAA6B;QACxC,YAAY,EAAE,4BAA4B;QAC1C,YAAY,EAAE,IAAI;QAClB,WAAW,EAAE,IAAI;KAClB,CAAA;IACD,CAAC,CAAC,kBAAkB,CAAC,GAAG,OAAO,CAAA;IAC/B,OAAO,OAAO,CAAA;AAChB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,EAAyC;IAC5E,MAAM,CAAC,GAAG,2BAA2B,EAAE,CAAA;IACvC,CAAC,CAAC,YAAY,GAAG,EAAE,CAAA;IACnB,mCAAmC;IACnC,CAAC,CAAC,WAAW,GAAG,IAAI,CAAA;AACtB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe;IAC7B,MAAM,CAAC,GAAG,2BAA2B,EAAE,CAAA;IACvC,IAAI,CAAC,CAAC,WAAW;QAAE,OAAO,CAAC,CAAC,WAAW,CAAA;IACvC,CAAC,CAAC,WAAW,GAAG,CAAC,KAAK,IAA4B,EAAE;QAClD,IAAI,CAAC,CAAC,YAAY;YAAE,OAAO,MAAM,CAAC,CAAC,YAAY,EAAE,CAAA;QACjD,gCAAgC;QAEhC,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC;YAC7D,6DAA6D;YAC7D,yEAAyE;YACzE,wEAAwE;YACxE,iDAAiD;YACjD,sDAAsD;YACtD,uEAAuE;YACvE,MAAM,SAAS,GAAG,cAAc,CAAA;YAChC,MAAM,GAAG,GAAG,CAAC,MAAM,MAAM,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAEtD,CAAA;YACD,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,CAAC;gBACrB,MAAM,IAAI,KAAK,CAAC,kGAAkG,CAAC,CAAA;YACrH,CAAC;YACD,OAAO,IAAI,GAAG,CAAC,UAAU,EAAmB,CAAA;QAC9C,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,uGAAuG,CAAC,CAAA;IAC1H,CAAC,CAAC,EAAE,CAAA;IACJ,OAAO,CAAC,CAAC,WAAW,CAAA;AACtB,CAAC;AAED;mCACmC;AACnC,MAAM,UAAU,oBAAoB;IAClC,OAAO,2BAA2B,EAAE,CAAC,WAAW,KAAK,IAAI,CAAA;AAC3D,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB;IAC9B,2BAA2B,EAAE,CAAC,WAAW,GAAG,IAAI,CAAA;AAClD,CAAC","sourcesContent":["/**\n * brepkit-kernel/brepkitWasm — brepkit-wasm 装载(setOcctWasmInitFn 同构的注入点)\n *\n * 装载策略(与 occt-kernel 一致):\n * - 宿主可调用 setBrepkitWasmInitFn(fn) 注入自定义初始化函数\n * (小程序 Worker 传 WXWebAssembly 实例化路径;node 测试走 npm 包默认 init);\n * - 未注入时,node 环境直接 require('brepkit-wasm')(v4.x 官方包,胶水零 eval,可直接装载);\n * 注意:不是 @faicad/brepkit2-wasm(v2 fork 已弃用,见 weapp scripts/rebuild-brepkit-wasm.mjs\n * 的「VENDOR WASM 来源」注释)——两者 fillet/chamfer 内核行为不同。\n * - 两边都没有 → 抛带上下文的错误(报错好于掩盖,禁止静默回退)。\n */\n\n/** brepkit 内核实例形态(BrepKernel 类,228 个方法;类型面见 npm 包 brepkit_wasm.d.ts)。 */\nexport type BrepKitKernel = any\n\ntype BrepKitInitFn = () => Promise<BrepKitKernel>\n\n// 2026-09-26 跨实例共享(随 0.18.2 发布):customInitFn / initPromise 从模块级\n// 单例提升为挂在 globalThis 上的共享状态(与 occtKernel.ts / runtime-state.ts\n// 同款设计)。原因:CDN 外部化的 faijs 多实例各自持有独立内核 → 句柄不互通\n// (occtKernel.ts 顶部注释详述);小程序 Worker 场景同理。挂到 globalThis 后,\n// 任一实例 initBrepkitWasm() 产出的内核全局可见,句柄互通。\n// 构建期去重(external / dedupe)仍是主手段,这里是兜底。\n\nconst BREPKIT_KERNEL_KEY = '__FAICAD_FAIJS_BREPKIT_KERNEL__'\nconst BREPKIT_KERNEL_STATE_VERSION = 1\n\n/** brepkit 内核共享状态(跨 faijs 模块实例,浏览器/Node/小程序 Worker 多环境)。 */\ninterface BrepkitKernelSharedState {\n stateVersion: number\n customInitFn: BrepKitInitFn | null\n initPromise: Promise<BrepKitKernel> | null\n}\n\n/**\n * 获取 brepkit 内核共享状态(单例)。\n *\n * 挂在 globalThis 上是为了让\"两份 faijs 代码\"(宿主 bundle 一份、第三方库\n * 外部化一份)共享同一份内核状态——否则两份 initPromise 导致内核各自初始化、\n * 句柄不互通(几何孤岛)。\n *\n * @returns the shared brepkit kernel state singleton.\n */\nfunction getBrepKitKernelSharedState(): BrepkitKernelSharedState {\n const g = globalThis as unknown as Record<string, unknown>\n const existing = g[BREPKIT_KERNEL_KEY] as BrepkitKernelSharedState | undefined\n if (existing) {\n if (existing.stateVersion !== BREPKIT_KERNEL_STATE_VERSION) {\n throw new Error(\n `[faijs] brepkit kernel state version mismatch: loaded=${existing.stateVersion}, expected=${BREPKIT_KERNEL_STATE_VERSION}`,\n )\n }\n return existing\n }\n const created: BrepkitKernelSharedState = {\n stateVersion: BREPKIT_KERNEL_STATE_VERSION,\n customInitFn: null,\n initPromise: null,\n }\n g[BREPKIT_KERNEL_KEY] = created\n return created\n}\n\n/**\n * 注入自定义 brepkit wasm 初始化函数(宿主装配期调用一次)。写入共享挂点——\n * 任意 faijs 实例(含 CDN 外部化实例 / 小程序 Worker 副实例)都优先使用。\n * @param fn - the initialization function to use, or null to clear\n */\nexport function setBrepkitWasmInitFn(fn: (() => Promise<BrepKitKernel>) | null): void {\n const s = getBrepKitKernelSharedState()\n s.customInitFn = fn\n // 挂点变化后丢弃进行中的初始化(下一次 init 用新挂点重来)。\n s.initPromise = null\n}\n\n/**\n * 初始化并返回 BrepKernel 单例(幂等:多次调用共享同一次初始化)。\n * @returns Promise 解析为 BrepKernel 实例。\n */\nexport function initBrepkitWasm(): Promise<BrepKitKernel> {\n const s = getBrepKitKernelSharedState()\n if (s.initPromise) return s.initPromise\n s.initPromise = (async (): Promise<BrepKitKernel> => {\n if (s.customInitFn) return await s.customInitFn()\n // node 环境(单测 / CLI):npm 包默认装载路径\n\n if (typeof process !== 'undefined' && process.versions?.node) {\n // Non-literal specifier: brepkit-wasm is an optional runtime\n // injection (a devDependency for tests; hosts inject their own loader) —\n // a literal would make tsc fail with TS2307 when the package is absent.\n // A missing package surfaces at runtime (below).\n // ⚠️ 版本线:v4 官方包(C:/git/opencascade/brepkit 源码,见 weapp\n // rebuild-brepkit-wasm.mjs「VENDOR WASM 来源」)。勿换回 @faicad/brepkit2-wasm。\n const specifier = 'brepkit-wasm'\n const mod = (await import(/* @vite-ignore */ specifier)) as {\n BrepKernel: new () => BrepKitKernel\n }\n if (!mod?.BrepKernel) {\n throw new Error('initBrepkitWasm: brepkit-wasm is not installed; install it or call setBrepkitWasmInitFn() first.')\n }\n return new mod.BrepKernel() as BrepKitKernel\n }\n throw new Error('initBrepkitWasm: no init function set and not in Node environment. Call setBrepkitWasmInitFn() first.')\n })()\n return s.initPromise\n}\n\n/** 是否已初始化完成(测试诊断用)。\n * @returns true 表示 init 已启动/完成。 */\nexport function isBrepkitInitialized(): boolean {\n return getBrepKitKernelSharedState().initPromise !== null\n}\n\n/**\n * 丢弃当前初始化结果(测试收尾 / 内核释放后调用)。\n *\n * `disposeBrepkit()` 必须调它——否则已释放的内核仍被缓存的 `initPromise` 引用,\n * 下一次 `initBrepkitWasm()` 会返回**已释放**的内核(实测报 `null pointer passed\n * to rust`)。`customInitFn` 不受影响(宿主注入的装载路径仍在)。\n */\nexport function resetBrepkitWasm(): void {\n getBrepKitKernelSharedState().initPromise = null\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/cad-runtime/runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/cad-runtime/runtime.ts"],"names":[],"mappings":"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"}
@@ -989,8 +989,21 @@ export class CadRuntime {
989
989
  return;
990
990
  }
991
991
  const rt = this.buildBrepTopology(partName);
992
- if (rt)
993
- topology.set(partName, { partName, source: 'brep', data: runtimeToData(rt) });
992
+ if (rt) {
993
+ const data = runtimeToData(rt);
994
+ topology.set(partName, { partName, source: 'brep', data });
995
+ // §3.6 行 hint 快照:与 `setTopology` 同构,但从「宿主调才写」改为
996
+ // 「执行时自写」。原因:BREP 路径宿主不一定调 setTopology(实测
997
+ // weapp worker / animation 都不调),槽里 faceHints 就是空的 → 解析侧
998
+ // (buildShapeResolutionContext 的 BREP 分支)只能拿 kernel 现场,而
999
+ // brepkit 的 uvBounds 对平面返回 ±1e6 哨兵、surfaceCenterOfMass 退化
1000
+ // 成参数原点求值 → 非居中模型上 center 全错 → 兜底打分全拒 →
1001
+ // `topo ref (face) not found in the current shape`。
1002
+ // 行数据与 handle 同一次 execute 产出,同帧不陈旧。
1003
+ if (v && typeof v === 'object') {
1004
+ ensureSlot(v).faceHints = (data.faces ?? []).map((f) => faceRowToHint(f));
1005
+ }
1006
+ }
994
1007
  };
995
1008
  if (topoMode === 'brep') {
996
1009
  for (const name of shapeVarNames) {