@nudojs/core 1.16.0 → 1.17.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-OM6SAY2M.js → chunk-CUFP2AYV.js} +6429 -5834
- package/dist/{chunk-POGFCYV2.js → chunk-G27PMV2U.js} +290 -239
- package/dist/exec.d.ts +326 -121
- package/dist/exec.js +14 -16
- package/dist/index.d.ts +57 -79
- package/dist/index.js +24 -210
- package/dist/internal.d.ts +16 -41
- package/dist/internal.js +3 -32
- package/dist/{projection-budget-DW-svmIf.d.ts → projection-budget-NCXMnUDn.d.ts} +4 -1
- package/dist/{run-T9HWTziZ.d.ts → run-DeKkteRZ.d.ts} +55 -40
- package/package.json +1 -1
- /package/dist/{chunk-US532PZA.js → chunk-II73GZOY.js} +0 -0
package/dist/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import "./chunk-
|
|
1
|
+
import "./chunk-II73GZOY.js";
|
|
2
2
|
import {
|
|
3
|
+
DependencyMemo,
|
|
3
4
|
INTERFACE_SOURCE_ABBR,
|
|
4
5
|
NudoSidecarError,
|
|
5
6
|
absWithStableTermIds,
|
|
@@ -38,12 +39,12 @@ import {
|
|
|
38
39
|
formatGithubAnnotations,
|
|
39
40
|
formatGitlabCodeQuality,
|
|
40
41
|
formatInterfaceTierLine,
|
|
41
|
-
generalizeAll,
|
|
42
42
|
generalizeFromAst,
|
|
43
43
|
generatedExportNames,
|
|
44
44
|
getGeneralizeMemoSize,
|
|
45
45
|
guardLoadModule,
|
|
46
46
|
hashSource,
|
|
47
|
+
instanceForMethodBridge,
|
|
47
48
|
interfaceDiagCount,
|
|
48
49
|
interfaceSourceOf,
|
|
49
50
|
interfaceTierOf,
|
|
@@ -53,12 +54,15 @@ import {
|
|
|
53
54
|
listFunctionNames,
|
|
54
55
|
listTopFunctions,
|
|
55
56
|
loadModuleDepsFingerprint,
|
|
57
|
+
loadModuleId,
|
|
56
58
|
localNamedExports,
|
|
59
|
+
moduleMapId,
|
|
57
60
|
nodeSpan,
|
|
58
61
|
normPath,
|
|
59
62
|
parseEnvPayload,
|
|
60
63
|
parseMockModulePayload,
|
|
61
64
|
parseNudoImportPayload,
|
|
65
|
+
projectAbsPath,
|
|
62
66
|
reachableTopBindings,
|
|
63
67
|
refineDiagCount,
|
|
64
68
|
refineToIndexedFull,
|
|
@@ -87,7 +91,7 @@ import {
|
|
|
87
91
|
takeInterfaceDiagsSince,
|
|
88
92
|
takeRefineDiags,
|
|
89
93
|
takeRefineDiagsSince
|
|
90
|
-
} from "./chunk-
|
|
94
|
+
} from "./chunk-G27PMV2U.js";
|
|
91
95
|
import {
|
|
92
96
|
$add,
|
|
93
97
|
$arguments,
|
|
@@ -97,7 +101,6 @@ import {
|
|
|
97
101
|
$arrWithHoles,
|
|
98
102
|
$assignRecord,
|
|
99
103
|
$async,
|
|
100
|
-
$asyncReturn,
|
|
101
104
|
$await,
|
|
102
105
|
$bitand,
|
|
103
106
|
$bitnot,
|
|
@@ -121,7 +124,6 @@ import {
|
|
|
121
124
|
$fnVal,
|
|
122
125
|
$for,
|
|
123
126
|
$forInKeys,
|
|
124
|
-
$forIter,
|
|
125
127
|
$forOf,
|
|
126
128
|
$fork,
|
|
127
129
|
$ge,
|
|
@@ -176,8 +178,6 @@ import {
|
|
|
176
178
|
$sub,
|
|
177
179
|
$super,
|
|
178
180
|
$switch,
|
|
179
|
-
$thisGet,
|
|
180
|
-
$thisSet,
|
|
181
181
|
$throw,
|
|
182
182
|
$toNumber,
|
|
183
183
|
$toNumeric,
|
|
@@ -196,7 +196,6 @@ import {
|
|
|
196
196
|
$updateAdd,
|
|
197
197
|
$updateSub,
|
|
198
198
|
$ushr,
|
|
199
|
-
$while,
|
|
200
199
|
$whileSeq,
|
|
201
200
|
$yield,
|
|
202
201
|
CONSTRAINT_BUILDERS,
|
|
@@ -229,7 +228,6 @@ import {
|
|
|
229
228
|
absToString,
|
|
230
229
|
accessorReadDomain,
|
|
231
230
|
add,
|
|
232
|
-
alphaOf,
|
|
233
231
|
and,
|
|
234
232
|
andC,
|
|
235
233
|
any,
|
|
@@ -247,7 +245,6 @@ import {
|
|
|
247
245
|
attachContractFaces,
|
|
248
246
|
attachFnImpl,
|
|
249
247
|
beginCollectionFork,
|
|
250
|
-
betaOf,
|
|
251
248
|
bigintLit,
|
|
252
249
|
bindImports,
|
|
253
250
|
bindingsOf,
|
|
@@ -278,7 +275,6 @@ import {
|
|
|
278
275
|
constraintToEntryAbs,
|
|
279
276
|
contractFacesFromEffectiveInterface,
|
|
280
277
|
contractParamNameSet,
|
|
281
|
-
createHofCollectCtx,
|
|
282
278
|
ctorArgDefinitelyInvalid,
|
|
283
279
|
ctorNameOfRecv,
|
|
284
280
|
currentExecPhi,
|
|
@@ -361,6 +357,7 @@ import {
|
|
|
361
357
|
isDefinitelyTrue,
|
|
362
358
|
isErrorCtorName,
|
|
363
359
|
isExactLit,
|
|
360
|
+
isHiddenInternalSlot,
|
|
364
361
|
isIntFlag,
|
|
365
362
|
isMapAbs,
|
|
366
363
|
isNudoBreak,
|
|
@@ -442,6 +439,7 @@ import {
|
|
|
442
439
|
numLit,
|
|
443
440
|
numVar,
|
|
444
441
|
number,
|
|
442
|
+
numericBoundsImply,
|
|
445
443
|
obj,
|
|
446
444
|
objOf,
|
|
447
445
|
objectProtoBrand,
|
|
@@ -461,7 +459,6 @@ import {
|
|
|
461
459
|
predVars,
|
|
462
460
|
primToTypeof,
|
|
463
461
|
projectFlatMapResult,
|
|
464
|
-
promoteParamShape,
|
|
465
462
|
propertyKeyOf,
|
|
466
463
|
protoBrandAbs,
|
|
467
464
|
protoOfRecv,
|
|
@@ -540,10 +537,6 @@ import {
|
|
|
540
537
|
transpileSource,
|
|
541
538
|
trueConstraint,
|
|
542
539
|
tryMakeRegexAbs,
|
|
543
|
-
tryPromoteDirectCall,
|
|
544
|
-
tryPromoteForOfIteratee,
|
|
545
|
-
tryPromoteHofCallback,
|
|
546
|
-
tryPromoteReceiverAsArr,
|
|
547
540
|
tryRunTranspiled,
|
|
548
541
|
tryRunTranspiledDetailed,
|
|
549
542
|
typeofAbs,
|
|
@@ -556,7 +549,7 @@ import {
|
|
|
556
549
|
withExecPhi,
|
|
557
550
|
withInvariantSpecs,
|
|
558
551
|
withVar
|
|
559
|
-
} from "./chunk-
|
|
552
|
+
} from "./chunk-CUFP2AYV.js";
|
|
560
553
|
|
|
561
554
|
// src/environment.ts
|
|
562
555
|
function createEnvironment(parent, bindings = /* @__PURE__ */ new Map()) {
|
|
@@ -645,33 +638,6 @@ function mock() {
|
|
|
645
638
|
return { kind: "mock-helper" };
|
|
646
639
|
}
|
|
647
640
|
|
|
648
|
-
// src/algebra/phi.ts
|
|
649
|
-
var phiStack = [pTrue];
|
|
650
|
-
function currentPhi() {
|
|
651
|
-
return phiStack[phiStack.length - 1] ?? pTrue;
|
|
652
|
-
}
|
|
653
|
-
function pushPhi(p) {
|
|
654
|
-
phiStack.push(p);
|
|
655
|
-
}
|
|
656
|
-
function popPhi() {
|
|
657
|
-
if (phiStack.length > 1) phiStack.pop();
|
|
658
|
-
}
|
|
659
|
-
function resetPhi() {
|
|
660
|
-
phiStack = [pTrue];
|
|
661
|
-
}
|
|
662
|
-
function withPhiConstraint(extra, body) {
|
|
663
|
-
pushPhi(extra);
|
|
664
|
-
try {
|
|
665
|
-
body();
|
|
666
|
-
} finally {
|
|
667
|
-
popPhi();
|
|
668
|
-
}
|
|
669
|
-
}
|
|
670
|
-
function describePhi() {
|
|
671
|
-
const p = currentPhi();
|
|
672
|
-
return p.op === "true" ? "\u22A4" : "(phi)";
|
|
673
|
-
}
|
|
674
|
-
|
|
675
641
|
// src/algebra/check.ts
|
|
676
642
|
import { isBuiltin } from "module";
|
|
677
643
|
|
|
@@ -963,7 +929,7 @@ function assertScalar(ret, constraint, phi) {
|
|
|
963
929
|
if (phi.op !== "true" && ret.pred && ret.pred.op !== "true" && implies(ret.pred, constraintPred)) {
|
|
964
930
|
return proved();
|
|
965
931
|
}
|
|
966
|
-
if (ret.pred && ret.pred.op !== "true" &&
|
|
932
|
+
if (ret.pred && ret.pred.op !== "true" && numericBoundsImply(ret.pred, constraintPred)) {
|
|
967
933
|
return proved();
|
|
968
934
|
}
|
|
969
935
|
if (phiSuppliesConstraint(phi, constraint, ret)) return proved();
|
|
@@ -997,36 +963,6 @@ function assertScalar(ret, constraint, phi) {
|
|
|
997
963
|
}
|
|
998
964
|
return proved();
|
|
999
965
|
}
|
|
1000
|
-
function numericBoundsImplyLocal(src, tgt) {
|
|
1001
|
-
const one = (p) => p.op === "gt" || p.op === "ge" || p.op === "lt" || p.op === "le";
|
|
1002
|
-
if (!one(src) || !one(tgt)) return false;
|
|
1003
|
-
if (src.op !== tgt.op) {
|
|
1004
|
-
if (src.op === "gt" && tgt.op === "ge") {
|
|
1005
|
-
return sameTermSide(src, tgt) && litGE(src.b, tgt.b);
|
|
1006
|
-
}
|
|
1007
|
-
if (src.op === "lt" && tgt.op === "le") {
|
|
1008
|
-
return sameTermSide(src, tgt) && litLE(src.b, tgt.b);
|
|
1009
|
-
}
|
|
1010
|
-
return false;
|
|
1011
|
-
}
|
|
1012
|
-
if (!sameTermSide(src, tgt)) return false;
|
|
1013
|
-
const sb = src.b.op === "lit" ? src.b.value : void 0;
|
|
1014
|
-
const tb = tgt.b.op === "lit" ? tgt.b.value : void 0;
|
|
1015
|
-
if (typeof sb !== "number" || typeof tb !== "number") return false;
|
|
1016
|
-
if (src.op === "gt" || src.op === "ge") return sb >= tb;
|
|
1017
|
-
return sb <= tb;
|
|
1018
|
-
}
|
|
1019
|
-
function sameTermSide(a, b) {
|
|
1020
|
-
return a.a.op === b.a.op && termEquals(a.a, b.a);
|
|
1021
|
-
}
|
|
1022
|
-
function litGE(a, b) {
|
|
1023
|
-
if (a.op !== "lit" || b.op !== "lit") return false;
|
|
1024
|
-
return typeof a.value === "number" && typeof b.value === "number" && a.value >= b.value;
|
|
1025
|
-
}
|
|
1026
|
-
function litLE(a, b) {
|
|
1027
|
-
if (a.op !== "lit" || b.op !== "lit") return false;
|
|
1028
|
-
return typeof a.value === "number" && typeof b.value === "number" && a.value <= b.value;
|
|
1029
|
-
}
|
|
1030
966
|
function primOfAbs(a) {
|
|
1031
967
|
if (a.shape.k === "prim") return a.shape.type;
|
|
1032
968
|
const lvR = litValue(a);
|
|
@@ -1174,9 +1110,6 @@ var ARR_FALLBACK_CONF = /* @__PURE__ */ new Set([
|
|
|
1174
1110
|
"path",
|
|
1175
1111
|
"widened"
|
|
1176
1112
|
]);
|
|
1177
|
-
function isHiddenInternalSlot(k, slot) {
|
|
1178
|
-
return slot.internal === true && canonicalArrayIndex(k) === void 0;
|
|
1179
|
-
}
|
|
1180
1113
|
function absToConstraint(a, budget = new ProjectionBudget()) {
|
|
1181
1114
|
if (!PROJECTABLE_CONF.has(a.conf)) return void 0;
|
|
1182
1115
|
const stop = budget.enter(a);
|
|
@@ -1710,52 +1643,15 @@ function formatSigCached(absVal, name) {
|
|
|
1710
1643
|
}
|
|
1711
1644
|
|
|
1712
1645
|
// src/algebra/check-memo.ts
|
|
1713
|
-
var checkReportMemo = /* @__PURE__ */ new Map();
|
|
1714
|
-
var checkKeyDeps = /* @__PURE__ */ new Map();
|
|
1715
|
-
var checkDepIndex = /* @__PURE__ */ new Map();
|
|
1716
|
-
var loadModuleIds = /* @__PURE__ */ new WeakMap();
|
|
1717
|
-
var nextLoadModuleId = 1;
|
|
1718
1646
|
var MAX_CHECK_MEMO = 256;
|
|
1647
|
+
var checkReportMemo = new DependencyMemo(MAX_CHECK_MEMO);
|
|
1719
1648
|
function resetCheckSourceMemo() {
|
|
1720
|
-
checkReportMemo.
|
|
1721
|
-
checkKeyDeps.clear();
|
|
1722
|
-
checkDepIndex.clear();
|
|
1649
|
+
checkReportMemo.reset();
|
|
1723
1650
|
resetHashSourceCache();
|
|
1724
1651
|
resetSidecarLoadFailureCache();
|
|
1725
1652
|
}
|
|
1726
|
-
function loadModuleId(fn2) {
|
|
1727
|
-
if (!fn2) return 0;
|
|
1728
|
-
let id = loadModuleIds.get(fn2);
|
|
1729
|
-
if (id === void 0) {
|
|
1730
|
-
id = nextLoadModuleId++;
|
|
1731
|
-
loadModuleIds.set(fn2, id);
|
|
1732
|
-
}
|
|
1733
|
-
return id;
|
|
1734
|
-
}
|
|
1735
|
-
function unindexCheckKey(key) {
|
|
1736
|
-
const deps = checkKeyDeps.get(key);
|
|
1737
|
-
if (!deps) return;
|
|
1738
|
-
for (const p of deps) {
|
|
1739
|
-
const set = checkDepIndex.get(p);
|
|
1740
|
-
if (!set) continue;
|
|
1741
|
-
set.delete(key);
|
|
1742
|
-
if (set.size === 0) checkDepIndex.delete(p);
|
|
1743
|
-
}
|
|
1744
|
-
checkKeyDeps.delete(key);
|
|
1745
|
-
}
|
|
1746
1653
|
function evictCheckSourceMemoForPaths(paths) {
|
|
1747
|
-
|
|
1748
|
-
for (const raw of paths) {
|
|
1749
|
-
const p = stablePathKey(raw);
|
|
1750
|
-
const keys = checkDepIndex.get(p);
|
|
1751
|
-
if (!keys) continue;
|
|
1752
|
-
for (const key of [...keys]) {
|
|
1753
|
-
checkReportMemo.delete(key);
|
|
1754
|
-
unindexCheckKey(key);
|
|
1755
|
-
n++;
|
|
1756
|
-
}
|
|
1757
|
-
}
|
|
1758
|
-
return n;
|
|
1654
|
+
return checkReportMemo.evictForPaths(paths);
|
|
1759
1655
|
}
|
|
1760
1656
|
function cloneCheckReport(r) {
|
|
1761
1657
|
return {
|
|
@@ -1771,17 +1667,6 @@ function cloneCheckReport(r) {
|
|
|
1771
1667
|
...r.budget ? { budget: { ...r.budget } } : {}
|
|
1772
1668
|
};
|
|
1773
1669
|
}
|
|
1774
|
-
var moduleMapIds = /* @__PURE__ */ new WeakMap();
|
|
1775
|
-
var moduleMapIdSeq = 0;
|
|
1776
|
-
function moduleMapId(m) {
|
|
1777
|
-
if (!m) return "-";
|
|
1778
|
-
let id = moduleMapIds.get(m);
|
|
1779
|
-
if (id === void 0) {
|
|
1780
|
-
id = ++moduleMapIdSeq;
|
|
1781
|
-
moduleMapIds.set(m, id);
|
|
1782
|
-
}
|
|
1783
|
-
return `m${id}`;
|
|
1784
|
-
}
|
|
1785
1670
|
function checkMemoKey(filePath, source, identityOpts, deps, sidecarFp) {
|
|
1786
1671
|
return [
|
|
1787
1672
|
hashSource(source),
|
|
@@ -1818,33 +1703,11 @@ function fromKey(from) {
|
|
|
1818
1703
|
).sort().join(";");
|
|
1819
1704
|
}
|
|
1820
1705
|
function checkMemoGet(key) {
|
|
1821
|
-
|
|
1822
|
-
|
|
1823
|
-
checkReportMemo.delete(key);
|
|
1824
|
-
checkReportMemo.set(key, v2);
|
|
1825
|
-
return v2;
|
|
1706
|
+
const hit = checkReportMemo.lookup(key);
|
|
1707
|
+
return hit.hit ? hit.value : null;
|
|
1826
1708
|
}
|
|
1827
1709
|
function checkMemoSet(key, value, depPaths) {
|
|
1828
|
-
|
|
1829
|
-
const oldest = checkReportMemo.keys().next().value;
|
|
1830
|
-
if (oldest !== void 0) {
|
|
1831
|
-
checkReportMemo.delete(oldest);
|
|
1832
|
-
unindexCheckKey(oldest);
|
|
1833
|
-
}
|
|
1834
|
-
}
|
|
1835
|
-
checkReportMemo.set(key, value);
|
|
1836
|
-
if (depPaths.length > 0) {
|
|
1837
|
-
const normDeps = [...new Set(depPaths.map(stablePathKey))];
|
|
1838
|
-
checkKeyDeps.set(key, normDeps);
|
|
1839
|
-
for (const p of normDeps) {
|
|
1840
|
-
let set = checkDepIndex.get(p);
|
|
1841
|
-
if (!set) {
|
|
1842
|
-
set = /* @__PURE__ */ new Set();
|
|
1843
|
-
checkDepIndex.set(p, set);
|
|
1844
|
-
}
|
|
1845
|
-
set.add(key);
|
|
1846
|
-
}
|
|
1847
|
-
}
|
|
1710
|
+
checkReportMemo.set(key, value, depPaths);
|
|
1848
1711
|
}
|
|
1849
1712
|
|
|
1850
1713
|
// src/algebra/check-may-throw.ts
|
|
@@ -1965,7 +1828,8 @@ function evalThrowsOutcome(source, fnName, args, opts = {}, phi = pTrue, file) {
|
|
|
1965
1828
|
const inst = instanceForMethodBridge(
|
|
1966
1829
|
clsAbs,
|
|
1967
1830
|
clsName ?? "",
|
|
1968
|
-
ctorAnyArgs(file, clsName ?? "")
|
|
1831
|
+
ctorAnyArgs(file, clsName ?? ""),
|
|
1832
|
+
runWithMayThrowSession
|
|
1969
1833
|
);
|
|
1970
1834
|
return $invoke(inst, methodName ?? "", args);
|
|
1971
1835
|
}, phi)
|
|
@@ -2041,26 +1905,6 @@ function ctorAnyArgs(file, clsName) {
|
|
|
2041
1905
|
const n = file ? ctorParamCountOf(file, clsName) : 0;
|
|
2042
1906
|
return Array.from({ length: n }, () => abs({ k: "any" }, void 0, pTrue, "path"));
|
|
2043
1907
|
}
|
|
2044
|
-
function instanceForMethodBridge(clsAbs, clsName, ctorArgs) {
|
|
2045
|
-
try {
|
|
2046
|
-
return runWithMayThrowSession(() => $new(clsAbs, ctorArgs));
|
|
2047
|
-
} catch {
|
|
2048
|
-
return bareInstanceOf(clsAbs, clsName);
|
|
2049
|
-
}
|
|
2050
|
-
}
|
|
2051
|
-
function bareInstanceOf(clsAbs, clsName) {
|
|
2052
|
-
const name = clsAbs.shape.k === "brand" && clsAbs.shape.name.length > 0 ? clsAbs.shape.name : clsName;
|
|
2053
|
-
return abs(
|
|
2054
|
-
{
|
|
2055
|
-
k: "brand",
|
|
2056
|
-
name,
|
|
2057
|
-
shape: abs({ k: "unknown" }, void 0, void 0, "partial")
|
|
2058
|
-
},
|
|
2059
|
-
void 0,
|
|
2060
|
-
void 0,
|
|
2061
|
-
"path"
|
|
2062
|
-
);
|
|
2063
|
-
}
|
|
2064
1908
|
function classMemberName(m) {
|
|
2065
1909
|
const key = m.key;
|
|
2066
1910
|
if (!key) return void 0;
|
|
@@ -2366,6 +2210,7 @@ function structuralAssignIssues(records) {
|
|
|
2366
2210
|
if (!r.prev) continue;
|
|
2367
2211
|
if (!isAbsLike(r.prev) || !isAbsLike(r.next)) continue;
|
|
2368
2212
|
if (r.conditional) continue;
|
|
2213
|
+
if (r.paramBinding === true) continue;
|
|
2369
2214
|
if (r.next.shape.k === "unknown" && !r.next.term) continue;
|
|
2370
2215
|
if (r.prev.shape.k === "unknown" && !r.prev.term) continue;
|
|
2371
2216
|
const leq = leqAbs(widenForAssign(r.next), shapeOnly(widenForAssign(r.prev)));
|
|
@@ -2720,18 +2565,6 @@ function witnessViolations(c, w, path, depth) {
|
|
|
2720
2565
|
}
|
|
2721
2566
|
return [];
|
|
2722
2567
|
}
|
|
2723
|
-
function projectCaseArgField(arg, fieldPath) {
|
|
2724
|
-
let cur = arg;
|
|
2725
|
-
for (const seg of fieldPath) {
|
|
2726
|
-
if (!cur) return void 0;
|
|
2727
|
-
if (cur.shape.k === "brand") {
|
|
2728
|
-
cur = cur.shape.shape;
|
|
2729
|
-
}
|
|
2730
|
-
if (cur.shape.k !== "obj") return void 0;
|
|
2731
|
-
cur = getSlot(cur.shape.slots, seg)?.value;
|
|
2732
|
-
}
|
|
2733
|
-
return cur;
|
|
2734
|
-
}
|
|
2735
2568
|
function scanCaseInconsistency(source, knownFns, opts) {
|
|
2736
2569
|
const out = [];
|
|
2737
2570
|
const directiveSrc = stripStringsKeepComments(source);
|
|
@@ -2815,7 +2648,7 @@ function scanCaseInconsistency(source, knownFns, opts) {
|
|
|
2815
2648
|
}
|
|
2816
2649
|
let arg = absArgs[idx];
|
|
2817
2650
|
if (fieldPath) {
|
|
2818
|
-
const projected =
|
|
2651
|
+
const projected = projectAbsPath(arg, fieldPath);
|
|
2819
2652
|
if (!projected) {
|
|
2820
2653
|
const k = arg.shape.k;
|
|
2821
2654
|
if (k !== "unknown" && k !== "any") {
|
|
@@ -3873,7 +3706,9 @@ function checkSourceInner(filePath, source, file, phi, opts, issues, signatures,
|
|
|
3873
3706
|
driftInit = true;
|
|
3874
3707
|
}
|
|
3875
3708
|
if (!driftRun || !(fnName in driftRun)) return void 0;
|
|
3876
|
-
return callTranspiledExportFull(driftRun, fnName, args
|
|
3709
|
+
return callTranspiledExportFull(driftRun, fnName, args, {
|
|
3710
|
+
preferLocal: true
|
|
3711
|
+
}).result;
|
|
3877
3712
|
} catch {
|
|
3878
3713
|
return void 0;
|
|
3879
3714
|
}
|
|
@@ -3925,7 +3760,6 @@ export {
|
|
|
3925
3760
|
$arrWithHoles,
|
|
3926
3761
|
$assignRecord,
|
|
3927
3762
|
$async,
|
|
3928
|
-
$asyncReturn,
|
|
3929
3763
|
$await,
|
|
3930
3764
|
$bitand,
|
|
3931
3765
|
$bitnot,
|
|
@@ -3949,7 +3783,6 @@ export {
|
|
|
3949
3783
|
$fnVal,
|
|
3950
3784
|
$for,
|
|
3951
3785
|
$forInKeys,
|
|
3952
|
-
$forIter,
|
|
3953
3786
|
$forOf,
|
|
3954
3787
|
$fork,
|
|
3955
3788
|
$ge,
|
|
@@ -4000,12 +3833,9 @@ export {
|
|
|
4000
3833
|
$shl,
|
|
4001
3834
|
$shr,
|
|
4002
3835
|
$spread,
|
|
4003
|
-
$staticInvoke,
|
|
4004
3836
|
$sub,
|
|
4005
3837
|
$super,
|
|
4006
3838
|
$switch,
|
|
4007
|
-
$thisGet,
|
|
4008
|
-
$thisSet,
|
|
4009
3839
|
$throw,
|
|
4010
3840
|
$toNumber,
|
|
4011
3841
|
$toNumeric,
|
|
@@ -4024,7 +3854,6 @@ export {
|
|
|
4024
3854
|
$updateAdd,
|
|
4025
3855
|
$updateSub,
|
|
4026
3856
|
$ushr,
|
|
4027
|
-
$while,
|
|
4028
3857
|
$whileSeq,
|
|
4029
3858
|
$yield,
|
|
4030
3859
|
CONSTRAINT_BUILDERS,
|
|
@@ -4051,7 +3880,6 @@ export {
|
|
|
4051
3880
|
absToString,
|
|
4052
3881
|
actionsForIssue,
|
|
4053
3882
|
add,
|
|
4054
|
-
alphaOf,
|
|
4055
3883
|
and,
|
|
4056
3884
|
andC,
|
|
4057
3885
|
any,
|
|
@@ -4067,7 +3895,6 @@ export {
|
|
|
4067
3895
|
assumeFinite,
|
|
4068
3896
|
attachFnImpl,
|
|
4069
3897
|
beginCollectionFork,
|
|
4070
|
-
betaOf,
|
|
4071
3898
|
bigintLit,
|
|
4072
3899
|
bindImports,
|
|
4073
3900
|
bindingsOf,
|
|
@@ -4103,14 +3930,11 @@ export {
|
|
|
4103
3930
|
constraintToEntryAbs,
|
|
4104
3931
|
contractParamNameSet,
|
|
4105
3932
|
createEnvironment,
|
|
4106
|
-
createHofCollectCtx,
|
|
4107
3933
|
ctorArgDefinitelyInvalid,
|
|
4108
3934
|
ctorNameOfRecv,
|
|
4109
3935
|
currentExecPhi,
|
|
4110
|
-
currentPhi,
|
|
4111
3936
|
definitelyNotNullishShape,
|
|
4112
3937
|
derefConstraint,
|
|
4113
|
-
describePhi,
|
|
4114
3938
|
div,
|
|
4115
3939
|
drainPromiseMicros,
|
|
4116
3940
|
effectiveInterface,
|
|
@@ -4180,7 +4004,6 @@ export {
|
|
|
4180
4004
|
formatShapeSlot,
|
|
4181
4005
|
ge,
|
|
4182
4006
|
geNum,
|
|
4183
|
-
generalizeAll,
|
|
4184
4007
|
generalizeFromAst,
|
|
4185
4008
|
generatedExportNames,
|
|
4186
4009
|
getAbsProperty,
|
|
@@ -4311,14 +4134,12 @@ export {
|
|
|
4311
4134
|
phiAnd,
|
|
4312
4135
|
pick,
|
|
4313
4136
|
popCollectionArm,
|
|
4314
|
-
popPhi,
|
|
4315
4137
|
powAbs,
|
|
4316
4138
|
predEquals,
|
|
4317
4139
|
predToString,
|
|
4318
4140
|
predVars,
|
|
4319
4141
|
primToTypeof,
|
|
4320
4142
|
projectFlatMapResult,
|
|
4321
|
-
promoteParamShape,
|
|
4322
4143
|
propertyKeyOf,
|
|
4323
4144
|
protoBrandAbs,
|
|
4324
4145
|
protoOfRecv,
|
|
@@ -4326,7 +4147,6 @@ export {
|
|
|
4326
4147
|
pureFnNameOf,
|
|
4327
4148
|
pushCollectionArm,
|
|
4328
4149
|
pushLoopExit,
|
|
4329
|
-
pushPhi,
|
|
4330
4150
|
pushThrowExit,
|
|
4331
4151
|
queuePromiseMicro,
|
|
4332
4152
|
refineAbsForRelTrue,
|
|
@@ -4342,7 +4162,6 @@ export {
|
|
|
4342
4162
|
resetGeneralizeMemo,
|
|
4343
4163
|
resetNudoModuleExecCache,
|
|
4344
4164
|
resetParseSourceCache,
|
|
4345
|
-
resetPhi,
|
|
4346
4165
|
resetSidecarLoadFailureCache,
|
|
4347
4166
|
runTranspiled,
|
|
4348
4167
|
runTranspiledOptionsMemoKey,
|
|
@@ -4413,10 +4232,6 @@ export {
|
|
|
4413
4232
|
transpileSource,
|
|
4414
4233
|
trueConstraint,
|
|
4415
4234
|
tryMakeRegexAbs,
|
|
4416
|
-
tryPromoteDirectCall,
|
|
4417
|
-
tryPromoteForOfIteratee,
|
|
4418
|
-
tryPromoteHofCallback,
|
|
4419
|
-
tryPromoteReceiverAsArr,
|
|
4420
4235
|
tryRunTranspiled,
|
|
4421
4236
|
typeofAbs,
|
|
4422
4237
|
undefAbs,
|
|
@@ -4425,6 +4240,5 @@ export {
|
|
|
4425
4240
|
ushrAbs,
|
|
4426
4241
|
v,
|
|
4427
4242
|
withExecPhi,
|
|
4428
|
-
withPhiConstraint,
|
|
4429
4243
|
withVar
|
|
4430
4244
|
};
|
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 budgetAttributionSegs, f as defaultLeakBudget, g as exceedsBudget, h as exportedNameOfLocal, i as extractAllLoadSpecs, j as getPromiseMicrosLength, l as leakIfNeeded, k as loadModuleDepsFingerprint, m as maybeLeak, n as normPath, r as resetLeakCounter, o as resolveDepPath, s as sidecarSpecsOf, q as stablePathKey, t as stablePathKeyGraph, u as termDepth, v as termNodes } from './projection-budget-
|
|
3
|
-
import { A as Abs, T as Term, c as AbsModuleExports, R as RunTranspiledOptions, d as AstEnv } from './run-
|
|
4
|
-
export { $ as $tryDigestSoft, e as $tryMarkSoft, f as $tryReleaseSoft, E as ERROR_FAMILY, g as EvalFallbackStats, M as MayThrowEffect, h as absLit, i as absNumLit, j as absStrLit, k as allAbsStr, l as clearPureCallMemo, m as clearPureMemo, n as enterEvalCallBudgetSession, o as errorTypeAbs, p as exitEvalCallBudgetSession, q as filterDeclaredThrows, r as filterGateThrows, s as filterIgnoredThrows, t as flushMayThrowEffects, u as formatThrowsAbs, v as getEvalCallBudgetState, w as getEvalFallbackStats, x as getMayThrowCollector, y as isThrowsIgnored, z as mayThrowEffectsToAbs, B as orphanMayThrowEffects, D as popMayThrowFrame, F as pushMayThrowFrame, G as recordMayThrow, H as resetEvalFallbackStats, I as runWithMayThrowSession, J as setMayThrowCollector, K as throwAbsToKinds, N as throwsKindCovered, O as withEvalBudgetOverride } from './run-
|
|
1
|
+
import { I as InterfaceSource, a as InterfaceTierOpts, p as parseSource, C as CheckIssue } from './projection-budget-NCXMnUDn.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 budgetAttributionSegs, f as defaultLeakBudget, g as exceedsBudget, h as exportedNameOfLocal, i as extractAllLoadSpecs, j as getPromiseMicrosLength, l as leakIfNeeded, k as loadModuleDepsFingerprint, m as maybeLeak, n as normPath, r as resetLeakCounter, o as resolveDepPath, s as sidecarSpecsOf, q as stablePathKey, t as stablePathKeyGraph, u as termDepth, v as termNodes } from './projection-budget-NCXMnUDn.js';
|
|
3
|
+
import { A as Abs, T as Term, c as AbsModuleExports, R as RunTranspiledOptions, d as AstEnv } from './run-DeKkteRZ.js';
|
|
4
|
+
export { $ as $tryDigestSoft, e as $tryMarkSoft, f as $tryReleaseSoft, E as ERROR_FAMILY, g as EvalFallbackStats, M as MayThrowEffect, h as absLit, i as absNumLit, j as absStrLit, k as allAbsStr, l as clearPureCallMemo, m as clearPureMemo, n as enterEvalCallBudgetSession, o as errorTypeAbs, p as exitEvalCallBudgetSession, q as filterDeclaredThrows, r as filterGateThrows, s as filterIgnoredThrows, t as flushMayThrowEffects, u as formatThrowsAbs, v as getEvalCallBudgetState, w as getEvalFallbackStats, x as getMayThrowCollector, y as isThrowsIgnored, z as mayThrowEffectsToAbs, B as orphanMayThrowEffects, D as popMayThrowFrame, F as pushMayThrowFrame, G as recordMayThrow, H as resetEvalFallbackStats, I as runWithMayThrowSession, J as setMayThrowCollector, K as throwAbsToKinds, N as throwsKindCovered, O as withEvalBudgetOverride } from './run-DeKkteRZ.js';
|
|
5
5
|
import { File, Node } from '@babel/types';
|
|
6
6
|
|
|
7
7
|
/**
|
|
@@ -128,6 +128,7 @@ type DiagCode = (typeof DIAG)[keyof typeof DIAG];
|
|
|
128
128
|
* - 已知限制:`if (x) /re/` 这类 `)` 后紧跟 regex 的极端写法会当除法;
|
|
129
129
|
* 目标是探测器正确,不做完整 JS 词法。
|
|
130
130
|
*/
|
|
131
|
+
|
|
131
132
|
type StringLiteralSpan = {
|
|
132
133
|
/** 引号内原文(转义未折叠;模块 specifier 无需折叠) */
|
|
133
134
|
value: string;
|
|
@@ -238,11 +239,12 @@ declare function truncatedAbs(): Abs;
|
|
|
238
239
|
* - pureValueKey = **值**键(形状内容 + 字面量值)⇒ 服务 **@nudo:pure
|
|
239
240
|
* 记忆化**:按**值**承诺 ⇒ 同值必须同键(变量身份不同但值相同 ⇒ 同键)。
|
|
240
241
|
*
|
|
241
|
-
* @nudo:pure 记忆化通道(kind = "pure" 且 id
|
|
242
|
-
* 「$call 路径」与「$callNamed 宿主路径」的唯一调用形态)在此**分流**到值
|
|
242
|
+
* @nudo:pure 记忆化通道(kind = "pure" 且 id 为空)在此**分流**到值
|
|
243
243
|
* 基键:记忆化键若带**变量身份**,同一变量重绑定为不同值后仍命中旧缓存
|
|
244
244
|
* ⇒ **陈旧结果**(Bug 281)。预算/环检测通道(kind = absfn / absbody /
|
|
245
245
|
* coerce-hook / 命名调用名,且 id 非空)**口径不变**。
|
|
246
|
+
* pure memo 本体(exec/pure-memo.ts)直接调用 pureValueKey;本分支保留为
|
|
247
|
+
* callBudgetKey 的既有对外语义(同一值基承诺),不改调用方行为。
|
|
246
248
|
*/
|
|
247
249
|
declare function callBudgetKey(kind: string, id: string, args: unknown[]): string;
|
|
248
250
|
/** 记录被截断的递归(service 可映射为 nudo:recursion-truncated)。
|
|
@@ -250,8 +252,8 @@ declare function callBudgetKey(kind: string, id: string, args: unknown[]): strin
|
|
|
250
252
|
declare function setAbsTruncationCollector(collector: ((fnLabel: string, reason?: AbsTruncationReason) => void) | null): ((fnLabel: string, reason?: AbsTruncationReason) => void) | null;
|
|
251
253
|
declare function noteAbsTruncation(label: string, reason?: AbsTruncationReason): void;
|
|
252
254
|
/** 进入调用:cycle/超限则不执行 body,返回 opaque。
|
|
253
|
-
* 归因顺序 =
|
|
254
|
-
*
|
|
255
|
+
* 归因顺序 = 守卫顺序(本状态机内):同指纹调用已在栈上时无论预算多深
|
|
256
|
+
* 都会立即截断——报 cycle 而不是预算(#158)。 */
|
|
255
257
|
declare function enterCall(key: string, label: string): boolean;
|
|
256
258
|
declare function exitCall(): void;
|
|
257
259
|
/**
|
|
@@ -713,10 +715,12 @@ declare function escapeTemplateTypeFixed(text: string): string;
|
|
|
713
715
|
declare function sanitizeCommentText(text: string): string;
|
|
714
716
|
|
|
715
717
|
/**
|
|
716
|
-
*
|
|
717
|
-
* brand 表示名义类;eff("promise") 表示异步效应。
|
|
718
|
+
* 语言覆盖(保留面):class 继承链查询 + Promise 效应包装。
|
|
718
719
|
*
|
|
719
|
-
*
|
|
720
|
+
* class / new / instanceof / async 的求值语义已由 exec 内核(class-registry /
|
|
721
|
+
* `$call`)承载;本文件只保留两个仍有跨包消费者的叶子:
|
|
722
|
+
* - `getClassChain`:leq 的 brand 继承链判定(`leq.ts`)
|
|
723
|
+
* - `wrapPromise`:契约面把同步返回值包成 promise 效应(nudojs 导出面)
|
|
720
724
|
*/
|
|
721
725
|
|
|
722
726
|
type MethodDef = {
|
|
@@ -733,38 +737,9 @@ type ClassDef = {
|
|
|
733
737
|
methods: Map<string, MethodDef>;
|
|
734
738
|
superClass?: string;
|
|
735
739
|
};
|
|
736
|
-
declare function defineClass(env: AstEnv, def: ClassDef): void;
|
|
737
|
-
declare function getClass(env: AstEnv, name: string): ClassDef | undefined;
|
|
738
740
|
/** 沿继承链找类 */
|
|
739
741
|
declare function getClassChain(env: AstEnv, name: string): ClassDef[];
|
|
740
|
-
/** new C(...) → brand 实例;并跑 constructor 以写入字段 */
|
|
741
|
-
declare function instantiateClass(env: AstEnv, className: string, args: Abs[], evalBody?: (fn: {
|
|
742
|
-
params: string[];
|
|
743
|
-
body: Node;
|
|
744
|
-
}, args: Abs[], thisVal: Abs, env: AstEnv) => Abs): Abs;
|
|
745
|
-
/** 读取当前 this 所属类的父类名 */
|
|
746
|
-
declare function superNameOf(env: AstEnv, className: string): string | undefined;
|
|
747
|
-
/** 品牌沿注册/内建层级上溯的父名序列(含自身;限深防环) */
|
|
748
|
-
declare function classChainNames(name: string, env?: AstEnv): string[];
|
|
749
|
-
declare function instanceOf(left: Abs, rightClassName: string, env?: AstEnv): Abs;
|
|
750
|
-
declare function projectBrand(self: Abs, key: string): Abs;
|
|
751
|
-
/** 在 brand 上查找方法定义(含继承) */
|
|
752
|
-
declare function lookupMethod(env: AstEnv, receiver: Abs, methodName: string): MethodDef | undefined;
|
|
753
|
-
/** 沿继承链查找方法,返回定义与所在类名 */
|
|
754
|
-
declare function lookupMethodWithOwner(env: AstEnv, receiver: Abs, methodName: string): {
|
|
755
|
-
def: MethodDef;
|
|
756
|
-
owner: string;
|
|
757
|
-
} | undefined;
|
|
758
|
-
/** super.method():从父类开始找(跳过当前类) */
|
|
759
|
-
declare function lookupSuperMethod(env: AstEnv, receiver: Abs, fromClass: string, methodName: string): {
|
|
760
|
-
def: MethodDef;
|
|
761
|
-
owner: string;
|
|
762
|
-
} | undefined;
|
|
763
742
|
declare function wrapPromise(inner: Abs): Abs;
|
|
764
|
-
declare function awaitAbs(v: Abs): Abs;
|
|
765
|
-
declare function coerceAsyncReturn(value: Abs): Abs;
|
|
766
|
-
/** 从 ClassMethod 列表构造 methods map + instance shape */
|
|
767
|
-
declare function classFromMethods(name: string, methods: MethodDef[], superClass?: string, superShape?: Abs): ClassDef;
|
|
768
743
|
|
|
769
744
|
/**
|
|
770
745
|
* 顶层函数清单:function 声明 + const 箭头/函数表达式(含 export 包装)
|
|
@@ -934,4 +909,4 @@ declare function runWithEvalMissingSlot<T>(enabled: boolean, body: () => T): T;
|
|
|
934
909
|
*/
|
|
935
910
|
declare function noteObjSlotMissing(recv: Abs | undefined, name: string, loc?: [number, number]): boolean;
|
|
936
911
|
|
|
937
|
-
export { type AbsBudgetStats, type AbsInlay, type ArgDerivation, type ClassDef, type CollectAbsInlaysOpts, type CollectorScopeParticipant, DIAG, type DerivationNode, type DiagChannel, type DiagCode, 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 ScopedDiagChannel, type ScopedSlot, type StringLiteralSpan, type TemplateMeta, type TemplatePartDesc, type TemplatePartView, type TemplatePredicateDecision, abortDerivationSession, absTemplateViews, allFixedTextOfViews, anyMemberResult,
|
|
912
|
+
export { type AbsBudgetStats, type AbsInlay, type ArgDerivation, type ClassDef, type CollectAbsInlaysOpts, type CollectorScopeParticipant, DIAG, type DerivationNode, type DiagChannel, type DiagCode, 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 ScopedDiagChannel, type ScopedSlot, type StringLiteralSpan, type TemplateMeta, type TemplatePartDesc, type TemplatePartView, type TemplatePredicateDecision, abortDerivationSession, absTemplateViews, allFixedTextOfViews, anyMemberResult, beginDerivationSession, bumpEvalForkBudget, callBudgetKey, canSkipLiteralCallScan, checkInjectedDomainEvidence, clearLiveImportRefreshers, collectAbsInlays, concatString, createDiagChannel, createScopedDiagChannel, createScopedSlot, createTemplateAbs, decideEndsWith, decideIncludes, decideStartsWith, definitelyUncallableMember, denoteGuard, derivationChain, endDerivationSession, enterCall, escapeTemplateTypeFixed, exitCall, fixedLengthOfViews, fnFingerprints, formatObjectKey, formatTemplateNameViews, generalizeSourceKeyPart, getAbsCallBudgetStats, getAbsOrigin, getClassChain, getDerivation, getEvalForkBudgetLimit, getEvalForkCount, getFnNameAndBodies, hasDerivationSession, hashSource, isEvalMissingSlotEnabled, isJsBindingIdent, isJsIdent, isNullishAbs, isTemplateLike, knownPrefixOfViews, knownSuffixOfViews, listTopFunctions, maskCommentsAndStrings, mergeAdjacentFixedViews, noteAbsTruncation, noteAnyMemberMayThrow, noteDerivationAdd, noteDerivationJoin, noteEvalForkTruncation, noteHostEffectBlocked, noteMemberDispatchMiss, noteNullishMemberThrows, noteObjSlotMissing, notePrimMemberMissing, noteUnknownMemberMissing, popCallLoc, projectDerivationDsl, pushCallLoc, recordMemberDiag, registerCollectorScopeParticipant, resetAbsCallBudget, resetEvalForkBudget, resetFnFpCache, resetHashSourceCache, runWithCollectorScope, runWithEvalMissingSlot, safeMemberAccess, sanitizeCommentText, scanStringLiterals, setAbsTruncationCollector, setDerivation, setDerivationCollector, setEvalForkBudgetLimit, setEvalMissingSlotEnabled, setMemberDiagCollector, sourceHasCjsExports, sourceHasModuleDependency, sourceHasRequireCall, stableAnalyzeKeySource, stableCallId, stripCommentsAndStrings, stripStringsKeepComments, tagAbsOrigin, tagDerivationRoot, templateMatchesValue, templatePartsOf, termKey, toJsBindingIdent, truncatedAbs, viewTemplateParts, withFnBudgetOverride, wrapPromise };
|