@opensip-cli/graph 0.1.1 → 0.1.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/README.md +2 -2
- package/dist/__tests__/rules/always-throws-branch.test.js +94 -0
- package/dist/__tests__/rules/always-throws-branch.test.js.map +1 -1
- package/dist/__tests__/rules/duplicated-function-body-self-match.test.d.ts +18 -0
- package/dist/__tests__/rules/duplicated-function-body-self-match.test.d.ts.map +1 -0
- package/dist/__tests__/rules/duplicated-function-body-self-match.test.js +167 -0
- package/dist/__tests__/rules/duplicated-function-body-self-match.test.js.map +1 -0
- package/dist/__tests__/rules/no-side-effect-path.test.js +115 -0
- package/dist/__tests__/rules/no-side-effect-path.test.js.map +1 -1
- package/dist/__tests__/rules/orphan-subtree-dynamic-import.test.d.ts +27 -0
- package/dist/__tests__/rules/orphan-subtree-dynamic-import.test.d.ts.map +1 -0
- package/dist/__tests__/rules/orphan-subtree-dynamic-import.test.js +189 -0
- package/dist/__tests__/rules/orphan-subtree-dynamic-import.test.js.map +1 -0
- package/dist/cli/__tests__/graph-worker-sharded.integration.test.d.ts +8 -0
- package/dist/cli/__tests__/graph-worker-sharded.integration.test.d.ts.map +1 -0
- package/dist/cli/__tests__/graph-worker-sharded.integration.test.js +138 -0
- package/dist/cli/__tests__/graph-worker-sharded.integration.test.js.map +1 -0
- package/dist/cli/__tests__/graph-worker.test.js +67 -1
- package/dist/cli/__tests__/graph-worker.test.js.map +1 -1
- package/dist/cli/graph/graph-command-spec.d.ts.map +1 -1
- package/dist/cli/graph/graph-command-spec.js +30 -14
- package/dist/cli/graph/graph-command-spec.js.map +1 -1
- package/dist/cli/graph-runner.d.ts +10 -11
- package/dist/cli/graph-runner.d.ts.map +1 -1
- package/dist/cli/graph-runner.js +29 -25
- package/dist/cli/graph-runner.js.map +1 -1
- package/dist/cli/graph-worker.d.ts +9 -8
- package/dist/cli/graph-worker.d.ts.map +1 -1
- package/dist/cli/graph-worker.js +32 -11
- package/dist/cli/graph-worker.js.map +1 -1
- package/dist/cli/graph.d.ts +14 -13
- package/dist/cli/graph.d.ts.map +1 -1
- package/dist/cli/graph.js +39 -18
- package/dist/cli/graph.js.map +1 -1
- package/dist/cli/orchestrate/__tests__/operational-smoke.test.d.ts +6 -0
- package/dist/cli/orchestrate/__tests__/operational-smoke.test.d.ts.map +1 -0
- package/dist/cli/orchestrate/__tests__/operational-smoke.test.js +73 -0
- package/dist/cli/orchestrate/__tests__/operational-smoke.test.js.map +1 -0
- package/dist/cli/orchestrate/__tests__/shard-model.test.js +20 -0
- package/dist/cli/orchestrate/__tests__/shard-model.test.js.map +1 -1
- package/dist/rules/_entry-points.d.ts +16 -2
- package/dist/rules/_entry-points.d.ts.map +1 -1
- package/dist/rules/_entry-points.js +147 -2
- package/dist/rules/_entry-points.js.map +1 -1
- package/dist/rules/always-throws-branch.d.ts.map +1 -1
- package/dist/rules/always-throws-branch.js +99 -5
- package/dist/rules/always-throws-branch.js.map +1 -1
- package/dist/rules/duplicated-function-body.js +42 -12
- package/dist/rules/duplicated-function-body.js.map +1 -1
- package/dist/rules/no-side-effect-path.d.ts.map +1 -1
- package/dist/rules/no-side-effect-path.js +73 -9
- package/dist/rules/no-side-effect-path.js.map +1 -1
- package/package.json +8 -8
package/README.md
CHANGED
|
@@ -23,8 +23,8 @@ This package is published for the CLI and advanced plugin authors; most users sh
|
|
|
23
23
|
## Documentation
|
|
24
24
|
|
|
25
25
|
- 📚 Project docs: https://opensip.ai/docs/opensip-cli/
|
|
26
|
-
- 🧭 Package catalog (what every package does): https://github.com/opensip-ai/opensip-cli/blob/v0.1.
|
|
27
|
-
- 📦 Source: https://github.com/opensip-ai/opensip-cli/tree/v0.1.
|
|
26
|
+
- 🧭 Package catalog (what every package does): https://github.com/opensip-ai/opensip-cli/blob/v0.1.3/docs/public/70-reference/02-package-catalog.md
|
|
27
|
+
- 📦 Source: https://github.com/opensip-ai/opensip-cli/tree/v0.1.3/packages/graph/engine
|
|
28
28
|
|
|
29
29
|
## License
|
|
30
30
|
|
|
@@ -109,5 +109,99 @@ describe('always-throws-branch rule', () => {
|
|
|
109
109
|
const signals = alwaysThrowsBranchRule.evaluate(catalog, indexes, {});
|
|
110
110
|
expect(signals).toHaveLength(0);
|
|
111
111
|
});
|
|
112
|
+
// ── Nested-function / returned-closure false positives ────────────
|
|
113
|
+
//
|
|
114
|
+
// A `throw` inside a nested function expression / arrow that the outer
|
|
115
|
+
// function merely RETURNS or PASSES is not the outer function's own
|
|
116
|
+
// control flow — the throw fires only when the inner callable is later
|
|
117
|
+
// invoked. The canonical real-world case is a Proxy `get` trap:
|
|
118
|
+
// get(_t, prop) { return () => { throw new Error(...) } }
|
|
119
|
+
// The trap does NOT throw; it returns a lazily-throwing closure.
|
|
120
|
+
it('does not flag a returned arrow whose only edge is a throw (Proxy get-trap closure)', () => {
|
|
121
|
+
// The enclosing `get` trap CREATES the inner arrow (a `[creates] …`
|
|
122
|
+
// edge whose target is the arrow's bodyHash) and returns it. The inner
|
|
123
|
+
// arrow's only edge is the throw — but it is a returned closure, so it
|
|
124
|
+
// must not be flagged.
|
|
125
|
+
const getTrap = occ({
|
|
126
|
+
bodyHash: 'TRAP',
|
|
127
|
+
simpleName: 'get',
|
|
128
|
+
kind: 'method',
|
|
129
|
+
line: 1,
|
|
130
|
+
endLine: 3,
|
|
131
|
+
// Creation edge: the trap creates the inner arrow. Adapters prefix
|
|
132
|
+
// such edges with `[creates] `, and `to` carries the child bodyHash.
|
|
133
|
+
calls: [edge('[creates] () => { throw new Error("unsupported") }', ['ARROW'])],
|
|
134
|
+
});
|
|
135
|
+
const innerArrow = occ({
|
|
136
|
+
bodyHash: 'ARROW',
|
|
137
|
+
simpleName: '<arrow:a.ts:2:11>',
|
|
138
|
+
kind: 'arrow',
|
|
139
|
+
line: 2,
|
|
140
|
+
endLine: 2,
|
|
141
|
+
calls: [edge('throw new Error("unsupported")')],
|
|
142
|
+
});
|
|
143
|
+
const catalog = makeCatalog([getTrap, innerArrow]);
|
|
144
|
+
const indexes = buildIndexes(catalog);
|
|
145
|
+
const signals = alwaysThrowsBranchRule.evaluate(catalog, indexes, {});
|
|
146
|
+
expect(signals).toHaveLength(0);
|
|
147
|
+
});
|
|
148
|
+
it('does not flag an outer function when its only throw edge lives inside a nested function it returns', () => {
|
|
149
|
+
// Some adapters attribute the nested throw edge to the ENCLOSING
|
|
150
|
+
// occurrence. The throw's source line (5) falls inside the nested
|
|
151
|
+
// function's span (4..6), so it is not the outer's own control flow.
|
|
152
|
+
const outer = occ({
|
|
153
|
+
bodyHash: 'OUTER',
|
|
154
|
+
simpleName: 'makeThrower',
|
|
155
|
+
line: 1,
|
|
156
|
+
endLine: 7,
|
|
157
|
+
// The throw edge is positioned inside the nested function's span.
|
|
158
|
+
calls: [{ ...edge('throw new Error("later")'), line: 5 }],
|
|
159
|
+
});
|
|
160
|
+
const nested = occ({
|
|
161
|
+
bodyHash: 'NESTED',
|
|
162
|
+
simpleName: '<fn:a.ts:4:9>',
|
|
163
|
+
kind: 'function-expression',
|
|
164
|
+
line: 4,
|
|
165
|
+
endLine: 6,
|
|
166
|
+
calls: [{ ...edge('throw new Error("later")'), line: 5 }],
|
|
167
|
+
});
|
|
168
|
+
const catalog = makeCatalog([outer, nested]);
|
|
169
|
+
const indexes = buildIndexes(catalog);
|
|
170
|
+
const signals = alwaysThrowsBranchRule.evaluate(catalog, indexes, {});
|
|
171
|
+
// `makeThrower` returns a throwing closure but does not itself throw.
|
|
172
|
+
expect(signals.some((s) => s.message.includes('makeThrower'))).toBe(false);
|
|
173
|
+
});
|
|
174
|
+
it('still flags a function whose OWN body unconditionally throws even when it also declares a nested function', () => {
|
|
175
|
+
// True-positive preservation: the outer function throws in its own
|
|
176
|
+
// control flow (line 2, before the nested declaration at 4..6). The
|
|
177
|
+
// nested-function boundary must not suppress this.
|
|
178
|
+
const outer = occ({
|
|
179
|
+
bodyHash: 'OUTER',
|
|
180
|
+
simpleName: 'guard',
|
|
181
|
+
line: 1,
|
|
182
|
+
endLine: 7,
|
|
183
|
+
calls: [
|
|
184
|
+
{ ...edge('throw new Error("precondition")'), line: 2 },
|
|
185
|
+
// An unrelated edge inside a nested closure — dropped from the
|
|
186
|
+
// own-control-flow set, must not change the verdict.
|
|
187
|
+
{ ...edge('throw new Error("inner")'), line: 5 },
|
|
188
|
+
],
|
|
189
|
+
});
|
|
190
|
+
const nested = occ({
|
|
191
|
+
bodyHash: 'NESTED',
|
|
192
|
+
simpleName: '<arrow:a.ts:4:9>',
|
|
193
|
+
kind: 'arrow',
|
|
194
|
+
line: 4,
|
|
195
|
+
endLine: 6,
|
|
196
|
+
calls: [{ ...edge('throw new Error("inner")'), line: 5 }],
|
|
197
|
+
});
|
|
198
|
+
const catalog = makeCatalog([outer, nested]);
|
|
199
|
+
const indexes = buildIndexes(catalog);
|
|
200
|
+
const signals = alwaysThrowsBranchRule.evaluate(catalog, indexes, {});
|
|
201
|
+
const guard = signals.find((s) => s.message.includes('guard'));
|
|
202
|
+
expect(guard).toBeDefined();
|
|
203
|
+
// Only the own-control-flow throw counts toward the edge count.
|
|
204
|
+
expect(guard?.metadata.edgeCount).toBe(1);
|
|
205
|
+
});
|
|
112
206
|
});
|
|
113
207
|
//# sourceMappingURL=always-throws-branch.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"always-throws-branch.test.js","sourceRoot":"","sources":["../../../src/__tests__/rules/always-throws-branch.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"always-throws-branch.test.js","sourceRoot":"","sources":["../../../src/__tests__/rules/always-throws-branch.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Self-match regression guard for the duplicated-function-body rule.
|
|
3
|
+
*
|
|
4
|
+
* The rule groups occurrences by body hash and reports N-1 duplicates per
|
|
5
|
+
* group. A function can surface MORE THAN ONCE in the catalog index — keyed
|
|
6
|
+
* under both its simple and qualified name, or (for a recursive function)
|
|
7
|
+
* walked once more via its own self-reference. Those extra entries describe
|
|
8
|
+
* the SAME physical function (same file + declaration position) and must
|
|
9
|
+
* collapse to a single group member: a function never duplicates itself.
|
|
10
|
+
*
|
|
11
|
+
* Verified false-positives this guards:
|
|
12
|
+
* - `isPgliteUnsupported` (vitest.setup.ts:55) reported as duplicating
|
|
13
|
+
* itself — identical file AND line on both sides of the message.
|
|
14
|
+
* - `stripPollutionKeys`, a recursive function whose self-calls inflated
|
|
15
|
+
* its body-hash group to a phantom 2 members.
|
|
16
|
+
*/
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=duplicated-function-body-self-match.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"duplicated-function-body-self-match.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/rules/duplicated-function-body-self-match.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG"}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Self-match regression guard for the duplicated-function-body rule.
|
|
3
|
+
*
|
|
4
|
+
* The rule groups occurrences by body hash and reports N-1 duplicates per
|
|
5
|
+
* group. A function can surface MORE THAN ONCE in the catalog index — keyed
|
|
6
|
+
* under both its simple and qualified name, or (for a recursive function)
|
|
7
|
+
* walked once more via its own self-reference. Those extra entries describe
|
|
8
|
+
* the SAME physical function (same file + declaration position) and must
|
|
9
|
+
* collapse to a single group member: a function never duplicates itself.
|
|
10
|
+
*
|
|
11
|
+
* Verified false-positives this guards:
|
|
12
|
+
* - `isPgliteUnsupported` (vitest.setup.ts:55) reported as duplicating
|
|
13
|
+
* itself — identical file AND line on both sides of the message.
|
|
14
|
+
* - `stripPollutionKeys`, a recursive function whose self-calls inflated
|
|
15
|
+
* its body-hash group to a phantom 2 members.
|
|
16
|
+
*/
|
|
17
|
+
import { describe, expect, it } from 'vitest';
|
|
18
|
+
import { buildIndexes } from '../../pipeline/indexes.js';
|
|
19
|
+
import { duplicatedFunctionBodyRule } from '../../rules/duplicated-function-body.js';
|
|
20
|
+
import { makeCatalog, occ } from './_helpers.js';
|
|
21
|
+
const evaluate = duplicatedFunctionBodyRule.evaluate.bind(duplicatedFunctionBodyRule);
|
|
22
|
+
/** Clears the default per-instance floor (≥ 5 lines, ≥ 200 chars). */
|
|
23
|
+
const substantial = { line: 55, endLine: 70, bodySize: 500 };
|
|
24
|
+
describe('duplicated-function-body self-match exclusion', () => {
|
|
25
|
+
it('does NOT flag a single function that appears twice in the catalog index (same file + line)', () => {
|
|
26
|
+
// Same physical function indexed twice (e.g. under both its simple and
|
|
27
|
+
// fully-qualified name) — identical filePath/line/column/simpleName.
|
|
28
|
+
const first = occ({
|
|
29
|
+
bodyHash: 'h',
|
|
30
|
+
simpleName: 'isPgliteUnsupported',
|
|
31
|
+
filePath: 'vitest.setup.ts',
|
|
32
|
+
qualifiedName: 'vitest.setup.isPgliteUnsupported',
|
|
33
|
+
column: 0,
|
|
34
|
+
...substantial,
|
|
35
|
+
});
|
|
36
|
+
const second = occ({
|
|
37
|
+
bodyHash: 'h',
|
|
38
|
+
simpleName: 'isPgliteUnsupported',
|
|
39
|
+
filePath: 'vitest.setup.ts',
|
|
40
|
+
// The fully-qualified-name index entry — same physical declaration.
|
|
41
|
+
qualifiedName: 'pkg/vitest.setup.isPgliteUnsupported',
|
|
42
|
+
column: 0,
|
|
43
|
+
...substantial,
|
|
44
|
+
});
|
|
45
|
+
const catalog = makeCatalog([first, second]);
|
|
46
|
+
const signals = evaluate(catalog, buildIndexes(catalog), {});
|
|
47
|
+
expect(signals).toHaveLength(0);
|
|
48
|
+
});
|
|
49
|
+
it('does NOT flag a recursive function whose self-reference is walked twice', () => {
|
|
50
|
+
// A recursive function may surface an extra catalog occurrence via its own
|
|
51
|
+
// self-call. Both entries share the same physical identity → no phantom
|
|
52
|
+
// duplicate.
|
|
53
|
+
const decl = occ({
|
|
54
|
+
bodyHash: 'rec',
|
|
55
|
+
simpleName: 'stripPollutionKeys',
|
|
56
|
+
filePath: 'src/strip.ts',
|
|
57
|
+
qualifiedName: 'src/strip.stripPollutionKeys',
|
|
58
|
+
column: 2,
|
|
59
|
+
...substantial,
|
|
60
|
+
});
|
|
61
|
+
const selfRef = occ({
|
|
62
|
+
bodyHash: 'rec',
|
|
63
|
+
simpleName: 'stripPollutionKeys',
|
|
64
|
+
filePath: 'src/strip.ts',
|
|
65
|
+
qualifiedName: 'src/strip.stripPollutionKeys',
|
|
66
|
+
column: 2,
|
|
67
|
+
...substantial,
|
|
68
|
+
});
|
|
69
|
+
const catalog = makeCatalog([decl, selfRef]);
|
|
70
|
+
const signals = evaluate(catalog, buildIndexes(catalog), {});
|
|
71
|
+
expect(signals).toHaveLength(0);
|
|
72
|
+
});
|
|
73
|
+
it('does NOT inflate the aggregate occurrenceCount with self-matched copies', () => {
|
|
74
|
+
// The same function in package `core` indexed three times, plus one genuine
|
|
75
|
+
// copy in each of two other packages. Three distinct packages → the
|
|
76
|
+
// aggregate path fires, but its occurrenceCount must reflect three REAL
|
|
77
|
+
// functions, not the five raw catalog entries.
|
|
78
|
+
const coreBase = {
|
|
79
|
+
filePath: 'packages/core/src/x.ts',
|
|
80
|
+
qualifiedName: 'packages/core/src/x.helper',
|
|
81
|
+
package: 'core',
|
|
82
|
+
column: 4,
|
|
83
|
+
...substantial,
|
|
84
|
+
};
|
|
85
|
+
const core1 = occ({ bodyHash: 'agg', simpleName: 'helper', ...coreBase });
|
|
86
|
+
const core2 = occ({ bodyHash: 'agg', simpleName: 'helper', ...coreBase });
|
|
87
|
+
const core3 = occ({ bodyHash: 'agg', simpleName: 'helper', ...coreBase });
|
|
88
|
+
const api = occ({
|
|
89
|
+
bodyHash: 'agg',
|
|
90
|
+
simpleName: 'helper',
|
|
91
|
+
filePath: 'packages/api/src/x.ts',
|
|
92
|
+
qualifiedName: 'packages/api/src/x.helper',
|
|
93
|
+
package: 'api',
|
|
94
|
+
column: 4,
|
|
95
|
+
...substantial,
|
|
96
|
+
});
|
|
97
|
+
const cli = occ({
|
|
98
|
+
bodyHash: 'agg',
|
|
99
|
+
simpleName: 'helper',
|
|
100
|
+
filePath: 'packages/cli/src/x.ts',
|
|
101
|
+
qualifiedName: 'packages/cli/src/x.helper',
|
|
102
|
+
package: 'cli',
|
|
103
|
+
column: 4,
|
|
104
|
+
...substantial,
|
|
105
|
+
});
|
|
106
|
+
const catalog = makeCatalog([core1, core2, core3, api, cli]);
|
|
107
|
+
const signals = evaluate(catalog, buildIndexes(catalog), {});
|
|
108
|
+
const agg = signals.filter((s) => Array.isArray(s.metadata.packages));
|
|
109
|
+
expect(agg).toHaveLength(1);
|
|
110
|
+
expect(agg[0]?.metadata.packageCount).toBe(3);
|
|
111
|
+
// Five raw entries, but only three real functions after self-match dedup.
|
|
112
|
+
expect(agg[0]?.metadata.occurrenceCount).toBe(3);
|
|
113
|
+
});
|
|
114
|
+
it('STILL flags two distinct functions with identical bodies in different files', () => {
|
|
115
|
+
// True-positive must survive: distinct identities (different file/line) with
|
|
116
|
+
// the same body hash.
|
|
117
|
+
const a = occ({
|
|
118
|
+
bodyHash: 'dup',
|
|
119
|
+
simpleName: 'a',
|
|
120
|
+
filePath: 'src/a.ts',
|
|
121
|
+
qualifiedName: 'src/a.a',
|
|
122
|
+
...substantial,
|
|
123
|
+
});
|
|
124
|
+
const b = occ({
|
|
125
|
+
bodyHash: 'dup',
|
|
126
|
+
simpleName: 'b',
|
|
127
|
+
filePath: 'src/b.ts',
|
|
128
|
+
qualifiedName: 'src/b.b',
|
|
129
|
+
...substantial,
|
|
130
|
+
});
|
|
131
|
+
const catalog = makeCatalog([a, b]);
|
|
132
|
+
const signals = evaluate(catalog, buildIndexes(catalog), {});
|
|
133
|
+
expect(signals).toHaveLength(1);
|
|
134
|
+
expect(signals[0]?.metadata.primary).toBe('src/a.a');
|
|
135
|
+
expect(signals[0]?.metadata.duplicate).toBe('src/b.b');
|
|
136
|
+
});
|
|
137
|
+
it('flags the genuine duplicate but not the self-match when both are present', () => {
|
|
138
|
+
// One function appears twice (self-match) AND a genuinely distinct function
|
|
139
|
+
// shares its body. Expect exactly ONE signal for the real duplicate.
|
|
140
|
+
const selfA = occ({
|
|
141
|
+
bodyHash: 'mix',
|
|
142
|
+
simpleName: 'shared',
|
|
143
|
+
filePath: 'src/a.ts',
|
|
144
|
+
qualifiedName: 'src/a.shared',
|
|
145
|
+
...substantial,
|
|
146
|
+
});
|
|
147
|
+
const selfADup = occ({
|
|
148
|
+
bodyHash: 'mix',
|
|
149
|
+
simpleName: 'shared',
|
|
150
|
+
filePath: 'src/a.ts',
|
|
151
|
+
qualifiedName: 'src/a.shared',
|
|
152
|
+
...substantial,
|
|
153
|
+
});
|
|
154
|
+
const realB = occ({
|
|
155
|
+
bodyHash: 'mix',
|
|
156
|
+
simpleName: 'sharedTwin',
|
|
157
|
+
filePath: 'src/b.ts',
|
|
158
|
+
qualifiedName: 'src/b.sharedTwin',
|
|
159
|
+
...substantial,
|
|
160
|
+
});
|
|
161
|
+
const catalog = makeCatalog([selfA, selfADup, realB]);
|
|
162
|
+
const signals = evaluate(catalog, buildIndexes(catalog), {});
|
|
163
|
+
expect(signals).toHaveLength(1);
|
|
164
|
+
expect(signals[0]?.metadata.groupSize).toBe(2);
|
|
165
|
+
});
|
|
166
|
+
});
|
|
167
|
+
//# sourceMappingURL=duplicated-function-body-self-match.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"duplicated-function-body-self-match.test.js","sourceRoot":"","sources":["../../../src/__tests__/rules/duplicated-function-body-self-match.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE9C,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,0BAA0B,EAAE,MAAM,yCAAyC,CAAC;AAErF,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAIjD,MAAM,QAAQ,GAAG,0BAA0B,CAAC,QAAQ,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;AAEtF,sEAAsE;AACtE,MAAM,WAAW,GAAgC,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;AAE1F,QAAQ,CAAC,+CAA+C,EAAE,GAAG,EAAE;IAC7D,EAAE,CAAC,4FAA4F,EAAE,GAAG,EAAE;QACpG,uEAAuE;QACvE,qEAAqE;QACrE,MAAM,KAAK,GAAG,GAAG,CAAC;YAChB,QAAQ,EAAE,GAAG;YACb,UAAU,EAAE,qBAAqB;YACjC,QAAQ,EAAE,iBAAiB;YAC3B,aAAa,EAAE,kCAAkC;YACjD,MAAM,EAAE,CAAC;YACT,GAAG,WAAW;SACf,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,GAAG,CAAC;YACjB,QAAQ,EAAE,GAAG;YACb,UAAU,EAAE,qBAAqB;YACjC,QAAQ,EAAE,iBAAiB;YAC3B,oEAAoE;YACpE,aAAa,EAAE,sCAAsC;YACrD,MAAM,EAAE,CAAC;YACT,GAAG,WAAW;SACf,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;QAC7C,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7D,MAAM,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yEAAyE,EAAE,GAAG,EAAE;QACjF,2EAA2E;QAC3E,wEAAwE;QACxE,aAAa;QACb,MAAM,IAAI,GAAG,GAAG,CAAC;YACf,QAAQ,EAAE,KAAK;YACf,UAAU,EAAE,oBAAoB;YAChC,QAAQ,EAAE,cAAc;YACxB,aAAa,EAAE,8BAA8B;YAC7C,MAAM,EAAE,CAAC;YACT,GAAG,WAAW;SACf,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,GAAG,CAAC;YAClB,QAAQ,EAAE,KAAK;YACf,UAAU,EAAE,oBAAoB;YAChC,QAAQ,EAAE,cAAc;YACxB,aAAa,EAAE,8BAA8B;YAC7C,MAAM,EAAE,CAAC;YACT,GAAG,WAAW;SACf,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;QAC7C,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7D,MAAM,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yEAAyE,EAAE,GAAG,EAAE;QACjF,4EAA4E;QAC5E,oEAAoE;QACpE,wEAAwE;QACxE,+CAA+C;QAC/C,MAAM,QAAQ,GAAgC;YAC5C,QAAQ,EAAE,wBAAwB;YAClC,aAAa,EAAE,4BAA4B;YAC3C,OAAO,EAAE,MAAM;YACf,MAAM,EAAE,CAAC;YACT,GAAG,WAAW;SACf,CAAC;QACF,MAAM,KAAK,GAAG,GAAG,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAC;QAC1E,MAAM,KAAK,GAAG,GAAG,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAC;QAC1E,MAAM,KAAK,GAAG,GAAG,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAC;QAC1E,MAAM,GAAG,GAAG,GAAG,CAAC;YACd,QAAQ,EAAE,KAAK;YACf,UAAU,EAAE,QAAQ;YACpB,QAAQ,EAAE,uBAAuB;YACjC,aAAa,EAAE,2BAA2B;YAC1C,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,CAAC;YACT,GAAG,WAAW;SACf,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,GAAG,CAAC;YACd,QAAQ,EAAE,KAAK;YACf,UAAU,EAAE,QAAQ;YACpB,QAAQ,EAAE,uBAAuB;YACjC,aAAa,EAAE,2BAA2B;YAC1C,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,CAAC;YACT,GAAG,WAAW;SACf,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QAC7D,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7D,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;QACtE,MAAM,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC9C,0EAA0E;QAC1E,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6EAA6E,EAAE,GAAG,EAAE;QACrF,6EAA6E;QAC7E,sBAAsB;QACtB,MAAM,CAAC,GAAG,GAAG,CAAC;YACZ,QAAQ,EAAE,KAAK;YACf,UAAU,EAAE,GAAG;YACf,QAAQ,EAAE,UAAU;YACpB,aAAa,EAAE,SAAS;YACxB,GAAG,WAAW;SACf,CAAC,CAAC;QACH,MAAM,CAAC,GAAG,GAAG,CAAC;YACZ,QAAQ,EAAE,KAAK;YACf,UAAU,EAAE,GAAG;YACf,QAAQ,EAAE,UAAU;YACpB,aAAa,EAAE,SAAS;YACxB,GAAG,WAAW;SACf,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACpC,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7D,MAAM,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACrD,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0EAA0E,EAAE,GAAG,EAAE;QAClF,4EAA4E;QAC5E,qEAAqE;QACrE,MAAM,KAAK,GAAG,GAAG,CAAC;YAChB,QAAQ,EAAE,KAAK;YACf,UAAU,EAAE,QAAQ;YACpB,QAAQ,EAAE,UAAU;YACpB,aAAa,EAAE,cAAc;YAC7B,GAAG,WAAW;SACf,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,GAAG,CAAC;YACnB,QAAQ,EAAE,KAAK;YACf,UAAU,EAAE,QAAQ;YACpB,QAAQ,EAAE,UAAU;YACpB,aAAa,EAAE,cAAc;YAC7B,GAAG,WAAW;SACf,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,GAAG,CAAC;YAChB,QAAQ,EAAE,KAAK;YACf,UAAU,EAAE,YAAY;YACxB,QAAQ,EAAE,UAAU;YACpB,aAAa,EAAE,kBAAkB;YACjC,GAAG,WAAW;SACf,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;QACtD,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7D,MAAM,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -297,5 +297,120 @@ describe('no-side-effect-path rule', () => {
|
|
|
297
297
|
const signals = noSideEffectPathRule.evaluate(catalog, indexes, {});
|
|
298
298
|
expect(signals.some((s) => s.message.includes('inferredPure'))).toBe(true);
|
|
299
299
|
});
|
|
300
|
+
// ── Regression: verified false positives (purity over-eagerness) ──────
|
|
301
|
+
//
|
|
302
|
+
// The textual purity walk only inspected call-edge text against a narrow
|
|
303
|
+
// primitive list, so functions that emit observability or mutate
|
|
304
|
+
// module-level collections looked "pure" and were flagged. The
|
|
305
|
+
// structural side-effect detector now treats these call sites as
|
|
306
|
+
// effecting. Each case: an effecting callee whose own edge text declares
|
|
307
|
+
// the effect (telemetry helper / mutator method), reached via TWO calls
|
|
308
|
+
// so the >= 2-call eligibility gate is satisfied, with a discarding
|
|
309
|
+
// caller — i.e. eligible in every OTHER respect, so the only thing that
|
|
310
|
+
// can suppress the flag is correct side-effect classification.
|
|
311
|
+
// NOTE: each effecting call edge resolves to a real target (`['ha']`) so
|
|
312
|
+
// the occurrence is NOT rejected by the unresolved-edge gate — the ONLY
|
|
313
|
+
// thing that can suppress the flag is the side-effect classification of
|
|
314
|
+
// the edge TEXT. The `helperA`/`helperB` callee bodies stay pure.
|
|
315
|
+
it('does not flag a function that calls a telemetry/observability helper (recordX)', () => {
|
|
316
|
+
const helperA = occ({ bodyHash: 'ha', simpleName: 'helperA', ...exportedDefaults });
|
|
317
|
+
const helperB = occ({ bodyHash: 'hb', simpleName: 'helperB', ...exportedDefaults });
|
|
318
|
+
const effecting = occ({
|
|
319
|
+
bodyHash: 'p',
|
|
320
|
+
simpleName: 'classifyComplexity',
|
|
321
|
+
...exportedDefaults,
|
|
322
|
+
returnType: 'number',
|
|
323
|
+
calls: [ed('helperA()', ['ha']), ed('recordComplexityClassified(score)', ['hb'])],
|
|
324
|
+
});
|
|
325
|
+
const caller = occ({
|
|
326
|
+
bodyHash: 'c',
|
|
327
|
+
simpleName: 'caller',
|
|
328
|
+
...exportedDefaults,
|
|
329
|
+
calls: [ed('classifyComplexity()', ['p'], true)],
|
|
330
|
+
});
|
|
331
|
+
const catalog = makeCatalog([effecting, helperA, helperB, caller]);
|
|
332
|
+
const indexes = buildIndexes(catalog);
|
|
333
|
+
const signals = noSideEffectPathRule.evaluate(catalog, indexes, {});
|
|
334
|
+
expect(signals.some((s) => s.message.includes('classifyComplexity'))).toBe(false);
|
|
335
|
+
});
|
|
336
|
+
it('does not flag a function that calls a withSpan-style tracing helper', () => {
|
|
337
|
+
const helperA = occ({ bodyHash: 'ha', simpleName: 'helperA', ...exportedDefaults });
|
|
338
|
+
const helperB = occ({ bodyHash: 'hb', simpleName: 'helperB', ...exportedDefaults });
|
|
339
|
+
const effecting = occ({
|
|
340
|
+
bodyHash: 'p',
|
|
341
|
+
simpleName: 'runQuery',
|
|
342
|
+
...exportedDefaults,
|
|
343
|
+
returnType: 'number',
|
|
344
|
+
calls: [ed('helperA()', ['ha']), ed('withQuerySpan(name, fn)', ['hb'])],
|
|
345
|
+
});
|
|
346
|
+
const caller = occ({
|
|
347
|
+
bodyHash: 'c',
|
|
348
|
+
simpleName: 'caller',
|
|
349
|
+
...exportedDefaults,
|
|
350
|
+
calls: [ed('runQuery()', ['p'], true)],
|
|
351
|
+
});
|
|
352
|
+
const catalog = makeCatalog([effecting, helperA, helperB, caller]);
|
|
353
|
+
const indexes = buildIndexes(catalog);
|
|
354
|
+
const signals = noSideEffectPathRule.evaluate(catalog, indexes, {});
|
|
355
|
+
expect(signals.some((s) => s.message.includes('runQuery'))).toBe(false);
|
|
356
|
+
});
|
|
357
|
+
it('does not flag a function that mutates module-level state (Map.set / array.push)', () => {
|
|
358
|
+
const helperA = occ({ bodyHash: 'ha', simpleName: 'helperA', ...exportedDefaults });
|
|
359
|
+
const helperB = occ({ bodyHash: 'hb', simpleName: 'helperB', ...exportedDefaults });
|
|
360
|
+
const effecting = occ({
|
|
361
|
+
bodyHash: 'p',
|
|
362
|
+
simpleName: 'cacheResult',
|
|
363
|
+
...exportedDefaults,
|
|
364
|
+
returnType: 'number',
|
|
365
|
+
calls: [ed('helperA()', ['ha']), ed('moduleCache.set(key, value)', ['hb'])],
|
|
366
|
+
});
|
|
367
|
+
const caller = occ({
|
|
368
|
+
bodyHash: 'c',
|
|
369
|
+
simpleName: 'caller',
|
|
370
|
+
...exportedDefaults,
|
|
371
|
+
calls: [ed('cacheResult()', ['p'], true)],
|
|
372
|
+
});
|
|
373
|
+
const catalog = makeCatalog([effecting, helperA, helperB, caller]);
|
|
374
|
+
const indexes = buildIndexes(catalog);
|
|
375
|
+
const signals = noSideEffectPathRule.evaluate(catalog, indexes, {});
|
|
376
|
+
expect(signals.some((s) => s.message.includes('cacheResult'))).toBe(false);
|
|
377
|
+
});
|
|
378
|
+
// ── Regression: "caller discards" leg — return consumed via .map / bind ─
|
|
379
|
+
//
|
|
380
|
+
// The upstream resolver marks a call inside `arr.map(x => f(x))` or a
|
|
381
|
+
// binding `const r = f(...)` as `discarded: false` (neither is an
|
|
382
|
+
// ExpressionStatement). When ANY caller provably consumes the return,
|
|
383
|
+
// the result is live computation — never dead — so the rule must not
|
|
384
|
+
// flag even if another caller happens to discard the same function.
|
|
385
|
+
it('does not flag when one caller consumes the return via .map even though another discards', () => {
|
|
386
|
+
const helperA = occ({ bodyHash: 'ha', simpleName: 'helperA', ...exportedDefaults });
|
|
387
|
+
const helperB = occ({ bodyHash: 'hb', simpleName: 'helperB', ...exportedDefaults });
|
|
388
|
+
const pure = occ({
|
|
389
|
+
bodyHash: 'p',
|
|
390
|
+
simpleName: 'transformItem',
|
|
391
|
+
...exportedDefaults,
|
|
392
|
+
returnType: 'number',
|
|
393
|
+
calls: [ed('helperA()', ['ha']), ed('helperB()', ['hb'])],
|
|
394
|
+
});
|
|
395
|
+
// One caller maps the result (consumed → discarded:false), another
|
|
396
|
+
// calls it as a bare statement (discarded:true). The consuming caller
|
|
397
|
+
// must veto the signal.
|
|
398
|
+
const mappingCaller = occ({
|
|
399
|
+
bodyHash: 'cm',
|
|
400
|
+
simpleName: 'mapper',
|
|
401
|
+
...exportedDefaults,
|
|
402
|
+
calls: [ed('arr.map((x) => transformItem(x))', ['p'], false)],
|
|
403
|
+
});
|
|
404
|
+
const discardingCaller = occ({
|
|
405
|
+
bodyHash: 'cd',
|
|
406
|
+
simpleName: 'discarder',
|
|
407
|
+
...exportedDefaults,
|
|
408
|
+
calls: [ed('transformItem(x)', ['p'], true)],
|
|
409
|
+
});
|
|
410
|
+
const catalog = makeCatalog([pure, helperA, helperB, mappingCaller, discardingCaller]);
|
|
411
|
+
const indexes = buildIndexes(catalog);
|
|
412
|
+
const signals = noSideEffectPathRule.evaluate(catalog, indexes, {});
|
|
413
|
+
expect(signals.some((s) => s.message.includes('transformItem'))).toBe(false);
|
|
414
|
+
});
|
|
300
415
|
});
|
|
301
416
|
//# sourceMappingURL=no-side-effect-path.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"no-side-effect-path.test.js","sourceRoot":"","sources":["../../../src/__tests__/rules/no-side-effect-path.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"no-side-effect-path.test.js","sourceRoot":"","sources":["../../../src/__tests__/rules/no-side-effect-path.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Regression: dynamic `import()` must count as a reachability edge.
|
|
3
|
+
*
|
|
4
|
+
* Verified false positive (the bug this guards): a CLI command module
|
|
5
|
+
* reached only through
|
|
6
|
+
* `const { runReplay } = await import('../commands/.../replay.js')`
|
|
7
|
+
* was flagged as an orphan — and so were the helpers it calls
|
|
8
|
+
* (`parseArgs` / `formatOutcomeTag`) — because the static call-graph
|
|
9
|
+
* resolver cannot trace a binding through a dynamic import, so neither
|
|
10
|
+
* the importing call nor a static import edge ever marked the target
|
|
11
|
+
* module reachable.
|
|
12
|
+
*
|
|
13
|
+
* The fix (heuristic 6 in `_entry-points.ts`) treats the dynamic-import
|
|
14
|
+
* target the same way a static import makes the imported module's
|
|
15
|
+
* exported surface reachable: it resolves the relative specifier to the
|
|
16
|
+
* target file and seeds that file's EXPORTED occurrences as entry points.
|
|
17
|
+
*
|
|
18
|
+
* These tests mirror the real catalog edge topology observed from the
|
|
19
|
+
* TypeScript pipeline for the `const { x } = await import('./mod.js')`
|
|
20
|
+
* form: the importing function carries an UNRESOLVED `import('./mod.js')`
|
|
21
|
+
* call edge (`to: []`) plus an UNRESOLVED `runReplay(...)` call edge
|
|
22
|
+
* (the destructured binding the resolver could not trace), while the
|
|
23
|
+
* target module's exported function resolves edges to its own private
|
|
24
|
+
* helpers.
|
|
25
|
+
*/
|
|
26
|
+
export {};
|
|
27
|
+
//# sourceMappingURL=orphan-subtree-dynamic-import.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orphan-subtree-dynamic-import.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/rules/orphan-subtree-dynamic-import.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG"}
|