@nudojs/core 1.9.1 → 1.9.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -15421,25 +15421,75 @@ function $removeUndefined(a) {
|
|
|
15421
15421
|
}
|
|
15422
15422
|
function $removeMemberNullish(a, key) {
|
|
15423
15423
|
if (!a || typeof a !== "object" || !("shape" in a)) return a;
|
|
15424
|
+
if (a.shape.k === "sum") {
|
|
15425
|
+
const members = a.shape.members;
|
|
15426
|
+
const kept = [];
|
|
15427
|
+
let changed = false;
|
|
15428
|
+
for (const m of members) {
|
|
15429
|
+
const r2 = memberSlotTruthyRefine(m, key);
|
|
15430
|
+
if (r2.kind === "prune") {
|
|
15431
|
+
changed = true;
|
|
15432
|
+
continue;
|
|
15433
|
+
}
|
|
15434
|
+
if (r2.kind === "keep") {
|
|
15435
|
+
kept.push(m);
|
|
15436
|
+
continue;
|
|
15437
|
+
}
|
|
15438
|
+
changed = true;
|
|
15439
|
+
const sh = m.shape;
|
|
15440
|
+
const next2 = { ...m, shape: { ...sh, slots: { ...sh.slots, [key]: r2.slot } } };
|
|
15441
|
+
migrateAccessors(m, next2);
|
|
15442
|
+
migrateInvariants(m, next2);
|
|
15443
|
+
migrateNullProto(m, next2);
|
|
15444
|
+
kept.push(next2);
|
|
15445
|
+
}
|
|
15446
|
+
if (!changed || kept.length === 0) return a;
|
|
15447
|
+
return kept.length === 1 ? kept[0] : { ...a, shape: { k: "sum", members: kept } };
|
|
15448
|
+
}
|
|
15424
15449
|
if (a.shape.k !== "obj") return a;
|
|
15425
15450
|
const slots = a.shape.slots;
|
|
15426
15451
|
if (!Object.prototype.hasOwnProperty.call(slots, key)) return a;
|
|
15452
|
+
const r = memberSlotTruthyRefine(a, key);
|
|
15453
|
+
if (r.kind !== "refine") return a;
|
|
15454
|
+
const next = { ...a, shape: { ...a.shape, slots: { ...slots, [key]: r.slot } } };
|
|
15455
|
+
migrateAccessors(a, next);
|
|
15456
|
+
migrateInvariants(a, next);
|
|
15457
|
+
migrateNullProto(a, next);
|
|
15458
|
+
return next;
|
|
15459
|
+
}
|
|
15460
|
+
function definitelyNullishAbs(a) {
|
|
15461
|
+
if (isNullishLitAbs(a)) return true;
|
|
15462
|
+
if (a.shape.k === "sum") {
|
|
15463
|
+
const members = a.shape.members;
|
|
15464
|
+
return members.length > 0 && members.every((m) => isNullishLitAbs(m));
|
|
15465
|
+
}
|
|
15466
|
+
return false;
|
|
15467
|
+
}
|
|
15468
|
+
function memberSlotTruthyRefine(m, key) {
|
|
15469
|
+
if (m.shape.k !== "obj") return { kind: "keep" };
|
|
15470
|
+
const slots = m.shape.slots;
|
|
15471
|
+
if (!Object.prototype.hasOwnProperty.call(slots, key)) {
|
|
15472
|
+
const sh = m.shape;
|
|
15473
|
+
if (sh.open || sh.index) return { kind: "keep" };
|
|
15474
|
+
if (OBJECT_PROTO_METHOD_NAMES2.has(key) || key === "constructor") return { kind: "keep" };
|
|
15475
|
+
if (accessorTable.get(m)?.has(key)) return { kind: "keep" };
|
|
15476
|
+
return { kind: "prune" };
|
|
15477
|
+
}
|
|
15478
|
+
if (accessorTable.get(m)?.get(key)?.get) return { kind: "keep" };
|
|
15427
15479
|
const slot = slots[key];
|
|
15480
|
+
if (definitelyNullishAbs(slot.value)) return { kind: "prune" };
|
|
15428
15481
|
let value = slot.value;
|
|
15429
|
-
let changed = false;
|
|
15430
15482
|
if (!definitelyNotNullishShape(value.shape) && value.shape.k === "sum") {
|
|
15431
15483
|
const members = value.shape.members;
|
|
15432
|
-
const kept = members.filter((
|
|
15484
|
+
const kept = members.filter((x) => !isNullishLitAbs(x));
|
|
15433
15485
|
if (kept.length > 0 && kept.length < members.length) {
|
|
15434
15486
|
value = kept.length === 1 ? kept[0] : { ...value, shape: { k: "sum", members: kept } };
|
|
15435
|
-
changed = true;
|
|
15436
15487
|
}
|
|
15437
15488
|
}
|
|
15438
|
-
if (slot.optional)
|
|
15439
|
-
if (!changed) return a;
|
|
15489
|
+
if (value === slot.value && !slot.optional) return { kind: "keep" };
|
|
15440
15490
|
const next = { ...slot, value };
|
|
15441
15491
|
delete next.optional;
|
|
15442
|
-
return {
|
|
15492
|
+
return { kind: "refine", slot: next };
|
|
15443
15493
|
}
|
|
15444
15494
|
function typeofOfMember(m) {
|
|
15445
15495
|
const t = m.term;
|
package/dist/exec.d.ts
CHANGED
|
@@ -468,13 +468,23 @@ declare function $removeNull(a: Abs): Abs;
|
|
|
468
468
|
*/
|
|
469
469
|
declare function $removeUndefined(a: Abs): Abs;
|
|
470
470
|
/**
|
|
471
|
-
* 成员真值守卫臂剪影(issue #118):`if (o.p)` 真值臂 / `if (!o.p)`
|
|
472
|
-
* `o?.p` 真值守卫里,槽 p 的值必为真值 ⇒ 非 nullish
|
|
473
|
-
* slots:槽值过与 $removeNullish 同款成员剥离,并摘除 optional
|
|
474
|
-
*
|
|
471
|
+
* 成员真值守卫臂剪影(issue #118 / #129):`if (o.p)` 真值臂 / `if (!o.p)`
|
|
472
|
+
* 假值臂 / `o?.p` 真值守卫里,槽 p 的值必为真值 ⇒ 非 nullish 且槽必在场——
|
|
473
|
+
* 重建 obj slots:槽值过与 $removeNullish 同款成员剥离,并摘除 optional
|
|
474
|
+
* 标记(真值 ⇒ 在场;$get 的 join(value, undef) 随之消失)。槽值剥空(纯
|
|
475
475
|
* nullish)→ 保守原样(臂不可达近似,与 $removeNullish 空集口径一致);
|
|
476
476
|
* 键缺席 / 非 obj / 裸宿主值 → 透传(同 $removeNullish 契约)。真值 ⇒ 非
|
|
477
477
|
* nullish 是 sound 下界:0/''/false 等 falsy-but-not-nullish 成员保留。
|
|
478
|
+
*
|
|
479
|
+
* sum 容器(issue #129):判别窄化后参数常为多臂 union——守卫事实按成员
|
|
480
|
+
* 分发:key 槽确定 nullish 的成员(闭 shape 槽缺席且缺席读确定 undefined
|
|
481
|
+
* ——open/index/proto 方法名/getter 均不在场;或槽值整体 nullish)在真值
|
|
482
|
+
* 守卫下必走早退 → 剪除;其余成员按 obj 分支同款重建(重建迁移
|
|
483
|
+
* accessor/propFlags/nullProto 侧表)。open/index 缺席(读 unknown 不可
|
|
484
|
+
* 判)/ proto 方法名与 constructor 缺席(原型链读出函数)/ getter-only
|
|
485
|
+
* 缺席(读 getter 结果)/ any / unknown 槽值 / 非对象成员不可判保留(宁
|
|
486
|
+
* 缺毋假,与 $get 缺席读同口径)。全剪空 → 原样;单成员剪余塌缩(与
|
|
487
|
+
* $narrowMemberEq 同口径)。
|
|
478
488
|
*/
|
|
479
489
|
declare function $removeMemberNullish(a: Abs, key: string): Abs;
|
|
480
490
|
/**
|
package/dist/exec.js
CHANGED
package/dist/index.js
CHANGED
|
@@ -63,7 +63,7 @@ import {
|
|
|
63
63
|
takeInterfaceDiagsSince,
|
|
64
64
|
takeRefineDiags,
|
|
65
65
|
takeRefineDiagsSince
|
|
66
|
-
} from "./chunk-
|
|
66
|
+
} from "./chunk-PNCDILAV.js";
|
|
67
67
|
import {
|
|
68
68
|
$add,
|
|
69
69
|
$arguments,
|
|
@@ -519,7 +519,7 @@ import {
|
|
|
519
519
|
v,
|
|
520
520
|
withExecPhi,
|
|
521
521
|
withVar
|
|
522
|
-
} from "./chunk-
|
|
522
|
+
} from "./chunk-XR3TE4C2.js";
|
|
523
523
|
|
|
524
524
|
// src/environment.ts
|
|
525
525
|
function createEnvironment(parent, bindings = /* @__PURE__ */ new Map()) {
|
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-PNCDILAV.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-XR3TE4C2.js";
|
|
173
173
|
|
|
174
174
|
// src/algebra/inlay.ts
|
|
175
175
|
function listFunctions(source) {
|