@nudojs/core 1.4.0 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/exec.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { A as Abs, M as MayThrowEffect, b as Phi } from './run-WJfj477N.js';
2
- export { O as $assignRecord, Q as $call, U as $callNamed, V as $recordBinding, a1 as EvalAbsAssignRecord, a2 as EvalCallRecord, a3 as EvalFallback, f as EvalFallbackStats, a6 as MAX_EVAL_CALL_DEPTH, a7 as MAX_EVAL_TOTAL_CALLS, a8 as RUNTIME_IMPORT_RE, N as RunTranspiledOptions, aa as TranspiledCallResult, ao as bindingsOf, ar as callTranspiledExport, as as callTranspiledExportApply, at as callTranspiledExportFull, g as clearPureCallMemo, h as clearPureMemo, i as enterEvalCallBudgetSession, ay as evalExprAbs, k as exitEvalCallBudgetSession, q as getEvalCallBudgetState, aB as getEvalCallCollector, r as getEvalFallbackStats, aZ as noteEvalCallRecord, a_ as noteEvalFallback, bf as resetEvalCallBudget, z as resetEvalFallbackStats, bz as routeApplyThrows, bg as runTranspiled, bh as runTranspiledOptionsMemoKey, bi as setEvalAssignCollector, bj as setEvalBindingSink, bk as setEvalCallCollector, bl as setEvalFallbackCollector, bw as tryRunTranspiled, H as withEvalBudgetOverride } from './run-WJfj477N.js';
1
+ import { A as Abs, M as MayThrowEffect, b as Phi } from './run-Dg7gQO2z.js';
2
+ export { O as $assignRecord, Q as $call, U as $callNamed, V as $recordBinding, a1 as EvalAbsAssignRecord, a2 as EvalCallRecord, a3 as EvalFallback, f as EvalFallbackStats, a6 as MAX_EVAL_CALL_DEPTH, a7 as MAX_EVAL_TOTAL_CALLS, a8 as RUNTIME_IMPORT_RE, N as RunTranspiledOptions, aa as TranspiledCallResult, ao as bindingsOf, ar as callTranspiledExport, as as callTranspiledExportApply, at as callTranspiledExportFull, g as clearPureCallMemo, h as clearPureMemo, i as enterEvalCallBudgetSession, ay as evalExprAbs, k as exitEvalCallBudgetSession, q as getEvalCallBudgetState, aB as getEvalCallCollector, r as getEvalFallbackStats, aI as isAbsVal, a_ as noteEvalCallRecord, a$ as noteEvalFallback, bg as resetEvalCallBudget, z as resetEvalFallbackStats, bA as routeApplyThrows, bh as runTranspiled, bi as runTranspiledOptionsMemoKey, bj as setEvalAssignCollector, bk as setEvalBindingSink, bl as setEvalCallCollector, bm as setEvalFallbackCollector, bx as tryRunTranspiled, H as withEvalBudgetOverride } from './run-Dg7gQO2z.js';
3
3
  import { Node, Expression, File } from '@babel/types';
4
4
 
5
5
  /**
@@ -584,7 +584,9 @@ declare class NudoUnsupportedError extends Error {
584
584
  constructor(reason: string, loc?: {
585
585
  line: number;
586
586
  column: number;
587
- });
587
+ },
588
+ /** BUG-026:附加辨析面(如 class 碰撞的双方特征)——进 message 随回落观测 */
589
+ detail?: string);
588
590
  }
589
591
 
590
592
  export { $add, $arguments, $arr, $arrMutContainer, $arrRest, $arrWithHoles, $async, $asyncReturn, $await, $bitand, $bitnot, $bitor, $bitxor, $catchVal, $class, $classExpr, $collectionForEach, $concat, $copy, $del, $delRes, $div, $dynamicImport, $elems, $eq, $eqLoose, $fnVal, $for, $forInKeys, $forIter, $forOf, $fork, $ge, $gen, $get, $gt, $idx, $idxSet, $importMeta, $in, $instanceof, $instanceofNonIdent, $invoke, $invokeSuper, $isBreakTo, $isForkExit, $join, $le, $len, $lit, $loopBreak, $loopContinue, $loopReturn, $lt, $mod, $mul, $ne, $neLoose, $neg, $new, $not, $nullishTest, $obj, $objAccessor, $objRest, $optionalGet, $optionalInvoke, $orDefault, $pow, $pushLoopExit, $rawThis, $reStateCall, $regex, $rethrowIfNudoReturn, $set, $setKey, $setProto, $shl, $shr, $spread, $staticInvoke, $sub, $super, $switch, $thisGet, $thisSet, $throw, $toNumber, $toNumeric, $tryCurrentMark, $tryDetachSoftCatch, $tryDigestSoftCatch, $tryDiscardSoft, $tryMark, $tryOrphanSoft, $tryPopMark, $tryReleaseSoftCatch, $tryReleaseSoftOut, $tryTakeSince, $typeof, $unknown, $updateAdd, $updateSub, $ushr, $while, $whileSeq, $yield, DEFAULT_MAX_LOOP_ITERS, type EvalClassSpec, NudoLoopSignal, NudoReturn, NudoThrow, NudoUnsupportedError, type TranspileOptions, asAbsVal, callAtFunctionBoundary, clearBClasses, clearStaleTermPred, currentExecPhi, fillTuple, foldRequireSpecArg, foldStaticStringExpr, getEvalClass, isArrMutator, isDefinitelyFalse, isDefinitelyTrue, isNudoBreak, isNudoContinue, isNudoReturn, isNudoThrow, litTruth, lookupObjAccessor, namespaceNameOf, pushLoopExit, pushThrowExit, registerEvalClass, runWithLoopExits, runtimeImportOf, takeLoopExits, takeThrowExits, transpile, transpileBodyNode, transpileExpression, transpileFile, transpileSource, withExecPhi };
package/dist/exec.js CHANGED
@@ -140,6 +140,7 @@ import {
140
140
  getEvalCallCollector,
141
141
  getEvalClass,
142
142
  getEvalFallbackStats,
143
+ isAbsVal,
143
144
  isArrMutator,
144
145
  isDefinitelyFalse,
145
146
  isDefinitelyTrue,
@@ -176,7 +177,7 @@ import {
176
177
  tryRunTranspiled,
177
178
  withEvalBudgetOverride,
178
179
  withExecPhi
179
- } from "./chunk-LFCF6BLE.js";
180
+ } from "./chunk-LZJC7X5J.js";
180
181
  export {
181
182
  $add,
182
183
  $arguments,
@@ -318,6 +319,7 @@ export {
318
319
  getEvalCallCollector,
319
320
  getEvalClass,
320
321
  getEvalFallbackStats,
322
+ isAbsVal,
321
323
  isArrMutator,
322
324
  isDefinitelyFalse,
323
325
  isDefinitelyTrue,
package/dist/index.d.ts CHANGED
@@ -1,8 +1,8 @@
1
- import { c as AstEnv, A as Abs, b as Phi, T as Term, I as HofCollectCtx, C as Confidence, S as Shape, a as Pred, R as RelSource, J as HofSite, K as AbsModuleExports, N as RunTranspiledOptions } from './run-WJfj477N.js';
2
- export { O as $assignRecord, Q as $call, U as $callNamed, V as $recordBinding, W as AbsApplyNoThrow, X as AbsApplyNoThrowFn, Y as AbsApplyResult, Z as AbsApplyReturn, _ as AbsFnImpl, a0 as AbsSigImpl, a1 as EvalAbsAssignRecord, a2 as EvalCallRecord, a3 as EvalFallback, a4 as ImplicationOracle, a5 as LitValueResult, L as LiteralValue, a6 as MAX_EVAL_CALL_DEPTH, a7 as MAX_EVAL_TOTAL_CALLS, P as PrimName, a8 as RUNTIME_IMPORT_RE, a9 as TYPEOF_NAMES, aa as TranspiledCallResult, ab as TypeofName, ac as abs, ad as absFunction, ae as absOnly, af as absToString, ag as and, ah as anyAbs, ai as anyVar, aj as app, ak as assumeFinite, al as attachFnImpl, am as bigintLit, an as bindImports, ao as bindingsOf, ap as bool, aq as boolLit, ar as callTranspiledExport, as as callTranspiledExportApply, at as callTranspiledExportFull, au as collectAbsExports, av as confJoin, aw as emptyPhi, ax as eq, ay as evalExprAbs, az as ge, aA as geNum, aB as getEvalCallCollector, aC as getFnImpl, aD as getImplicationOracle, aE as gt, aF as gtNum, aG as implies, aH as isAbsApplyResult, aI as isBigPrim, aJ as isExactLit, aK as isNumPrim, aL as isStrPrim, aM as le, aN as leNum, aO as lit, aP as litValue, aQ as lt, aR as ltNum, aS as makeAbsApplyResult, aT as markPureFn, aU as namespaceAbsOf, aV as ne, aW as negatePred, aX as never, aY as not, aZ as noteEvalCallRecord, a_ as noteEvalFallback, a$ as num, b0 as numLit, b1 as numVar, b2 as obj, b3 as or, b4 as pFalse, b5 as pTrue, b6 as phiAnd, b7 as predEquals, b8 as predToString, b9 as predVars, ba as primToTypeof, bb as ptypeof, bc as pureFnNameOf, bd as relationFingerprint, be as relationFn, bf as resetEvalCallBudget, bg as runTranspiled, bh as runTranspiledOptionsMemoKey, bi as setEvalAssignCollector, bj as setEvalBindingSink, bk as setEvalCallCollector, bl as setEvalFallbackCollector, bm as setImplicationOracle, bn as shapeOfTerm, bo as shapeOnlyFn, bp as shapeToString, bq as simplifyTerm, br as str, bs as strLit, bt as substPred, bu as termEquals, bv as termToString, bw as tryRunTranspiled, bx as unknown, by as v } from './run-WJfj477N.js';
1
+ import { c as AstEnv, A as Abs, b as Phi, T as Term, I as HofCollectCtx, C as Confidence, S as Shape, a as Pred, R as RelSource, J as HofSite, K as AbsModuleExports, N as RunTranspiledOptions } from './run-Dg7gQO2z.js';
2
+ export { O as $assignRecord, Q as $call, U as $callNamed, V as $recordBinding, W as AbsApplyNoThrow, X as AbsApplyNoThrowFn, Y as AbsApplyResult, Z as AbsApplyReturn, _ as AbsFnImpl, a0 as AbsSigImpl, a1 as EvalAbsAssignRecord, a2 as EvalCallRecord, a3 as EvalFallback, a4 as ImplicationOracle, a5 as LitValueResult, L as LiteralValue, a6 as MAX_EVAL_CALL_DEPTH, a7 as MAX_EVAL_TOTAL_CALLS, P as PrimName, a8 as RUNTIME_IMPORT_RE, a9 as TYPEOF_NAMES, aa as TranspiledCallResult, ab as TypeofName, ac as abs, ad as absFunction, ae as absOnly, af as absToString, ag as and, ah as anyAbs, ai as anyVar, aj as app, ak as assumeFinite, al as attachFnImpl, am as bigintLit, an as bindImports, ao as bindingsOf, ap as bool, aq as boolLit, ar as callTranspiledExport, as as callTranspiledExportApply, at as callTranspiledExportFull, au as collectAbsExports, av as confJoin, aw as emptyPhi, ax as eq, ay as evalExprAbs, az as ge, aA as geNum, aB as getEvalCallCollector, aC as getFnImpl, aD as getImplicationOracle, aE as gt, aF as gtNum, aG as implies, aH as isAbsApplyResult, aI as isAbsVal, aJ as isBigPrim, aK as isExactLit, aL as isNumPrim, aM as isStrPrim, aN as le, aO as leNum, aP as lit, aQ as litValue, aR as lt, aS as ltNum, aT as makeAbsApplyResult, aU as markPureFn, aV as namespaceAbsOf, aW as ne, aX as negatePred, aY as never, aZ as not, a_ as noteEvalCallRecord, a$ as noteEvalFallback, b0 as num, b1 as numLit, b2 as numVar, b3 as obj, b4 as or, b5 as pFalse, b6 as pTrue, b7 as phiAnd, b8 as predEquals, b9 as predToString, ba as predVars, bb as primToTypeof, bc as ptypeof, bd as pureFnNameOf, be as relationFingerprint, bf as relationFn, bg as resetEvalCallBudget, bh as runTranspiled, bi as runTranspiledOptionsMemoKey, bj as setEvalAssignCollector, bk as setEvalBindingSink, bl as setEvalCallCollector, bm as setEvalFallbackCollector, bn as setImplicationOracle, bo as shapeOfTerm, bp as shapeOnlyFn, bq as shapeToString, br as simplifyTerm, bs as str, bt as strLit, bu as substPred, bv as termEquals, bw as termToString, bx as tryRunTranspiled, by as unknown, bz as v } from './run-Dg7gQO2z.js';
3
3
  import { Node, File } from '@babel/types';
4
- import { p as parseSource, L as LeakBudget, E as EffectiveInterfaceOpts, b as LoadDepsFingerprint, o as CheckReport, N as NudoConstraint } from './check-report-Ci1dDysO.js';
5
- export { q as CONSTRAINT_BUILDERS, u as CONSTRAINT_BUILDER_NAMES, v as CONSTRAINT_EXPR_RE, w as CheckAction, C as CheckIssue, x as CheckJson, y as CheckJsonMulti, z as ConstraintBuilder, D as Diagnostic, A as EffectiveInterface, G as GitlabCodeQualityIssue, B as InterfaceDiag, I as InterfaceSource, F as InterfaceTierInfo, a as InterfaceTierOpts, H as NamedImport, J as NudoField, K as NudoFnConstraint, O as NudoSidecarError, P as NudoSig, R as RefineDiag, Q as RefineEntry, S as RefineResolveOpts, T as SELF, U as actionsForIssue, V as andC, W as any, X as array, Y as boolean, Z as checkArg, _ as checkCall, $ as constraintAdmitsNullish, a0 as constraintToEntryAbs, a1 as drainPromiseMicros, a2 as effectiveInterface, a3 as enterPromiseExecutorScope, a4 as evalPromiseCtor, a5 as evalPromiseMethod, a6 as evalPromiseStatic, a7 as execNudoModule, a8 as extractDeclaredThrows, a9 as extractFnBudget, aa as extractNudoImports, ab as extractRefineReturnFromSource, ac as extractRefinesFromSource, ad as fn, ae as fnConstraintToEntryReqs, af as formatCheckReport, ag as formatConstraint, ah as formatDiagnostics, ai as formatEffectiveInterfaceDisplay, aj as formatGithubAnnotations, ak as formatGitlabCodeQuality, al as formatInterfaceTierLine, am as generatedExportNames, an as getParseSourceCacheSize, ao as getTerm, ap as instantiateConstraint, aq as interfaceDiagCount, ar as interfaceSourceOf, as as interfaceTierOf, at as isIntFlag, au as isNodeModulesPath, av as isNudoConstraint, aw as leavePromiseExecutorScope, ax as lenTerm, ay as litC, az as localNamedExports, aA as notePromiseExecutorFork, aB as nullable, aC as number, aD as omit, aE as partial, aF as pick, aG as queuePromiseMicro, aH as refineDiagCount, aI as refineToIndexedFull, aJ as resetNudoModuleExecCache, aK as resetParseSourceCache, aL as resetSidecarLoadFailureCache, aM as serializeCheckJson, aN as serializeCheckJsonMulti, aO as setInterfaceDiagCollector, aP as setRefineDiagCollector, aQ as shape, aR as sidecarClosureFingerprint, aS as sidecarPathOf, aT as string, aU as takeInterfaceDiags, aV as takeInterfaceDiagsSince, aW as takeRefineDiags, aX as takeRefineDiagsSince, aY as throwConstraintToKinds, aZ as union } from './check-report-Ci1dDysO.js';
4
+ import { p as parseSource, L as LeakBudget, E as EffectiveInterfaceOpts, b as LoadDepsFingerprint, v as CheckReport, N as NudoConstraint, c as ProjectionBudget } from './projection-budget-CGbs16aX.js';
5
+ export { w as CONSTRAINT_BUILDERS, x as CONSTRAINT_BUILDER_NAMES, y as CONSTRAINT_EXPR_RE, z as CheckAction, C as CheckIssue, A as CheckJson, B as CheckJsonMulti, D as ConstraintBuilder, F as Diagnostic, G as EffectiveInterface, H as GitlabCodeQualityIssue, J as InterfaceDiag, I as InterfaceSource, K as InterfaceTierInfo, a as InterfaceTierOpts, O as NamedImport, Q as NudoField, R as NudoFnConstraint, S as NudoSidecarError, T as NudoSig, U as RefineDiag, V as RefineEntry, W as RefineResolveOpts, X as SELF, Y as actionsForIssue, Z as andC, _ as any, $ as array, a0 as boolean, a1 as checkArg, a2 as checkCall, a3 as constraintAdmitsNullish, a4 as constraintToEntryAbs, a5 as drainPromiseMicros, a6 as effectiveInterface, a7 as enterPromiseExecutorScope, a8 as evalPromiseCtor, a9 as evalPromiseMethod, aa as evalPromiseStatic, ab as execNudoModule, ac as extractDeclaredThrows, ad as extractFnBudget, ae as extractNudoImports, af as extractRefineReturnFromSource, ag as extractRefinesFromSource, ah as fn, ai as fnConstraintToEntryReqs, aj as formatCheckReport, ak as formatConstraint, al as formatDiagnostics, am as formatEffectiveInterfaceDisplay, an as formatGithubAnnotations, ao as formatGitlabCodeQuality, ap as formatInterfaceTierLine, aq as generatedExportNames, ar as getParseSourceCacheSize, as as getTerm, at as instantiateConstraint, au as interfaceDiagCount, av as interfaceSourceOf, aw as interfaceTierOf, ax as isIntFlag, ay as isNodeModulesPath, az as isNudoConstraint, aA as leavePromiseExecutorScope, aB as lenTerm, aC as litC, aD as localNamedExports, aE as notePromiseExecutorFork, aF as nullable, aG as number, aH as omit, aI as partial, aJ as pick, aK as queuePromiseMicro, aL as refineDiagCount, aM as refineToIndexedFull, aN as resetNudoModuleExecCache, aO as resetParseSourceCache, aP as resetSidecarLoadFailureCache, aQ as serializeCheckJson, aR as serializeCheckJsonMulti, aS as setInterfaceDiagCollector, aT as setRefineDiagCollector, aU as shape, aV as sidecarClosureFingerprint, aW as sidecarPathOf, aX as string, aY as takeInterfaceDiags, aZ as takeInterfaceDiagsSince, a_ as takeRefineDiags, a$ as takeRefineDiagsSince, b0 as throwConstraintToKinds, b1 as union } from './projection-budget-CGbs16aX.js';
6
6
  export { $add, $arguments, $arr, $arrMutContainer, $arrRest, $arrWithHoles, $async, $asyncReturn, $await, $bitand, $bitnot, $bitor, $bitxor, $catchVal, $class, $classExpr, $collectionForEach, $concat, $copy, $del, $delRes, $div, $dynamicImport, $elems, $eq, $eqLoose, $fnVal, $for, $forInKeys, $forIter, $forOf, $fork, $ge, $gen, $get, $gt, $idx, $idxSet, $importMeta, $in, $instanceof, $instanceofNonIdent, $invoke, $invokeSuper, $isBreakTo, $isForkExit, $join, $le, $len, $lit, $loopBreak, $loopContinue, $loopReturn, $lt, $mod, $mul, $ne, $neLoose, $neg, $new, $not, $nullishTest, $obj, $objAccessor, $objRest, $optionalGet, $optionalInvoke, $orDefault, $pow, $pushLoopExit, $rawThis, $reStateCall, $regex, $rethrowIfNudoReturn, $set, $setKey, $shl, $shr, $spread, $staticInvoke, $sub, $super, $switch, $thisGet, $thisSet, $throw, $toNumber, $toNumeric, $tryCurrentMark, $tryDetachSoftCatch, $tryDigestSoftCatch, $tryDiscardSoft, $tryMark, $tryOrphanSoft, $tryPopMark, $tryReleaseSoftCatch, $tryReleaseSoftOut, $tryTakeSince, $typeof, $unknown, $updateAdd, $updateSub, $ushr, $while, $whileSeq, $yield, DEFAULT_MAX_LOOP_ITERS, EvalClassSpec, NudoLoopSignal, NudoReturn, NudoThrow, NudoUnsupportedError, TranspileOptions, asAbsVal, callAtFunctionBoundary, clearBClasses, clearStaleTermPred, currentExecPhi, fillTuple, foldRequireSpecArg, foldStaticStringExpr, getEvalClass, isArrMutator, isDefinitelyFalse, isDefinitelyTrue, isNudoBreak, isNudoContinue, isNudoReturn, isNudoThrow, litTruth, lookupObjAccessor, namespaceNameOf, pushLoopExit, pushThrowExit, registerEvalClass, runWithLoopExits, runtimeImportOf, takeLoopExits, takeThrowExits, transpile, transpileBodyNode, transpileExpression, transpileFile, transpileSource, withExecPhi } from './exec.js';
7
7
 
8
8
  /**
@@ -365,7 +365,12 @@ declare function setPropFlags(o: Abs, key: string, f: PropFlags): void;
365
365
  declare function migrateInvariants(from: Abs, to: Abs): void;
366
366
 
367
367
  /**
368
- * Math.* — 字面量实参走 ToNumber/ToInt32 后调用原生折叠,否则 number
368
+ * Math.* — 字面量实参走 ToNumber/ToInt32 后调用原生折叠;非字面量对
369
+ * min/max/round/floor/ceil/trunc 透传数值区间(#68)。
370
+ *
371
+ * NaN 策略(DEC:显式 NaN 臂):操作数可能为 NaN 时结果为
372
+ * `NaN | number@bounds`。契约 `ge(0).le(100)` 对 NaN 臂诚实报违例;
373
+ * `if (Number.isNaN(n)) return …` 假臂的 `ne(n, NaN)` 事实可排除 NaN 臂。
369
374
  */
370
375
 
371
376
  declare function evalMathMethod(name: string, args: Abs[]): Abs | undefined;
@@ -1101,12 +1106,17 @@ type MockModuleRecord = {
1101
1106
  */
1102
1107
  declare function parseMockModulePayload(payload: string): MockModuleRecord | undefined;
1103
1108
  type NudoImportRecord = {
1109
+ /** 本地绑定名(`a as b` 的 `b`,@nudo:contract 的引用名);namespace 记 `*ns` */
1104
1110
  names: string[];
1111
+ /** local → 侧车原始导出名(`a as b` 的 `a`);未写别名的名字不进表 */
1112
+ importedOfLocal: Record<string, string>;
1105
1113
  spec: string;
1106
1114
  };
1107
1115
  /**
1108
1116
  * `@nudo:import` 载荷:named `{ a, b as c }` / namespace `* as ns`。
1109
1117
  * default 等未识别形态返回 `malformed`(由消费方发诊断)。
1118
+ * import 绑定语义 local ← imported:`a as b` 两个名字都保留——只留 local
1119
+ * 会让查表用错名字(`exports[b]` miss,BUG-016)。
1110
1120
  */
1111
1121
  declare function parseNudoImportPayload(payload: string): NudoImportRecord | "malformed-default" | "malformed" | undefined;
1112
1122
  declare function extractFileEnvNames(source: string): string[];
@@ -1197,8 +1207,10 @@ declare function literalMeetsConstraint(lv: number | string | boolean | null | u
1197
1207
  * lit/and 已消歧;侧车注入键名仍为 lit/and)。
1198
1208
  */
1199
1209
 
1200
- /** Abs → 契约;不可表达 → undefined */
1201
- declare function absToConstraint(a: Abs): NudoConstraint | undefined;
1210
+ /** Abs → 契约;不可表达 → undefined。
1211
+ * `budget`:共享遍历预算(DESIGN-001)——环 / 超深 shape 返回 undefined
1212
+ * (不可表达),调用方走既有 fallback;schema 投影传入与自身共享的实例。 */
1213
+ declare function absToConstraint(a: Abs, budget?: ProjectionBudget): NudoConstraint | undefined;
1202
1214
  /**
1203
1215
  * 工件聚合投影(设计 §4.2:先 Abs join 折叠再投影)。
1204
1216
  * 空列表 → undefined(无证据不产约束)。
package/dist/index.js CHANGED
@@ -91,7 +91,7 @@ import {
91
91
  takeRefineDiagsSince,
92
92
  throwConstraintToKinds,
93
93
  union
94
- } from "./chunk-7QUVTEYZ.js";
94
+ } from "./chunk-I35CHJNO.js";
95
95
  import {
96
96
  $add,
97
97
  $arguments,
@@ -215,6 +215,7 @@ import {
215
215
  OBJECT_PROTO_METHOD_NAMES,
216
216
  PROMISE_MICRO_ERROR_LABEL,
217
217
  PROMISE_MICRO_OVERFLOW_LABEL,
218
+ ProjectionBudget,
218
219
  RUNTIME_IMPORT_RE,
219
220
  TYPEOF_NAMES,
220
221
  abs,
@@ -331,6 +332,7 @@ import {
331
332
  implies,
332
333
  instantiateReturn,
333
334
  isAbsApplyResult,
335
+ isAbsVal,
334
336
  isArrMutator,
335
337
  isBigPrim,
336
338
  isDefinitelyFalse,
@@ -507,7 +509,7 @@ import {
507
509
  v,
508
510
  withExecPhi,
509
511
  withVar
510
- } from "./chunk-LFCF6BLE.js";
512
+ } from "./chunk-LZJC7X5J.js";
511
513
 
512
514
  // src/environment.ts
513
515
  function createEnvironment(parent, bindings = /* @__PURE__ */ new Map()) {
@@ -768,60 +770,92 @@ function isBoundedEvidenceMissing(ret, constraint) {
768
770
  if (ret.pred && ret.pred.op !== "true") return false;
769
771
  return true;
770
772
  }
773
+ function flattenSumArms(ret) {
774
+ if (ret.shape.k !== "sum") return [ret];
775
+ const out = [];
776
+ for (const m of ret.shape.members) {
777
+ if (m.shape.k === "sum") out.push(...flattenSumArms(m));
778
+ else out.push(m);
779
+ }
780
+ return out;
781
+ }
782
+ function isWidenedSumArm(m, parent) {
783
+ return parent.conf === "partial" && m.shape.k === "prim" && !m.term && (!m.pred || m.pred.op === "true");
784
+ }
771
785
  function assertImplies(ret, constraint, opts) {
772
786
  const phi = opts?.phi ?? pTrue;
773
787
  if (ret.shape.k === "never") return proved();
774
788
  if (isAnyConstraint(constraint)) return proved();
775
- const nullishOk = constraintAdmitsNullish(constraint);
776
- if (isNullishLitAbs(ret)) {
777
- return nullishOk ? proved() : disproved(`nullish return \u22AD ${formatConstraint(constraint)}`);
778
- }
779
- let sumMembers;
780
- if (ret.shape.k === "sum") {
781
- const members = ret.shape.members;
782
- const nullishMembers = members.filter((m) => isNullishLitAbs(m));
783
- if (nullishMembers.length > 0 && !nullishOk) {
784
- return disproved(
785
- `nullish return arm \u22AD ${formatConstraint(constraint)} (contract does not admit nullish)`
786
- );
787
- }
788
- sumMembers = members.filter((m) => !isNullishLitAbs(m));
789
- }
790
789
  if (isValueSetUnknown(ret)) {
791
790
  return unprovable(
792
791
  ret.shape.k === "any" ? "any does not establish the return contract" : "inference failure (unknown/opaque) \u2014 cannot prove the return contract"
793
792
  );
794
793
  }
794
+ const arms = flattenSumArms(ret);
795
+ if (arms.length > 1) {
796
+ return assertSumArms(arms, ret, constraint, opts, phi);
797
+ }
798
+ return assertImpliesSingle(arms[0], constraint, opts, phi);
799
+ }
800
+ function assertSumArms(arms, parent, constraint, opts, phi) {
801
+ const hasWidenedArm = arms.some(
802
+ (a) => isValueSetUnknown(a) || isWidenedSumArm(a, parent)
803
+ );
804
+ let sawUnprovable = false;
805
+ for (const arm of arms) {
806
+ if (isNullishLitAbs(arm)) {
807
+ if (!constraintAdmitsNullish(constraint)) {
808
+ return disproved(
809
+ `nullish return arm \u22AD ${formatConstraint(constraint)} (contract does not admit nullish)`
810
+ );
811
+ }
812
+ continue;
813
+ }
814
+ if (isValueSetUnknown(arm) || isWidenedSumArm(arm, parent)) {
815
+ sawUnprovable = true;
816
+ continue;
817
+ }
818
+ const r = assertImpliesSingle(arm, constraint, opts, phi);
819
+ if (r.status === "disproved") {
820
+ if (hasWidenedArm) {
821
+ sawUnprovable = true;
822
+ continue;
823
+ }
824
+ return r;
825
+ }
826
+ if (r.status === "unprovable") sawUnprovable = true;
827
+ }
828
+ return sawUnprovable ? unprovable("sum: some arms unprovable") : proved();
829
+ }
830
+ function assertImpliesSingle(arm, constraint, opts, phi) {
831
+ if (isNullishLitAbs(arm)) {
832
+ return constraintAdmitsNullish(constraint) ? proved() : disproved(`nullish return \u22AD ${formatConstraint(constraint)}`);
833
+ }
834
+ if (isValueSetUnknown(arm)) {
835
+ return unprovable(
836
+ arm.shape.k === "any" ? "any does not establish the return contract" : "inference failure (unknown/opaque) \u2014 cannot prove the return contract"
837
+ );
838
+ }
795
839
  if (constraint.members && constraint.members.length > 0) {
796
840
  let sawUnprovable = false;
797
841
  for (const m of constraint.members) {
798
- const r = assertImplies(ret, m, opts);
842
+ const r = assertImplies(arm, m, opts);
799
843
  if (r.status === "proved") return proved();
800
844
  if (r.status === "unprovable") sawUnprovable = true;
801
845
  }
802
846
  return sawUnprovable ? unprovable("union: no member proved the return contract") : disproved(`return \u22AD union(${constraint.members.map((m) => formatConstraint(m)).join(", ")})`);
803
847
  }
804
- if (sumMembers && (constraint.fields || constraint.element)) {
805
- let sawUnprovable = false;
806
- for (const m of sumMembers) {
807
- if (isValueSetUnknown(m)) continue;
808
- const r = assertImplies(m, constraint, opts);
809
- if (r.status === "disproved") return r;
810
- if (r.status === "unprovable") sawUnprovable = true;
811
- }
812
- return sawUnprovable ? unprovable("sum: some arms unprovable") : proved();
813
- }
814
848
  if (constraint.fields) {
815
- return assertShapeFields(ret, constraint, opts);
849
+ return assertShapeFields(arm, constraint, opts);
816
850
  }
817
851
  if (constraint.element) {
818
- if (ret.shape.k !== "arr" && ret.shape.k !== "tuple") {
819
- return disproved(`return shape ${ret.shape.k} \u22AD array(...)`);
852
+ if (arm.shape.k !== "arr" && arm.shape.k !== "tuple") {
853
+ return disproved(`return shape ${arm.shape.k} \u22AD array(...)`);
820
854
  }
821
855
  return proved();
822
856
  }
823
857
  if (constraint.fn) return proved();
824
- return assertScalar(ret, constraint, phi);
858
+ return assertScalar(arm, constraint, phi);
825
859
  }
826
860
  function isAnyConstraint(c) {
827
861
  return !c.prim && c.preds.length === 0 && !c.fields && !c.element && !c.members && !c.fn && !isIntFlag(c);
@@ -998,8 +1032,17 @@ var ARR_FALLBACK_CONF = /* @__PURE__ */ new Set([
998
1032
  "path",
999
1033
  "widened"
1000
1034
  ]);
1001
- function absToConstraint(a) {
1035
+ function absToConstraint(a, budget = new ProjectionBudget()) {
1002
1036
  if (!PROJECTABLE_CONF.has(a.conf)) return void 0;
1037
+ const stop = budget.enter(a);
1038
+ if (stop) return void 0;
1039
+ try {
1040
+ return absToConstraintInner(a, budget);
1041
+ } finally {
1042
+ budget.exit();
1043
+ }
1044
+ }
1045
+ function absToConstraintInner(a, budget) {
1003
1046
  const s = a.shape;
1004
1047
  switch (s.k) {
1005
1048
  case "prim":
@@ -1017,9 +1060,9 @@ function absToConstraint(a) {
1017
1060
  case "any":
1018
1061
  return a.pred?.op === "or" ? projectOrLiterals(a) : void 0;
1019
1062
  case "obj":
1020
- return projectObj(s.slots, s.index, s.open);
1063
+ return projectObj(s.slots, s.index, s.open, budget);
1021
1064
  case "arr":
1022
- return projectArr(s.element);
1065
+ return projectArr(s.element, budget);
1023
1066
  case "sum":
1024
1067
  return projectSum(s.members);
1025
1068
  default:
@@ -1202,18 +1245,18 @@ function projectOrLiterals(a) {
1202
1245
  }
1203
1246
  return lits.length > 0 ? union(...lits) : void 0;
1204
1247
  }
1205
- function projectObj(slots, index, open) {
1248
+ function projectObj(slots, index, open, budget) {
1206
1249
  if (index || open) return void 0;
1207
1250
  const fields = {};
1208
1251
  for (const [k, slot] of Object.entries(slots)) {
1209
- const fc = absToConstraint(slot.value);
1252
+ const fc = absToConstraint(slot.value, budget);
1210
1253
  if (!fc) return void 0;
1211
1254
  fields[k] = { constraint: fc, ...slot.optional ? { optional: true } : {} };
1212
1255
  }
1213
1256
  return { __nudoConstraint: true, preds: [], fields };
1214
1257
  }
1215
- function projectArr(element) {
1216
- const ec = absToConstraint(element);
1258
+ function projectArr(element, budget) {
1259
+ const ec = absToConstraint(element, budget);
1217
1260
  if (ec) return array(ec);
1218
1261
  if (element.shape.k === "prim" && isBuilderPrim(element.shape.type) && (!element.pred || element.pred.op === "true") && ARR_FALLBACK_CONF.has(element.conf)) {
1219
1262
  return array(primConstraint(element.shape.type));
@@ -1693,7 +1736,7 @@ function evalThrowsOf(source, fnName, args, opts = {}, phi = pTrue) {
1693
1736
  exports = run;
1694
1737
  evalRunMemo.set(runKey, exports);
1695
1738
  }
1696
- const isAbsVal = (v2) => !!v2 && typeof v2 === "object" && "shape" in v2 && "conf" in v2;
1739
+ const isAbsVal2 = (v2) => !!v2 && typeof v2 === "object" && "shape" in v2 && "conf" in v2;
1697
1740
  const call = (name, callArgs) => {
1698
1741
  try {
1699
1742
  return callTranspiledExportFull(exports, name, callArgs, phi.op === "true" ? void 0 : { phi });
@@ -1702,11 +1745,11 @@ function evalThrowsOf(source, fnName, args, opts = {}, phi = pTrue) {
1702
1745
  }
1703
1746
  };
1704
1747
  try {
1705
- if (fnName in exports) return call(fnName, args);
1748
+ if (Object.hasOwn(exports, fnName)) return call(fnName, args);
1706
1749
  if (fnName.includes(".")) {
1707
1750
  const [clsName, methodName] = fnName.split(".", 2);
1708
1751
  const clsAbs = exports[clsName ?? ""];
1709
- if (isAbsVal(clsAbs)) {
1752
+ if (isAbsVal2(clsAbs)) {
1710
1753
  return invokeAsThrows(() => $staticInvoke(clsAbs, methodName ?? "", args), phi);
1711
1754
  }
1712
1755
  return void 0;
@@ -1714,7 +1757,7 @@ function evalThrowsOf(source, fnName, args, opts = {}, phi = pTrue) {
1714
1757
  if ("default" in exports) {
1715
1758
  const d = exports["default"];
1716
1759
  if (typeof d === "function") return call("default", args);
1717
- if (isAbsVal(d)) {
1760
+ if (isAbsVal2(d)) {
1718
1761
  if (d.shape.k === "fn") return call("default", args);
1719
1762
  if (d.shape.k === "obj") {
1720
1763
  return invokeAsThrows(() => $invoke(d, fnName, args), phi);
@@ -1733,12 +1776,9 @@ function widenForAssign(a) {
1733
1776
  if (s.k === "tuple") {
1734
1777
  const holes = new Set(s.holes ?? []);
1735
1778
  const els = s.elements.filter((_, i) => !holes.has(i));
1736
- let el = anyAbs;
1737
- if (els.length > 0) {
1738
- el = els.map(widenForAssign).reduce((x, y) => joinAbs(x, y));
1739
- } else if (s.rest) {
1740
- el = widenForAssign(s.rest);
1741
- }
1779
+ const parts = els.map(widenForAssign);
1780
+ if (s.rest) parts.push(widenForAssign(s.rest));
1781
+ const el = parts.length > 0 ? parts.reduce((x, y) => joinAbs(x, y)) : anyAbs;
1742
1782
  return abs({ k: "arr", element: el }, void 0, void 0, a.conf);
1743
1783
  }
1744
1784
  if (s.k === "obj") {
@@ -2214,7 +2254,7 @@ function checkSourceInner(filePath, source, file, phi, opts, issues, signatures,
2214
2254
  message: `${name} (export): may throw ${gateDisplay}`,
2215
2255
  actual: `${name}(\u2026) throws ${gateDisplay}`,
2216
2256
  expected: "entry total, or @nudo:throws / try-catch",
2217
- suggestion: first.cause ? `${first.cause} \u2192 ${first.kind === "ReferenceError" ? "re-export `export { x } from` \u4E0D\u662F\u5C40\u90E8\u7ED1\u5B9A\u2014\u2014\u6539 `import { x }` / @nudo:throws ReferenceError" : `@nudo:throws ${first.kind} / sidecar fn({ \u2026 }) contract / refine / guard / try-catch`}` : first.kind === "ReferenceError" ? "re-export `export { x } from` \u4E0D\u662F\u5C40\u90E8\u7ED1\u5B9A\u2014\u2014\u6539 `import { x }` / @nudo:throws ReferenceError" : `@nudo:throws ${first.kind} / sidecar fn({ \u2026 }) contract / refine / guard / try-catch`,
2257
+ suggestion: first.cause ? `${first.cause} \u2192 ${first.kind === "ReferenceError" ? "re-export `export { x } from` \u4E0D\u662F\u5C40\u90E8\u7ED1\u5B9A\u2014\u2014\u6539 `import { x }` / @nudo:throws ReferenceError" : `@nudo:throws ${first.kind} | sidecar: fn({ \u2026 }): shape({ <body-read fields> }) | refine / guard / try-catch`}` : first.kind === "ReferenceError" ? "re-export `export { x } from` \u4E0D\u662F\u5C40\u90E8\u7ED1\u5B9A\u2014\u2014\u6539 `import { x }` / @nudo:throws ReferenceError" : `@nudo:throws ${first.kind} | sidecar: fn({ \u2026 }): shape({ <body-read fields> }) | refine / guard / try-catch`,
2218
2258
  fn: name,
2219
2259
  ...loc.line !== void 0 ? { line: loc.line } : {},
2220
2260
  ...loc.column !== void 0 ? { column: loc.column } : {}
@@ -2259,7 +2299,7 @@ function checkSourceInner(filePath, source, file, phi, opts, issues, signatures,
2259
2299
  message: `${name} (export): may throw ${gateDisplay}`,
2260
2300
  actual: `${formatEntrySigLine(name, g, gateDisplay)}`,
2261
2301
  expected: "entry total, or @nudo:throws / try-catch",
2262
- suggestion: first.cause ? `${first.cause} \u2192 ${first.kind === "ReferenceError" ? "re-export `export { x } from` \u4E0D\u662F\u5C40\u90E8\u7ED1\u5B9A\u2014\u2014\u6539 `import { x }` / @nudo:throws ReferenceError" : `@nudo:throws ${first.kind} / sidecar fn({ \u2026 }) contract / refine / guard / try-catch`}` : first.kind === "ReferenceError" ? "re-export `export { x } from` \u4E0D\u662F\u5C40\u90E8\u7ED1\u5B9A\u2014\u2014\u6539 `import { x }` / @nudo:throws ReferenceError" : `@nudo:throws ${first.kind} / sidecar fn({ \u2026 }) contract / refine / guard / try-catch`,
2302
+ suggestion: first.cause ? `${first.cause} \u2192 ${first.kind === "ReferenceError" ? "re-export `export { x } from` \u4E0D\u662F\u5C40\u90E8\u7ED1\u5B9A\u2014\u2014\u6539 `import { x }` / @nudo:throws ReferenceError" : `@nudo:throws ${first.kind} | sidecar: fn({ \u2026 }): shape({ <body-read fields> }) | refine / guard / try-catch`}` : first.kind === "ReferenceError" ? "re-export `export { x } from` \u4E0D\u662F\u5C40\u90E8\u7ED1\u5B9A\u2014\u2014\u6539 `import { x }` / @nudo:throws ReferenceError" : `@nudo:throws ${first.kind} | sidecar: fn({ \u2026 }): shape({ <body-read fields> }) | refine / guard / try-catch`,
2263
2303
  fn: name,
2264
2304
  ...loc.line !== void 0 ? { line: loc.line } : {},
2265
2305
  ...loc.column !== void 0 ? { column: loc.column } : {}
@@ -2627,6 +2667,19 @@ function actionsForIssue(i) {
2627
2667
  label: "migration switch: ignore this throw class on L2"
2628
2668
  }
2629
2669
  ];
2670
+ case "nudo:unproven-return":
2671
+ return [
2672
+ {
2673
+ kind: "relax",
2674
+ label: `relax the return contract${i.fn ? ` of ${i.fn}` : ""} to the inferred surface (review the diff \u2014 not a silent green)`,
2675
+ ...i.expected ? { hint: i.expected } : {}
2676
+ },
2677
+ draft,
2678
+ {
2679
+ kind: "info",
2680
+ label: "or narrow the return expression / add a precondition so the bound is implied"
2681
+ }
2682
+ ];
2630
2683
  case "nudo:unknown-inference":
2631
2684
  case "nudo:opaque-result":
2632
2685
  return [
@@ -3166,6 +3219,7 @@ export {
3166
3219
  interfaceSourceOf,
3167
3220
  interfaceTierOf,
3168
3221
  isAbsApplyResult,
3222
+ isAbsVal,
3169
3223
  isArrMutator,
3170
3224
  isBigPrim,
3171
3225
  isDefinitelyFalse,
@@ -1,7 +1,7 @@
1
- import { I as InterfaceSource, a as InterfaceTierOpts, p as parseSource, C as CheckIssue } from './check-report-Ci1dDysO.js';
2
- export { L as LeakBudget, b as LoadDepsFingerprint, M as MAX_PROMISE_MICROS, d as defaultLeakBudget, e as exceedsBudget, c as extractAllLoadSpecs, g as getPromiseMicrosLength, l as leakIfNeeded, f as loadModuleDepsFingerprint, m as maybeLeak, n as normPath, r as resetLeakCounter, h as resolveDepPath, s as sidecarSpecsOf, i as stablePathKey, j as stablePathKeyGraph, t as termDepth, k as termNodes } from './check-report-Ci1dDysO.js';
3
- import { A as Abs, T as Term, c as AstEnv } from './run-WJfj477N.js';
4
- export { $ as $tryDigestSoft, d as $tryMarkSoft, e as $tryReleaseSoft, E as ERROR_FAMILY, f as EvalFallbackStats, M as MayThrowEffect, g as clearPureCallMemo, h as clearPureMemo, i as enterEvalCallBudgetSession, j as errorTypeAbs, k as exitEvalCallBudgetSession, l as filterDeclaredThrows, m as filterGateThrows, n as filterIgnoredThrows, o as flushMayThrowEffects, p as formatThrowsAbs, q as getEvalCallBudgetState, r as getEvalFallbackStats, s as getMayThrowCollector, t as isThrowsIgnored, u as mayThrowEffectsToAbs, v as orphanMayThrowEffects, w as popMayThrowFrame, x as pushMayThrowFrame, y as recordMayThrow, z as resetEvalFallbackStats, B as runWithMayThrowSession, D as setMayThrowCollector, F as throwAbsToKinds, G as throwsKindCovered, H as withEvalBudgetOverride } from './run-WJfj477N.js';
1
+ import { I as InterfaceSource, a as InterfaceTierOpts, p as parseSource, C as CheckIssue } from './projection-budget-CGbs16aX.js';
2
+ export { L as LeakBudget, b as LoadDepsFingerprint, M as MAX_PROMISE_MICROS, P as PROJECTION_MAX_DEPTH, c as ProjectionBudget, d as ProjectionStopReason, e as defaultLeakBudget, f as exceedsBudget, g as exportedNameOfLocal, h as extractAllLoadSpecs, i as getPromiseMicrosLength, l as leakIfNeeded, j as loadModuleDepsFingerprint, m as maybeLeak, n as normPath, r as resetLeakCounter, k as resolveDepPath, s as sidecarSpecsOf, o as stablePathKey, q as stablePathKeyGraph, t as termDepth, u as termNodes } from './projection-budget-CGbs16aX.js';
3
+ import { A as Abs, T as Term, c as AstEnv } from './run-Dg7gQO2z.js';
4
+ export { $ as $tryDigestSoft, d as $tryMarkSoft, e as $tryReleaseSoft, E as ERROR_FAMILY, f as EvalFallbackStats, M as MayThrowEffect, g as clearPureCallMemo, h as clearPureMemo, i as enterEvalCallBudgetSession, j as errorTypeAbs, k as exitEvalCallBudgetSession, l as filterDeclaredThrows, m as filterGateThrows, n as filterIgnoredThrows, o as flushMayThrowEffects, p as formatThrowsAbs, q as getEvalCallBudgetState, r as getEvalFallbackStats, s as getMayThrowCollector, t as isThrowsIgnored, u as mayThrowEffectsToAbs, v as orphanMayThrowEffects, w as popMayThrowFrame, x as pushMayThrowFrame, y as recordMayThrow, z as resetEvalFallbackStats, B as runWithMayThrowSession, D as setMayThrowCollector, F as throwAbsToKinds, G as throwsKindCovered, H as withEvalBudgetOverride } from './run-Dg7gQO2z.js';
5
5
  import { File, Node } from '@babel/types';
6
6
 
7
7
  /**
@@ -414,8 +414,26 @@ declare function denoteGuard(a: Abs, v: string): string;
414
414
  * - member access: `recv.key` for idents, `recv["key"]` otherwise
415
415
  * - template literal type fixed segments: escape `\` `` ` `` `$`
416
416
  * - comment bodies: neutralize block-comment close, line breaks, control chars
417
+ * - binding names (`export const/function`, params): ident + non-reserved
417
418
  */
418
419
  declare function isJsIdent(name: string): boolean;
420
+ /**
421
+ * True when `name` is legal as a `const` / `function` / `class` binding
422
+ * (or a `.d.ts` param / type-param name): IdentifierName shape and not
423
+ * a reserved word. Unlike `isJsIdent`, accepts Unicode identifiers and
424
+ * rejects `class` / `default` / `let` / `eval` / …
425
+ */
426
+ declare function isJsBindingIdent(name: string): boolean;
427
+ /**
428
+ * Binding name for a generated `export const` / `export function` slot.
429
+ *
430
+ * - already a legal binding → unchanged (Unicode names preserved)
431
+ * - reserved word → `_` prefix (`class` → `_class`)
432
+ * - otherwise sanitize: non-ident chars → `_`, leading non-start → `_` prefix
433
+ * - `used` (when given) de-duplicates within one generated module
434
+ * (`a_b`, `a_b_2`, …) so cleaned names cannot collide
435
+ */
436
+ declare function toJsBindingIdent(name: string, used?: Set<string>): string;
419
437
  /**
420
438
  * Object-literal / type-member key: bare ident or canonical integer,
421
439
  * otherwise JSON-quoted. Leading-zero digit keys (`01`) stay quoted — bare
@@ -651,4 +669,4 @@ declare function runWithEvalMissingSlot<T>(enabled: boolean, body: () => T): T;
651
669
  */
652
670
  declare function noteObjSlotMissing(recv: Abs | undefined, name: string, loc?: [number, number]): boolean;
653
671
 
654
- export { type AbsBudgetStats, type AbsInlay, type ArgDerivation, type ClassDef, type CollectAbsInlaysOpts, type DerivationNode, type EvalMemberDiag, FORK_TRUNCATION_LABEL, type FnFp, HOST_EFFECT_LABEL_PREFIX, type InjectedDomainEvidenceOpts, type InjectedDomainRecord, MAX_CALL_DEPTH, MAX_EVAL_TOTAL_FORKS, MAX_TOTAL_CALLS, type MethodDef, OBJECT_PROTO_NAMES, PROMISE_MICRO_ERROR_LABEL, PROMISE_MICRO_OVERFLOW_LABEL, type StringLiteralSpan, type TemplateMeta, type TemplatePartDesc, type TemplatePartView, type TemplatePredicateDecision, abortDerivationSession, absTemplateViews, allFixedTextOfViews, anyMemberResult, awaitAbs, beginDerivationSession, bumpEvalForkBudget, callBudgetKey, canSkipLiteralCallScan, checkInjectedDomainEvidence, classChainNames, classFromMethods, coerceAsyncReturn, collectAbsInlays, concatString, createTemplateAbs, decideEndsWith, decideIncludes, decideStartsWith, defineClass, definitelyUncallableMember, denoteGuard, derivationChain, endDerivationSession, enterCall, escapeTemplateTypeFixed, exitCall, fixedLengthOfViews, fnFingerprints, formatObjectKey, formatTemplateNameViews, generalizeSourceKeyPart, getAbsCallBudgetStats, getAbsOrigin, getClass, getClassChain, getDerivation, getEvalForkBudgetLimit, getEvalForkCount, getFnNameAndBodies, hasDerivationSession, hashSource, instanceOf, instantiateClass, isEvalMissingSlotEnabled, isJsIdent, isNullishAbs, isTemplateLike, knownPrefixOfViews, knownSuffixOfViews, listTopFunctions, lookupMethod, lookupMethodWithOwner, lookupSuperMethod, maskCommentsAndStrings, mergeAdjacentFixedViews, noteAbsTruncation, noteAnyMemberMayThrow, noteDerivationAdd, noteDerivationJoin, noteEvalForkTruncation, noteHostEffectBlocked, noteMemberDispatchMiss, noteNullishMemberThrows, noteObjSlotMissing, notePrimMemberMissing, noteUnknownMemberMissing, popCallLoc, projectBrand, projectDerivationDsl, pushCallLoc, recordMemberDiag, resetAbsCallBudget, resetEvalForkBudget, resetFnFpCache, resetHashSourceCache, runWithEvalMissingSlot, safeMemberAccess, sanitizeCommentText, scanStringLiterals, setAbsTruncationCollector, setDerivation, setDerivationCollector, setEvalForkBudgetLimit, setEvalMissingSlotEnabled, setMemberDiagCollector, sourceHasCjsExports, sourceHasModuleDependency, sourceHasRequireCall, stableAnalyzeKeySource, stableCallId, stripCommentsAndStrings, stripStringsKeepComments, superNameOf, tagAbsOrigin, tagDerivationRoot, templateMatchesValue, templatePartsOf, termKey, truncatedAbs, viewTemplateParts, withFnBudgetOverride, wrapPromise };
672
+ export { type AbsBudgetStats, type AbsInlay, type ArgDerivation, type ClassDef, type CollectAbsInlaysOpts, type DerivationNode, type EvalMemberDiag, FORK_TRUNCATION_LABEL, type FnFp, HOST_EFFECT_LABEL_PREFIX, type InjectedDomainEvidenceOpts, type InjectedDomainRecord, MAX_CALL_DEPTH, MAX_EVAL_TOTAL_FORKS, MAX_TOTAL_CALLS, type MethodDef, OBJECT_PROTO_NAMES, PROMISE_MICRO_ERROR_LABEL, PROMISE_MICRO_OVERFLOW_LABEL, type StringLiteralSpan, type TemplateMeta, type TemplatePartDesc, type TemplatePartView, type TemplatePredicateDecision, abortDerivationSession, absTemplateViews, allFixedTextOfViews, anyMemberResult, awaitAbs, beginDerivationSession, bumpEvalForkBudget, callBudgetKey, canSkipLiteralCallScan, checkInjectedDomainEvidence, classChainNames, classFromMethods, coerceAsyncReturn, collectAbsInlays, concatString, createTemplateAbs, decideEndsWith, decideIncludes, decideStartsWith, defineClass, definitelyUncallableMember, denoteGuard, derivationChain, endDerivationSession, enterCall, escapeTemplateTypeFixed, exitCall, fixedLengthOfViews, fnFingerprints, formatObjectKey, formatTemplateNameViews, generalizeSourceKeyPart, getAbsCallBudgetStats, getAbsOrigin, getClass, getClassChain, getDerivation, getEvalForkBudgetLimit, getEvalForkCount, getFnNameAndBodies, hasDerivationSession, hashSource, instanceOf, instantiateClass, isEvalMissingSlotEnabled, isJsBindingIdent, isJsIdent, isNullishAbs, isTemplateLike, knownPrefixOfViews, knownSuffixOfViews, listTopFunctions, lookupMethod, lookupMethodWithOwner, lookupSuperMethod, maskCommentsAndStrings, mergeAdjacentFixedViews, noteAbsTruncation, noteAnyMemberMayThrow, noteDerivationAdd, noteDerivationJoin, noteEvalForkTruncation, noteHostEffectBlocked, noteMemberDispatchMiss, noteNullishMemberThrows, noteObjSlotMissing, notePrimMemberMissing, noteUnknownMemberMissing, popCallLoc, projectBrand, projectDerivationDsl, pushCallLoc, recordMemberDiag, resetAbsCallBudget, resetEvalForkBudget, resetFnFpCache, resetHashSourceCache, runWithEvalMissingSlot, safeMemberAccess, sanitizeCommentText, scanStringLiterals, setAbsTruncationCollector, setDerivation, setDerivationCollector, setEvalForkBudgetLimit, setEvalMissingSlotEnabled, setMemberDiagCollector, sourceHasCjsExports, sourceHasModuleDependency, sourceHasRequireCall, stableAnalyzeKeySource, stableCallId, stripCommentsAndStrings, stripStringsKeepComments, superNameOf, tagAbsOrigin, tagDerivationRoot, templateMatchesValue, templatePartsOf, termKey, toJsBindingIdent, truncatedAbs, viewTemplateParts, withFnBudgetOverride, wrapPromise };