optiprune 2.1.4 → 2.1.7
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 +52 -22
- package/bin/runner.js +26 -0
- package/package.json +10 -37
- package/dist/ast-utils.d.ts +0 -149
- package/dist/ast-utils.js +0 -36
- package/dist/ast-utils.js.map +0 -1
- package/dist/cache.d.ts +0 -14
- package/dist/cache.js +0 -36
- package/dist/cache.js.map +0 -1
- package/dist/cli.d.ts +0 -2
- package/dist/cli.js +0 -68
- package/dist/cli.js.map +0 -1
- package/dist/config-loader.d.ts +0 -4
- package/dist/config-loader.js +0 -84
- package/dist/config-loader.js.map +0 -1
- package/dist/coverage-tracker.d.ts +0 -39
- package/dist/coverage-tracker.js +0 -61
- package/dist/coverage-tracker.js.map +0 -1
- package/dist/engine.d.ts +0 -17
- package/dist/engine.js +0 -215
- package/dist/engine.js.map +0 -1
- package/dist/framework-plugins.d.ts +0 -16
- package/dist/framework-plugins.js +0 -127
- package/dist/framework-plugins.js.map +0 -1
- package/dist/fs-utils.d.ts +0 -32
- package/dist/fs-utils.js +0 -415
- package/dist/fs-utils.js.map +0 -1
- package/dist/graph.d.ts +0 -42
- package/dist/graph.js +0 -583
- package/dist/graph.js.map +0 -1
- package/dist/index.d.ts +0 -3
- package/dist/index.js +0 -451
- package/dist/index.js.map +0 -1
- package/dist/instrument.d.ts +0 -5
- package/dist/instrument.js +0 -108
- package/dist/instrument.js.map +0 -1
- package/dist/layer2.d.ts +0 -6
- package/dist/layer2.js +0 -224
- package/dist/layer2.js.map +0 -1
- package/dist/layer3.d.ts +0 -7
- package/dist/layer3.js +0 -346
- package/dist/layer3.js.map +0 -1
- package/dist/layer4.d.ts +0 -8
- package/dist/layer4.js +0 -627
- package/dist/layer4.js.map +0 -1
- package/dist/layer5.d.ts +0 -6
- package/dist/layer5.js +0 -141
- package/dist/layer5.js.map +0 -1
- package/dist/layer6.d.ts +0 -26
- package/dist/layer6.js +0 -268
- package/dist/layer6.js.map +0 -1
- package/dist/layer7.d.ts +0 -28
- package/dist/layer7.js +0 -267
- package/dist/layer7.js.map +0 -1
- package/dist/parser.d.ts +0 -20
- package/dist/parser.js +0 -832
- package/dist/parser.js.map +0 -1
- package/dist/plugins/angular-plugin.d.ts +0 -7
- package/dist/plugins/angular-plugin.js +0 -60
- package/dist/plugins/angular-plugin.js.map +0 -1
- package/dist/plugins/astro-plugin.d.ts +0 -7
- package/dist/plugins/astro-plugin.js +0 -88
- package/dist/plugins/astro-plugin.js.map +0 -1
- package/dist/plugins/babel-plugin.d.ts +0 -8
- package/dist/plugins/babel-plugin.js +0 -132
- package/dist/plugins/babel-plugin.js.map +0 -1
- package/dist/plugins/esbuild-plugin.d.ts +0 -8
- package/dist/plugins/esbuild-plugin.js +0 -121
- package/dist/plugins/esbuild-plugin.js.map +0 -1
- package/dist/plugins/nestjs-plugin.d.ts +0 -7
- package/dist/plugins/nestjs-plugin.js +0 -69
- package/dist/plugins/nestjs-plugin.js.map +0 -1
- package/dist/plugins/nextjs-plugin.d.ts +0 -7
- package/dist/plugins/nextjs-plugin.js +0 -66
- package/dist/plugins/nextjs-plugin.js.map +0 -1
- package/dist/plugins/nuxtjs-plugin.d.ts +0 -7
- package/dist/plugins/nuxtjs-plugin.js +0 -80
- package/dist/plugins/nuxtjs-plugin.js.map +0 -1
- package/dist/plugins/svelte-plugin.d.ts +0 -7
- package/dist/plugins/svelte-plugin.js +0 -38
- package/dist/plugins/svelte-plugin.js.map +0 -1
- package/dist/plugins/vuejs-plugin.d.ts +0 -7
- package/dist/plugins/vuejs-plugin.js +0 -63
- package/dist/plugins/vuejs-plugin.js.map +0 -1
- package/dist/reporters.d.ts +0 -3
- package/dist/reporters.js +0 -75
- package/dist/reporters.js.map +0 -1
- package/dist/semantic-graph.d.ts +0 -44
- package/dist/semantic-graph.js +0 -88
- package/dist/semantic-graph.js.map +0 -1
- package/dist/symbolic-engine.d.ts +0 -19
- package/dist/symbolic-engine.js +0 -51
- package/dist/symbolic-engine.js.map +0 -1
- package/dist/topology-manager.d.ts +0 -23
- package/dist/topology-manager.js +0 -144
- package/dist/topology-manager.js.map +0 -1
- package/dist/types.d.ts +0 -265
- package/dist/types.js +0 -11
- package/dist/types.js.map +0 -1
- package/dist/workspace.d.ts +0 -6
- package/dist/workspace.js +0 -105
- package/dist/workspace.js.map +0 -1
package/dist/layer7.js
DELETED
|
@@ -1,267 +0,0 @@
|
|
|
1
|
-
import { walkAst } from "./parser.js";
|
|
2
|
-
import path from "pathe";
|
|
3
|
-
export async function analyzeLayer7(context) {
|
|
4
|
-
const findings = [];
|
|
5
|
-
const implicitEdges = [];
|
|
6
|
-
const resolvedDynamicImports = [];
|
|
7
|
-
// 1. DI Topology Engine
|
|
8
|
-
const diEdges = analyzeDITopology(context);
|
|
9
|
-
implicitEdges.push(...diEdges);
|
|
10
|
-
// 2. Cross-Repository / Event Bus Contract Engine
|
|
11
|
-
const eventEdges = analyzeEventContracts(context);
|
|
12
|
-
implicitEdges.push(...eventEdges);
|
|
13
|
-
// 3. Dynamic Specifier & Template Literal Engine
|
|
14
|
-
const dynamicResults = await analyzeDynamicSpecifiers(context);
|
|
15
|
-
resolvedDynamicImports.push(...dynamicResults);
|
|
16
|
-
// Merge results into the main graph and findings
|
|
17
|
-
applyLayer7Results(context, implicitEdges, resolvedDynamicImports, findings);
|
|
18
|
-
return findings;
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Sub-Engine A: Dependency Injection Topology Engine
|
|
22
|
-
*/
|
|
23
|
-
function analyzeDITopology(context) {
|
|
24
|
-
const providers = new Map();
|
|
25
|
-
const consumers = [];
|
|
26
|
-
const edges = [];
|
|
27
|
-
for (const module of context.modules.values()) {
|
|
28
|
-
if (!module.ast)
|
|
29
|
-
continue;
|
|
30
|
-
walkAst(module.ast, (rawNode) => {
|
|
31
|
-
const node = rawNode;
|
|
32
|
-
// Extract classNode whether it's standalone or exported
|
|
33
|
-
const classNode = node.type === "ClassDeclaration"
|
|
34
|
-
? node
|
|
35
|
-
: node.type === "ExportNamedDeclaration" && node.declaration?.type === "ClassDeclaration"
|
|
36
|
-
? node.declaration
|
|
37
|
-
: null;
|
|
38
|
-
if (classNode) {
|
|
39
|
-
// Gather decorators from both outer Export declaration AND inner Class declaration
|
|
40
|
-
const decorators = [
|
|
41
|
-
...getDecorators(node),
|
|
42
|
-
...getDecorators(classNode),
|
|
43
|
-
];
|
|
44
|
-
const isProvider = decorators.some((d) => ["Injectable", "Module", "Service"].includes(d.name));
|
|
45
|
-
const className = classNode.id?.name;
|
|
46
|
-
if (isProvider && className) {
|
|
47
|
-
providers.set(className, { file: module.id, symbol: className });
|
|
48
|
-
}
|
|
49
|
-
// Check constructor parameters for @Inject('TOKEN')
|
|
50
|
-
const constructor = classNode.body?.body?.find((m) => m.kind === "constructor");
|
|
51
|
-
if (constructor) {
|
|
52
|
-
const params = constructor.params || constructor.value?.params || [];
|
|
53
|
-
for (const rawParam of params) {
|
|
54
|
-
const param = rawParam.type === "TSParameterProperty" ? rawParam.parameter : rawParam;
|
|
55
|
-
const paramDecorators = [
|
|
56
|
-
...getDecorators(rawParam),
|
|
57
|
-
...getDecorators(param),
|
|
58
|
-
];
|
|
59
|
-
const injectDecorator = paramDecorators.find((d) => d.name === "Inject");
|
|
60
|
-
if (injectDecorator && injectDecorator.args.length > 0) {
|
|
61
|
-
const token = injectDecorator.args[0];
|
|
62
|
-
if (typeof token === "string" && className) {
|
|
63
|
-
consumers.push({ file: module.id, symbol: className, token });
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
// container.bind('TOKEN').to(Service)
|
|
70
|
-
if (node.type === "CallExpression" && node.callee.type === "MemberExpression") {
|
|
71
|
-
if (node.callee.property.name === "bind" && node.arguments.length > 0) {
|
|
72
|
-
const token = getLiteralValue(node.arguments[0]);
|
|
73
|
-
if (token) {
|
|
74
|
-
// Simplified chain traversal
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
// Matching logic
|
|
81
|
-
for (const consumer of consumers) {
|
|
82
|
-
const provider = providers.get(consumer.token);
|
|
83
|
-
if (provider) {
|
|
84
|
-
edges.push({
|
|
85
|
-
id: `di-${consumer.file}-${consumer.token}`,
|
|
86
|
-
type: "DI_INJECTION",
|
|
87
|
-
provider: { ...provider, token: consumer.token },
|
|
88
|
-
consumer: { file: consumer.file, symbol: consumer.symbol },
|
|
89
|
-
status: "ACTIVE",
|
|
90
|
-
});
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
return edges;
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
* Sub-Engine B: Cross-Repository / Event Bus Contract Engine
|
|
97
|
-
*/
|
|
98
|
-
function analyzeEventContracts(context) {
|
|
99
|
-
const producers = [];
|
|
100
|
-
const consumers = [];
|
|
101
|
-
const edges = [];
|
|
102
|
-
for (const module of context.modules.values()) {
|
|
103
|
-
if (!module.ast)
|
|
104
|
-
continue;
|
|
105
|
-
walkAst(module.ast, (rawNode) => {
|
|
106
|
-
const node = rawNode;
|
|
107
|
-
// Consumer: @EventPattern('topic'), @MessagePattern('topic')
|
|
108
|
-
if (node.type === 'ClassMethod' || node.type === 'MethodDefinition') {
|
|
109
|
-
const decorators = getDecorators(node);
|
|
110
|
-
const eventDecorator = decorators.find(d => ['EventPattern', 'MessagePattern', 'OnEvent'].includes(d.name));
|
|
111
|
-
if (eventDecorator && eventDecorator.args.length > 0) {
|
|
112
|
-
const topic = eventDecorator.args[0];
|
|
113
|
-
if (typeof topic === 'string') {
|
|
114
|
-
consumers.push({
|
|
115
|
-
file: module.id,
|
|
116
|
-
symbol: 'unknown',
|
|
117
|
-
handler: node.key.name,
|
|
118
|
-
topic
|
|
119
|
-
});
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
// Producer: emitter.emit('topic'), client.send('topic')
|
|
124
|
-
if (node.type === 'CallExpression' && node.callee.type === 'MemberExpression') {
|
|
125
|
-
if (['emit', 'send', 'publish'].includes(node.callee.property.name) && node.arguments.length > 0) {
|
|
126
|
-
const topic = getLiteralValue(node.arguments[0]);
|
|
127
|
-
if (topic) {
|
|
128
|
-
producers.push({ file: module.id, topic });
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
});
|
|
133
|
-
}
|
|
134
|
-
// Match Producers to Consumers
|
|
135
|
-
const producerTopics = new Set(producers.map(p => p.topic));
|
|
136
|
-
for (const consumer of consumers) {
|
|
137
|
-
const isActive = producerTopics.has(consumer.topic);
|
|
138
|
-
edges.push({
|
|
139
|
-
id: `event-${consumer.file}-${consumer.topic}`,
|
|
140
|
-
type: 'EVENT_CONTRACT',
|
|
141
|
-
topic: consumer.topic,
|
|
142
|
-
consumer: { file: consumer.file, symbol: consumer.symbol, handler: consumer.handler },
|
|
143
|
-
status: isActive ? 'ACTIVE' : 'DEAD_ORPHANED_CONSUMER'
|
|
144
|
-
});
|
|
145
|
-
}
|
|
146
|
-
return edges;
|
|
147
|
-
}
|
|
148
|
-
/**
|
|
149
|
-
* Sub-Engine C: Dynamic Specifier & Template Literal Engine
|
|
150
|
-
*/
|
|
151
|
-
async function analyzeDynamicSpecifiers(context) {
|
|
152
|
-
const results = [];
|
|
153
|
-
const allFiles = Array.from(context.modules.keys());
|
|
154
|
-
for (const module of context.modules.values()) {
|
|
155
|
-
for (const edge of module.edges) {
|
|
156
|
-
if (edge.kind === 'dynamic-pattern' && edge.dynamicPattern) {
|
|
157
|
-
const { prefix, suffix } = edge.dynamicPattern;
|
|
158
|
-
// Bounded glob search over mapped modules
|
|
159
|
-
const resolvedFiles = allFiles.filter(f => {
|
|
160
|
-
const relative = path.relative(path.dirname(module.id), f);
|
|
161
|
-
const normalizedRelative = relative.startsWith('.') ? relative : './' + relative;
|
|
162
|
-
return normalizedRelative.startsWith(prefix) && normalizedRelative.endsWith(suffix);
|
|
163
|
-
});
|
|
164
|
-
if (resolvedFiles.length > 0) {
|
|
165
|
-
results.push({
|
|
166
|
-
sourceFile: module.id,
|
|
167
|
-
template: edge.rawSpecifier,
|
|
168
|
-
resolvedFiles
|
|
169
|
-
});
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
return results;
|
|
175
|
-
}
|
|
176
|
-
/**
|
|
177
|
-
* Merges Layer 7 results into the AnalysisContext
|
|
178
|
-
*/
|
|
179
|
-
function applyLayer7Results(context, implicitEdges, resolvedDynamicImports, findings) {
|
|
180
|
-
// 1. Add implicit edges to reachability
|
|
181
|
-
for (const edge of implicitEdges) {
|
|
182
|
-
if (edge.status === 'ACTIVE') {
|
|
183
|
-
if (edge.type === 'DI_INJECTION' && edge.provider) {
|
|
184
|
-
if (context.reachable.has(edge.consumer.file)) {
|
|
185
|
-
context.reachable.add(edge.provider.file);
|
|
186
|
-
context.usedExports.add(`${edge.provider.file}:${edge.provider.symbol}`);
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
else if (edge.type === 'EVENT_CONTRACT') {
|
|
190
|
-
context.reachable.add(edge.consumer.file);
|
|
191
|
-
context.usedExports.add(`${edge.consumer.file}:${edge.consumer.handler}`);
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
else if (edge.status === 'DEAD_ORPHANED_CONSUMER') {
|
|
195
|
-
findings.push({
|
|
196
|
-
rule: "protected-contract",
|
|
197
|
-
severity: "warning",
|
|
198
|
-
confidence: "high",
|
|
199
|
-
message: `Orphaned Event Consumer: No producers found for topic '${edge.topic}'.`,
|
|
200
|
-
file: edge.consumer.file,
|
|
201
|
-
evidence: { topic: edge.topic, handler: edge.consumer.handler }
|
|
202
|
-
});
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
// 2. Resolve dynamic imports
|
|
206
|
-
for (const resolved of resolvedDynamicImports) {
|
|
207
|
-
if (context.reachable.has(resolved.sourceFile)) {
|
|
208
|
-
for (const file of resolved.resolvedFiles) {
|
|
209
|
-
context.reachable.add(file);
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
// --- Utilities ---
|
|
215
|
-
function getDecorators(node) {
|
|
216
|
-
if (!node)
|
|
217
|
-
return [];
|
|
218
|
-
const decorators = [
|
|
219
|
-
...(Array.isArray(node?.decorators) ? node.decorators : []),
|
|
220
|
-
...(Array.isArray(node?.modifiers)
|
|
221
|
-
? node.modifiers.filter((m) => m.type === 'Decorator' || m.kind === 'Decorator')
|
|
222
|
-
: []),
|
|
223
|
-
];
|
|
224
|
-
return decorators.map(d => {
|
|
225
|
-
const expr = d.expression || d;
|
|
226
|
-
if (expr.type === 'CallExpression') {
|
|
227
|
-
let name = 'unknown';
|
|
228
|
-
if (expr.callee.type === 'Identifier') {
|
|
229
|
-
name = expr.callee.name;
|
|
230
|
-
}
|
|
231
|
-
else if (expr.callee.type === 'MemberExpression' && expr.callee.property.type === 'Identifier') {
|
|
232
|
-
name = expr.callee.property.name;
|
|
233
|
-
}
|
|
234
|
-
return {
|
|
235
|
-
name,
|
|
236
|
-
args: expr.arguments.map((a) => getLiteralOrIdentifierValue(a))
|
|
237
|
-
};
|
|
238
|
-
}
|
|
239
|
-
return {
|
|
240
|
-
name: expr.name || (expr.type === 'Identifier' ? expr.name : 'unknown'),
|
|
241
|
-
args: []
|
|
242
|
-
};
|
|
243
|
-
});
|
|
244
|
-
}
|
|
245
|
-
function getLiteralOrIdentifierValue(node) {
|
|
246
|
-
if (!node)
|
|
247
|
-
return undefined;
|
|
248
|
-
if (node.type === 'Identifier')
|
|
249
|
-
return node.name;
|
|
250
|
-
return getLiteralValue(node);
|
|
251
|
-
}
|
|
252
|
-
function getLiteralValue(node) {
|
|
253
|
-
if (!node)
|
|
254
|
-
return undefined;
|
|
255
|
-
// ESTree Literal (Yuku)
|
|
256
|
-
if (node.type === 'Literal')
|
|
257
|
-
return node.value;
|
|
258
|
-
// Babel Compatibility
|
|
259
|
-
if (node.type === 'StringLiteral' || node.type === 'NumericLiteral' || node.type === 'BooleanLiteral')
|
|
260
|
-
return node.value;
|
|
261
|
-
if (node.type === 'TemplateLiteral') {
|
|
262
|
-
if (node.expressions.length === 0)
|
|
263
|
-
return node.quasis[0].value.cooked;
|
|
264
|
-
}
|
|
265
|
-
return undefined;
|
|
266
|
-
}
|
|
267
|
-
//# sourceMappingURL=layer7.js.map
|
package/dist/layer7.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"layer7.js","sourceRoot":"","sources":["../src/layer7.ts"],"names":[],"mappings":"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"}
|
package/dist/parser.d.ts
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import type { ModuleRecord, Position, Range } from "./types.js";
|
|
2
|
-
interface AstNode {
|
|
3
|
-
type?: string;
|
|
4
|
-
start?: number;
|
|
5
|
-
end?: number;
|
|
6
|
-
loc?: {
|
|
7
|
-
start?: Position;
|
|
8
|
-
end?: Position;
|
|
9
|
-
};
|
|
10
|
-
[key: string]: unknown;
|
|
11
|
-
}
|
|
12
|
-
export declare function parseModule(sourceText: string, file: string): ModuleRecord;
|
|
13
|
-
export declare function getNodeRange(node: unknown): Range | undefined;
|
|
14
|
-
export declare function getNodeType(node: unknown): string | undefined;
|
|
15
|
-
export declare function getNodeProperty(node: unknown, property: string): unknown;
|
|
16
|
-
export declare function getStringLiteral(node: unknown): string | undefined;
|
|
17
|
-
export declare function getIdentifier(node: unknown): string | undefined;
|
|
18
|
-
export declare function isAstNode(node: unknown): boolean;
|
|
19
|
-
export declare function walkAst(node: unknown, visitor: (node: AstNode, stack: AstNode[]) => void): void;
|
|
20
|
-
export type { AstNode };
|