@nielspeter/eess-ts 0.6.0 → 0.7.0

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 (55) hide show
  1. package/README.md +1 -1
  2. package/dist/builders/class-rule-builder.d.ts +0 -7
  3. package/dist/builders/class-rule-builder.d.ts.map +1 -1
  4. package/dist/builders/class-rule-builder.js +27 -1
  5. package/dist/builders/class-rule-builder.js.map +1 -1
  6. package/dist/conditions/body-analysis-module.d.ts.map +1 -1
  7. package/dist/conditions/body-analysis-module.js +37 -4
  8. package/dist/conditions/body-analysis-module.js.map +1 -1
  9. package/dist/conditions/call.d.ts +4 -3
  10. package/dist/conditions/call.d.ts.map +1 -1
  11. package/dist/conditions/call.js +40 -17
  12. package/dist/conditions/call.js.map +1 -1
  13. package/dist/core/object-literal-functions.d.ts +4 -1
  14. package/dist/core/object-literal-functions.d.ts.map +1 -1
  15. package/dist/core/object-literal-functions.js +27 -5
  16. package/dist/core/object-literal-functions.js.map +1 -1
  17. package/dist/core/through-wrappers.d.ts +24 -0
  18. package/dist/core/through-wrappers.d.ts.map +1 -0
  19. package/dist/core/through-wrappers.js +36 -0
  20. package/dist/core/through-wrappers.js.map +1 -0
  21. package/dist/core/vacuity-diagnosis.d.ts.map +1 -1
  22. package/dist/core/vacuity-diagnosis.js +11 -3
  23. package/dist/core/vacuity-diagnosis.js.map +1 -1
  24. package/dist/helpers/body-traversal.d.ts +14 -14
  25. package/dist/helpers/body-traversal.d.ts.map +1 -1
  26. package/dist/helpers/body-traversal.js +111 -35
  27. package/dist/helpers/body-traversal.js.map +1 -1
  28. package/dist/helpers/callback-extractor.d.ts +6 -1
  29. package/dist/helpers/callback-extractor.d.ts.map +1 -1
  30. package/dist/helpers/callback-extractor.js +45 -10
  31. package/dist/helpers/callback-extractor.js.map +1 -1
  32. package/dist/helpers/global-binding.d.ts +11 -0
  33. package/dist/helpers/global-binding.d.ts.map +1 -0
  34. package/dist/helpers/global-binding.js +232 -0
  35. package/dist/helpers/global-binding.js.map +1 -0
  36. package/dist/index.d.ts +1 -1
  37. package/dist/index.d.ts.map +1 -1
  38. package/dist/index.js +1 -1
  39. package/dist/index.js.map +1 -1
  40. package/dist/models/arch-function.d.ts +2 -2
  41. package/dist/models/arch-function.d.ts.map +1 -1
  42. package/dist/models/arch-function.js +138 -41
  43. package/dist/models/arch-function.js.map +1 -1
  44. package/dist/presets/recommended.d.ts +14 -6
  45. package/dist/presets/recommended.d.ts.map +1 -1
  46. package/dist/presets/recommended.js +30 -11
  47. package/dist/presets/recommended.js.map +1 -1
  48. package/dist/rules/errors.d.ts.map +1 -1
  49. package/dist/rules/errors.js +27 -8
  50. package/dist/rules/errors.js.map +1 -1
  51. package/dist/rules/security.d.ts +6 -0
  52. package/dist/rules/security.d.ts.map +1 -1
  53. package/dist/rules/security.js +59 -5
  54. package/dist/rules/security.js.map +1 -1
  55. package/package.json +1 -1
@@ -0,0 +1,232 @@
1
+ import { Node, SyntaxKind } from 'ts-morph';
2
+ import { throughWrappers } from '../core/through-wrappers.js';
3
+ /**
4
+ * Reading a global through the bindings a file spells out (bug 0305).
5
+ *
6
+ * The security rules read a name at the site of use — `eval(…)`, `console.log(…)`,
7
+ * `process.env.A` — which misleads them both ways. A global bound to a local name first
8
+ * (`const ev = eval`, `const { log } = console`, `import { env } from 'node:process'`) is missed:
9
+ * a false GREEN on an ordinary refactor. A local declaration that keeps a global's name
10
+ * (`function Function(…) {}`, `const console = {…}`, a parameter called `process`) is reported as
11
+ * the global: a false RED on code that touches no global at all.
12
+ *
13
+ * **The ruling this implements.** A name is read through its binding, as far as the file spells it:
14
+ *
15
+ * - **no declaration, or an ambient one** — `declare function eval`, a `.d.ts`, the lib — the name
16
+ * IS the global. That is the common case, and the one that must not change.
17
+ * - **a local bound to a global expression** — `const ev = eval`, `const { log } = console`,
18
+ * `import { env } from 'node:process'` — reads as what it is bound to, through as many hops as
19
+ * the file spells out (`const ev = eval; const ev2 = ev`).
20
+ * - **anything else local** — a function, a class, a parameter, a variable holding something else —
21
+ * is NOT the global, and nothing is reported for it.
22
+ * - **a binding that cannot be resolved** falls back to the name as written. A missing type
23
+ * definition must never turn a rule off (ADR-009): an unresolvable name errs toward reporting.
24
+ *
25
+ * A `let` is read through its initializer like a `const`. It can be reassigned later, so the answer
26
+ * is not certain — and for a prohibition the uncertain direction to take is the one that reports.
27
+ */
28
+ /** The modules whose exports are the `process` global's members (`import { env } from …`). */
29
+ const PROCESS_MODULES = new Set(['process', 'node:process']);
30
+ /**
31
+ * The dotted global chain an expression denotes, following bindings, or `undefined` when it denotes
32
+ * a local that is not a global.
33
+ *
34
+ * `chainOf` — the caller's reader for a dotted name — is passed in rather than imported, so this
35
+ * module owns the binding question while `security.ts` keeps the one definition of what a name
36
+ * chain is (bug 0308's matchers).
37
+ */
38
+ export function globalChainOf(node, chainOf) {
39
+ const resolved = resolve(node, chainOf, new Set());
40
+ if (resolved.kind === 'chain')
41
+ return resolved.chain;
42
+ if (resolved.kind === 'not-a-global')
43
+ return undefined;
44
+ // UNKNOWN: the name as written. A binding this reader cannot follow must never turn a rule off
45
+ // (ADR-009), so it errs toward the reading that reports.
46
+ return chainOf(node);
47
+ }
48
+ const UNKNOWN = { kind: 'unknown' };
49
+ const NOT_A_GLOBAL = { kind: 'not-a-global' };
50
+ function resolve(node, chainOf, seen) {
51
+ const chain = chainOf(node);
52
+ // Not a name chain at all: a literal or an object cannot be a global; a call might be.
53
+ if (chain === undefined)
54
+ return isProvablyNotAGlobal(node) ? NOT_A_GLOBAL : UNKNOWN;
55
+ const root = rootIdentifierOf(node);
56
+ if (root === undefined)
57
+ return UNKNOWN;
58
+ const declarations = root.getSymbol()?.getDeclarations() ?? [];
59
+ // Unresolvable, declared nowhere, or ambient: the global itself. `declare function eval(…)`,
60
+ // `lib.dom.d.ts` and `@types/node` all land here, which is why the ordinary case is unchanged.
61
+ if (declarations.length === 0 || declarations.every(isAmbient))
62
+ return { kind: 'chain', chain };
63
+ const rest = chain.split('.').slice(1);
64
+ for (const declaration of declarations) {
65
+ if (seen.has(declaration))
66
+ continue;
67
+ const imported = importedProcessMember(declaration);
68
+ if (imported !== undefined)
69
+ return { kind: 'chain', chain: [imported, ...rest].join('.') };
70
+ const source = aliasSourceOf(declaration);
71
+ if (source === undefined)
72
+ continue;
73
+ const base = resolve(source.node, chainOf, new Set([...seen, declaration]));
74
+ if (base.kind !== 'chain')
75
+ return base;
76
+ return { kind: 'chain', chain: [base.chain, ...source.suffix, ...rest].join('.') };
77
+ }
78
+ // Only a declaration that POSITIVELY names a local value says "not the global". Everything else
79
+ // reaching here is an unknown: a variable or binding element whose source could not be read, and
80
+ // every import this reader has no rule for — an explicit branch for those was removed because it
81
+ // could not be made to fail, which is this line answering them already.
82
+ return declarations.every(isLocalValueDeclaration) ? NOT_A_GLOBAL : UNKNOWN;
83
+ }
84
+ /**
85
+ * Whether an expression could not possibly be a global: a literal, an object or array, a function,
86
+ * a class, a `new`. Anything else — a call, an `await`, a conditional, a member of something opaque
87
+ * — is an unknown, and an unknown reports (ADR-009).
88
+ *
89
+ * The distinction is the one the enforcement review measured this module conflating: "I followed
90
+ * this and it is not a global" and "I could not follow this" were both answered `undefined`, so
91
+ * `const process = require('node:process'); process.env.A` reported nothing where 0.6.0 reported it.
92
+ */
93
+ function isProvablyNotAGlobal(node) {
94
+ return (Node.isObjectLiteralExpression(node) ||
95
+ Node.isArrayLiteralExpression(node) ||
96
+ Node.isStringLiteral(node) ||
97
+ Node.isNumericLiteral(node) ||
98
+ Node.isNoSubstitutionTemplateLiteral(node) ||
99
+ Node.isTemplateExpression(node) ||
100
+ Node.isArrowFunction(node) ||
101
+ Node.isFunctionExpression(node) ||
102
+ Node.isClassExpression(node) ||
103
+ Node.isNewExpression(node) ||
104
+ Node.isTrueLiteral(node) ||
105
+ Node.isFalseLiteral(node) ||
106
+ Node.isNullLiteral(node));
107
+ }
108
+ /**
109
+ * Whether a declaration positively names a local value that cannot be a global — the shadow case.
110
+ *
111
+ * A variable or a binding element is absent on purpose: reaching here with one means its source
112
+ * could not be read (a variable with no initializer, a parameter's destructuring), and an unread
113
+ * source is an unknown, not a local.
114
+ */
115
+ function isLocalValueDeclaration(declaration) {
116
+ return (Node.isFunctionDeclaration(declaration) ||
117
+ Node.isClassDeclaration(declaration) ||
118
+ Node.isClassExpression(declaration) ||
119
+ Node.isParameterDeclaration(declaration) ||
120
+ Node.isEnumDeclaration(declaration) ||
121
+ Node.isMethodDeclaration(declaration) ||
122
+ Node.isPropertyDeclaration(declaration) ||
123
+ Node.isFunctionExpression(declaration) ||
124
+ Node.isArrowFunction(declaration));
125
+ }
126
+ /**
127
+ * Whether a declaration is ambient — in a `.d.ts`, or under a `declare` in a source file.
128
+ *
129
+ * The `declare` keyword sits on the STATEMENT, not on the declaration inside it: for
130
+ * `declare const process: {…}` the `VariableDeclaration` has no keyword and its `VariableStatement`
131
+ * has. Asking the declaration alone read the global `process` as a local and took the
132
+ * `process.env` control to 0 — measured, before this walk replaced it.
133
+ */
134
+ function isAmbient(declaration) {
135
+ if (declaration.getSourceFile().isDeclarationFile())
136
+ return true;
137
+ for (const node of [declaration, ...declaration.getAncestors()]) {
138
+ if (Node.isAmbientable(node) && node.hasDeclareKeyword())
139
+ return true;
140
+ }
141
+ return false;
142
+ }
143
+ /**
144
+ * `process.<name>` when a declaration imports a member of the `process` module — the one binding
145
+ * whose source is not in this file, and the reason `import { env } from 'node:process'` reaches the
146
+ * environment under a name that was never `process`.
147
+ */
148
+ function importedProcessMember(declaration) {
149
+ if (Node.isImportSpecifier(declaration)) {
150
+ const module = declaration.getImportDeclaration().getModuleSpecifierValue();
151
+ return PROCESS_MODULES.has(module) ? `process.${declaration.getName()}` : undefined;
152
+ }
153
+ // `import process from 'node:process'` — the form Node's ESM documentation recommends — and
154
+ // `import * as process from 'node:process'`: the whole module IS the global.
155
+ if (Node.isImportClause(declaration) || Node.isNamespaceImport(declaration)) {
156
+ const importDeclaration = declaration.getFirstAncestorByKind(SyntaxKind.ImportDeclaration);
157
+ const module = importDeclaration?.getModuleSpecifierValue();
158
+ return module !== undefined && PROCESS_MODULES.has(module) ? 'process' : undefined;
159
+ }
160
+ return undefined;
161
+ }
162
+ /** What a local declaration is bound to, when that is another expression in the file. */
163
+ function aliasSourceOf(declaration) {
164
+ if (Node.isVariableDeclaration(declaration)) {
165
+ const initializer = declaration.getInitializer();
166
+ return initializer === undefined ? undefined : { node: initializer, suffix: [] };
167
+ }
168
+ // `const { log } = console` / `const { env: e } = process`, at any depth.
169
+ if (Node.isBindingElement(declaration)) {
170
+ const property = declaration.getPropertyNameNode() ?? declaration.getNameNode();
171
+ if (!Node.isIdentifier(property))
172
+ return undefined;
173
+ const outer = patternSourceOf(declaration);
174
+ return outer === undefined
175
+ ? undefined
176
+ : { node: outer.node, suffix: [...outer.suffix, property.getText()] };
177
+ }
178
+ return undefined;
179
+ }
180
+ /** The expression a binding pattern destructures, walking out through nested patterns. */
181
+ function patternSourceOf(element) {
182
+ const owner = element.getParent()?.getParent();
183
+ if (owner === undefined)
184
+ return undefined;
185
+ if (Node.isVariableDeclaration(owner)) {
186
+ const initializer = owner.getInitializer();
187
+ return initializer === undefined ? undefined : { node: initializer, suffix: [] };
188
+ }
189
+ if (Node.isBindingElement(owner)) {
190
+ const property = owner.getPropertyNameNode() ?? owner.getNameNode();
191
+ if (!Node.isIdentifier(property))
192
+ return undefined;
193
+ const outer = patternSourceOf(owner);
194
+ return outer === undefined
195
+ ? undefined
196
+ : { node: outer.node, suffix: [...outer.suffix, property.getText()] };
197
+ }
198
+ return undefined;
199
+ }
200
+ /**
201
+ * The identifier a dotted name chain starts from.
202
+ *
203
+ * The value wrappers — parentheses, `as`, `<T>`, `satisfies`, `!` — come from
204
+ * {@link throughWrappers}, which owns that list for the whole package; what is left here is the
205
+ * access-expression walk and the comma operator, which it does not cover.
206
+ */
207
+ function rootIdentifierOf(node) {
208
+ let current = node;
209
+ while (current !== undefined) {
210
+ const unwrapped = throughWrappers(current);
211
+ if (unwrapped !== current) {
212
+ // A parenthesized comma expression is the indirect-call idiom `(0, eval)`, whose value is the
213
+ // right-hand side; `throughWrappers` steps into the parentheses and stops at the comma.
214
+ current =
215
+ unwrapped !== undefined &&
216
+ Node.isBinaryExpression(unwrapped) &&
217
+ unwrapped.getOperatorToken().getKind() === SyntaxKind.CommaToken
218
+ ? unwrapped.getRight()
219
+ : unwrapped;
220
+ continue;
221
+ }
222
+ if (Node.isIdentifier(current))
223
+ return current;
224
+ if (Node.isPropertyAccessExpression(current) || Node.isElementAccessExpression(current)) {
225
+ current = current.getExpression();
226
+ continue;
227
+ }
228
+ return undefined;
229
+ }
230
+ return undefined;
231
+ }
232
+ //# sourceMappingURL=global-binding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"global-binding.js","sourceRoot":"","sources":["../../src/helpers/global-binding.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -104,7 +104,7 @@ export { setCorrespondence } from '@nielspeter/eess';
104
104
  export type { CorrespondenceResult } from '@nielspeter/eess';
105
105
  export { haveCyclomaticComplexity, haveMoreLinesThan, haveMoreMethodsThan, haveComplexity, haveMoreFunctionLinesThan, } from './predicates/metrics.js';
106
106
  export { cyclomaticComplexity, linesOfCode } from './helpers/complexity.js';
107
- export { noEval, noFunctionConstructor, noProcessEnv, noConsoleLog, noConsole, noJsonParse, functionNoEval, functionNoFunctionConstructor, functionNoProcessEnv, functionNoConsoleLog, functionNoConsole, functionNoJsonParse, moduleNoEval, moduleNoProcessEnv, moduleNoConsoleLog, } from './rules/security.js';
107
+ export { noEval, noFunctionConstructor, noProcessEnv, noConsoleLog, noConsole, noJsonParse, functionNoEval, functionNoFunctionConstructor, functionNoProcessEnv, functionNoConsoleLog, functionNoConsole, functionNoJsonParse, moduleNoEval, moduleNoFunctionConstructor, moduleNoProcessEnv, moduleNoConsoleLog, } from './rules/security.js';
108
108
  export { noGenericErrors, noTypeErrors, functionNoGenericErrors, functionNoTypeErrors, noSilentCatch, functionNoSilentCatch, moduleNoSilentCatch, } from './rules/errors.js';
109
109
  export { mustCall, classMustCall } from './rules/architecture.js';
110
110
  export { noDeadModules, noUnusedExports, noStubComments, noEmptyBodies } from './rules/hygiene.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -123,7 +123,7 @@ export { haveCyclomaticComplexity, haveMoreLinesThan, haveMoreMethodsThan, haveC
123
123
  // Complexity calculator (for custom rules)
124
124
  export { cyclomaticComplexity, linesOfCode } from './helpers/complexity.js';
125
125
  // Standard rules — security function/module variants (plan 0042)
126
- export { noEval, noFunctionConstructor, noProcessEnv, noConsoleLog, noConsole, noJsonParse, functionNoEval, functionNoFunctionConstructor, functionNoProcessEnv, functionNoConsoleLog, functionNoConsole, functionNoJsonParse, moduleNoEval, moduleNoProcessEnv, moduleNoConsoleLog, } from './rules/security.js';
126
+ export { noEval, noFunctionConstructor, noProcessEnv, noConsoleLog, noConsole, noJsonParse, functionNoEval, functionNoFunctionConstructor, functionNoProcessEnv, functionNoConsoleLog, functionNoConsole, functionNoJsonParse, moduleNoEval, moduleNoFunctionConstructor, moduleNoProcessEnv, moduleNoConsoleLog, } from './rules/security.js';
127
127
  // Standard rules — error function variants (plan 0042)
128
128
  export { noGenericErrors, noTypeErrors, functionNoGenericErrors, functionNoTypeErrors, noSilentCatch, functionNoSilentCatch, moduleNoSilentCatch, } from './rules/errors.js';
129
129
  // Standard rules — architecture (plan 0042)
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,wBAAwB;AACxB,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AACzE,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAK9C,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,uBAAuB,CAAA;AAKpD,OAAO,EACL,eAAe,EACf,cAAc,EACd,cAAc,EACd,cAAc,GACf,MAAM,qBAAqB,CAAA;AAC5B,+EAA+E;AAC/E,8EAA8E;AAC9E,6EAA6E;AAC7E,6EAA6E;AAC7E,8EAA8E;AAC9E,oEAAoE;AACpE,+EAA+E;AAC/E,wEAAwE;AACxE,qEAAqE;AAErE,wCAAwC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EACL,aAAa,EACb,eAAe,EACf,eAAe,EACf,iBAAiB,GAClB,MAAM,kBAAkB,CAAA;AAIzB,iCAAiC;AACjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAEpD,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAA;AAG1E,8CAA8C;AAC9C,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAEnE,sEAAsE;AACtE,4EAA4E;AAC5E,+DAA+D;AAC/D,EAAE;AACF,gFAAgF;AAChF,+EAA+E;AAC/E,8EAA8E;AAC9E,6DAA6D;AAC7D,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAiBtD,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAI7C,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,kBAAkB,EAClB,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,WAAW,EACX,cAAc,GACf,MAAM,uBAAuB,CAAA;AAE9B,wBAAwB;AACxB,OAAO,EACL,YAAY,IAAI,qBAAqB,EACrC,cAAc,IAAI,uBAAuB,EACzC,gBAAgB,IAAI,yBAAyB,EAC7C,UAAU,EACV,QAAQ,GACT,MAAM,4BAA4B,CAAA;AAEnC,oBAAoB;AACpB,OAAO,EACL,UAAU,EACV,aAAa,IAAI,sBAAsB,EACvC,iBAAiB,GAClB,MAAM,wBAAwB,CAAA;AAI/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAC3D,OAAO,EACL,cAAc,EACd,aAAa,IAAI,sBAAsB,EACvC,uBAAuB,EACvB,qBAAqB,EACrB,QAAQ,GACT,MAAM,4BAA4B,CAAA;AAEnC,qBAAqB;AACrB,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAA;AAE9E,oBAAoB;AACpB,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AAE5E,gCAAgC;AAChC,OAAO,EACL,MAAM,EACN,SAAS,EACT,aAAa,EACb,qBAAqB,EACrB,WAAW,EACX,eAAe,IAAI,oBAAoB,EACvC,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,uBAAuB,CAAA;AAE9B,gCAAgC;AAChC,OAAO,EACL,YAAY,EACZ,eAAe,EACf,qBAAqB,EACrB,2BAA2B,EAC3B,qBAAqB,IAAI,0BAA0B,EACnD,wBAAwB,IAAI,6BAA6B,GAC1D,MAAM,uBAAuB,CAAA;AAE9B,uBAAuB;AACvB,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAA;AAEpF,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,kCAAkC,EAClC,4BAA4B,EAC5B,qBAAqB,GACtB,MAAM,2BAA2B,CAAA;AAIlC,sBAAsB;AACtB,OAAO,EACL,SAAS,EACT,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,WAAW,EACX,SAAS,EACT,YAAY,EACZ,kBAAkB,EAClB,6BAA6B,EAC7B,0BAA0B,EAC1B,kBAAkB,EAClB,cAAc,EACd,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,EACnB,yBAAyB,GAC1B,MAAM,0BAA0B,CAAA;AAEjC,sBAAsB;AACtB,OAAO,EACL,QAAQ,IAAI,gBAAgB,EAC5B,UAAU,IAAI,kBAAkB,EAChC,OAAO,IAAI,eAAe,EAC1B,gBAAgB,IAAI,wBAAwB,EAC5C,qBAAqB,IAAI,6BAA6B,EACtD,wBAAwB,IAAI,gCAAgC,EAC5D,sBAAsB,IAAI,8BAA8B,GACzD,MAAM,0BAA0B,CAAA;AAEjC,mBAAmB;AACnB,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAA;AAIxE,OAAO,EACL,aAAa,EACb,cAAc,EACd,YAAY,EACZ,kBAAkB,EAClB,UAAU,GACX,MAAM,sBAAsB,CAAA;AAE7B,wBAAwB;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAE7D,yCAAyC;AACzC,OAAO,EACL,iBAAiB,IAAI,0BAA0B,EAC/C,oBAAoB,IAAI,6BAA6B,EACrD,oBAAoB,IAAI,6BAA6B,EACrD,uBAAuB,IAAI,gCAAgC,EAC3D,0BAA0B,EAC1B,aAAa,GACd,MAAM,yBAAyB,CAAA;AAOhC,OAAO,EACL,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,iBAAiB,EACjB,eAAe,EACf,OAAO,EACP,QAAQ,EACR,OAAO,GACR,MAAM,4BAA4B,CAAA;AAEnC,2CAA2C;AAC3C,OAAO,EACL,IAAI,EACJ,MAAM,EACN,OAAO,EACP,UAAU,EACV,QAAQ,EACR,OAAO,EACP,UAAU,EACV,OAAO,EACP,aAAa,EACb,gBAAgB,EAChB,aAAa,GACd,MAAM,uBAAuB,CAAA;AAG9B,sDAAsD;AACtD,OAAO,EACL,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,+BAA+B,CAAA;AACtC,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACpB,wBAAwB,GACzB,MAAM,wCAAwC,CAAA;AAC/C,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,sCAAsC,CAAA;AAG7C,wCAAwC;AACxC,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAEjG,oDAAoD;AACpD,OAAO,EACL,iBAAiB,EACjB,UAAU,EACV,mBAAmB,GACpB,MAAM,oCAAoC,CAAA;AAK3C,mBAAmB;AACnB,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAEtF,oBAAoB;AACpB,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AAK3E,iBAAiB;AACjB,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AAOvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAA;AACzD,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAErD,gBAAgB;AAChB,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAMhF,kBAAkB;AAClB,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAE/D,qBAAqB;AACrB,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAA;AAG1F,2BAA2B;AAC3B,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAGzC,6BAA6B;AAC7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAEnE,+BAA+B;AAC/B,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAA;AAExE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAE1D,+BAA+B;AAC/B,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAE3F,+BAA+B;AAC/B,OAAO,EACL,sBAAsB,IAAI,0BAA0B,EACpD,yBAAyB,IAAI,6BAA6B,EAC1D,QAAQ,IAAI,YAAY,EACxB,wBAAwB,EACxB,2BAA2B,EAC3B,sBAAsB,IAAI,0BAA0B,EACpD,yBAAyB,IAAI,6BAA6B,GAC3D,MAAM,sBAAsB,CAAA;AAE7B,wCAAwC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAE7C,OAAO,EAAE,yBAAyB,EAAE,MAAM,4CAA4C,CAAA;AAEtF,kCAAkC;AAClC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAA;AAGlE,gCAAgC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAEpD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AAEvD,8BAA8B;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAA;AACrE,OAAO,EAAE,2BAA2B,EAAE,MAAM,mCAAmC,CAAA;AAE/E,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAMxD,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAA;AACjF,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,6BAA6B,CAAA;AAEpC,qDAAqD;AACrD,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,MAAM,EACN,KAAK,EACL,eAAe,GAChB,MAAM,sCAAsC,CAAA;AAE7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAGpD,gCAAgC;AAChC,OAAO,EACL,wBAAwB,EACxB,iBAAiB,EACjB,mBAAmB,EACnB,cAAc,EACd,yBAAyB,GAC1B,MAAM,yBAAyB,CAAA;AAEhC,2CAA2C;AAC3C,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAE3E,iEAAiE;AACjE,OAAO,EACL,MAAM,EACN,qBAAqB,EACrB,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,WAAW,EACX,cAAc,EACd,6BAA6B,EAC7B,oBAAoB,EACpB,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,EACnB,YAAY,EACZ,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,qBAAqB,CAAA;AAE5B,uDAAuD;AACvD,OAAO,EACL,eAAe,EACf,YAAY,EACZ,uBAAuB,EACvB,oBAAoB,EACpB,aAAa,EACb,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,mBAAmB,CAAA;AAE1B,4CAA4C;AAC5C,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AAEjE,uCAAuC;AACvC,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAElG,iCAAiC;AACjC,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AAE5E,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAA;AAErF,8BAA8B;AAC9B,OAAO,EACL,eAAe,EACf,aAAa,EACb,aAAa,IAAI,gBAAgB,EACjC,qBAAqB,IAAI,wBAAwB,GAClD,MAAM,qBAAqB,CAAA;AAE5B,8BAA8B;AAC9B,OAAO,EACL,QAAQ,IAAI,WAAW,EACvB,aAAa,IAAI,gBAAgB,EACjC,gBAAgB,IAAI,mBAAmB,EACvC,qBAAqB,IAAI,wBAAwB,EACjD,wBAAwB,IAAI,2BAA2B,GACxD,MAAM,qBAAqB,CAAA;AAE5B,yBAAyB;AACzB,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAG9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAkB9D,gFAAgF;AAChF,EAAE;AACF,gFAAgF;AAChF,8EAA8E;AAC9E,+EAA+E;AAC/E,+EAA+E;AAC/E,+EAA+E;AAC/E,4EAA4E;AAC5E,oCAAoC;AACpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AACzF,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AACzD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAE7D,2EAA2E;AAC3E,sEAAsE;AACtE,kEAAkE;AAClE,0EAA0E;AAC1E,2EAA2E;AAC3E,+CAA+C;AAC/C,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,WAAW,EACX,kBAAkB,EAClB,6BAA6B,EAC7B,2BAA2B,EAC3B,8BAA8B,EAC9B,oBAAoB,GACrB,MAAM,kBAAkB,CAAA;AAQzB,8EAA8E;AAC9E,8EAA8E;AAC9E,iBAAiB;AACjB,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAmCvE,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAE5C,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAMtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,iFAAiF;AACjF,sEAAsE;AACtE,4EAA4E;AAC5E,iFAAiF;AACjF,kFAAkF;AAClF,EAAE;AACF,kFAAkF;AAClF,gFAAgF;AAChF,gFAAgF;AAChF,+EAA+E;AAC/E,2CAA2C;AAC3C,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { type FunctionDeclaration, type VariableDeclaration, type MethodDeclaration, type ArrowFunction, type FunctionExpression, type SourceFile, type ParameterDeclaration, type Type, type Node } from 'ts-morph';
1
+ import { type FunctionDeclaration, type GetAccessorDeclaration, type SetAccessorDeclaration, type VariableDeclaration, type MethodDeclaration, type ArrowFunction, type FunctionExpression, type SourceFile, type ParameterDeclaration, type Type, type Node } from 'ts-morph';
2
2
  /**
3
3
  * Unified representation of a TypeScript function.
4
4
  *
@@ -62,7 +62,7 @@ export interface ArchFunction {
62
62
  * would return the enclosing declaration's answer, which is a different
63
63
  * subject from the one the violation names.
64
64
  */
65
- export declare function fromCallableNode(node: ArrowFunction | FunctionExpression | MethodDeclaration, getName: () => string | undefined): ArchFunction;
65
+ export declare function fromCallableNode(node: ArrowFunction | FunctionExpression | MethodDeclaration | GetAccessorDeclaration | SetAccessorDeclaration, getName: () => string | undefined): ArchFunction;
66
66
  /**
67
67
  * Create an ArchFunction from a FunctionDeclaration.
68
68
  */
@@ -1 +1 @@
1
- {"version":3,"file":"arch-function.d.ts","sourceRoot":"","sources":["../../src/models/arch-function.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,mBAAmB,EAIxB,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,UAAU,EACf,KAAK,oBAAoB,EACzB,KAAK,IAAI,EACT,KAAK,IAAI,EAIV,MAAM,UAAU,CAAA;AAGjB;;;;;;;;;GASG;AACH,MAAM,WAAW,YAAY;IAC3B,2DAA2D;IAC3D,OAAO,IAAI,MAAM,GAAG,SAAS,CAAA;IAE7B,4CAA4C;IAC5C,aAAa,IAAI,UAAU,CAAA;IAE3B,yDAAyD;IACzD,UAAU,IAAI,OAAO,CAAA;IAErB,+CAA+C;IAC/C,OAAO,IAAI,OAAO,CAAA;IAElB,+CAA+C;IAC/C,aAAa,IAAI,oBAAoB,EAAE,CAAA;IAEvC,mEAAmE;IACnE,aAAa,IAAI,IAAI,CAAA;IAErB,yDAAyD;IACzD,OAAO,IAAI,IAAI,GAAG,SAAS,CAAA;IAE3B;;;;OAIG;IACH,OAAO,IAAI,IAAI,CAAA;IAEf;;;OAGG;IACH,kBAAkB,IAAI,MAAM,CAAA;IAE5B;;;;;;OAMG;IACH,QAAQ,IAAI,QAAQ,GAAG,WAAW,GAAG,SAAS,CAAA;CAC/C;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,aAAa,GAAG,kBAAkB,GAAG,iBAAiB,EAC5D,OAAO,EAAE,MAAM,MAAM,GAAG,SAAS,GAChC,YAAY,CAad;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,mBAAmB,GAAG,YAAY,CAa/E;AAED;;;;;;GAMG;AACH,wBAAgB,kCAAkC,CAAC,IAAI,EAAE,mBAAmB,GAAG,YAAY,CAwB1F;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,iBAAiB,GAAG,YAAY,CA2B7E;AAED;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,QAAQ,GAAG,aAAa,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,CAAA;AAEnG,kFAAkF;AAClF,wBAAgB,cAAc,CAAC,EAAE,EAAE,YAAY,GAAG,YAAY,CAQ7D;AASD;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,IAAI,GAAG,SAAS,GACrB,aAAa,GAAG,kBAAkB,GAAG,SAAS,CAchD;AA+DD;;;;;;;GAOG;AAEH,MAAM,WAAW,yBAAyB;IACxC;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB;;;;;OAKG;IACH,6BAA6B,CAAC,EAAE,OAAO,CAAA;CACxC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,UAAU,EACtB,OAAO,CAAC,EAAE,yBAAyB,GAClC,YAAY,EAAE,CA6DhB;AAkCD;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,SAAS,MAAM,EAAE,GACzB,YAAY,GAAG,SAAS,CAU1B;AAcD;;;GAGG;AACH,eAAO,MAAM,4BAA4B,2CAAqC,CAAA"}
1
+ {"version":3,"file":"arch-function.d.ts","sourceRoot":"","sources":["../../src/models/arch-function.ts"],"names":[],"mappings":"AACA,OAAO,EAKL,KAAK,mBAAmB,EACxB,KAAK,sBAAsB,EAE3B,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,UAAU,EACf,KAAK,oBAAoB,EACzB,KAAK,IAAI,EACT,KAAK,IAAI,EAIV,MAAM,UAAU,CAAA;AAIjB;;;;;;;;;GASG;AACH,MAAM,WAAW,YAAY;IAC3B,2DAA2D;IAC3D,OAAO,IAAI,MAAM,GAAG,SAAS,CAAA;IAE7B,4CAA4C;IAC5C,aAAa,IAAI,UAAU,CAAA;IAE3B,yDAAyD;IACzD,UAAU,IAAI,OAAO,CAAA;IAErB,+CAA+C;IAC/C,OAAO,IAAI,OAAO,CAAA;IAElB,+CAA+C;IAC/C,aAAa,IAAI,oBAAoB,EAAE,CAAA;IAEvC,mEAAmE;IACnE,aAAa,IAAI,IAAI,CAAA;IAErB,yDAAyD;IACzD,OAAO,IAAI,IAAI,GAAG,SAAS,CAAA;IAE3B;;;;OAIG;IACH,OAAO,IAAI,IAAI,CAAA;IAEf;;;OAGG;IACH,kBAAkB,IAAI,MAAM,CAAA;IAE5B;;;;;;OAMG;IACH,QAAQ,IAAI,QAAQ,GAAG,WAAW,GAAG,SAAS,CAAA;CAC/C;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EACA,aAAa,GACb,kBAAkB,GAClB,iBAAiB,GACjB,sBAAsB,GACtB,sBAAsB,EAC1B,OAAO,EAAE,MAAM,MAAM,GAAG,SAAS,GAChC,YAAY,CAiBd;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,mBAAmB,GAAG,YAAY,CAa/E;AAED;;;;;;GAMG;AACH,wBAAgB,kCAAkC,CAAC,IAAI,EAAE,mBAAmB,GAAG,YAAY,CAwB1F;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,iBAAiB,GAAG,YAAY,CA4B7E;AAED;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,QAAQ,GAAG,aAAa,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,CAAA;AAEnG,kFAAkF;AAClF,wBAAgB,cAAc,CAAC,EAAE,EAAE,YAAY,GAAG,YAAY,CAQ7D;AASD;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,IAAI,GAAG,SAAS,GACrB,aAAa,GAAG,kBAAkB,GAAG,SAAS,CAKhD;AAwED;;;;;;;GAOG;AAEH,MAAM,WAAW,yBAAyB;IACxC;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB;;;;;OAKG;IACH,6BAA6B,CAAC,EAAE,OAAO,CAAA;CACxC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,UAAU,EACtB,OAAO,CAAC,EAAE,yBAAyB,GAClC,YAAY,EAAE,CAwDhB;AA4ID;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,SAAS,MAAM,EAAE,GACzB,YAAY,GAAG,SAAS,CAa1B;AAcD;;;GAGG;AACH,eAAO,MAAM,4BAA4B,2CAAqC,CAAA"}
@@ -1,6 +1,7 @@
1
1
  import { ArchConfigError } from '@nielspeter/eess';
2
2
  import { Node as NodeClass, Scope, SyntaxKind, } from 'ts-morph';
3
3
  import { collectObjectLiteralFunctions } from '../core/object-literal-functions.js';
4
+ import { throughWrappers } from '../core/through-wrappers.js';
4
5
  /**
5
6
  * Wrap a callable node as an `ArchFunction`, taking its name from the caller.
6
7
  *
@@ -24,7 +25,10 @@ export function fromCallableNode(node, getName) {
24
25
  getName,
25
26
  getSourceFile: () => node.getSourceFile(),
26
27
  isExported: () => false,
27
- isAsync: () => node.isAsync(),
28
+ // An accessor cannot be `async`, and ts-morph gives it no `isAsync` to ask (bug 0321).
29
+ isAsync: () => NodeClass.isGetAccessorDeclaration(node) || NodeClass.isSetAccessorDeclaration(node)
30
+ ? false
31
+ : node.isAsync(),
28
32
  getParameters: () => node.getParameters(),
29
33
  getReturnType: () => node.getReturnType(),
30
34
  getBody: () => node.getBody(),
@@ -87,8 +91,8 @@ export function fromFunctionInitializerDeclaration(decl) {
87
91
  */
88
92
  export function fromMethodDeclaration(method) {
89
93
  const parent = method.getParent();
90
- const className = NodeClass.isClassDeclaration(parent)
91
- ? (parent.getName() ?? '<anonymous>')
94
+ const className = NodeClass.isClassDeclaration(parent) || NodeClass.isClassExpression(parent)
95
+ ? classNameOf(parent)
92
96
  : '<anonymous>';
93
97
  return {
94
98
  getName: () => {
@@ -142,14 +146,7 @@ function accessOf(scope) {
142
146
  * A variable's initializer and a class property's value are read this way (bugs 0306, 0315).
143
147
  */
144
148
  export function functionValueOf(node) {
145
- let current = node;
146
- while (NodeClass.isParenthesizedExpression(current) ||
147
- NodeClass.isAsExpression(current) ||
148
- NodeClass.isTypeAssertion(current) ||
149
- NodeClass.isSatisfiesExpression(current) ||
150
- NodeClass.isNonNullExpression(current)) {
151
- current = current.getExpression();
152
- }
149
+ const current = throughWrappers(node);
153
150
  return NodeClass.isArrowFunction(current) || NodeClass.isFunctionExpression(current)
154
151
  ? current
155
152
  : undefined;
@@ -160,11 +157,11 @@ export function functionValueOf(node) {
160
157
  * is; reported at the member, and read through `fn` — the member itself, or the property's function.
161
158
  */
162
159
  function fromClassMember(cls, member, name, fn) {
163
- const className = cls.getName() ?? '<anonymous>';
160
+ const className = classNameOf(cls);
164
161
  return {
165
162
  getName: () => `${className}.${name}`,
166
163
  getSourceFile: () => member.getSourceFile(),
167
- isExported: () => cls.isExported(),
164
+ isExported: () => (NodeClass.isClassDeclaration(cls) ? cls.isExported() : false),
168
165
  isAsync: () => NodeClass.isArrowFunction(fn) || NodeClass.isFunctionExpression(fn) ? fn.isAsync() : false,
169
166
  getParameters: () => fn.getParameters(),
170
167
  getReturnType: () => fn.getReturnType(),
@@ -181,6 +178,14 @@ function fromClassMember(cls, member, name, fn) {
181
178
  * getter and its setter share a name, and a metric's identity keys on the function's name. Each
182
179
  * property whose value is a function, as `Class.handler`.
183
180
  */
181
+ /**
182
+ * The name a class's members are reported under: the class's own, else the binding that holds it —
183
+ * `const Expr = class { m() {} }` reports `Expr.m` — else `<anonymous>`, as a default-exported
184
+ * class's members have read since bug 0315.
185
+ */
186
+ function classNameOf(cls) {
187
+ return cls.getName() ?? owningBindingName(cls) ?? '<anonymous>';
188
+ }
184
189
  function classMemberFunctions(cls) {
185
190
  const members = [];
186
191
  for (const ctor of cls.getConstructors()) {
@@ -222,32 +227,29 @@ export function collectFunctions(sourceFile, options) {
222
227
  const includeMethods = options?.includeMethods ?? true;
223
228
  const includeObjectLiteralFunctions = options?.includeObjectLiteralFunctions ?? false;
224
229
  const functions = [];
225
- // Pattern 1: FunctionDeclarations
226
- for (const fn of sourceFile.getFunctions()) {
227
- functions.push(fromFunctionDeclaration(fn));
228
- }
229
- // Pattern 2: const arrow functions
230
- for (const varDecl of sourceFile.getVariableDeclarations()) {
231
- // ArrowFunction and FunctionExpression both. `const a = function () {}` is
232
- // an ordinary shape and was collected by nothing — bug 0224 measured `eval`
233
- // passing the `recommended` floor inside one, because the element never
234
- // reached the rule at all. (Distinct from the concise-arrow half of that
235
- // bug, which was a traversal gap, not a collection gap.)
236
- // Read through parentheses, `as`, `<T>`, `satisfies` and `!` too: `const f = ((x) => …) as F` is
237
- // the same function, and was collected by nothing (bug 0315).
238
- if (functionValueOf(varDecl.getInitializer()) !== undefined) {
239
- functions.push(fromFunctionInitializerDeclaration(varDecl));
240
- }
241
- }
242
- // Pattern 3: class members — each class's methods, then its other function members, which no
243
- // function rule read before bug 0315.
244
- if (includeMethods) {
245
- for (const cls of sourceFile.getClasses()) {
246
- for (const method of cls.getMethods()) {
247
- functions.push(fromMethodDeclaration(method));
248
- }
249
- functions.push(...classMemberFunctions(cls));
250
- }
230
+ // Patterns 1 to 3 run over the file AND over every namespace body in it (bug 0321). A namespace
231
+ // is a scope that holds the same declarations a file does, and `getFunctions()`,
232
+ // `getVariableDeclarations()` and `getClasses()` answer only for the node they are asked. So
233
+ // `export namespace N { export function g() { eval('…') } }` — an ordinary function, in an
234
+ // ordinary place — reached no function rule at all, and the `recommended` floor with it.
235
+ //
236
+ // A namespace inside a FUNCTION is left out: everything in it is already part of that function's
237
+ // body, and collecting it again would report one `eval` twice.
238
+ collectFromScope(sourceFile, functions, includeMethods);
239
+ for (const namespace of namespaceScopes(sourceFile)) {
240
+ // Qualified by the namespace path — `N.Inner.m`, not `Inner.m`. Two namespaces in one file may
241
+ // hold a class of the same name, and an unqualified name would make the violation ambiguous,
242
+ // `.excluding()` hit both, and one accepted finding silently accept the other — bug 0010's
243
+ // collision, which the object-literal collection already prefixes against.
244
+ //
245
+ // The prefix does not remove every collision, and the new one is worth naming: in one file
246
+ // `class Expr { m() {} }`, `const Expr = class { m() {} }` and `namespace Expr { function m() {} }`
247
+ // all report as `Expr.m`. Name-based identity cannot tell them apart, here or on the
248
+ // object-literal path.
249
+ const prefix = namespacePathOf(namespace);
250
+ const collected = [];
251
+ collectFromScope(namespace, collected, includeMethods);
252
+ functions.push(...collected.map((fn) => qualifiedBy(prefix, fn)));
251
253
  }
252
254
  // Pattern 4: object-literal function property values (opt-in, proposal 016).
253
255
  // Collect from top-level object literals only; the shared traversal recurses
@@ -266,7 +268,7 @@ export function collectFunctions(sourceFile, options) {
266
268
  // findings collapsing to 2 identities). The documented example
267
269
  // (`routes["/x"].GET`) always implied this prefix; the code never added it.
268
270
  const owner = owningBindingName(root);
269
- for (const found of collectObjectLiteralFunctions(root)) {
271
+ for (const found of collectObjectLiteralFunctions(root, { includeAccessors: true })) {
270
272
  const keyPath = owner === undefined ? found.keyPath : [owner, ...found.keyPath];
271
273
  const fn = fromObjectLiteralFunction(found.node, keyPath);
272
274
  if (fn)
@@ -276,6 +278,98 @@ export function collectFunctions(sourceFile, options) {
276
278
  }
277
279
  return functions;
278
280
  }
281
+ /**
282
+ * Every namespace body in a file that holds code and is not inside a function, innermost ones
283
+ * included — the scopes bug 0321 added beside the file itself.
284
+ *
285
+ * `ModuleDeclaration` is three declarations wearing one node kind: `namespace N {}`,
286
+ * `declare module 'virtual:mod' {}` and `declare global {}`. Only the first holds code. Taking all
287
+ * three collected subjects that DECLARE rather than run — `global.gf`, and `'virtual:mod'.mg`,
288
+ * whose element name carries a quote and a colon — and an adopter rule about function names
289
+ * reported them. An ambient `declare namespace` is the same: a description, not code.
290
+ */
291
+ function namespaceScopes(sourceFile) {
292
+ if (sourceFile.isDeclarationFile())
293
+ return [];
294
+ return (sourceFile
295
+ .getDescendantsOfKind(SyntaxKind.ModuleDeclaration)
296
+ // AMBIENT is the whole test, and it is the only one that can fail. `declare global {}` and
297
+ // `declare module 'virtual:mod' {}` both carry the keyword, so both go; `namespace N {}` and the
298
+ // legacy `module N {}` both hold code, and both stay. Filtering by `ModuleDeclarationKind`
299
+ // instead dropped the legacy spelling — a false green measured while closing the ambient one —
300
+ // and the two extra filters that briefly guarded the other forms could not be made to fail, so
301
+ // they are not here.
302
+ .filter((namespace) => !namespace.hasDeclareKeyword())
303
+ .filter((namespace) => !isInsideAFunction(namespace)));
304
+ }
305
+ /** The dotted path of a namespace, outermost first: `N` for `N`, `A.B` for `namespace A { namespace B {} }`. */
306
+ function namespacePathOf(namespace) {
307
+ const names = [];
308
+ for (const node of [namespace, ...namespace.getAncestors()]) {
309
+ if (NodeClass.isModuleDeclaration(node))
310
+ names.unshift(node.getName());
311
+ }
312
+ return names.join('.');
313
+ }
314
+ /** The same function, reported under a qualified name. */
315
+ function qualifiedBy(prefix, fn) {
316
+ return {
317
+ ...fn,
318
+ getName: () => {
319
+ const name = fn.getName();
320
+ return name === undefined ? undefined : `${prefix}.${name}`;
321
+ },
322
+ };
323
+ }
324
+ /** Whether a node lies inside a function's body, where an enclosing function already reads it. */
325
+ function isInsideAFunction(node) {
326
+ return node
327
+ .getAncestors()
328
+ .some((ancestor) => NodeClass.isFunctionDeclaration(ancestor) ||
329
+ NodeClass.isFunctionExpression(ancestor) ||
330
+ NodeClass.isArrowFunction(ancestor) ||
331
+ NodeClass.isMethodDeclaration(ancestor) ||
332
+ NodeClass.isConstructorDeclaration(ancestor) ||
333
+ NodeClass.isGetAccessorDeclaration(ancestor) ||
334
+ NodeClass.isSetAccessorDeclaration(ancestor));
335
+ }
336
+ /** Patterns 1 to 3 over one scope — a file, or a namespace body in it (bug 0321). */
337
+ function collectFromScope(scope, functions, includeMethods) {
338
+ // Pattern 1: FunctionDeclarations
339
+ for (const fn of scope.getFunctions()) {
340
+ functions.push(fromFunctionDeclaration(fn));
341
+ }
342
+ // Pattern 2: const arrow functions
343
+ for (const varDecl of scope.getVariableDeclarations()) {
344
+ // ArrowFunction and FunctionExpression both. `const a = function () {}` is
345
+ // an ordinary shape and was collected by nothing — bug 0224 measured `eval`
346
+ // passing the `recommended` floor inside one, because the element never
347
+ // reached the rule at all. (Distinct from the concise-arrow half of that
348
+ // bug, which was a traversal gap, not a collection gap.)
349
+ // Read through parentheses, `as`, `<T>`, `satisfies` and `!` too: `const f = ((x) => …) as F` is
350
+ // the same function, and was collected by nothing (bug 0315).
351
+ if (functionValueOf(varDecl.getInitializer()) !== undefined) {
352
+ functions.push(fromFunctionInitializerDeclaration(varDecl));
353
+ }
354
+ }
355
+ // Pattern 3: class members — each class's methods, then its other function members, which no
356
+ // function rule read before bug 0315. A class EXPRESSION holds the same members as a
357
+ // declaration, so `const Expr = class { m() {…} }` is read too, its members named by the binding
358
+ // that holds it (bug 0321). One held by anything else — passed to a call, chosen by a
359
+ // conditional — stays out, with the inline functions bug 0315 left out on purpose.
360
+ if (includeMethods) {
361
+ const classExpressions = scope
362
+ .getVariableDeclarations()
363
+ .map((varDecl) => throughWrappers(varDecl.getInitializer()))
364
+ .filter((initializer) => NodeClass.isClassExpression(initializer));
365
+ for (const cls of [...scope.getClasses(), ...classExpressions]) {
366
+ for (const method of cls.getMethods()) {
367
+ functions.push(fromMethodDeclaration(method));
368
+ }
369
+ functions.push(...classMemberFunctions(cls));
370
+ }
371
+ }
372
+ }
279
373
  /**
280
374
  * The name of the binding an object literal is assigned to, if any.
281
375
  *
@@ -319,7 +413,10 @@ export function fromObjectLiteralFunction(node, keyPath) {
319
413
  const name = qualifiedName(keyPath);
320
414
  if (NodeClass.isArrowFunction(node) ||
321
415
  NodeClass.isFunctionExpression(node) ||
322
- NodeClass.isMethodDeclaration(node)) {
416
+ NodeClass.isMethodDeclaration(node) ||
417
+ // An object literal's accessors, the counterpart of the class accessors bug 0315 collected.
418
+ NodeClass.isGetAccessorDeclaration(node) ||
419
+ NodeClass.isSetAccessorDeclaration(node)) {
323
420
  return fromCallableNode(node, () => name);
324
421
  }
325
422
  return undefined;