@nudojs/core 1.9.2 → 1.9.4
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-XR3TE4C2.js → chunk-PGTNSUTE.js} +169 -20
- package/dist/{chunk-PNCDILAV.js → chunk-S7HJL5GW.js} +112 -40
- package/dist/exec.d.ts +2 -2
- package/dist/exec.js +1 -1
- package/dist/index.d.ts +14 -5
- package/dist/index.js +25 -16
- package/dist/internal.d.ts +9 -4
- package/dist/internal.js +8 -4
- package/dist/{projection-budget-Bb8CYJOR.d.ts → projection-budget-Dm1YWZ1U.d.ts} +16 -4
- package/dist/{run-2B7ohsfP.d.ts → run-WZKUu1y1.d.ts} +1 -1
- package/package.json +1 -1
|
@@ -4612,7 +4612,12 @@ var NudoUnsupportedError = class extends Error {
|
|
|
4612
4612
|
};
|
|
4613
4613
|
|
|
4614
4614
|
// src/algebra/param-surface.ts
|
|
4615
|
-
function
|
|
4615
|
+
function pushNestedPath(prefix, key, nestedPaths) {
|
|
4616
|
+
if (prefix.length === 0 || !key) return;
|
|
4617
|
+
if (key.includes(".") || prefix.some((seg) => seg.includes("."))) return;
|
|
4618
|
+
nestedPaths.push([...prefix, key].join("."));
|
|
4619
|
+
}
|
|
4620
|
+
function collectPatternNames(p, top, nested, depth, propKey, prefix, nestedPaths) {
|
|
4616
4621
|
if (!p) return;
|
|
4617
4622
|
if (p.type === "Identifier" && p.name) {
|
|
4618
4623
|
if (depth === 0) top.push(p.name);
|
|
@@ -4620,17 +4625,17 @@ function collectPatternNames(p, top, nested, depth, propKey) {
|
|
|
4620
4625
|
return;
|
|
4621
4626
|
}
|
|
4622
4627
|
if (p.type === "AssignmentPattern") {
|
|
4623
|
-
collectPatternNames(p.left, top, nested, depth, propKey);
|
|
4628
|
+
collectPatternNames(p.left, top, nested, depth, propKey, prefix, nestedPaths);
|
|
4624
4629
|
return;
|
|
4625
4630
|
}
|
|
4626
4631
|
if (p.type === "RestElement") {
|
|
4627
|
-
collectPatternNames(p.argument, top, nested, depth, propKey);
|
|
4632
|
+
collectPatternNames(p.argument, top, nested, depth, propKey, prefix, nestedPaths);
|
|
4628
4633
|
return;
|
|
4629
4634
|
}
|
|
4630
4635
|
if (p.type === "ObjectPattern") {
|
|
4631
4636
|
for (const prop of p.properties ?? []) {
|
|
4632
4637
|
if (prop.type === "RestElement" || prop.argument) {
|
|
4633
|
-
collectPatternNames(prop.argument, top, nested, depth, propKey);
|
|
4638
|
+
collectPatternNames(prop.argument, top, nested, depth, propKey, prefix, nestedPaths);
|
|
4634
4639
|
continue;
|
|
4635
4640
|
}
|
|
4636
4641
|
const keyName = prop.key?.type === "Identifier" && prop.key.name ? prop.key.name : prop.key && "value" in prop.key ? String(prop.key.value ?? "") : void 0;
|
|
@@ -4642,7 +4647,17 @@ function collectPatternNames(p, top, nested, depth, propKey) {
|
|
|
4642
4647
|
else nested.push(keyName);
|
|
4643
4648
|
if (propKey && depth === 0) propKey[keyName] = keyName;
|
|
4644
4649
|
}
|
|
4650
|
+
const patternValueKeyRule = () => {
|
|
4651
|
+
if (!keyName) return;
|
|
4652
|
+
if (depth === 0 && prefix.length === 0) {
|
|
4653
|
+
top.push(keyName);
|
|
4654
|
+
if (propKey) propKey[keyName] = keyName;
|
|
4655
|
+
} else {
|
|
4656
|
+
pushNestedPath(prefix, keyName, nestedPaths);
|
|
4657
|
+
}
|
|
4658
|
+
};
|
|
4645
4659
|
if (v2.type === "Identifier" && v2.name) {
|
|
4660
|
+
pushNestedPath(prefix, keyName ?? "", nestedPaths);
|
|
4646
4661
|
if (depth === 0) {
|
|
4647
4662
|
top.push(v2.name);
|
|
4648
4663
|
if (propKey && keyName) propKey[v2.name] = keyName;
|
|
@@ -4650,15 +4665,38 @@ function collectPatternNames(p, top, nested, depth, propKey) {
|
|
|
4650
4665
|
} else if (v2.type === "AssignmentPattern") {
|
|
4651
4666
|
const left = v2.left;
|
|
4652
4667
|
if (left?.type === "Identifier" && left.name) {
|
|
4668
|
+
pushNestedPath(prefix, keyName ?? "", nestedPaths);
|
|
4653
4669
|
if (depth === 0) {
|
|
4654
4670
|
top.push(left.name);
|
|
4655
4671
|
if (propKey && keyName) propKey[left.name] = keyName;
|
|
4656
4672
|
} else nested.push(left.name);
|
|
4673
|
+
} else if (left && (left.type === "ObjectPattern" || left.type === "ArrayPattern")) {
|
|
4674
|
+
patternValueKeyRule();
|
|
4675
|
+
collectPatternNames(
|
|
4676
|
+
v2,
|
|
4677
|
+
top,
|
|
4678
|
+
nested,
|
|
4679
|
+
depth,
|
|
4680
|
+
propKey,
|
|
4681
|
+
prefix.concat(keyName ? [keyName] : []),
|
|
4682
|
+
nestedPaths
|
|
4683
|
+
);
|
|
4657
4684
|
} else {
|
|
4658
|
-
collectPatternNames(v2, top, nested, depth, propKey);
|
|
4685
|
+
collectPatternNames(v2, top, nested, depth, propKey, prefix, nestedPaths);
|
|
4659
4686
|
}
|
|
4687
|
+
} else if (v2.type === "ObjectPattern" || v2.type === "ArrayPattern") {
|
|
4688
|
+
patternValueKeyRule();
|
|
4689
|
+
collectPatternNames(
|
|
4690
|
+
v2,
|
|
4691
|
+
top,
|
|
4692
|
+
nested,
|
|
4693
|
+
depth + 1,
|
|
4694
|
+
propKey,
|
|
4695
|
+
prefix.concat(keyName ? [keyName] : []),
|
|
4696
|
+
nestedPaths
|
|
4697
|
+
);
|
|
4660
4698
|
} else {
|
|
4661
|
-
collectPatternNames(v2, top, nested, depth + 1, propKey);
|
|
4699
|
+
collectPatternNames(v2, top, nested, depth + 1, propKey, prefix, nestedPaths);
|
|
4662
4700
|
}
|
|
4663
4701
|
}
|
|
4664
4702
|
return;
|
|
@@ -4670,9 +4708,9 @@ function collectPatternNames(p, top, nested, depth, propKey) {
|
|
|
4670
4708
|
if (depth === 0) top.push(el.name);
|
|
4671
4709
|
else nested.push(el.name);
|
|
4672
4710
|
} else if (el.type === "AssignmentPattern") {
|
|
4673
|
-
collectPatternNames(el, top, nested, depth, propKey);
|
|
4711
|
+
collectPatternNames(el, top, nested, depth, propKey, [], nestedPaths);
|
|
4674
4712
|
} else {
|
|
4675
|
-
collectPatternNames(el, top, nested, depth + 1, propKey);
|
|
4713
|
+
collectPatternNames(el, top, nested, depth + 1, propKey, [], nestedPaths);
|
|
4676
4714
|
}
|
|
4677
4715
|
}
|
|
4678
4716
|
}
|
|
@@ -4691,13 +4729,15 @@ function formalParamsFromNodes(params) {
|
|
|
4691
4729
|
const top2 = [];
|
|
4692
4730
|
const nested2 = [];
|
|
4693
4731
|
const propKey2 = {};
|
|
4694
|
-
|
|
4732
|
+
const nestedPaths2 = [];
|
|
4733
|
+
if (left) collectPatternNames(left, top2, nested2, 0, propKey2, [], nestedPaths2);
|
|
4695
4734
|
return {
|
|
4696
4735
|
kind: "pattern",
|
|
4697
4736
|
placeholder: `_p${index}`,
|
|
4698
4737
|
bound: top2,
|
|
4699
4738
|
propKey: propKey2,
|
|
4700
4739
|
nested: nested2,
|
|
4740
|
+
nestedPaths: nestedPaths2,
|
|
4701
4741
|
index
|
|
4702
4742
|
};
|
|
4703
4743
|
}
|
|
@@ -4709,13 +4749,15 @@ function formalParamsFromNodes(params) {
|
|
|
4709
4749
|
const top = [];
|
|
4710
4750
|
const nested = [];
|
|
4711
4751
|
const propKey = {};
|
|
4712
|
-
|
|
4752
|
+
const nestedPaths = [];
|
|
4753
|
+
if (p) collectPatternNames(p, top, nested, 0, propKey, [], nestedPaths);
|
|
4713
4754
|
return {
|
|
4714
4755
|
kind: "pattern",
|
|
4715
4756
|
placeholder: `_p${index}`,
|
|
4716
4757
|
bound: top,
|
|
4717
4758
|
propKey,
|
|
4718
4759
|
nested,
|
|
4760
|
+
nestedPaths,
|
|
4719
4761
|
index
|
|
4720
4762
|
};
|
|
4721
4763
|
});
|
|
@@ -4757,6 +4799,7 @@ function contractParamNameSet(formals) {
|
|
|
4757
4799
|
out.add(f.placeholder);
|
|
4758
4800
|
out.add("_");
|
|
4759
4801
|
for (const b of f.bound) out.add(b);
|
|
4802
|
+
for (const np of f.nestedPaths) out.add(np);
|
|
4760
4803
|
}
|
|
4761
4804
|
}
|
|
4762
4805
|
return out;
|
|
@@ -4774,10 +4817,16 @@ function locateContractParam(formals, contractName) {
|
|
|
4774
4817
|
return { index: f.index };
|
|
4775
4818
|
}
|
|
4776
4819
|
if (f.bound.includes(contractName)) {
|
|
4777
|
-
|
|
4820
|
+
const field = f.propKey?.[contractName] ?? contractName;
|
|
4821
|
+
return { index: f.index, field, fieldPath: [field] };
|
|
4778
4822
|
}
|
|
4779
4823
|
}
|
|
4780
4824
|
}
|
|
4825
|
+
for (const f of formals) {
|
|
4826
|
+
if (f.kind === "pattern" && f.nestedPaths.includes(contractName)) {
|
|
4827
|
+
return { index: f.index, field: contractName, fieldPath: contractName.split(".") };
|
|
4828
|
+
}
|
|
4829
|
+
}
|
|
4781
4830
|
return void 0;
|
|
4782
4831
|
}
|
|
4783
4832
|
|
|
@@ -6087,9 +6136,17 @@ var memberGuardTarget = (n) => {
|
|
|
6087
6136
|
const t = n;
|
|
6088
6137
|
const m = t?.type === "ChainExpression" ? t.expression : t;
|
|
6089
6138
|
if (m?.type !== "MemberExpression" && m?.type !== "OptionalMemberExpression") return void 0;
|
|
6090
|
-
if (m.computed) return void 0;
|
|
6091
6139
|
if (m.object?.type !== "Identifier" || !m.object.name) return void 0;
|
|
6092
6140
|
const p = m.property;
|
|
6141
|
+
if (m.computed) {
|
|
6142
|
+
if (p?.type === "NumericLiteral" && typeof p.value === "number") {
|
|
6143
|
+
return { name: m.object.name, key: String(p.value) };
|
|
6144
|
+
}
|
|
6145
|
+
if (p?.type === "StringLiteral" && typeof p.value === "string" && /^-?\d+$/.test(p.value)) {
|
|
6146
|
+
return { name: m.object.name, key: p.value };
|
|
6147
|
+
}
|
|
6148
|
+
return void 0;
|
|
6149
|
+
}
|
|
6093
6150
|
const key = p?.type === "Identifier" ? p.name : p?.type === "StringLiteral" && typeof p.value === "string" ? p.value : void 0;
|
|
6094
6151
|
if (key === void 0) return void 0;
|
|
6095
6152
|
return { name: m.object.name, key };
|
|
@@ -6196,19 +6253,89 @@ function mergeGuardInto(list, g) {
|
|
|
6196
6253
|
if (grainA !== grainB) prev.grain = "nullish";
|
|
6197
6254
|
if (prev.memberKey === void 0 && g.memberKey !== void 0) prev.memberKey = g.memberKey;
|
|
6198
6255
|
}
|
|
6256
|
+
var methodReceiverTarget = (callee) => {
|
|
6257
|
+
const c = callee;
|
|
6258
|
+
if (c?.type !== "MemberExpression") return void 0;
|
|
6259
|
+
const o = c.object;
|
|
6260
|
+
if (o?.type === "Identifier" && o.name) return { name: o.name };
|
|
6261
|
+
if (o?.type === "MemberExpression") return memberGuardTarget(o);
|
|
6262
|
+
return void 0;
|
|
6263
|
+
};
|
|
6264
|
+
var collectReceiverFacts = (n, ctx2, out) => {
|
|
6265
|
+
if (ctx2 === null || !n || typeof n !== "object") return;
|
|
6266
|
+
const t = n;
|
|
6267
|
+
switch (t.type) {
|
|
6268
|
+
case "LogicalExpression":
|
|
6269
|
+
if (t.operator === "&&" || t.operator === "||") {
|
|
6270
|
+
const rArm = t.operator === "&&" ? "cons" : "alt";
|
|
6271
|
+
collectReceiverFacts(t.left, ctx2, out);
|
|
6272
|
+
collectReceiverFacts(
|
|
6273
|
+
t.right,
|
|
6274
|
+
ctx2 === "both" || ctx2 === rArm ? rArm : null,
|
|
6275
|
+
out
|
|
6276
|
+
);
|
|
6277
|
+
} else if (t.operator === "??") {
|
|
6278
|
+
collectReceiverFacts(t.left, ctx2, out);
|
|
6279
|
+
}
|
|
6280
|
+
return;
|
|
6281
|
+
case "ConditionalExpression":
|
|
6282
|
+
collectReceiverFacts(t.test, ctx2, out);
|
|
6283
|
+
return;
|
|
6284
|
+
case "CallExpression": {
|
|
6285
|
+
const recv = methodReceiverTarget(t.callee);
|
|
6286
|
+
if (recv) {
|
|
6287
|
+
for (const arm of ctx2 === "both" ? ["cons", "alt"] : [ctx2]) {
|
|
6288
|
+
out.push({
|
|
6289
|
+
name: recv.name,
|
|
6290
|
+
arm,
|
|
6291
|
+
grain: "nullish",
|
|
6292
|
+
...recv.key !== void 0 ? { memberKey: recv.key } : {}
|
|
6293
|
+
});
|
|
6294
|
+
}
|
|
6295
|
+
}
|
|
6296
|
+
collectReceiverFacts(t.callee, ctx2, out);
|
|
6297
|
+
for (const a of t.arguments ?? []) collectReceiverFacts(a, ctx2, out);
|
|
6298
|
+
return;
|
|
6299
|
+
}
|
|
6300
|
+
default:
|
|
6301
|
+
collectReceiverFacts(t.left, ctx2, out);
|
|
6302
|
+
collectReceiverFacts(t.right, ctx2, out);
|
|
6303
|
+
collectReceiverFacts(t.argument, ctx2, out);
|
|
6304
|
+
collectReceiverFacts(t.object, ctx2, out);
|
|
6305
|
+
if (t.computed) collectReceiverFacts(t.property, ctx2, out);
|
|
6306
|
+
return;
|
|
6307
|
+
}
|
|
6308
|
+
};
|
|
6309
|
+
function appendReceiverGuards(test, out) {
|
|
6310
|
+
const facts = [];
|
|
6311
|
+
collectReceiverFacts(test, "both", facts);
|
|
6312
|
+
for (const f of facts) {
|
|
6313
|
+
const prev = out.find((x) => x.name === f.name && x.arm === f.arm);
|
|
6314
|
+
if (!prev) {
|
|
6315
|
+
out.push(f);
|
|
6316
|
+
continue;
|
|
6317
|
+
}
|
|
6318
|
+
const grainA = prev.grain ?? "nullish";
|
|
6319
|
+
const grainB = f.grain ?? "nullish";
|
|
6320
|
+
if (grainA !== grainB) prev.grain = "nullish";
|
|
6321
|
+
if (prev.memberKey === void 0 && f.memberKey !== void 0) prev.memberKey = f.memberKey;
|
|
6322
|
+
}
|
|
6323
|
+
}
|
|
6199
6324
|
function nullishGuardsOf(test) {
|
|
6200
6325
|
const t = test;
|
|
6201
6326
|
if (t?.type === "LogicalExpression" && (t.operator === "||" || t.operator === "&&")) {
|
|
6202
6327
|
const wantArm = t.operator === "||" ? "alt" : "cons";
|
|
6203
|
-
const
|
|
6328
|
+
const out2 = [];
|
|
6204
6329
|
for (const g2 of [...nullishGuardsOf(t.left), ...nullishGuardsOf(t.right)]) {
|
|
6205
6330
|
if (g2.arm !== wantArm) continue;
|
|
6206
|
-
mergeGuardInto(
|
|
6331
|
+
mergeGuardInto(out2, g2);
|
|
6207
6332
|
}
|
|
6208
|
-
return
|
|
6333
|
+
return out2;
|
|
6209
6334
|
}
|
|
6210
6335
|
const g = nullishGuardOf(test);
|
|
6211
|
-
|
|
6336
|
+
const out = g ? [g] : [];
|
|
6337
|
+
appendReceiverGuards(test, out);
|
|
6338
|
+
return out;
|
|
6212
6339
|
}
|
|
6213
6340
|
function typeGuardOf(test) {
|
|
6214
6341
|
const t = test;
|
|
@@ -16892,10 +17019,32 @@ function execRegexBrand(re, method, args) {
|
|
|
16892
17019
|
if (method === "test") {
|
|
16893
17020
|
return abs({ k: "prim", type: "boolean" }, void 0, void 0, "partial");
|
|
16894
17021
|
}
|
|
16895
|
-
|
|
16896
|
-
|
|
16897
|
-
|
|
16898
|
-
|
|
17022
|
+
let probe = null;
|
|
17023
|
+
try {
|
|
17024
|
+
probe = new RegExp(`${parts.pat}|`).exec("");
|
|
17025
|
+
} catch {
|
|
17026
|
+
probe = null;
|
|
17027
|
+
}
|
|
17028
|
+
const nullArm = abs({ k: "unknown" }, { op: "lit", value: null }, void 0, "exact");
|
|
17029
|
+
if (!probe) {
|
|
17030
|
+
const element = joinAbs(str(), undefAbs());
|
|
17031
|
+
return joinAbs(nullArm, abs({ k: "arr", element }, void 0, void 0, "path"));
|
|
17032
|
+
}
|
|
17033
|
+
const ng = probe.length - 1;
|
|
17034
|
+
const slots = {
|
|
17035
|
+
"0": { value: str() },
|
|
17036
|
+
length: { value: numLit(probe.length) },
|
|
17037
|
+
index: { value: num() },
|
|
17038
|
+
input: { value: str() }
|
|
17039
|
+
};
|
|
17040
|
+
for (let i = 1; i <= ng; i++) {
|
|
17041
|
+
slots[String(i)] = { value: joinAbs(str(), undefAbs()) };
|
|
17042
|
+
}
|
|
17043
|
+
const groupNames = probe.groups ? Object.keys(probe.groups) : [];
|
|
17044
|
+
slots["groups"] = {
|
|
17045
|
+
value: groupNames.length ? objOf(Object.fromEntries(groupNames.map((n) => [n, { value: joinAbs(str(), undefAbs()) }]))) : undefAbs()
|
|
17046
|
+
};
|
|
17047
|
+
return joinAbs(nullArm, abs({ k: "obj", slots }, void 0, void 0, "path"));
|
|
16899
17048
|
}
|
|
16900
17049
|
try {
|
|
16901
17050
|
return regexExecWithState(re, method, subject).result;
|
|
@@ -15,6 +15,7 @@ import {
|
|
|
15
15
|
fnConstraintToEntryReqs,
|
|
16
16
|
foldRequireSpecArg,
|
|
17
17
|
formalParamDisplayNames,
|
|
18
|
+
formalParamSignatureNames,
|
|
18
19
|
formalParamsFromNodes,
|
|
19
20
|
formatAbs,
|
|
20
21
|
formatShape,
|
|
@@ -46,7 +47,7 @@ import {
|
|
|
46
47
|
withEvalBudgetOverride,
|
|
47
48
|
withExecPhi,
|
|
48
49
|
withFnBudgetOverride
|
|
49
|
-
} from "./chunk-
|
|
50
|
+
} from "./chunk-PGTNSUTE.js";
|
|
50
51
|
|
|
51
52
|
// src/algebra/directive-scan.ts
|
|
52
53
|
function cleanDirectiveLine(raw, kind) {
|
|
@@ -2240,8 +2241,13 @@ function formatEffectiveInterfaceDisplay(eff) {
|
|
|
2240
2241
|
if (eff.returns) s += ` \u2192 ${formatConstraint(eff.returns.constraint)}`;
|
|
2241
2242
|
return s;
|
|
2242
2243
|
}
|
|
2243
|
-
|
|
2244
|
-
|
|
2244
|
+
var INTERFACE_SOURCE_ABBR = {
|
|
2245
|
+
handwritten: "hw",
|
|
2246
|
+
generated: "gen",
|
|
2247
|
+
implicit: "imp"
|
|
2248
|
+
};
|
|
2249
|
+
function formatInterfaceTierLine(source, active = true) {
|
|
2250
|
+
return `${active ? "\u25CF" : "\u25CB"} contract / ${INTERFACE_SOURCE_ABBR[source]}`;
|
|
2245
2251
|
}
|
|
2246
2252
|
function interfaceTierOf(source, fnName, fromFile, opts = {}) {
|
|
2247
2253
|
if (!localNamedExports(source).has(fnName)) return void 0;
|
|
@@ -2469,11 +2475,11 @@ function sidecarSpecsOf(source) {
|
|
|
2469
2475
|
(spec) => (spec.startsWith(".") || spec.startsWith("/")) && (spec.endsWith(".nudo.js") || spec.endsWith(".nudo.ts"))
|
|
2470
2476
|
);
|
|
2471
2477
|
}
|
|
2472
|
-
function
|
|
2478
|
+
function tryLoadDeps(loadModule, spec, from) {
|
|
2473
2479
|
try {
|
|
2474
|
-
return loadModule(spec, from);
|
|
2480
|
+
return { src: loadModule(spec, from), err: false };
|
|
2475
2481
|
} catch {
|
|
2476
|
-
return void 0;
|
|
2482
|
+
return { src: void 0, err: true };
|
|
2477
2483
|
}
|
|
2478
2484
|
}
|
|
2479
2485
|
function loadModuleDepsFingerprint(source, loadModule, fromFile) {
|
|
@@ -2486,16 +2492,35 @@ function loadModuleDepsFingerprint(source, loadModule, fromFile) {
|
|
|
2486
2492
|
);
|
|
2487
2493
|
let n = 0;
|
|
2488
2494
|
let truncated = false;
|
|
2495
|
+
let readError = false;
|
|
2496
|
+
const load = (spec, from) => {
|
|
2497
|
+
const a = tryLoadDeps(loadModule, spec, from);
|
|
2498
|
+
if (a.err) readError = true;
|
|
2499
|
+
return a;
|
|
2500
|
+
};
|
|
2489
2501
|
const finish = () => {
|
|
2490
2502
|
parts.sort();
|
|
2491
|
-
|
|
2503
|
+
const prefix = truncated ? "trunc:" : readError ? "readerr:" : "";
|
|
2504
|
+
return {
|
|
2505
|
+
fp: `${prefix}${parts.join(",")}`,
|
|
2506
|
+
paths,
|
|
2507
|
+
contents,
|
|
2508
|
+
truncated,
|
|
2509
|
+
readError
|
|
2510
|
+
};
|
|
2492
2511
|
};
|
|
2493
2512
|
const absorbSidecarClosure = (entryFile) => {
|
|
2494
2513
|
const sidecarPath = sidecarPathOf(entryFile);
|
|
2495
2514
|
if (seen.has(sidecarPath)) return;
|
|
2496
2515
|
const sidecarSpec = `./${sidecarPath.slice(sidecarPath.lastIndexOf("/") + 1)}`;
|
|
2497
|
-
const
|
|
2498
|
-
if (
|
|
2516
|
+
const root = load(sidecarSpec, entryFile);
|
|
2517
|
+
if (root.err) {
|
|
2518
|
+
paths.push(sidecarPath);
|
|
2519
|
+
contents.push({ path: sidecarPath, content: null });
|
|
2520
|
+
return;
|
|
2521
|
+
}
|
|
2522
|
+
if (root.src === void 0) return;
|
|
2523
|
+
const sidecarSrc = root.src;
|
|
2499
2524
|
if (n >= MAX_LOAD_DEP_NODES) {
|
|
2500
2525
|
truncated = true;
|
|
2501
2526
|
return;
|
|
@@ -2518,7 +2543,7 @@ function loadModuleDepsFingerprint(source, loadModule, fromFile) {
|
|
|
2518
2543
|
if (seen.has(path)) continue;
|
|
2519
2544
|
seen.add(path);
|
|
2520
2545
|
n++;
|
|
2521
|
-
const src =
|
|
2546
|
+
const src = load(cur.spec, cur.from).src;
|
|
2522
2547
|
parts.push(`sidecar:${path}=${src === void 0 ? "miss" : hashSource(src)}`);
|
|
2523
2548
|
paths.push(path);
|
|
2524
2549
|
contents.push({ path, content: src ?? null });
|
|
@@ -2539,7 +2564,7 @@ function loadModuleDepsFingerprint(source, loadModule, fromFile) {
|
|
|
2539
2564
|
if (seen.has(path)) continue;
|
|
2540
2565
|
seen.add(path);
|
|
2541
2566
|
n++;
|
|
2542
|
-
const src =
|
|
2567
|
+
const src = load(cur.spec, cur.from).src;
|
|
2543
2568
|
parts.push(`${path}=${src === void 0 ? "miss" : hashSource(src)}`);
|
|
2544
2569
|
paths.push(path);
|
|
2545
2570
|
contents.push({ path, content: src ?? null });
|
|
@@ -3175,7 +3200,7 @@ function loadModuleId(fn) {
|
|
|
3175
3200
|
}
|
|
3176
3201
|
function refineDepsFingerprint(source, refine) {
|
|
3177
3202
|
if (!refine?.loadModule || !refine.fromFile) {
|
|
3178
|
-
return { fp: "-", paths: [], contents: [], truncated: false };
|
|
3203
|
+
return { fp: "-", paths: [], contents: [], truncated: false, readError: false };
|
|
3179
3204
|
}
|
|
3180
3205
|
return loadModuleDepsFingerprint(source, refine.loadModule, refine.fromFile);
|
|
3181
3206
|
}
|
|
@@ -3193,7 +3218,7 @@ function moduleMapId(m) {
|
|
|
3193
3218
|
function generalizeMemoKey(fnName, source, opts) {
|
|
3194
3219
|
const r = opts.refine;
|
|
3195
3220
|
const budget = opts.budget ?? defaultLeakBudget;
|
|
3196
|
-
const deps = opts.depsFp ?? (r ? refineDepsFingerprint(source, r) : { fp: "-", paths: [], contents: [], truncated: false });
|
|
3221
|
+
const deps = opts.depsFp ?? (r ? refineDepsFingerprint(source, r) : { fp: "-", paths: [], contents: [], truncated: false, readError: false });
|
|
3197
3222
|
const sc = opts.sidecarFp ?? (r?.loadModule && r.fromFile ? sidecarClosureFingerprint(r.fromFile, r) : void 0);
|
|
3198
3223
|
const scPath = sc !== void 0 && !sc.startsWith("trunc:") && r?.fromFile ? sidecarPathOf(r.fromFile) : void 0;
|
|
3199
3224
|
const srcPart = generalizeSourceKeyPart(source, fnName, opts.file);
|
|
@@ -3211,7 +3236,7 @@ function generalizeMemoKey(fnName, source, opts) {
|
|
|
3211
3236
|
return {
|
|
3212
3237
|
key,
|
|
3213
3238
|
depPaths: scPath !== void 0 ? [...deps.paths, scPath] : deps.paths,
|
|
3214
|
-
truncated: deps.truncated || (sc?.startsWith("trunc:") ?? false)
|
|
3239
|
+
truncated: deps.truncated || deps.readError || (sc?.startsWith("trunc:") ?? false)
|
|
3215
3240
|
};
|
|
3216
3241
|
}
|
|
3217
3242
|
function generalizeMemoGet(key) {
|
|
@@ -3480,10 +3505,33 @@ function generalizeFromAstUncached(fnName, source, opts = {}) {
|
|
|
3480
3505
|
patternFields.set(hit.index, bag);
|
|
3481
3506
|
}
|
|
3482
3507
|
const fieldAbs = constraintToEntryAbs(e.constraint, e.param);
|
|
3483
|
-
|
|
3508
|
+
const leaf = {
|
|
3484
3509
|
abs: fieldAbs,
|
|
3485
3510
|
...e.constraint.isOptional ? { optional: true } : {}
|
|
3486
3511
|
};
|
|
3512
|
+
const segs = hit.fieldPath ?? [hit.field];
|
|
3513
|
+
if (segs.length <= 1) {
|
|
3514
|
+
bag[hit.field] = leaf;
|
|
3515
|
+
continue;
|
|
3516
|
+
}
|
|
3517
|
+
let level = bag;
|
|
3518
|
+
let skip = false;
|
|
3519
|
+
for (let i = 0; i < segs.length - 1; i++) {
|
|
3520
|
+
const node = level[segs[i]];
|
|
3521
|
+
if (node === void 0) {
|
|
3522
|
+
const sub = { slots: {} };
|
|
3523
|
+
level[segs[i]] = sub;
|
|
3524
|
+
level = sub.slots;
|
|
3525
|
+
} else if ("slots" in node) {
|
|
3526
|
+
level = node.slots;
|
|
3527
|
+
} else {
|
|
3528
|
+
skip = true;
|
|
3529
|
+
break;
|
|
3530
|
+
}
|
|
3531
|
+
}
|
|
3532
|
+
if (!skip) {
|
|
3533
|
+
level[segs[segs.length - 1]] = leaf;
|
|
3534
|
+
}
|
|
3487
3535
|
} else if (hit) {
|
|
3488
3536
|
const entryAbs = constraintToEntryAbs(e.constraint, e.param);
|
|
3489
3537
|
typeParams[hit.index] = {
|
|
@@ -3496,20 +3544,34 @@ function generalizeFromAstUncached(fnName, source, opts = {}) {
|
|
|
3496
3544
|
});
|
|
3497
3545
|
}
|
|
3498
3546
|
}
|
|
3499
|
-
|
|
3547
|
+
const sigNames = formalParamSignatureNames(formals);
|
|
3548
|
+
const buildPatternObjAbs = (slotsBag, sigName, walked) => {
|
|
3500
3549
|
const slots = {};
|
|
3501
|
-
for (const [key,
|
|
3502
|
-
|
|
3503
|
-
|
|
3504
|
-
|
|
3505
|
-
|
|
3550
|
+
for (const [key, node] of Object.entries(slotsBag)) {
|
|
3551
|
+
if ("abs" in node) {
|
|
3552
|
+
slots[key] = {
|
|
3553
|
+
value: node.abs,
|
|
3554
|
+
...node.optional ? { optional: true } : {}
|
|
3555
|
+
};
|
|
3556
|
+
} else {
|
|
3557
|
+
slots[key] = {
|
|
3558
|
+
value: buildPatternObjAbs(node.slots, sigName, [...walked, key])
|
|
3559
|
+
};
|
|
3560
|
+
}
|
|
3506
3561
|
}
|
|
3507
|
-
|
|
3562
|
+
return abs(
|
|
3508
3563
|
{ k: "obj", slots },
|
|
3509
|
-
v(
|
|
3564
|
+
v(walked.length === 0 ? sigName : `${sigName}.${walked.join(".")}`),
|
|
3510
3565
|
void 0,
|
|
3511
3566
|
"path"
|
|
3512
3567
|
);
|
|
3568
|
+
};
|
|
3569
|
+
for (const [pIdx, bag] of patternFields) {
|
|
3570
|
+
const objAbs = buildPatternObjAbs(
|
|
3571
|
+
bag,
|
|
3572
|
+
sigNames[pIdx] ?? params[pIdx] ?? `_p${pIdx}`,
|
|
3573
|
+
[]
|
|
3574
|
+
);
|
|
3513
3575
|
typeParams[pIdx] = {
|
|
3514
3576
|
id: typeParams[pIdx].id,
|
|
3515
3577
|
value: objAbs
|
|
@@ -3653,6 +3715,7 @@ function generalizeFromAstUncached(fnName, source, opts = {}) {
|
|
|
3653
3715
|
}));
|
|
3654
3716
|
}
|
|
3655
3717
|
}
|
|
3718
|
+
const renderNames = formals.length > 0 ? formalParamSignatureNames(formals) : params;
|
|
3656
3719
|
return {
|
|
3657
3720
|
name: fnName,
|
|
3658
3721
|
params,
|
|
@@ -3661,6 +3724,7 @@ function generalizeFromAstUncached(fnName, source, opts = {}) {
|
|
|
3661
3724
|
instantiate: (args, phi) => run(args, phi ?? pTrue),
|
|
3662
3725
|
display: formatPoly(
|
|
3663
3726
|
fnName,
|
|
3727
|
+
renderNames,
|
|
3664
3728
|
params,
|
|
3665
3729
|
typeParams,
|
|
3666
3730
|
symbolic,
|
|
@@ -3675,12 +3739,13 @@ function generalizeFromAstUncached(fnName, source, opts = {}) {
|
|
|
3675
3739
|
...hofSites ? { hofSites } : {}
|
|
3676
3740
|
};
|
|
3677
3741
|
}
|
|
3678
|
-
function formatPoly(name, params, typeParams, symbolic, entryReqs, entryShapes, fnRels) {
|
|
3742
|
+
function formatPoly(name, renderNames, params, typeParams, symbolic, entryReqs, entryShapes, fnRels) {
|
|
3679
3743
|
const reqByParam = new Map((entryReqs ?? []).map((r) => [r.param, r.pred]));
|
|
3680
|
-
const ps =
|
|
3744
|
+
const ps = renderNames.map((p, i) => {
|
|
3745
|
+
const key = params[i] ?? p;
|
|
3681
3746
|
const id = typeParams[i]?.id ?? "unknown";
|
|
3682
|
-
const pred = reqByParam.get(
|
|
3683
|
-
const promoted = entryShapes?.get(
|
|
3747
|
+
const pred = reqByParam.get(key);
|
|
3748
|
+
const promoted = entryShapes?.get(key)?.abs ?? fnRels?.get(key)?.abs;
|
|
3684
3749
|
if (promoted) {
|
|
3685
3750
|
const slot = formatShapeSlot(promoted);
|
|
3686
3751
|
if (pred && pred.op !== "true") {
|
|
@@ -4456,13 +4521,17 @@ function scanLiteralCalls(source, knownFns, phi, opts) {
|
|
|
4456
4521
|
eiCache.set(key, r);
|
|
4457
4522
|
return r;
|
|
4458
4523
|
};
|
|
4459
|
-
const
|
|
4460
|
-
|
|
4461
|
-
|
|
4462
|
-
|
|
4524
|
+
const projectArgPath = (arg, segments) => {
|
|
4525
|
+
let cur = arg;
|
|
4526
|
+
for (const seg of segments) {
|
|
4527
|
+
if (!cur) return void 0;
|
|
4528
|
+
if (cur.shape.k === "brand") {
|
|
4529
|
+
cur = cur.shape.shape;
|
|
4530
|
+
}
|
|
4531
|
+
if (cur.shape.k !== "obj") return void 0;
|
|
4532
|
+
cur = getSlot(cur.shape.slots, seg)?.value;
|
|
4463
4533
|
}
|
|
4464
|
-
|
|
4465
|
-
return getSlot(arg.shape.slots, field)?.value;
|
|
4534
|
+
return cur;
|
|
4466
4535
|
};
|
|
4467
4536
|
const interfaceToIndexed = (ei, paramNames, formals) => {
|
|
4468
4537
|
const conflict = new Set(ei.conflict?.params ?? []);
|
|
@@ -4484,7 +4553,7 @@ function scanLiteralCalls(source, knownFns, phi, opts) {
|
|
|
4484
4553
|
entries.push([
|
|
4485
4554
|
hit.index,
|
|
4486
4555
|
{ param, pred: instantiateConstraint(constraint, param), constraint },
|
|
4487
|
-
hit.field
|
|
4556
|
+
hit.fieldPath ?? (hit.field !== void 0 ? [hit.field] : void 0)
|
|
4488
4557
|
]);
|
|
4489
4558
|
}
|
|
4490
4559
|
}
|
|
@@ -4520,17 +4589,18 @@ function scanLiteralCalls(source, knownFns, phi, opts) {
|
|
|
4520
4589
|
return lv <= n;
|
|
4521
4590
|
};
|
|
4522
4591
|
const checkReqs = (displayName, reqs, paramNames, absArgs, argIndexOf, loc) => {
|
|
4523
|
-
for (const [idx, pred,
|
|
4592
|
+
for (const [idx, pred, fieldPath, contractParam] of reqs) {
|
|
4524
4593
|
const argIdx = argIndexOf(idx);
|
|
4525
4594
|
if (argIdx === void 0) continue;
|
|
4526
4595
|
let arg = absArgs[argIdx];
|
|
4527
4596
|
if (!arg) continue;
|
|
4528
4597
|
const paramName = contractParam || paramNames[idx] || `arg${idx}`;
|
|
4529
|
-
if (
|
|
4530
|
-
const projected =
|
|
4598
|
+
if (fieldPath) {
|
|
4599
|
+
const projected = projectArgPath(arg, fieldPath);
|
|
4531
4600
|
if (!projected) {
|
|
4532
4601
|
const k = arg.shape.k;
|
|
4533
4602
|
if (k !== "unknown" && k !== "any") {
|
|
4603
|
+
const field = fieldPath.join(".");
|
|
4534
4604
|
out.push({
|
|
4535
4605
|
severity: "error",
|
|
4536
4606
|
code: "nudo:constraint-violated",
|
|
@@ -4871,7 +4941,7 @@ function scanLiteralCalls(source, knownFns, phi, opts) {
|
|
|
4871
4941
|
}
|
|
4872
4942
|
};
|
|
4873
4943
|
const checkShapeReqs = (displayName, reqs, paramNames, absArgs, argIndexOf, loc) => {
|
|
4874
|
-
for (const [idx, entry,
|
|
4944
|
+
for (const [idx, entry, fieldPath] of reqs) {
|
|
4875
4945
|
const c = entry.constraint;
|
|
4876
4946
|
if (!c.fields && !c.element && !isIntFlag(c) && !c.prim) continue;
|
|
4877
4947
|
const argIdx = argIndexOf(idx);
|
|
@@ -4879,11 +4949,12 @@ function scanLiteralCalls(source, knownFns, phi, opts) {
|
|
|
4879
4949
|
let arg = absArgs[argIdx];
|
|
4880
4950
|
if (!arg) continue;
|
|
4881
4951
|
const paramName = entry.param || paramNames[idx] || `arg${idx}`;
|
|
4882
|
-
if (
|
|
4883
|
-
const projected =
|
|
4952
|
+
if (fieldPath) {
|
|
4953
|
+
const projected = projectArgPath(arg, fieldPath);
|
|
4884
4954
|
if (!projected) {
|
|
4885
4955
|
const k = arg.shape.k;
|
|
4886
4956
|
if (k !== "unknown" && k !== "any") {
|
|
4957
|
+
const field = fieldPath.join(".");
|
|
4887
4958
|
out.push({
|
|
4888
4959
|
severity: "error",
|
|
4889
4960
|
code: "nudo:constraint-violated",
|
|
@@ -5305,6 +5376,7 @@ export {
|
|
|
5305
5376
|
sidecarClosureFingerprint,
|
|
5306
5377
|
formatConstraint,
|
|
5307
5378
|
formatEffectiveInterfaceDisplay,
|
|
5379
|
+
INTERFACE_SOURCE_ABBR,
|
|
5308
5380
|
formatInterfaceTierLine,
|
|
5309
5381
|
interfaceTierOf,
|
|
5310
5382
|
interfaceSourceOf,
|
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,
|
|
1
|
+
import { A as Abs, M as MayThrowEffect, b as Phi } from './run-WZKUu1y1.js';
|
|
2
|
+
export { W as $assignRecord, X as $call, Y as $callNamed, Z as $recordBinding, a5 as EvalAbsAssignRecord, a6 as EvalCallRecord, a7 as EvalFallback, g 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, l as clearPureCallMemo, m as clearPureMemo, n as enterEvalCallBudgetSession, aC as evalExprAbs, p as exitEvalCallBudgetSession, v as getEvalCallBudgetState, aF as getEvalCallCollector, w as getEvalFallbackStats, aN as isAbsVal, b3 as noteEvalCallRecord, b4 as noteEvalFallback, bl as resetEvalCallBudget, H 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, O as withEvalBudgetOverride } from './run-WZKUu1y1.js';
|
|
3
3
|
import { Node, Expression, File } from '@babel/types';
|
|
4
4
|
|
|
5
5
|
/**
|
package/dist/exec.js
CHANGED
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
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 { d as AstEnv, A as Abs, b as Phi, T as Term, Q as HofCollectCtx, C as Confidence, S as Shape, a as Pred, R as RelSource, U as HofSite, c as AbsModuleExports, V as RunTranspiledOptions } from './run-WZKUu1y1.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-WZKUu1y1.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,
|
|
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-Dm1YWZ1U.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 INTERFACE_SOURCE_ABBR, K as InterfaceDiag, I as InterfaceSource, O as InterfaceTierInfo, a as InterfaceTierOpts, Q as NamedImport, R as NudoField, S as NudoFnConstraint, T as NudoSidecarError, U as NudoSig, V as RefineDiag, W as RefineEntry, X as RefineResolveOpts, Y as SELF, Z as actionsForIssue, _ as andC, $ as any, a0 as array, a1 as boolean, a2 as checkArg, a3 as checkCall, a4 as constraintAdmitsNullish, a5 as constraintToEntryAbs, a6 as derefConstraint, a7 as drainPromiseMicros, a8 as effectiveInterface, a9 as enterPromiseExecutorScope, aa as evalPromiseCtor, ab as evalPromiseMethod, ac as evalPromiseStatic, ad as execNudoModule, ae as extractDeclaredThrows, af as extractFnBudget, ag as extractNudoImports, ah as extractRefineReturnFromSource, ai as extractRefinesFromSource, aj as fn, ak as fnConstraintToEntryReqs, al as formatCheckReport, am as formatConstraint, an as formatDiagnostics, ao as formatEffectiveInterfaceDisplay, ap as formatGithubAnnotations, aq as formatGitlabCodeQuality, ar as formatInterfaceTierLine, as as generatedExportNames, at as getParseSourceCacheSize, au as getTerm, av as instantiateConstraint, aw as interfaceDiagCount, ax as interfaceSourceOf, ay as interfaceTierOf, az as isIntFlag, aA as isNodeModulesPath, aB as isNudoConstraint, aC as lazy, aD as leavePromiseExecutorScope, aE as lenTerm, aF as litC, aG as localNamedExports, aH as notePromiseExecutorFork, aI as nullable, aJ as number, aK as omit, aL as partial, aM as pick, aN as queuePromiseMicro, aO as refineDiagCount, aP as refineToIndexedFull, aQ as resetNudoModuleExecCache, aR as resetParseSourceCache, aS as resetSidecarLoadFailureCache, aT as serializeCheckJson, aU as serializeCheckJsonMulti, aV as setInterfaceDiagCollector, aW as setRefineDiagCollector, aX as shape, aY as sidecarClosureFingerprint, aZ as sidecarPathOf, a_ as string, a$ as takeInterfaceDiags, b0 as takeInterfaceDiagsSince, b1 as takeRefineDiags, b2 as takeRefineDiagsSince, b3 as throwConstraintToKinds, b4 as union } from './projection-budget-Dm1YWZ1U.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
|
/**
|
|
@@ -847,6 +847,11 @@ type FormalParam = {
|
|
|
847
847
|
propKey: Record<string, string>;
|
|
848
848
|
/** 仅嵌套内出现、顶层不可单独表达的名(降级用) */
|
|
849
849
|
nested: string[];
|
|
850
|
+
/**
|
|
851
|
+
* #137:嵌套解构点路径契约面('card.grade',源属性键点连接)。
|
|
852
|
+
* 中间键(card)同时在 bound 里平铺可绑(整对象 shape 契约)。
|
|
853
|
+
*/
|
|
854
|
+
nestedPaths: string[];
|
|
850
855
|
index: number;
|
|
851
856
|
};
|
|
852
857
|
type AstParam = {
|
|
@@ -877,13 +882,17 @@ declare function contractParamNameSet(formals: FormalParam[]): Set<string>;
|
|
|
877
882
|
/**
|
|
878
883
|
* 契约参数名 → 形参定位。
|
|
879
884
|
* - 命中 id/default/rest → 该 index(执法按整参)
|
|
880
|
-
* - 命中 pattern 顶层 bound 名 → 该 pattern index + field
|
|
885
|
+
* - 命中 pattern 顶层 bound 名 → 该 pattern index + field(fieldPath 单段)
|
|
881
886
|
* - 命中 placeholder / `_` → pattern index(整对象)
|
|
887
|
+
* - #137:命中嵌套点路径('card.grade' ∈ nestedPaths)→ index + fieldPath
|
|
888
|
+
* 多段(field 为展示用点连接串)。平铺精确匹配必须先于任何点路径解析:
|
|
889
|
+
* 源键 'a.b' 与路径 'a.b' 不可歧义——平铺胜。
|
|
882
890
|
* - 未命中 → undefined(C4.5 param-mismatch)
|
|
883
891
|
*/
|
|
884
892
|
declare function locateContractParam(formals: FormalParam[], contractName: string): {
|
|
885
893
|
index: number;
|
|
886
894
|
field?: string;
|
|
895
|
+
fieldPath?: string[];
|
|
887
896
|
rest?: boolean;
|
|
888
897
|
} | undefined;
|
|
889
898
|
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import "./chunk-US532PZA.js";
|
|
2
2
|
import {
|
|
3
|
+
INTERFACE_SOURCE_ABBR,
|
|
3
4
|
NudoSidecarError,
|
|
4
5
|
buildArgsFromAssume,
|
|
5
6
|
canSkipLiteralCallScan,
|
|
@@ -63,7 +64,7 @@ import {
|
|
|
63
64
|
takeInterfaceDiagsSince,
|
|
64
65
|
takeRefineDiags,
|
|
65
66
|
takeRefineDiagsSince
|
|
66
|
-
} from "./chunk-
|
|
67
|
+
} from "./chunk-S7HJL5GW.js";
|
|
67
68
|
import {
|
|
68
69
|
$add,
|
|
69
70
|
$arguments,
|
|
@@ -519,7 +520,7 @@ import {
|
|
|
519
520
|
v,
|
|
520
521
|
withExecPhi,
|
|
521
522
|
withVar
|
|
522
|
-
} from "./chunk-
|
|
523
|
+
} from "./chunk-PGTNSUTE.js";
|
|
523
524
|
|
|
524
525
|
// src/environment.ts
|
|
525
526
|
function createEnvironment(parent, bindings = /* @__PURE__ */ new Map()) {
|
|
@@ -1629,7 +1630,7 @@ function loadModuleId(fn2) {
|
|
|
1629
1630
|
}
|
|
1630
1631
|
function checkDepsFingerprint(source, opts) {
|
|
1631
1632
|
if (!opts.loadModule || !opts.fromFile) {
|
|
1632
|
-
return { fp: "-", paths: [], contents: [], truncated: false };
|
|
1633
|
+
return { fp: "-", paths: [], contents: [], truncated: false, readError: false };
|
|
1633
1634
|
}
|
|
1634
1635
|
return loadModuleDepsFingerprint(source, opts.loadModule, opts.fromFile);
|
|
1635
1636
|
}
|
|
@@ -1919,13 +1920,17 @@ function structuralAssignIssues(records) {
|
|
|
1919
1920
|
}
|
|
1920
1921
|
|
|
1921
1922
|
// src/algebra/check-case-scan.ts
|
|
1922
|
-
function projectCaseArgField(arg,
|
|
1923
|
-
|
|
1924
|
-
|
|
1925
|
-
|
|
1923
|
+
function projectCaseArgField(arg, fieldPath) {
|
|
1924
|
+
let cur = arg;
|
|
1925
|
+
for (const seg of fieldPath) {
|
|
1926
|
+
if (!cur) return void 0;
|
|
1927
|
+
if (cur.shape.k === "brand") {
|
|
1928
|
+
cur = cur.shape.shape;
|
|
1929
|
+
}
|
|
1930
|
+
if (cur.shape.k !== "obj") return void 0;
|
|
1931
|
+
cur = getSlot(cur.shape.slots, seg)?.value;
|
|
1926
1932
|
}
|
|
1927
|
-
|
|
1928
|
-
return getSlot(arg.shape.slots, field)?.value;
|
|
1933
|
+
return cur;
|
|
1929
1934
|
}
|
|
1930
1935
|
function scanCaseInconsistency(source, knownFns, opts) {
|
|
1931
1936
|
const out = [];
|
|
@@ -2006,12 +2011,12 @@ function scanCaseInconsistency(source, knownFns, opts) {
|
|
|
2006
2011
|
for (const p of eff.params) {
|
|
2007
2012
|
if (conflictParams.has(p.param)) continue;
|
|
2008
2013
|
let idx = paramNames.indexOf(p.param);
|
|
2009
|
-
let
|
|
2014
|
+
let fieldPath;
|
|
2010
2015
|
if (idx < 0 && formals.length > 0) {
|
|
2011
2016
|
const hit = locateContractParam(formals, p.param);
|
|
2012
2017
|
if (hit) {
|
|
2013
2018
|
idx = hit.index;
|
|
2014
|
-
|
|
2019
|
+
fieldPath = hit.fieldPath ?? (hit.field !== void 0 ? [hit.field] : void 0);
|
|
2015
2020
|
}
|
|
2016
2021
|
}
|
|
2017
2022
|
if (idx < 0) continue;
|
|
@@ -2022,7 +2027,7 @@ function scanCaseInconsistency(source, knownFns, opts) {
|
|
|
2022
2027
|
pred: instantiateConstraint(p.constraint, p.param),
|
|
2023
2028
|
constraint: p.constraint
|
|
2024
2029
|
},
|
|
2025
|
-
|
|
2030
|
+
fieldPath
|
|
2026
2031
|
]);
|
|
2027
2032
|
}
|
|
2028
2033
|
if (reqs.length === 0) return;
|
|
@@ -2030,16 +2035,17 @@ function scanCaseInconsistency(source, knownFns, opts) {
|
|
|
2030
2035
|
for (const req of reqs) {
|
|
2031
2036
|
const idx = req[0];
|
|
2032
2037
|
const entry = req[1];
|
|
2033
|
-
const
|
|
2038
|
+
const fieldPath = req[2];
|
|
2034
2039
|
if (entry.constraint.fields) continue;
|
|
2035
2040
|
let arg = absArgs[idx];
|
|
2036
2041
|
if (!arg) continue;
|
|
2037
|
-
if (
|
|
2038
|
-
const projected = projectCaseArgField(arg,
|
|
2042
|
+
if (fieldPath) {
|
|
2043
|
+
const projected = projectCaseArgField(arg, fieldPath);
|
|
2039
2044
|
if (!projected) {
|
|
2040
2045
|
const k = arg.shape.k;
|
|
2041
2046
|
if (k !== "unknown" && k !== "any") {
|
|
2042
2047
|
const paramName = entry.param || paramNames[idx] || `arg${idx}`;
|
|
2048
|
+
const field = fieldPath.join(".");
|
|
2043
2049
|
out.push({
|
|
2044
2050
|
severity: "error",
|
|
2045
2051
|
code: "nudo:case-inconsistency",
|
|
@@ -2163,7 +2169,9 @@ function checkSourceInScope(filePath, source, phi, opts) {
|
|
|
2163
2169
|
const stable = stableAnalyzeKeySource(source);
|
|
2164
2170
|
const depsFp = checkDepsFingerprint(stable, callOpts);
|
|
2165
2171
|
const sidecarFp = callOpts.loadModule && callOpts.fromFile ? sidecarClosureFingerprint(callOpts.fromFile, callOpts) : void 0;
|
|
2166
|
-
const allowMemo = useMemo && !depsFp.truncated &&
|
|
2172
|
+
const allowMemo = useMemo && !depsFp.truncated && // 读错误轮键不可信(#135):错误轮报告(nudo:interface-load)与真 miss 轮
|
|
2173
|
+
// (干净)若共享 miss 键会互为跨次陈旧命中——不读也不写 memo
|
|
2174
|
+
!depsFp.readError && !(sidecarFp?.startsWith("trunc:") ?? false);
|
|
2167
2175
|
if (allowMemo) {
|
|
2168
2176
|
memoKey = checkMemoKey(filePath, stable, opts, depsFp, sidecarFp);
|
|
2169
2177
|
const hit = checkMemoGet(memoKey);
|
|
@@ -3250,6 +3258,7 @@ export {
|
|
|
3250
3258
|
CONSTRAINT_BUILDER_NAMES,
|
|
3251
3259
|
CONSTRAINT_EXPR_RE,
|
|
3252
3260
|
DEFAULT_MAX_LOOP_ITERS,
|
|
3261
|
+
INTERFACE_SOURCE_ABBR,
|
|
3253
3262
|
MAX_EVAL_CALL_DEPTH,
|
|
3254
3263
|
MAX_EVAL_TOTAL_CALLS,
|
|
3255
3264
|
NudoLoopSignal,
|
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,
|
|
1
|
+
import { I as InterfaceSource, a as InterfaceTierOpts, p as parseSource, C as CheckIssue } from './projection-budget-Dm1YWZ1U.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-Dm1YWZ1U.js';
|
|
3
|
+
import { A as Abs, T as Term, c as AbsModuleExports, d as AstEnv } from './run-WZKUu1y1.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-WZKUu1y1.js';
|
|
5
5
|
import { File, Node } from '@babel/types';
|
|
6
6
|
|
|
7
7
|
/**
|
|
@@ -389,6 +389,11 @@ type AbsInlay = {
|
|
|
389
389
|
type CollectAbsInlaysOpts = InterfaceTierOpts & {
|
|
390
390
|
loadModule?: (spec: string, fromFile: string) => string | undefined;
|
|
391
391
|
fromFile?: string;
|
|
392
|
+
/**
|
|
393
|
+
* eval 模块图(host 组装,如 service `evalAbsModuleGraph`)。缺省时
|
|
394
|
+
* generalizeFromAst 看不到跨模块 import → 调用塌缩 unknown(inlay 假空)。
|
|
395
|
+
*/
|
|
396
|
+
modules?: Record<string, AbsModuleExports | Record<string, unknown>>;
|
|
392
397
|
};
|
|
393
398
|
/**
|
|
394
399
|
* 收集源码中函数签名的 Abs inlay:
|
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-S7HJL5GW.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-PGTNSUTE.js";
|
|
173
173
|
|
|
174
174
|
// src/algebra/inlay.ts
|
|
175
175
|
function listFunctions(source) {
|
|
@@ -258,12 +258,16 @@ function collectAbsInlays(source, opts) {
|
|
|
258
258
|
const inlays = [];
|
|
259
259
|
const refineOpts = opts?.loadModule || opts?.fromFile ? {
|
|
260
260
|
...opts.loadModule ? { loadModule: opts.loadModule } : {},
|
|
261
|
-
...opts.fromFile ? { fromFile: opts.fromFile } : {}
|
|
261
|
+
...opts.fromFile ? { fromFile: opts.fromFile } : {},
|
|
262
|
+
...opts.autoBind !== void 0 ? { autoBind: opts.autoBind } : {}
|
|
262
263
|
} : void 0;
|
|
263
264
|
for (const { name, node } of listFunctions(source)) {
|
|
264
265
|
let g;
|
|
265
266
|
try {
|
|
266
|
-
g = generalizeFromAst(name, source,
|
|
267
|
+
g = generalizeFromAst(name, source, {
|
|
268
|
+
...refineOpts ? { refine: refineOpts } : {},
|
|
269
|
+
...opts?.modules ? { modules: opts.modules } : {}
|
|
270
|
+
});
|
|
267
271
|
} catch {
|
|
268
272
|
continue;
|
|
269
273
|
}
|
|
@@ -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-WZKUu1y1.js';
|
|
3
3
|
|
|
4
4
|
declare function resetParseSourceCache(): void;
|
|
5
5
|
declare function getParseSourceCacheSize(): number;
|
|
@@ -525,8 +525,14 @@ declare function sidecarClosureFingerprint(fromFile: string, opts: EffectiveInte
|
|
|
525
525
|
declare function formatConstraint(c: NudoConstraint): string;
|
|
526
526
|
/** EffectiveInterface → 契约展示串(与 CLI interface 打印同口径,不含函数名) */
|
|
527
527
|
declare function formatEffectiveInterfaceDisplay(eff: EffectiveInterface): string;
|
|
528
|
-
/**
|
|
529
|
-
declare
|
|
528
|
+
/** 档位源缩写:handwritten=hw / generated=gen / implicit=imp */
|
|
529
|
+
declare const INTERFACE_SOURCE_ABBR: Record<InterfaceSource, string>;
|
|
530
|
+
/**
|
|
531
|
+
* CodeLens / hover 首行标题(design-refine-derivation §8):`● contract / hw|gen|imp`。
|
|
532
|
+
* contract 是观察选择器的一个选项(与各 case 互斥):`active=false` 时渲染 `○`,
|
|
533
|
+
* 表示该函数当前观察的是某个 case 而非契约。
|
|
534
|
+
*/
|
|
535
|
+
declare function formatInterfaceTierLine(source: InterfaceSource, active?: boolean): string;
|
|
530
536
|
type InterfaceTierInfo = {
|
|
531
537
|
source: InterfaceSource;
|
|
532
538
|
/** handwritten/generated 时的契约展示;implicit 为 undefined */
|
|
@@ -558,6 +564,12 @@ type LoadDepsFingerprint = {
|
|
|
558
564
|
}>;
|
|
559
565
|
/** BFS 撞到节点上限:剩余 dep 未进指纹,键不可信 */
|
|
560
566
|
truncated: boolean;
|
|
567
|
+
/**
|
|
568
|
+
* 任一装载 throw(EACCES/EMFILE/…)≠ 真 miss:读错误轮的报告(含
|
|
569
|
+
* nudo:interface-load)与真 miss 轮(干净)内容不同,折叠成同一 miss 键
|
|
570
|
+
* 会互为跨次陈旧命中(#135)。fp 带 `readerr:` 前缀,调用方 fail-open 禁 memo。
|
|
571
|
+
*/
|
|
572
|
+
readError: boolean;
|
|
561
573
|
};
|
|
562
574
|
/**
|
|
563
575
|
* All string module specs that analysis may resolve through loadModule.
|
|
@@ -831,4 +843,4 @@ declare class ProjectionBudget {
|
|
|
831
843
|
exit(): void;
|
|
832
844
|
}
|
|
833
845
|
|
|
834
|
-
export {
|
|
846
|
+
export { any as $, type CheckJson as A, type CheckJsonMulti as B, type CheckIssue as C, type ConstraintBuilder as D, type EffectiveInterfaceOpts as E, type Diagnostic as F, type EffectiveInterface as G, type GitlabCodeQualityIssue as H, type InterfaceSource as I, INTERFACE_SOURCE_ABBR as J, type InterfaceDiag as K, type LeakBudget as L, MAX_PROMISE_MICROS as M, type NudoConstraint as N, type InterfaceTierInfo as O, PROJECTION_MAX_DEPTH as P, type NamedImport as Q, type NudoField as R, type NudoFnConstraint as S, NudoSidecarError as T, type NudoSig as U, type RefineDiag as V, type RefineEntry as W, type RefineResolveOpts as X, SELF as Y, actionsForIssue as Z, andC as _, type InterfaceTierOpts as a, takeInterfaceDiags as a$, array as a0, boolean as a1, checkArg as a2, checkCall as a3, constraintAdmitsNullish as a4, constraintToEntryAbs as a5, derefConstraint as a6, drainPromiseMicros as a7, effectiveInterface as a8, enterPromiseExecutorScope as a9, isNodeModulesPath as aA, isNudoConstraint as aB, lazy as aC, leavePromiseExecutorScope as aD, lenTerm as aE, litC as aF, localNamedExports as aG, notePromiseExecutorFork as aH, nullable as aI, number as aJ, omit as aK, partial as aL, pick as aM, queuePromiseMicro as aN, refineDiagCount as aO, refineToIndexedFull as aP, resetNudoModuleExecCache as aQ, resetParseSourceCache as aR, resetSidecarLoadFailureCache as aS, serializeCheckJson as aT, serializeCheckJsonMulti as aU, setInterfaceDiagCollector as aV, setRefineDiagCollector as aW, shape as aX, sidecarClosureFingerprint as aY, sidecarPathOf as aZ, string as a_, evalPromiseCtor as aa, evalPromiseMethod as ab, evalPromiseStatic as ac, execNudoModule as ad, extractDeclaredThrows as ae, extractFnBudget as af, extractNudoImports as ag, extractRefineReturnFromSource as ah, extractRefinesFromSource as ai, fn as aj, fnConstraintToEntryReqs as ak, formatCheckReport as al, formatConstraint as am, formatDiagnostics as an, formatEffectiveInterfaceDisplay as ao, formatGithubAnnotations as ap, formatGitlabCodeQuality as aq, formatInterfaceTierLine as ar, generatedExportNames as as, getParseSourceCacheSize as at, getTerm as au, instantiateConstraint as av, interfaceDiagCount as aw, interfaceSourceOf as ax, interfaceTierOf as ay, isIntFlag as az, type LoadDepsFingerprint as b, takeInterfaceDiagsSince as b0, takeRefineDiags as b1, takeRefineDiagsSince as b2, throwConstraintToKinds as b3, union as b4, ProjectionBudget as c, type ProjectionStopReason as d, defaultLeakBudget as e, exceedsBudget as f, exportedNameOfLocal as g, extractAllLoadSpecs as h, getPromiseMicrosLength as i, loadModuleDepsFingerprint as j, resolveDepPath as k, leakIfNeeded as l, maybeLeak as m, normPath as n, stablePathKey as o, parseSource as p, stablePathKeyGraph as q, resetLeakCounter as r, sidecarSpecsOf as s, termDepth as t, termNodes as u, type CheckReport as v, CONSTRAINT_BUILDERS as w, CONSTRAINT_BUILDER_NAMES as x, CONSTRAINT_EXPR_RE as y, type CheckAction as z };
|
|
@@ -817,4 +817,4 @@ declare function callTranspiledExport(exports: Record<string, unknown>, name: st
|
|
|
817
817
|
*/
|
|
818
818
|
declare function callTranspiledExportApply(exports: Record<string, unknown> | (() => Record<string, unknown>), name: string): (args: Abs[], thisVal?: Abs) => AbsApplyResult;
|
|
819
819
|
|
|
820
|
-
export { $tryDigestSoft as $, type Abs as A,
|
|
820
|
+
export { $tryDigestSoft as $, type Abs as A, orphanMayThrowEffects as B, type Confidence as C, popMayThrowFrame as D, ERROR_FAMILY as E, pushMayThrowFrame as F, recordMayThrow as G, resetEvalFallbackStats as H, runWithMayThrowSession as I, setMayThrowCollector as J, throwAbsToKinds as K, type LiteralValue as L, type MayThrowEffect as M, throwsKindCovered as N, withEvalBudgetOverride as O, type PrimName as P, type HofCollectCtx as Q, type RelSource as R, type Shape as S, type Term as T, type HofSite as U, type RunTranspiledOptions as V, $assignRecord as W, $call as X, $callNamed as Y, $recordBinding as Z, type AbsApplyNoThrow as _, type Pred as a, ne as a$, type AbsApplyNoThrowFn as a0, type AbsApplyResult as a1, type AbsApplyReturn as a2, type AbsFnImpl as a3, type AbsSigImpl as a4, type EvalAbsAssignRecord as a5, type EvalCallRecord as a6, type EvalFallback as a7, type ImplicationOracle as a8, type LitValueResult as a9, emptyPhi as aA, eq as aB, evalExprAbs as aC, ge as aD, geNum as aE, getEvalCallCollector as aF, getFnImpl as aG, getImplicationOracle as aH, gt as aI, gtNum as aJ, hostFnCtorFacet as aK, implies as aL, isAbsApplyResult as aM, isAbsVal as aN, isBigPrim as aO, isExactLit as aP, isNumPrim as aQ, isStrPrim as aR, le as aS, leNum as aT, lit as aU, litValue as aV, lt as aW, ltNum as aX, makeAbsApplyResult as aY, markPureFn as aZ, namespaceAbsOf as a_, MAX_EVAL_CALL_DEPTH as aa, MAX_EVAL_TOTAL_CALLS as ab, RUNTIME_IMPORT_RE as ac, TYPEOF_NAMES as ad, type TranspiledCallResult as ae, type TypeofName as af, abs as ag, absFunction as ah, absOnly as ai, absToString as aj, and as ak, anyAbs as al, anyVar as am, app as an, assumeFinite as ao, attachFnImpl as ap, bigintLit as aq, bindImports as ar, bindingsOf as as, bool as at, boolLit as au, callTranspiledExport as av, callTranspiledExportApply as aw, callTranspiledExportFull as ax, collectAbsExports as ay, confJoin as az, type Phi as b, negatePred as b0, never as b1, not as b2, noteEvalCallRecord as b3, noteEvalFallback as b4, num as b5, numLit as b6, numVar as b7, obj as b8, or as b9, termEquals as bA, termToString as bB, tryRunTranspiled as bC, unknown as bD, v as bE, routeApplyThrows as bF, pFalse as ba, pTrue as bb, phiAnd as bc, predEquals as bd, predToString as be, predVars as bf, primToTypeof as bg, ptypeof as bh, pureFnNameOf as bi, relationFingerprint as bj, relationFn as bk, resetEvalCallBudget as bl, runTranspiled as bm, runTranspiledOptionsMemoKey as bn, setEvalAssignCollector as bo, setEvalBindingSink as bp, setEvalCallCollector as bq, setEvalFallbackCollector as br, setImplicationOracle as bs, shapeOfTerm as bt, shapeOnlyFn as bu, shapeToString as bv, simplifyTerm as bw, str as bx, strLit as by, substPred as bz, type AbsModuleExports as c, type AstEnv as d, $tryMarkSoft as e, $tryReleaseSoft as f, type EvalFallbackStats as g, absLit as h, absNumLit as i, absStrLit as j, allAbsStr as k, clearPureCallMemo as l, clearPureMemo as m, enterEvalCallBudgetSession as n, errorTypeAbs as o, exitEvalCallBudgetSession as p, filterDeclaredThrows as q, filterGateThrows as r, filterIgnoredThrows as s, flushMayThrowEffects as t, formatThrowsAbs as u, getEvalCallBudgetState as v, getEvalFallbackStats as w, getMayThrowCollector as x, isThrowsIgnored as y, mayThrowEffectsToAbs as z };
|