@grafema/types 0.1.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +190 -0
- package/README.md +39 -0
- package/dist/edges.d.ts +77 -0
- package/dist/edges.d.ts.map +1 -0
- package/dist/edges.js +56 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +11 -0
- package/dist/nodes.d.ts +162 -0
- package/dist/nodes.d.ts.map +1 -0
- package/dist/nodes.js +84 -0
- package/dist/plugins.d.ts +131 -0
- package/dist/plugins.d.ts.map +1 -0
- package/dist/plugins.js +30 -0
- package/dist/rfdb.d.ts +183 -0
- package/dist/rfdb.d.ts.map +1 -0
- package/dist/rfdb.js +4 -0
- package/package.json +38 -0
- package/src/edges.ts +111 -0
- package/src/index.ts +15 -0
- package/src/nodes.ts +269 -0
- package/src/plugins.ts +187 -0
- package/src/rfdb.ts +279 -0
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Plugin Types - types for analysis plugins
|
|
3
|
+
*/
|
|
4
|
+
import type { NodeType, NodeRecord } from './nodes.js';
|
|
5
|
+
import type { EdgeType, EdgeRecord } from './edges.js';
|
|
6
|
+
export declare const PLUGIN_PHASE: {
|
|
7
|
+
readonly DISCOVERY: "DISCOVERY";
|
|
8
|
+
readonly INDEXING: "INDEXING";
|
|
9
|
+
readonly ANALYSIS: "ANALYSIS";
|
|
10
|
+
readonly ENRICHMENT: "ENRICHMENT";
|
|
11
|
+
readonly VALIDATION: "VALIDATION";
|
|
12
|
+
};
|
|
13
|
+
export type PluginPhase = typeof PLUGIN_PHASE[keyof typeof PLUGIN_PHASE];
|
|
14
|
+
export interface PluginMetadata {
|
|
15
|
+
name: string;
|
|
16
|
+
phase: PluginPhase;
|
|
17
|
+
priority?: number;
|
|
18
|
+
creates?: {
|
|
19
|
+
nodes?: NodeType[];
|
|
20
|
+
edges?: EdgeType[];
|
|
21
|
+
};
|
|
22
|
+
dependencies?: string[];
|
|
23
|
+
}
|
|
24
|
+
export interface PluginContext {
|
|
25
|
+
manifest?: unknown;
|
|
26
|
+
graph: GraphBackend;
|
|
27
|
+
config?: OrchestratorConfig;
|
|
28
|
+
phase?: PluginPhase;
|
|
29
|
+
projectPath?: string;
|
|
30
|
+
onProgress?: (info: Record<string, unknown>) => void;
|
|
31
|
+
forceAnalysis?: boolean;
|
|
32
|
+
workerCount?: number;
|
|
33
|
+
}
|
|
34
|
+
export interface PluginResult {
|
|
35
|
+
success: boolean;
|
|
36
|
+
created: {
|
|
37
|
+
nodes: number;
|
|
38
|
+
edges: number;
|
|
39
|
+
};
|
|
40
|
+
errors: Error[];
|
|
41
|
+
warnings: string[];
|
|
42
|
+
metadata?: Record<string, unknown>;
|
|
43
|
+
}
|
|
44
|
+
export interface Manifest {
|
|
45
|
+
services: ManifestService[];
|
|
46
|
+
entrypoints: ManifestEntrypoint[];
|
|
47
|
+
projectPath: string;
|
|
48
|
+
}
|
|
49
|
+
export interface ManifestService {
|
|
50
|
+
id: string;
|
|
51
|
+
name: string;
|
|
52
|
+
path: string;
|
|
53
|
+
metadata?: Record<string, unknown>;
|
|
54
|
+
}
|
|
55
|
+
export interface ManifestEntrypoint {
|
|
56
|
+
id: string;
|
|
57
|
+
name: string;
|
|
58
|
+
file: string;
|
|
59
|
+
type: string;
|
|
60
|
+
trigger?: string;
|
|
61
|
+
}
|
|
62
|
+
export interface OrchestratorConfig {
|
|
63
|
+
projectPath: string;
|
|
64
|
+
plugins?: string[];
|
|
65
|
+
phases?: PluginPhase[];
|
|
66
|
+
parallel?: boolean;
|
|
67
|
+
maxWorkers?: number;
|
|
68
|
+
verbose?: boolean;
|
|
69
|
+
}
|
|
70
|
+
export interface InputNode {
|
|
71
|
+
id: string;
|
|
72
|
+
type?: string;
|
|
73
|
+
nodeType?: string;
|
|
74
|
+
name?: string;
|
|
75
|
+
file?: string;
|
|
76
|
+
line?: number;
|
|
77
|
+
[key: string]: unknown;
|
|
78
|
+
}
|
|
79
|
+
export interface InputEdge {
|
|
80
|
+
src: string;
|
|
81
|
+
dst: string;
|
|
82
|
+
type: string;
|
|
83
|
+
[key: string]: unknown;
|
|
84
|
+
}
|
|
85
|
+
export interface GraphBackend {
|
|
86
|
+
addNode(node: InputNode): Promise<void> | void;
|
|
87
|
+
addEdge(edge: InputEdge): Promise<void> | void;
|
|
88
|
+
addNodes(nodes: InputNode[]): Promise<void> | void;
|
|
89
|
+
addEdges(edges: InputEdge[]): Promise<void> | void;
|
|
90
|
+
getNode(id: string): Promise<NodeRecord | null>;
|
|
91
|
+
queryNodes(filter: NodeFilter): AsyncIterable<NodeRecord> | AsyncGenerator<NodeRecord>;
|
|
92
|
+
getAllNodes(filter?: NodeFilter): Promise<NodeRecord[]>;
|
|
93
|
+
getOutgoingEdges(nodeId: string, edgeTypes?: EdgeType[] | null): Promise<EdgeRecord[]>;
|
|
94
|
+
getIncomingEdges(nodeId: string, edgeTypes?: EdgeType[] | null): Promise<EdgeRecord[]>;
|
|
95
|
+
nodeCount(): Promise<number>;
|
|
96
|
+
edgeCount(): Promise<number>;
|
|
97
|
+
getAllEdges?(): Promise<EdgeRecord[]>;
|
|
98
|
+
countNodesByType(types?: string[] | null): Promise<Record<string, number>>;
|
|
99
|
+
countEdgesByType(types?: string[] | null): Promise<Record<string, number>>;
|
|
100
|
+
findByType?(type: string): Promise<string[]>;
|
|
101
|
+
findByAttr?(query: Record<string, unknown>): Promise<string[]>;
|
|
102
|
+
runDatalogQuery?(query: string): Promise<unknown[]>;
|
|
103
|
+
checkGuarantee?(query: string): unknown[] | Promise<unknown[]>;
|
|
104
|
+
deleteNode?(id: string): Promise<void>;
|
|
105
|
+
deleteEdge?(src: string, dst: string, type: string): Promise<void>;
|
|
106
|
+
flush?(): Promise<void>;
|
|
107
|
+
close?(): Promise<void>;
|
|
108
|
+
}
|
|
109
|
+
export interface NodeFilter {
|
|
110
|
+
type?: NodeType;
|
|
111
|
+
nodeType?: NodeType;
|
|
112
|
+
name?: string;
|
|
113
|
+
file?: string;
|
|
114
|
+
[key: string]: unknown;
|
|
115
|
+
}
|
|
116
|
+
export interface IPlugin {
|
|
117
|
+
config: Record<string, unknown>;
|
|
118
|
+
metadata: PluginMetadata;
|
|
119
|
+
initialize?(context: PluginContext): Promise<void>;
|
|
120
|
+
execute(context: PluginContext): Promise<PluginResult>;
|
|
121
|
+
cleanup?(): Promise<void>;
|
|
122
|
+
}
|
|
123
|
+
export declare function createSuccessResult(created?: {
|
|
124
|
+
nodes: number;
|
|
125
|
+
edges: number;
|
|
126
|
+
}, metadata?: Record<string, unknown>): PluginResult;
|
|
127
|
+
export declare function createErrorResult(error: Error, created?: {
|
|
128
|
+
nodes: number;
|
|
129
|
+
edges: number;
|
|
130
|
+
}): PluginResult;
|
|
131
|
+
//# sourceMappingURL=plugins.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugins.d.ts","sourceRoot":"","sources":["../src/plugins.ts"],"names":[],"mappings":"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"}
|
package/dist/plugins.js
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Plugin Types - types for analysis plugins
|
|
3
|
+
*/
|
|
4
|
+
// === PLUGIN PHASES ===
|
|
5
|
+
export const PLUGIN_PHASE = {
|
|
6
|
+
DISCOVERY: 'DISCOVERY',
|
|
7
|
+
INDEXING: 'INDEXING',
|
|
8
|
+
ANALYSIS: 'ANALYSIS',
|
|
9
|
+
ENRICHMENT: 'ENRICHMENT',
|
|
10
|
+
VALIDATION: 'VALIDATION',
|
|
11
|
+
};
|
|
12
|
+
// === HELPER FUNCTIONS ===
|
|
13
|
+
export function createSuccessResult(created = { nodes: 0, edges: 0 }, metadata = {}) {
|
|
14
|
+
return {
|
|
15
|
+
success: true,
|
|
16
|
+
created,
|
|
17
|
+
errors: [],
|
|
18
|
+
warnings: [],
|
|
19
|
+
metadata,
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
export function createErrorResult(error, created = { nodes: 0, edges: 0 }) {
|
|
23
|
+
return {
|
|
24
|
+
success: false,
|
|
25
|
+
created,
|
|
26
|
+
errors: [error],
|
|
27
|
+
warnings: [],
|
|
28
|
+
metadata: {},
|
|
29
|
+
};
|
|
30
|
+
}
|
package/dist/rfdb.d.ts
ADDED
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RFDB Protocol Types - types for RFDB client-server protocol
|
|
3
|
+
*/
|
|
4
|
+
import type { NodeType } from './nodes.js';
|
|
5
|
+
import type { EdgeType } from './edges.js';
|
|
6
|
+
export type RFDBCommand = 'addNodes' | 'addEdges' | 'deleteNode' | 'deleteEdge' | 'clear' | 'updateNodeVersion' | 'getNode' | 'nodeExists' | 'findByType' | 'findByAttr' | 'queryNodes' | 'getAllNodes' | 'getAllEdges' | 'isEndpoint' | 'getNodeIdentifier' | 'neighbors' | 'bfs' | 'dfs' | 'getOutgoingEdges' | 'getIncomingEdges' | 'nodeCount' | 'edgeCount' | 'countNodesByType' | 'countEdgesByType' | 'flush' | 'compact' | 'ping' | 'shutdown' | 'datalogLoadRules' | 'datalogClearRules' | 'datalogQuery' | 'checkGuarantee';
|
|
7
|
+
export interface WireNode {
|
|
8
|
+
id: string;
|
|
9
|
+
nodeType: NodeType;
|
|
10
|
+
name: string;
|
|
11
|
+
file: string;
|
|
12
|
+
exported: boolean;
|
|
13
|
+
metadata: string;
|
|
14
|
+
}
|
|
15
|
+
export interface WireEdge {
|
|
16
|
+
src: string;
|
|
17
|
+
dst: string;
|
|
18
|
+
edgeType: EdgeType;
|
|
19
|
+
metadata: string;
|
|
20
|
+
}
|
|
21
|
+
export interface RFDBRequest {
|
|
22
|
+
cmd: RFDBCommand;
|
|
23
|
+
[key: string]: unknown;
|
|
24
|
+
}
|
|
25
|
+
export interface AddNodesRequest extends RFDBRequest {
|
|
26
|
+
cmd: 'addNodes';
|
|
27
|
+
nodes: WireNode[];
|
|
28
|
+
}
|
|
29
|
+
export interface AddEdgesRequest extends RFDBRequest {
|
|
30
|
+
cmd: 'addEdges';
|
|
31
|
+
edges: WireEdge[];
|
|
32
|
+
skipValidation?: boolean;
|
|
33
|
+
}
|
|
34
|
+
export interface DeleteNodeRequest extends RFDBRequest {
|
|
35
|
+
cmd: 'deleteNode';
|
|
36
|
+
id: string;
|
|
37
|
+
}
|
|
38
|
+
export interface DeleteEdgeRequest extends RFDBRequest {
|
|
39
|
+
cmd: 'deleteEdge';
|
|
40
|
+
src: string;
|
|
41
|
+
dst: string;
|
|
42
|
+
edgeType: EdgeType;
|
|
43
|
+
}
|
|
44
|
+
export interface GetNodeRequest extends RFDBRequest {
|
|
45
|
+
cmd: 'getNode';
|
|
46
|
+
id: string;
|
|
47
|
+
}
|
|
48
|
+
export interface NodeExistsRequest extends RFDBRequest {
|
|
49
|
+
cmd: 'nodeExists';
|
|
50
|
+
id: string;
|
|
51
|
+
}
|
|
52
|
+
export interface FindByTypeRequest extends RFDBRequest {
|
|
53
|
+
cmd: 'findByType';
|
|
54
|
+
nodeType: NodeType;
|
|
55
|
+
}
|
|
56
|
+
export interface FindByAttrRequest extends RFDBRequest {
|
|
57
|
+
cmd: 'findByAttr';
|
|
58
|
+
query: Record<string, unknown>;
|
|
59
|
+
}
|
|
60
|
+
export interface NeighborsRequest extends RFDBRequest {
|
|
61
|
+
cmd: 'neighbors';
|
|
62
|
+
id: string;
|
|
63
|
+
edgeTypes?: EdgeType[];
|
|
64
|
+
}
|
|
65
|
+
export interface BfsRequest extends RFDBRequest {
|
|
66
|
+
cmd: 'bfs';
|
|
67
|
+
startIds: string[];
|
|
68
|
+
maxDepth: number;
|
|
69
|
+
edgeTypes?: EdgeType[];
|
|
70
|
+
}
|
|
71
|
+
export interface GetOutgoingEdgesRequest extends RFDBRequest {
|
|
72
|
+
cmd: 'getOutgoingEdges';
|
|
73
|
+
id: string;
|
|
74
|
+
edgeTypes?: EdgeType[] | null;
|
|
75
|
+
}
|
|
76
|
+
export interface GetIncomingEdgesRequest extends RFDBRequest {
|
|
77
|
+
cmd: 'getIncomingEdges';
|
|
78
|
+
id: string;
|
|
79
|
+
edgeTypes?: EdgeType[] | null;
|
|
80
|
+
}
|
|
81
|
+
export interface CountNodesByTypeRequest extends RFDBRequest {
|
|
82
|
+
cmd: 'countNodesByType';
|
|
83
|
+
types?: NodeType[] | null;
|
|
84
|
+
}
|
|
85
|
+
export interface CountEdgesByTypeRequest extends RFDBRequest {
|
|
86
|
+
cmd: 'countEdgesByType';
|
|
87
|
+
edgeTypes?: EdgeType[] | null;
|
|
88
|
+
}
|
|
89
|
+
export interface RFDBResponse {
|
|
90
|
+
error?: string;
|
|
91
|
+
[key: string]: unknown;
|
|
92
|
+
}
|
|
93
|
+
export interface AddNodesResponse extends RFDBResponse {
|
|
94
|
+
count?: number;
|
|
95
|
+
}
|
|
96
|
+
export interface AddEdgesResponse extends RFDBResponse {
|
|
97
|
+
count?: number;
|
|
98
|
+
}
|
|
99
|
+
export interface GetNodeResponse extends RFDBResponse {
|
|
100
|
+
node?: WireNode | null;
|
|
101
|
+
}
|
|
102
|
+
export interface NodeExistsResponse extends RFDBResponse {
|
|
103
|
+
value: boolean;
|
|
104
|
+
}
|
|
105
|
+
export interface FindByTypeResponse extends RFDBResponse {
|
|
106
|
+
ids: string[];
|
|
107
|
+
}
|
|
108
|
+
export interface FindByAttrResponse extends RFDBResponse {
|
|
109
|
+
ids: string[];
|
|
110
|
+
}
|
|
111
|
+
export interface NeighborsResponse extends RFDBResponse {
|
|
112
|
+
ids: string[];
|
|
113
|
+
}
|
|
114
|
+
export interface BfsResponse extends RFDBResponse {
|
|
115
|
+
ids: string[];
|
|
116
|
+
}
|
|
117
|
+
export interface GetEdgesResponse extends RFDBResponse {
|
|
118
|
+
edges: WireEdge[];
|
|
119
|
+
}
|
|
120
|
+
export interface CountResponse extends RFDBResponse {
|
|
121
|
+
count: number;
|
|
122
|
+
}
|
|
123
|
+
export interface CountsByTypeResponse extends RFDBResponse {
|
|
124
|
+
counts: Record<string, number>;
|
|
125
|
+
}
|
|
126
|
+
export interface PingResponse extends RFDBResponse {
|
|
127
|
+
pong: boolean;
|
|
128
|
+
version: string;
|
|
129
|
+
}
|
|
130
|
+
export interface AttrQuery {
|
|
131
|
+
nodeType?: string;
|
|
132
|
+
type?: string;
|
|
133
|
+
kind?: string;
|
|
134
|
+
name?: string;
|
|
135
|
+
file?: string;
|
|
136
|
+
exported?: boolean;
|
|
137
|
+
version?: string;
|
|
138
|
+
}
|
|
139
|
+
export interface DatalogBinding {
|
|
140
|
+
[key: string]: string;
|
|
141
|
+
}
|
|
142
|
+
export interface DatalogResult {
|
|
143
|
+
bindings: DatalogBinding;
|
|
144
|
+
}
|
|
145
|
+
export interface IRFDBClient {
|
|
146
|
+
readonly socketPath: string;
|
|
147
|
+
readonly connected: boolean;
|
|
148
|
+
connect(): Promise<void>;
|
|
149
|
+
close(): Promise<void>;
|
|
150
|
+
ping(): Promise<string | false>;
|
|
151
|
+
shutdown(): Promise<void>;
|
|
152
|
+
addNodes(nodes: WireNode[]): Promise<AddNodesResponse>;
|
|
153
|
+
addEdges(edges: WireEdge[], skipValidation?: boolean): Promise<AddEdgesResponse>;
|
|
154
|
+
deleteNode(id: string): Promise<RFDBResponse>;
|
|
155
|
+
deleteEdge(src: string, dst: string, edgeType: EdgeType): Promise<RFDBResponse>;
|
|
156
|
+
clear(): Promise<RFDBResponse>;
|
|
157
|
+
updateNodeVersion(id: string, version: string): Promise<RFDBResponse>;
|
|
158
|
+
getNode(id: string): Promise<WireNode | null>;
|
|
159
|
+
nodeExists(id: string): Promise<boolean>;
|
|
160
|
+
findByType(nodeType: NodeType): Promise<string[]>;
|
|
161
|
+
findByAttr(query: Record<string, unknown>): Promise<string[]>;
|
|
162
|
+
queryNodes(query: AttrQuery): AsyncGenerator<WireNode, void, unknown>;
|
|
163
|
+
getAllNodes(query?: AttrQuery): Promise<WireNode[]>;
|
|
164
|
+
getAllEdges(): Promise<WireEdge[]>;
|
|
165
|
+
isEndpoint(id: string): Promise<boolean>;
|
|
166
|
+
getNodeIdentifier(id: string): Promise<string | null>;
|
|
167
|
+
neighbors(id: string, edgeTypes?: EdgeType[]): Promise<string[]>;
|
|
168
|
+
bfs(startIds: string[], maxDepth: number, edgeTypes?: EdgeType[]): Promise<string[]>;
|
|
169
|
+
dfs(startIds: string[], maxDepth: number, edgeTypes?: EdgeType[]): Promise<string[]>;
|
|
170
|
+
getOutgoingEdges(id: string, edgeTypes?: EdgeType[] | null): Promise<WireEdge[]>;
|
|
171
|
+
getIncomingEdges(id: string, edgeTypes?: EdgeType[] | null): Promise<WireEdge[]>;
|
|
172
|
+
nodeCount(): Promise<number>;
|
|
173
|
+
edgeCount(): Promise<number>;
|
|
174
|
+
countNodesByType(types?: NodeType[] | null): Promise<Record<string, number>>;
|
|
175
|
+
countEdgesByType(edgeTypes?: EdgeType[] | null): Promise<Record<string, number>>;
|
|
176
|
+
flush(): Promise<RFDBResponse>;
|
|
177
|
+
compact(): Promise<RFDBResponse>;
|
|
178
|
+
datalogLoadRules(source: string): Promise<number>;
|
|
179
|
+
datalogClearRules(): Promise<RFDBResponse>;
|
|
180
|
+
datalogQuery(query: string): Promise<DatalogResult[]>;
|
|
181
|
+
checkGuarantee(ruleSource: string): Promise<DatalogResult[]>;
|
|
182
|
+
}
|
|
183
|
+
//# sourceMappingURL=rfdb.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rfdb.d.ts","sourceRoot":"","sources":["../src/rfdb.ts"],"names":[],"mappings":"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"}
|
package/dist/rfdb.js
ADDED
package/package.json
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@grafema/types",
|
|
3
|
+
"version": "0.1.0-alpha.1",
|
|
4
|
+
"description": "Type definitions for Grafema code analysis toolkit",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.js"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"dist",
|
|
16
|
+
"src"
|
|
17
|
+
],
|
|
18
|
+
"scripts": {
|
|
19
|
+
"build": "tsc",
|
|
20
|
+
"clean": "rm -rf dist"
|
|
21
|
+
},
|
|
22
|
+
"keywords": [
|
|
23
|
+
"grafema",
|
|
24
|
+
"types",
|
|
25
|
+
"code-analysis",
|
|
26
|
+
"typescript"
|
|
27
|
+
],
|
|
28
|
+
"license": "Apache-2.0",
|
|
29
|
+
"author": "Vadim Reshetnikov",
|
|
30
|
+
"repository": {
|
|
31
|
+
"type": "git",
|
|
32
|
+
"url": "https://github.com/Disentinel/grafema.git",
|
|
33
|
+
"directory": "packages/types"
|
|
34
|
+
},
|
|
35
|
+
"devDependencies": {
|
|
36
|
+
"typescript": "^5.9.3"
|
|
37
|
+
}
|
|
38
|
+
}
|
package/src/edges.ts
ADDED
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Edge Types - graph edge type definitions
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
// === EDGE TYPES ===
|
|
6
|
+
export const EDGE_TYPE = {
|
|
7
|
+
// Structure
|
|
8
|
+
CONTAINS: 'CONTAINS',
|
|
9
|
+
DEPENDS_ON: 'DEPENDS_ON',
|
|
10
|
+
HAS_SCOPE: 'HAS_SCOPE',
|
|
11
|
+
|
|
12
|
+
// Calls
|
|
13
|
+
CALLS: 'CALLS',
|
|
14
|
+
HAS_CALLBACK: 'HAS_CALLBACK',
|
|
15
|
+
PASSES_ARGUMENT: 'PASSES_ARGUMENT',
|
|
16
|
+
RECEIVES_ARGUMENT: 'RECEIVES_ARGUMENT',
|
|
17
|
+
RETURNS: 'RETURNS',
|
|
18
|
+
|
|
19
|
+
// Inheritance
|
|
20
|
+
EXTENDS: 'EXTENDS',
|
|
21
|
+
IMPLEMENTS: 'IMPLEMENTS',
|
|
22
|
+
INSTANCE_OF: 'INSTANCE_OF',
|
|
23
|
+
|
|
24
|
+
// Imports/Exports
|
|
25
|
+
IMPORTS: 'IMPORTS',
|
|
26
|
+
EXPORTS: 'EXPORTS',
|
|
27
|
+
IMPORTS_FROM: 'IMPORTS_FROM',
|
|
28
|
+
EXPORTS_TO: 'EXPORTS_TO',
|
|
29
|
+
|
|
30
|
+
// Variables/Data flow
|
|
31
|
+
DEFINES: 'DEFINES',
|
|
32
|
+
USES: 'USES',
|
|
33
|
+
DECLARES: 'DECLARES',
|
|
34
|
+
MODIFIES: 'MODIFIES',
|
|
35
|
+
CAPTURES: 'CAPTURES',
|
|
36
|
+
ASSIGNED_FROM: 'ASSIGNED_FROM',
|
|
37
|
+
READS_FROM: 'READS_FROM',
|
|
38
|
+
WRITES_TO: 'WRITES_TO',
|
|
39
|
+
|
|
40
|
+
// HTTP/Routing
|
|
41
|
+
ROUTES_TO: 'ROUTES_TO',
|
|
42
|
+
HANDLED_BY: 'HANDLED_BY',
|
|
43
|
+
MAKES_REQUEST: 'MAKES_REQUEST',
|
|
44
|
+
MOUNTS: 'MOUNTS',
|
|
45
|
+
EXPOSES: 'EXPOSES',
|
|
46
|
+
|
|
47
|
+
// Events/Sockets
|
|
48
|
+
LISTENS_TO: 'LISTENS_TO',
|
|
49
|
+
EMITS_EVENT: 'EMITS_EVENT',
|
|
50
|
+
JOINS_ROOM: 'JOINS_ROOM',
|
|
51
|
+
|
|
52
|
+
// External
|
|
53
|
+
CALLS_API: 'CALLS_API',
|
|
54
|
+
INTERACTS_WITH: 'INTERACTS_WITH',
|
|
55
|
+
|
|
56
|
+
// Views
|
|
57
|
+
REGISTERS_VIEW: 'REGISTERS_VIEW',
|
|
58
|
+
|
|
59
|
+
// Errors
|
|
60
|
+
THROWS: 'THROWS',
|
|
61
|
+
|
|
62
|
+
// Guarantees/Invariants
|
|
63
|
+
GOVERNS: 'GOVERNS',
|
|
64
|
+
VIOLATES: 'VIOLATES',
|
|
65
|
+
|
|
66
|
+
// Unknown/fallback
|
|
67
|
+
UNKNOWN: 'UNKNOWN',
|
|
68
|
+
} as const;
|
|
69
|
+
|
|
70
|
+
export type EdgeType = typeof EDGE_TYPE[keyof typeof EDGE_TYPE] | string;
|
|
71
|
+
|
|
72
|
+
// === EDGE RECORD ===
|
|
73
|
+
export interface EdgeRecord {
|
|
74
|
+
src: string;
|
|
75
|
+
dst: string;
|
|
76
|
+
type: EdgeType;
|
|
77
|
+
index?: number;
|
|
78
|
+
metadata?: Record<string, unknown>;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
// Semantic edge types for better type inference
|
|
82
|
+
export interface ContainsEdge extends EdgeRecord {
|
|
83
|
+
type: 'CONTAINS';
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
export interface CallsEdge extends EdgeRecord {
|
|
87
|
+
type: 'CALLS';
|
|
88
|
+
argumentCount?: number;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
export interface ImportsEdge extends EdgeRecord {
|
|
92
|
+
type: 'IMPORTS';
|
|
93
|
+
specifier?: string;
|
|
94
|
+
isDefault?: boolean;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
export interface ExportsEdge extends EdgeRecord {
|
|
98
|
+
type: 'EXPORTS';
|
|
99
|
+
exportedName?: string;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
export interface DataFlowEdge extends EdgeRecord {
|
|
103
|
+
type: 'ASSIGNED_FROM' | 'READS_FROM' | 'WRITES_TO' | 'PASSES_ARGUMENT';
|
|
104
|
+
dataType?: string;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
export interface RouteEdge extends EdgeRecord {
|
|
108
|
+
type: 'ROUTES_TO' | 'HANDLED_BY';
|
|
109
|
+
method?: string;
|
|
110
|
+
path?: string;
|
|
111
|
+
}
|
package/src/index.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @grafema/types - Type definitions for GraphDD code analysis toolkit
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
// Node types
|
|
6
|
+
export * from './nodes.js';
|
|
7
|
+
|
|
8
|
+
// Edge types
|
|
9
|
+
export * from './edges.js';
|
|
10
|
+
|
|
11
|
+
// Plugin types
|
|
12
|
+
export * from './plugins.js';
|
|
13
|
+
|
|
14
|
+
// RFDB protocol types
|
|
15
|
+
export * from './rfdb.js';
|