@nudojs/cli 0.2.1 → 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 (64) hide show
  1. package/dist/{chunk-3HCPXPEW.js → chunk-YDM4HHQ4.js} +1783 -1421
  2. package/dist/evaluator-api.d.ts +12 -1
  3. package/dist/evaluator-api.js +52 -2
  4. package/dist/index.d.ts +1 -2
  5. package/dist/index.js +366 -3572
  6. package/package.json +23 -11
  7. package/CHANGELOG.md +0 -41
  8. package/examples/real-world.js +0 -66
  9. package/examples/validate-real-world.ts +0 -160
  10. package/src/__tests__/builtin-advanced.test.ts +0 -292
  11. package/src/__tests__/builtin-api.test.ts +0 -308
  12. package/src/__tests__/builtin-functions.test.ts +0 -313
  13. package/src/__tests__/builtin-map.test.ts +0 -129
  14. package/src/__tests__/builtin-promise.test.ts +0 -150
  15. package/src/__tests__/builtin-regexp.test.ts +0 -133
  16. package/src/__tests__/builtin-set.test.ts +0 -163
  17. package/src/__tests__/builtin-url.test.ts +0 -256
  18. package/src/__tests__/builtin-web.test.ts +0 -340
  19. package/src/__tests__/combination-scenarios.test.ts +0 -384
  20. package/src/__tests__/edge-cases.test.ts +0 -749
  21. package/src/__tests__/evaluator-loops.test.ts +0 -283
  22. package/src/__tests__/evaluator-nullish-coalescing.test.ts +0 -86
  23. package/src/__tests__/evaluator-optional-chaining.test.ts +0 -37
  24. package/src/__tests__/evaluator-phase2.test.ts +0 -564
  25. package/src/__tests__/evaluator-phase3.test.ts +0 -864
  26. package/src/__tests__/evaluator-refined.test.ts +0 -121
  27. package/src/__tests__/evaluator-string-methods.test.ts +0 -151
  28. package/src/__tests__/evaluator.test.ts +0 -943
  29. package/src/__tests__/mock-arrow-function.test.ts +0 -169
  30. package/src/__tests__/mock-comparison.test.ts +0 -221
  31. package/src/__tests__/mock-comprehensive.test.ts +0 -250
  32. package/src/__tests__/mock-final-integration.test.ts +0 -263
  33. package/src/__tests__/mock-helpers.test.ts +0 -174
  34. package/src/__tests__/mock-realworld.test.ts +0 -191
  35. package/src/__tests__/mock-rest-debug.test.ts +0 -110
  36. package/src/__tests__/mock-rest-edge.test.ts +0 -176
  37. package/src/__tests__/mock-sinon-runtime.test.ts +0 -168
  38. package/src/__tests__/narrowing-discriminated.test.ts +0 -35
  39. package/src/__tests__/narrowing-in-operator.test.ts +0 -56
  40. package/src/__tests__/narrowing-switch.test.ts +0 -56
  41. package/src/__tests__/narrowing-truthiness.test.ts +0 -52
  42. package/src/__tests__/narrowing.test.ts +0 -82
  43. package/src/__tests__/nudo-mock-syntax.test.ts +0 -245
  44. package/src/__tests__/realworld-patterns.test.ts +0 -430
  45. package/src/__tests__/syntax-sugar.test.ts +0 -345
  46. package/src/builtins/builtin-intl.ts +0 -17
  47. package/src/builtins/builtin-map.ts +0 -174
  48. package/src/builtins/builtin-promise.ts +0 -116
  49. package/src/builtins/builtin-reflect.ts +0 -30
  50. package/src/builtins/builtin-regexp.ts +0 -34
  51. package/src/builtins/builtin-set.ts +0 -131
  52. package/src/builtins/builtin-symbol.ts +0 -16
  53. package/src/builtins/builtin-url.ts +0 -58
  54. package/src/builtins/builtin-weak.ts +0 -22
  55. package/src/builtins/builtin-web.ts +0 -111
  56. package/src/builtins/index.ts +0 -61
  57. package/src/config.ts +0 -32
  58. package/src/env-loader.ts +0 -174
  59. package/src/evaluator-api.ts +0 -36
  60. package/src/evaluator.ts +0 -5623
  61. package/src/index.ts +0 -931
  62. package/src/narrowing.ts +0 -537
  63. package/src/resolve-npm.ts +0 -63
  64. package/tsconfig.json +0 -9
@@ -65,6 +65,9 @@ type CallRecord = {
65
65
  argTypes: TypeValue[];
66
66
  resultType: TypeValue;
67
67
  throws: TypeValue;
68
+ /** Line-relative. Per-fn cache replay shifts this by lineDelta — if you
69
+ * add another position field (callee loc, arg loc), extend
70
+ * shiftCallRecordLines in analyzer.ts in the same change. */
68
71
  callLoc?: {
69
72
  line: number;
70
73
  column: number;
@@ -130,6 +133,14 @@ declare function setCurrentFileDir(dir: string): void;
130
133
  */
131
134
  declare function narrow(test: Node, env: Environment): [trueEnv: Environment, falseEnv: Environment];
132
135
 
136
+ /**
137
+ * 内置类原型机制:错误类集合、可构造内置类、Object/Array/Map/Set/…/Buffer
138
+ * 的原型成员近似表,以及 `X.prototype` 单例与类命名空间记忆化。
139
+ * 求值器成员分派与补全侧成员派生共用本表的唯一真值。
140
+ */
141
+
142
+ declare const BUILTIN_PROTOTYPE_METHOD_APPROXIMATIONS: Record<string, Record<string, TypeValue>>;
143
+
133
144
  type LoadedEnv = {
134
145
  modules: Record<string, Record<string, TypeValue>>;
135
146
  };
@@ -148,4 +159,4 @@ declare function findProjectConfig(startDir: string): {
148
159
 
149
160
  declare function resolveNpmNudo(source: string, fromDir: string): string | null;
150
161
 
151
- export { type CallRecord, type LoadedEnv, type NudoConfig, USAGE_SITE_MODULE, type UnknownRecord, evaluate, evaluateFunction, evaluateFunctionFull, evaluateProgram, findProjectConfig, getUnreachableRanges, loadEnvs, loadEnvsAsync, memberMayExistOn, narrow, preloadPathEnvs, resetEnvModules, resetMemo, resetMockModules, resetUnreachableRanges, resolveNpmNudo, setCallCollector, setCurrentFileDir, setCurrentSource, setEnvModules, setMaxConcreteIter, setMockModules, setModuleResolver, setNodeTypeCollector, setProvenanceTracking, setSampleCount, setUnknownBuiltinHandler, setUnknownCollector, setUsageSiteTag };
162
+ export { BUILTIN_PROTOTYPE_METHOD_APPROXIMATIONS, type CallRecord, type LoadedEnv, type NudoConfig, USAGE_SITE_MODULE, type UnknownRecord, evaluate, evaluateFunction, evaluateFunctionFull, evaluateProgram, findProjectConfig, getUnreachableRanges, loadEnvs, loadEnvsAsync, memberMayExistOn, narrow, preloadPathEnvs, resetEnvModules, resetMemo, resetMockModules, resetUnreachableRanges, resolveNpmNudo, setCallCollector, setCurrentFileDir, setCurrentSource, setEnvModules, setMaxConcreteIter, setMockModules, setModuleResolver, setNodeTypeCollector, setProvenanceTracking, setSampleCount, setUnknownBuiltinHandler, setUnknownCollector, setUsageSiteTag };
@@ -1,4 +1,7 @@
1
+ import { createRequire as __nudoCreateRequire } from "module";
2
+ const require = __nudoCreateRequire(import.meta.url);
1
3
  import {
4
+ BUILTIN_PROTOTYPE_METHOD_APPROXIMATIONS,
2
5
  USAGE_SITE_MODULE,
3
6
  evaluate,
4
7
  evaluateFunction,
@@ -11,7 +14,6 @@ import {
11
14
  resetMemo,
12
15
  resetMockModules,
13
16
  resetUnreachableRanges,
14
- resolveNpmNudo,
15
17
  setCallCollector,
16
18
  setCurrentFileDir,
17
19
  setCurrentSource,
@@ -25,7 +27,7 @@ import {
25
27
  setUnknownBuiltinHandler,
26
28
  setUnknownCollector,
27
29
  setUsageSiteTag
28
- } from "./chunk-3HCPXPEW.js";
30
+ } from "./chunk-YDM4HHQ4.js";
29
31
 
30
32
  // src/env-loader.ts
31
33
  import { readFileSync, existsSync, statSync, mkdirSync, writeFileSync } from "fs";
@@ -180,7 +182,55 @@ function findProjectConfig(startDir) {
180
182
  }
181
183
  return null;
182
184
  }
185
+
186
+ // src/resolve-npm.ts
187
+ import { readFileSync as readFileSync3, existsSync as existsSync3 } from "fs";
188
+ import { resolve as resolve2, join, dirname as dirname2 } from "path";
189
+ function findNodeModules(startDir) {
190
+ let dir = resolve2(startDir);
191
+ const root = resolve2("/");
192
+ while (dir !== root) {
193
+ const nmPath = join(dir, "node_modules");
194
+ if (existsSync3(nmPath)) return nmPath;
195
+ const parent = dirname2(dir);
196
+ if (parent === dir) break;
197
+ dir = parent;
198
+ }
199
+ return null;
200
+ }
201
+ function resolveExportsNudo(exports, subpath) {
202
+ if (!exports || typeof exports !== "object") return null;
203
+ const entry = exports[subpath];
204
+ if (!entry) return null;
205
+ if (typeof entry === "object" && entry !== null && "nudo" in entry) {
206
+ const nudoEntry = entry["nudo"];
207
+ if (typeof nudoEntry === "string") return nudoEntry;
208
+ }
209
+ return null;
210
+ }
211
+ function resolveNpmNudo(source, fromDir) {
212
+ const isRelative = source.startsWith(".") || source.startsWith("/");
213
+ if (isRelative) return null;
214
+ const parts = source.startsWith("@") ? source.split("/").slice(0, 2) : source.split("/").slice(0, 1);
215
+ const pkgName = parts.join("/");
216
+ const subpath = source.slice(pkgName.length) || ".";
217
+ const nodeModules = findNodeModules(fromDir);
218
+ if (!nodeModules) return null;
219
+ const pkgJsonPath = join(nodeModules, pkgName, "package.json");
220
+ if (!existsSync3(pkgJsonPath)) return null;
221
+ try {
222
+ const pkg = JSON.parse(readFileSync3(pkgJsonPath, "utf-8"));
223
+ const nudoEntry = resolveExportsNudo(pkg.exports, subpath);
224
+ if (nudoEntry) {
225
+ const resolved = resolve2(dirname2(pkgJsonPath), nudoEntry);
226
+ if (existsSync3(resolved)) return resolved;
227
+ }
228
+ } catch {
229
+ }
230
+ return null;
231
+ }
183
232
  export {
233
+ BUILTIN_PROTOTYPE_METHOD_APPROXIMATIONS,
184
234
  USAGE_SITE_MODULE,
185
235
  evaluate,
186
236
  evaluateFunction,
package/dist/index.d.ts CHANGED
@@ -1,2 +1 @@
1
-
2
- export { }
1
+ #!/usr/bin/env node