@bevorai/sdk 0.0.0-stage → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +179 -2
- package/dist/client.d.ts +86 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +171 -0
- package/dist/client.js.map +1 -0
- package/dist/errors.d.ts +109 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +132 -0
- package/dist/errors.js.map +1 -0
- package/dist/graph/call-node.d.ts +47 -0
- package/dist/graph/call-node.d.ts.map +1 -0
- package/dist/graph/call-node.js +338 -0
- package/dist/graph/call-node.js.map +1 -0
- package/dist/graph/cursor.d.ts +46 -0
- package/dist/graph/cursor.d.ts.map +1 -0
- package/dist/graph/cursor.js +149 -0
- package/dist/graph/cursor.js.map +1 -0
- package/dist/graph/field-metadata.d.ts +24 -0
- package/dist/graph/field-metadata.d.ts.map +1 -0
- package/dist/graph/field-metadata.js +72 -0
- package/dist/graph/field-metadata.js.map +1 -0
- package/dist/graph/graph.d.ts +87 -0
- package/dist/graph/graph.d.ts.map +1 -0
- package/dist/graph/graph.js +354 -0
- package/dist/graph/graph.js.map +1 -0
- package/dist/helpers/call-chain.d.ts +11 -0
- package/dist/helpers/call-chain.d.ts.map +1 -0
- package/dist/helpers/call-chain.js +79 -0
- package/dist/helpers/call-chain.js.map +1 -0
- package/dist/helpers/sarif.d.ts +21 -0
- package/dist/helpers/sarif.d.ts.map +1 -0
- package/dist/helpers/sarif.js +191 -0
- package/dist/helpers/sarif.js.map +1 -0
- package/dist/helpers/source-fingerprint.d.ts +32 -0
- package/dist/helpers/source-fingerprint.d.ts.map +1 -0
- package/dist/helpers/source-fingerprint.js +115 -0
- package/dist/helpers/source-fingerprint.js.map +1 -0
- package/dist/helpers/static-analysis.d.ts +18 -0
- package/dist/helpers/static-analysis.d.ts.map +1 -0
- package/dist/helpers/static-analysis.js +89 -0
- package/dist/helpers/static-analysis.js.map +1 -0
- package/dist/index.d.ts +31 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +29 -0
- package/dist/index.js.map +1 -0
- package/dist/node.d.ts +4 -0
- package/dist/node.d.ts.map +1 -0
- package/dist/node.js +26 -0
- package/dist/node.js.map +1 -0
- package/dist/pagination.d.ts +13 -0
- package/dist/pagination.d.ts.map +1 -0
- package/dist/pagination.js +30 -0
- package/dist/pagination.js.map +1 -0
- package/dist/resources/analyses.d.ts +90 -0
- package/dist/resources/analyses.d.ts.map +1 -0
- package/dist/resources/analyses.js +250 -0
- package/dist/resources/analyses.js.map +1 -0
- package/dist/resources/chats.d.ts +48 -0
- package/dist/resources/chats.d.ts.map +1 -0
- package/dist/resources/chats.js +114 -0
- package/dist/resources/chats.js.map +1 -0
- package/dist/resources/codes.d.ts +64 -0
- package/dist/resources/codes.d.ts.map +1 -0
- package/dist/resources/codes.js +200 -0
- package/dist/resources/codes.js.map +1 -0
- package/dist/resources/files.d.ts +26 -0
- package/dist/resources/files.d.ts.map +1 -0
- package/dist/resources/files.js +45 -0
- package/dist/resources/files.js.map +1 -0
- package/dist/resources/findings.d.ts +49 -0
- package/dist/resources/findings.d.ts.map +1 -0
- package/dist/resources/findings.js +84 -0
- package/dist/resources/findings.js.map +1 -0
- package/dist/resources/nodes.d.ts +33 -0
- package/dist/resources/nodes.d.ts.map +1 -0
- package/dist/resources/nodes.js +65 -0
- package/dist/resources/nodes.js.map +1 -0
- package/dist/resources/projects.d.ts +11 -0
- package/dist/resources/projects.d.ts.map +1 -0
- package/dist/resources/projects.js +14 -0
- package/dist/resources/projects.js.map +1 -0
- package/dist/resources/shared.d.ts +14 -0
- package/dist/resources/shared.d.ts.map +1 -0
- package/dist/resources/shared.js +2 -0
- package/dist/resources/shared.js.map +1 -0
- package/dist/resources/summary.d.ts +17 -0
- package/dist/resources/summary.d.ts.map +1 -0
- package/dist/resources/summary.js +27 -0
- package/dist/resources/summary.js.map +1 -0
- package/dist/resources/transitions.d.ts +25 -0
- package/dist/resources/transitions.d.ts.map +1 -0
- package/dist/resources/transitions.js +30 -0
- package/dist/resources/transitions.js.map +1 -0
- package/dist/resources/users.d.ts +19 -0
- package/dist/resources/users.d.ts.map +1 -0
- package/dist/resources/users.js +36 -0
- package/dist/resources/users.js.map +1 -0
- package/dist/resources/versions.d.ts +20 -0
- package/dist/resources/versions.d.ts.map +1 -0
- package/dist/resources/versions.js +25 -0
- package/dist/resources/versions.js.map +1 -0
- package/dist/streaming.d.ts +43 -0
- package/dist/streaming.d.ts.map +1 -0
- package/dist/streaming.js +147 -0
- package/dist/streaming.js.map +1 -0
- package/dist/types/graph-data.d.ts +62 -0
- package/dist/types/graph-data.d.ts.map +1 -0
- package/dist/types/graph-data.js +2 -0
- package/dist/types/graph-data.js.map +1 -0
- package/dist/types/literals.d.ts +27 -0
- package/dist/types/literals.d.ts.map +1 -0
- package/dist/types/literals.js +16 -0
- package/dist/types/literals.js.map +1 -0
- package/dist/types/node-types.d.ts +5 -0
- package/dist/types/node-types.d.ts.map +1 -0
- package/dist/types/node-types.js +292 -0
- package/dist/types/node-types.js.map +1 -0
- package/dist/types/requests.d.ts +205 -0
- package/dist/types/requests.d.ts.map +1 -0
- package/dist/types/requests.js +3 -0
- package/dist/types/requests.js.map +1 -0
- package/dist/types/responses.d.ts +448 -0
- package/dist/types/responses.d.ts.map +1 -0
- package/dist/types/responses.js +11 -0
- package/dist/types/responses.js.map +1 -0
- package/dist/types/static-analysis.d.ts +28 -0
- package/dist/types/static-analysis.d.ts.map +1 -0
- package/dist/types/static-analysis.js +93 -0
- package/dist/types/static-analysis.js.map +1 -0
- package/package.json +46 -5
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A movable position in the graph that remembers its path.
|
|
3
|
+
*
|
|
4
|
+
* Full execution-path DFS:
|
|
5
|
+
* ```ts
|
|
6
|
+
* const cursor = graph.cursor(nodeId);
|
|
7
|
+
* while (true) {
|
|
8
|
+
* if (cursor.gotoFirstChild()) continue;
|
|
9
|
+
* if (cursor.gotoNextSibling()) continue;
|
|
10
|
+
* if (!cursor.back()) break;
|
|
11
|
+
* }
|
|
12
|
+
* ```
|
|
13
|
+
*
|
|
14
|
+
* Adding `if (cursor.gotoFirstParent()) continue;` before `back()` also walks out of the execution
|
|
15
|
+
* path into cross pathways ("what else writes this", "where else is this called"). Use `peekUp()`,
|
|
16
|
+
* or pass an `edgeType` to only allow that for certain edges.
|
|
17
|
+
*/
|
|
18
|
+
export class GraphCursor {
|
|
19
|
+
graph;
|
|
20
|
+
nodeId;
|
|
21
|
+
/** Edges taken from the current position, on this path. */
|
|
22
|
+
used = new Set();
|
|
23
|
+
stack = [];
|
|
24
|
+
constructor(graph, nodeId) {
|
|
25
|
+
this.graph = graph;
|
|
26
|
+
this.nodeId = nodeId;
|
|
27
|
+
}
|
|
28
|
+
get node() {
|
|
29
|
+
return this.graph.getNode(this.nodeId);
|
|
30
|
+
}
|
|
31
|
+
get depth() {
|
|
32
|
+
return this.stack.length;
|
|
33
|
+
}
|
|
34
|
+
get path() {
|
|
35
|
+
return this.stack.map(([nodeId]) => nodeId);
|
|
36
|
+
}
|
|
37
|
+
get isCycle() {
|
|
38
|
+
return this.path.includes(this.nodeId);
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Takes the first unused outgoing edge. Moves onto its destination when it has one; an edge
|
|
42
|
+
* without a destination isn't a real node, so the cursor stays put but the edge is consumed.
|
|
43
|
+
*/
|
|
44
|
+
gotoFirstChild() {
|
|
45
|
+
if (this.isCycle)
|
|
46
|
+
return null;
|
|
47
|
+
for (const edge of this.graph.getEdgesForNode(this.nodeId, {
|
|
48
|
+
direction: "out",
|
|
49
|
+
})) {
|
|
50
|
+
if (this.used.has(edge.id))
|
|
51
|
+
continue;
|
|
52
|
+
this.used = new Set([...this.used, edge.id]);
|
|
53
|
+
if (edge.dst_id) {
|
|
54
|
+
this.stack = [...this.stack, [this.nodeId, this.used]];
|
|
55
|
+
this.nodeId = edge.dst_id;
|
|
56
|
+
this.used = new Set();
|
|
57
|
+
}
|
|
58
|
+
return edge;
|
|
59
|
+
}
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
gotoFirstParent(edgeType = null) {
|
|
63
|
+
if (this.stack.length === 0 || this.isCycle)
|
|
64
|
+
return null;
|
|
65
|
+
for (const edge of this.graph.getEdgesForNode(this.nodeId, {
|
|
66
|
+
direction: "in",
|
|
67
|
+
edgeType,
|
|
68
|
+
})) {
|
|
69
|
+
if (this.used.has(edge.id))
|
|
70
|
+
continue;
|
|
71
|
+
this.used = new Set([...this.used, edge.id]);
|
|
72
|
+
this.stack = [...this.stack, [this.nodeId, this.used]];
|
|
73
|
+
this.nodeId = edge.src_id;
|
|
74
|
+
this.used = new Set();
|
|
75
|
+
return edge;
|
|
76
|
+
}
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
gotoNextSibling() {
|
|
80
|
+
const [nodeId, used, stack] = [this.nodeId, this.used, this.stack];
|
|
81
|
+
if (!this.back())
|
|
82
|
+
return null;
|
|
83
|
+
const edge = this.gotoFirstChild();
|
|
84
|
+
if (edge?.dst_id)
|
|
85
|
+
return edge;
|
|
86
|
+
const parentUsed = this.used;
|
|
87
|
+
[this.nodeId, this.used, this.stack] = [nodeId, used, stack];
|
|
88
|
+
if (edge !== null) {
|
|
89
|
+
// a sibling without a destination: stay put, but keep it consumed on the parent
|
|
90
|
+
const [parentId] = this.stack[this.stack.length - 1];
|
|
91
|
+
this.stack = [...this.stack.slice(0, -1), [parentId, parentUsed]];
|
|
92
|
+
}
|
|
93
|
+
return edge;
|
|
94
|
+
}
|
|
95
|
+
back() {
|
|
96
|
+
const top = this.stack[this.stack.length - 1];
|
|
97
|
+
if (!top)
|
|
98
|
+
return false;
|
|
99
|
+
[this.nodeId, this.used] = top;
|
|
100
|
+
this.stack = this.stack.slice(0, -1);
|
|
101
|
+
return true;
|
|
102
|
+
}
|
|
103
|
+
peekUp() {
|
|
104
|
+
if (this.stack.length === 0 || this.isCycle)
|
|
105
|
+
return [];
|
|
106
|
+
return this.graph
|
|
107
|
+
.getEdgesForNode(this.nodeId, { direction: "in" })
|
|
108
|
+
.filter((edge) => !this.used.has(edge.id))
|
|
109
|
+
.map((edge) => [edge, this.graph.getNode(edge.src_id)]);
|
|
110
|
+
}
|
|
111
|
+
peekDown() {
|
|
112
|
+
if (this.isCycle)
|
|
113
|
+
return [];
|
|
114
|
+
const out = [];
|
|
115
|
+
for (const edge of this.graph.getEdgesForNode(this.nodeId, {
|
|
116
|
+
direction: "out",
|
|
117
|
+
})) {
|
|
118
|
+
if (edge.dst_id && !this.used.has(edge.id))
|
|
119
|
+
out.push([edge, this.graph.getNode(edge.dst_id)]);
|
|
120
|
+
}
|
|
121
|
+
return out;
|
|
122
|
+
}
|
|
123
|
+
render(source = null) {
|
|
124
|
+
const node = this.node;
|
|
125
|
+
const path = this.stack.map(([nodeId]) => this.graph.getNode(nodeId));
|
|
126
|
+
const lines = [
|
|
127
|
+
`Path: ${[...path, node].map((n) => n.name).join(" > ")}`,
|
|
128
|
+
`At: ${node.name} (${node.node_type})`,
|
|
129
|
+
];
|
|
130
|
+
if (node.signature)
|
|
131
|
+
lines.push(node.signature);
|
|
132
|
+
if (source !== null)
|
|
133
|
+
lines.push("", source);
|
|
134
|
+
const down = this.peekDown();
|
|
135
|
+
const up = this.peekUp();
|
|
136
|
+
const external = this.graph
|
|
137
|
+
.getEdgesForNode(this.nodeId, { direction: "out" })
|
|
138
|
+
.filter((edge) => !edge.dst_id);
|
|
139
|
+
if (down.length)
|
|
140
|
+
lines.push("", "Children:", ...down.map(([e, n]) => `→ ${e.edge_type} ${n.name}`));
|
|
141
|
+
if (up.length)
|
|
142
|
+
lines.push("", "Parents:", ...up.map(([e, n]) => `← ${e.edge_type} ${n.name}`));
|
|
143
|
+
if (external.length) {
|
|
144
|
+
lines.push("", "External:", ...external.map((e) => `⇢ ${e.edge_type} ${e.low_level_name || "unknown"}`));
|
|
145
|
+
}
|
|
146
|
+
return lines.join("\n");
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
//# sourceMappingURL=cursor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../src/graph/cursor.ts"],"names":[],"mappings":"AASA;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,OAAO,WAAW;IACd,KAAK,CAAQ;IACtB,MAAM,CAAK;IACX,2DAA2D;IAC3D,IAAI,GAAoB,IAAI,GAAG,EAAE,CAAC;IAClC,KAAK,GAAqB,EAAE,CAAC;IAE7B,YAAY,KAAY,EAAE,MAAU;QACnC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACtB,CAAC;IAED,IAAI,IAAI;QACP,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IAED,IAAI,KAAK;QACR,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;IAC1B,CAAC;IAED,IAAI,IAAI;QACP,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC;IAED,IAAI,OAAO;QACV,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IAED;;;OAGG;IACH,cAAc;QACb,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QAC9B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE;YAC1D,SAAS,EAAE,KAAK;SAChB,CAAC,EAAE,CAAC;YACJ,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAAE,SAAS;YACrC,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YAC7C,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBACjB,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;gBACvD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;gBAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;YACvB,CAAC;YACD,OAAO,IAAI,CAAC;QACb,CAAC;QACD,OAAO,IAAI,CAAC;IACb,CAAC;IAED,eAAe,CAAC,QAAQ,GAAoB,IAAI;QAC/C,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QACzD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE;YAC1D,SAAS,EAAE,IAAI;YACf,QAAQ;SACR,CAAC,EAAE,CAAC;YACJ,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAAE,SAAS;YACrC,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YAC7C,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACvD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;YAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC;QACb,CAAC;QACD,OAAO,IAAI,CAAC;IACb,CAAC;IAED,eAAe;QACd,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACnE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YAAE,OAAO,IAAI,CAAC;QAE9B,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACnC,IAAI,IAAI,EAAE,MAAM;YAAE,OAAO,IAAI,CAAC;QAE9B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC;QAC7B,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QAC7D,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YACnB,gFAAgF;YAChF,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAU,CAAC;YAC9D,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC;QACnE,CAAC;QACD,OAAO,IAAI,CAAC;IACb,CAAC;IAED,IAAI;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC9C,IAAI,CAAC,GAAG;YAAE,OAAO,KAAK,CAAC;QACvB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;QAC/B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACrC,OAAO,IAAI,CAAC;IACb,CAAC;IAED,MAAM;QACL,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO,EAAE,CAAC;QACvD,OAAO,IAAI,CAAC,KAAK;aACf,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;aACjD,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aACzC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED,QAAQ;QACP,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO,EAAE,CAAC;QAC5B,MAAM,GAAG,GAA6C,EAAE,CAAC;QACzD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE;YAC1D,SAAS,EAAE,KAAK;SAChB,CAAC,EAAE,CAAC;YACJ,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACpD,CAAC;QACD,OAAO,GAAG,CAAC;IACZ,CAAC;IAED,MAAM,CAAC,MAAM,GAAkB,IAAI;QAClC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;QAEtE,MAAM,KAAK,GAAG;YACb,SAAS,CAAC,GAAG,IAAI,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YACzD,OAAO,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,SAAS,GAAG;SACtC,CAAC;QACF,IAAI,IAAI,CAAC,SAAS;YAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC/C,IAAI,MAAM,KAAK,IAAI;YAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QAE5C,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC7B,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK;aACzB,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;aAClD,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEjC,IAAI,IAAI,CAAC,MAAM;YACd,KAAK,CAAC,IAAI,CACT,EAAE,EACF,WAAW,EACX,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CACrD,CAAC;QACH,IAAI,EAAE,CAAC,MAAM;YACZ,KAAK,CAAC,IAAI,CACT,EAAE,EACF,UAAU,EACV,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CACnD,CAAC;QACH,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;YACrB,KAAK,CAAC,IAAI,CACT,EAAE,EACF,WAAW,EACX,GAAG,QAAQ,CAAC,GAAG,CACd,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,cAAc,IAAI,SAAS,EAAE,CAC1D,CACD,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;CACD"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { ConstraintItem, FieldMetadataItem } from "../types/graph-data.js";
|
|
2
|
+
/** Accessors for the constraints on a node field (e.g. Anchor account constraints). */
|
|
3
|
+
export declare class FieldMetadata {
|
|
4
|
+
readonly item: FieldMetadataItem;
|
|
5
|
+
constructor(item: FieldMetadataItem);
|
|
6
|
+
get constraints(): ConstraintItem[];
|
|
7
|
+
getConstraint(name: string): ConstraintItem | null;
|
|
8
|
+
hasConstraint(name: string): boolean;
|
|
9
|
+
isMutable(): boolean;
|
|
10
|
+
isInit(): boolean;
|
|
11
|
+
isInitIfNeeded(): boolean;
|
|
12
|
+
isSigner(): boolean;
|
|
13
|
+
payer(): ConstraintItem["value"];
|
|
14
|
+
space(): ConstraintItem["value"];
|
|
15
|
+
close(): ConstraintItem["value"];
|
|
16
|
+
address(): ConstraintItem["value"];
|
|
17
|
+
/** Values of every `has_one` constraint that carries a single string. */
|
|
18
|
+
hasOne(): string[];
|
|
19
|
+
seeds(): string[] | null;
|
|
20
|
+
constraint(): ConstraintItem["value"];
|
|
21
|
+
/** Serializes like the Python SDK's `FieldMetadataItem.to_dict` (omits `value` and empty fields). */
|
|
22
|
+
toDict(): FieldMetadataItem;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=field-metadata.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"field-metadata.d.ts","sourceRoot":"","sources":["../../src/graph/field-metadata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEhF,uFAAuF;AACvF,qBAAa,aAAa;IACzB,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IAEjC,YAAY,IAAI,EAAE,iBAAiB,EAElC;IAED,IAAI,WAAW,IAAI,cAAc,EAAE,CAElC;IAED,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAEjD;IAED,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEnC;IAED,SAAS,IAAI,OAAO,CAEnB;IAED,MAAM,IAAI,OAAO,CAEhB;IAED,cAAc,IAAI,OAAO,CAExB;IAED,QAAQ,IAAI,OAAO,CAElB;IAED,KAAK,IAAI,cAAc,CAAC,OAAO,CAAC,CAE/B;IAED,KAAK,IAAI,cAAc,CAAC,OAAO,CAAC,CAE/B;IAED,KAAK,IAAI,cAAc,CAAC,OAAO,CAAC,CAE/B;IAED,OAAO,IAAI,cAAc,CAAC,OAAO,CAAC,CAEjC;IAED,yEAAyE;IACzE,MAAM,IAAI,MAAM,EAAE,CAIjB;IAED,KAAK,IAAI,MAAM,EAAE,GAAG,IAAI,CAGvB;IAED,UAAU,IAAI,cAAc,CAAC,OAAO,CAAC,CAEpC;IAED,qGAAqG;IACrG,MAAM,IAAI,iBAAiB,CAkB1B;CACD"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/** Accessors for the constraints on a node field (e.g. Anchor account constraints). */
|
|
2
|
+
export class FieldMetadata {
|
|
3
|
+
item;
|
|
4
|
+
constructor(item) {
|
|
5
|
+
this.item = item;
|
|
6
|
+
}
|
|
7
|
+
get constraints() {
|
|
8
|
+
return this.item.constraints ?? [];
|
|
9
|
+
}
|
|
10
|
+
getConstraint(name) {
|
|
11
|
+
return this.constraints.find((c) => c.name === name) ?? null;
|
|
12
|
+
}
|
|
13
|
+
hasConstraint(name) {
|
|
14
|
+
return this.constraints.some((c) => c.name === name);
|
|
15
|
+
}
|
|
16
|
+
isMutable() {
|
|
17
|
+
return this.hasConstraint("mut");
|
|
18
|
+
}
|
|
19
|
+
isInit() {
|
|
20
|
+
return this.hasConstraint("init");
|
|
21
|
+
}
|
|
22
|
+
isInitIfNeeded() {
|
|
23
|
+
return this.hasConstraint("init_if_needed");
|
|
24
|
+
}
|
|
25
|
+
isSigner() {
|
|
26
|
+
return this.hasConstraint("signer");
|
|
27
|
+
}
|
|
28
|
+
payer() {
|
|
29
|
+
return this.getConstraint("payer")?.value ?? null;
|
|
30
|
+
}
|
|
31
|
+
space() {
|
|
32
|
+
return this.getConstraint("space")?.value ?? null;
|
|
33
|
+
}
|
|
34
|
+
close() {
|
|
35
|
+
return this.getConstraint("close")?.value ?? null;
|
|
36
|
+
}
|
|
37
|
+
address() {
|
|
38
|
+
return this.getConstraint("address")?.value ?? null;
|
|
39
|
+
}
|
|
40
|
+
/** Values of every `has_one` constraint that carries a single string. */
|
|
41
|
+
hasOne() {
|
|
42
|
+
return this.constraints
|
|
43
|
+
.filter((c) => c.name === "has_one" && typeof c.value === "string")
|
|
44
|
+
.map((c) => c.value);
|
|
45
|
+
}
|
|
46
|
+
seeds() {
|
|
47
|
+
const value = this.getConstraint("seeds")?.value;
|
|
48
|
+
return Array.isArray(value) ? value : null;
|
|
49
|
+
}
|
|
50
|
+
constraint() {
|
|
51
|
+
return this.getConstraint("constraint")?.value ?? null;
|
|
52
|
+
}
|
|
53
|
+
/** Serializes like the Python SDK's `FieldMetadataItem.to_dict` (omits `value` and empty fields). */
|
|
54
|
+
toDict() {
|
|
55
|
+
const out = { name: this.item.name };
|
|
56
|
+
if (this.item.type)
|
|
57
|
+
out.type = this.item.type;
|
|
58
|
+
if (this.item.mutability)
|
|
59
|
+
out.mutability = this.item.mutability;
|
|
60
|
+
if (this.item.discriminant !== null &&
|
|
61
|
+
this.item.discriminant !== undefined) {
|
|
62
|
+
out.discriminant = this.item.discriminant;
|
|
63
|
+
}
|
|
64
|
+
if (this.constraints.length) {
|
|
65
|
+
out.constraints = this.constraints.map((c) => c.value === null || c.value === undefined
|
|
66
|
+
? { name: c.name }
|
|
67
|
+
: { name: c.name, value: c.value });
|
|
68
|
+
}
|
|
69
|
+
return out;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=field-metadata.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"field-metadata.js","sourceRoot":"","sources":["../../src/graph/field-metadata.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import type { BevorClient } from "../client.js";
|
|
2
|
+
import type { EdgeDirection, EdgeType, ID, Language } from "../types/literals.js";
|
|
3
|
+
import type { GraphSnapshotEdge, GraphSnapshotFile, GraphSnapshotNode } from "../types/responses.js";
|
|
4
|
+
import { CallNode } from "./call-node.js";
|
|
5
|
+
import { GraphCursor } from "./cursor.js";
|
|
6
|
+
export interface GraphSnapshot {
|
|
7
|
+
nodes: GraphSnapshotNode[];
|
|
8
|
+
edges: GraphSnapshotEdge[];
|
|
9
|
+
files: GraphSnapshotFile[];
|
|
10
|
+
}
|
|
11
|
+
export interface EdgeFilter {
|
|
12
|
+
direction?: EdgeDirection | null;
|
|
13
|
+
edgeType?: EdgeType | null;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Language-agnostic graph view for one code version, backed by HTTP only.
|
|
17
|
+
*
|
|
18
|
+
* Call `build()` after construction, or use `Graph.fromSnapshot` for an already-fetched snapshot.
|
|
19
|
+
*/
|
|
20
|
+
export declare class Graph {
|
|
21
|
+
#private;
|
|
22
|
+
readonly codeId: ID;
|
|
23
|
+
edges: GraphSnapshotEdge[];
|
|
24
|
+
fileMap: Map<string, GraphSnapshotFile>;
|
|
25
|
+
/** file id -> ids of the nodes in that file */
|
|
26
|
+
sourceMap: Map<string, string[]>;
|
|
27
|
+
nodeMap: Map<string, GraphSnapshotNode>;
|
|
28
|
+
/** short id -> id */
|
|
29
|
+
idMap: Map<string, string>;
|
|
30
|
+
/** id -> short id */
|
|
31
|
+
reverseIdMap: Map<string, string>;
|
|
32
|
+
constructor(client: BevorClient, codeId: ID);
|
|
33
|
+
static fromSnapshot(client: BevorClient, codeId: ID, snapshot: GraphSnapshot): Graph;
|
|
34
|
+
get isBuilt(): boolean;
|
|
35
|
+
/** Fetches the snapshot (nodes, edges and files). No-op once built. */
|
|
36
|
+
build(): Promise<void>;
|
|
37
|
+
/** Fetches a file's text once and caches it. */
|
|
38
|
+
getFileContent(fileId: ID): Promise<string>;
|
|
39
|
+
/**
|
|
40
|
+
* The node's source, with oversized hex/string literals elided.
|
|
41
|
+
* With `withDocstring`, prefixes the docstring, following `@inheritdoc` to the referenced natspec.
|
|
42
|
+
*/
|
|
43
|
+
reconstructChunk(nodeId: ID, { withDocstring }?: {
|
|
44
|
+
withDocstring?: boolean;
|
|
45
|
+
}): Promise<string>;
|
|
46
|
+
static reconstruct(node: GraphSnapshotNode, source: Uint8Array, docstring?: string | null): string;
|
|
47
|
+
getShortFromId(nodeId: ID): string;
|
|
48
|
+
getIdFromShort(shortId: string): ID;
|
|
49
|
+
getAllNodes(): GraphSnapshotNode[];
|
|
50
|
+
/** Nodes with no incoming edges. */
|
|
51
|
+
getRootNodes(): GraphSnapshotNode[];
|
|
52
|
+
getAllFiles(): GraphSnapshotFile[];
|
|
53
|
+
exists(nodeId: ID): boolean;
|
|
54
|
+
existsShortId(shortId: string): boolean;
|
|
55
|
+
getNode(nodeId: ID): GraphSnapshotNode;
|
|
56
|
+
getFile(fileId: ID): GraphSnapshotFile;
|
|
57
|
+
/** Distinct languages in this snapshot (e.g. Solidity + Rust in a monorepo). */
|
|
58
|
+
get languages(): ReadonlySet<Language>;
|
|
59
|
+
getNodeLanguage(nodeId: ID): Language;
|
|
60
|
+
/**
|
|
61
|
+
* Edges touching a node: outgoing first (by source position), then incoming.
|
|
62
|
+
* Each returned edge is a copy with `direction` set relative to `nodeId`.
|
|
63
|
+
*/
|
|
64
|
+
getEdgesForNode(nodeId: ID, { direction, edgeType }?: EdgeFilter): GraphSnapshotEdge[];
|
|
65
|
+
/** All edges, optionally of one type. Edges have no direction unless queried against a node. */
|
|
66
|
+
getEdges({ edgeType, }?: {
|
|
67
|
+
edgeType?: EdgeType | null;
|
|
68
|
+
}): GraphSnapshotEdge[];
|
|
69
|
+
/** Resolves a snapshot edge by its row id. */
|
|
70
|
+
getEdgeById(edgeId: ID): GraphSnapshotEdge | null;
|
|
71
|
+
/** Walks incoming edges until it reaches a node of `nodeType`. */
|
|
72
|
+
traverseUpToNodeType(nodeId: ID, nodeType: string): GraphSnapshotNode | null;
|
|
73
|
+
getNodesInFile(fileId: ID): ID[];
|
|
74
|
+
/** Shortest path length treating the graph as undirected (-1 if disconnected). */
|
|
75
|
+
getDistance(fromNodeId: ID, toNodeId: ID): number;
|
|
76
|
+
/** True if `parentId` is reachable from `childId` following incoming `calls` edges. */
|
|
77
|
+
isDescendant(childId: ID, parentId: ID): boolean;
|
|
78
|
+
getCallChain(nodeId: ID): CallNode;
|
|
79
|
+
cursor(nodeId: ID): GraphCursor;
|
|
80
|
+
/** Depth-first search along outgoing edges for a node with `merkleHash`. */
|
|
81
|
+
getDescendantByMerkle(nodeId: ID, merkleHash: string): ID | null;
|
|
82
|
+
getCallableTypes(language: Language): Set<string>;
|
|
83
|
+
getDeclarationTypes(language: Language): Set<string>;
|
|
84
|
+
getExcludeTypes(language: Language): Set<string>;
|
|
85
|
+
getContainerTypes(language: Language): Set<string>;
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=graph.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../src/graph/graph.ts"],"names":[],"mappings":"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"}
|