@nudojs/core 0.3.0 → 0.3.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.
Files changed (123) hide show
  1. package/dist/chunk-BU4A6XJ3.js +6856 -0
  2. package/dist/exec.d.ts +2 -0
  3. package/dist/exec.js +168 -0
  4. package/dist/index-CVYjXnwU.d.ts +902 -0
  5. package/dist/index.d.ts +64 -710
  6. package/dist/index.js +3258 -8426
  7. package/package.json +18 -5
  8. package/CHANGELOG.md +0 -34
  9. package/src/__tests__/environment.test.ts +0 -48
  10. package/src/__tests__/fn-sig-impl.test.ts +0 -57
  11. package/src/__tests__/ops-refined.test.ts +0 -196
  12. package/src/__tests__/ops.test.ts +0 -84
  13. package/src/__tests__/type-value-phase2.test.ts +0 -117
  14. package/src/__tests__/type-value-phase3.test.ts +0 -94
  15. package/src/__tests__/type-value-refined.test.ts +0 -210
  16. package/src/__tests__/type-value.test.ts +0 -319
  17. package/src/algebra/__tests__/abs-native.test.ts +0 -176
  18. package/src/algebra/__tests__/arithmetic.test.ts +0 -170
  19. package/src/algebra/__tests__/ast-eval.test.ts +0 -154
  20. package/src/algebra/__tests__/bridge.test.ts +0 -160
  21. package/src/algebra/__tests__/call-budget.test.ts +0 -117
  22. package/src/algebra/__tests__/check-case-consistency.test.ts +0 -69
  23. package/src/algebra/__tests__/check-gold.test.ts +0 -290
  24. package/src/algebra/__tests__/check-json.test.ts +0 -57
  25. package/src/algebra/__tests__/check-mini-repo.test.ts +0 -49
  26. package/src/algebra/__tests__/check-real-commander.test.ts +0 -43
  27. package/src/algebra/__tests__/check-real-packages.test.ts +0 -165
  28. package/src/algebra/__tests__/check-recall-gold.test.ts +0 -1024
  29. package/src/algebra/__tests__/check-require-dep-memo.test.ts +0 -45
  30. package/src/algebra/__tests__/check-return-contract.test.ts +0 -90
  31. package/src/algebra/__tests__/check-shape-gold.test.ts +0 -303
  32. package/src/algebra/__tests__/check-source-memo.test.ts +0 -204
  33. package/src/algebra/__tests__/check.test.ts +0 -69
  34. package/src/algebra/__tests__/denote.test.ts +0 -77
  35. package/src/algebra/__tests__/diagnostics.test.ts +0 -64
  36. package/src/algebra/__tests__/differential.test.ts +0 -124
  37. package/src/algebra/__tests__/div-mod.test.ts +0 -38
  38. package/src/algebra/__tests__/example0.test.ts +0 -103
  39. package/src/algebra/__tests__/exec-analyze-throws.test.ts +0 -60
  40. package/src/algebra/__tests__/exec-async.test.ts +0 -46
  41. package/src/algebra/__tests__/exec-bpath.test.ts +0 -193
  42. package/src/algebra/__tests__/exec-class.test.ts +0 -56
  43. package/src/algebra/__tests__/exec-e2e.test.ts +0 -97
  44. package/src/algebra/__tests__/exec-generator.test.ts +0 -53
  45. package/src/algebra/__tests__/exec-inherit-default.test.ts +0 -111
  46. package/src/algebra/__tests__/exec-optional-nested.test.ts +0 -87
  47. package/src/algebra/__tests__/exec-rest.test.ts +0 -55
  48. package/src/algebra/__tests__/exec-spread-forof.test.ts +0 -85
  49. package/src/algebra/__tests__/exec-static-computed.test.ts +0 -61
  50. package/src/algebra/__tests__/exec-switch.test.ts +0 -74
  51. package/src/algebra/__tests__/exec-trycatch.test.ts +0 -71
  52. package/src/algebra/__tests__/fn-fp-memo.test.ts +0 -166
  53. package/src/algebra/__tests__/fn-fp-multidecl.test.ts +0 -49
  54. package/src/algebra/__tests__/format.test.ts +0 -34
  55. package/src/algebra/__tests__/generalize-memo.test.ts +0 -285
  56. package/src/algebra/__tests__/generalize.test.ts +0 -113
  57. package/src/algebra/__tests__/hash-source.test.ts +0 -19
  58. package/src/algebra/__tests__/hof.test.ts +0 -80
  59. package/src/algebra/__tests__/inlay.test.ts +0 -30
  60. package/src/algebra/__tests__/language.test.ts +0 -77
  61. package/src/algebra/__tests__/leq.test.ts +0 -109
  62. package/src/algebra/__tests__/load-deps-fp-memo.test.ts +0 -132
  63. package/src/algebra/__tests__/methods.test.ts +0 -37
  64. package/src/algebra/__tests__/node-types.test.ts +0 -26
  65. package/src/algebra/__tests__/nudo-constraints.ts +0 -46
  66. package/src/algebra/__tests__/objects.test.ts +0 -117
  67. package/src/algebra/__tests__/parse-source-cache.test.ts +0 -42
  68. package/src/algebra/__tests__/refine-import.test.ts +0 -109
  69. package/src/algebra/__tests__/stable-source-key-block.test.ts +0 -23
  70. package/src/algebra/__tests__/stable-source-key.test.ts +0 -31
  71. package/src/algebra/__tests__/surface.test.ts +0 -41
  72. package/src/algebra/__tests__/this-inherit.test.ts +0 -130
  73. package/src/algebra/abs-fn.ts +0 -49
  74. package/src/algebra/abs-modules.ts +0 -139
  75. package/src/algebra/abs.ts +0 -206
  76. package/src/algebra/arithmetic.ts +0 -691
  77. package/src/algebra/ast-eval.ts +0 -1763
  78. package/src/algebra/bridge.ts +0 -350
  79. package/src/algebra/builtins.ts +0 -373
  80. package/src/algebra/check-report.ts +0 -150
  81. package/src/algebra/check.ts +0 -1867
  82. package/src/algebra/constraint.ts +0 -304
  83. package/src/algebra/denote.ts +0 -166
  84. package/src/algebra/diagnostics.ts +0 -210
  85. package/src/algebra/exec/call.ts +0 -29
  86. package/src/algebra/exec/calls.ts +0 -96
  87. package/src/algebra/exec/class-registry.ts +0 -29
  88. package/src/algebra/exec/class.ts +0 -329
  89. package/src/algebra/exec/index.ts +0 -6
  90. package/src/algebra/exec/member-diag.ts +0 -141
  91. package/src/algebra/exec/run.ts +0 -341
  92. package/src/algebra/exec/runtime.ts +0 -583
  93. package/src/algebra/exec/transpile.ts +0 -993
  94. package/src/algebra/fn-fp.ts +0 -294
  95. package/src/algebra/format.ts +0 -91
  96. package/src/algebra/generalize.ts +0 -776
  97. package/src/algebra/hash-source.ts +0 -27
  98. package/src/algebra/index.ts +0 -34
  99. package/src/algebra/inlay.ts +0 -198
  100. package/src/algebra/language.ts +0 -289
  101. package/src/algebra/leak.ts +0 -68
  102. package/src/algebra/leq.ts +0 -301
  103. package/src/algebra/load-deps-fp.ts +0 -97
  104. package/src/algebra/methods.ts +0 -128
  105. package/src/algebra/objects.ts +0 -251
  106. package/src/algebra/parse-source.ts +0 -64
  107. package/src/algebra/phi.ts +0 -42
  108. package/src/algebra/pred.ts +0 -395
  109. package/src/algebra/refine.ts +0 -227
  110. package/src/algebra/stable-source-key.ts +0 -81
  111. package/src/algebra/surface.ts +0 -206
  112. package/src/algebra/template.ts +0 -143
  113. package/src/algebra/term.ts +0 -119
  114. package/src/environment.ts +0 -74
  115. package/src/index.ts +0 -73
  116. package/src/mock-helpers.ts +0 -166
  117. package/src/ops.ts +0 -191
  118. package/src/refinements/range.ts +0 -86
  119. package/src/refinements/template-predicates.ts +0 -11
  120. package/src/refinements/template.ts +0 -176
  121. package/src/strip-types.ts +0 -236
  122. package/src/type-value.ts +0 -513
  123. package/tsconfig.json +0 -8
@@ -1,165 +0,0 @@
1
- import { describe, it, expect } from "vitest";
2
- import { readFileSync, existsSync, readdirSync } from "node:fs";
3
- import { join, dirname, resolve } from "node:path";
4
- import { fileURLToPath } from "node:url";
5
- import { createRequire } from "node:module";
6
- import { checkSource } from "../index.ts";
7
-
8
- /**
9
- * 真实包精度门禁:error 级误报必须为 0。
10
- * 包不存在时跳过(非 monorepo / 未装依赖)。
11
- */
12
-
13
- const root = resolve(dirname(fileURLToPath(import.meta.url)), "../../../../..");
14
- const require = createRequire(import.meta.url);
15
-
16
- const ERROR_CODES = [
17
- "nudo:constraint-violated",
18
- "nudo:assign-mismatch",
19
- "nudo:arg-structure",
20
- "nudo:case-inconsistency",
21
- ] as const;
22
-
23
- function pkgJsFiles(pkgName: string): { label: string; source: string }[] {
24
- let pkgRoot: string | undefined;
25
- // 先试 package.json;exports 未暴露时从主入口反推
26
- try {
27
- pkgRoot = dirname(require.resolve(`${pkgName}/package.json`));
28
- } catch {
29
- try {
30
- let p = require.resolve(pkgName);
31
- // 主入口可能在 lib/ 或 src/;向上找到含 package.json 的目录
32
- for (let i = 0; i < 4; i++) {
33
- const parent = dirname(p);
34
- if (existsSync(join(parent, "package.json"))) {
35
- pkgRoot = parent;
36
- break;
37
- }
38
- p = parent;
39
- }
40
- } catch {
41
- return [];
42
- }
43
- }
44
- if (!pkgRoot) return [];
45
- const out: { label: string; source: string }[] = [];
46
- const walk = (dir: string): void => {
47
- let entries;
48
- try {
49
- entries = readdirSync(dir, { withFileTypes: true });
50
- } catch {
51
- return;
52
- }
53
- for (const e of entries) {
54
- if (e.name === "node_modules" || e.name.startsWith(".") || e.name === "tests" || e.name === "typings") continue;
55
- const p = join(dir, e.name);
56
- if (e.isDirectory()) {
57
- walk(p);
58
- } else if (/\.(mjs|cjs)$/.test(e.name) || e.name.endsWith(".js")) {
59
- try {
60
- out.push({
61
- label: `${pkgName}/${p.slice(pkgRoot!.length + 1)}`,
62
- source: readFileSync(p, "utf8"),
63
- });
64
- } catch {
65
- // skip
66
- }
67
- }
68
- }
69
- };
70
- walk(pkgRoot);
71
- return out;
72
- }
73
-
74
- function scanPackage(pkgName: string): { scanned: number; violations: string[] } {
75
- const files = pkgJsFiles(pkgName);
76
- const violations: string[] = [];
77
- let scanned = 0;
78
- for (const { label, source } of files) {
79
- let r;
80
- try {
81
- r = checkSource(label, source);
82
- } catch {
83
- continue;
84
- }
85
- scanned++;
86
- for (const i of r.issues) {
87
- if (i.severity === "error" && (ERROR_CODES as readonly string[]).includes(i.code)) {
88
- violations.push(`${label}:${i.line ?? "?"} [${i.code}] ${i.message}`);
89
- }
90
- }
91
- }
92
- return { scanned, violations };
93
- }
94
-
95
- describe("real package precision", () => {
96
- it.runIf(existsSync(join(root, "node_modules/commander/lib")))(
97
- "commander: no false-positive errors",
98
- () => {
99
- const { scanned, violations } = scanPackage("commander");
100
- expect(scanned).toBeGreaterThan(3);
101
- expect(violations, violations.join("\n")).toEqual([]);
102
- },
103
- );
104
-
105
- it("escape-string-regexp: no false-positive errors", () => {
106
- const { scanned, violations } = scanPackage("escape-string-regexp");
107
- expect(scanned).toBeGreaterThan(0);
108
- expect(violations, violations.join("\n")).toEqual([]);
109
- });
110
-
111
- it("is-plain-obj: no false-positive errors", () => {
112
- const { scanned, violations } = scanPackage("is-plain-obj");
113
- expect(scanned).toBeGreaterThan(0);
114
- expect(violations, violations.join("\n")).toEqual([]);
115
- });
116
-
117
- it("debug: no false-positive errors", () => {
118
- const { scanned, violations } = scanPackage("debug");
119
- expect(scanned).toBeGreaterThan(0);
120
- expect(violations, violations.join("\n")).toEqual([]);
121
- });
122
-
123
- it("yocto-queue (class): no false-positive errors", () => {
124
- const { scanned, violations } = scanPackage("yocto-queue");
125
- expect(scanned).toBeGreaterThan(0);
126
- expect(violations, violations.join("\n")).toEqual([]);
127
- });
128
-
129
- it("p-limit: no false-positive errors", () => {
130
- const { scanned, violations } = scanPackage("p-limit");
131
- expect(scanned).toBeGreaterThan(0);
132
- expect(violations, violations.join("\n")).toEqual([]);
133
- });
134
-
135
- it("kleur: no false-positive errors", () => {
136
- const { scanned, violations } = scanPackage("kleur");
137
- expect(scanned).toBeGreaterThan(0);
138
- expect(violations, violations.join("\n")).toEqual([]);
139
- });
140
-
141
- it("eventemitter3: no false-positive errors", () => {
142
- const { scanned, violations } = scanPackage("eventemitter3");
143
- expect(scanned).toBeGreaterThan(0);
144
- expect(violations, violations.join("\n")).toEqual([]);
145
- });
146
-
147
- it.runIf(existsSync(join(root, "node_modules/ms")))(
148
- "ms: no false-positive errors",
149
- () => {
150
- const { scanned, violations } = scanPackage("ms");
151
- expect(scanned).toBeGreaterThan(0);
152
- expect(violations, violations.join("\n")).toEqual([]);
153
- },
154
- );
155
-
156
- it.runIf(existsSync(join(root, "node_modules/lodash")))(
157
- "lodash: no false-positive errors",
158
- () => {
159
- const { scanned, violations } = scanPackage("lodash");
160
- // lodash 体积大:至少扫到一批入口文件
161
- expect(scanned).toBeGreaterThan(5);
162
- expect(violations, violations.join("\n").slice(0, 2000)).toEqual([]);
163
- },
164
- );
165
- });