@nudojs/harvester 0.4.0 → 0.4.3
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/index.d.ts +72 -2
- package/dist/index.js +2737 -500
- package/package.json +4 -4
package/dist/index.d.ts
CHANGED
|
@@ -7,10 +7,18 @@ import { Abs, AbsModuleExports } from '@nudojs/core';
|
|
|
7
7
|
type HarvestedEnv = {
|
|
8
8
|
globals: Record<string, Abs>;
|
|
9
9
|
modules: Record<string, Record<string, Abs>>;
|
|
10
|
+
/**
|
|
11
|
+
* 收割统计。
|
|
12
|
+
*
|
|
13
|
+
* - `skipped`:**丢了**(符号没进收割面)
|
|
14
|
+
* - `degraded`:**降级**(符号在,但类型有未建模的部分 ⇒ 值域未知)——族 52 第 6 条
|
|
15
|
+
* 新增的**可选**字段(旧磁盘缓存 / 外部构造的 env 不带它 ⇒ `undefined`)。
|
|
16
|
+
*/
|
|
10
17
|
stats: {
|
|
11
18
|
files: number;
|
|
12
19
|
symbols: number;
|
|
13
20
|
skipped: number;
|
|
21
|
+
degraded?: number;
|
|
14
22
|
};
|
|
15
23
|
};
|
|
16
24
|
declare function harvestDts(files: string[], opts?: {
|
|
@@ -25,6 +33,11 @@ type DtsExportDraft = {
|
|
|
25
33
|
dsl?: string;
|
|
26
34
|
note?: string;
|
|
27
35
|
kind: "function" | "value" | "class" | "other";
|
|
36
|
+
/**
|
|
37
|
+
* 投影了,但**有未建模的部分**(值域 / Promise 外壳 / 合并重载 / 未建模的
|
|
38
|
+
* 类型引用)⇒ 汇总行把它计入 `skipped`(丢失必须如实计数)。
|
|
39
|
+
*/
|
|
40
|
+
partial?: boolean;
|
|
28
41
|
};
|
|
29
42
|
type DtsContractDraft = {
|
|
30
43
|
label: string;
|
|
@@ -35,6 +48,14 @@ type DtsContractDraft = {
|
|
|
35
48
|
files: number;
|
|
36
49
|
exports: number;
|
|
37
50
|
skipped: number;
|
|
51
|
+
/**
|
|
52
|
+
* 目录模式被投影预算截断掉的 `.d.ts` 数。
|
|
53
|
+
* 当前**不设**投影预算(Bug 1015:静默截断 + 汇总行说谎)⇒ 恒为 0;
|
|
54
|
+
* 字段保留:将来引入预算时按此**如实计数**。
|
|
55
|
+
*/
|
|
56
|
+
droppedFiles?: number;
|
|
57
|
+
/** 目录模式**没能遍历**的目录 / 条目数(读失败 / 深度上限) */
|
|
58
|
+
droppedDirs?: number;
|
|
38
59
|
};
|
|
39
60
|
};
|
|
40
61
|
/** 组装 `@nudo:draft` 模块(与 formatDraftModule 同纪律:不 ambient 绑定)。 */
|
|
@@ -52,7 +73,17 @@ declare function dtsPathToContractDraft(path: string, label?: string): DtsContra
|
|
|
52
73
|
* 代数不碰 fs;这里只做「找到 dts 路径」这一层宿主职责。
|
|
53
74
|
*/
|
|
54
75
|
|
|
55
|
-
/**
|
|
76
|
+
/**
|
|
77
|
+
* 在 node_modules 中解析包根(含 @types/*)。
|
|
78
|
+
*
|
|
79
|
+
* 口径与 TypeScript / Node 一致(Bug 833):
|
|
80
|
+
* 1. **包本体** `node_modules/<pkg>` 的 `types`/`typings` → `<pkg>/index.d.ts`;
|
|
81
|
+
* 2. **最后**才回落 `node_modules/@types/<pkg>`。
|
|
82
|
+
*
|
|
83
|
+
* 跨层查找时「**任意层**的包本体」先于「**任意层**的 `@types`」
|
|
84
|
+
* —— 否则更近层的 `@types/<pkg>` 会盖掉更远层的包本体,
|
|
85
|
+
* 收割到**陈旧的 @types 声明**(另一个版本的 API),且**零诊断**。
|
|
86
|
+
*/
|
|
56
87
|
declare function resolvePackageRoot(pkg: string, fromDir?: string): string | undefined;
|
|
57
88
|
type PackageHarvest = {
|
|
58
89
|
pkg: string;
|
|
@@ -120,17 +151,37 @@ type HarvestSig = {
|
|
|
120
151
|
} | {
|
|
121
152
|
k: "tuple";
|
|
122
153
|
elements: HarvestSig[];
|
|
154
|
+
rest?: HarvestSig;
|
|
123
155
|
} | {
|
|
124
156
|
k: "obj";
|
|
125
157
|
slots: Record<string, {
|
|
126
158
|
v: HarvestSig;
|
|
127
159
|
opt?: boolean;
|
|
128
160
|
}>;
|
|
161
|
+
/** 族 27 Bug 803:索引签名(`Record<K,V>` / `obj[k]: V`)——不投影则
|
|
162
|
+
* 缓存往返会把「开放对象 + 值域」抹成闭合空对象 ⇒ 成员读 undefined ⇒ 定抛。 */
|
|
163
|
+
index?: {
|
|
164
|
+
key: HarvestSig;
|
|
165
|
+
value: HarvestSig;
|
|
166
|
+
};
|
|
167
|
+
/** 开放对象(索引签名的承载标志) */
|
|
168
|
+
open?: boolean;
|
|
129
169
|
} | {
|
|
130
170
|
k: "fn";
|
|
131
171
|
params: string[];
|
|
132
172
|
paramTypes: HarvestSig[];
|
|
133
173
|
returns: HarvestSig;
|
|
174
|
+
ctor?: boolean;
|
|
175
|
+
slots?: Record<string, HarvestSig>;
|
|
176
|
+
/** 族 27 Bug 821 残留:条件类型的 `infer` 绑定线索。不投影 ⇒ 磁盘缓存
|
|
177
|
+
* 命中后条件元数据丢失 ⇒ 同一份 .d.ts 冷/热缓存给出**不同**类型。 */
|
|
178
|
+
inferFrom?: {
|
|
179
|
+
fromVar: string;
|
|
180
|
+
via: "arr" | "promise";
|
|
181
|
+
inferVar: string;
|
|
182
|
+
};
|
|
183
|
+
/** 条件类型判不出时的假支(`condFallback`) */
|
|
184
|
+
condFallback?: HarvestSig;
|
|
134
185
|
} | {
|
|
135
186
|
k: "sum";
|
|
136
187
|
members: HarvestSig[];
|
|
@@ -163,10 +214,18 @@ type HarvestJson = {
|
|
|
163
214
|
dtsHash: string;
|
|
164
215
|
modules: Record<string, Record<string, HarvestSig>>;
|
|
165
216
|
globals: Record<string, HarvestSig>;
|
|
217
|
+
/**
|
|
218
|
+
* 收割统计(族 52 第 6 条)。
|
|
219
|
+
*
|
|
220
|
+
* - `skipped`:**丢了**(符号没进收割面)
|
|
221
|
+
* - `degraded`:**降级**(符号在,但类型有未建模的部分)——**可选**字段,
|
|
222
|
+
* 没有降级时**不出现**(旧磁盘缓存没有它 ⇒ 读回是 `undefined` ⇒ 视作 0)。
|
|
223
|
+
*/
|
|
166
224
|
stats: {
|
|
167
225
|
files: number;
|
|
168
226
|
symbols: number;
|
|
169
227
|
skipped: number;
|
|
228
|
+
degraded?: number;
|
|
170
229
|
};
|
|
171
230
|
};
|
|
172
231
|
/** Abs → 签名投影(丢 pred/conf;fn 只留参数名+类型面;保留泛型 α 与 lit term) */
|
|
@@ -220,7 +279,13 @@ declare function loadHarvestEnvFromDisk(pkg: string, meta: {
|
|
|
220
279
|
declare function harvestedValueToAbs(a: Abs): Abs;
|
|
221
280
|
/**
|
|
222
281
|
* 把 harvest 的 modules/globals 合成 AbsModuleExports。
|
|
223
|
-
*
|
|
282
|
+
*
|
|
283
|
+
* 键的归属(Bug 835 / 1014):
|
|
284
|
+
* - `declare module "x" { … }` 记录 → 只登记到**它自己的**键(`x` / 去 `@types/` 前缀 /
|
|
285
|
+
* basename);**不占包名键** —— 否则 `import { x } from "pkg"` 会拿到另一个模块的同名导出。
|
|
286
|
+
* - **包名键** → 该包**自己**的顶层导出(入口 `.d.ts` 的导出面)。
|
|
287
|
+
* `declare global { … }` 与 script 模式 `.d.ts` 的顶层声明是 **ambient**,
|
|
288
|
+
* TypeScript 侧不可 import(TS2305 / TS2306)⇒ **不得**进包名键。
|
|
224
289
|
*/
|
|
225
290
|
declare function harvestToAbsModules(pkg: string, fromDir: string): Record<string, AbsModuleExports>;
|
|
226
291
|
declare function packageHarvestToAbsModules(pkg: string, h: PackageHarvest): Record<string, AbsModuleExports>;
|
|
@@ -251,6 +316,11 @@ type HarvestNodeStats = {
|
|
|
251
316
|
files: number;
|
|
252
317
|
symbols: number;
|
|
253
318
|
skipped: number;
|
|
319
|
+
/**
|
|
320
|
+
* 「类型未建模」的符号数(族 52 第 6 条)——**可选**字段:没有降级时**不出现**
|
|
321
|
+
* (旧磁盘缓存 / 手写 env 没有它 ⇒ `undefined` ⇒ 视作 0)。
|
|
322
|
+
*/
|
|
323
|
+
degraded?: number;
|
|
254
324
|
};
|
|
255
325
|
type NodeEnvResult = {
|
|
256
326
|
ok: true;
|