@faicad/faijs 0.19.0 → 0.22.2
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.
- package/dist/api/brep-mirror/joinery-brep.d.ts.map +1 -1
- package/dist/api/brep-mirror/joinery-brep.js +3 -1
- package/dist/api/brep-mirror/joinery-brep.js.map +1 -1
- package/dist/api/generated/script-face-manifest.d.ts +4 -0
- package/dist/api/generated/script-face-manifest.d.ts.map +1 -1
- package/dist/api/generated/script-face-manifest.js.map +1 -1
- package/dist/api/knurl.d.ts.map +1 -1
- package/dist/api/knurl.js +1 -0
- package/dist/api/knurl.js.map +1 -1
- package/dist/api/primitives.d.ts +4 -3
- package/dist/api/primitives.d.ts.map +1 -1
- package/dist/api/primitives.js +9 -3
- package/dist/api/primitives.js.map +1 -1
- package/dist/api/profile.d.ts +34 -5
- package/dist/api/profile.d.ts.map +1 -1
- package/dist/api/profile.js +60 -9
- package/dist/api/profile.js.map +1 -1
- package/dist/api/punch-hole.d.ts +3 -0
- package/dist/api/punch-hole.d.ts.map +1 -1
- package/dist/api/punch-hole.js.map +1 -1
- package/dist/api/sketch-on-plane.d.ts +12 -6
- package/dist/api/sketch-on-plane.d.ts.map +1 -1
- package/dist/api/sketch-on-plane.js +11 -8
- package/dist/api/sketch-on-plane.js.map +1 -1
- package/dist/api/surface/arg-spec.d.ts +8 -0
- package/dist/api/surface/arg-spec.d.ts.map +1 -1
- package/dist/api/surface/arg-spec.js.map +1 -1
- package/dist/api/transform.d.ts +5 -5
- package/dist/api/transform.d.ts.map +1 -1
- package/dist/api/transform.js +12 -10
- package/dist/api/transform.js.map +1 -1
- package/dist/api/xml-dom.d.ts +27 -0
- package/dist/api/xml-dom.d.ts.map +1 -0
- package/dist/api/xml-dom.js +45 -0
- package/dist/api/xml-dom.js.map +1 -0
- package/dist/brep/brep-ops.d.ts +4 -4
- package/dist/brep/brep-ops.d.ts.map +1 -1
- package/dist/brep/brep-ops.js +8 -6
- package/dist/brep/brep-ops.js.map +1 -1
- package/dist/brep/brep-topology.d.ts.map +1 -1
- package/dist/brep/brep-topology.js +3 -1
- package/dist/brep/brep-topology.js.map +1 -1
- package/dist/brep/export/export-model.d.ts +79 -0
- package/dist/brep/export/export-model.d.ts.map +1 -0
- package/dist/brep/export/export-model.js +335 -0
- package/dist/brep/export/export-model.js.map +1 -0
- package/dist/brep/primitives-brep.d.ts.map +1 -1
- package/dist/brep/primitives-brep.js +3 -1
- package/dist/brep/primitives-brep.js.map +1 -1
- package/dist/brepkit-kernel/brepkitKernel.d.ts.map +1 -1
- package/dist/brepkit-kernel/brepkitKernel.js +4 -2
- package/dist/brepkit-kernel/brepkitKernel.js.map +1 -1
- package/dist/cad-runtime/direct-executor.d.ts +4 -0
- package/dist/cad-runtime/direct-executor.d.ts.map +1 -1
- package/dist/cad-runtime/direct-executor.js +17 -1
- package/dist/cad-runtime/direct-executor.js.map +1 -1
- package/dist/cad-runtime/runtime.d.ts +24 -1
- package/dist/cad-runtime/runtime.d.ts.map +1 -1
- package/dist/cad-runtime/runtime.js +53 -3
- package/dist/cad-runtime/runtime.js.map +1 -1
- package/dist/define-op.d.ts +22 -0
- package/dist/define-op.d.ts.map +1 -1
- package/dist/define-op.js +15 -0
- package/dist/define-op.js.map +1 -1
- package/dist/env-agnostic.d.ts +7 -7
- package/dist/env-agnostic.d.ts.map +1 -1
- package/dist/env-agnostic.js +3 -3
- package/dist/env-agnostic.js.map +1 -1
- package/dist/geometry2d/bridge/lift-on-plane.d.ts.map +1 -1
- package/dist/geometry2d/bridge/lift-on-plane.js +6 -0
- package/dist/geometry2d/bridge/lift-on-plane.js.map +1 -1
- package/dist/geometry2d/pen-sketcher.d.ts +25 -0
- package/dist/geometry2d/pen-sketcher.d.ts.map +1 -1
- package/dist/geometry2d/pen-sketcher.js +43 -0
- package/dist/geometry2d/pen-sketcher.js.map +1 -1
- package/dist/lang/code-to-args.d.ts +29 -3
- package/dist/lang/code-to-args.d.ts.map +1 -1
- package/dist/lang/code-to-args.js +41 -2
- package/dist/lang/code-to-args.js.map +1 -1
- package/dist/lang/codegen.d.ts +45 -1
- package/dist/lang/codegen.d.ts.map +1 -1
- package/dist/lang/codegen.js +135 -6
- package/dist/lang/codegen.js.map +1 -1
- package/dist/lang/host-arg.d.ts +6 -0
- package/dist/lang/host-arg.d.ts.map +1 -1
- package/dist/lang/host-arg.js.map +1 -1
- package/dist/lang/metadata-extractor.d.ts +25 -0
- package/dist/lang/metadata-extractor.d.ts.map +1 -1
- package/dist/lang/metadata-extractor.js +289 -25
- package/dist/lang/metadata-extractor.js.map +1 -1
- package/dist/lang/parse-error.d.ts +7 -1
- package/dist/lang/parse-error.d.ts.map +1 -1
- package/dist/lang/parse-error.js.map +1 -1
- package/dist/lang/security-scanner.d.ts +9 -1
- package/dist/lang/security-scanner.d.ts.map +1 -1
- package/dist/lang/security-scanner.js +38 -1
- package/dist/lang/security-scanner.js.map +1 -1
- package/dist/mesh/io.d.ts +62 -9
- package/dist/mesh/io.d.ts.map +1 -1
- package/dist/mesh/io.js +124 -17
- package/dist/mesh/io.js.map +1 -1
- package/dist/mesh/threemf-loader.d.ts +15 -0
- package/dist/mesh/threemf-loader.d.ts.map +1 -0
- package/dist/mesh/threemf-loader.js +163 -0
- package/dist/mesh/threemf-loader.js.map +1 -0
- package/dist/mesh/transform.d.ts +2 -2
- package/dist/mesh/transform.d.ts.map +1 -1
- package/dist/mesh/transform.js +3 -3
- package/dist/mesh/transform.js.map +1 -1
- package/dist/mesh/types.d.ts +1 -1
- package/dist/mesh/types.d.ts.map +1 -1
- package/dist/mesh/types.js.map +1 -1
- package/dist/node-host/cli.d.ts.map +1 -1
- package/dist/node-host/cli.js +53 -26
- package/dist/node-host/cli.js.map +1 -1
- package/dist/occt-kernel/occtKernel.d.ts.map +1 -1
- package/dist/occt-kernel/occtKernel.js +4 -2
- package/dist/occt-kernel/occtKernel.js.map +1 -1
- package/dist/occt-kernel/topologyExt.d.ts.map +1 -1
- package/dist/occt-kernel/topologyExt.js +4 -1
- package/dist/occt-kernel/topologyExt.js.map +1 -1
- package/dist/runtime-state.d.ts +18 -0
- package/dist/runtime-state.d.ts.map +1 -1
- package/dist/runtime-state.js +23 -0
- package/dist/runtime-state.js.map +1 -1
- package/dist/sdk.d.ts +1 -1
- package/dist/sdk.d.ts.map +1 -1
- package/dist/sdk.js +1 -1
- package/dist/sdk.js.map +1 -1
- package/dist/tolerance.d.ts +38 -0
- package/dist/tolerance.d.ts.map +1 -0
- package/dist/tolerance.js +40 -0
- package/dist/tolerance.js.map +1 -0
- package/dist/topology/naming/score.js +3 -3
- package/dist/topology/naming/score.js.map +1 -1
- package/dist/units.d.ts +248 -0
- package/dist/units.d.ts.map +1 -0
- package/dist/units.js +397 -0
- package/dist/units.js.map +1 -0
- package/package.json +11 -2
|
@@ -27,6 +27,7 @@ import type { SelectorRuntimeData } from '../topology/build-selector-runtime.js'
|
|
|
27
27
|
import type { SelectorRuntime } from '../topology/types.js';
|
|
28
28
|
import { type PartName } from '../identity.js';
|
|
29
29
|
import type { ExecBackendChoice } from './exec-backend.js';
|
|
30
|
+
import { type OpDimMap } from '../lang/metadata-extractor.js';
|
|
30
31
|
import { type StdlibNamespace, type AssemblyKinematicsPose } from '../runtime-state.js';
|
|
31
32
|
export { computeContentKey } from './content-key.js';
|
|
32
33
|
export { stableFingerprint } from './content-key.js';
|
|
@@ -38,7 +39,7 @@ import { type DeterminismPolicy } from '../lang/determinism-scanner.js';
|
|
|
38
39
|
*/
|
|
39
40
|
export interface CheckError {
|
|
40
41
|
/** The stage that produced the error ('keep' = keep directive validation). */
|
|
41
|
-
stage: 'parse' | 'symbol' | 'reference' | 'keep' | 'security';
|
|
42
|
+
stage: 'parse' | 'symbol' | 'reference' | 'keep' | 'security' | 'dimension';
|
|
42
43
|
message: string;
|
|
43
44
|
line?: number;
|
|
44
45
|
stmtId?: string;
|
|
@@ -146,6 +147,12 @@ export interface ExecutionResult {
|
|
|
146
147
|
* 消费语义(asm.solve() 保持 R0 语句形态,与 do_assemble 现状一致)。
|
|
147
148
|
*/
|
|
148
149
|
kinematics?: Map<PartName, AssemblyKinematicsPose>;
|
|
150
|
+
/**
|
|
151
|
+
* 文件声明单位(unit-system §10.6):load 语句读出的「文件自己声明的单位」,
|
|
152
|
+
* key 为 PartName。元数据(宿主写进 sourceUnit、导出目标判定),不参与几何
|
|
153
|
+
* 运算——坐标已是基准值,按它再缩放 = 双重换算。
|
|
154
|
+
*/
|
|
155
|
+
detectedUnits?: Map<PartName, string>;
|
|
149
156
|
}
|
|
150
157
|
/**
|
|
151
158
|
* Options controlling a single CadRuntime execution. All inputs are code text
|
|
@@ -340,6 +347,22 @@ export declare class CadRuntime {
|
|
|
340
347
|
}): void;
|
|
341
348
|
/** The runtime's default namespace binding name (host-declared; 'cad' by default). */
|
|
342
349
|
get defaultNs(): string;
|
|
350
|
+
/**
|
|
351
|
+
* P4/P6 (unit-system D8): 汇总已注册 op 的量纲声明(callee → { paramDims, retDim }),
|
|
352
|
+
* 供 extractMetadata 的 dimension pass 消费。键 = 脚本面 callee 名(含命名空间内成员名,
|
|
353
|
+
* 如 `cad.box`)。未声明量纲的 op / 非 op 函数跳过。lang/ 不依赖 op 注册表——由本运行时
|
|
354
|
+
* 在此注入,符合 D8「校验器怎么拿到声明」分层。
|
|
355
|
+
*/
|
|
356
|
+
private buildOpDims;
|
|
357
|
+
/**
|
|
358
|
+
* Public accessor for the op dimension declarations built by {@link buildOpDims}
|
|
359
|
+
* (unit-system G4): hosts need the same callee → { paramDims, retDim, slotMap }
|
|
360
|
+
* map the dimension pass consumes so they can serialize with correct unit
|
|
361
|
+
* literals without keeping a second copy of the table.
|
|
362
|
+
*
|
|
363
|
+
* @returns the op dimension map (paramDims / retDim / slotMap per op name).
|
|
364
|
+
*/
|
|
365
|
+
getOpDims(): OpDimMap;
|
|
343
366
|
constructor(ports: HostPorts, mode?: ExecutionMode, libs?: Record<string, StdlibNamespace>, options?: CadRuntimeOptions);
|
|
344
367
|
/**
|
|
345
368
|
* 认领全局 backends 配置(P2 修复):全局 backends 是单例,任何 runtime 创建都会
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/cad-runtime/runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAClD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAI9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AACvD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAA;AAC7E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAKxD,OAAO,EAAc,KAAK,QAAQ,EAAe,MAAM,aAAa,CAAA;AAEpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/cad-runtime/runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAClD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAI9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AACvD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAA;AAC7E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAKxD,OAAO,EAAc,KAAK,QAAQ,EAAe,MAAM,aAAa,CAAA;AAEpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAIvD,OAAO,EAAoC,KAAK,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AAC5F,OAAO,EAEkB,KAAK,eAAe,EAC3C,KAAK,sBAAsB,EAC5B,MAAM,kBAAkB,CAAA;AAMzB,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AACjD,OAAO,EAAuC,KAAK,aAAa,EAAE,MAAM,UAAU,CAAA;AAClF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAI1D,OAAO,EAA8C,KAAK,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AAShH;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,8EAA8E;IAC9E,KAAK,EAAE,OAAO,GAAG,QAAQ,GAAG,WAAW,GAAG,MAAM,GAAG,UAAU,GAAG,WAAW,CAAA;IAC3E,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,+FAA+F;IAC/F,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,+FAA+F;IAC/F,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,OAAO,CAAA;IACX,MAAM,EAAE,UAAU,EAAE,CAAA;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,iDAAiD;IACjD,MAAM,CAAC,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,CAAA;CACnD;AAED;;;;;GAKG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,CAAA;AAE1D;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,yCAAyC;IACzC,QAAQ,EAAE,QAAQ,CAAA;IAClB,iBAAiB;IACjB,MAAM,EAAE,cAAc,CAAA;IACtB,6BAA6B;IAC7B,IAAI,EAAE,mBAAmB,CAAA;CAC1B;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;;OAKG;IACH,OAAO,EAAE,GAAG,CAAC,QAAQ,EAAE,KAAK,GAAG,aAAa,CAAC,CAAA;IAC7C,iCAAiC;IACjC,SAAS,EAAE,cAAc,CAAA;IACzB,aAAa;IACb,SAAS,EAAE,aAAa,EAAE,CAAA;IAC1B,cAAc;IACd,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,8HAA8H;IAC9H,QAAQ,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAC7F,yDAAyD;IACzD,UAAU,CAAC,EAAE,GAAG,CAAC,QAAQ,EAAE;QAAE,KAAK,EAAE,UAAU,CAAC;QAAC,MAAM,EAAE,aAAa,CAAA;KAAE,CAAC,CAAA;IACxE;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,GAAG,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAA;IACtC;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAA;IAClC;;;OAGG;IACH,SAAS,CAAC,EAAE,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAA;IACrC,8DAA8D;IAC9D,OAAO,CAAC,EAAE,QAAQ,EAAE,CAAA;IACpB;;;;OAIG;IACH,YAAY,CAAC,EAAE,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IACrC;;;;OAIG;IACH,UAAU,CAAC,EAAE,GAAG,CAAC,QAAQ,EAAE,sBAAsB,CAAC,CAAA;IAClD;;;;OAIG;IACH,aAAa,CAAC,EAAE,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;CACtC;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,2BAA2B;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAChC,sCAAsC;IACtC,aAAa,CAAC,EAAE;QAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAA;IACxF,6CAA6C;IAC7C,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACzD;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,CAAA;IAClC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC5B;AAKD,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAE7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAA;AAiBnE;;;;;GAKG;AACH,qBAAa,iBAAkB,SAAQ,KAAK;IAExC,+DAA+D;IAC/D,QAAQ,CAAC,WAAW,EAAE,MAAM;IAC5B,+DAA+D;IAC/D,QAAQ,CAAC,UAAU,EAAE,MAAM;;IAH3B,+DAA+D;IACtD,WAAW,EAAE,MAAM;IAC5B,+DAA+D;IACtD,UAAU,EAAE,MAAM;CAS9B;AA2BD,YAAY,EAAE,iBAAiB,EAAE,CAAA;AAEjC;;;;;;GAMG;AACH,MAAM,WAAW,iBAAiB;IAChC,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,cAAc,CAAA;IACzB;;;;OAIG;IACH,WAAW,CAAC,EAAE,iBAAiB,CAAA;IAC/B;;;;OAIG;IACH,WAAW,CAAC,EAAE,iBAAiB,CAAA;CAChC;AAED;;;;;;;;;GASG;AACH,qBAAa,UAAU;IACrB,kDAAkD;IAClD,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAA;IACzB,2CAA2C;IAC3C,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAA;IAC5B,kCAAkC;IAClC,QAAQ,CAAC,YAAY,EAAG,QAAQ,CAAS;IAEzC,4DAA4D;IAC5D,OAAO,CAAC,cAAc,CAIlB;IAEJ,yEAAyE;IACzE,OAAO,CAAC,eAAe,CAAsB;IAC7C,wCAAwC;IACxC,OAAO,CAAC,cAAc,CAAoB;IAG1C,OAAO,CAAC,qBAAqB,CAAsB;IACnD,OAAO,CAAC,qBAAqB,CAAsB;IACnD,OAAO,CAAC,4BAA4B,CAAsB;IAC1D,OAAO,CAAC,iBAAiB,CAAQ;IAEjC;;;OAGG;IACH,OAAO,CAAC,UAAU,CAAkC;IAEpD,2DAA2D;IAC3D,OAAO,CAAC,kBAAkB,CAA6C;IAEvE,+EAA+E;IAC/E,OAAO,CAAC,cAAc,CAA+B;IAErD,+DAA+D;IAC/D,OAAO,CAAC,MAAM,CAA6B;IAE3C;;;OAGG;IACH,OAAO,CAAC,SAAS,CAA8B;IAE/C;;;;OAIG;IACH,OAAO,CAAC,aAAa,CAAoC;IAEzD,0CAA0C;IAC1C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;IAE/C,0CAA0C;IAC1C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAkB;IAE5C,+DAA+D;IAC/D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;IAC/C,6DAA6D;IAC7D,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAmB;IACrD,oDAAoD;IACpD,OAAO,CAAC,mBAAmB,CAAe;IAE1C,6DAA6D;IAC7D,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAiC;IACtD,wDAAwD;IACxD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4B;IACnD,yFAAyF;IACzF,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAA4B;IAC/D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAY;IACvC;qEACiE;IACjE,OAAO,CAAC,aAAa,CAAQ;IAE7B;;;;;;;;;OASG;IACH;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI;IA0BpJ,sFAAsF;IACtF,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED;;;;;OAKG;IACH,OAAO,CAAC,WAAW;IAkBnB;;;;;;;OAOG;IACH,SAAS,IAAI,QAAQ;gBAKnB,KAAK,EAAE,SAAS,EAChB,IAAI,GAAE,aAAsB,EAC5B,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAM,EAC1C,OAAO,GAAE,iBAAsB;IA+BjC;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,aAAa;IAoCrB;;;;;OAKG;YACW,eAAe;IAuB7B;;;;;;;;;OASG;YACW,iBAAiB;IAmB/B,mCAAmC;IACnC,MAAM,KAAK,cAAc,IAAI,MAAM,GAAG,IAAI,CAEzC;IAED;;;;;;OAMG;IACG,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC;IAI5E;;;;;;;;OAQG;IACG,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC;IAI3E;;;;;;;;OAQG;YACW,kBAAkB;IAmDhC,4FAA4F;IAC5F,OAAO,CAAC,uBAAuB;IAU/B,2DAA2D;IAC3D,OAAO,CAAC,iBAAiB;IAWzB;;;;OAIG;YACW,iBAAiB;IAoC/B,0EAA0E;IAC1E,OAAO,CAAC,iBAAiB;IAMzB;;;;;;;;;OASG;IACH,OAAO,CAAC,qBAAqB;IAgB7B;;;OAGG;YACW,gBAAgB;IAK9B;;;;OAIG;YACW,gBAAgB;IA6C9B,gEAAgE;IAChE,OAAO,CAAC,YAAY;IAUpB;;;;OAIG;YACW,uBAAuB;IA8BrC,yEAAyE;YAC3D,eAAe;IAyB7B;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;IA4G3B,gEAAgE;IAChE,OAAO,CAAC,MAAM,CAAC,cAAc;IAO7B;;;;;;;OAOG;IACH,OAAO,CAAC,yBAAyB;IAuDjC,6DAA6D;IAC7D,OAAO,CAAC,gBAAgB;IAoBxB;;;;OAIG;YACW,uBAAuB;IAqCrC;;;;;;OAMG;IACH,OAAO,CAAC,gBAAgB;IAkCxB;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IA0B1B;;;;;;;;;;;;OAYG;IACG,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC;IAM/F;;;;OAIG;IACH,eAAe,CAAC,QAAQ,EAAE,QAAQ,GAAG,KAAK,GAAG,SAAS;IAItD;;;;;OAKG;IACH,sBAAsB,CACpB,QAAQ,EAAE,QAAQ,GACjB;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,KAAK,CAAA;KAAE,GAAG,SAAS;IAIhF;;;;;;OAMG;IACH,qBAAqB,CACnB,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,KAAK,EACb,gBAAgB,EAAE,MAAM,GACvB,IAAI;IAQP,uDAAuD;IACvD,mBAAmB,IAAI,IAAI;IAO3B;;;;;;;;;;OAUG;IACH,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,mBAAmB,GAAG,IAAI;IAWxF;;;;OAIG;IACH,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,YAAY,GAAG,SAAS;IAIzD;;;OAGG;IACH,cAAc,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAIxC;;;;;;;;;;;OAWG;IACH,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,GAAG,eAAe,GAAG,IAAI;IAsB7D;;;;;;;;OAQG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW;IAiChC;;;;;;;;;OASG;IACH,OAAO,CAAC,iBAAiB;IAmBzB;;;;;;;;;;;;;;;;OAgBG;YACW,iBAAiB;IAqK/B;;OAEG;YACW,cAAc;IAqB5B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAY1B;;;OAGG;IACH,OAAO,IAAI,IAAI;CAchB;AAID;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,UAAU,CAErJ"}
|
|
@@ -28,9 +28,10 @@ import { computeLiveShapes, lineConsumes, blockConsumes } from './live-shapes.js
|
|
|
28
28
|
import { extractMetadata } from '../lang/metadata-extractor.js';
|
|
29
29
|
import { configureBackends, CONTRACT_VERSION, assertContractVersion, } from '../runtime-state.js';
|
|
30
30
|
import { admitCompatLib } from './admit-compat-lib.js';
|
|
31
|
-
import { hasDualOp } from '../define-op.js';
|
|
31
|
+
import { hasDualOp, dualOpMetaOf } from '../define-op.js';
|
|
32
32
|
import { computeLibId } from './lib-id.js';
|
|
33
33
|
import { computeContentKey, stableFingerprint } from './content-key.js';
|
|
34
|
+
import { SCRIPT_UNIT_CONSTANTS } from '../units.js';
|
|
34
35
|
export { computeContentKey } from './content-key.js';
|
|
35
36
|
export { stableFingerprint } from './content-key.js';
|
|
36
37
|
import { isCompoundLike, getSlot, ensureSlot } from '../shape.js';
|
|
@@ -223,6 +224,43 @@ export class CadRuntime {
|
|
|
223
224
|
get defaultNs() {
|
|
224
225
|
return this.defaultNsName;
|
|
225
226
|
}
|
|
227
|
+
/**
|
|
228
|
+
* P4/P6 (unit-system D8): 汇总已注册 op 的量纲声明(callee → { paramDims, retDim }),
|
|
229
|
+
* 供 extractMetadata 的 dimension pass 消费。键 = 脚本面 callee 名(含命名空间内成员名,
|
|
230
|
+
* 如 `cad.box`)。未声明量纲的 op / 非 op 函数跳过。lang/ 不依赖 op 注册表——由本运行时
|
|
231
|
+
* 在此注入,符合 D8「校验器怎么拿到声明」分层。
|
|
232
|
+
*/
|
|
233
|
+
buildOpDims() {
|
|
234
|
+
const out = {};
|
|
235
|
+
for (const [binding, ns] of Object.entries(this.libs)) {
|
|
236
|
+
if (!ns || typeof ns !== 'object')
|
|
237
|
+
continue;
|
|
238
|
+
for (const [name, value] of Object.entries(ns)) {
|
|
239
|
+
if (typeof value !== 'function')
|
|
240
|
+
continue;
|
|
241
|
+
const meta = dualOpMetaOf(value);
|
|
242
|
+
if (!meta || (!meta.paramDims && !meta.retDim))
|
|
243
|
+
continue;
|
|
244
|
+
out[`${binding}.${name}`] = {
|
|
245
|
+
paramDims: meta.paramDims,
|
|
246
|
+
retDim: meta.retDim,
|
|
247
|
+
...(meta.slotMap ? { slotMap: meta.slotMap } : {}),
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
return out;
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Public accessor for the op dimension declarations built by {@link buildOpDims}
|
|
255
|
+
* (unit-system G4): hosts need the same callee → { paramDims, retDim, slotMap }
|
|
256
|
+
* map the dimension pass consumes so they can serialize with correct unit
|
|
257
|
+
* literals without keeping a second copy of the table.
|
|
258
|
+
*
|
|
259
|
+
* @returns the op dimension map (paramDims / retDim / slotMap per op name).
|
|
260
|
+
*/
|
|
261
|
+
getOpDims() {
|
|
262
|
+
return this.buildOpDims();
|
|
263
|
+
}
|
|
226
264
|
constructor(ports, mode = 'auto', libs = {}, options = {}) {
|
|
227
265
|
this.ports = ports;
|
|
228
266
|
this.mode = mode;
|
|
@@ -230,6 +268,15 @@ export class CadRuntime {
|
|
|
230
268
|
this.namespaces = { ...libs };
|
|
231
269
|
this.securityPolicy = options.security ?? 'strict';
|
|
232
270
|
this.determinismPolicy = options.determinism ?? 'error';
|
|
271
|
+
// P6/D7: register script-side unit constants (MM, INCH, DEGREE, …) on globalThis.
|
|
272
|
+
// Both the VM backend (new Function resolves free identifiers from the global scope)
|
|
273
|
+
// and the interpreter backend (env.ts reads globalThis[name] for S4_SAFE_GLOBALS)
|
|
274
|
+
// need these values. Idempotent — safe to call across multiple runtime instances.
|
|
275
|
+
const g = globalThis;
|
|
276
|
+
for (const [name, value] of Object.entries(SCRIPT_UNIT_CONSTANTS)) {
|
|
277
|
+
if (!(name in g))
|
|
278
|
+
g[name] = value;
|
|
279
|
+
}
|
|
233
280
|
this.directExecutor = new DirectExecutor({
|
|
234
281
|
namespaces: this.namespaces,
|
|
235
282
|
setSolid: (partName, solid) => { this.solidCache.set(partName, solid); },
|
|
@@ -775,6 +822,7 @@ export class CadRuntime {
|
|
|
775
822
|
naming: naming.size > 0 ? naming : undefined,
|
|
776
823
|
compounds: compounds.size > 0 ? compounds : undefined,
|
|
777
824
|
kinematics: de.kinematicsSnapshot.size > 0 ? de.kinematicsSnapshot : undefined,
|
|
825
|
+
detectedUnits: de.detectedUnitsSnapshot.size > 0 ? de.detectedUnitsSnapshot : undefined,
|
|
778
826
|
changed: deChanged ? deChanged.map(asPartName) : undefined,
|
|
779
827
|
activeValues: activeValues.size > 0 ? activeValues : undefined,
|
|
780
828
|
};
|
|
@@ -1115,7 +1163,7 @@ export class CadRuntime {
|
|
|
1115
1163
|
*/
|
|
1116
1164
|
check(code) {
|
|
1117
1165
|
try {
|
|
1118
|
-
const meta = extractMetadata(code, { defaultNs: this.defaultNsName, security: this.securityPolicy, namespaces: Object.keys(this.libs) });
|
|
1166
|
+
const meta = extractMetadata(code, { defaultNs: this.defaultNsName, security: this.securityPolicy, namespaces: Object.keys(this.libs), opDims: this.buildOpDims() });
|
|
1119
1167
|
return {
|
|
1120
1168
|
ok: true,
|
|
1121
1169
|
errors: [],
|
|
@@ -1128,7 +1176,9 @@ export class CadRuntime {
|
|
|
1128
1176
|
}
|
|
1129
1177
|
catch (err) {
|
|
1130
1178
|
if (err instanceof ParseError) {
|
|
1131
|
-
const stage = err.code === 'E_SECURITY' ? 'security'
|
|
1179
|
+
const stage = err.code === 'E_SECURITY' ? 'security'
|
|
1180
|
+
: err.code === 'E_DIM_BARE_NUMBER' || err.code === 'E_DIM_MISMATCH' || err.code === 'E_DIM_UNKNOWN_UNIT' ? 'dimension'
|
|
1181
|
+
: 'parse';
|
|
1132
1182
|
return {
|
|
1133
1183
|
ok: false,
|
|
1134
1184
|
errors: [{ stage, message: err.message, line: err.line, ...(err.code ? { code: err.code } : {}), ...(err.ruleId ? { ruleId: err.ruleId } : {}) }],
|