@grafema/types 0.2.1-beta → 0.2.5-beta
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/dist/branded.js +1 -0
- package/dist/branded.js.map +1 -0
- package/dist/edges.d.ts +4 -0
- package/dist/edges.d.ts.map +1 -1
- package/dist/edges.js +6 -0
- package/dist/edges.js.map +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -0
- package/dist/nodes.d.ts +21 -3
- package/dist/nodes.d.ts.map +1 -1
- package/dist/nodes.js +4 -0
- package/dist/nodes.js.map +1 -0
- package/dist/plugins.d.ts +15 -1
- package/dist/plugins.d.ts.map +1 -1
- package/dist/plugins.js +1 -0
- package/dist/plugins.js.map +1 -0
- package/dist/rfdb.d.ts +51 -1
- package/dist/rfdb.d.ts.map +1 -1
- package/dist/rfdb.js +1 -0
- package/dist/rfdb.js.map +1 -0
- package/package.json +1 -1
- package/src/edges.ts +6 -0
- package/src/nodes.ts +28 -2
- package/src/plugins.ts +18 -1
- package/src/rfdb.ts +73 -1
package/dist/branded.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"branded.js","sourceRoot":"","sources":["../src/branded.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAsCH;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAC3B,IAAwB;IAExB,iEAAiE;IACjE,kDAAkD;IAClD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAA2B,IAAO;IACzD,OAAO,IAAsB,CAAC;AAChC,CAAC"}
|
package/dist/edges.d.ts
CHANGED
|
@@ -21,6 +21,8 @@ export declare const EDGE_TYPE: {
|
|
|
21
21
|
readonly PASSES_ARGUMENT: "PASSES_ARGUMENT";
|
|
22
22
|
readonly RECEIVES_ARGUMENT: "RECEIVES_ARGUMENT";
|
|
23
23
|
readonly RETURNS: "RETURNS";
|
|
24
|
+
readonly YIELDS: "YIELDS";
|
|
25
|
+
readonly DELEGATES_TO: "DELEGATES_TO";
|
|
24
26
|
readonly EXTENDS: "EXTENDS";
|
|
25
27
|
readonly IMPLEMENTS: "IMPLEMENTS";
|
|
26
28
|
readonly INSTANCE_OF: "INSTANCE_OF";
|
|
@@ -54,6 +56,8 @@ export declare const EDGE_TYPE: {
|
|
|
54
56
|
readonly HTTP_RECEIVES: "HTTP_RECEIVES";
|
|
55
57
|
readonly REGISTERS_VIEW: "REGISTERS_VIEW";
|
|
56
58
|
readonly THROWS: "THROWS";
|
|
59
|
+
readonly REJECTS: "REJECTS";
|
|
60
|
+
readonly CATCHES_FROM: "CATCHES_FROM";
|
|
57
61
|
readonly GOVERNS: "GOVERNS";
|
|
58
62
|
readonly VIOLATES: "VIOLATES";
|
|
59
63
|
readonly AFFECTS: "AFFECTS";
|
package/dist/edges.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edges.d.ts","sourceRoot":"","sources":["../src/edges.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,eAAO,MAAM,SAAS
|
|
1
|
+
{"version":3,"file":"edges.d.ts","sourceRoot":"","sources":["../src/edges.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkGZ,CAAC;AAEX,MAAM,MAAM,QAAQ,GAAG,OAAO,SAAS,CAAC,MAAM,OAAO,SAAS,CAAC,GAAG,MAAM,CAAC;AAGzE,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAGD,MAAM,WAAW,YAAa,SAAQ,UAAU;IAC9C,IAAI,EAAE,UAAU,CAAC;CAClB;AAED,MAAM,WAAW,SAAU,SAAQ,UAAU;IAC3C,IAAI,EAAE,OAAO,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,WAAY,SAAQ,UAAU;IAC7C,IAAI,EAAE,SAAS,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,WAAY,SAAQ,UAAU;IAC7C,IAAI,EAAE,SAAS,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,YAAa,SAAQ,UAAU;IAC9C,IAAI,EAAE,eAAe,GAAG,YAAY,GAAG,WAAW,GAAG,iBAAiB,GAAG,cAAc,GAAG,YAAY,CAAC;IACvG,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,aAAc,SAAQ,UAAU;IAC/C,IAAI,EAAE,YAAY,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;IAC3D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,mBAAoB,SAAQ,UAAU;IACrD,IAAI,EAAE,cAAc,GAAG,aAAa,CAAC;IACrC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,SAAU,SAAQ,UAAU;IAC3C,IAAI,EAAE,WAAW,GAAG,YAAY,CAAC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;GAIG;AACH,MAAM,WAAW,gBAAiB,SAAQ,UAAU;IAClD,IAAI,EAAE,eAAe,CAAC;IACtB,QAAQ,CAAC,EAAE;QACT,0EAA0E;QAC1E,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAAC;KAC7B,CAAC;CACH"}
|
package/dist/edges.js
CHANGED
|
@@ -28,6 +28,8 @@ export const EDGE_TYPE = {
|
|
|
28
28
|
PASSES_ARGUMENT: 'PASSES_ARGUMENT',
|
|
29
29
|
RECEIVES_ARGUMENT: 'RECEIVES_ARGUMENT',
|
|
30
30
|
RETURNS: 'RETURNS',
|
|
31
|
+
YIELDS: 'YIELDS',
|
|
32
|
+
DELEGATES_TO: 'DELEGATES_TO',
|
|
31
33
|
// Inheritance
|
|
32
34
|
EXTENDS: 'EXTENDS',
|
|
33
35
|
IMPLEMENTS: 'IMPLEMENTS',
|
|
@@ -70,6 +72,9 @@ export const EDGE_TYPE = {
|
|
|
70
72
|
REGISTERS_VIEW: 'REGISTERS_VIEW',
|
|
71
73
|
// Errors
|
|
72
74
|
THROWS: 'THROWS',
|
|
75
|
+
// REG-311: Async error flow
|
|
76
|
+
REJECTS: 'REJECTS', // FUNCTION -> CLASS (error class it can reject)
|
|
77
|
+
CATCHES_FROM: 'CATCHES_FROM', // CATCH_BLOCK -> error sources in TRY_BLOCK
|
|
73
78
|
// Guarantees/Invariants
|
|
74
79
|
GOVERNS: 'GOVERNS',
|
|
75
80
|
VIOLATES: 'VIOLATES',
|
|
@@ -78,3 +83,4 @@ export const EDGE_TYPE = {
|
|
|
78
83
|
// Unknown/fallback
|
|
79
84
|
UNKNOWN: 'UNKNOWN',
|
|
80
85
|
};
|
|
86
|
+
//# sourceMappingURL=edges.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edges.js","sourceRoot":"","sources":["../src/edges.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,qBAAqB;AACrB,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,YAAY;IACZ,QAAQ,EAAE,UAAU;IACpB,UAAU,EAAE,YAAY;IACxB,SAAS,EAAE,WAAW;IAEtB,YAAY;IACZ,aAAa,EAAE,eAAe;IAC9B,QAAQ,EAAE,UAAU;IACpB,WAAW,EAAE,aAAa;IAE1B,aAAa;IACb,QAAQ,EAAE,UAAU,EAAY,qBAAqB;IACrD,aAAa,EAAE,eAAe,EAAE,8CAA8C;IAC9E,QAAQ,EAAE,UAAU,EAAY,0CAA0C;IAC1E,UAAU,EAAE,YAAY,EAAQ,wCAAwC;IAExE,qBAAqB;IACrB,cAAc,EAAE,gBAAgB,EAAE,uBAAuB;IACzD,aAAa,EAAE,eAAe,EAAI,uBAAuB;IAEzD,0BAA0B;IAC1B,SAAS,EAAE,WAAW,EAAM,2BAA2B;IACvD,WAAW,EAAE,aAAa,EAAE,6BAA6B;IAEzD,QAAQ;IACR,KAAK,EAAE,OAAO;IACd,YAAY,EAAE,cAAc;IAC5B,eAAe,EAAE,iBAAiB;IAClC,iBAAiB,EAAE,mBAAmB;IACtC,OAAO,EAAE,SAAS;IAClB,MAAM,EAAE,QAAQ;IAChB,YAAY,EAAE,cAAc;IAE5B,cAAc;IACd,OAAO,EAAE,SAAS;IAClB,UAAU,EAAE,YAAY;IACxB,WAAW,EAAE,aAAa;IAE1B,kBAAkB;IAClB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,YAAY,EAAE,cAAc;IAC5B,UAAU,EAAE,YAAY;IAExB,sBAAsB;IACtB,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,MAAM;IACZ,QAAQ,EAAE,UAAU;IACpB,QAAQ,EAAE,UAAU;IACpB,QAAQ,EAAE,UAAU;IACpB,aAAa,EAAE,eAAe;IAC9B,UAAU,EAAE,YAAY;IACxB,SAAS,EAAE,WAAW;IACtB,YAAY,EAAE,cAAc;IAC5B,UAAU,EAAE,YAAY;IAExB,yBAAyB;IACzB,YAAY,EAAE,cAAc,EAAI,mCAAmC;IACnE,WAAW,EAAE,aAAa,EAAM,2BAA2B;IAE3D,eAAe;IACf,SAAS,EAAE,WAAW;IACtB,UAAU,EAAE,YAAY;IACxB,aAAa,EAAE,eAAe;IAC9B,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,SAAS;IAClB,aAAa,EAAE,eAAe;IAE9B,iBAAiB;IACjB,UAAU,EAAE,YAAY;IACxB,WAAW,EAAE,aAAa;IAC1B,UAAU,EAAE,YAAY;IAExB,WAAW;IACX,SAAS,EAAE,WAAW;IACtB,cAAc,EAAE,gBAAgB;IAChC,aAAa,EAAE,eAAe;IAE9B,QAAQ;IACR,cAAc,EAAE,gBAAgB;IAEhC,SAAS;IACT,MAAM,EAAE,QAAQ;IAEhB,4BAA4B;IAC5B,OAAO,EAAE,SAAS,EAAY,gDAAgD;IAC9E,YAAY,EAAE,cAAc,EAAE,4CAA4C;IAE1E,wBAAwB;IACxB,OAAO,EAAE,SAAS;IAClB,QAAQ,EAAE,UAAU;IAEpB,SAAS;IACT,OAAO,EAAE,SAAS;IAElB,mBAAmB;IACnB,OAAO,EAAE,SAAS;CACV,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,aAAa;AACb,cAAc,YAAY,CAAC;AAE3B,+CAA+C;AAC/C,cAAc,cAAc,CAAC;AAE7B,aAAa;AACb,cAAc,YAAY,CAAC;AAE3B,eAAe;AACf,cAAc,cAAc,CAAC;AAE7B,sBAAsB;AACtB,cAAc,WAAW,CAAC"}
|
package/dist/nodes.d.ts
CHANGED
|
@@ -14,6 +14,7 @@ export declare const NODE_TYPE: {
|
|
|
14
14
|
readonly IMPORT: "IMPORT";
|
|
15
15
|
readonly EXPORT: "EXPORT";
|
|
16
16
|
readonly CALL: "CALL";
|
|
17
|
+
readonly PROPERTY_ACCESS: "PROPERTY_ACCESS";
|
|
17
18
|
readonly PROJECT: "PROJECT";
|
|
18
19
|
readonly SERVICE: "SERVICE";
|
|
19
20
|
readonly FILE: "FILE";
|
|
@@ -47,14 +48,15 @@ export declare const NAMESPACED_TYPE: {
|
|
|
47
48
|
readonly NET_STDIO: "net:stdio";
|
|
48
49
|
readonly EVENT_LISTENER: "event:listener";
|
|
49
50
|
readonly EVENT_EMIT: "event:emit";
|
|
51
|
+
readonly GRAFEMA_PLUGIN: "grafema:plugin";
|
|
50
52
|
};
|
|
51
53
|
export type NamespacedNodeType = typeof NAMESPACED_TYPE[keyof typeof NAMESPACED_TYPE];
|
|
52
54
|
export type NodeType = BaseNodeType | NamespacedNodeType | string;
|
|
53
55
|
export interface BaseNodeRecord {
|
|
54
56
|
id: string;
|
|
55
57
|
type: NodeType;
|
|
56
|
-
name
|
|
57
|
-
file
|
|
58
|
+
name?: string;
|
|
59
|
+
file?: string;
|
|
58
60
|
exported?: boolean;
|
|
59
61
|
line?: number;
|
|
60
62
|
column?: number;
|
|
@@ -75,6 +77,7 @@ export interface FunctionNodeRecord extends BaseNodeRecord {
|
|
|
75
77
|
returnType?: string;
|
|
76
78
|
signature?: string;
|
|
77
79
|
jsdocSummary?: string;
|
|
80
|
+
start?: number;
|
|
78
81
|
}
|
|
79
82
|
export interface ClassNodeRecord extends BaseNodeRecord {
|
|
80
83
|
type: 'CLASS';
|
|
@@ -125,6 +128,12 @@ export interface CallNodeRecord extends BaseNodeRecord {
|
|
|
125
128
|
isMethodCall?: boolean;
|
|
126
129
|
objectName?: string;
|
|
127
130
|
}
|
|
131
|
+
export interface PropertyAccessNodeRecord extends BaseNodeRecord {
|
|
132
|
+
type: 'PROPERTY_ACCESS';
|
|
133
|
+
objectName: string;
|
|
134
|
+
optional?: boolean;
|
|
135
|
+
computed?: boolean;
|
|
136
|
+
}
|
|
128
137
|
export interface ServiceNodeRecord extends BaseNodeRecord {
|
|
129
138
|
type: 'SERVICE';
|
|
130
139
|
projectPath: string;
|
|
@@ -198,7 +207,16 @@ export interface GuaranteeNodeRecord extends BaseNodeRecord {
|
|
|
198
207
|
createdAt?: number;
|
|
199
208
|
updatedAt?: number;
|
|
200
209
|
}
|
|
201
|
-
export
|
|
210
|
+
export interface PluginNodeRecord extends BaseNodeRecord {
|
|
211
|
+
type: 'grafema:plugin';
|
|
212
|
+
phase: string;
|
|
213
|
+
priority: number;
|
|
214
|
+
builtin: boolean;
|
|
215
|
+
createsNodes: string[];
|
|
216
|
+
createsEdges: string[];
|
|
217
|
+
dependencies: string[];
|
|
218
|
+
}
|
|
219
|
+
export type NodeRecord = FunctionNodeRecord | ClassNodeRecord | MethodNodeRecord | ModuleNodeRecord | ImportNodeRecord | ExportNodeRecord | VariableNodeRecord | CallNodeRecord | PropertyAccessNodeRecord | ServiceNodeRecord | ScopeNodeRecord | BranchNodeRecord | CaseNodeRecord | LoopNodeRecord | TryBlockNodeRecord | CatchBlockNodeRecord | FinallyBlockNodeRecord | HttpRouteNodeRecord | DbQueryNodeRecord | EventListenerNodeRecord | GuaranteeNodeRecord | PluginNodeRecord | BaseNodeRecord;
|
|
202
220
|
export declare function isNamespacedType(nodeType: string): boolean;
|
|
203
221
|
export declare function getNamespace(nodeType: string): string | null;
|
|
204
222
|
export declare function getBaseName(nodeType: string): string;
|
package/dist/nodes.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodes.d.ts","sourceRoot":"","sources":["../src/nodes.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,eAAO,MAAM,SAAS
|
|
1
|
+
{"version":3,"file":"nodes.d.ts","sourceRoot":"","sources":["../src/nodes.ts"],"names":[],"mappings":"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"}
|
package/dist/nodes.js
CHANGED
|
@@ -18,6 +18,7 @@ export const NODE_TYPE = {
|
|
|
18
18
|
EXPORT: 'EXPORT',
|
|
19
19
|
// Call graph
|
|
20
20
|
CALL: 'CALL',
|
|
21
|
+
PROPERTY_ACCESS: 'PROPERTY_ACCESS',
|
|
21
22
|
// Project structure
|
|
22
23
|
PROJECT: 'PROJECT',
|
|
23
24
|
SERVICE: 'SERVICE',
|
|
@@ -63,6 +64,8 @@ export const NAMESPACED_TYPE = {
|
|
|
63
64
|
// Events
|
|
64
65
|
EVENT_LISTENER: 'event:listener',
|
|
65
66
|
EVENT_EMIT: 'event:emit',
|
|
67
|
+
// Grafema internal (self-describing pipeline)
|
|
68
|
+
GRAFEMA_PLUGIN: 'grafema:plugin',
|
|
66
69
|
};
|
|
67
70
|
// === HELPER FUNCTIONS ===
|
|
68
71
|
export function isNamespacedType(nodeType) {
|
|
@@ -90,3 +93,4 @@ export function isSideEffectType(nodeType) {
|
|
|
90
93
|
const ns = getNamespace(nodeType);
|
|
91
94
|
return ns === 'db' || ns === 'fs' || ns === 'net';
|
|
92
95
|
}
|
|
96
|
+
//# sourceMappingURL=nodes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nodes.js","sourceRoot":"","sources":["../src/nodes.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,0BAA0B;AAC1B,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,qBAAqB;IACrB,QAAQ,EAAE,UAAU;IACpB,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,QAAQ;IAChB,QAAQ,EAAE,UAAU;IACpB,SAAS,EAAE,WAAW;IACtB,QAAQ,EAAE,UAAU;IACpB,OAAO,EAAE,SAAS;IAClB,UAAU,EAAE,YAAY;IAExB,gBAAgB;IAChB,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;IAEhB,aAAa;IACb,IAAI,EAAE,MAAM;IACZ,eAAe,EAAE,iBAAiB;IAElC,oBAAoB;IACpB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;IAEd,YAAY;IACZ,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,MAAM;IAEZ,eAAe;IACf,IAAI,EAAE,MAAM;IACZ,SAAS,EAAE,WAAW;IACtB,WAAW,EAAE,aAAa;IAC1B,aAAa,EAAE,eAAe;IAE9B,wBAAwB;IACxB,QAAQ,EAAE,UAAU;IACpB,eAAe,EAAE,iBAAiB;IAElC,uBAAuB;IACvB,WAAW,EAAE,aAAa;CAClB,CAAC;AAIX,gCAAgC;AAChC,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,iBAAiB;IACjB,UAAU,EAAE,YAAY;IACxB,YAAY,EAAE,cAAc;IAE5B,aAAa;IACb,cAAc,EAAE,gBAAgB;IAChC,kBAAkB,EAAE,oBAAoB;IACxC,aAAa,EAAE,eAAe;IAE9B,YAAY;IACZ,aAAa,EAAE,eAAe;IAC9B,WAAW,EAAE,aAAa;IAC1B,kBAAkB,EAAE,oBAAoB;IAExC,WAAW;IACX,QAAQ,EAAE,UAAU;IACpB,aAAa,EAAE,eAAe;IAE9B,aAAa;IACb,OAAO,EAAE,SAAS;IAClB,QAAQ,EAAE,UAAU;IACpB,YAAY,EAAE,cAAc;IAE5B,UAAU;IACV,WAAW,EAAE,aAAa;IAC1B,SAAS,EAAE,WAAW;IAEtB,SAAS;IACT,cAAc,EAAE,gBAAgB;IAChC,UAAU,EAAE,YAAY;IAExB,8CAA8C;IAC9C,cAAc,EAAE,gBAAgB;CACxB,CAAC;AA0PX,2BAA2B;AAC3B,MAAM,UAAU,gBAAgB,CAAC,QAAgB;IAC/C,OAAO,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,QAAgB;IAC3C,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1C,OAAO,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,QAAgB;IAC1C,IAAI,CAAC,QAAQ;QAAE,OAAO,EAAE,CAAC;IACzB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC7C,OAAO,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,QAAgB;IAC7C,MAAM,EAAE,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IAClC,OAAO,EAAE,KAAK,MAAM,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,UAAU,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,QAAgB;IAC/C,IAAI,QAAQ,KAAK,SAAS,CAAC,WAAW;QAAE,OAAO,IAAI,CAAC;IACpD,MAAM,EAAE,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IAClC,OAAO,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC;AACpD,CAAC"}
|
package/dist/plugins.d.ts
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import type { NodeType, NodeRecord } from './nodes.js';
|
|
5
5
|
import type { EdgeType, EdgeRecord } from './edges.js';
|
|
6
|
+
import type { FieldDeclaration } from './rfdb.js';
|
|
6
7
|
/**
|
|
7
8
|
* Log level for controlling verbosity.
|
|
8
9
|
* Levels are ordered by verbosity: silent < errors < warnings < info < debug
|
|
@@ -30,12 +31,13 @@ export type PluginPhase = typeof PLUGIN_PHASE[keyof typeof PLUGIN_PHASE];
|
|
|
30
31
|
export interface PluginMetadata {
|
|
31
32
|
name: string;
|
|
32
33
|
phase: PluginPhase;
|
|
33
|
-
priority?: number;
|
|
34
34
|
creates?: {
|
|
35
35
|
nodes?: NodeType[];
|
|
36
36
|
edges?: EdgeType[];
|
|
37
37
|
};
|
|
38
38
|
dependencies?: string[];
|
|
39
|
+
/** Metadata fields this plugin writes. Used for RFDB server-side indexing. */
|
|
40
|
+
fields?: FieldDeclaration[];
|
|
39
41
|
}
|
|
40
42
|
/**
|
|
41
43
|
* Specification for creating an issue node via reportIssue().
|
|
@@ -91,6 +93,17 @@ export interface PluginContext {
|
|
|
91
93
|
* Default: false (graceful degradation).
|
|
92
94
|
*/
|
|
93
95
|
strictMode?: boolean;
|
|
96
|
+
/**
|
|
97
|
+
* Root prefix for multi-root workspace support (REG-76).
|
|
98
|
+
* When indexing a workspace with multiple roots, this is the root's
|
|
99
|
+
* basename (e.g., "backend", "frontend"). Used to prefix file paths
|
|
100
|
+
* in semantic IDs to prevent collisions.
|
|
101
|
+
*
|
|
102
|
+
* Example:
|
|
103
|
+
* - Single root (undefined): "src/utils.js->global->FUNCTION->foo"
|
|
104
|
+
* - Multi root ("backend"): "backend/src/utils.js->global->FUNCTION->foo"
|
|
105
|
+
*/
|
|
106
|
+
rootPrefix?: string;
|
|
94
107
|
}
|
|
95
108
|
export interface PluginResult {
|
|
96
109
|
success: boolean;
|
|
@@ -221,6 +234,7 @@ export interface GraphBackend {
|
|
|
221
234
|
clear(): Promise<void>;
|
|
222
235
|
flush?(): Promise<void>;
|
|
223
236
|
close?(): Promise<void>;
|
|
237
|
+
declareFields?(fields: FieldDeclaration[]): Promise<number>;
|
|
224
238
|
}
|
|
225
239
|
export interface NodeFilter {
|
|
226
240
|
type?: NodeType;
|
package/dist/plugins.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugins.d.ts","sourceRoot":"","sources":["../src/plugins.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"plugins.d.ts","sourceRoot":"","sources":["../src/plugins.ts"],"names":[],"mappings":"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"}
|
package/dist/plugins.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugins.js","sourceRoot":"","sources":["../src/plugins.ts"],"names":[],"mappings":"AAAA;;GAEG;AA0BH,wBAAwB;AACxB,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,SAAS,EAAE,WAAW;IACtB,QAAQ,EAAE,UAAU;IACpB,QAAQ,EAAE,UAAU;IACpB,UAAU,EAAE,YAAY;IACxB,UAAU,EAAE,YAAY;CAChB,CAAC;AA8QX,2BAA2B;AAC3B,MAAM,UAAU,mBAAmB,CACjC,UAA4C,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAClE,WAAoC,EAAE,EACtC,SAAkB,EAAE;IAEpB,OAAO;QACL,OAAO,EAAE,IAAI;QACb,OAAO;QACP,MAAM;QACN,QAAQ,EAAE,EAAE;QACZ,QAAQ;KACT,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,KAAY,EACZ,UAA4C,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE;IAElE,OAAO;QACL,OAAO,EAAE,KAAK;QACd,OAAO;QACP,MAAM,EAAE,CAAC,KAAK,CAAC;QACf,QAAQ,EAAE,EAAE;QACZ,QAAQ,EAAE,EAAE;KACb,CAAC;AACJ,CAAC"}
|
package/dist/rfdb.d.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import type { NodeType } from './nodes.js';
|
|
5
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' | 'reachability' | 'getOutgoingEdges' | 'getIncomingEdges' | 'nodeCount' | 'edgeCount' | 'countNodesByType' | 'countEdgesByType' | 'flush' | 'compact' | 'ping' | 'shutdown' | 'datalogLoadRules' | 'datalogClearRules' | 'datalogQuery' | 'checkGuarantee';
|
|
6
|
+
export type RFDBCommand = 'addNodes' | 'addEdges' | 'deleteNode' | 'deleteEdge' | 'clear' | 'updateNodeVersion' | 'getNode' | 'nodeExists' | 'findByType' | 'findByAttr' | 'queryNodes' | 'getAllNodes' | 'getAllEdges' | 'isEndpoint' | 'getNodeIdentifier' | 'neighbors' | 'bfs' | 'dfs' | 'reachability' | 'getOutgoingEdges' | 'getIncomingEdges' | 'nodeCount' | 'edgeCount' | 'countNodesByType' | 'countEdgesByType' | 'flush' | 'compact' | 'ping' | 'shutdown' | 'datalogLoadRules' | 'datalogClearRules' | 'datalogQuery' | 'checkGuarantee' | 'hello' | 'createDatabase' | 'openDatabase' | 'closeDatabase' | 'dropDatabase' | 'listDatabases' | 'currentDatabase' | 'declareFields';
|
|
7
7
|
export interface WireNode {
|
|
8
8
|
id: string;
|
|
9
9
|
nodeType: NodeType;
|
|
@@ -137,6 +137,37 @@ export interface PingResponse extends RFDBResponse {
|
|
|
137
137
|
pong: boolean;
|
|
138
138
|
version: string;
|
|
139
139
|
}
|
|
140
|
+
export interface HelloResponse extends RFDBResponse {
|
|
141
|
+
ok: boolean;
|
|
142
|
+
protocolVersion: number;
|
|
143
|
+
serverVersion: string;
|
|
144
|
+
features: string[];
|
|
145
|
+
}
|
|
146
|
+
export interface CreateDatabaseResponse extends RFDBResponse {
|
|
147
|
+
ok: boolean;
|
|
148
|
+
databaseId: string;
|
|
149
|
+
}
|
|
150
|
+
export interface OpenDatabaseResponse extends RFDBResponse {
|
|
151
|
+
ok: boolean;
|
|
152
|
+
databaseId: string;
|
|
153
|
+
mode: string;
|
|
154
|
+
nodeCount: number;
|
|
155
|
+
edgeCount: number;
|
|
156
|
+
}
|
|
157
|
+
export interface DatabaseInfo {
|
|
158
|
+
name: string;
|
|
159
|
+
ephemeral: boolean;
|
|
160
|
+
nodeCount: number;
|
|
161
|
+
edgeCount: number;
|
|
162
|
+
connectionCount: number;
|
|
163
|
+
}
|
|
164
|
+
export interface ListDatabasesResponse extends RFDBResponse {
|
|
165
|
+
databases: DatabaseInfo[];
|
|
166
|
+
}
|
|
167
|
+
export interface CurrentDatabaseResponse extends RFDBResponse {
|
|
168
|
+
database: string | null;
|
|
169
|
+
mode: string | null;
|
|
170
|
+
}
|
|
140
171
|
export interface AttrQuery {
|
|
141
172
|
nodeType?: string;
|
|
142
173
|
type?: string;
|
|
@@ -145,6 +176,17 @@ export interface AttrQuery {
|
|
|
145
176
|
file?: string;
|
|
146
177
|
exported?: boolean;
|
|
147
178
|
version?: string;
|
|
179
|
+
/** Extra fields are matched against node metadata JSON (e.g. object, method, async) */
|
|
180
|
+
[key: string]: string | boolean | number | undefined;
|
|
181
|
+
}
|
|
182
|
+
/** Declaration of a metadata field for server-side indexing. */
|
|
183
|
+
export interface FieldDeclaration {
|
|
184
|
+
/** Field name as it appears in metadata JSON (e.g. "object", "method", "async") */
|
|
185
|
+
name: string;
|
|
186
|
+
/** Field type hint for storage optimization */
|
|
187
|
+
fieldType?: 'string' | 'bool' | 'int' | 'id';
|
|
188
|
+
/** Restrict indexing to specific node types. If omitted, indexes all node types. */
|
|
189
|
+
nodeTypes?: NodeType[];
|
|
148
190
|
}
|
|
149
191
|
export interface DatalogBinding {
|
|
150
192
|
[key: string]: string;
|
|
@@ -165,6 +207,7 @@ export interface IRFDBClient {
|
|
|
165
207
|
deleteEdge(src: string, dst: string, edgeType: EdgeType): Promise<RFDBResponse>;
|
|
166
208
|
clear(): Promise<RFDBResponse>;
|
|
167
209
|
updateNodeVersion(id: string, version: string): Promise<RFDBResponse>;
|
|
210
|
+
declareFields(fields: FieldDeclaration[]): Promise<number>;
|
|
168
211
|
getNode(id: string): Promise<WireNode | null>;
|
|
169
212
|
nodeExists(id: string): Promise<boolean>;
|
|
170
213
|
findByType(nodeType: NodeType): Promise<string[]>;
|
|
@@ -190,5 +233,12 @@ export interface IRFDBClient {
|
|
|
190
233
|
datalogClearRules(): Promise<RFDBResponse>;
|
|
191
234
|
datalogQuery(query: string): Promise<DatalogResult[]>;
|
|
192
235
|
checkGuarantee(ruleSource: string): Promise<DatalogResult[]>;
|
|
236
|
+
hello(protocolVersion?: number): Promise<HelloResponse>;
|
|
237
|
+
createDatabase(name: string, ephemeral?: boolean): Promise<CreateDatabaseResponse>;
|
|
238
|
+
openDatabase(name: string, mode?: 'rw' | 'ro'): Promise<OpenDatabaseResponse>;
|
|
239
|
+
closeDatabase(): Promise<RFDBResponse>;
|
|
240
|
+
dropDatabase(name: string): Promise<RFDBResponse>;
|
|
241
|
+
listDatabases(): Promise<ListDatabasesResponse>;
|
|
242
|
+
currentDatabase(): Promise<CurrentDatabaseResponse>;
|
|
193
243
|
}
|
|
194
244
|
//# sourceMappingURL=rfdb.d.ts.map
|
package/dist/rfdb.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rfdb.d.ts","sourceRoot":"","sources":["../src/rfdb.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAG3C,MAAM,MAAM,WAAW,GAEnB,UAAU,GACV,UAAU,GACV,YAAY,GACZ,YAAY,GACZ,OAAO,GACP,mBAAmB,GAEnB,SAAS,GACT,YAAY,GACZ,YAAY,GACZ,YAAY,GACZ,YAAY,GACZ,aAAa,GACb,aAAa,GACb,YAAY,GACZ,mBAAmB,GAEnB,WAAW,GACX,KAAK,GACL,KAAK,GACL,cAAc,GACd,kBAAkB,GAClB,kBAAkB,GAElB,WAAW,GACX,WAAW,GACX,kBAAkB,GAClB,kBAAkB,GAElB,OAAO,GACP,SAAS,GACT,MAAM,GACN,UAAU,GAEV,kBAAkB,GAClB,mBAAmB,GACnB,cAAc,GACd,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"rfdb.d.ts","sourceRoot":"","sources":["../src/rfdb.ts"],"names":[],"mappings":"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"}
|
package/dist/rfdb.js
CHANGED
package/dist/rfdb.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rfdb.js","sourceRoot":"","sources":["../src/rfdb.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
package/package.json
CHANGED
package/src/edges.ts
CHANGED
|
@@ -34,6 +34,8 @@ export const EDGE_TYPE = {
|
|
|
34
34
|
PASSES_ARGUMENT: 'PASSES_ARGUMENT',
|
|
35
35
|
RECEIVES_ARGUMENT: 'RECEIVES_ARGUMENT',
|
|
36
36
|
RETURNS: 'RETURNS',
|
|
37
|
+
YIELDS: 'YIELDS',
|
|
38
|
+
DELEGATES_TO: 'DELEGATES_TO',
|
|
37
39
|
|
|
38
40
|
// Inheritance
|
|
39
41
|
EXTENDS: 'EXTENDS',
|
|
@@ -86,6 +88,10 @@ export const EDGE_TYPE = {
|
|
|
86
88
|
// Errors
|
|
87
89
|
THROWS: 'THROWS',
|
|
88
90
|
|
|
91
|
+
// REG-311: Async error flow
|
|
92
|
+
REJECTS: 'REJECTS', // FUNCTION -> CLASS (error class it can reject)
|
|
93
|
+
CATCHES_FROM: 'CATCHES_FROM', // CATCH_BLOCK -> error sources in TRY_BLOCK
|
|
94
|
+
|
|
89
95
|
// Guarantees/Invariants
|
|
90
96
|
GOVERNS: 'GOVERNS',
|
|
91
97
|
VIOLATES: 'VIOLATES',
|
package/src/nodes.ts
CHANGED
|
@@ -21,6 +21,7 @@ export const NODE_TYPE = {
|
|
|
21
21
|
|
|
22
22
|
// Call graph
|
|
23
23
|
CALL: 'CALL',
|
|
24
|
+
PROPERTY_ACCESS: 'PROPERTY_ACCESS',
|
|
24
25
|
|
|
25
26
|
// Project structure
|
|
26
27
|
PROJECT: 'PROJECT',
|
|
@@ -80,6 +81,9 @@ export const NAMESPACED_TYPE = {
|
|
|
80
81
|
// Events
|
|
81
82
|
EVENT_LISTENER: 'event:listener',
|
|
82
83
|
EVENT_EMIT: 'event:emit',
|
|
84
|
+
|
|
85
|
+
// Grafema internal (self-describing pipeline)
|
|
86
|
+
GRAFEMA_PLUGIN: 'grafema:plugin',
|
|
83
87
|
} as const;
|
|
84
88
|
|
|
85
89
|
export type NamespacedNodeType = typeof NAMESPACED_TYPE[keyof typeof NAMESPACED_TYPE];
|
|
@@ -92,8 +96,8 @@ export type NodeType = BaseNodeType | NamespacedNodeType | string;
|
|
|
92
96
|
export interface BaseNodeRecord {
|
|
93
97
|
id: string;
|
|
94
98
|
type: NodeType;
|
|
95
|
-
name
|
|
96
|
-
file
|
|
99
|
+
name?: string; // Optional - some nodes (BRANCH, CASE, LOOP) don't have meaningful names
|
|
100
|
+
file?: string; // Optional - some synthetic nodes may not have a file
|
|
97
101
|
exported?: boolean; // Optional - some nodes may not have export status
|
|
98
102
|
line?: number; // Optional - not always available
|
|
99
103
|
column?: number;
|
|
@@ -117,6 +121,7 @@ export interface FunctionNodeRecord extends BaseNodeRecord {
|
|
|
117
121
|
returnType?: string; // Return type
|
|
118
122
|
signature?: string; // Full signature: "(a: T) => R"
|
|
119
123
|
jsdocSummary?: string; // First line of JSDoc
|
|
124
|
+
start?: number; // Byte offset in file (for positional linking)
|
|
120
125
|
}
|
|
121
126
|
|
|
122
127
|
// Class node
|
|
@@ -183,6 +188,14 @@ export interface CallNodeRecord extends BaseNodeRecord {
|
|
|
183
188
|
objectName?: string;
|
|
184
189
|
}
|
|
185
190
|
|
|
191
|
+
// Property access node (property read: obj.prop, a.b.c)
|
|
192
|
+
export interface PropertyAccessNodeRecord extends BaseNodeRecord {
|
|
193
|
+
type: 'PROPERTY_ACCESS';
|
|
194
|
+
objectName: string;
|
|
195
|
+
optional?: boolean;
|
|
196
|
+
computed?: boolean;
|
|
197
|
+
}
|
|
198
|
+
|
|
186
199
|
// Service node (project-level)
|
|
187
200
|
export interface ServiceNodeRecord extends BaseNodeRecord {
|
|
188
201
|
type: 'SERVICE';
|
|
@@ -284,6 +297,17 @@ export interface GuaranteeNodeRecord extends BaseNodeRecord {
|
|
|
284
297
|
updatedAt?: number;
|
|
285
298
|
}
|
|
286
299
|
|
|
300
|
+
// Plugin node (Grafema internal - self-describing pipeline)
|
|
301
|
+
export interface PluginNodeRecord extends BaseNodeRecord {
|
|
302
|
+
type: 'grafema:plugin';
|
|
303
|
+
phase: string;
|
|
304
|
+
priority: number;
|
|
305
|
+
builtin: boolean;
|
|
306
|
+
createsNodes: string[];
|
|
307
|
+
createsEdges: string[];
|
|
308
|
+
dependencies: string[];
|
|
309
|
+
}
|
|
310
|
+
|
|
287
311
|
// Union of all node types
|
|
288
312
|
export type NodeRecord =
|
|
289
313
|
| FunctionNodeRecord
|
|
@@ -294,6 +318,7 @@ export type NodeRecord =
|
|
|
294
318
|
| ExportNodeRecord
|
|
295
319
|
| VariableNodeRecord
|
|
296
320
|
| CallNodeRecord
|
|
321
|
+
| PropertyAccessNodeRecord
|
|
297
322
|
| ServiceNodeRecord
|
|
298
323
|
| ScopeNodeRecord
|
|
299
324
|
| BranchNodeRecord
|
|
@@ -306,6 +331,7 @@ export type NodeRecord =
|
|
|
306
331
|
| DbQueryNodeRecord
|
|
307
332
|
| EventListenerNodeRecord
|
|
308
333
|
| GuaranteeNodeRecord
|
|
334
|
+
| PluginNodeRecord
|
|
309
335
|
| BaseNodeRecord; // fallback for custom types
|
|
310
336
|
|
|
311
337
|
// === HELPER FUNCTIONS ===
|
package/src/plugins.ts
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
import type { NodeType, NodeRecord } from './nodes.js';
|
|
6
6
|
import type { EdgeType, EdgeRecord } from './edges.js';
|
|
7
|
+
import type { FieldDeclaration } from './rfdb.js';
|
|
7
8
|
|
|
8
9
|
// === LOG LEVEL ===
|
|
9
10
|
/**
|
|
@@ -40,12 +41,13 @@ export type PluginPhase = typeof PLUGIN_PHASE[keyof typeof PLUGIN_PHASE];
|
|
|
40
41
|
export interface PluginMetadata {
|
|
41
42
|
name: string;
|
|
42
43
|
phase: PluginPhase;
|
|
43
|
-
priority?: number;
|
|
44
44
|
creates?: {
|
|
45
45
|
nodes?: NodeType[];
|
|
46
46
|
edges?: EdgeType[];
|
|
47
47
|
};
|
|
48
48
|
dependencies?: string[];
|
|
49
|
+
/** Metadata fields this plugin writes. Used for RFDB server-side indexing. */
|
|
50
|
+
fields?: FieldDeclaration[];
|
|
49
51
|
}
|
|
50
52
|
|
|
51
53
|
// === ISSUE SPEC ===
|
|
@@ -107,6 +109,18 @@ export interface PluginContext {
|
|
|
107
109
|
* Default: false (graceful degradation).
|
|
108
110
|
*/
|
|
109
111
|
strictMode?: boolean;
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Root prefix for multi-root workspace support (REG-76).
|
|
115
|
+
* When indexing a workspace with multiple roots, this is the root's
|
|
116
|
+
* basename (e.g., "backend", "frontend"). Used to prefix file paths
|
|
117
|
+
* in semantic IDs to prevent collisions.
|
|
118
|
+
*
|
|
119
|
+
* Example:
|
|
120
|
+
* - Single root (undefined): "src/utils.js->global->FUNCTION->foo"
|
|
121
|
+
* - Multi root ("backend"): "backend/src/utils.js->global->FUNCTION->foo"
|
|
122
|
+
*/
|
|
123
|
+
rootPrefix?: string;
|
|
110
124
|
}
|
|
111
125
|
|
|
112
126
|
// === PLUGIN RESULT ===
|
|
@@ -267,6 +281,9 @@ export interface GraphBackend {
|
|
|
267
281
|
// Optional persistence
|
|
268
282
|
flush?(): Promise<void>;
|
|
269
283
|
close?(): Promise<void>;
|
|
284
|
+
|
|
285
|
+
// Schema declaration
|
|
286
|
+
declareFields?(fields: FieldDeclaration[]): Promise<number>;
|
|
270
287
|
}
|
|
271
288
|
|
|
272
289
|
export interface NodeFilter {
|
package/src/rfdb.ts
CHANGED
|
@@ -45,7 +45,17 @@ export type RFDBCommand =
|
|
|
45
45
|
| 'datalogLoadRules'
|
|
46
46
|
| 'datalogClearRules'
|
|
47
47
|
| 'datalogQuery'
|
|
48
|
-
| 'checkGuarantee'
|
|
48
|
+
| 'checkGuarantee'
|
|
49
|
+
// Protocol v2 - Multi-Database Commands
|
|
50
|
+
| 'hello'
|
|
51
|
+
| 'createDatabase'
|
|
52
|
+
| 'openDatabase'
|
|
53
|
+
| 'closeDatabase'
|
|
54
|
+
| 'dropDatabase'
|
|
55
|
+
| 'listDatabases'
|
|
56
|
+
| 'currentDatabase'
|
|
57
|
+
// Schema declaration
|
|
58
|
+
| 'declareFields';
|
|
49
59
|
|
|
50
60
|
// === WIRE FORMAT ===
|
|
51
61
|
// Nodes as sent over the wire
|
|
@@ -217,6 +227,45 @@ export interface PingResponse extends RFDBResponse {
|
|
|
217
227
|
version: string;
|
|
218
228
|
}
|
|
219
229
|
|
|
230
|
+
// === PROTOCOL V2 - MULTI-DATABASE RESPONSES ===
|
|
231
|
+
|
|
232
|
+
export interface HelloResponse extends RFDBResponse {
|
|
233
|
+
ok: boolean;
|
|
234
|
+
protocolVersion: number;
|
|
235
|
+
serverVersion: string;
|
|
236
|
+
features: string[];
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
export interface CreateDatabaseResponse extends RFDBResponse {
|
|
240
|
+
ok: boolean;
|
|
241
|
+
databaseId: string;
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
export interface OpenDatabaseResponse extends RFDBResponse {
|
|
245
|
+
ok: boolean;
|
|
246
|
+
databaseId: string;
|
|
247
|
+
mode: string;
|
|
248
|
+
nodeCount: number;
|
|
249
|
+
edgeCount: number;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
export interface DatabaseInfo {
|
|
253
|
+
name: string;
|
|
254
|
+
ephemeral: boolean;
|
|
255
|
+
nodeCount: number;
|
|
256
|
+
edgeCount: number;
|
|
257
|
+
connectionCount: number;
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
export interface ListDatabasesResponse extends RFDBResponse {
|
|
261
|
+
databases: DatabaseInfo[];
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
export interface CurrentDatabaseResponse extends RFDBResponse {
|
|
265
|
+
database: string | null;
|
|
266
|
+
mode: string | null;
|
|
267
|
+
}
|
|
268
|
+
|
|
220
269
|
// === ATTR QUERY ===
|
|
221
270
|
export interface AttrQuery {
|
|
222
271
|
nodeType?: string;
|
|
@@ -226,6 +275,19 @@ export interface AttrQuery {
|
|
|
226
275
|
file?: string;
|
|
227
276
|
exported?: boolean;
|
|
228
277
|
version?: string;
|
|
278
|
+
/** Extra fields are matched against node metadata JSON (e.g. object, method, async) */
|
|
279
|
+
[key: string]: string | boolean | number | undefined;
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
// === FIELD DECLARATION ===
|
|
283
|
+
/** Declaration of a metadata field for server-side indexing. */
|
|
284
|
+
export interface FieldDeclaration {
|
|
285
|
+
/** Field name as it appears in metadata JSON (e.g. "object", "method", "async") */
|
|
286
|
+
name: string;
|
|
287
|
+
/** Field type hint for storage optimization */
|
|
288
|
+
fieldType?: 'string' | 'bool' | 'int' | 'id';
|
|
289
|
+
/** Restrict indexing to specific node types. If omitted, indexes all node types. */
|
|
290
|
+
nodeTypes?: NodeType[];
|
|
229
291
|
}
|
|
230
292
|
|
|
231
293
|
// === DATALOG TYPES ===
|
|
@@ -255,6 +317,7 @@ export interface IRFDBClient {
|
|
|
255
317
|
deleteEdge(src: string, dst: string, edgeType: EdgeType): Promise<RFDBResponse>;
|
|
256
318
|
clear(): Promise<RFDBResponse>;
|
|
257
319
|
updateNodeVersion(id: string, version: string): Promise<RFDBResponse>;
|
|
320
|
+
declareFields(fields: FieldDeclaration[]): Promise<number>;
|
|
258
321
|
|
|
259
322
|
// Read operations
|
|
260
323
|
getNode(id: string): Promise<WireNode | null>;
|
|
@@ -290,4 +353,13 @@ export interface IRFDBClient {
|
|
|
290
353
|
datalogClearRules(): Promise<RFDBResponse>;
|
|
291
354
|
datalogQuery(query: string): Promise<DatalogResult[]>;
|
|
292
355
|
checkGuarantee(ruleSource: string): Promise<DatalogResult[]>;
|
|
356
|
+
|
|
357
|
+
// Protocol v2 - Multi-Database
|
|
358
|
+
hello(protocolVersion?: number): Promise<HelloResponse>;
|
|
359
|
+
createDatabase(name: string, ephemeral?: boolean): Promise<CreateDatabaseResponse>;
|
|
360
|
+
openDatabase(name: string, mode?: 'rw' | 'ro'): Promise<OpenDatabaseResponse>;
|
|
361
|
+
closeDatabase(): Promise<RFDBResponse>;
|
|
362
|
+
dropDatabase(name: string): Promise<RFDBResponse>;
|
|
363
|
+
listDatabases(): Promise<ListDatabasesResponse>;
|
|
364
|
+
currentDatabase(): Promise<CurrentDatabaseResponse>;
|
|
293
365
|
}
|