@nudojs/core 1.7.6 → 1.7.7
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/{chunk-CRDJOFM6.js → chunk-4WVYY2KS.js} +14 -2
- package/dist/{chunk-FEGOCPGH.js → chunk-JVUHIUFN.js} +14254 -13402
- package/dist/exec.d.ts +76 -7
- package/dist/exec.js +17 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.js +6 -3
- package/dist/internal.d.ts +4 -4
- package/dist/internal.js +2 -2
- package/dist/{projection-budget-CTpsYz6K.d.ts → projection-budget-CtwnzYLG.d.ts} +1 -1
- package/dist/{run-CDaGIWH_.d.ts → run-DbDRo5z6.d.ts} +5 -1
- package/package.json +1 -1
package/dist/exec.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { A as Abs, M as MayThrowEffect, b as Phi } from './run-
|
|
2
|
-
export { W as $assignRecord, X as $call, Y as $callNamed, Z as $recordBinding, a5 as EvalAbsAssignRecord, a6 as EvalCallRecord, a7 as EvalFallback, f as EvalFallbackStats, aa as MAX_EVAL_CALL_DEPTH, ab as MAX_EVAL_TOTAL_CALLS, ac as RUNTIME_IMPORT_RE, V as RunTranspiledOptions, ae as TranspiledCallResult, as as bindingsOf, av as callTranspiledExport, aw as callTranspiledExportApply, ax as callTranspiledExportFull, k as clearPureCallMemo, l as clearPureMemo, m as enterEvalCallBudgetSession, aC as evalExprAbs, o as exitEvalCallBudgetSession, u as getEvalCallBudgetState, aF as getEvalCallCollector, v as getEvalFallbackStats, aN as isAbsVal, b3 as noteEvalCallRecord, b4 as noteEvalFallback, bl as resetEvalCallBudget, G as resetEvalFallbackStats, bF as routeApplyThrows, bm as runTranspiled, bn as runTranspiledOptionsMemoKey, bo as setEvalAssignCollector, bp as setEvalBindingSink, bq as setEvalCallCollector, br as setEvalFallbackCollector, bC as tryRunTranspiled, N as withEvalBudgetOverride } from './run-
|
|
1
|
+
import { A as Abs, M as MayThrowEffect, b as Phi } from './run-DbDRo5z6.js';
|
|
2
|
+
export { W as $assignRecord, X as $call, Y as $callNamed, Z as $recordBinding, a5 as EvalAbsAssignRecord, a6 as EvalCallRecord, a7 as EvalFallback, f as EvalFallbackStats, aa as MAX_EVAL_CALL_DEPTH, ab as MAX_EVAL_TOTAL_CALLS, ac as RUNTIME_IMPORT_RE, V as RunTranspiledOptions, ae as TranspiledCallResult, as as bindingsOf, av as callTranspiledExport, aw as callTranspiledExportApply, ax as callTranspiledExportFull, k as clearPureCallMemo, l as clearPureMemo, m as enterEvalCallBudgetSession, aC as evalExprAbs, o as exitEvalCallBudgetSession, u as getEvalCallBudgetState, aF as getEvalCallCollector, v as getEvalFallbackStats, aN as isAbsVal, b3 as noteEvalCallRecord, b4 as noteEvalFallback, bl as resetEvalCallBudget, G as resetEvalFallbackStats, bF as routeApplyThrows, bm as runTranspiled, bn as runTranspiledOptionsMemoKey, bo as setEvalAssignCollector, bp as setEvalBindingSink, bq as setEvalCallCollector, br as setEvalFallbackCollector, bC as tryRunTranspiled, N as withEvalBudgetOverride } from './run-DbDRo5z6.js';
|
|
3
3
|
import { Node, Expression, File } from '@babel/types';
|
|
4
4
|
|
|
5
5
|
/**
|
|
@@ -54,10 +54,13 @@ declare function callAtFunctionBoundary<T>(body: () => T): T;
|
|
|
54
54
|
* 函数表达式 → 一等 fn Abs(transpile 侧带真实参数名;异步 body 包 $async)
|
|
55
55
|
* opts.bindThis:对象方法——$invoke 会把 receiver 作为 impl 的首参注入。
|
|
56
56
|
* opts.ctor:Bug 9 可构造性 facet(箭头/方法/async/generator → false;
|
|
57
|
-
* 函数表达式/类表达式值 → true)。
|
|
57
|
+
* 函数表达式/类表达式值 → true)。
|
|
58
|
+
* opts.padArgs:默认 true(Bug 7 缺参归一);读宿主 arguments 的
|
|
59
|
+
* function 包装传 false(arguments.length 不得被补齐膨胀)。 */
|
|
58
60
|
declare function $fnVal(params: string[], impl: (...args: Abs[]) => Abs, opts?: {
|
|
59
61
|
bindThis?: boolean;
|
|
60
62
|
ctor?: boolean;
|
|
63
|
+
padArgs?: boolean;
|
|
61
64
|
}): Abs;
|
|
62
65
|
/**
|
|
63
66
|
* 宿主 this → Abs:函数体 prologue 用它承接 call/apply/bind 传入的 thisArg。
|
|
@@ -184,6 +187,9 @@ declare function $join(a: Abs, b: Abs): Abs;
|
|
|
184
187
|
|
|
185
188
|
/** 注册对象字面量访问器(transpile 调用;返回原 obj 以便链式包裹) */
|
|
186
189
|
declare function $objAccessor(o: Abs, key: string, get: ((t: Abs) => Abs) | null, set: ((t: Abs, v: Abs) => Abs) | null): Abs;
|
|
190
|
+
/** 计算键访问器注册(`{ get [expr]() {} }`):键为 Abs,ToPropertyKey 后注册。
|
|
191
|
+
* 非字面量键无法静态定键——保占位槽(键存在性),不注册派发。 */
|
|
192
|
+
declare function $objAccessorKey(o: Abs, key: Abs, get: ((t: Abs) => Abs) | null, set: ((t: Abs, v: Abs) => Abs) | null): Abs;
|
|
187
193
|
/** 对象字面量访问器查询(供 $get/$set/$spread/Object.assign 共用) */
|
|
188
194
|
declare function lookupObjAccessor(o: Abs, key: string): {
|
|
189
195
|
get?: (t: Abs) => Abs;
|
|
@@ -418,13 +424,17 @@ declare function $async(thunk: () => Abs): Abs;
|
|
|
418
424
|
declare function $await(v: Abs): Abs;
|
|
419
425
|
/** async 直接 return 的 coerce */
|
|
420
426
|
declare function $asyncReturn(v: Abs): Abs;
|
|
421
|
-
/** function* 体:收集所有 yield
|
|
427
|
+
/** function* 体:收集所有 yield 值;返回带迭代器协议面的生成器对象 Abs;
|
|
428
|
+
* 抽象分支时降 conf(P0-6)
|
|
422
429
|
*
|
|
423
430
|
* Bug 58:调用生成器是原生全操作——体只在首个 next() 执行。此前 body()
|
|
424
431
|
* eager 执行把体内 may-throw(成员读 any)/显式 throw 折进**调用方** throws
|
|
425
432
|
* 域(每生成器入口假 entry-may-throw)。现以丢弃式 may-throw 帧包裹:
|
|
426
433
|
* soft 效果进帧后丢弃、NudoThrow/宿主异常吞掉(迭代期语义,调用期不表面)。
|
|
427
|
-
* yield 收集保持 eager(既有值域建模,注释口径不变)。
|
|
434
|
+
* yield 收集保持 eager(既有值域建模,注释口径不变)。
|
|
435
|
+
* Bug 22:结果从 yield 元组数组改为生成器对象(next/return/throw 方法面 +
|
|
436
|
+
* constructor 身份);元素域经侧表保留($arr 的 ≤cap tuple / >cap arr
|
|
437
|
+
* widen 策略不变),迭代路径(for-of/spread/Array.from)继续工作。 */
|
|
428
438
|
declare function $gen(body: () => void): Abs;
|
|
429
439
|
/** yield v:压入当前生成器收集器;表达式值用 unknown */
|
|
430
440
|
declare function $yield(v: Abs): Abs;
|
|
@@ -444,6 +454,27 @@ declare function $yieldStar(v: unknown): Abs;
|
|
|
444
454
|
* (issue #90)、`for (const x of o.items ?? [])` 假 may-throw。
|
|
445
455
|
*/
|
|
446
456
|
declare function $removeNullish(a: Abs): Abs;
|
|
457
|
+
/**
|
|
458
|
+
* 严格 `p === null` 守卫的假值臂剪影:只剥 null 成员(Bug 3 粒度——
|
|
459
|
+
* `null === undefined` 为 false,假值臂的 p **仍可能是 undefined**,
|
|
460
|
+
* 不得连 undefined 一起剪,否则 `p.major` 漏报真实 TypeError)。
|
|
461
|
+
*/
|
|
462
|
+
declare function $removeNull(a: Abs): Abs;
|
|
463
|
+
/**
|
|
464
|
+
* `typeof u === "undefined"` / 严格 `u === undefined` 守卫的假值臂剪影:
|
|
465
|
+
* 只剥 undefined 成员(`typeof null === "object"`——假值臂的 u 仍可能是
|
|
466
|
+
* null,`u.v` 对 null 仍原生抛 TypeError,不得剪)。
|
|
467
|
+
*/
|
|
468
|
+
declare function $removeUndefined(a: Abs): Abs;
|
|
469
|
+
/**
|
|
470
|
+
* typeof 类型守卫臂剪影(Bug 23):`typeof v === "string"` 真臂把 v 重绑为
|
|
471
|
+
* union 中 typeof 匹配的成员(keep=true)/ 假臂绑补集(keep=false)——臂内
|
|
472
|
+
* `+`/关系/迭代/模板串拿到成员类型而非 union,不再记假 may-throw。
|
|
473
|
+
* 裸 any 在事实臂窄化为对应 prim(issue #105);sum 内不可判成员
|
|
474
|
+
* (any/unknown)两侧都保留(保守,不引假阴性);全剪空 →
|
|
475
|
+
* 原样返回(臂不可达的保守近似,与 $removeNullish 空集口径一致)。
|
|
476
|
+
*/
|
|
477
|
+
declare function $narrowTypeOf(a: Abs, typeOf: string, keep: boolean): Abs;
|
|
447
478
|
/** `??` / `??=` 测试:确定非 nullish → false;lit nullish → true;否则抽象 boolean */
|
|
448
479
|
declare function $nullishTest(v: Abs): Abs;
|
|
449
480
|
|
|
@@ -451,10 +482,17 @@ type TranspileOptions = {
|
|
|
451
482
|
/** 运行时 import 说明符 */
|
|
452
483
|
runtimeImport?: string;
|
|
453
484
|
maxLoopIters?: number;
|
|
454
|
-
/**
|
|
485
|
+
/** 方法/函数体内 this 的绑定名(transpile class 时注入) */
|
|
455
486
|
thisParam?: string;
|
|
456
487
|
/** 当前类名(super 派发用) */
|
|
457
488
|
className?: string;
|
|
489
|
+
/**
|
|
490
|
+
* 静态方法体内 super 的接收者源(父类构造器——extends 表达式经
|
|
491
|
+
* classSpecOf 前移计算注入)。super.x / super.m() / super[k] 落通用
|
|
492
|
+
* $get/$invoke 路径(Super 节点直接发此源),消除 super 哨兵注释
|
|
493
|
+
* 逸出(Bug 14)。
|
|
494
|
+
*/
|
|
495
|
+
staticSuperSrc?: string;
|
|
458
496
|
/** 原始源码(@nudo:replace 按节点文本匹配) */
|
|
459
497
|
source?: string;
|
|
460
498
|
/** 替换表:归一化目标文本 → 注入变量名;可选语句范围 */
|
|
@@ -498,11 +536,32 @@ type TranspileOptions = {
|
|
|
498
536
|
* 箭头沿外层继承;无绑定(模块顶层 / 仅嵌套箭头引用)→ Identifier 分支折 $unknown()。
|
|
499
537
|
*/
|
|
500
538
|
argsBinding?: string;
|
|
539
|
+
/**
|
|
540
|
+
* 解构临时名单调计数器(`_d`/`_n`;transpileFile 创建,全模块共享)。
|
|
541
|
+
* 此前 `_d${seq}_${line}` 依赖源行号唯一化——同一行两条解构(压缩/单行
|
|
542
|
+
* 风格)重名 → 重复 `const` 声明 → 整模块 SyntaxError fail-closed;
|
|
543
|
+
* emitDestructure 的 `_n` 嵌套临时每语句重置,同样撞车。计数器与行号
|
|
544
|
+
* 解耦,跨语句/跨 prologue 单调。
|
|
545
|
+
*/
|
|
546
|
+
destrTmpSeq?: {
|
|
547
|
+
n: number;
|
|
548
|
+
};
|
|
501
549
|
/**
|
|
502
550
|
* 当前词法作用域可见的 const 绑定名(用户层再赋值须 TypeError)。
|
|
503
551
|
* 成员/下标写对根的内部重绑不在用户赋值路径,不走此表。
|
|
504
552
|
*/
|
|
505
553
|
constNames?: ReadonlySet<string>;
|
|
554
|
+
/**
|
|
555
|
+
* 本作用域已提升到函数体顶部的 var 名(Bug 21):块内 `var x = init`
|
|
556
|
+
* 改发赋值 `x = init`(绑定由顶部 `let x = $lit(void 0)` 提供)。
|
|
557
|
+
* 函数/方法体边界由 transpileFnBodyStmts 重算替换。
|
|
558
|
+
*/
|
|
559
|
+
hoistedVarNames?: ReadonlySet<string>;
|
|
560
|
+
/**
|
|
561
|
+
* `export var x`(模块顶层):保持声明面(host ESM export 收集依赖
|
|
562
|
+
* 声明语句),此类名字从提升集扣除、不发改赋值。
|
|
563
|
+
*/
|
|
564
|
+
keepVarDecl?: boolean;
|
|
506
565
|
};
|
|
507
566
|
|
|
508
567
|
/**
|
|
@@ -641,6 +700,16 @@ declare function $super(thisVal: Abs, childName: string, args: Abs[]): Abs;
|
|
|
641
700
|
declare function $invoke(thisVal: Abs, method: string, args: Abs[], loc?: [number, number]): Abs;
|
|
642
701
|
/** super.method():从父类起找(跳过自身覆盖) */
|
|
643
702
|
declare function $invokeSuper(thisVal: Abs, childName: string, method: string, args: Abs[]): Abs;
|
|
703
|
+
/** 类实例方法内 super.p / super[k] 属性读(Bug 14):父类原型链上的
|
|
704
|
+
* 访问器以 this 调用;实例字段/自有槽不在查找面(super 读的是原型)。
|
|
705
|
+
* 方法作为值(super.m 未调用)不做 fn Abs 投影——诚实 unknown。 */
|
|
706
|
+
declare function $getSuper(thisVal: Abs, childName: string, key: Abs): Abs;
|
|
707
|
+
/** 类实例方法内 super[k](args) 计算键调用(Bug 14):ToPropertyKey 后沿父类链派发 */
|
|
708
|
+
declare function $invokeSuperKey(thisVal: Abs, childName: string, key: Abs, args: Abs[]): Abs;
|
|
709
|
+
/** super.m() / super[k]():原型链方法查找 + receiver 注入调用 */
|
|
710
|
+
declare function $invokeSuperObj(thisVal: Abs, key: Abs, args: Abs[]): Abs;
|
|
711
|
+
/** super.v / super[k]:原型链属性读(访问器 getter 以 this 调用;数据槽直读) */
|
|
712
|
+
declare function $getSuperObj(thisVal: Abs, key: Abs): Abs;
|
|
644
713
|
declare function $thisGet(thisVal: Abs, key: string): Abs;
|
|
645
714
|
declare function $thisSet(thisVal: Abs, key: string, value: Abs): Abs;
|
|
646
715
|
/** 解构默认值:undefined(含 sum 成员 / 可能缺失)时用 default 并入非 undefined 部分 */
|
|
@@ -675,4 +744,4 @@ declare class NudoUnsupportedError extends Error {
|
|
|
675
744
|
detail?: string);
|
|
676
745
|
}
|
|
677
746
|
|
|
678
|
-
export { $absVal, $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, $iterCheck, $join, $le, $len, $lit, $loopBreak, $loopContinue, $loopReturn, $lt, $mod, $mul, $ne, $neLoose, $neg, $new, $newTarget, $not, $nullishTest, $obj, $objAccessor, $objRest, $optionalGet, $optionalInvoke, $orDefault, $pow, $pushLoopExit, $rawThis, $reStateCall, $regex, $removeNullish, $rethrowIfNudoReturn, $set, $setKey, $setProto, $shl, $shr, $spread, $staticInit, $staticInvoke, $sub, $super, $switch, $thisGet, $thisSet, $throw, $toNumber, $toNumeric, $tpl, $tryCurrentMark, $tryDetachSoftCatch, $tryDigestSoftCatch, $tryDiscardSoft, $tryMark, $tryOrphanSoft, $tryPopMark, $tryReleaseSoftCatch, $tryReleaseSoftOut, $tryTakeSince, $typeof, $unknown, $updateAdd, $updateSub, $ushr, $while, $whileSeq, $yield, $yieldStar, 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 };
|
|
747
|
+
export { $absVal, $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, $getSuper, $getSuperObj, $gt, $idx, $idxSet, $importMeta, $in, $instanceof, $instanceofNonIdent, $invoke, $invokeSuper, $invokeSuperKey, $invokeSuperObj, $isBreakTo, $isForkExit, $iterCheck, $join, $le, $len, $lit, $loopBreak, $loopContinue, $loopReturn, $lt, $mod, $mul, $narrowTypeOf, $ne, $neLoose, $neg, $new, $newTarget, $not, $nullishTest, $obj, $objAccessor, $objAccessorKey, $objRest, $optionalGet, $optionalInvoke, $orDefault, $pow, $pushLoopExit, $rawThis, $reStateCall, $regex, $removeNull, $removeNullish, $removeUndefined, $rethrowIfNudoReturn, $set, $setKey, $setProto, $shl, $shr, $spread, $staticInit, $staticInvoke, $sub, $super, $switch, $thisGet, $thisSet, $throw, $toNumber, $toNumeric, $tpl, $tryCurrentMark, $tryDetachSoftCatch, $tryDigestSoftCatch, $tryDiscardSoft, $tryMark, $tryOrphanSoft, $tryPopMark, $tryReleaseSoftCatch, $tryReleaseSoftOut, $tryTakeSince, $typeof, $unknown, $updateAdd, $updateSub, $ushr, $while, $whileSeq, $yield, $yieldStar, 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
|
@@ -39,6 +39,8 @@ import {
|
|
|
39
39
|
$ge,
|
|
40
40
|
$gen,
|
|
41
41
|
$get,
|
|
42
|
+
$getSuper,
|
|
43
|
+
$getSuperObj,
|
|
42
44
|
$gt,
|
|
43
45
|
$idx,
|
|
44
46
|
$idxSet,
|
|
@@ -48,6 +50,8 @@ import {
|
|
|
48
50
|
$instanceofNonIdent,
|
|
49
51
|
$invoke,
|
|
50
52
|
$invokeSuper,
|
|
53
|
+
$invokeSuperKey,
|
|
54
|
+
$invokeSuperObj,
|
|
51
55
|
$isBreakTo,
|
|
52
56
|
$isForkExit,
|
|
53
57
|
$iterCheck,
|
|
@@ -61,6 +65,7 @@ import {
|
|
|
61
65
|
$lt,
|
|
62
66
|
$mod,
|
|
63
67
|
$mul,
|
|
68
|
+
$narrowTypeOf,
|
|
64
69
|
$ne,
|
|
65
70
|
$neLoose,
|
|
66
71
|
$neg,
|
|
@@ -70,6 +75,7 @@ import {
|
|
|
70
75
|
$nullishTest,
|
|
71
76
|
$obj,
|
|
72
77
|
$objAccessor,
|
|
78
|
+
$objAccessorKey,
|
|
73
79
|
$objRest,
|
|
74
80
|
$optionalGet,
|
|
75
81
|
$optionalInvoke,
|
|
@@ -80,7 +86,9 @@ import {
|
|
|
80
86
|
$reStateCall,
|
|
81
87
|
$recordBinding,
|
|
82
88
|
$regex,
|
|
89
|
+
$removeNull,
|
|
83
90
|
$removeNullish,
|
|
91
|
+
$removeUndefined,
|
|
84
92
|
$rethrowIfNudoReturn,
|
|
85
93
|
$set,
|
|
86
94
|
$setKey,
|
|
@@ -184,7 +192,7 @@ import {
|
|
|
184
192
|
tryRunTranspiled,
|
|
185
193
|
withEvalBudgetOverride,
|
|
186
194
|
withExecPhi
|
|
187
|
-
} from "./chunk-
|
|
195
|
+
} from "./chunk-JVUHIUFN.js";
|
|
188
196
|
export {
|
|
189
197
|
$absVal,
|
|
190
198
|
$add,
|
|
@@ -225,6 +233,8 @@ export {
|
|
|
225
233
|
$ge,
|
|
226
234
|
$gen,
|
|
227
235
|
$get,
|
|
236
|
+
$getSuper,
|
|
237
|
+
$getSuperObj,
|
|
228
238
|
$gt,
|
|
229
239
|
$idx,
|
|
230
240
|
$idxSet,
|
|
@@ -234,6 +244,8 @@ export {
|
|
|
234
244
|
$instanceofNonIdent,
|
|
235
245
|
$invoke,
|
|
236
246
|
$invokeSuper,
|
|
247
|
+
$invokeSuperKey,
|
|
248
|
+
$invokeSuperObj,
|
|
237
249
|
$isBreakTo,
|
|
238
250
|
$isForkExit,
|
|
239
251
|
$iterCheck,
|
|
@@ -247,6 +259,7 @@ export {
|
|
|
247
259
|
$lt,
|
|
248
260
|
$mod,
|
|
249
261
|
$mul,
|
|
262
|
+
$narrowTypeOf,
|
|
250
263
|
$ne,
|
|
251
264
|
$neLoose,
|
|
252
265
|
$neg,
|
|
@@ -256,6 +269,7 @@ export {
|
|
|
256
269
|
$nullishTest,
|
|
257
270
|
$obj,
|
|
258
271
|
$objAccessor,
|
|
272
|
+
$objAccessorKey,
|
|
259
273
|
$objRest,
|
|
260
274
|
$optionalGet,
|
|
261
275
|
$optionalInvoke,
|
|
@@ -266,7 +280,9 @@ export {
|
|
|
266
280
|
$reStateCall,
|
|
267
281
|
$recordBinding,
|
|
268
282
|
$regex,
|
|
283
|
+
$removeNull,
|
|
269
284
|
$removeNullish,
|
|
285
|
+
$removeUndefined,
|
|
270
286
|
$rethrowIfNudoReturn,
|
|
271
287
|
$set,
|
|
272
288
|
$setKey,
|
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { c as AstEnv, A as Abs, b as Phi, T as Term, O as HofCollectCtx, C as Confidence, S as Shape, a as Pred, R as RelSource, Q as HofSite, U as AbsModuleExports, V as RunTranspiledOptions } from './run-
|
|
2
|
-
export { W as $assignRecord, X as $call, Y as $callNamed, Z as $recordBinding, _ as AbsApplyNoThrow, a0 as AbsApplyNoThrowFn, a1 as AbsApplyResult, a2 as AbsApplyReturn, a3 as AbsFnImpl, a4 as AbsSigImpl, a5 as EvalAbsAssignRecord, a6 as EvalCallRecord, a7 as EvalFallback, a8 as ImplicationOracle, a9 as LitValueResult, L as LiteralValue, aa as MAX_EVAL_CALL_DEPTH, ab as MAX_EVAL_TOTAL_CALLS, P as PrimName, ac as RUNTIME_IMPORT_RE, ad as TYPEOF_NAMES, ae as TranspiledCallResult, af as TypeofName, ag as abs, ah as absFunction, ai as absOnly, aj as absToString, ak as and, al as anyAbs, am as anyVar, an as app, ao as assumeFinite, ap as attachFnImpl, aq as bigintLit, ar as bindImports, as as bindingsOf, at as bool, au as boolLit, av as callTranspiledExport, aw as callTranspiledExportApply, ax as callTranspiledExportFull, ay as collectAbsExports, az as confJoin, aA as emptyPhi, aB as eq, aC as evalExprAbs, aD as ge, aE as geNum, aF as getEvalCallCollector, aG as getFnImpl, aH as getImplicationOracle, aI as gt, aJ as gtNum, aK as hostFnCtorFacet, aL as implies, aM as isAbsApplyResult, aN as isAbsVal, aO as isBigPrim, aP as isExactLit, aQ as isNumPrim, aR as isStrPrim, aS as le, aT as leNum, aU as lit, aV as litValue, aW as lt, aX as ltNum, aY as makeAbsApplyResult, aZ as markPureFn, a_ as namespaceAbsOf, a$ as ne, b0 as negatePred, b1 as never, b2 as not, b3 as noteEvalCallRecord, b4 as noteEvalFallback, b5 as num, b6 as numLit, b7 as numVar, b8 as obj, b9 as or, ba as pFalse, bb as pTrue, bc as phiAnd, bd as predEquals, be as predToString, bf as predVars, bg as primToTypeof, bh as ptypeof, bi as pureFnNameOf, bj as relationFingerprint, bk as relationFn, bl as resetEvalCallBudget, bm as runTranspiled, bn as runTranspiledOptionsMemoKey, bo as setEvalAssignCollector, bp as setEvalBindingSink, bq as setEvalCallCollector, br as setEvalFallbackCollector, bs as setImplicationOracle, bt as shapeOfTerm, bu as shapeOnlyFn, bv as shapeToString, bw as simplifyTerm, bx as str, by as strLit, bz as substPred, bA as termEquals, bB as termToString, bC as tryRunTranspiled, bD as unknown, bE as v } from './run-
|
|
1
|
+
import { c as AstEnv, A as Abs, b as Phi, T as Term, O as HofCollectCtx, C as Confidence, S as Shape, a as Pred, R as RelSource, Q as HofSite, U as AbsModuleExports, V as RunTranspiledOptions } from './run-DbDRo5z6.js';
|
|
2
|
+
export { W as $assignRecord, X as $call, Y as $callNamed, Z as $recordBinding, _ as AbsApplyNoThrow, a0 as AbsApplyNoThrowFn, a1 as AbsApplyResult, a2 as AbsApplyReturn, a3 as AbsFnImpl, a4 as AbsSigImpl, a5 as EvalAbsAssignRecord, a6 as EvalCallRecord, a7 as EvalFallback, a8 as ImplicationOracle, a9 as LitValueResult, L as LiteralValue, aa as MAX_EVAL_CALL_DEPTH, ab as MAX_EVAL_TOTAL_CALLS, P as PrimName, ac as RUNTIME_IMPORT_RE, ad as TYPEOF_NAMES, ae as TranspiledCallResult, af as TypeofName, ag as abs, ah as absFunction, ai as absOnly, aj as absToString, ak as and, al as anyAbs, am as anyVar, an as app, ao as assumeFinite, ap as attachFnImpl, aq as bigintLit, ar as bindImports, as as bindingsOf, at as bool, au as boolLit, av as callTranspiledExport, aw as callTranspiledExportApply, ax as callTranspiledExportFull, ay as collectAbsExports, az as confJoin, aA as emptyPhi, aB as eq, aC as evalExprAbs, aD as ge, aE as geNum, aF as getEvalCallCollector, aG as getFnImpl, aH as getImplicationOracle, aI as gt, aJ as gtNum, aK as hostFnCtorFacet, aL as implies, aM as isAbsApplyResult, aN as isAbsVal, aO as isBigPrim, aP as isExactLit, aQ as isNumPrim, aR as isStrPrim, aS as le, aT as leNum, aU as lit, aV as litValue, aW as lt, aX as ltNum, aY as makeAbsApplyResult, aZ as markPureFn, a_ as namespaceAbsOf, a$ as ne, b0 as negatePred, b1 as never, b2 as not, b3 as noteEvalCallRecord, b4 as noteEvalFallback, b5 as num, b6 as numLit, b7 as numVar, b8 as obj, b9 as or, ba as pFalse, bb as pTrue, bc as phiAnd, bd as predEquals, be as predToString, bf as predVars, bg as primToTypeof, bh as ptypeof, bi as pureFnNameOf, bj as relationFingerprint, bk as relationFn, bl as resetEvalCallBudget, bm as runTranspiled, bn as runTranspiledOptionsMemoKey, bo as setEvalAssignCollector, bp as setEvalBindingSink, bq as setEvalCallCollector, br as setEvalFallbackCollector, bs as setImplicationOracle, bt as shapeOfTerm, bu as shapeOnlyFn, bv as shapeToString, bw as simplifyTerm, bx as str, by as strLit, bz as substPred, bA as termEquals, bB as termToString, bC as tryRunTranspiled, bD as unknown, bE as v } from './run-DbDRo5z6.js';
|
|
3
3
|
import { Node, File } from '@babel/types';
|
|
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-
|
|
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-
|
|
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-CtwnzYLG.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-CtwnzYLG.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
|
/**
|
package/dist/index.js
CHANGED
|
@@ -91,7 +91,7 @@ import {
|
|
|
91
91
|
takeRefineDiagsSince,
|
|
92
92
|
throwConstraintToKinds,
|
|
93
93
|
union
|
|
94
|
-
} from "./chunk-
|
|
94
|
+
} from "./chunk-4WVYY2KS.js";
|
|
95
95
|
import {
|
|
96
96
|
$add,
|
|
97
97
|
$arguments,
|
|
@@ -513,7 +513,7 @@ import {
|
|
|
513
513
|
v,
|
|
514
514
|
withExecPhi,
|
|
515
515
|
withVar
|
|
516
|
-
} from "./chunk-
|
|
516
|
+
} from "./chunk-JVUHIUFN.js";
|
|
517
517
|
|
|
518
518
|
// src/environment.ts
|
|
519
519
|
function createEnvironment(parent, bindings = /* @__PURE__ */ new Map()) {
|
|
@@ -2365,7 +2365,10 @@ function checkSourceInner(filePath, source, file, phi, opts, issues, signatures,
|
|
|
2365
2365
|
...isEntry ? { entry: true } : {}
|
|
2366
2366
|
});
|
|
2367
2367
|
const unknownParamIdx = g.typeParams.findIndex(
|
|
2368
|
-
|
|
2368
|
+
// Bug 22/24 同口径:unknown 形状 + lit term(undefAbs / 契约 lit(null)·
|
|
2369
|
+
// lit(undefined) 成员)是有值证据,不是引擎债——与 symbolicTrueUnknown
|
|
2370
|
+
// 的排除一致。
|
|
2371
|
+
(t) => t.value && t.value.shape.k === "unknown" && t.value.term?.op !== "lit"
|
|
2369
2372
|
);
|
|
2370
2373
|
const budgetExplained = truncated.has(name) || g.symbolic?.conf === "opaque" || g.symbolic?.shape?.k === "sum" && g.symbolic.shape.members.every((m) => m.shape.k === "unknown" || m.shape.k === "any");
|
|
2371
2374
|
const symbolicTrueUnknown = g.symbolic?.shape?.k === "unknown" && g.symbolic.term?.op !== "lit";
|
package/dist/internal.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { I as InterfaceSource, a as InterfaceTierOpts, p as parseSource, C as CheckIssue } from './projection-budget-
|
|
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-
|
|
3
|
-
import { A as Abs, T as Term, c as AstEnv } from './run-
|
|
4
|
-
export { $ as $tryDigestSoft, d as $tryMarkSoft, e as $tryReleaseSoft, E as ERROR_FAMILY, f as EvalFallbackStats, M as MayThrowEffect, g as absLit, h as absNumLit, i as absStrLit, j as allAbsStr, k as clearPureCallMemo, l as clearPureMemo, m as enterEvalCallBudgetSession, n as errorTypeAbs, o as exitEvalCallBudgetSession, p as filterDeclaredThrows, q as filterGateThrows, r as filterIgnoredThrows, s as flushMayThrowEffects, t as formatThrowsAbs, u as getEvalCallBudgetState, v as getEvalFallbackStats, w as getMayThrowCollector, x as isThrowsIgnored, y as mayThrowEffectsToAbs, z as orphanMayThrowEffects, B as popMayThrowFrame, D as pushMayThrowFrame, F as recordMayThrow, G as resetEvalFallbackStats, H as runWithMayThrowSession, I as setMayThrowCollector, J as throwAbsToKinds, K as throwsKindCovered, N as withEvalBudgetOverride } from './run-
|
|
1
|
+
import { I as InterfaceSource, a as InterfaceTierOpts, p as parseSource, C as CheckIssue } from './projection-budget-CtwnzYLG.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-CtwnzYLG.js';
|
|
3
|
+
import { A as Abs, T as Term, c as AstEnv } from './run-DbDRo5z6.js';
|
|
4
|
+
export { $ as $tryDigestSoft, d as $tryMarkSoft, e as $tryReleaseSoft, E as ERROR_FAMILY, f as EvalFallbackStats, M as MayThrowEffect, g as absLit, h as absNumLit, i as absStrLit, j as allAbsStr, k as clearPureCallMemo, l as clearPureMemo, m as enterEvalCallBudgetSession, n as errorTypeAbs, o as exitEvalCallBudgetSession, p as filterDeclaredThrows, q as filterGateThrows, r as filterIgnoredThrows, s as flushMayThrowEffects, t as formatThrowsAbs, u as getEvalCallBudgetState, v as getEvalFallbackStats, w as getMayThrowCollector, x as isThrowsIgnored, y as mayThrowEffectsToAbs, z as orphanMayThrowEffects, B as popMayThrowFrame, D as pushMayThrowFrame, F as recordMayThrow, G as resetEvalFallbackStats, H as runWithMayThrowSession, I as setMayThrowCollector, J as throwAbsToKinds, K as throwsKindCovered, N as withEvalBudgetOverride } from './run-DbDRo5z6.js';
|
|
5
5
|
import { File, Node } from '@babel/types';
|
|
6
6
|
|
|
7
7
|
/**
|
package/dist/internal.js
CHANGED
|
@@ -21,7 +21,7 @@ import {
|
|
|
21
21
|
stableAnalyzeKeySource,
|
|
22
22
|
stablePathKey,
|
|
23
23
|
stablePathKeyGraph
|
|
24
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-4WVYY2KS.js";
|
|
25
25
|
import {
|
|
26
26
|
$tryDigestSoft,
|
|
27
27
|
$tryMarkSoft,
|
|
@@ -169,7 +169,7 @@ import {
|
|
|
169
169
|
withEvalBudgetOverride,
|
|
170
170
|
withFnBudgetOverride,
|
|
171
171
|
wrapPromise
|
|
172
|
-
} from "./chunk-
|
|
172
|
+
} from "./chunk-JVUHIUFN.js";
|
|
173
173
|
|
|
174
174
|
// src/algebra/inlay.ts
|
|
175
175
|
function listFunctions(source) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { File } from '@babel/types';
|
|
2
|
-
import { A as Abs, T as Term, P as PrimName, a as Pred, L as LiteralValue, b as Phi, C as Confidence } from './run-
|
|
2
|
+
import { A as Abs, T as Term, P as PrimName, a as Pred, L as LiteralValue, b as Phi, C as Confidence } from './run-DbDRo5z6.js';
|
|
3
3
|
|
|
4
4
|
declare function resetParseSourceCache(): void;
|
|
5
5
|
declare function getParseSourceCacheSize(): number;
|
|
@@ -324,7 +324,11 @@ declare function $tryDigestSoft(): void;
|
|
|
324
324
|
declare function $tryReleaseSoft(): MayThrowEffect[];
|
|
325
325
|
declare function flushMayThrowEffects(effects: MayThrowEffect[]): void;
|
|
326
326
|
declare function recordMayThrow(e: MayThrowEffect): void;
|
|
327
|
-
/** throws 类型名 → Abs(brand Error 形态,formatShape
|
|
327
|
+
/** throws 类型名 → Abs(brand Error 形态,formatShape 打出名字)。
|
|
328
|
+
* 内层 obj 带 name/message 槽(Bug 6):catch 形参 `e.name`/`e.message`
|
|
329
|
+
* 经 $get brand→inner 槽读取折精确值——name 是品牌名(静态可知),
|
|
330
|
+
* message 内容宿主特定 → 保守 string 域(与 builtins/error.ts
|
|
331
|
+
* errorBrandAbs 同口径)。 */
|
|
328
332
|
declare function errorTypeAbs(name: string): Abs;
|
|
329
333
|
/** 效果集 → throws Abs(never = 无 may-throw) */
|
|
330
334
|
declare function mayThrowEffectsToAbs(effects: MayThrowEffect[]): Abs;
|