vue-hook-optimizer 0.0.10 → 0.0.12
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 +5 -4
- package/dist/index.d.mts +38 -6
- package/dist/index.d.ts +38 -6
- package/dist/index.js +220 -13
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +220 -13
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
[](https://www.npmjs.com/package/vue-hook-optimizer)
|
2
|
+
<a href="https://marketplace.visualstudio.com/items?itemName=zcf0508.vue-hook-optimizer-ext" target="__blank"><img src="https://img.shields.io/visual-studio-marketplace/v/zcf0508.vue-hook-optimizer-ext.svg?color=eee&label=VS%20Code%20Marketplace&logo=visual-studio-code" alt="Visual Studio Marketplace Version" /></a>
|
2
3
|
|
3
4
|
[中文文档](./README_cn.md)
|
4
5
|
|
5
|
-
This is a tool to analyze your `vue` code.
|
6
|
+
This is a tool to analyze your `vue` code. Viste [hook.huali.cafe](https://hook.huali.cafe) or try the vscode extension [vue-hook-optimizer-ext](https://marketplace.visualstudio.com/items?itemName=zcf0508.vue-hook-optimizer-ext).
|
6
7
|
|
7
8
|
## Install And Run Playground
|
8
9
|
|
@@ -21,11 +22,11 @@ Open the browser and visit `http://localhost:3000/`.
|
|
21
22
|
|
22
23
|
1. paste your `vue` code into the editor
|
23
24
|
|
24
|
-
Up to now, it only supports the code with `<script setup>` syntax block.If your code use `options api`, it's not working at the moment
|
25
|
+
~~Up to now, it only supports the code with `<script setup>` syntax block.If your code use `options api`, it's not working at the moment.~~
|
25
26
|
|
26
27
|
2. click `Analyze` button
|
27
28
|
|
28
|
-
The tool will analyze the
|
29
|
+
The tool will analyze the code, and show the relations between the variables and the methods. This is a simple demo.
|
29
30
|
|
30
31
|

|
31
32
|
|
@@ -37,7 +38,7 @@ So I want to build a tool to help us analyze the code, and find the relations be
|
|
37
38
|
|
38
39
|
## Development Plan
|
39
40
|
|
40
|
-
- [ ] add node type and more info
|
41
|
+
- [ ] add ~~node type~~ (has added `var` and `fun` types) and more info
|
41
42
|
- [ ] provide some suggestions for optimization
|
42
43
|
- [x] support `options api`
|
43
44
|
- [x] [vscode extension](./packages/vscode)
|
package/dist/index.d.mts
CHANGED
@@ -3,19 +3,51 @@ import * as vis_network from 'vis-network';
|
|
3
3
|
|
4
4
|
declare function analyze$2(content: string): Set<string>;
|
5
5
|
|
6
|
+
declare enum NodeType {
|
7
|
+
var = "var",
|
8
|
+
fun = "fun"
|
9
|
+
}
|
10
|
+
|
6
11
|
declare function analyze$1(content: string): {
|
7
|
-
nodes: Set<
|
8
|
-
|
12
|
+
nodes: Set<{
|
13
|
+
label: string;
|
14
|
+
type: NodeType;
|
15
|
+
}>;
|
16
|
+
edges: Map<{
|
17
|
+
label: string;
|
18
|
+
type: NodeType;
|
19
|
+
}, Set<{
|
20
|
+
label: string;
|
21
|
+
type: NodeType;
|
22
|
+
}>>;
|
9
23
|
};
|
10
24
|
|
11
25
|
declare function analyze(content: string): {
|
12
|
-
nodes: Set<
|
13
|
-
|
26
|
+
nodes: Set<{
|
27
|
+
label: string;
|
28
|
+
type: NodeType;
|
29
|
+
}>;
|
30
|
+
edges: Map<{
|
31
|
+
label: string;
|
32
|
+
type: NodeType;
|
33
|
+
}, Set<{
|
34
|
+
label: string;
|
35
|
+
type: NodeType;
|
36
|
+
}>>;
|
14
37
|
};
|
15
38
|
|
16
39
|
declare function getVisData(graph: {
|
17
|
-
nodes: Set<
|
18
|
-
|
40
|
+
nodes: Set<{
|
41
|
+
label: string;
|
42
|
+
type: string;
|
43
|
+
}>;
|
44
|
+
edges: Map<{
|
45
|
+
label: string;
|
46
|
+
type: string;
|
47
|
+
}, Set<{
|
48
|
+
label: string;
|
49
|
+
type: string;
|
50
|
+
}>>;
|
19
51
|
}, usedNodes: Set<string>): {
|
20
52
|
nodes: vis_network.Node[];
|
21
53
|
edges: vis_network.Edge[];
|
package/dist/index.d.ts
CHANGED
@@ -3,19 +3,51 @@ import * as vis_network from 'vis-network';
|
|
3
3
|
|
4
4
|
declare function analyze$2(content: string): Set<string>;
|
5
5
|
|
6
|
+
declare enum NodeType {
|
7
|
+
var = "var",
|
8
|
+
fun = "fun"
|
9
|
+
}
|
10
|
+
|
6
11
|
declare function analyze$1(content: string): {
|
7
|
-
nodes: Set<
|
8
|
-
|
12
|
+
nodes: Set<{
|
13
|
+
label: string;
|
14
|
+
type: NodeType;
|
15
|
+
}>;
|
16
|
+
edges: Map<{
|
17
|
+
label: string;
|
18
|
+
type: NodeType;
|
19
|
+
}, Set<{
|
20
|
+
label: string;
|
21
|
+
type: NodeType;
|
22
|
+
}>>;
|
9
23
|
};
|
10
24
|
|
11
25
|
declare function analyze(content: string): {
|
12
|
-
nodes: Set<
|
13
|
-
|
26
|
+
nodes: Set<{
|
27
|
+
label: string;
|
28
|
+
type: NodeType;
|
29
|
+
}>;
|
30
|
+
edges: Map<{
|
31
|
+
label: string;
|
32
|
+
type: NodeType;
|
33
|
+
}, Set<{
|
34
|
+
label: string;
|
35
|
+
type: NodeType;
|
36
|
+
}>>;
|
14
37
|
};
|
15
38
|
|
16
39
|
declare function getVisData(graph: {
|
17
|
-
nodes: Set<
|
18
|
-
|
40
|
+
nodes: Set<{
|
41
|
+
label: string;
|
42
|
+
type: string;
|
43
|
+
}>;
|
44
|
+
edges: Map<{
|
45
|
+
label: string;
|
46
|
+
type: string;
|
47
|
+
}, Set<{
|
48
|
+
label: string;
|
49
|
+
type: string;
|
50
|
+
}>>;
|
19
51
|
}, usedNodes: Set<string>): {
|
20
52
|
nodes: vis_network.Node[];
|
21
53
|
edges: vis_network.Edge[];
|
package/dist/index.js
CHANGED
@@ -86273,14 +86273,63 @@ function analyze(content) {
|
|
86273
86273
|
|
86274
86274
|
// src/analyze/setupScript.ts
|
86275
86275
|
var import_traverse2 = __toESM(require_lib13());
|
86276
|
+
|
86277
|
+
// src/analyze/utils.ts
|
86278
|
+
var NodeCollection = class {
|
86279
|
+
nodes = /* @__PURE__ */ new Map();
|
86280
|
+
addNode(label, node2, options = { isComputed: false }) {
|
86281
|
+
if (this.nodes.has(label)) {
|
86282
|
+
return;
|
86283
|
+
}
|
86284
|
+
if (!options.isComputed && (node2.type === "VariableDeclarator" && [
|
86285
|
+
"ArrowFunctionExpression",
|
86286
|
+
"FunctionDeclaration"
|
86287
|
+
].includes(node2.init?.type || "") || node2.type === "FunctionDeclaration" || node2.type === "ObjectMethod")) {
|
86288
|
+
this.nodes.set(label, {
|
86289
|
+
label,
|
86290
|
+
type: "fun" /* fun */
|
86291
|
+
});
|
86292
|
+
} else {
|
86293
|
+
this.nodes.set(label, {
|
86294
|
+
label,
|
86295
|
+
type: "var" /* var */
|
86296
|
+
});
|
86297
|
+
}
|
86298
|
+
}
|
86299
|
+
addTypedNode(label, node2) {
|
86300
|
+
this.nodes.set(label, {
|
86301
|
+
label,
|
86302
|
+
type: node2.type
|
86303
|
+
});
|
86304
|
+
}
|
86305
|
+
map(graph) {
|
86306
|
+
const nodes = new Set(Array.from(graph.nodes).map((node2) => {
|
86307
|
+
return this.nodes.get(node2);
|
86308
|
+
}).filter((node2) => !!node2));
|
86309
|
+
const edges = new Map(Array.from(graph.edges).map(([from2, to]) => {
|
86310
|
+
return [this.nodes.get(from2), new Set(Array.from(to).map((node2) => {
|
86311
|
+
return this.nodes.get(node2);
|
86312
|
+
}).filter((node2) => !!node2))];
|
86313
|
+
}));
|
86314
|
+
return {
|
86315
|
+
nodes,
|
86316
|
+
edges
|
86317
|
+
};
|
86318
|
+
}
|
86319
|
+
};
|
86320
|
+
|
86321
|
+
// src/analyze/setupScript.ts
|
86276
86322
|
var traverse2 = (
|
86277
86323
|
//@ts-ignore
|
86278
86324
|
import_traverse2.default.default?.default || import_traverse2.default.default || import_traverse2.default
|
86279
86325
|
);
|
86280
|
-
function processSetup(ast, parentScope, parentPath) {
|
86326
|
+
function processSetup(ast, parentScope, parentPath, _spread) {
|
86327
|
+
const spread = _spread || [];
|
86328
|
+
const nodeCollection = new NodeCollection();
|
86281
86329
|
const graph = {
|
86282
86330
|
nodes: /* @__PURE__ */ new Set(),
|
86283
|
-
edges: /* @__PURE__ */ new Map()
|
86331
|
+
edges: /* @__PURE__ */ new Map(),
|
86332
|
+
spread: /* @__PURE__ */ new Map()
|
86284
86333
|
};
|
86285
86334
|
traverse2(ast, {
|
86286
86335
|
VariableDeclaration(path2) {
|
@@ -86292,6 +86341,7 @@ function processSetup(ast, parentScope, parentPath) {
|
|
86292
86341
|
const binding2 = path2.scope.getBinding(name);
|
86293
86342
|
if (binding2 && (path2.parent.type === "Program" || parentPath?.type === "ObjectMethod" && parentPath.body === path2.parent) && !(declaration2.init?.type === "CallExpression" && declaration2.init?.callee.type === "Identifier" && ["defineProps", "defineEmits"].includes(declaration2.init?.callee.name))) {
|
86294
86343
|
graph.nodes.add(name);
|
86344
|
+
nodeCollection.addNode(name, declaration2);
|
86295
86345
|
if (!graph.edges.get(name)) {
|
86296
86346
|
graph.edges.set(name, /* @__PURE__ */ new Set());
|
86297
86347
|
}
|
@@ -86306,6 +86356,7 @@ function processSetup(ast, parentScope, parentPath) {
|
|
86306
86356
|
const binding2 = path2.scope.getBinding(name);
|
86307
86357
|
if (binding2 && (path2.parent.type === "Program" || parentPath?.type === "ObjectMethod" && parentPath.body === path2.parent) && !(declaration2.init?.type === "CallExpression" && declaration2.init?.callee.type === "Identifier" && ["defineProps", "defineEmits"].includes(declaration2.init?.callee.name))) {
|
86308
86358
|
graph.nodes.add(name);
|
86359
|
+
nodeCollection.addNode(name, declaration2);
|
86309
86360
|
if (!graph.edges.get(name)) {
|
86310
86361
|
graph.edges.set(name, /* @__PURE__ */ new Set());
|
86311
86362
|
}
|
@@ -86318,9 +86369,53 @@ function processSetup(ast, parentScope, parentPath) {
|
|
86318
86369
|
const binding2 = path2.scope.getBinding(name);
|
86319
86370
|
if (binding2 && (path2.parent.type === "Program" || parentPath?.type === "ObjectMethod" && parentPath.body === path2.parent) && !(declaration2.init?.type === "CallExpression" && declaration2.init?.callee.type === "Identifier" && ["defineProps", "defineEmits"].includes(declaration2.init?.callee.name))) {
|
86320
86371
|
graph.nodes.add(name);
|
86372
|
+
nodeCollection.addNode(name, declaration2);
|
86321
86373
|
if (!graph.edges.get(name)) {
|
86322
86374
|
graph.edges.set(name, /* @__PURE__ */ new Set());
|
86323
86375
|
}
|
86376
|
+
if (spread.includes(name)) {
|
86377
|
+
if (declaration2.init?.type === "ObjectExpression") {
|
86378
|
+
declaration2.init?.properties.forEach((prop) => {
|
86379
|
+
if ((prop.type === "ObjectProperty" || prop.type === "ObjectMethod") && prop.key.type === "Identifier") {
|
86380
|
+
const keyName = prop.key.name;
|
86381
|
+
graph.nodes.add(keyName);
|
86382
|
+
nodeCollection.addNode(keyName, prop);
|
86383
|
+
if (!graph.edges.get(keyName)) {
|
86384
|
+
graph.edges.set(keyName, /* @__PURE__ */ new Set());
|
86385
|
+
}
|
86386
|
+
if (graph.spread.has(name)) {
|
86387
|
+
graph.spread.get(name)?.add(keyName);
|
86388
|
+
} else {
|
86389
|
+
graph.spread.set(name, /* @__PURE__ */ new Set([keyName]));
|
86390
|
+
}
|
86391
|
+
} else if (prop.type === "SpreadElement") {
|
86392
|
+
console.warn("not support spread in spread");
|
86393
|
+
}
|
86394
|
+
});
|
86395
|
+
}
|
86396
|
+
if (declaration2.init?.type === "CallExpression" && declaration2.init?.callee.type === "Identifier" && declaration2.init?.callee.name === "reactive") {
|
86397
|
+
const arg = declaration2.init?.arguments[0];
|
86398
|
+
if (arg.type === "ObjectExpression") {
|
86399
|
+
arg.properties.forEach((prop) => {
|
86400
|
+
if ((prop.type === "ObjectProperty" || prop.type === "ObjectMethod") && prop.key.type === "Identifier") {
|
86401
|
+
const keyName = prop.key.name;
|
86402
|
+
graph.nodes.add(keyName);
|
86403
|
+
nodeCollection.addNode(keyName, prop);
|
86404
|
+
if (!graph.edges.get(keyName)) {
|
86405
|
+
graph.edges.set(keyName, /* @__PURE__ */ new Set());
|
86406
|
+
}
|
86407
|
+
if (graph.spread.has(name)) {
|
86408
|
+
graph.spread.get(name)?.add(keyName);
|
86409
|
+
} else {
|
86410
|
+
graph.spread.set(name, /* @__PURE__ */ new Set([keyName]));
|
86411
|
+
}
|
86412
|
+
} else if (prop.type === "SpreadElement") {
|
86413
|
+
console.warn("not support spread in spread");
|
86414
|
+
}
|
86415
|
+
});
|
86416
|
+
}
|
86417
|
+
}
|
86418
|
+
}
|
86324
86419
|
}
|
86325
86420
|
}
|
86326
86421
|
});
|
@@ -86331,6 +86426,7 @@ function processSetup(ast, parentScope, parentPath) {
|
|
86331
86426
|
const binding2 = path2.scope.getBinding(name);
|
86332
86427
|
if (binding2 && (path2.parent.type === "Program" || parentPath?.type === "ObjectMethod" && parentPath.body === path2.parent)) {
|
86333
86428
|
graph.nodes.add(name);
|
86429
|
+
nodeCollection.addNode(name, path2.node);
|
86334
86430
|
if (!graph.edges.get(name)) {
|
86335
86431
|
graph.edges.set(name, /* @__PURE__ */ new Set());
|
86336
86432
|
}
|
@@ -86348,6 +86444,14 @@ function processSetup(ast, parentScope, parentPath) {
|
|
86348
86444
|
if (graph.nodes.has(path1.node.name) && path1.node.name !== name && (binding2?.scope.block.type === "Program" || parentScope === binding2?.scope)) {
|
86349
86445
|
graph.edges.get(name)?.add(path1.node.name);
|
86350
86446
|
}
|
86447
|
+
},
|
86448
|
+
MemberExpression(path1) {
|
86449
|
+
if (path1.node.object.type === "Identifier" && spread.includes(path1.node.object.name)) {
|
86450
|
+
const binding2 = path1.scope.getBinding(path1.node.object.name);
|
86451
|
+
if (spread.includes(path1.node.object.name) && path1.node.property.type === "Identifier" && path1.node.property.name !== name && (binding2?.scope.block.type === "Program" || parentScope === binding2?.scope)) {
|
86452
|
+
graph.edges.get(name)?.add(path1.node.property.name);
|
86453
|
+
}
|
86454
|
+
}
|
86351
86455
|
}
|
86352
86456
|
});
|
86353
86457
|
}
|
@@ -86365,6 +86469,14 @@ function processSetup(ast, parentScope, parentPath) {
|
|
86365
86469
|
if (graph.nodes.has(path1.node.name) && path1.node.name !== name && (binding2?.scope.block.type === "Program" || parentScope === binding2?.scope)) {
|
86366
86470
|
graph.edges.get(name)?.add(path1.node.name);
|
86367
86471
|
}
|
86472
|
+
},
|
86473
|
+
MemberExpression(path1) {
|
86474
|
+
if (path1.node.object.type === "Identifier" && spread.includes(path1.node.object.name)) {
|
86475
|
+
const binding2 = path1.scope.getBinding(path1.node.object.name);
|
86476
|
+
if (spread.includes(path1.node.object.name) && path1.node.property.type === "Identifier" && path1.node.property.name !== name && (binding2?.scope.block.type === "Program" || parentScope === binding2?.scope)) {
|
86477
|
+
graph.edges.get(name)?.add(path1.node.property.name);
|
86478
|
+
}
|
86479
|
+
}
|
86368
86480
|
}
|
86369
86481
|
}, path2.scope, path2);
|
86370
86482
|
}
|
@@ -86382,6 +86494,14 @@ function processSetup(ast, parentScope, parentPath) {
|
|
86382
86494
|
if (graph.nodes.has(path1.node.name) && path1.node.name !== name && (binding2?.scope.block.type === "Program" || parentScope === binding2?.scope)) {
|
86383
86495
|
graph.edges.get(name)?.add(path1.node.name);
|
86384
86496
|
}
|
86497
|
+
},
|
86498
|
+
MemberExpression(path1) {
|
86499
|
+
if (path1.node.object.type === "Identifier" && spread.includes(path1.node.object.name)) {
|
86500
|
+
const binding2 = path1.scope.getBinding(path1.node.object.name);
|
86501
|
+
if (spread.includes(path1.node.object.name) && path1.node.property.type === "Identifier" && path1.node.property.name !== name && (binding2?.scope.block.type === "Program" || parentScope === binding2?.scope)) {
|
86502
|
+
graph.edges.get(name)?.add(path1.node.property.name);
|
86503
|
+
}
|
86504
|
+
}
|
86385
86505
|
}
|
86386
86506
|
}, path2.scope, path2);
|
86387
86507
|
}
|
@@ -86401,14 +86521,44 @@ function processSetup(ast, parentScope, parentPath) {
|
|
86401
86521
|
if (graph.nodes.has(path1.node.name) && path1.node.name !== name && (binding2?.scope.block.type === "Program" || parentScope === binding2?.scope)) {
|
86402
86522
|
graph.edges.get(name)?.add(path1.node.name);
|
86403
86523
|
}
|
86524
|
+
},
|
86525
|
+
MemberExpression(path1) {
|
86526
|
+
if (path1.node.object.type === "Identifier" && spread.includes(path1.node.object.name)) {
|
86527
|
+
const binding2 = path1.scope.getBinding(path1.node.object.name);
|
86528
|
+
if (spread.includes(path1.node.object.name) && path1.node.property.type === "Identifier" && path1.node.property.name !== name && (binding2?.scope.block.type === "Program" || parentScope === binding2?.scope)) {
|
86529
|
+
graph.edges.get(name)?.add(path1.node.property.name);
|
86530
|
+
}
|
86531
|
+
}
|
86404
86532
|
}
|
86405
86533
|
}, path2.scope, path2);
|
86406
86534
|
}
|
86407
86535
|
}
|
86408
86536
|
}
|
86537
|
+
},
|
86538
|
+
ObjectMethod(path2) {
|
86539
|
+
if (path2.node.key.type === "Identifier" && graph.nodes.has(path2.node.key.name)) {
|
86540
|
+
const name = path2.node.key.name;
|
86541
|
+
path2.traverse({
|
86542
|
+
Identifier(path1) {
|
86543
|
+
if (graph.nodes.has(path1.node.name) && path1.node.name !== name) {
|
86544
|
+
graph.edges.get(name)?.add(path1.node.name);
|
86545
|
+
}
|
86546
|
+
},
|
86547
|
+
MemberExpression(path1) {
|
86548
|
+
if (path1.node.object.type === "Identifier" && spread.includes(path1.node.object.name)) {
|
86549
|
+
if (spread.includes(path1.node.object.name) && path1.node.property.type === "Identifier" && path1.node.property.name !== name) {
|
86550
|
+
graph.edges.get(name)?.add(path1.node.property.name);
|
86551
|
+
}
|
86552
|
+
}
|
86553
|
+
}
|
86554
|
+
});
|
86555
|
+
}
|
86409
86556
|
}
|
86410
86557
|
}, parentScope, parentPath);
|
86411
|
-
return
|
86558
|
+
return {
|
86559
|
+
graph,
|
86560
|
+
nodeCollection
|
86561
|
+
};
|
86412
86562
|
}
|
86413
86563
|
function analyze2(content) {
|
86414
86564
|
const ast = parse_1$1(content, {
|
@@ -86417,7 +86567,8 @@ function analyze2(content) {
|
|
86417
86567
|
"typescript"
|
86418
86568
|
]
|
86419
86569
|
});
|
86420
|
-
|
86570
|
+
const { graph, nodeCollection } = processSetup(ast);
|
86571
|
+
return nodeCollection.map(graph);
|
86421
86572
|
}
|
86422
86573
|
|
86423
86574
|
// src/analyze/options.ts
|
@@ -86433,6 +86584,7 @@ function analyze3(content) {
|
|
86433
86584
|
"typescript"
|
86434
86585
|
]
|
86435
86586
|
});
|
86587
|
+
const nodeCollection = new NodeCollection();
|
86436
86588
|
const graph = {
|
86437
86589
|
nodes: /* @__PURE__ */ new Set(),
|
86438
86590
|
edges: /* @__PURE__ */ new Map()
|
@@ -86449,6 +86601,9 @@ function analyze3(content) {
|
|
86449
86601
|
if (prop.key.type === "Identifier") {
|
86450
86602
|
const name = prop.key.name;
|
86451
86603
|
graph.nodes.add(name);
|
86604
|
+
nodeCollection.addNode(name, prop, {
|
86605
|
+
isComputed: true
|
86606
|
+
});
|
86452
86607
|
if (!graph.edges.get(name)) {
|
86453
86608
|
graph.edges.set(name, /* @__PURE__ */ new Set());
|
86454
86609
|
}
|
@@ -86465,6 +86620,7 @@ function analyze3(content) {
|
|
86465
86620
|
if (prop.key.type === "Identifier") {
|
86466
86621
|
const name = prop.key.name;
|
86467
86622
|
graph.nodes.add(name);
|
86623
|
+
nodeCollection.addNode(name, prop);
|
86468
86624
|
if (!graph.edges.get(name)) {
|
86469
86625
|
graph.edges.set(name, /* @__PURE__ */ new Set());
|
86470
86626
|
}
|
@@ -86479,10 +86635,31 @@ function analyze3(content) {
|
|
86479
86635
|
if (path2.node.declaration.type === "ObjectExpression" && path1.parent === path2.node.declaration || path2.node.declaration.type === "CallExpression" && path1.parent === path2.node.declaration.arguments[0]) {
|
86480
86636
|
if (path1.node.key.type === "Identifier" && path1.node.key.name === "setup") {
|
86481
86637
|
const setupNode = path1.node;
|
86638
|
+
const spread = [];
|
86639
|
+
traverse3(setupNode, {
|
86640
|
+
ReturnStatement(path22) {
|
86641
|
+
if (path22.node.argument?.type === "ObjectExpression") {
|
86642
|
+
const returnNode = path22.node.argument;
|
86643
|
+
traverse3(returnNode, {
|
86644
|
+
SpreadElement(path3) {
|
86645
|
+
if (path3.node.argument.type === "CallExpression" && path3.node.argument.callee.type === "Identifier" && path3.node.argument.callee.name === "toRefs" && path3.node.argument.arguments[0].type === "Identifier") {
|
86646
|
+
spread.push(path3.node.argument.arguments[0].name);
|
86647
|
+
} else if (path3.node.argument.type === "Identifier") {
|
86648
|
+
spread.push(path3.node.argument.name);
|
86649
|
+
}
|
86650
|
+
}
|
86651
|
+
}, path22.scope, path22);
|
86652
|
+
}
|
86653
|
+
}
|
86654
|
+
}, path1.scope, path1);
|
86482
86655
|
const {
|
86483
|
-
|
86484
|
-
|
86485
|
-
|
86656
|
+
graph: {
|
86657
|
+
nodes: tempNodes,
|
86658
|
+
edges: tempEdges,
|
86659
|
+
spread: tempSpread
|
86660
|
+
},
|
86661
|
+
nodeCollection: tempNodeCollection
|
86662
|
+
} = processSetup(setupNode, path1.scope, setupNode, spread);
|
86486
86663
|
traverse3(setupNode, {
|
86487
86664
|
ReturnStatement(path22) {
|
86488
86665
|
if (path22.node.argument?.type === "ObjectExpression") {
|
@@ -86495,6 +86672,7 @@ function analyze3(content) {
|
|
86495
86672
|
const valName = path3.node.value.type === "Identifier" ? path3.node.value.name : "";
|
86496
86673
|
if (valName && tempNodes.has(valName)) {
|
86497
86674
|
graph.nodes.add(name);
|
86675
|
+
nodeCollection.addTypedNode(name, tempNodeCollection.nodes.get(valName));
|
86498
86676
|
if (!graph.edges.get(name)) {
|
86499
86677
|
graph.edges.set(name, /* @__PURE__ */ new Set());
|
86500
86678
|
tempEdges.get(valName)?.forEach((edge) => {
|
@@ -86504,6 +86682,31 @@ function analyze3(content) {
|
|
86504
86682
|
}
|
86505
86683
|
}
|
86506
86684
|
}
|
86685
|
+
},
|
86686
|
+
SpreadElement(path3) {
|
86687
|
+
if (path3.node.argument.type === "CallExpression" && path3.node.argument.callee.type === "Identifier" && path3.node.argument.callee.name === "toRefs" && path3.node.argument.arguments[0].type === "Identifier" && tempSpread.get(path3.node.argument.arguments[0].name)) {
|
86688
|
+
tempSpread.get(path3.node.argument.arguments[0].name)?.forEach((name) => {
|
86689
|
+
graph.nodes.add(name);
|
86690
|
+
nodeCollection.addTypedNode(name, tempNodeCollection.nodes.get(name));
|
86691
|
+
if (!graph.edges.get(name)) {
|
86692
|
+
graph.edges.set(name, /* @__PURE__ */ new Set());
|
86693
|
+
tempEdges.get(name)?.forEach((edge) => {
|
86694
|
+
graph.edges.get(name)?.add(edge);
|
86695
|
+
});
|
86696
|
+
}
|
86697
|
+
});
|
86698
|
+
} else if (path3.node.argument.type === "Identifier" && tempSpread.get(path3.node.argument.name)) {
|
86699
|
+
tempSpread.get(path3.node.argument.name)?.forEach((name) => {
|
86700
|
+
graph.nodes.add(name);
|
86701
|
+
nodeCollection.addTypedNode(name, tempNodeCollection.nodes.get(name));
|
86702
|
+
if (!graph.edges.get(name)) {
|
86703
|
+
graph.edges.set(name, /* @__PURE__ */ new Set());
|
86704
|
+
tempEdges.get(name)?.forEach((edge) => {
|
86705
|
+
graph.edges.get(name)?.add(edge);
|
86706
|
+
});
|
86707
|
+
}
|
86708
|
+
});
|
86709
|
+
}
|
86507
86710
|
}
|
86508
86711
|
}, path22.scope, path22);
|
86509
86712
|
} else {
|
@@ -86523,6 +86726,7 @@ function analyze3(content) {
|
|
86523
86726
|
if (prop.key.type === "Identifier") {
|
86524
86727
|
const name = prop.key.name;
|
86525
86728
|
graph.nodes.add(name);
|
86729
|
+
nodeCollection.addNode(name, prop);
|
86526
86730
|
if (!graph.edges.get(name)) {
|
86527
86731
|
graph.edges.set(name, /* @__PURE__ */ new Set());
|
86528
86732
|
}
|
@@ -86601,7 +86805,7 @@ function analyze3(content) {
|
|
86601
86805
|
}
|
86602
86806
|
}
|
86603
86807
|
});
|
86604
|
-
return graph;
|
86808
|
+
return nodeCollection.map(graph);
|
86605
86809
|
}
|
86606
86810
|
|
86607
86811
|
// src/vis.ts
|
@@ -86610,16 +86814,19 @@ function getVisData(graph, usedNodes) {
|
|
86610
86814
|
const edges = [];
|
86611
86815
|
graph.nodes.forEach((node2) => {
|
86612
86816
|
nodes.push({
|
86613
|
-
id: node2,
|
86614
|
-
label: node2,
|
86615
|
-
|
86817
|
+
id: node2.label,
|
86818
|
+
label: node2.label,
|
86819
|
+
shape: node2.type === "var" ? "dot" : "diamond",
|
86820
|
+
group: usedNodes.has(node2.label) ? "used" : "normal"
|
86616
86821
|
});
|
86617
86822
|
});
|
86618
86823
|
graph.edges.forEach((edge, key) => {
|
86619
86824
|
edge.forEach((to) => {
|
86825
|
+
if (!to)
|
86826
|
+
return;
|
86620
86827
|
edges.push({
|
86621
|
-
from: key,
|
86622
|
-
to,
|
86828
|
+
from: key.label,
|
86829
|
+
to: to.label,
|
86623
86830
|
arrows: {
|
86624
86831
|
to: {
|
86625
86832
|
enabled: true,
|