35958b408c
- Web: 点击节点在底部代码面板展示源码(语法高亮、可折叠) - Web: 画布按目录/文件聚类为背景框,头部新增分组模式切换(目录/文件/无) - Web: 流程横幅、流程/分组列表与节点详情展示 summary - CLI: 新增 overview 推导与运行器 - scripts: 手动标注 self-report summary Co-authored-by: Cursor <cursoragent@cursor.com>
6499 lines
230 KiB
JSON
6499 lines
230 KiB
JSON
{
|
|
"schemaVersion": "0.1.0",
|
|
"project": {
|
|
"name": "code-visualize",
|
|
"root": "E:/code-visualize",
|
|
"languages": [
|
|
"javascript",
|
|
"tsx",
|
|
"typescript"
|
|
],
|
|
"generatedAt": "2026-07-22T09:34:53.239Z",
|
|
"generator": "code-visualize-cli@0.1.0"
|
|
},
|
|
"stats": {
|
|
"fileCount": 28,
|
|
"containerCount": 2,
|
|
"functionCount": 119,
|
|
"edgeCount": 135,
|
|
"loc": 3018
|
|
},
|
|
"modules": [
|
|
{
|
|
"id": "module:scripts",
|
|
"kind": "module",
|
|
"name": "scripts",
|
|
"provenance": "ast",
|
|
"path": "scripts",
|
|
"childModuleIds": [],
|
|
"fileIds": [
|
|
"file:scripts/annotate-self-report.mjs"
|
|
],
|
|
"parentId": "module:."
|
|
},
|
|
{
|
|
"id": "module:.",
|
|
"kind": "module",
|
|
"name": "code-visualize",
|
|
"provenance": "ast",
|
|
"path": ".",
|
|
"childModuleIds": [
|
|
"module:scripts",
|
|
"module:src",
|
|
"module:web"
|
|
],
|
|
"fileIds": []
|
|
},
|
|
{
|
|
"id": "module:src",
|
|
"kind": "module",
|
|
"name": "src",
|
|
"provenance": "ast",
|
|
"path": "src",
|
|
"childModuleIds": [],
|
|
"fileIds": [
|
|
"file:src/scanner.ts",
|
|
"file:src/types.ts",
|
|
"file:src/externals.ts",
|
|
"file:src/flows.ts",
|
|
"file:src/analyzer.ts",
|
|
"file:src/cli.ts",
|
|
"file:src/overview.ts",
|
|
"file:src/overview-cli.ts"
|
|
],
|
|
"parentId": "module:."
|
|
},
|
|
{
|
|
"id": "module:web/src/model",
|
|
"kind": "module",
|
|
"name": "model",
|
|
"provenance": "ast",
|
|
"path": "web/src/model",
|
|
"childModuleIds": [],
|
|
"fileIds": [
|
|
"file:web/src/model/report.ts",
|
|
"file:web/src/model/reportRepository.ts",
|
|
"file:web/src/model/graphModel.ts"
|
|
],
|
|
"parentId": "module:web/src"
|
|
},
|
|
{
|
|
"id": "module:web/src",
|
|
"kind": "module",
|
|
"name": "src",
|
|
"provenance": "ast",
|
|
"path": "web/src",
|
|
"childModuleIds": [
|
|
"module:web/src/model",
|
|
"module:web/src/services",
|
|
"module:web/src/viewmodel",
|
|
"module:web/src/view"
|
|
],
|
|
"fileIds": [
|
|
"file:web/src/main.tsx"
|
|
],
|
|
"parentId": "module:web"
|
|
},
|
|
{
|
|
"id": "module:web",
|
|
"kind": "module",
|
|
"name": "web",
|
|
"provenance": "ast",
|
|
"path": "web",
|
|
"childModuleIds": [
|
|
"module:web/src"
|
|
],
|
|
"fileIds": [
|
|
"file:web/vite.config.ts"
|
|
],
|
|
"parentId": "module:."
|
|
},
|
|
{
|
|
"id": "module:web/src/services",
|
|
"kind": "module",
|
|
"name": "services",
|
|
"provenance": "ast",
|
|
"path": "web/src/services",
|
|
"childModuleIds": [],
|
|
"fileIds": [
|
|
"file:web/src/services/dagreLayout.ts",
|
|
"file:web/src/services/sourceService.ts",
|
|
"file:web/src/services/languageMap.ts"
|
|
],
|
|
"parentId": "module:web/src"
|
|
},
|
|
{
|
|
"id": "module:web/src/viewmodel",
|
|
"kind": "module",
|
|
"name": "viewmodel",
|
|
"provenance": "ast",
|
|
"path": "web/src/viewmodel",
|
|
"childModuleIds": [],
|
|
"fileIds": [
|
|
"file:web/src/viewmodel/GraphViewModel.ts"
|
|
],
|
|
"parentId": "module:web/src"
|
|
},
|
|
{
|
|
"id": "module:web/src/view",
|
|
"kind": "module",
|
|
"name": "view",
|
|
"provenance": "ast",
|
|
"path": "web/src/view",
|
|
"childModuleIds": [
|
|
"module:web/src/view/components"
|
|
],
|
|
"fileIds": [
|
|
"file:web/src/view/vmContext.ts",
|
|
"file:web/src/view/App.tsx"
|
|
],
|
|
"parentId": "module:web/src"
|
|
},
|
|
{
|
|
"id": "module:web/src/view/components",
|
|
"kind": "module",
|
|
"name": "components",
|
|
"provenance": "ast",
|
|
"path": "web/src/view/components",
|
|
"childModuleIds": [],
|
|
"fileIds": [
|
|
"file:web/src/view/components/FlowNode.tsx",
|
|
"file:web/src/view/components/FlowGraph.tsx",
|
|
"file:web/src/view/components/FlowList.tsx",
|
|
"file:web/src/view/components/GroupList.tsx",
|
|
"file:web/src/view/components/NodeDetailPanel.tsx",
|
|
"file:web/src/view/components/SearchBar.tsx",
|
|
"file:web/src/view/components/CodePanel.tsx",
|
|
"file:web/src/view/components/FlowBanner.tsx"
|
|
],
|
|
"parentId": "module:web/src/view"
|
|
}
|
|
],
|
|
"files": [
|
|
{
|
|
"id": "file:scripts/annotate-self-report.mjs",
|
|
"kind": "file",
|
|
"name": "annotate-self-report.mjs",
|
|
"location": {
|
|
"file": "scripts/annotate-self-report.mjs",
|
|
"startLine": 1,
|
|
"endLine": 119
|
|
},
|
|
"language": "javascript",
|
|
"provenance": "ast",
|
|
"moduleId": "module:scripts",
|
|
"path": "scripts/annotate-self-report.mjs",
|
|
"loc": 119,
|
|
"containerIds": [],
|
|
"functionIds": [
|
|
"func:scripts/annotate-self-report.mjs#<module>@0"
|
|
]
|
|
},
|
|
{
|
|
"id": "file:src/scanner.ts",
|
|
"kind": "file",
|
|
"name": "scanner.ts",
|
|
"location": {
|
|
"file": "src/scanner.ts",
|
|
"startLine": 1,
|
|
"endLine": 69
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"moduleId": "module:src",
|
|
"path": "src/scanner.ts",
|
|
"loc": 69,
|
|
"containerIds": [],
|
|
"functionIds": [
|
|
"func:src/scanner.ts#toPosix@19",
|
|
"func:src/scanner.ts#collectSourceFiles@24",
|
|
"func:src/scanner.ts#walk@27",
|
|
"func:src/scanner.ts#languageOf@52"
|
|
],
|
|
"summary": "递归扫描项目目录,按扩展名收集源文件并识别语言"
|
|
},
|
|
{
|
|
"id": "file:src/types.ts",
|
|
"kind": "file",
|
|
"name": "types.ts",
|
|
"location": {
|
|
"file": "src/types.ts",
|
|
"startLine": 1,
|
|
"endLine": 205
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"moduleId": "module:src",
|
|
"path": "src/types.ts",
|
|
"loc": 205,
|
|
"containerIds": [],
|
|
"functionIds": [],
|
|
"summary": "标准化代码报告的核心类型定义(Schema 真相源)"
|
|
},
|
|
{
|
|
"id": "file:src/externals.ts",
|
|
"kind": "file",
|
|
"name": "externals.ts",
|
|
"location": {
|
|
"file": "src/externals.ts",
|
|
"startLine": 1,
|
|
"endLine": 61
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"moduleId": "module:src",
|
|
"path": "src/externals.ts",
|
|
"loc": 61,
|
|
"containerIds": [],
|
|
"functionIds": [
|
|
"func:src/externals.ts#deriveExternalSystems@4"
|
|
],
|
|
"summary": "聚合函数交互,派生外部系统(数据库 / 服务)清单"
|
|
},
|
|
{
|
|
"id": "file:src/flows.ts",
|
|
"kind": "file",
|
|
"name": "flows.ts",
|
|
"location": {
|
|
"file": "src/flows.ts",
|
|
"startLine": 1,
|
|
"endLine": 103
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"moduleId": "module:src",
|
|
"path": "src/flows.ts",
|
|
"loc": 103,
|
|
"containerIds": [],
|
|
"functionIds": [
|
|
"func:src/flows.ts#generateCallFlows@16",
|
|
"func:src/flows.ts#stepIdOf@70",
|
|
"func:src/flows.ts#map() 回调@72@72"
|
|
],
|
|
"summary": "从入口点遍历调用图,自动生成调用链流程"
|
|
},
|
|
{
|
|
"id": "file:src/analyzer.ts",
|
|
"kind": "file",
|
|
"name": "analyzer.ts",
|
|
"location": {
|
|
"file": "src/analyzer.ts",
|
|
"startLine": 1,
|
|
"endLine": 610
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"moduleId": "module:src",
|
|
"path": "src/analyzer.ts",
|
|
"loc": 610,
|
|
"containerIds": [],
|
|
"functionIds": [
|
|
"func:src/analyzer.ts#analyzeProject@32",
|
|
"func:src/analyzer.ts#relOf@64",
|
|
"func:src/analyzer.ts#inProject@65",
|
|
"func:src/analyzer.ts#locOf@70",
|
|
"func:src/analyzer.ts#ensureModule@83",
|
|
"func:src/analyzer.ts#getParams@108",
|
|
"func:src/analyzer.ts#buildSignature@117",
|
|
"func:src/analyzer.ts#registerFunc@122",
|
|
"func:src/analyzer.ts#isFnInit@169",
|
|
"func:src/analyzer.ts#containsCall@173",
|
|
"func:src/analyzer.ts#scan@175",
|
|
"func:src/analyzer.ts#routeNameFromCall@188",
|
|
"func:src/analyzer.ts#inlineName@202",
|
|
"func:src/analyzer.ts#registerFile@223",
|
|
"func:src/analyzer.ts#visit@245",
|
|
"func:src/analyzer.ts#extractPathArg@333",
|
|
"func:src/analyzer.ts#extractMethodFromOptions@341",
|
|
"func:src/analyzer.ts#hostOf@352",
|
|
"func:src/analyzer.ts#detectDb@358",
|
|
"func:src/analyzer.ts#detectApiOut@382",
|
|
"func:src/analyzer.ts#detectApiIn@400",
|
|
"func:src/analyzer.ts#addInteraction@419",
|
|
"func:src/analyzer.ts#addEdge@433",
|
|
"func:src/analyzer.ts#resolveCallTargetFuncId@440",
|
|
"func:src/analyzer.ts#getModuleFunc@462",
|
|
"func:src/analyzer.ts#analyzeRelations@487",
|
|
"func:src/analyzer.ts#walk@492",
|
|
"func:src/analyzer.ts#resolveInternalImport@548"
|
|
],
|
|
"summary": "基于 TS 编译器 API 的解析核心:构建函数层级与调用边"
|
|
},
|
|
{
|
|
"id": "file:src/cli.ts",
|
|
"kind": "file",
|
|
"name": "cli.ts",
|
|
"location": {
|
|
"file": "src/cli.ts",
|
|
"startLine": 1,
|
|
"endLine": 71
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"moduleId": "module:src",
|
|
"path": "src/cli.ts",
|
|
"loc": 71,
|
|
"containerIds": [],
|
|
"functionIds": [
|
|
"func:src/cli.ts#parseArgs@13",
|
|
"func:src/cli.ts#main@40",
|
|
"func:src/cli.ts#<module>@0"
|
|
],
|
|
"summary": "命令行入口:解析参数、运行分析、写出报告 JSON"
|
|
},
|
|
{
|
|
"id": "file:src/overview.ts",
|
|
"kind": "file",
|
|
"name": "overview.ts",
|
|
"location": {
|
|
"file": "src/overview.ts",
|
|
"startLine": 1,
|
|
"endLine": 262
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"moduleId": "module:src",
|
|
"path": "src/overview.ts",
|
|
"loc": 262,
|
|
"containerIds": [],
|
|
"functionIds": [
|
|
"func:src/overview.ts#apiInOf@79",
|
|
"func:src/overview.ts#groupKeyFromPath@83",
|
|
"func:src/overview.ts#reachableFuncs@92",
|
|
"func:src/overview.ts#deriveOverview@109",
|
|
"func:src/overview.ts#analyzeEntry@140",
|
|
"func:src/overview.ts#map() 回调@219@219",
|
|
"func:src/overview.ts#map() 回调@229@229"
|
|
],
|
|
"summary": "从报告推导「概览」确定层数据(接口 / 入口 / 外部系统 / 热点)"
|
|
},
|
|
{
|
|
"id": "file:src/overview-cli.ts",
|
|
"kind": "file",
|
|
"name": "overview-cli.ts",
|
|
"location": {
|
|
"file": "src/overview-cli.ts",
|
|
"startLine": 1,
|
|
"endLine": 87
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"moduleId": "module:src",
|
|
"path": "src/overview-cli.ts",
|
|
"loc": 87,
|
|
"containerIds": [],
|
|
"functionIds": [
|
|
"func:src/overview-cli.ts#main@9",
|
|
"func:src/overview-cli.ts#flag@16",
|
|
"func:src/overview-cli.ts#<module>@0"
|
|
],
|
|
"summary": "概览推导的命令行运行器,打印可读的项目地图"
|
|
},
|
|
{
|
|
"id": "file:web/src/model/report.ts",
|
|
"kind": "file",
|
|
"name": "report.ts",
|
|
"location": {
|
|
"file": "web/src/model/report.ts",
|
|
"startLine": 1,
|
|
"endLine": 194
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"moduleId": "module:web/src/model",
|
|
"path": "web/src/model/report.ts",
|
|
"loc": 194,
|
|
"containerIds": [],
|
|
"functionIds": [],
|
|
"summary": "前端侧报告类型定义(与 CLI Schema 对齐)"
|
|
},
|
|
{
|
|
"id": "file:web/src/model/reportRepository.ts",
|
|
"kind": "file",
|
|
"name": "reportRepository.ts",
|
|
"location": {
|
|
"file": "web/src/model/reportRepository.ts",
|
|
"startLine": 1,
|
|
"endLine": 27
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"moduleId": "module:web/src/model",
|
|
"path": "web/src/model/reportRepository.ts",
|
|
"loc": 27,
|
|
"containerIds": [
|
|
"container:web/src/model/reportRepository.ts#HttpReportRepository@16"
|
|
],
|
|
"functionIds": [],
|
|
"summary": "报告数据源抽象,HTTP 加载报告 JSON"
|
|
},
|
|
{
|
|
"id": "file:web/src/model/graphModel.ts",
|
|
"kind": "file",
|
|
"name": "graphModel.ts",
|
|
"location": {
|
|
"file": "web/src/model/graphModel.ts",
|
|
"startLine": 1,
|
|
"endLine": 67
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"moduleId": "module:web/src/model",
|
|
"path": "web/src/model/graphModel.ts",
|
|
"loc": 67,
|
|
"containerIds": [],
|
|
"functionIds": [
|
|
"func:web/src/model/graphModel.ts#baseName@19",
|
|
"func:web/src/model/graphModel.ts#qualifierOf@24",
|
|
"func:web/src/model/graphModel.ts#flowToGraph@43",
|
|
"func:web/src/model/graphModel.ts#map() 回调@44@44"
|
|
],
|
|
"summary": "将 Flow 转换为与渲染无关的「中性图」结构"
|
|
},
|
|
{
|
|
"id": "file:web/src/services/dagreLayout.ts",
|
|
"kind": "file",
|
|
"name": "dagreLayout.ts",
|
|
"location": {
|
|
"file": "web/src/services/dagreLayout.ts",
|
|
"startLine": 1,
|
|
"endLine": 63
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"moduleId": "module:web/src/services",
|
|
"path": "web/src/services/dagreLayout.ts",
|
|
"loc": 63,
|
|
"containerIds": [],
|
|
"functionIds": [
|
|
"func:web/src/services/dagreLayout.ts#computeLayout@31"
|
|
],
|
|
"summary": "用 Dagre 计算图的自动布局坐标"
|
|
},
|
|
{
|
|
"id": "file:web/src/services/sourceService.ts",
|
|
"kind": "file",
|
|
"name": "sourceService.ts",
|
|
"location": {
|
|
"file": "web/src/services/sourceService.ts",
|
|
"startLine": 1,
|
|
"endLine": 33
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"moduleId": "module:web/src/services",
|
|
"path": "web/src/services/sourceService.ts",
|
|
"loc": 33,
|
|
"containerIds": [],
|
|
"functionIds": [
|
|
"func:web/src/services/sourceService.ts#fetchSource@19"
|
|
],
|
|
"summary": "源码绑定:向开发服务器请求真实源码片段"
|
|
},
|
|
{
|
|
"id": "file:web/src/viewmodel/GraphViewModel.ts",
|
|
"kind": "file",
|
|
"name": "GraphViewModel.ts",
|
|
"location": {
|
|
"file": "web/src/viewmodel/GraphViewModel.ts",
|
|
"startLine": 1,
|
|
"endLine": 381
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"moduleId": "module:web/src/viewmodel",
|
|
"path": "web/src/viewmodel/GraphViewModel.ts",
|
|
"loc": 381,
|
|
"containerIds": [
|
|
"container:web/src/viewmodel/GraphViewModel.ts#GraphViewModel@52"
|
|
],
|
|
"functionIds": [
|
|
"func:web/src/viewmodel/GraphViewModel.ts#baseName@43",
|
|
"func:web/src/viewmodel/GraphViewModel.ts#reaction() 回调@79@79",
|
|
"func:web/src/viewmodel/GraphViewModel.ts#runInAction() 回调@203@203",
|
|
"func:web/src/viewmodel/GraphViewModel.ts#map() 回调@240@240",
|
|
"func:web/src/viewmodel/GraphViewModel.ts#runInAction() 回调@368@368"
|
|
],
|
|
"summary": "图视图 ViewModel:编排加载 / 选择 / 布局 / 搜索 / 源码"
|
|
},
|
|
{
|
|
"id": "file:web/src/view/vmContext.ts",
|
|
"kind": "file",
|
|
"name": "vmContext.ts",
|
|
"location": {
|
|
"file": "web/src/view/vmContext.ts",
|
|
"startLine": 1,
|
|
"endLine": 11
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"moduleId": "module:web/src/view",
|
|
"path": "web/src/view/vmContext.ts",
|
|
"loc": 11,
|
|
"containerIds": [],
|
|
"functionIds": [
|
|
"func:web/src/view/vmContext.ts#useGraphVM@6",
|
|
"func:web/src/view/vmContext.ts#<module>@0"
|
|
],
|
|
"summary": "提供 GraphViewModel 的 React Context"
|
|
},
|
|
{
|
|
"id": "file:web/src/view/components/FlowNode.tsx",
|
|
"kind": "file",
|
|
"name": "FlowNode.tsx",
|
|
"location": {
|
|
"file": "web/src/view/components/FlowNode.tsx",
|
|
"startLine": 1,
|
|
"endLine": 67
|
|
},
|
|
"language": "tsx",
|
|
"provenance": "ast",
|
|
"moduleId": "module:web/src/view/components",
|
|
"path": "web/src/view/components/FlowNode.tsx",
|
|
"loc": 67,
|
|
"containerIds": [],
|
|
"functionIds": [
|
|
"func:web/src/view/components/FlowNode.tsx#interactionBadges@12",
|
|
"func:web/src/view/components/FlowNode.tsx#memo() 回调@40@40",
|
|
"func:web/src/view/components/FlowNode.tsx#<module>@0"
|
|
],
|
|
"summary": "自定义流程图节点:显示函数名 / 归属 / 交互徽标"
|
|
},
|
|
{
|
|
"id": "file:web/src/view/components/FlowGraph.tsx",
|
|
"kind": "file",
|
|
"name": "FlowGraph.tsx",
|
|
"location": {
|
|
"file": "web/src/view/components/FlowGraph.tsx",
|
|
"startLine": 1,
|
|
"endLine": 71
|
|
},
|
|
"language": "tsx",
|
|
"provenance": "ast",
|
|
"moduleId": "module:web/src/view/components",
|
|
"path": "web/src/view/components/FlowGraph.tsx",
|
|
"loc": 71,
|
|
"containerIds": [],
|
|
"functionIds": [
|
|
"func:web/src/view/components/FlowGraph.tsx#observer() 回调@16@16",
|
|
"func:web/src/view/components/FlowGraph.tsx#<module>@0"
|
|
],
|
|
"summary": "React Flow 画布容器,渲染当前流程图"
|
|
},
|
|
{
|
|
"id": "file:web/src/view/components/FlowList.tsx",
|
|
"kind": "file",
|
|
"name": "FlowList.tsx",
|
|
"location": {
|
|
"file": "web/src/view/components/FlowList.tsx",
|
|
"startLine": 1,
|
|
"endLine": 39
|
|
},
|
|
"language": "tsx",
|
|
"provenance": "ast",
|
|
"moduleId": "module:web/src/view/components",
|
|
"path": "web/src/view/components/FlowList.tsx",
|
|
"loc": 39,
|
|
"containerIds": [],
|
|
"functionIds": [
|
|
"func:web/src/view/components/FlowList.tsx#observer() 回调@4@4",
|
|
"func:web/src/view/components/FlowList.tsx#<module>@0"
|
|
],
|
|
"summary": "左侧流程列表面板"
|
|
},
|
|
{
|
|
"id": "file:web/src/view/components/GroupList.tsx",
|
|
"kind": "file",
|
|
"name": "GroupList.tsx",
|
|
"location": {
|
|
"file": "web/src/view/components/GroupList.tsx",
|
|
"startLine": 1,
|
|
"endLine": 37
|
|
},
|
|
"language": "tsx",
|
|
"provenance": "ast",
|
|
"moduleId": "module:web/src/view/components",
|
|
"path": "web/src/view/components/GroupList.tsx",
|
|
"loc": 37,
|
|
"containerIds": [],
|
|
"functionIds": [
|
|
"func:web/src/view/components/GroupList.tsx#observer() 回调@4@4",
|
|
"func:web/src/view/components/GroupList.tsx#<module>@0"
|
|
],
|
|
"summary": "最左侧分组列表:按类 / 文件过滤流程"
|
|
},
|
|
{
|
|
"id": "file:web/src/view/components/NodeDetailPanel.tsx",
|
|
"kind": "file",
|
|
"name": "NodeDetailPanel.tsx",
|
|
"location": {
|
|
"file": "web/src/view/components/NodeDetailPanel.tsx",
|
|
"startLine": 1,
|
|
"endLine": 99
|
|
},
|
|
"language": "tsx",
|
|
"provenance": "ast",
|
|
"moduleId": "module:web/src/view/components",
|
|
"path": "web/src/view/components/NodeDetailPanel.tsx",
|
|
"loc": 99,
|
|
"containerIds": [],
|
|
"functionIds": [
|
|
"func:web/src/view/components/NodeDetailPanel.tsx#describeInteraction@5",
|
|
"func:web/src/view/components/NodeDetailPanel.tsx#observer() 回调@13@13",
|
|
"func:web/src/view/components/NodeDetailPanel.tsx#<module>@0"
|
|
],
|
|
"summary": "右侧节点详情:位置 / 归属 / 交互 / 所在流程"
|
|
},
|
|
{
|
|
"id": "file:web/src/view/components/SearchBar.tsx",
|
|
"kind": "file",
|
|
"name": "SearchBar.tsx",
|
|
"location": {
|
|
"file": "web/src/view/components/SearchBar.tsx",
|
|
"startLine": 1,
|
|
"endLine": 60
|
|
},
|
|
"language": "tsx",
|
|
"provenance": "ast",
|
|
"moduleId": "module:web/src/view/components",
|
|
"path": "web/src/view/components/SearchBar.tsx",
|
|
"loc": 60,
|
|
"containerIds": [],
|
|
"functionIds": [
|
|
"func:web/src/view/components/SearchBar.tsx#observer() 回调@6@6",
|
|
"func:web/src/view/components/SearchBar.tsx#activate@12",
|
|
"func:web/src/view/components/SearchBar.tsx#匿名函数@26@26",
|
|
"func:web/src/view/components/SearchBar.tsx#匿名函数@41@41",
|
|
"func:web/src/view/components/SearchBar.tsx#<module>@0"
|
|
],
|
|
"summary": "顶部搜索栏,检索流程与函数"
|
|
},
|
|
{
|
|
"id": "file:web/src/services/languageMap.ts",
|
|
"kind": "file",
|
|
"name": "languageMap.ts",
|
|
"location": {
|
|
"file": "web/src/services/languageMap.ts",
|
|
"startLine": 1,
|
|
"endLine": 49
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"moduleId": "module:web/src/services",
|
|
"path": "web/src/services/languageMap.ts",
|
|
"loc": 49,
|
|
"containerIds": [],
|
|
"functionIds": [
|
|
"func:web/src/services/languageMap.ts#languageOf@42"
|
|
],
|
|
"summary": "文件扩展名到语法高亮语言的映射"
|
|
},
|
|
{
|
|
"id": "file:web/src/view/components/CodePanel.tsx",
|
|
"kind": "file",
|
|
"name": "CodePanel.tsx",
|
|
"location": {
|
|
"file": "web/src/view/components/CodePanel.tsx",
|
|
"startLine": 1,
|
|
"endLine": 67
|
|
},
|
|
"language": "tsx",
|
|
"provenance": "ast",
|
|
"moduleId": "module:web/src/view/components",
|
|
"path": "web/src/view/components/CodePanel.tsx",
|
|
"loc": 67,
|
|
"containerIds": [],
|
|
"functionIds": [
|
|
"func:web/src/view/components/CodePanel.tsx#observer() 回调@7@7",
|
|
"func:web/src/view/components/CodePanel.tsx#<module>@0"
|
|
],
|
|
"summary": "底部源码面板:语法高亮显示选中函数实现"
|
|
},
|
|
{
|
|
"id": "file:web/src/view/components/FlowBanner.tsx",
|
|
"kind": "file",
|
|
"name": "FlowBanner.tsx",
|
|
"location": {
|
|
"file": "web/src/view/components/FlowBanner.tsx",
|
|
"startLine": 1,
|
|
"endLine": 17
|
|
},
|
|
"language": "tsx",
|
|
"provenance": "ast",
|
|
"moduleId": "module:web/src/view/components",
|
|
"path": "web/src/view/components/FlowBanner.tsx",
|
|
"loc": 17,
|
|
"containerIds": [],
|
|
"functionIds": [
|
|
"func:web/src/view/components/FlowBanner.tsx#observer() 回调@4@4",
|
|
"func:web/src/view/components/FlowBanner.tsx#<module>@0"
|
|
],
|
|
"summary": "画布顶部横幅:显示当前流程名与说明"
|
|
},
|
|
{
|
|
"id": "file:web/src/view/App.tsx",
|
|
"kind": "file",
|
|
"name": "App.tsx",
|
|
"location": {
|
|
"file": "web/src/view/App.tsx",
|
|
"startLine": 1,
|
|
"endLine": 61
|
|
},
|
|
"language": "tsx",
|
|
"provenance": "ast",
|
|
"moduleId": "module:web/src/view",
|
|
"path": "web/src/view/App.tsx",
|
|
"loc": 61,
|
|
"containerIds": [],
|
|
"functionIds": [
|
|
"func:web/src/view/App.tsx#observer() 回调@11@11",
|
|
"func:web/src/view/App.tsx#<module>@0"
|
|
],
|
|
"summary": "应用主组件:编排头部与各面板布局"
|
|
},
|
|
{
|
|
"id": "file:web/src/main.tsx",
|
|
"kind": "file",
|
|
"name": "main.tsx",
|
|
"location": {
|
|
"file": "web/src/main.tsx",
|
|
"startLine": 1,
|
|
"endLine": 27
|
|
},
|
|
"language": "tsx",
|
|
"provenance": "ast",
|
|
"moduleId": "module:web/src",
|
|
"path": "web/src/main.tsx",
|
|
"loc": 27,
|
|
"containerIds": [],
|
|
"functionIds": [
|
|
"func:web/src/main.tsx#<module>@0"
|
|
],
|
|
"summary": "前端入口:构建数据源与 ViewModel 并挂载 App"
|
|
},
|
|
{
|
|
"id": "file:web/vite.config.ts",
|
|
"kind": "file",
|
|
"name": "vite.config.ts",
|
|
"location": {
|
|
"file": "web/vite.config.ts",
|
|
"startLine": 1,
|
|
"endLine": 61
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"moduleId": "module:web",
|
|
"path": "web/vite.config.ts",
|
|
"loc": 61,
|
|
"containerIds": [],
|
|
"functionIds": [
|
|
"func:web/vite.config.ts#sourceServer@11",
|
|
"func:web/vite.config.ts#use() 回调@15@15",
|
|
"func:web/vite.config.ts#<module>@0"
|
|
],
|
|
"summary": "Vite 配置 + 开发期源码服务中间件"
|
|
}
|
|
],
|
|
"containers": [
|
|
{
|
|
"id": "container:web/src/model/reportRepository.ts#HttpReportRepository@16",
|
|
"kind": "container",
|
|
"name": "HttpReportRepository",
|
|
"qualifiedName": "HttpReportRepository",
|
|
"location": {
|
|
"file": "web/src/model/reportRepository.ts",
|
|
"startLine": 16,
|
|
"endLine": 26,
|
|
"startCol": 1,
|
|
"endCol": 2
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:web/src/model/reportRepository.ts",
|
|
"moduleId": "module:web/src/model",
|
|
"functionIds": [
|
|
"func:web/src/model/reportRepository.ts#HttpReportRepository.constructor@17",
|
|
"func:web/src/model/reportRepository.ts#HttpReportRepository.load@19"
|
|
],
|
|
"fieldIds": [],
|
|
"summary": "通过 HTTP 从 URL 加载报告 JSON 的仓库实现"
|
|
},
|
|
{
|
|
"id": "container:web/src/viewmodel/GraphViewModel.ts#GraphViewModel@52",
|
|
"kind": "container",
|
|
"name": "GraphViewModel",
|
|
"qualifiedName": "GraphViewModel",
|
|
"location": {
|
|
"file": "web/src/viewmodel/GraphViewModel.ts",
|
|
"startLine": 52,
|
|
"endLine": 380,
|
|
"startCol": 1,
|
|
"endCol": 2
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:web/src/viewmodel/GraphViewModel.ts",
|
|
"moduleId": "module:web/src/viewmodel",
|
|
"functionIds": [
|
|
"func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.constructor@69",
|
|
"func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.sources@85",
|
|
"func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.currentSource@89",
|
|
"func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.selectReport@93",
|
|
"func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.toggleCodePanel@104",
|
|
"func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.groupOfFlow@109",
|
|
"func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.groups@135",
|
|
"func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.visibleFlows@147",
|
|
"func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.selectedGroup@153",
|
|
"func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.selectedFuncOwner@159",
|
|
"func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.selectGroup@171",
|
|
"func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.load@180",
|
|
"func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.flows@214",
|
|
"func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.currentFlow@219",
|
|
"func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.positionedGraph@225",
|
|
"func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.selectedFunc@248",
|
|
"func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.flowsForSelectedFunc@256",
|
|
"func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.openFlowForFunc@265",
|
|
"func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.setSearchQuery@275",
|
|
"func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.funcIdsInFlows@279",
|
|
"func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.biggestFlowForFunc@287",
|
|
"func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.searchResults@294",
|
|
"func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.activateSearchResult@322",
|
|
"func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.selectFlow@334",
|
|
"func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.selectNode@340",
|
|
"func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.loadSelectedFuncCode@346"
|
|
],
|
|
"fieldIds": [
|
|
"field:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.loading@53",
|
|
"field:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.error@54",
|
|
"field:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.report@55",
|
|
"field:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.selectedSourceId@57",
|
|
"field:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.selectedGroupId@58",
|
|
"field:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.selectedFlowId@59",
|
|
"field:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.selectedNodeId@60",
|
|
"field:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.searchQuery@61",
|
|
"field:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.codeState@62",
|
|
"field:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.codePanelCollapsed@63",
|
|
"field:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.funcById@65",
|
|
"field:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.containerById@66",
|
|
"field:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.fileById@67"
|
|
],
|
|
"summary": "图视图 ViewModel:持有全部可观察状态与命令"
|
|
}
|
|
],
|
|
"functions": [
|
|
{
|
|
"id": "func:src/scanner.ts#toPosix@19",
|
|
"kind": "function",
|
|
"name": "toPosix",
|
|
"qualifiedName": "toPosix",
|
|
"location": {
|
|
"file": "src/scanner.ts",
|
|
"startLine": 19,
|
|
"endLine": 21,
|
|
"startCol": 1,
|
|
"endCol": 2
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:src/scanner.ts",
|
|
"moduleId": "module:src",
|
|
"signature": "toPosix(p: string): string",
|
|
"params": [
|
|
{
|
|
"name": "p",
|
|
"typeRef": "string",
|
|
"optional": false
|
|
}
|
|
],
|
|
"returnType": "string",
|
|
"loc": 3
|
|
},
|
|
{
|
|
"id": "func:src/scanner.ts#collectSourceFiles@24",
|
|
"kind": "function",
|
|
"name": "collectSourceFiles",
|
|
"qualifiedName": "collectSourceFiles",
|
|
"location": {
|
|
"file": "src/scanner.ts",
|
|
"startLine": 24,
|
|
"endLine": 50,
|
|
"startCol": 1,
|
|
"endCol": 2
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:src/scanner.ts",
|
|
"moduleId": "module:src",
|
|
"signature": "collectSourceFiles(root: string): string[]",
|
|
"params": [
|
|
{
|
|
"name": "root",
|
|
"typeRef": "string",
|
|
"optional": false
|
|
}
|
|
],
|
|
"returnType": "string[]",
|
|
"loc": 27
|
|
},
|
|
{
|
|
"id": "func:src/scanner.ts#walk@27",
|
|
"kind": "function",
|
|
"name": "walk",
|
|
"qualifiedName": "walk",
|
|
"location": {
|
|
"file": "src/scanner.ts",
|
|
"startLine": 27,
|
|
"endLine": 46,
|
|
"startCol": 9,
|
|
"endCol": 4
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:src/scanner.ts",
|
|
"moduleId": "module:src",
|
|
"signature": "walk(dir: string): void",
|
|
"params": [
|
|
{
|
|
"name": "dir",
|
|
"typeRef": "string",
|
|
"optional": false
|
|
}
|
|
],
|
|
"returnType": "void",
|
|
"loc": 20
|
|
},
|
|
{
|
|
"id": "func:src/scanner.ts#languageOf@52",
|
|
"kind": "function",
|
|
"name": "languageOf",
|
|
"qualifiedName": "languageOf",
|
|
"location": {
|
|
"file": "src/scanner.ts",
|
|
"startLine": 52,
|
|
"endLine": 68,
|
|
"startCol": 1,
|
|
"endCol": 2
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:src/scanner.ts",
|
|
"moduleId": "module:src",
|
|
"signature": "languageOf(file: string): string",
|
|
"params": [
|
|
{
|
|
"name": "file",
|
|
"typeRef": "string",
|
|
"optional": false
|
|
}
|
|
],
|
|
"returnType": "string",
|
|
"loc": 17
|
|
},
|
|
{
|
|
"id": "func:src/externals.ts#deriveExternalSystems@4",
|
|
"kind": "function",
|
|
"name": "deriveExternalSystems",
|
|
"qualifiedName": "deriveExternalSystems",
|
|
"location": {
|
|
"file": "src/externals.ts",
|
|
"startLine": 4,
|
|
"endLine": 60,
|
|
"startCol": 1,
|
|
"endCol": 2
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:src/externals.ts",
|
|
"moduleId": "module:src",
|
|
"signature": "deriveExternalSystems(functions: Func[]): ExternalSystem[]",
|
|
"params": [
|
|
{
|
|
"name": "functions",
|
|
"typeRef": "Func[]",
|
|
"optional": false
|
|
}
|
|
],
|
|
"returnType": "ExternalSystem[]",
|
|
"loc": 57
|
|
},
|
|
{
|
|
"id": "func:src/flows.ts#generateCallFlows@16",
|
|
"kind": "function",
|
|
"name": "generateCallFlows",
|
|
"qualifiedName": "generateCallFlows",
|
|
"location": {
|
|
"file": "src/flows.ts",
|
|
"startLine": 16,
|
|
"endLine": 102,
|
|
"startCol": 1,
|
|
"endCol": 2
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:src/flows.ts",
|
|
"moduleId": "module:src",
|
|
"signature": "generateCallFlows(functions: Func[], edges: Edge[], options: Partial<FlowOptions>): Flow[]",
|
|
"params": [
|
|
{
|
|
"name": "functions",
|
|
"typeRef": "Func[]",
|
|
"optional": false
|
|
},
|
|
{
|
|
"name": "edges",
|
|
"typeRef": "Edge[]",
|
|
"optional": false
|
|
},
|
|
{
|
|
"name": "options",
|
|
"typeRef": "Partial<FlowOptions>",
|
|
"optional": true
|
|
}
|
|
],
|
|
"returnType": "Flow[]",
|
|
"loc": 87
|
|
},
|
|
{
|
|
"id": "func:src/flows.ts#stepIdOf@70",
|
|
"kind": "function",
|
|
"name": "stepIdOf",
|
|
"qualifiedName": "stepIdOf",
|
|
"location": {
|
|
"file": "src/flows.ts",
|
|
"startLine": 70,
|
|
"endLine": 70,
|
|
"startCol": 11,
|
|
"endCol": 70
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:src/flows.ts",
|
|
"moduleId": "module:src",
|
|
"signature": "stepIdOf(fid: string): string",
|
|
"params": [
|
|
{
|
|
"name": "fid",
|
|
"typeRef": "string",
|
|
"optional": false
|
|
}
|
|
],
|
|
"returnType": "string",
|
|
"loc": 1
|
|
},
|
|
{
|
|
"id": "func:src/flows.ts#map() 回调@72@72",
|
|
"kind": "function",
|
|
"name": "map() 回调@72",
|
|
"qualifiedName": "map() 回调@72",
|
|
"location": {
|
|
"file": "src/flows.ts",
|
|
"startLine": 72,
|
|
"endLine": 81,
|
|
"startCol": 44,
|
|
"endCol": 6
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:src/flows.ts",
|
|
"moduleId": "module:src",
|
|
"signature": "map() 回调@72(fid, i)",
|
|
"params": [
|
|
{
|
|
"name": "fid",
|
|
"optional": false
|
|
},
|
|
{
|
|
"name": "i",
|
|
"optional": false
|
|
}
|
|
],
|
|
"loc": 10
|
|
},
|
|
{
|
|
"id": "func:src/analyzer.ts#analyzeProject@32",
|
|
"kind": "function",
|
|
"name": "analyzeProject",
|
|
"qualifiedName": "analyzeProject",
|
|
"location": {
|
|
"file": "src/analyzer.ts",
|
|
"startLine": 32,
|
|
"endLine": 609,
|
|
"startCol": 1,
|
|
"endCol": 2
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:src/analyzer.ts",
|
|
"moduleId": "module:src",
|
|
"signature": "analyzeProject(root: string): Report",
|
|
"params": [
|
|
{
|
|
"name": "root",
|
|
"typeRef": "string",
|
|
"optional": false
|
|
}
|
|
],
|
|
"returnType": "Report",
|
|
"loc": 578
|
|
},
|
|
{
|
|
"id": "func:src/analyzer.ts#relOf@64",
|
|
"kind": "function",
|
|
"name": "relOf",
|
|
"qualifiedName": "relOf",
|
|
"location": {
|
|
"file": "src/analyzer.ts",
|
|
"startLine": 64,
|
|
"endLine": 64,
|
|
"startCol": 9,
|
|
"endCol": 106
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:src/analyzer.ts",
|
|
"moduleId": "module:src",
|
|
"signature": "relOf(sf: ts.SourceFile): string",
|
|
"params": [
|
|
{
|
|
"name": "sf",
|
|
"typeRef": "ts.SourceFile",
|
|
"optional": false
|
|
}
|
|
],
|
|
"returnType": "string",
|
|
"loc": 1
|
|
},
|
|
{
|
|
"id": "func:src/analyzer.ts#inProject@65",
|
|
"kind": "function",
|
|
"name": "inProject",
|
|
"qualifiedName": "inProject",
|
|
"location": {
|
|
"file": "src/analyzer.ts",
|
|
"startLine": 65,
|
|
"endLine": 68,
|
|
"startCol": 9,
|
|
"endCol": 4
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:src/analyzer.ts",
|
|
"moduleId": "module:src",
|
|
"signature": "inProject(sf: ts.SourceFile): boolean",
|
|
"params": [
|
|
{
|
|
"name": "sf",
|
|
"typeRef": "ts.SourceFile",
|
|
"optional": false
|
|
}
|
|
],
|
|
"returnType": "boolean",
|
|
"loc": 4
|
|
},
|
|
{
|
|
"id": "func:src/analyzer.ts#locOf@70",
|
|
"kind": "function",
|
|
"name": "locOf",
|
|
"qualifiedName": "locOf",
|
|
"location": {
|
|
"file": "src/analyzer.ts",
|
|
"startLine": 70,
|
|
"endLine": 80,
|
|
"startCol": 9,
|
|
"endCol": 4
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:src/analyzer.ts",
|
|
"moduleId": "module:src",
|
|
"signature": "locOf(node: ts.Node, sf: ts.SourceFile): SourceLocation",
|
|
"params": [
|
|
{
|
|
"name": "node",
|
|
"typeRef": "ts.Node",
|
|
"optional": false
|
|
},
|
|
{
|
|
"name": "sf",
|
|
"typeRef": "ts.SourceFile",
|
|
"optional": false
|
|
}
|
|
],
|
|
"returnType": "SourceLocation",
|
|
"loc": 11
|
|
},
|
|
{
|
|
"id": "func:src/analyzer.ts#ensureModule@83",
|
|
"kind": "function",
|
|
"name": "ensureModule",
|
|
"qualifiedName": "ensureModule",
|
|
"location": {
|
|
"file": "src/analyzer.ts",
|
|
"startLine": 83,
|
|
"endLine": 105,
|
|
"startCol": 9,
|
|
"endCol": 4
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:src/analyzer.ts",
|
|
"moduleId": "module:src",
|
|
"signature": "ensureModule(dir: string): Module",
|
|
"params": [
|
|
{
|
|
"name": "dir",
|
|
"typeRef": "string",
|
|
"optional": false
|
|
}
|
|
],
|
|
"returnType": "Module",
|
|
"loc": 23
|
|
},
|
|
{
|
|
"id": "func:src/analyzer.ts#getParams@108",
|
|
"kind": "function",
|
|
"name": "getParams",
|
|
"qualifiedName": "getParams",
|
|
"location": {
|
|
"file": "src/analyzer.ts",
|
|
"startLine": 108,
|
|
"endLine": 115,
|
|
"startCol": 9,
|
|
"endCol": 4
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:src/analyzer.ts",
|
|
"moduleId": "module:src",
|
|
"signature": "getParams(fn: ts.SignatureDeclarationBase, sf: ts.SourceFile): Param[]",
|
|
"params": [
|
|
{
|
|
"name": "fn",
|
|
"typeRef": "ts.SignatureDeclarationBase",
|
|
"optional": false
|
|
},
|
|
{
|
|
"name": "sf",
|
|
"typeRef": "ts.SourceFile",
|
|
"optional": false
|
|
}
|
|
],
|
|
"returnType": "Param[]",
|
|
"loc": 8
|
|
},
|
|
{
|
|
"id": "func:src/analyzer.ts#buildSignature@117",
|
|
"kind": "function",
|
|
"name": "buildSignature",
|
|
"qualifiedName": "buildSignature",
|
|
"location": {
|
|
"file": "src/analyzer.ts",
|
|
"startLine": 117,
|
|
"endLine": 120,
|
|
"startCol": 9,
|
|
"endCol": 4
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:src/analyzer.ts",
|
|
"moduleId": "module:src",
|
|
"signature": "buildSignature(name: string, params: Param[], ret: string): string",
|
|
"params": [
|
|
{
|
|
"name": "name",
|
|
"typeRef": "string",
|
|
"optional": false
|
|
},
|
|
{
|
|
"name": "params",
|
|
"typeRef": "Param[]",
|
|
"optional": false
|
|
},
|
|
{
|
|
"name": "ret",
|
|
"typeRef": "string",
|
|
"optional": true
|
|
}
|
|
],
|
|
"returnType": "string",
|
|
"loc": 4
|
|
},
|
|
{
|
|
"id": "func:src/analyzer.ts#registerFunc@122",
|
|
"kind": "function",
|
|
"name": "registerFunc",
|
|
"qualifiedName": "registerFunc",
|
|
"location": {
|
|
"file": "src/analyzer.ts",
|
|
"startLine": 122,
|
|
"endLine": 167,
|
|
"startCol": 9,
|
|
"endCol": 4
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:src/analyzer.ts",
|
|
"moduleId": "module:src",
|
|
"signature": "registerFunc(declNode: ts.Node, fnNode: ts.SignatureDeclarationBase & ts.Node, name: string, sf: ts.SourceFile, rel: string, fileEntity: CodeFile, ownerId: string, qualifiedPrefix: string): Func",
|
|
"params": [
|
|
{
|
|
"name": "declNode",
|
|
"typeRef": "ts.Node",
|
|
"optional": false
|
|
},
|
|
{
|
|
"name": "fnNode",
|
|
"typeRef": "ts.SignatureDeclarationBase & ts.Node",
|
|
"optional": false
|
|
},
|
|
{
|
|
"name": "name",
|
|
"typeRef": "string",
|
|
"optional": false
|
|
},
|
|
{
|
|
"name": "sf",
|
|
"typeRef": "ts.SourceFile",
|
|
"optional": false
|
|
},
|
|
{
|
|
"name": "rel",
|
|
"typeRef": "string",
|
|
"optional": false
|
|
},
|
|
{
|
|
"name": "fileEntity",
|
|
"typeRef": "CodeFile",
|
|
"optional": false
|
|
},
|
|
{
|
|
"name": "ownerId",
|
|
"typeRef": "string",
|
|
"optional": true
|
|
},
|
|
{
|
|
"name": "qualifiedPrefix",
|
|
"typeRef": "string",
|
|
"optional": true
|
|
}
|
|
],
|
|
"returnType": "Func",
|
|
"loc": 46
|
|
},
|
|
{
|
|
"id": "func:src/analyzer.ts#isFnInit@169",
|
|
"kind": "function",
|
|
"name": "isFnInit",
|
|
"qualifiedName": "isFnInit",
|
|
"location": {
|
|
"file": "src/analyzer.ts",
|
|
"startLine": 169,
|
|
"endLine": 170,
|
|
"startCol": 9,
|
|
"endCol": 74
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:src/analyzer.ts",
|
|
"moduleId": "module:src",
|
|
"signature": "isFnInit(node: ts.Node): node is ts.ArrowFunction | ts.FunctionExpression",
|
|
"params": [
|
|
{
|
|
"name": "node",
|
|
"typeRef": "ts.Node",
|
|
"optional": true
|
|
}
|
|
],
|
|
"returnType": "node is ts.ArrowFunction | ts.FunctionExpression",
|
|
"loc": 2
|
|
},
|
|
{
|
|
"id": "func:src/analyzer.ts#containsCall@173",
|
|
"kind": "function",
|
|
"name": "containsCall",
|
|
"qualifiedName": "containsCall",
|
|
"location": {
|
|
"file": "src/analyzer.ts",
|
|
"startLine": 173,
|
|
"endLine": 185,
|
|
"startCol": 9,
|
|
"endCol": 4
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:src/analyzer.ts",
|
|
"moduleId": "module:src",
|
|
"signature": "containsCall(n: ts.Node): boolean",
|
|
"params": [
|
|
{
|
|
"name": "n",
|
|
"typeRef": "ts.Node",
|
|
"optional": false
|
|
}
|
|
],
|
|
"returnType": "boolean",
|
|
"loc": 13
|
|
},
|
|
{
|
|
"id": "func:src/analyzer.ts#scan@175",
|
|
"kind": "function",
|
|
"name": "scan",
|
|
"qualifiedName": "scan",
|
|
"location": {
|
|
"file": "src/analyzer.ts",
|
|
"startLine": 175,
|
|
"endLine": 182,
|
|
"startCol": 11,
|
|
"endCol": 6
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:src/analyzer.ts",
|
|
"moduleId": "module:src",
|
|
"signature": "scan(x: ts.Node): void",
|
|
"params": [
|
|
{
|
|
"name": "x",
|
|
"typeRef": "ts.Node",
|
|
"optional": false
|
|
}
|
|
],
|
|
"returnType": "void",
|
|
"loc": 8
|
|
},
|
|
{
|
|
"id": "func:src/analyzer.ts#routeNameFromCall@188",
|
|
"kind": "function",
|
|
"name": "routeNameFromCall",
|
|
"qualifiedName": "routeNameFromCall",
|
|
"location": {
|
|
"file": "src/analyzer.ts",
|
|
"startLine": 188,
|
|
"endLine": 199,
|
|
"startCol": 9,
|
|
"endCol": 4
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:src/analyzer.ts",
|
|
"moduleId": "module:src",
|
|
"signature": "routeNameFromCall(call: ts.CallExpression, sf: ts.SourceFile): string | undefined",
|
|
"params": [
|
|
{
|
|
"name": "call",
|
|
"typeRef": "ts.CallExpression",
|
|
"optional": false
|
|
},
|
|
{
|
|
"name": "sf",
|
|
"typeRef": "ts.SourceFile",
|
|
"optional": false
|
|
}
|
|
],
|
|
"returnType": "string | undefined",
|
|
"loc": 12
|
|
},
|
|
{
|
|
"id": "func:src/analyzer.ts#inlineName@202",
|
|
"kind": "function",
|
|
"name": "inlineName",
|
|
"qualifiedName": "inlineName",
|
|
"location": {
|
|
"file": "src/analyzer.ts",
|
|
"startLine": 202,
|
|
"endLine": 220,
|
|
"startCol": 9,
|
|
"endCol": 4
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:src/analyzer.ts",
|
|
"moduleId": "module:src",
|
|
"signature": "inlineName(fn: ts.ArrowFunction | ts.FunctionExpression, sf: ts.SourceFile): string",
|
|
"params": [
|
|
{
|
|
"name": "fn",
|
|
"typeRef": "ts.ArrowFunction | ts.FunctionExpression",
|
|
"optional": false
|
|
},
|
|
{
|
|
"name": "sf",
|
|
"typeRef": "ts.SourceFile",
|
|
"optional": false
|
|
}
|
|
],
|
|
"returnType": "string",
|
|
"loc": 19
|
|
},
|
|
{
|
|
"id": "func:src/analyzer.ts#registerFile@223",
|
|
"kind": "function",
|
|
"name": "registerFile",
|
|
"qualifiedName": "registerFile",
|
|
"location": {
|
|
"file": "src/analyzer.ts",
|
|
"startLine": 223,
|
|
"endLine": 330,
|
|
"startCol": 9,
|
|
"endCol": 4
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:src/analyzer.ts",
|
|
"moduleId": "module:src",
|
|
"signature": "registerFile(sf: ts.SourceFile): void",
|
|
"params": [
|
|
{
|
|
"name": "sf",
|
|
"typeRef": "ts.SourceFile",
|
|
"optional": false
|
|
}
|
|
],
|
|
"returnType": "void",
|
|
"loc": 108
|
|
},
|
|
{
|
|
"id": "func:src/analyzer.ts#visit@245",
|
|
"kind": "function",
|
|
"name": "visit",
|
|
"qualifiedName": "visit",
|
|
"location": {
|
|
"file": "src/analyzer.ts",
|
|
"startLine": 245,
|
|
"endLine": 327,
|
|
"startCol": 11,
|
|
"endCol": 6
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:src/analyzer.ts",
|
|
"moduleId": "module:src",
|
|
"signature": "visit(node: ts.Node): void",
|
|
"params": [
|
|
{
|
|
"name": "node",
|
|
"typeRef": "ts.Node",
|
|
"optional": false
|
|
}
|
|
],
|
|
"returnType": "void",
|
|
"loc": 83
|
|
},
|
|
{
|
|
"id": "func:src/analyzer.ts#extractPathArg@333",
|
|
"kind": "function",
|
|
"name": "extractPathArg",
|
|
"qualifiedName": "extractPathArg",
|
|
"location": {
|
|
"file": "src/analyzer.ts",
|
|
"startLine": 333,
|
|
"endLine": 339,
|
|
"startCol": 9,
|
|
"endCol": 4
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:src/analyzer.ts",
|
|
"moduleId": "module:src",
|
|
"signature": "extractPathArg(node: ts.Expression | undefined, sf: ts.SourceFile): string | undefined",
|
|
"params": [
|
|
{
|
|
"name": "node",
|
|
"typeRef": "ts.Expression | undefined",
|
|
"optional": false
|
|
},
|
|
{
|
|
"name": "sf",
|
|
"typeRef": "ts.SourceFile",
|
|
"optional": false
|
|
}
|
|
],
|
|
"returnType": "string | undefined",
|
|
"loc": 7
|
|
},
|
|
{
|
|
"id": "func:src/analyzer.ts#extractMethodFromOptions@341",
|
|
"kind": "function",
|
|
"name": "extractMethodFromOptions",
|
|
"qualifiedName": "extractMethodFromOptions",
|
|
"location": {
|
|
"file": "src/analyzer.ts",
|
|
"startLine": 341,
|
|
"endLine": 350,
|
|
"startCol": 9,
|
|
"endCol": 4
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:src/analyzer.ts",
|
|
"moduleId": "module:src",
|
|
"signature": "extractMethodFromOptions(arg: ts.Expression | undefined, sf: ts.SourceFile): string | undefined",
|
|
"params": [
|
|
{
|
|
"name": "arg",
|
|
"typeRef": "ts.Expression | undefined",
|
|
"optional": false
|
|
},
|
|
{
|
|
"name": "sf",
|
|
"typeRef": "ts.SourceFile",
|
|
"optional": false
|
|
}
|
|
],
|
|
"returnType": "string | undefined",
|
|
"loc": 10
|
|
},
|
|
{
|
|
"id": "func:src/analyzer.ts#hostOf@352",
|
|
"kind": "function",
|
|
"name": "hostOf",
|
|
"qualifiedName": "hostOf",
|
|
"location": {
|
|
"file": "src/analyzer.ts",
|
|
"startLine": 352,
|
|
"endLine": 356,
|
|
"startCol": 9,
|
|
"endCol": 4
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:src/analyzer.ts",
|
|
"moduleId": "module:src",
|
|
"signature": "hostOf(url: string): string | undefined",
|
|
"params": [
|
|
{
|
|
"name": "url",
|
|
"typeRef": "string",
|
|
"optional": true
|
|
}
|
|
],
|
|
"returnType": "string | undefined",
|
|
"loc": 5
|
|
},
|
|
{
|
|
"id": "func:src/analyzer.ts#detectDb@358",
|
|
"kind": "function",
|
|
"name": "detectDb",
|
|
"qualifiedName": "detectDb",
|
|
"location": {
|
|
"file": "src/analyzer.ts",
|
|
"startLine": 358,
|
|
"endLine": 380,
|
|
"startCol": 9,
|
|
"endCol": 4
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:src/analyzer.ts",
|
|
"moduleId": "module:src",
|
|
"signature": "detectDb(call: ts.CallExpression, sf: ts.SourceFile): DbInteraction | undefined",
|
|
"params": [
|
|
{
|
|
"name": "call",
|
|
"typeRef": "ts.CallExpression",
|
|
"optional": false
|
|
},
|
|
{
|
|
"name": "sf",
|
|
"typeRef": "ts.SourceFile",
|
|
"optional": false
|
|
}
|
|
],
|
|
"returnType": "DbInteraction | undefined",
|
|
"loc": 23
|
|
},
|
|
{
|
|
"id": "func:src/analyzer.ts#detectApiOut@382",
|
|
"kind": "function",
|
|
"name": "detectApiOut",
|
|
"qualifiedName": "detectApiOut",
|
|
"location": {
|
|
"file": "src/analyzer.ts",
|
|
"startLine": 382,
|
|
"endLine": 398,
|
|
"startCol": 9,
|
|
"endCol": 4
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:src/analyzer.ts",
|
|
"moduleId": "module:src",
|
|
"signature": "detectApiOut(call: ts.CallExpression, sf: ts.SourceFile): ApiInteraction | undefined",
|
|
"params": [
|
|
{
|
|
"name": "call",
|
|
"typeRef": "ts.CallExpression",
|
|
"optional": false
|
|
},
|
|
{
|
|
"name": "sf",
|
|
"typeRef": "ts.SourceFile",
|
|
"optional": false
|
|
}
|
|
],
|
|
"returnType": "ApiInteraction | undefined",
|
|
"loc": 17
|
|
},
|
|
{
|
|
"id": "func:src/analyzer.ts#detectApiIn@400",
|
|
"kind": "function",
|
|
"name": "detectApiIn",
|
|
"qualifiedName": "detectApiIn",
|
|
"location": {
|
|
"file": "src/analyzer.ts",
|
|
"startLine": 400,
|
|
"endLine": 417,
|
|
"startCol": 9,
|
|
"endCol": 4
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:src/analyzer.ts",
|
|
"moduleId": "module:src",
|
|
"signature": "detectApiIn(call: ts.CallExpression, sf: ts.SourceFile): { interaction: ApiInteraction; handler?: ts.Node } | undefined",
|
|
"params": [
|
|
{
|
|
"name": "call",
|
|
"typeRef": "ts.CallExpression",
|
|
"optional": false
|
|
},
|
|
{
|
|
"name": "sf",
|
|
"typeRef": "ts.SourceFile",
|
|
"optional": false
|
|
}
|
|
],
|
|
"returnType": "{ interaction: ApiInteraction; handler?: ts.Node } | undefined",
|
|
"loc": 18
|
|
},
|
|
{
|
|
"id": "func:src/analyzer.ts#addInteraction@419",
|
|
"kind": "function",
|
|
"name": "addInteraction",
|
|
"qualifiedName": "addInteraction",
|
|
"location": {
|
|
"file": "src/analyzer.ts",
|
|
"startLine": 419,
|
|
"endLine": 430,
|
|
"startCol": 9,
|
|
"endCol": 4
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:src/analyzer.ts",
|
|
"moduleId": "module:src",
|
|
"signature": "addInteraction(fnId: string, ix: Interaction): void",
|
|
"params": [
|
|
{
|
|
"name": "fnId",
|
|
"typeRef": "string",
|
|
"optional": false
|
|
},
|
|
{
|
|
"name": "ix",
|
|
"typeRef": "Interaction",
|
|
"optional": false
|
|
}
|
|
],
|
|
"returnType": "void",
|
|
"loc": 12
|
|
},
|
|
{
|
|
"id": "func:src/analyzer.ts#addEdge@433",
|
|
"kind": "function",
|
|
"name": "addEdge",
|
|
"qualifiedName": "addEdge",
|
|
"location": {
|
|
"file": "src/analyzer.ts",
|
|
"startLine": 433,
|
|
"endLine": 438,
|
|
"startCol": 9,
|
|
"endCol": 4
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:src/analyzer.ts",
|
|
"moduleId": "module:src",
|
|
"signature": "addEdge(kind: Edge[\"kind\"], sourceId: string, targetId: string, provenance: Edge[\"provenance\"]): void",
|
|
"params": [
|
|
{
|
|
"name": "kind",
|
|
"typeRef": "Edge[\"kind\"]",
|
|
"optional": false
|
|
},
|
|
{
|
|
"name": "sourceId",
|
|
"typeRef": "string",
|
|
"optional": false
|
|
},
|
|
{
|
|
"name": "targetId",
|
|
"typeRef": "string",
|
|
"optional": false
|
|
},
|
|
{
|
|
"name": "provenance",
|
|
"typeRef": "Edge[\"provenance\"]",
|
|
"optional": false
|
|
}
|
|
],
|
|
"returnType": "void",
|
|
"loc": 6
|
|
},
|
|
{
|
|
"id": "func:src/analyzer.ts#resolveCallTargetFuncId@440",
|
|
"kind": "function",
|
|
"name": "resolveCallTargetFuncId",
|
|
"qualifiedName": "resolveCallTargetFuncId",
|
|
"location": {
|
|
"file": "src/analyzer.ts",
|
|
"startLine": 440,
|
|
"endLine": 459,
|
|
"startCol": 9,
|
|
"endCol": 4
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:src/analyzer.ts",
|
|
"moduleId": "module:src",
|
|
"signature": "resolveCallTargetFuncId(call: ts.CallExpression): string | undefined",
|
|
"params": [
|
|
{
|
|
"name": "call",
|
|
"typeRef": "ts.CallExpression",
|
|
"optional": false
|
|
}
|
|
],
|
|
"returnType": "string | undefined",
|
|
"loc": 20
|
|
},
|
|
{
|
|
"id": "func:src/analyzer.ts#getModuleFunc@462",
|
|
"kind": "function",
|
|
"name": "getModuleFunc",
|
|
"qualifiedName": "getModuleFunc",
|
|
"location": {
|
|
"file": "src/analyzer.ts",
|
|
"startLine": 462,
|
|
"endLine": 485,
|
|
"startCol": 9,
|
|
"endCol": 4
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:src/analyzer.ts",
|
|
"moduleId": "module:src",
|
|
"signature": "getModuleFunc(sf: ts.SourceFile, rel: string, fileEntity: CodeFile): string",
|
|
"params": [
|
|
{
|
|
"name": "sf",
|
|
"typeRef": "ts.SourceFile",
|
|
"optional": false
|
|
},
|
|
{
|
|
"name": "rel",
|
|
"typeRef": "string",
|
|
"optional": false
|
|
},
|
|
{
|
|
"name": "fileEntity",
|
|
"typeRef": "CodeFile",
|
|
"optional": false
|
|
}
|
|
],
|
|
"returnType": "string",
|
|
"loc": 24
|
|
},
|
|
{
|
|
"id": "func:src/analyzer.ts#analyzeRelations@487",
|
|
"kind": "function",
|
|
"name": "analyzeRelations",
|
|
"qualifiedName": "analyzeRelations",
|
|
"location": {
|
|
"file": "src/analyzer.ts",
|
|
"startLine": 487,
|
|
"endLine": 546,
|
|
"startCol": 9,
|
|
"endCol": 4
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:src/analyzer.ts",
|
|
"moduleId": "module:src",
|
|
"signature": "analyzeRelations(sf: ts.SourceFile): void",
|
|
"params": [
|
|
{
|
|
"name": "sf",
|
|
"typeRef": "ts.SourceFile",
|
|
"optional": false
|
|
}
|
|
],
|
|
"returnType": "void",
|
|
"loc": 60
|
|
},
|
|
{
|
|
"id": "func:src/analyzer.ts#walk@492",
|
|
"kind": "function",
|
|
"name": "walk",
|
|
"qualifiedName": "walk",
|
|
"location": {
|
|
"file": "src/analyzer.ts",
|
|
"startLine": 492,
|
|
"endLine": 543,
|
|
"startCol": 11,
|
|
"endCol": 6
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:src/analyzer.ts",
|
|
"moduleId": "module:src",
|
|
"signature": "walk(node: ts.Node, currentFuncId: string | undefined): void",
|
|
"params": [
|
|
{
|
|
"name": "node",
|
|
"typeRef": "ts.Node",
|
|
"optional": false
|
|
},
|
|
{
|
|
"name": "currentFuncId",
|
|
"typeRef": "string | undefined",
|
|
"optional": false
|
|
}
|
|
],
|
|
"returnType": "void",
|
|
"loc": 52
|
|
},
|
|
{
|
|
"id": "func:src/analyzer.ts#resolveInternalImport@548",
|
|
"kind": "function",
|
|
"name": "resolveInternalImport",
|
|
"qualifiedName": "resolveInternalImport",
|
|
"location": {
|
|
"file": "src/analyzer.ts",
|
|
"startLine": 548,
|
|
"endLine": 569,
|
|
"startCol": 9,
|
|
"endCol": 4
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:src/analyzer.ts",
|
|
"moduleId": "module:src",
|
|
"signature": "resolveInternalImport(fromRel: string, spec: string): string | undefined",
|
|
"params": [
|
|
{
|
|
"name": "fromRel",
|
|
"typeRef": "string",
|
|
"optional": false
|
|
},
|
|
{
|
|
"name": "spec",
|
|
"typeRef": "string",
|
|
"optional": false
|
|
}
|
|
],
|
|
"returnType": "string | undefined",
|
|
"loc": 22
|
|
},
|
|
{
|
|
"id": "func:src/cli.ts#parseArgs@13",
|
|
"kind": "function",
|
|
"name": "parseArgs",
|
|
"qualifiedName": "parseArgs",
|
|
"location": {
|
|
"file": "src/cli.ts",
|
|
"startLine": 13,
|
|
"endLine": 23,
|
|
"startCol": 1,
|
|
"endCol": 2
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:src/cli.ts",
|
|
"moduleId": "module:src",
|
|
"signature": "parseArgs(argv: string[]): CliArgs",
|
|
"params": [
|
|
{
|
|
"name": "argv",
|
|
"typeRef": "string[]",
|
|
"optional": false
|
|
}
|
|
],
|
|
"returnType": "CliArgs",
|
|
"loc": 11
|
|
},
|
|
{
|
|
"id": "func:src/cli.ts#main@40",
|
|
"kind": "function",
|
|
"name": "main",
|
|
"qualifiedName": "main",
|
|
"location": {
|
|
"file": "src/cli.ts",
|
|
"startLine": 40,
|
|
"endLine": 68,
|
|
"startCol": 1,
|
|
"endCol": 2
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:src/cli.ts",
|
|
"moduleId": "module:src",
|
|
"signature": "main(): void",
|
|
"params": [],
|
|
"returnType": "void",
|
|
"loc": 29
|
|
},
|
|
{
|
|
"id": "func:src/overview.ts#apiInOf@79",
|
|
"kind": "function",
|
|
"name": "apiInOf",
|
|
"qualifiedName": "apiInOf",
|
|
"location": {
|
|
"file": "src/overview.ts",
|
|
"startLine": 79,
|
|
"endLine": 81,
|
|
"startCol": 1,
|
|
"endCol": 2
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:src/overview.ts",
|
|
"moduleId": "module:src",
|
|
"signature": "apiInOf(fn: Func): Interaction | undefined",
|
|
"params": [
|
|
{
|
|
"name": "fn",
|
|
"typeRef": "Func",
|
|
"optional": false
|
|
}
|
|
],
|
|
"returnType": "Interaction | undefined",
|
|
"loc": 3
|
|
},
|
|
{
|
|
"id": "func:src/overview.ts#groupKeyFromPath@83",
|
|
"kind": "function",
|
|
"name": "groupKeyFromPath",
|
|
"qualifiedName": "groupKeyFromPath",
|
|
"location": {
|
|
"file": "src/overview.ts",
|
|
"startLine": 83,
|
|
"endLine": 89,
|
|
"startCol": 1,
|
|
"endCol": 2
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:src/overview.ts",
|
|
"moduleId": "module:src",
|
|
"signature": "groupKeyFromPath(path: string): string",
|
|
"params": [
|
|
{
|
|
"name": "path",
|
|
"typeRef": "string",
|
|
"optional": false
|
|
}
|
|
],
|
|
"returnType": "string",
|
|
"loc": 7
|
|
},
|
|
{
|
|
"id": "func:src/overview.ts#reachableFuncs@92",
|
|
"kind": "function",
|
|
"name": "reachableFuncs",
|
|
"qualifiedName": "reachableFuncs",
|
|
"location": {
|
|
"file": "src/overview.ts",
|
|
"startLine": 92,
|
|
"endLine": 105,
|
|
"startCol": 1,
|
|
"endCol": 2
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:src/overview.ts",
|
|
"moduleId": "module:src",
|
|
"signature": "reachableFuncs(startId: string, adjacency: Map<string, string[]>, limit): Set<string>",
|
|
"params": [
|
|
{
|
|
"name": "startId",
|
|
"typeRef": "string",
|
|
"optional": false
|
|
},
|
|
{
|
|
"name": "adjacency",
|
|
"typeRef": "Map<string, string[]>",
|
|
"optional": false
|
|
},
|
|
{
|
|
"name": "limit",
|
|
"optional": true,
|
|
"defaultValue": "2000"
|
|
}
|
|
],
|
|
"returnType": "Set<string>",
|
|
"loc": 14
|
|
},
|
|
{
|
|
"id": "func:src/overview.ts#deriveOverview@109",
|
|
"kind": "function",
|
|
"name": "deriveOverview",
|
|
"qualifiedName": "deriveOverview",
|
|
"location": {
|
|
"file": "src/overview.ts",
|
|
"startLine": 109,
|
|
"endLine": 261,
|
|
"startCol": 1,
|
|
"endCol": 2
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:src/overview.ts",
|
|
"moduleId": "module:src",
|
|
"signature": "deriveOverview(report: Report): Overview",
|
|
"params": [
|
|
{
|
|
"name": "report",
|
|
"typeRef": "Report",
|
|
"optional": false
|
|
}
|
|
],
|
|
"returnType": "Overview",
|
|
"loc": 153
|
|
},
|
|
{
|
|
"id": "func:src/overview.ts#analyzeEntry@140",
|
|
"kind": "function",
|
|
"name": "analyzeEntry",
|
|
"qualifiedName": "analyzeEntry",
|
|
"location": {
|
|
"file": "src/overview.ts",
|
|
"startLine": 140,
|
|
"endLine": 155,
|
|
"startCol": 9,
|
|
"endCol": 4
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:src/overview.ts",
|
|
"moduleId": "module:src",
|
|
"signature": "analyzeEntry(fn: Func)",
|
|
"params": [
|
|
{
|
|
"name": "fn",
|
|
"typeRef": "Func",
|
|
"optional": false
|
|
}
|
|
],
|
|
"loc": 16
|
|
},
|
|
{
|
|
"id": "func:src/overview.ts#map() 回调@219@219",
|
|
"kind": "function",
|
|
"name": "map() 回调@219",
|
|
"qualifiedName": "map() 回调@219",
|
|
"location": {
|
|
"file": "src/overview.ts",
|
|
"startLine": 219,
|
|
"endLine": 222,
|
|
"startCol": 10,
|
|
"endCol": 6
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:src/overview.ts",
|
|
"moduleId": "module:src",
|
|
"signature": "map() 回调@219([funcId, count])",
|
|
"params": [
|
|
{
|
|
"name": "[funcId, count]",
|
|
"optional": false
|
|
}
|
|
],
|
|
"loc": 4
|
|
},
|
|
{
|
|
"id": "func:src/overview.ts#map() 回调@229@229",
|
|
"kind": "function",
|
|
"name": "map() 回调@229",
|
|
"qualifiedName": "map() 回调@229",
|
|
"location": {
|
|
"file": "src/overview.ts",
|
|
"startLine": 229,
|
|
"endLine": 239,
|
|
"startCol": 10,
|
|
"endCol": 6
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:src/overview.ts",
|
|
"moduleId": "module:src",
|
|
"signature": "map() 回调@229(fl)",
|
|
"params": [
|
|
{
|
|
"name": "fl",
|
|
"optional": false
|
|
}
|
|
],
|
|
"loc": 11
|
|
},
|
|
{
|
|
"id": "func:src/overview-cli.ts#main@9",
|
|
"kind": "function",
|
|
"name": "main",
|
|
"qualifiedName": "main",
|
|
"location": {
|
|
"file": "src/overview-cli.ts",
|
|
"startLine": 9,
|
|
"endLine": 84,
|
|
"startCol": 1,
|
|
"endCol": 2
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:src/overview-cli.ts",
|
|
"moduleId": "module:src",
|
|
"signature": "main()",
|
|
"params": [],
|
|
"loc": 76
|
|
},
|
|
{
|
|
"id": "func:src/overview-cli.ts#flag@16",
|
|
"kind": "function",
|
|
"name": "flag",
|
|
"qualifiedName": "flag",
|
|
"location": {
|
|
"file": "src/overview-cli.ts",
|
|
"startLine": 16,
|
|
"endLine": 21,
|
|
"startCol": 9,
|
|
"endCol": 4
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:src/overview-cli.ts",
|
|
"moduleId": "module:src",
|
|
"signature": "flag(db: boolean, svc: boolean)",
|
|
"params": [
|
|
{
|
|
"name": "db",
|
|
"typeRef": "boolean",
|
|
"optional": false
|
|
},
|
|
{
|
|
"name": "svc",
|
|
"typeRef": "boolean",
|
|
"optional": false
|
|
}
|
|
],
|
|
"loc": 6
|
|
},
|
|
{
|
|
"id": "func:web/src/model/reportRepository.ts#HttpReportRepository.constructor@17",
|
|
"kind": "function",
|
|
"name": "constructor",
|
|
"qualifiedName": "HttpReportRepository.constructor",
|
|
"location": {
|
|
"file": "web/src/model/reportRepository.ts",
|
|
"startLine": 17,
|
|
"endLine": 17,
|
|
"startCol": 3,
|
|
"endCol": 47
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:web/src/model/reportRepository.ts",
|
|
"ownerId": "container:web/src/model/reportRepository.ts#HttpReportRepository@16",
|
|
"moduleId": "module:web/src/model",
|
|
"signature": "constructor(url: string)",
|
|
"params": [
|
|
{
|
|
"name": "url",
|
|
"typeRef": "string",
|
|
"optional": false
|
|
}
|
|
],
|
|
"loc": 1
|
|
},
|
|
{
|
|
"id": "func:web/src/model/reportRepository.ts#HttpReportRepository.load@19",
|
|
"kind": "function",
|
|
"name": "load",
|
|
"qualifiedName": "HttpReportRepository.load",
|
|
"location": {
|
|
"file": "web/src/model/reportRepository.ts",
|
|
"startLine": 19,
|
|
"endLine": 25,
|
|
"startCol": 3,
|
|
"endCol": 4
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:web/src/model/reportRepository.ts",
|
|
"ownerId": "container:web/src/model/reportRepository.ts#HttpReportRepository@16",
|
|
"moduleId": "module:web/src/model",
|
|
"signature": "load(): Promise<Report>",
|
|
"params": [],
|
|
"returnType": "Promise<Report>",
|
|
"loc": 7,
|
|
"interactions": [
|
|
{
|
|
"id": "ix:func:web/src/model/reportRepository.ts#HttpReportRepository.load@19:api:out:GET:",
|
|
"kind": "api",
|
|
"direction": "out",
|
|
"provenance": "resolved",
|
|
"protocol": "http",
|
|
"method": "GET"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "func:web/src/model/graphModel.ts#baseName@19",
|
|
"kind": "function",
|
|
"name": "baseName",
|
|
"qualifiedName": "baseName",
|
|
"location": {
|
|
"file": "web/src/model/graphModel.ts",
|
|
"startLine": 19,
|
|
"endLine": 22,
|
|
"startCol": 1,
|
|
"endCol": 2
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:web/src/model/graphModel.ts",
|
|
"moduleId": "module:web/src/model",
|
|
"signature": "baseName(path: string): string",
|
|
"params": [
|
|
{
|
|
"name": "path",
|
|
"typeRef": "string",
|
|
"optional": false
|
|
}
|
|
],
|
|
"returnType": "string",
|
|
"loc": 4
|
|
},
|
|
{
|
|
"id": "func:web/src/model/graphModel.ts#qualifierOf@24",
|
|
"kind": "function",
|
|
"name": "qualifierOf",
|
|
"qualifiedName": "qualifierOf",
|
|
"location": {
|
|
"file": "web/src/model/graphModel.ts",
|
|
"startLine": 24,
|
|
"endLine": 29,
|
|
"startCol": 1,
|
|
"endCol": 2
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:web/src/model/graphModel.ts",
|
|
"moduleId": "module:web/src/model",
|
|
"signature": "qualifierOf(fn: Func | undefined, ctx: GraphContext): string | undefined",
|
|
"params": [
|
|
{
|
|
"name": "fn",
|
|
"typeRef": "Func | undefined",
|
|
"optional": false
|
|
},
|
|
{
|
|
"name": "ctx",
|
|
"typeRef": "GraphContext",
|
|
"optional": false
|
|
}
|
|
],
|
|
"returnType": "string | undefined",
|
|
"loc": 6
|
|
},
|
|
{
|
|
"id": "func:web/src/model/graphModel.ts#flowToGraph@43",
|
|
"kind": "function",
|
|
"name": "flowToGraph",
|
|
"qualifiedName": "flowToGraph",
|
|
"location": {
|
|
"file": "web/src/model/graphModel.ts",
|
|
"startLine": 43,
|
|
"endLine": 66,
|
|
"startCol": 1,
|
|
"endCol": 2
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:web/src/model/graphModel.ts",
|
|
"moduleId": "module:web/src/model",
|
|
"signature": "flowToGraph(flow: Flow, ctx: GraphContext): GraphData",
|
|
"params": [
|
|
{
|
|
"name": "flow",
|
|
"typeRef": "Flow",
|
|
"optional": false
|
|
},
|
|
{
|
|
"name": "ctx",
|
|
"typeRef": "GraphContext",
|
|
"optional": false
|
|
}
|
|
],
|
|
"returnType": "GraphData",
|
|
"loc": 24
|
|
},
|
|
{
|
|
"id": "func:web/src/model/graphModel.ts#map() 回调@44@44",
|
|
"kind": "function",
|
|
"name": "map() 回调@44",
|
|
"qualifiedName": "map() 回调@44",
|
|
"location": {
|
|
"file": "web/src/model/graphModel.ts",
|
|
"startLine": 44,
|
|
"endLine": 54,
|
|
"startCol": 45,
|
|
"endCol": 4
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:web/src/model/graphModel.ts",
|
|
"moduleId": "module:web/src/model",
|
|
"signature": "map() 回调@44(step)",
|
|
"params": [
|
|
{
|
|
"name": "step",
|
|
"optional": false
|
|
}
|
|
],
|
|
"loc": 11
|
|
},
|
|
{
|
|
"id": "func:web/src/services/dagreLayout.ts#computeLayout@31",
|
|
"kind": "function",
|
|
"name": "computeLayout",
|
|
"qualifiedName": "computeLayout",
|
|
"location": {
|
|
"file": "web/src/services/dagreLayout.ts",
|
|
"startLine": 31,
|
|
"endLine": 62,
|
|
"startCol": 1,
|
|
"endCol": 2
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:web/src/services/dagreLayout.ts",
|
|
"moduleId": "module:web/src/services",
|
|
"signature": "computeLayout(nodes: LayoutNodeInput[], edges: LayoutEdgeInput[], options: LayoutOptions): Map<string, Position>",
|
|
"params": [
|
|
{
|
|
"name": "nodes",
|
|
"typeRef": "LayoutNodeInput[]",
|
|
"optional": false
|
|
},
|
|
{
|
|
"name": "edges",
|
|
"typeRef": "LayoutEdgeInput[]",
|
|
"optional": false
|
|
},
|
|
{
|
|
"name": "options",
|
|
"typeRef": "LayoutOptions",
|
|
"optional": true,
|
|
"defaultValue": "{}"
|
|
}
|
|
],
|
|
"returnType": "Map<string, Position>",
|
|
"loc": 32
|
|
},
|
|
{
|
|
"id": "func:web/src/services/sourceService.ts#fetchSource@19",
|
|
"kind": "function",
|
|
"name": "fetchSource",
|
|
"qualifiedName": "fetchSource",
|
|
"location": {
|
|
"file": "web/src/services/sourceService.ts",
|
|
"startLine": 19,
|
|
"endLine": 32,
|
|
"startCol": 14,
|
|
"endCol": 2
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:web/src/services/sourceService.ts",
|
|
"moduleId": "module:web/src/services",
|
|
"signature": "fetchSource(root, file, startLine, endLine)",
|
|
"params": [
|
|
{
|
|
"name": "root",
|
|
"optional": false
|
|
},
|
|
{
|
|
"name": "file",
|
|
"optional": false
|
|
},
|
|
{
|
|
"name": "startLine",
|
|
"optional": false
|
|
},
|
|
{
|
|
"name": "endLine",
|
|
"optional": false
|
|
}
|
|
],
|
|
"loc": 14,
|
|
"interactions": [
|
|
{
|
|
"id": "ix:func:web/src/services/sourceService.ts#fetchSource@19:api:out:GET:`/__source?${params.toString()}`",
|
|
"kind": "api",
|
|
"direction": "out",
|
|
"provenance": "resolved",
|
|
"protocol": "http",
|
|
"method": "GET",
|
|
"path": "`/__source?${params.toString()}`"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "func:web/src/viewmodel/GraphViewModel.ts#baseName@43",
|
|
"kind": "function",
|
|
"name": "baseName",
|
|
"qualifiedName": "baseName",
|
|
"location": {
|
|
"file": "web/src/viewmodel/GraphViewModel.ts",
|
|
"startLine": 43,
|
|
"endLine": 46,
|
|
"startCol": 1,
|
|
"endCol": 2
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:web/src/viewmodel/GraphViewModel.ts",
|
|
"moduleId": "module:web/src/viewmodel",
|
|
"signature": "baseName(path: string): string",
|
|
"params": [
|
|
{
|
|
"name": "path",
|
|
"typeRef": "string",
|
|
"optional": false
|
|
}
|
|
],
|
|
"returnType": "string",
|
|
"loc": 4
|
|
},
|
|
{
|
|
"id": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.constructor@69",
|
|
"kind": "function",
|
|
"name": "constructor",
|
|
"qualifiedName": "GraphViewModel.constructor",
|
|
"location": {
|
|
"file": "web/src/viewmodel/GraphViewModel.ts",
|
|
"startLine": 69,
|
|
"endLine": 83,
|
|
"startCol": 3,
|
|
"endCol": 4
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:web/src/viewmodel/GraphViewModel.ts",
|
|
"ownerId": "container:web/src/viewmodel/GraphViewModel.ts#GraphViewModel@52",
|
|
"moduleId": "module:web/src/viewmodel",
|
|
"signature": "constructor(sourceList: ReportSource[], makeRepository: (url: string) => ReportRepository, loadSource: LoadSource)",
|
|
"params": [
|
|
{
|
|
"name": "sourceList",
|
|
"typeRef": "ReportSource[]",
|
|
"optional": false
|
|
},
|
|
{
|
|
"name": "makeRepository",
|
|
"typeRef": "(url: string) => ReportRepository",
|
|
"optional": false
|
|
},
|
|
{
|
|
"name": "loadSource",
|
|
"typeRef": "LoadSource",
|
|
"optional": false
|
|
}
|
|
],
|
|
"loc": 15
|
|
},
|
|
{
|
|
"id": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.sources@85",
|
|
"kind": "function",
|
|
"name": "sources",
|
|
"qualifiedName": "GraphViewModel.sources",
|
|
"location": {
|
|
"file": "web/src/viewmodel/GraphViewModel.ts",
|
|
"startLine": 85,
|
|
"endLine": 87,
|
|
"startCol": 3,
|
|
"endCol": 4
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:web/src/viewmodel/GraphViewModel.ts",
|
|
"ownerId": "container:web/src/viewmodel/GraphViewModel.ts#GraphViewModel@52",
|
|
"moduleId": "module:web/src/viewmodel",
|
|
"signature": "sources(): ReportSource[]",
|
|
"params": [],
|
|
"returnType": "ReportSource[]",
|
|
"loc": 3
|
|
},
|
|
{
|
|
"id": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.currentSource@89",
|
|
"kind": "function",
|
|
"name": "currentSource",
|
|
"qualifiedName": "GraphViewModel.currentSource",
|
|
"location": {
|
|
"file": "web/src/viewmodel/GraphViewModel.ts",
|
|
"startLine": 89,
|
|
"endLine": 91,
|
|
"startCol": 3,
|
|
"endCol": 4
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:web/src/viewmodel/GraphViewModel.ts",
|
|
"ownerId": "container:web/src/viewmodel/GraphViewModel.ts#GraphViewModel@52",
|
|
"moduleId": "module:web/src/viewmodel",
|
|
"signature": "currentSource(): ReportSource | null",
|
|
"params": [],
|
|
"returnType": "ReportSource | null",
|
|
"loc": 3
|
|
},
|
|
{
|
|
"id": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.selectReport@93",
|
|
"kind": "function",
|
|
"name": "selectReport",
|
|
"qualifiedName": "GraphViewModel.selectReport",
|
|
"location": {
|
|
"file": "web/src/viewmodel/GraphViewModel.ts",
|
|
"startLine": 93,
|
|
"endLine": 102,
|
|
"startCol": 3,
|
|
"endCol": 4
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:web/src/viewmodel/GraphViewModel.ts",
|
|
"ownerId": "container:web/src/viewmodel/GraphViewModel.ts#GraphViewModel@52",
|
|
"moduleId": "module:web/src/viewmodel",
|
|
"signature": "selectReport(sourceId: string): void",
|
|
"params": [
|
|
{
|
|
"name": "sourceId",
|
|
"typeRef": "string",
|
|
"optional": false
|
|
}
|
|
],
|
|
"returnType": "void",
|
|
"loc": 10
|
|
},
|
|
{
|
|
"id": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.toggleCodePanel@104",
|
|
"kind": "function",
|
|
"name": "toggleCodePanel",
|
|
"qualifiedName": "GraphViewModel.toggleCodePanel",
|
|
"location": {
|
|
"file": "web/src/viewmodel/GraphViewModel.ts",
|
|
"startLine": 104,
|
|
"endLine": 106,
|
|
"startCol": 3,
|
|
"endCol": 4
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:web/src/viewmodel/GraphViewModel.ts",
|
|
"ownerId": "container:web/src/viewmodel/GraphViewModel.ts#GraphViewModel@52",
|
|
"moduleId": "module:web/src/viewmodel",
|
|
"signature": "toggleCodePanel(): void",
|
|
"params": [],
|
|
"returnType": "void",
|
|
"loc": 3
|
|
},
|
|
{
|
|
"id": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.groupOfFlow@109",
|
|
"kind": "function",
|
|
"name": "groupOfFlow",
|
|
"qualifiedName": "GraphViewModel.groupOfFlow",
|
|
"location": {
|
|
"file": "web/src/viewmodel/GraphViewModel.ts",
|
|
"startLine": 109,
|
|
"endLine": 132,
|
|
"startCol": 3,
|
|
"endCol": 4
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:web/src/viewmodel/GraphViewModel.ts",
|
|
"ownerId": "container:web/src/viewmodel/GraphViewModel.ts#GraphViewModel@52",
|
|
"moduleId": "module:web/src/viewmodel",
|
|
"signature": "groupOfFlow(flow: Flow): FlowGroup",
|
|
"params": [
|
|
{
|
|
"name": "flow",
|
|
"typeRef": "Flow",
|
|
"optional": false
|
|
}
|
|
],
|
|
"returnType": "FlowGroup",
|
|
"loc": 24
|
|
},
|
|
{
|
|
"id": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.groups@135",
|
|
"kind": "function",
|
|
"name": "groups",
|
|
"qualifiedName": "GraphViewModel.groups",
|
|
"location": {
|
|
"file": "web/src/viewmodel/GraphViewModel.ts",
|
|
"startLine": 135,
|
|
"endLine": 144,
|
|
"startCol": 3,
|
|
"endCol": 4
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:web/src/viewmodel/GraphViewModel.ts",
|
|
"ownerId": "container:web/src/viewmodel/GraphViewModel.ts#GraphViewModel@52",
|
|
"moduleId": "module:web/src/viewmodel",
|
|
"signature": "groups(): FlowGroup[]",
|
|
"params": [],
|
|
"returnType": "FlowGroup[]",
|
|
"loc": 10
|
|
},
|
|
{
|
|
"id": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.visibleFlows@147",
|
|
"kind": "function",
|
|
"name": "visibleFlows",
|
|
"qualifiedName": "GraphViewModel.visibleFlows",
|
|
"location": {
|
|
"file": "web/src/viewmodel/GraphViewModel.ts",
|
|
"startLine": 147,
|
|
"endLine": 150,
|
|
"startCol": 3,
|
|
"endCol": 4
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:web/src/viewmodel/GraphViewModel.ts",
|
|
"ownerId": "container:web/src/viewmodel/GraphViewModel.ts#GraphViewModel@52",
|
|
"moduleId": "module:web/src/viewmodel",
|
|
"signature": "visibleFlows(): Flow[]",
|
|
"params": [],
|
|
"returnType": "Flow[]",
|
|
"loc": 4
|
|
},
|
|
{
|
|
"id": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.selectedGroup@153",
|
|
"kind": "function",
|
|
"name": "selectedGroup",
|
|
"qualifiedName": "GraphViewModel.selectedGroup",
|
|
"location": {
|
|
"file": "web/src/viewmodel/GraphViewModel.ts",
|
|
"startLine": 153,
|
|
"endLine": 156,
|
|
"startCol": 3,
|
|
"endCol": 4
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:web/src/viewmodel/GraphViewModel.ts",
|
|
"ownerId": "container:web/src/viewmodel/GraphViewModel.ts#GraphViewModel@52",
|
|
"moduleId": "module:web/src/viewmodel",
|
|
"signature": "selectedGroup(): FlowGroup | null",
|
|
"params": [],
|
|
"returnType": "FlowGroup | null",
|
|
"loc": 4
|
|
},
|
|
{
|
|
"id": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.selectedFuncOwner@159",
|
|
"kind": "function",
|
|
"name": "selectedFuncOwner",
|
|
"qualifiedName": "GraphViewModel.selectedFuncOwner",
|
|
"location": {
|
|
"file": "web/src/viewmodel/GraphViewModel.ts",
|
|
"startLine": 159,
|
|
"endLine": 169,
|
|
"startCol": 3,
|
|
"endCol": 4
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:web/src/viewmodel/GraphViewModel.ts",
|
|
"ownerId": "container:web/src/viewmodel/GraphViewModel.ts#GraphViewModel@52",
|
|
"moduleId": "module:web/src/viewmodel",
|
|
"signature": "selectedFuncOwner(): { name: string; kind: \"class\" | \"file\"; summary?: string } | null",
|
|
"params": [],
|
|
"returnType": "{ name: string; kind: \"class\" | \"file\"; summary?: string } | null",
|
|
"loc": 11
|
|
},
|
|
{
|
|
"id": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.selectGroup@171",
|
|
"kind": "function",
|
|
"name": "selectGroup",
|
|
"qualifiedName": "GraphViewModel.selectGroup",
|
|
"location": {
|
|
"file": "web/src/viewmodel/GraphViewModel.ts",
|
|
"startLine": 171,
|
|
"endLine": 178,
|
|
"startCol": 3,
|
|
"endCol": 4
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:web/src/viewmodel/GraphViewModel.ts",
|
|
"ownerId": "container:web/src/viewmodel/GraphViewModel.ts#GraphViewModel@52",
|
|
"moduleId": "module:web/src/viewmodel",
|
|
"signature": "selectGroup(groupId: string | null): void",
|
|
"params": [
|
|
{
|
|
"name": "groupId",
|
|
"typeRef": "string | null",
|
|
"optional": false
|
|
}
|
|
],
|
|
"returnType": "void",
|
|
"loc": 8
|
|
},
|
|
{
|
|
"id": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.load@180",
|
|
"kind": "function",
|
|
"name": "load",
|
|
"qualifiedName": "GraphViewModel.load",
|
|
"location": {
|
|
"file": "web/src/viewmodel/GraphViewModel.ts",
|
|
"startLine": 180,
|
|
"endLine": 211,
|
|
"startCol": 3,
|
|
"endCol": 4
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:web/src/viewmodel/GraphViewModel.ts",
|
|
"ownerId": "container:web/src/viewmodel/GraphViewModel.ts#GraphViewModel@52",
|
|
"moduleId": "module:web/src/viewmodel",
|
|
"signature": "load(): Promise<void>",
|
|
"params": [],
|
|
"returnType": "Promise<void>",
|
|
"loc": 32
|
|
},
|
|
{
|
|
"id": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.flows@214",
|
|
"kind": "function",
|
|
"name": "flows",
|
|
"qualifiedName": "GraphViewModel.flows",
|
|
"location": {
|
|
"file": "web/src/viewmodel/GraphViewModel.ts",
|
|
"startLine": 214,
|
|
"endLine": 217,
|
|
"startCol": 3,
|
|
"endCol": 4
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:web/src/viewmodel/GraphViewModel.ts",
|
|
"ownerId": "container:web/src/viewmodel/GraphViewModel.ts#GraphViewModel@52",
|
|
"moduleId": "module:web/src/viewmodel",
|
|
"signature": "flows(): Flow[]",
|
|
"params": [],
|
|
"returnType": "Flow[]",
|
|
"loc": 4
|
|
},
|
|
{
|
|
"id": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.currentFlow@219",
|
|
"kind": "function",
|
|
"name": "currentFlow",
|
|
"qualifiedName": "GraphViewModel.currentFlow",
|
|
"location": {
|
|
"file": "web/src/viewmodel/GraphViewModel.ts",
|
|
"startLine": 219,
|
|
"endLine": 222,
|
|
"startCol": 3,
|
|
"endCol": 4
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:web/src/viewmodel/GraphViewModel.ts",
|
|
"ownerId": "container:web/src/viewmodel/GraphViewModel.ts#GraphViewModel@52",
|
|
"moduleId": "module:web/src/viewmodel",
|
|
"signature": "currentFlow(): Flow | null",
|
|
"params": [],
|
|
"returnType": "Flow | null",
|
|
"loc": 4
|
|
},
|
|
{
|
|
"id": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.positionedGraph@225",
|
|
"kind": "function",
|
|
"name": "positionedGraph",
|
|
"qualifiedName": "GraphViewModel.positionedGraph",
|
|
"location": {
|
|
"file": "web/src/viewmodel/GraphViewModel.ts",
|
|
"startLine": 225,
|
|
"endLine": 246,
|
|
"startCol": 3,
|
|
"endCol": 4
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:web/src/viewmodel/GraphViewModel.ts",
|
|
"ownerId": "container:web/src/viewmodel/GraphViewModel.ts#GraphViewModel@52",
|
|
"moduleId": "module:web/src/viewmodel",
|
|
"signature": "positionedGraph(): PositionedGraph",
|
|
"params": [],
|
|
"returnType": "PositionedGraph",
|
|
"loc": 22
|
|
},
|
|
{
|
|
"id": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.selectedFunc@248",
|
|
"kind": "function",
|
|
"name": "selectedFunc",
|
|
"qualifiedName": "GraphViewModel.selectedFunc",
|
|
"location": {
|
|
"file": "web/src/viewmodel/GraphViewModel.ts",
|
|
"startLine": 248,
|
|
"endLine": 253,
|
|
"startCol": 3,
|
|
"endCol": 4
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:web/src/viewmodel/GraphViewModel.ts",
|
|
"ownerId": "container:web/src/viewmodel/GraphViewModel.ts#GraphViewModel@52",
|
|
"moduleId": "module:web/src/viewmodel",
|
|
"signature": "selectedFunc(): Func | null",
|
|
"params": [],
|
|
"returnType": "Func | null",
|
|
"loc": 6
|
|
},
|
|
{
|
|
"id": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.flowsForSelectedFunc@256",
|
|
"kind": "function",
|
|
"name": "flowsForSelectedFunc",
|
|
"qualifiedName": "GraphViewModel.flowsForSelectedFunc",
|
|
"location": {
|
|
"file": "web/src/viewmodel/GraphViewModel.ts",
|
|
"startLine": 256,
|
|
"endLine": 262,
|
|
"startCol": 3,
|
|
"endCol": 4
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:web/src/viewmodel/GraphViewModel.ts",
|
|
"ownerId": "container:web/src/viewmodel/GraphViewModel.ts#GraphViewModel@52",
|
|
"moduleId": "module:web/src/viewmodel",
|
|
"signature": "flowsForSelectedFunc(): Flow[]",
|
|
"params": [],
|
|
"returnType": "Flow[]",
|
|
"loc": 7
|
|
},
|
|
{
|
|
"id": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.openFlowForFunc@265",
|
|
"kind": "function",
|
|
"name": "openFlowForFunc",
|
|
"qualifiedName": "GraphViewModel.openFlowForFunc",
|
|
"location": {
|
|
"file": "web/src/viewmodel/GraphViewModel.ts",
|
|
"startLine": 265,
|
|
"endLine": 271,
|
|
"startCol": 3,
|
|
"endCol": 4
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:web/src/viewmodel/GraphViewModel.ts",
|
|
"ownerId": "container:web/src/viewmodel/GraphViewModel.ts#GraphViewModel@52",
|
|
"moduleId": "module:web/src/viewmodel",
|
|
"signature": "openFlowForFunc(flowId: string, funcId: string): void",
|
|
"params": [
|
|
{
|
|
"name": "flowId",
|
|
"typeRef": "string",
|
|
"optional": false
|
|
},
|
|
{
|
|
"name": "funcId",
|
|
"typeRef": "string",
|
|
"optional": false
|
|
}
|
|
],
|
|
"returnType": "void",
|
|
"loc": 7
|
|
},
|
|
{
|
|
"id": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.setSearchQuery@275",
|
|
"kind": "function",
|
|
"name": "setSearchQuery",
|
|
"qualifiedName": "GraphViewModel.setSearchQuery",
|
|
"location": {
|
|
"file": "web/src/viewmodel/GraphViewModel.ts",
|
|
"startLine": 275,
|
|
"endLine": 277,
|
|
"startCol": 3,
|
|
"endCol": 4
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:web/src/viewmodel/GraphViewModel.ts",
|
|
"ownerId": "container:web/src/viewmodel/GraphViewModel.ts#GraphViewModel@52",
|
|
"moduleId": "module:web/src/viewmodel",
|
|
"signature": "setSearchQuery(q: string): void",
|
|
"params": [
|
|
{
|
|
"name": "q",
|
|
"typeRef": "string",
|
|
"optional": false
|
|
}
|
|
],
|
|
"returnType": "void",
|
|
"loc": 3
|
|
},
|
|
{
|
|
"id": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.funcIdsInFlows@279",
|
|
"kind": "function",
|
|
"name": "funcIdsInFlows",
|
|
"qualifiedName": "GraphViewModel.funcIdsInFlows",
|
|
"location": {
|
|
"file": "web/src/viewmodel/GraphViewModel.ts",
|
|
"startLine": 279,
|
|
"endLine": 285,
|
|
"startCol": 3,
|
|
"endCol": 4
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:web/src/viewmodel/GraphViewModel.ts",
|
|
"ownerId": "container:web/src/viewmodel/GraphViewModel.ts#GraphViewModel@52",
|
|
"moduleId": "module:web/src/viewmodel",
|
|
"signature": "funcIdsInFlows(): Set<string>",
|
|
"params": [],
|
|
"returnType": "Set<string>",
|
|
"loc": 7
|
|
},
|
|
{
|
|
"id": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.biggestFlowForFunc@287",
|
|
"kind": "function",
|
|
"name": "biggestFlowForFunc",
|
|
"qualifiedName": "GraphViewModel.biggestFlowForFunc",
|
|
"location": {
|
|
"file": "web/src/viewmodel/GraphViewModel.ts",
|
|
"startLine": 287,
|
|
"endLine": 292,
|
|
"startCol": 3,
|
|
"endCol": 4
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:web/src/viewmodel/GraphViewModel.ts",
|
|
"ownerId": "container:web/src/viewmodel/GraphViewModel.ts#GraphViewModel@52",
|
|
"moduleId": "module:web/src/viewmodel",
|
|
"signature": "biggestFlowForFunc(funcId: string): Flow | null",
|
|
"params": [
|
|
{
|
|
"name": "funcId",
|
|
"typeRef": "string",
|
|
"optional": false
|
|
}
|
|
],
|
|
"returnType": "Flow | null",
|
|
"loc": 6
|
|
},
|
|
{
|
|
"id": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.searchResults@294",
|
|
"kind": "function",
|
|
"name": "searchResults",
|
|
"qualifiedName": "GraphViewModel.searchResults",
|
|
"location": {
|
|
"file": "web/src/viewmodel/GraphViewModel.ts",
|
|
"startLine": 294,
|
|
"endLine": 320,
|
|
"startCol": 3,
|
|
"endCol": 4
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:web/src/viewmodel/GraphViewModel.ts",
|
|
"ownerId": "container:web/src/viewmodel/GraphViewModel.ts#GraphViewModel@52",
|
|
"moduleId": "module:web/src/viewmodel",
|
|
"signature": "searchResults(): SearchResult[]",
|
|
"params": [],
|
|
"returnType": "SearchResult[]",
|
|
"loc": 27
|
|
},
|
|
{
|
|
"id": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.activateSearchResult@322",
|
|
"kind": "function",
|
|
"name": "activateSearchResult",
|
|
"qualifiedName": "GraphViewModel.activateSearchResult",
|
|
"location": {
|
|
"file": "web/src/viewmodel/GraphViewModel.ts",
|
|
"startLine": 322,
|
|
"endLine": 332,
|
|
"startCol": 3,
|
|
"endCol": 4
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:web/src/viewmodel/GraphViewModel.ts",
|
|
"ownerId": "container:web/src/viewmodel/GraphViewModel.ts#GraphViewModel@52",
|
|
"moduleId": "module:web/src/viewmodel",
|
|
"signature": "activateSearchResult(result: SearchResult): void",
|
|
"params": [
|
|
{
|
|
"name": "result",
|
|
"typeRef": "SearchResult",
|
|
"optional": false
|
|
}
|
|
],
|
|
"returnType": "void",
|
|
"loc": 11
|
|
},
|
|
{
|
|
"id": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.selectFlow@334",
|
|
"kind": "function",
|
|
"name": "selectFlow",
|
|
"qualifiedName": "GraphViewModel.selectFlow",
|
|
"location": {
|
|
"file": "web/src/viewmodel/GraphViewModel.ts",
|
|
"startLine": 334,
|
|
"endLine": 338,
|
|
"startCol": 3,
|
|
"endCol": 4
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:web/src/viewmodel/GraphViewModel.ts",
|
|
"ownerId": "container:web/src/viewmodel/GraphViewModel.ts#GraphViewModel@52",
|
|
"moduleId": "module:web/src/viewmodel",
|
|
"signature": "selectFlow(flowId: string): void",
|
|
"params": [
|
|
{
|
|
"name": "flowId",
|
|
"typeRef": "string",
|
|
"optional": false
|
|
}
|
|
],
|
|
"returnType": "void",
|
|
"loc": 5
|
|
},
|
|
{
|
|
"id": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.selectNode@340",
|
|
"kind": "function",
|
|
"name": "selectNode",
|
|
"qualifiedName": "GraphViewModel.selectNode",
|
|
"location": {
|
|
"file": "web/src/viewmodel/GraphViewModel.ts",
|
|
"startLine": 340,
|
|
"endLine": 342,
|
|
"startCol": 3,
|
|
"endCol": 4
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:web/src/viewmodel/GraphViewModel.ts",
|
|
"ownerId": "container:web/src/viewmodel/GraphViewModel.ts#GraphViewModel@52",
|
|
"moduleId": "module:web/src/viewmodel",
|
|
"signature": "selectNode(nodeId: string | null): void",
|
|
"params": [
|
|
{
|
|
"name": "nodeId",
|
|
"typeRef": "string | null",
|
|
"optional": false
|
|
}
|
|
],
|
|
"returnType": "void",
|
|
"loc": 3
|
|
},
|
|
{
|
|
"id": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.loadSelectedFuncCode@346",
|
|
"kind": "function",
|
|
"name": "loadSelectedFuncCode",
|
|
"qualifiedName": "GraphViewModel.loadSelectedFuncCode",
|
|
"location": {
|
|
"file": "web/src/viewmodel/GraphViewModel.ts",
|
|
"startLine": 346,
|
|
"endLine": 379,
|
|
"startCol": 3,
|
|
"endCol": 4
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:web/src/viewmodel/GraphViewModel.ts",
|
|
"ownerId": "container:web/src/viewmodel/GraphViewModel.ts#GraphViewModel@52",
|
|
"moduleId": "module:web/src/viewmodel",
|
|
"signature": "loadSelectedFuncCode(): Promise<void>",
|
|
"params": [],
|
|
"returnType": "Promise<void>",
|
|
"loc": 34
|
|
},
|
|
{
|
|
"id": "func:web/src/viewmodel/GraphViewModel.ts#reaction() 回调@79@79",
|
|
"kind": "function",
|
|
"name": "reaction() 回调@79",
|
|
"qualifiedName": "reaction() 回调@79",
|
|
"location": {
|
|
"file": "web/src/viewmodel/GraphViewModel.ts",
|
|
"startLine": 79,
|
|
"endLine": 81,
|
|
"startCol": 7,
|
|
"endCol": 8
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:web/src/viewmodel/GraphViewModel.ts",
|
|
"moduleId": "module:web/src/viewmodel",
|
|
"signature": "reaction() 回调@79()",
|
|
"params": [],
|
|
"loc": 3
|
|
},
|
|
{
|
|
"id": "func:web/src/viewmodel/GraphViewModel.ts#runInAction() 回调@203@203",
|
|
"kind": "function",
|
|
"name": "runInAction() 回调@203",
|
|
"qualifiedName": "runInAction() 回调@203",
|
|
"location": {
|
|
"file": "web/src/viewmodel/GraphViewModel.ts",
|
|
"startLine": 203,
|
|
"endLine": 205,
|
|
"startCol": 19,
|
|
"endCol": 8
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:web/src/viewmodel/GraphViewModel.ts",
|
|
"moduleId": "module:web/src/viewmodel",
|
|
"signature": "runInAction() 回调@203()",
|
|
"params": [],
|
|
"loc": 3
|
|
},
|
|
{
|
|
"id": "func:web/src/viewmodel/GraphViewModel.ts#map() 回调@240@240",
|
|
"kind": "function",
|
|
"name": "map() 回调@240",
|
|
"qualifiedName": "map() 回调@240",
|
|
"location": {
|
|
"file": "web/src/viewmodel/GraphViewModel.ts",
|
|
"startLine": 240,
|
|
"endLine": 243,
|
|
"startCol": 53,
|
|
"endCol": 6
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:web/src/viewmodel/GraphViewModel.ts",
|
|
"moduleId": "module:web/src/viewmodel",
|
|
"signature": "map() 回调@240(n)",
|
|
"params": [
|
|
{
|
|
"name": "n",
|
|
"optional": false
|
|
}
|
|
],
|
|
"loc": 4
|
|
},
|
|
{
|
|
"id": "func:web/src/viewmodel/GraphViewModel.ts#runInAction() 回调@368@368",
|
|
"kind": "function",
|
|
"name": "runInAction() 回调@368",
|
|
"qualifiedName": "runInAction() 回调@368",
|
|
"location": {
|
|
"file": "web/src/viewmodel/GraphViewModel.ts",
|
|
"startLine": 368,
|
|
"endLine": 377,
|
|
"startCol": 19,
|
|
"endCol": 8
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:web/src/viewmodel/GraphViewModel.ts",
|
|
"moduleId": "module:web/src/viewmodel",
|
|
"signature": "runInAction() 回调@368()",
|
|
"params": [],
|
|
"loc": 10
|
|
},
|
|
{
|
|
"id": "func:web/src/view/vmContext.ts#useGraphVM@6",
|
|
"kind": "function",
|
|
"name": "useGraphVM",
|
|
"qualifiedName": "useGraphVM",
|
|
"location": {
|
|
"file": "web/src/view/vmContext.ts",
|
|
"startLine": 6,
|
|
"endLine": 10,
|
|
"startCol": 1,
|
|
"endCol": 2
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:web/src/view/vmContext.ts",
|
|
"moduleId": "module:web/src/view",
|
|
"signature": "useGraphVM(): GraphViewModel",
|
|
"params": [],
|
|
"returnType": "GraphViewModel",
|
|
"loc": 5
|
|
},
|
|
{
|
|
"id": "func:web/src/view/components/FlowNode.tsx#interactionBadges@12",
|
|
"kind": "function",
|
|
"name": "interactionBadges",
|
|
"qualifiedName": "interactionBadges",
|
|
"location": {
|
|
"file": "web/src/view/components/FlowNode.tsx",
|
|
"startLine": 12,
|
|
"endLine": 38,
|
|
"startCol": 1,
|
|
"endCol": 2
|
|
},
|
|
"language": "tsx",
|
|
"provenance": "ast",
|
|
"fileId": "file:web/src/view/components/FlowNode.tsx",
|
|
"moduleId": "module:web/src/view/components",
|
|
"signature": "interactionBadges(interactions: Interaction[]): { key: string; text: string; cls: string }[]",
|
|
"params": [
|
|
{
|
|
"name": "interactions",
|
|
"typeRef": "Interaction[]",
|
|
"optional": true
|
|
}
|
|
],
|
|
"returnType": "{ key: string; text: string; cls: string }[]",
|
|
"loc": 27
|
|
},
|
|
{
|
|
"id": "func:web/src/view/components/FlowNode.tsx#memo() 回调@40@40",
|
|
"kind": "function",
|
|
"name": "memo() 回调@40",
|
|
"qualifiedName": "memo() 回调@40",
|
|
"location": {
|
|
"file": "web/src/view/components/FlowNode.tsx",
|
|
"startLine": 40,
|
|
"endLine": 66,
|
|
"startCol": 30,
|
|
"endCol": 2
|
|
},
|
|
"language": "tsx",
|
|
"provenance": "ast",
|
|
"fileId": "file:web/src/view/components/FlowNode.tsx",
|
|
"moduleId": "module:web/src/view/components",
|
|
"signature": "memo() 回调@40({ data, selected }: NodeProps & { data: FlowNodeData })",
|
|
"params": [
|
|
{
|
|
"name": "{ data, selected }",
|
|
"typeRef": "NodeProps & { data: FlowNodeData }",
|
|
"optional": false
|
|
}
|
|
],
|
|
"loc": 27
|
|
},
|
|
{
|
|
"id": "func:web/src/view/components/FlowGraph.tsx#observer() 回调@16@16",
|
|
"kind": "function",
|
|
"name": "observer() 回调@16",
|
|
"qualifiedName": "observer() 回调@16",
|
|
"location": {
|
|
"file": "web/src/view/components/FlowGraph.tsx",
|
|
"startLine": 16,
|
|
"endLine": 70,
|
|
"startCol": 35,
|
|
"endCol": 2
|
|
},
|
|
"language": "tsx",
|
|
"provenance": "ast",
|
|
"fileId": "file:web/src/view/components/FlowGraph.tsx",
|
|
"moduleId": "module:web/src/view/components",
|
|
"signature": "observer() 回调@16()",
|
|
"params": [],
|
|
"loc": 55
|
|
},
|
|
{
|
|
"id": "func:web/src/view/components/FlowList.tsx#observer() 回调@4@4",
|
|
"kind": "function",
|
|
"name": "observer() 回调@4",
|
|
"qualifiedName": "observer() 回调@4",
|
|
"location": {
|
|
"file": "web/src/view/components/FlowList.tsx",
|
|
"startLine": 4,
|
|
"endLine": 38,
|
|
"startCol": 34,
|
|
"endCol": 2
|
|
},
|
|
"language": "tsx",
|
|
"provenance": "ast",
|
|
"fileId": "file:web/src/view/components/FlowList.tsx",
|
|
"moduleId": "module:web/src/view/components",
|
|
"signature": "observer() 回调@4()",
|
|
"params": [],
|
|
"loc": 35
|
|
},
|
|
{
|
|
"id": "func:web/src/view/components/GroupList.tsx#observer() 回调@4@4",
|
|
"kind": "function",
|
|
"name": "observer() 回调@4",
|
|
"qualifiedName": "observer() 回调@4",
|
|
"location": {
|
|
"file": "web/src/view/components/GroupList.tsx",
|
|
"startLine": 4,
|
|
"endLine": 36,
|
|
"startCol": 35,
|
|
"endCol": 2
|
|
},
|
|
"language": "tsx",
|
|
"provenance": "ast",
|
|
"fileId": "file:web/src/view/components/GroupList.tsx",
|
|
"moduleId": "module:web/src/view/components",
|
|
"signature": "observer() 回调@4()",
|
|
"params": [],
|
|
"loc": 33
|
|
},
|
|
{
|
|
"id": "func:web/src/view/components/NodeDetailPanel.tsx#describeInteraction@5",
|
|
"kind": "function",
|
|
"name": "describeInteraction",
|
|
"qualifiedName": "describeInteraction",
|
|
"location": {
|
|
"file": "web/src/view/components/NodeDetailPanel.tsx",
|
|
"startLine": 5,
|
|
"endLine": 11,
|
|
"startCol": 1,
|
|
"endCol": 2
|
|
},
|
|
"language": "tsx",
|
|
"provenance": "ast",
|
|
"fileId": "file:web/src/view/components/NodeDetailPanel.tsx",
|
|
"moduleId": "module:web/src/view/components",
|
|
"signature": "describeInteraction(ix: Interaction): string",
|
|
"params": [
|
|
{
|
|
"name": "ix",
|
|
"typeRef": "Interaction",
|
|
"optional": false
|
|
}
|
|
],
|
|
"returnType": "string",
|
|
"loc": 7
|
|
},
|
|
{
|
|
"id": "func:web/src/view/components/NodeDetailPanel.tsx#observer() 回调@13@13",
|
|
"kind": "function",
|
|
"name": "observer() 回调@13",
|
|
"qualifiedName": "observer() 回调@13",
|
|
"location": {
|
|
"file": "web/src/view/components/NodeDetailPanel.tsx",
|
|
"startLine": 13,
|
|
"endLine": 98,
|
|
"startCol": 41,
|
|
"endCol": 2
|
|
},
|
|
"language": "tsx",
|
|
"provenance": "ast",
|
|
"fileId": "file:web/src/view/components/NodeDetailPanel.tsx",
|
|
"moduleId": "module:web/src/view/components",
|
|
"signature": "observer() 回调@13()",
|
|
"params": [],
|
|
"loc": 86
|
|
},
|
|
{
|
|
"id": "func:web/src/view/components/SearchBar.tsx#observer() 回调@6@6",
|
|
"kind": "function",
|
|
"name": "observer() 回调@6",
|
|
"qualifiedName": "observer() 回调@6",
|
|
"location": {
|
|
"file": "web/src/view/components/SearchBar.tsx",
|
|
"startLine": 6,
|
|
"endLine": 59,
|
|
"startCol": 35,
|
|
"endCol": 2
|
|
},
|
|
"language": "tsx",
|
|
"provenance": "ast",
|
|
"fileId": "file:web/src/view/components/SearchBar.tsx",
|
|
"moduleId": "module:web/src/view/components",
|
|
"signature": "observer() 回调@6()",
|
|
"params": [],
|
|
"loc": 54
|
|
},
|
|
{
|
|
"id": "func:web/src/view/components/SearchBar.tsx#activate@12",
|
|
"kind": "function",
|
|
"name": "activate",
|
|
"qualifiedName": "activate",
|
|
"location": {
|
|
"file": "web/src/view/components/SearchBar.tsx",
|
|
"startLine": 12,
|
|
"endLine": 15,
|
|
"startCol": 9,
|
|
"endCol": 4
|
|
},
|
|
"language": "tsx",
|
|
"provenance": "ast",
|
|
"fileId": "file:web/src/view/components/SearchBar.tsx",
|
|
"moduleId": "module:web/src/view/components",
|
|
"signature": "activate(r: SearchResult): void",
|
|
"params": [
|
|
{
|
|
"name": "r",
|
|
"typeRef": "SearchResult",
|
|
"optional": false
|
|
}
|
|
],
|
|
"returnType": "void",
|
|
"loc": 4
|
|
},
|
|
{
|
|
"id": "func:web/src/view/components/SearchBar.tsx#匿名函数@26@26",
|
|
"kind": "function",
|
|
"name": "匿名函数@26",
|
|
"qualifiedName": "匿名函数@26",
|
|
"location": {
|
|
"file": "web/src/view/components/SearchBar.tsx",
|
|
"startLine": 26,
|
|
"endLine": 29,
|
|
"startCol": 20,
|
|
"endCol": 10
|
|
},
|
|
"language": "tsx",
|
|
"provenance": "ast",
|
|
"fileId": "file:web/src/view/components/SearchBar.tsx",
|
|
"moduleId": "module:web/src/view/components",
|
|
"signature": "匿名函数@26(e)",
|
|
"params": [
|
|
{
|
|
"name": "e",
|
|
"optional": false
|
|
}
|
|
],
|
|
"loc": 4
|
|
},
|
|
{
|
|
"id": "func:web/src/view/components/SearchBar.tsx#匿名函数@41@41",
|
|
"kind": "function",
|
|
"name": "匿名函数@41",
|
|
"qualifiedName": "匿名函数@41",
|
|
"location": {
|
|
"file": "web/src/view/components/SearchBar.tsx",
|
|
"startLine": 41,
|
|
"endLine": 44,
|
|
"startCol": 30,
|
|
"endCol": 18
|
|
},
|
|
"language": "tsx",
|
|
"provenance": "ast",
|
|
"fileId": "file:web/src/view/components/SearchBar.tsx",
|
|
"moduleId": "module:web/src/view/components",
|
|
"signature": "匿名函数@41(e)",
|
|
"params": [
|
|
{
|
|
"name": "e",
|
|
"optional": false
|
|
}
|
|
],
|
|
"loc": 4
|
|
},
|
|
{
|
|
"id": "func:web/src/services/languageMap.ts#languageOf@42",
|
|
"kind": "function",
|
|
"name": "languageOf",
|
|
"qualifiedName": "languageOf",
|
|
"location": {
|
|
"file": "web/src/services/languageMap.ts",
|
|
"startLine": 42,
|
|
"endLine": 48,
|
|
"startCol": 1,
|
|
"endCol": 2
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:web/src/services/languageMap.ts",
|
|
"moduleId": "module:web/src/services",
|
|
"signature": "languageOf(file: string | undefined): string",
|
|
"params": [
|
|
{
|
|
"name": "file",
|
|
"typeRef": "string | undefined",
|
|
"optional": false
|
|
}
|
|
],
|
|
"returnType": "string",
|
|
"loc": 7
|
|
},
|
|
{
|
|
"id": "func:web/src/view/components/CodePanel.tsx#observer() 回调@7@7",
|
|
"kind": "function",
|
|
"name": "observer() 回调@7",
|
|
"qualifiedName": "observer() 回调@7",
|
|
"location": {
|
|
"file": "web/src/view/components/CodePanel.tsx",
|
|
"startLine": 7,
|
|
"endLine": 66,
|
|
"startCol": 35,
|
|
"endCol": 2
|
|
},
|
|
"language": "tsx",
|
|
"provenance": "ast",
|
|
"fileId": "file:web/src/view/components/CodePanel.tsx",
|
|
"moduleId": "module:web/src/view/components",
|
|
"signature": "observer() 回调@7()",
|
|
"params": [],
|
|
"loc": 60
|
|
},
|
|
{
|
|
"id": "func:web/src/view/components/FlowBanner.tsx#observer() 回调@4@4",
|
|
"kind": "function",
|
|
"name": "observer() 回调@4",
|
|
"qualifiedName": "observer() 回调@4",
|
|
"location": {
|
|
"file": "web/src/view/components/FlowBanner.tsx",
|
|
"startLine": 4,
|
|
"endLine": 16,
|
|
"startCol": 36,
|
|
"endCol": 2
|
|
},
|
|
"language": "tsx",
|
|
"provenance": "ast",
|
|
"fileId": "file:web/src/view/components/FlowBanner.tsx",
|
|
"moduleId": "module:web/src/view/components",
|
|
"signature": "observer() 回调@4()",
|
|
"params": [],
|
|
"loc": 13
|
|
},
|
|
{
|
|
"id": "func:web/src/view/App.tsx#observer() 回调@11@11",
|
|
"kind": "function",
|
|
"name": "observer() 回调@11",
|
|
"qualifiedName": "observer() 回调@11",
|
|
"location": {
|
|
"file": "web/src/view/App.tsx",
|
|
"startLine": 11,
|
|
"endLine": 60,
|
|
"startCol": 29,
|
|
"endCol": 2
|
|
},
|
|
"language": "tsx",
|
|
"provenance": "ast",
|
|
"fileId": "file:web/src/view/App.tsx",
|
|
"moduleId": "module:web/src/view",
|
|
"signature": "observer() 回调@11()",
|
|
"params": [],
|
|
"loc": 50
|
|
},
|
|
{
|
|
"id": "func:web/vite.config.ts#sourceServer@11",
|
|
"kind": "function",
|
|
"name": "sourceServer",
|
|
"qualifiedName": "sourceServer",
|
|
"location": {
|
|
"file": "web/vite.config.ts",
|
|
"startLine": 11,
|
|
"endLine": 52,
|
|
"startCol": 1,
|
|
"endCol": 2
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:web/vite.config.ts",
|
|
"moduleId": "module:web",
|
|
"signature": "sourceServer(): Plugin",
|
|
"params": [],
|
|
"returnType": "Plugin",
|
|
"loc": 42
|
|
},
|
|
{
|
|
"id": "func:web/vite.config.ts#use() 回调@15@15",
|
|
"kind": "function",
|
|
"name": "use() 回调@15",
|
|
"qualifiedName": "use() 回调@15",
|
|
"location": {
|
|
"file": "web/vite.config.ts",
|
|
"startLine": 15,
|
|
"endLine": 49,
|
|
"startCol": 43,
|
|
"endCol": 8
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:web/vite.config.ts",
|
|
"moduleId": "module:web",
|
|
"signature": "use() 回调@15(req, res)",
|
|
"params": [
|
|
{
|
|
"name": "req",
|
|
"optional": false
|
|
},
|
|
{
|
|
"name": "res",
|
|
"optional": false
|
|
}
|
|
],
|
|
"loc": 35
|
|
},
|
|
{
|
|
"id": "func:scripts/annotate-self-report.mjs#<module>@0",
|
|
"kind": "function",
|
|
"name": "<module>",
|
|
"qualifiedName": "<module>",
|
|
"location": {
|
|
"file": "scripts/annotate-self-report.mjs",
|
|
"startLine": 1,
|
|
"endLine": 119
|
|
},
|
|
"language": "javascript",
|
|
"provenance": "ast",
|
|
"fileId": "file:scripts/annotate-self-report.mjs",
|
|
"moduleId": "module:scripts",
|
|
"params": [],
|
|
"summary": "模块顶层代码(副作用/初始化)"
|
|
},
|
|
{
|
|
"id": "func:src/cli.ts#<module>@0",
|
|
"kind": "function",
|
|
"name": "<module>",
|
|
"qualifiedName": "<module>",
|
|
"location": {
|
|
"file": "src/cli.ts",
|
|
"startLine": 1,
|
|
"endLine": 71
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:src/cli.ts",
|
|
"moduleId": "module:src",
|
|
"params": [],
|
|
"summary": "模块顶层代码(副作用/初始化)"
|
|
},
|
|
{
|
|
"id": "func:src/overview-cli.ts#<module>@0",
|
|
"kind": "function",
|
|
"name": "<module>",
|
|
"qualifiedName": "<module>",
|
|
"location": {
|
|
"file": "src/overview-cli.ts",
|
|
"startLine": 1,
|
|
"endLine": 87
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:src/overview-cli.ts",
|
|
"moduleId": "module:src",
|
|
"params": [],
|
|
"summary": "模块顶层代码(副作用/初始化)"
|
|
},
|
|
{
|
|
"id": "func:web/src/view/vmContext.ts#<module>@0",
|
|
"kind": "function",
|
|
"name": "<module>",
|
|
"qualifiedName": "<module>",
|
|
"location": {
|
|
"file": "web/src/view/vmContext.ts",
|
|
"startLine": 1,
|
|
"endLine": 11
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:web/src/view/vmContext.ts",
|
|
"moduleId": "module:web/src/view",
|
|
"params": [],
|
|
"summary": "模块顶层代码(副作用/初始化)"
|
|
},
|
|
{
|
|
"id": "func:web/src/view/components/FlowNode.tsx#<module>@0",
|
|
"kind": "function",
|
|
"name": "<module>",
|
|
"qualifiedName": "<module>",
|
|
"location": {
|
|
"file": "web/src/view/components/FlowNode.tsx",
|
|
"startLine": 1,
|
|
"endLine": 67
|
|
},
|
|
"language": "tsx",
|
|
"provenance": "ast",
|
|
"fileId": "file:web/src/view/components/FlowNode.tsx",
|
|
"moduleId": "module:web/src/view/components",
|
|
"params": [],
|
|
"summary": "模块顶层代码(副作用/初始化)"
|
|
},
|
|
{
|
|
"id": "func:web/src/view/components/FlowGraph.tsx#<module>@0",
|
|
"kind": "function",
|
|
"name": "<module>",
|
|
"qualifiedName": "<module>",
|
|
"location": {
|
|
"file": "web/src/view/components/FlowGraph.tsx",
|
|
"startLine": 1,
|
|
"endLine": 71
|
|
},
|
|
"language": "tsx",
|
|
"provenance": "ast",
|
|
"fileId": "file:web/src/view/components/FlowGraph.tsx",
|
|
"moduleId": "module:web/src/view/components",
|
|
"params": [],
|
|
"summary": "模块顶层代码(副作用/初始化)"
|
|
},
|
|
{
|
|
"id": "func:web/src/view/components/FlowList.tsx#<module>@0",
|
|
"kind": "function",
|
|
"name": "<module>",
|
|
"qualifiedName": "<module>",
|
|
"location": {
|
|
"file": "web/src/view/components/FlowList.tsx",
|
|
"startLine": 1,
|
|
"endLine": 39
|
|
},
|
|
"language": "tsx",
|
|
"provenance": "ast",
|
|
"fileId": "file:web/src/view/components/FlowList.tsx",
|
|
"moduleId": "module:web/src/view/components",
|
|
"params": [],
|
|
"summary": "模块顶层代码(副作用/初始化)"
|
|
},
|
|
{
|
|
"id": "func:web/src/view/components/GroupList.tsx#<module>@0",
|
|
"kind": "function",
|
|
"name": "<module>",
|
|
"qualifiedName": "<module>",
|
|
"location": {
|
|
"file": "web/src/view/components/GroupList.tsx",
|
|
"startLine": 1,
|
|
"endLine": 37
|
|
},
|
|
"language": "tsx",
|
|
"provenance": "ast",
|
|
"fileId": "file:web/src/view/components/GroupList.tsx",
|
|
"moduleId": "module:web/src/view/components",
|
|
"params": [],
|
|
"summary": "模块顶层代码(副作用/初始化)"
|
|
},
|
|
{
|
|
"id": "func:web/src/view/components/NodeDetailPanel.tsx#<module>@0",
|
|
"kind": "function",
|
|
"name": "<module>",
|
|
"qualifiedName": "<module>",
|
|
"location": {
|
|
"file": "web/src/view/components/NodeDetailPanel.tsx",
|
|
"startLine": 1,
|
|
"endLine": 99
|
|
},
|
|
"language": "tsx",
|
|
"provenance": "ast",
|
|
"fileId": "file:web/src/view/components/NodeDetailPanel.tsx",
|
|
"moduleId": "module:web/src/view/components",
|
|
"params": [],
|
|
"summary": "模块顶层代码(副作用/初始化)"
|
|
},
|
|
{
|
|
"id": "func:web/src/view/components/SearchBar.tsx#<module>@0",
|
|
"kind": "function",
|
|
"name": "<module>",
|
|
"qualifiedName": "<module>",
|
|
"location": {
|
|
"file": "web/src/view/components/SearchBar.tsx",
|
|
"startLine": 1,
|
|
"endLine": 60
|
|
},
|
|
"language": "tsx",
|
|
"provenance": "ast",
|
|
"fileId": "file:web/src/view/components/SearchBar.tsx",
|
|
"moduleId": "module:web/src/view/components",
|
|
"params": [],
|
|
"summary": "模块顶层代码(副作用/初始化)"
|
|
},
|
|
{
|
|
"id": "func:web/src/view/components/CodePanel.tsx#<module>@0",
|
|
"kind": "function",
|
|
"name": "<module>",
|
|
"qualifiedName": "<module>",
|
|
"location": {
|
|
"file": "web/src/view/components/CodePanel.tsx",
|
|
"startLine": 1,
|
|
"endLine": 67
|
|
},
|
|
"language": "tsx",
|
|
"provenance": "ast",
|
|
"fileId": "file:web/src/view/components/CodePanel.tsx",
|
|
"moduleId": "module:web/src/view/components",
|
|
"params": [],
|
|
"summary": "模块顶层代码(副作用/初始化)"
|
|
},
|
|
{
|
|
"id": "func:web/src/view/components/FlowBanner.tsx#<module>@0",
|
|
"kind": "function",
|
|
"name": "<module>",
|
|
"qualifiedName": "<module>",
|
|
"location": {
|
|
"file": "web/src/view/components/FlowBanner.tsx",
|
|
"startLine": 1,
|
|
"endLine": 17
|
|
},
|
|
"language": "tsx",
|
|
"provenance": "ast",
|
|
"fileId": "file:web/src/view/components/FlowBanner.tsx",
|
|
"moduleId": "module:web/src/view/components",
|
|
"params": [],
|
|
"summary": "模块顶层代码(副作用/初始化)"
|
|
},
|
|
{
|
|
"id": "func:web/src/view/App.tsx#<module>@0",
|
|
"kind": "function",
|
|
"name": "<module>",
|
|
"qualifiedName": "<module>",
|
|
"location": {
|
|
"file": "web/src/view/App.tsx",
|
|
"startLine": 1,
|
|
"endLine": 61
|
|
},
|
|
"language": "tsx",
|
|
"provenance": "ast",
|
|
"fileId": "file:web/src/view/App.tsx",
|
|
"moduleId": "module:web/src/view",
|
|
"params": [],
|
|
"summary": "模块顶层代码(副作用/初始化)"
|
|
},
|
|
{
|
|
"id": "func:web/src/main.tsx#<module>@0",
|
|
"kind": "function",
|
|
"name": "<module>",
|
|
"qualifiedName": "<module>",
|
|
"location": {
|
|
"file": "web/src/main.tsx",
|
|
"startLine": 1,
|
|
"endLine": 27
|
|
},
|
|
"language": "tsx",
|
|
"provenance": "ast",
|
|
"fileId": "file:web/src/main.tsx",
|
|
"moduleId": "module:web/src",
|
|
"params": [],
|
|
"isEntry": true,
|
|
"summary": "模块顶层代码(副作用/初始化)"
|
|
},
|
|
{
|
|
"id": "func:web/vite.config.ts#<module>@0",
|
|
"kind": "function",
|
|
"name": "<module>",
|
|
"qualifiedName": "<module>",
|
|
"location": {
|
|
"file": "web/vite.config.ts",
|
|
"startLine": 1,
|
|
"endLine": 61
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"fileId": "file:web/vite.config.ts",
|
|
"moduleId": "module:web",
|
|
"params": [],
|
|
"summary": "模块顶层代码(副作用/初始化)"
|
|
}
|
|
],
|
|
"fields": [
|
|
{
|
|
"id": "field:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.loading@53",
|
|
"kind": "field",
|
|
"name": "loading",
|
|
"qualifiedName": "GraphViewModel.loading",
|
|
"location": {
|
|
"file": "web/src/viewmodel/GraphViewModel.ts",
|
|
"startLine": 53,
|
|
"endLine": 53,
|
|
"startCol": 3,
|
|
"endCol": 19
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"ownerId": "container:web/src/viewmodel/GraphViewModel.ts#GraphViewModel@52"
|
|
},
|
|
{
|
|
"id": "field:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.error@54",
|
|
"kind": "field",
|
|
"name": "error",
|
|
"qualifiedName": "GraphViewModel.error",
|
|
"location": {
|
|
"file": "web/src/viewmodel/GraphViewModel.ts",
|
|
"startLine": 54,
|
|
"endLine": 54,
|
|
"startCol": 3,
|
|
"endCol": 31
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"ownerId": "container:web/src/viewmodel/GraphViewModel.ts#GraphViewModel@52",
|
|
"typeRef": "string | null"
|
|
},
|
|
{
|
|
"id": "field:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.report@55",
|
|
"kind": "field",
|
|
"name": "report",
|
|
"qualifiedName": "GraphViewModel.report",
|
|
"location": {
|
|
"file": "web/src/viewmodel/GraphViewModel.ts",
|
|
"startLine": 55,
|
|
"endLine": 55,
|
|
"startCol": 3,
|
|
"endCol": 32
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"ownerId": "container:web/src/viewmodel/GraphViewModel.ts#GraphViewModel@52",
|
|
"typeRef": "Report | null"
|
|
},
|
|
{
|
|
"id": "field:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.selectedSourceId@57",
|
|
"kind": "field",
|
|
"name": "selectedSourceId",
|
|
"qualifiedName": "GraphViewModel.selectedSourceId",
|
|
"location": {
|
|
"file": "web/src/viewmodel/GraphViewModel.ts",
|
|
"startLine": 57,
|
|
"endLine": 57,
|
|
"startCol": 3,
|
|
"endCol": 42
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"ownerId": "container:web/src/viewmodel/GraphViewModel.ts#GraphViewModel@52",
|
|
"typeRef": "string | null"
|
|
},
|
|
{
|
|
"id": "field:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.selectedGroupId@58",
|
|
"kind": "field",
|
|
"name": "selectedGroupId",
|
|
"qualifiedName": "GraphViewModel.selectedGroupId",
|
|
"location": {
|
|
"file": "web/src/viewmodel/GraphViewModel.ts",
|
|
"startLine": 58,
|
|
"endLine": 58,
|
|
"startCol": 3,
|
|
"endCol": 41
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"ownerId": "container:web/src/viewmodel/GraphViewModel.ts#GraphViewModel@52",
|
|
"typeRef": "string | null"
|
|
},
|
|
{
|
|
"id": "field:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.selectedFlowId@59",
|
|
"kind": "field",
|
|
"name": "selectedFlowId",
|
|
"qualifiedName": "GraphViewModel.selectedFlowId",
|
|
"location": {
|
|
"file": "web/src/viewmodel/GraphViewModel.ts",
|
|
"startLine": 59,
|
|
"endLine": 59,
|
|
"startCol": 3,
|
|
"endCol": 40
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"ownerId": "container:web/src/viewmodel/GraphViewModel.ts#GraphViewModel@52",
|
|
"typeRef": "string | null"
|
|
},
|
|
{
|
|
"id": "field:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.selectedNodeId@60",
|
|
"kind": "field",
|
|
"name": "selectedNodeId",
|
|
"qualifiedName": "GraphViewModel.selectedNodeId",
|
|
"location": {
|
|
"file": "web/src/viewmodel/GraphViewModel.ts",
|
|
"startLine": 60,
|
|
"endLine": 60,
|
|
"startCol": 3,
|
|
"endCol": 40
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"ownerId": "container:web/src/viewmodel/GraphViewModel.ts#GraphViewModel@52",
|
|
"typeRef": "string | null"
|
|
},
|
|
{
|
|
"id": "field:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.searchQuery@61",
|
|
"kind": "field",
|
|
"name": "searchQuery",
|
|
"qualifiedName": "GraphViewModel.searchQuery",
|
|
"location": {
|
|
"file": "web/src/viewmodel/GraphViewModel.ts",
|
|
"startLine": 61,
|
|
"endLine": 61,
|
|
"startCol": 3,
|
|
"endCol": 20
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"ownerId": "container:web/src/viewmodel/GraphViewModel.ts#GraphViewModel@52"
|
|
},
|
|
{
|
|
"id": "field:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.codeState@62",
|
|
"kind": "field",
|
|
"name": "codeState",
|
|
"qualifiedName": "GraphViewModel.codeState",
|
|
"location": {
|
|
"file": "web/src/viewmodel/GraphViewModel.ts",
|
|
"startLine": 62,
|
|
"endLine": 62,
|
|
"startCol": 3,
|
|
"endCol": 87
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"ownerId": "container:web/src/viewmodel/GraphViewModel.ts#GraphViewModel@52",
|
|
"typeRef": "CodeState"
|
|
},
|
|
{
|
|
"id": "field:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.codePanelCollapsed@63",
|
|
"kind": "field",
|
|
"name": "codePanelCollapsed",
|
|
"qualifiedName": "GraphViewModel.codePanelCollapsed",
|
|
"location": {
|
|
"file": "web/src/viewmodel/GraphViewModel.ts",
|
|
"startLine": 63,
|
|
"endLine": 63,
|
|
"startCol": 3,
|
|
"endCol": 30
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"ownerId": "container:web/src/viewmodel/GraphViewModel.ts#GraphViewModel@52"
|
|
},
|
|
{
|
|
"id": "field:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.funcById@65",
|
|
"kind": "field",
|
|
"name": "funcById",
|
|
"qualifiedName": "GraphViewModel.funcById",
|
|
"location": {
|
|
"file": "web/src/viewmodel/GraphViewModel.ts",
|
|
"startLine": 65,
|
|
"endLine": 65,
|
|
"startCol": 3,
|
|
"endCol": 46
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"ownerId": "container:web/src/viewmodel/GraphViewModel.ts#GraphViewModel@52"
|
|
},
|
|
{
|
|
"id": "field:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.containerById@66",
|
|
"kind": "field",
|
|
"name": "containerById",
|
|
"qualifiedName": "GraphViewModel.containerById",
|
|
"location": {
|
|
"file": "web/src/viewmodel/GraphViewModel.ts",
|
|
"startLine": 66,
|
|
"endLine": 66,
|
|
"startCol": 3,
|
|
"endCol": 56
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"ownerId": "container:web/src/viewmodel/GraphViewModel.ts#GraphViewModel@52"
|
|
},
|
|
{
|
|
"id": "field:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.fileById@67",
|
|
"kind": "field",
|
|
"name": "fileById",
|
|
"qualifiedName": "GraphViewModel.fileById",
|
|
"location": {
|
|
"file": "web/src/viewmodel/GraphViewModel.ts",
|
|
"startLine": 67,
|
|
"endLine": 67,
|
|
"startCol": 3,
|
|
"endCol": 50
|
|
},
|
|
"language": "typescript",
|
|
"provenance": "ast",
|
|
"ownerId": "container:web/src/viewmodel/GraphViewModel.ts#GraphViewModel@52"
|
|
}
|
|
],
|
|
"edges": [
|
|
{
|
|
"id": "edge:call:func:src/scanner.ts#collectSourceFiles@24=>func:src/scanner.ts#walk@27",
|
|
"kind": "call",
|
|
"sourceId": "func:src/scanner.ts#collectSourceFiles@24",
|
|
"targetId": "func:src/scanner.ts#walk@27",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:import:file:src/externals.ts=>file:src/types.ts",
|
|
"kind": "import",
|
|
"sourceId": "file:src/externals.ts",
|
|
"targetId": "file:src/types.ts",
|
|
"provenance": "ast"
|
|
},
|
|
{
|
|
"id": "edge:import:file:src/flows.ts=>file:src/types.ts",
|
|
"kind": "import",
|
|
"sourceId": "file:src/flows.ts",
|
|
"targetId": "file:src/types.ts",
|
|
"provenance": "ast"
|
|
},
|
|
{
|
|
"id": "edge:call:func:src/flows.ts#map() 回调@72@72=>func:src/flows.ts#stepIdOf@70",
|
|
"kind": "call",
|
|
"sourceId": "func:src/flows.ts#map() 回调@72@72",
|
|
"targetId": "func:src/flows.ts#stepIdOf@70",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:import:file:src/analyzer.ts=>file:src/scanner.ts",
|
|
"kind": "import",
|
|
"sourceId": "file:src/analyzer.ts",
|
|
"targetId": "file:src/scanner.ts",
|
|
"provenance": "ast"
|
|
},
|
|
{
|
|
"id": "edge:import:file:src/analyzer.ts=>file:src/types.ts",
|
|
"kind": "import",
|
|
"sourceId": "file:src/analyzer.ts",
|
|
"targetId": "file:src/types.ts",
|
|
"provenance": "ast"
|
|
},
|
|
{
|
|
"id": "edge:import:file:src/analyzer.ts=>file:src/externals.ts",
|
|
"kind": "import",
|
|
"sourceId": "file:src/analyzer.ts",
|
|
"targetId": "file:src/externals.ts",
|
|
"provenance": "ast"
|
|
},
|
|
{
|
|
"id": "edge:import:file:src/analyzer.ts=>file:src/flows.ts",
|
|
"kind": "import",
|
|
"sourceId": "file:src/analyzer.ts",
|
|
"targetId": "file:src/flows.ts",
|
|
"provenance": "ast"
|
|
},
|
|
{
|
|
"id": "edge:call:func:src/analyzer.ts#analyzeProject@32=>func:src/scanner.ts#collectSourceFiles@24",
|
|
"kind": "call",
|
|
"sourceId": "func:src/analyzer.ts#analyzeProject@32",
|
|
"targetId": "func:src/scanner.ts#collectSourceFiles@24",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:call:func:src/analyzer.ts#relOf@64=>func:src/scanner.ts#toPosix@19",
|
|
"kind": "call",
|
|
"sourceId": "func:src/analyzer.ts#relOf@64",
|
|
"targetId": "func:src/scanner.ts#toPosix@19",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:call:func:src/analyzer.ts#inProject@65=>func:src/analyzer.ts#relOf@64",
|
|
"kind": "call",
|
|
"sourceId": "func:src/analyzer.ts#inProject@65",
|
|
"targetId": "func:src/analyzer.ts#relOf@64",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:call:func:src/analyzer.ts#locOf@70=>func:src/analyzer.ts#relOf@64",
|
|
"kind": "call",
|
|
"sourceId": "func:src/analyzer.ts#locOf@70",
|
|
"targetId": "func:src/analyzer.ts#relOf@64",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:call:func:src/analyzer.ts#registerFunc@122=>func:src/analyzer.ts#locOf@70",
|
|
"kind": "call",
|
|
"sourceId": "func:src/analyzer.ts#registerFunc@122",
|
|
"targetId": "func:src/analyzer.ts#locOf@70",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:call:func:src/analyzer.ts#registerFunc@122=>func:src/analyzer.ts#getParams@108",
|
|
"kind": "call",
|
|
"sourceId": "func:src/analyzer.ts#registerFunc@122",
|
|
"targetId": "func:src/analyzer.ts#getParams@108",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:call:func:src/analyzer.ts#registerFunc@122=>func:src/scanner.ts#languageOf@52",
|
|
"kind": "call",
|
|
"sourceId": "func:src/analyzer.ts#registerFunc@122",
|
|
"targetId": "func:src/scanner.ts#languageOf@52",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:call:func:src/analyzer.ts#registerFunc@122=>func:src/analyzer.ts#buildSignature@117",
|
|
"kind": "call",
|
|
"sourceId": "func:src/analyzer.ts#registerFunc@122",
|
|
"targetId": "func:src/analyzer.ts#buildSignature@117",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:call:func:src/analyzer.ts#routeNameFromCall@188=>func:src/analyzer.ts#extractPathArg@333",
|
|
"kind": "call",
|
|
"sourceId": "func:src/analyzer.ts#routeNameFromCall@188",
|
|
"targetId": "func:src/analyzer.ts#extractPathArg@333",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:call:func:src/analyzer.ts#inlineName@202=>func:src/analyzer.ts#locOf@70",
|
|
"kind": "call",
|
|
"sourceId": "func:src/analyzer.ts#inlineName@202",
|
|
"targetId": "func:src/analyzer.ts#locOf@70",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:call:func:src/analyzer.ts#inlineName@202=>func:src/analyzer.ts#routeNameFromCall@188",
|
|
"kind": "call",
|
|
"sourceId": "func:src/analyzer.ts#inlineName@202",
|
|
"targetId": "func:src/analyzer.ts#routeNameFromCall@188",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:call:func:src/analyzer.ts#registerFile@223=>func:src/analyzer.ts#relOf@64",
|
|
"kind": "call",
|
|
"sourceId": "func:src/analyzer.ts#registerFile@223",
|
|
"targetId": "func:src/analyzer.ts#relOf@64",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:call:func:src/analyzer.ts#registerFile@223=>func:src/scanner.ts#languageOf@52",
|
|
"kind": "call",
|
|
"sourceId": "func:src/analyzer.ts#registerFile@223",
|
|
"targetId": "func:src/scanner.ts#languageOf@52",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:call:func:src/analyzer.ts#registerFile@223=>func:src/scanner.ts#toPosix@19",
|
|
"kind": "call",
|
|
"sourceId": "func:src/analyzer.ts#registerFile@223",
|
|
"targetId": "func:src/scanner.ts#toPosix@19",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:call:func:src/analyzer.ts#registerFile@223=>func:src/analyzer.ts#ensureModule@83",
|
|
"kind": "call",
|
|
"sourceId": "func:src/analyzer.ts#registerFile@223",
|
|
"targetId": "func:src/analyzer.ts#ensureModule@83",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:call:func:src/analyzer.ts#visit@245=>func:src/analyzer.ts#locOf@70",
|
|
"kind": "call",
|
|
"sourceId": "func:src/analyzer.ts#visit@245",
|
|
"targetId": "func:src/analyzer.ts#locOf@70",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:call:func:src/analyzer.ts#visit@245=>func:src/scanner.ts#languageOf@52",
|
|
"kind": "call",
|
|
"sourceId": "func:src/analyzer.ts#visit@245",
|
|
"targetId": "func:src/scanner.ts#languageOf@52",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:call:func:src/analyzer.ts#visit@245=>func:src/analyzer.ts#registerFunc@122",
|
|
"kind": "call",
|
|
"sourceId": "func:src/analyzer.ts#visit@245",
|
|
"targetId": "func:src/analyzer.ts#registerFunc@122",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:call:func:src/analyzer.ts#visit@245=>func:src/analyzer.ts#isFnInit@169",
|
|
"kind": "call",
|
|
"sourceId": "func:src/analyzer.ts#visit@245",
|
|
"targetId": "func:src/analyzer.ts#isFnInit@169",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:call:func:src/analyzer.ts#visit@245=>func:src/analyzer.ts#containsCall@173",
|
|
"kind": "call",
|
|
"sourceId": "func:src/analyzer.ts#visit@245",
|
|
"targetId": "func:src/analyzer.ts#containsCall@173",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:call:func:src/analyzer.ts#visit@245=>func:src/analyzer.ts#inlineName@202",
|
|
"kind": "call",
|
|
"sourceId": "func:src/analyzer.ts#visit@245",
|
|
"targetId": "func:src/analyzer.ts#inlineName@202",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:call:func:src/analyzer.ts#detectApiOut@382=>func:src/analyzer.ts#extractPathArg@333",
|
|
"kind": "call",
|
|
"sourceId": "func:src/analyzer.ts#detectApiOut@382",
|
|
"targetId": "func:src/analyzer.ts#extractPathArg@333",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:call:func:src/analyzer.ts#detectApiOut@382=>func:src/analyzer.ts#extractMethodFromOptions@341",
|
|
"kind": "call",
|
|
"sourceId": "func:src/analyzer.ts#detectApiOut@382",
|
|
"targetId": "func:src/analyzer.ts#extractMethodFromOptions@341",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:call:func:src/analyzer.ts#detectApiOut@382=>func:src/analyzer.ts#hostOf@352",
|
|
"kind": "call",
|
|
"sourceId": "func:src/analyzer.ts#detectApiOut@382",
|
|
"targetId": "func:src/analyzer.ts#hostOf@352",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:call:func:src/analyzer.ts#detectApiIn@400=>func:src/analyzer.ts#extractPathArg@333",
|
|
"kind": "call",
|
|
"sourceId": "func:src/analyzer.ts#detectApiIn@400",
|
|
"targetId": "func:src/analyzer.ts#extractPathArg@333",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:call:func:src/analyzer.ts#getModuleFunc@462=>func:src/scanner.ts#languageOf@52",
|
|
"kind": "call",
|
|
"sourceId": "func:src/analyzer.ts#getModuleFunc@462",
|
|
"targetId": "func:src/scanner.ts#languageOf@52",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:call:func:src/analyzer.ts#analyzeRelations@487=>func:src/analyzer.ts#relOf@64",
|
|
"kind": "call",
|
|
"sourceId": "func:src/analyzer.ts#analyzeRelations@487",
|
|
"targetId": "func:src/analyzer.ts#relOf@64",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:call:func:src/analyzer.ts#walk@492=>func:src/analyzer.ts#resolveInternalImport@548",
|
|
"kind": "call",
|
|
"sourceId": "func:src/analyzer.ts#walk@492",
|
|
"targetId": "func:src/analyzer.ts#resolveInternalImport@548",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:call:func:src/analyzer.ts#walk@492=>func:src/analyzer.ts#addEdge@433",
|
|
"kind": "call",
|
|
"sourceId": "func:src/analyzer.ts#walk@492",
|
|
"targetId": "func:src/analyzer.ts#addEdge@433",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:call:func:src/analyzer.ts#walk@492=>func:src/analyzer.ts#getModuleFunc@462",
|
|
"kind": "call",
|
|
"sourceId": "func:src/analyzer.ts#walk@492",
|
|
"targetId": "func:src/analyzer.ts#getModuleFunc@462",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:call:func:src/analyzer.ts#walk@492=>func:src/analyzer.ts#resolveCallTargetFuncId@440",
|
|
"kind": "call",
|
|
"sourceId": "func:src/analyzer.ts#walk@492",
|
|
"targetId": "func:src/analyzer.ts#resolveCallTargetFuncId@440",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:call:func:src/analyzer.ts#walk@492=>func:src/analyzer.ts#detectDb@358",
|
|
"kind": "call",
|
|
"sourceId": "func:src/analyzer.ts#walk@492",
|
|
"targetId": "func:src/analyzer.ts#detectDb@358",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:call:func:src/analyzer.ts#walk@492=>func:src/analyzer.ts#addInteraction@419",
|
|
"kind": "call",
|
|
"sourceId": "func:src/analyzer.ts#walk@492",
|
|
"targetId": "func:src/analyzer.ts#addInteraction@419",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:call:func:src/analyzer.ts#walk@492=>func:src/analyzer.ts#detectApiOut@382",
|
|
"kind": "call",
|
|
"sourceId": "func:src/analyzer.ts#walk@492",
|
|
"targetId": "func:src/analyzer.ts#detectApiOut@382",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:call:func:src/analyzer.ts#walk@492=>func:src/analyzer.ts#detectApiIn@400",
|
|
"kind": "call",
|
|
"sourceId": "func:src/analyzer.ts#walk@492",
|
|
"targetId": "func:src/analyzer.ts#detectApiIn@400",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:call:func:src/analyzer.ts#analyzeRelations@487=>func:src/analyzer.ts#walk@492",
|
|
"kind": "call",
|
|
"sourceId": "func:src/analyzer.ts#analyzeRelations@487",
|
|
"targetId": "func:src/analyzer.ts#walk@492",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:call:func:src/analyzer.ts#resolveInternalImport@548=>func:src/scanner.ts#toPosix@19",
|
|
"kind": "call",
|
|
"sourceId": "func:src/analyzer.ts#resolveInternalImport@548",
|
|
"targetId": "func:src/scanner.ts#toPosix@19",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:call:func:src/analyzer.ts#analyzeProject@32=>func:src/analyzer.ts#registerFile@223",
|
|
"kind": "call",
|
|
"sourceId": "func:src/analyzer.ts#analyzeProject@32",
|
|
"targetId": "func:src/analyzer.ts#registerFile@223",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:call:func:src/analyzer.ts#analyzeProject@32=>func:src/analyzer.ts#analyzeRelations@487",
|
|
"kind": "call",
|
|
"sourceId": "func:src/analyzer.ts#analyzeProject@32",
|
|
"targetId": "func:src/analyzer.ts#analyzeRelations@487",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:call:func:src/analyzer.ts#analyzeProject@32=>func:src/analyzer.ts#ensureModule@83",
|
|
"kind": "call",
|
|
"sourceId": "func:src/analyzer.ts#analyzeProject@32",
|
|
"targetId": "func:src/analyzer.ts#ensureModule@83",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:call:func:src/analyzer.ts#analyzeProject@32=>func:src/flows.ts#generateCallFlows@16",
|
|
"kind": "call",
|
|
"sourceId": "func:src/analyzer.ts#analyzeProject@32",
|
|
"targetId": "func:src/flows.ts#generateCallFlows@16",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:call:func:src/analyzer.ts#analyzeProject@32=>func:src/scanner.ts#toPosix@19",
|
|
"kind": "call",
|
|
"sourceId": "func:src/analyzer.ts#analyzeProject@32",
|
|
"targetId": "func:src/scanner.ts#toPosix@19",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:call:func:src/analyzer.ts#analyzeProject@32=>func:src/externals.ts#deriveExternalSystems@4",
|
|
"kind": "call",
|
|
"sourceId": "func:src/analyzer.ts#analyzeProject@32",
|
|
"targetId": "func:src/externals.ts#deriveExternalSystems@4",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:import:file:src/cli.ts=>file:src/analyzer.ts",
|
|
"kind": "import",
|
|
"sourceId": "file:src/cli.ts",
|
|
"targetId": "file:src/analyzer.ts",
|
|
"provenance": "ast"
|
|
},
|
|
{
|
|
"id": "edge:call:func:src/cli.ts#main@40=>func:src/cli.ts#parseArgs@13",
|
|
"kind": "call",
|
|
"sourceId": "func:src/cli.ts#main@40",
|
|
"targetId": "func:src/cli.ts#parseArgs@13",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:call:func:src/cli.ts#main@40=>func:src/analyzer.ts#analyzeProject@32",
|
|
"kind": "call",
|
|
"sourceId": "func:src/cli.ts#main@40",
|
|
"targetId": "func:src/analyzer.ts#analyzeProject@32",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:call:func:src/cli.ts#<module>@0=>func:src/cli.ts#main@40",
|
|
"kind": "call",
|
|
"sourceId": "func:src/cli.ts#<module>@0",
|
|
"targetId": "func:src/cli.ts#main@40",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:import:file:src/overview.ts=>file:src/types.ts",
|
|
"kind": "import",
|
|
"sourceId": "file:src/overview.ts",
|
|
"targetId": "file:src/types.ts",
|
|
"provenance": "ast"
|
|
},
|
|
{
|
|
"id": "edge:call:func:src/overview.ts#analyzeEntry@140=>func:src/overview.ts#reachableFuncs@92",
|
|
"kind": "call",
|
|
"sourceId": "func:src/overview.ts#analyzeEntry@140",
|
|
"targetId": "func:src/overview.ts#reachableFuncs@92",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:call:func:src/overview.ts#deriveOverview@109=>func:src/overview.ts#apiInOf@79",
|
|
"kind": "call",
|
|
"sourceId": "func:src/overview.ts#deriveOverview@109",
|
|
"targetId": "func:src/overview.ts#apiInOf@79",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:call:func:src/overview.ts#deriveOverview@109=>func:src/overview.ts#analyzeEntry@140",
|
|
"kind": "call",
|
|
"sourceId": "func:src/overview.ts#deriveOverview@109",
|
|
"targetId": "func:src/overview.ts#analyzeEntry@140",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:call:func:src/overview.ts#deriveOverview@109=>func:src/overview.ts#groupKeyFromPath@83",
|
|
"kind": "call",
|
|
"sourceId": "func:src/overview.ts#deriveOverview@109",
|
|
"targetId": "func:src/overview.ts#groupKeyFromPath@83",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:call:func:src/overview.ts#map() 回调@229@229=>func:src/overview.ts#analyzeEntry@140",
|
|
"kind": "call",
|
|
"sourceId": "func:src/overview.ts#map() 回调@229@229",
|
|
"targetId": "func:src/overview.ts#analyzeEntry@140",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:import:file:src/overview-cli.ts=>file:src/overview.ts",
|
|
"kind": "import",
|
|
"sourceId": "file:src/overview-cli.ts",
|
|
"targetId": "file:src/overview.ts",
|
|
"provenance": "ast"
|
|
},
|
|
{
|
|
"id": "edge:import:file:src/overview-cli.ts=>file:src/types.ts",
|
|
"kind": "import",
|
|
"sourceId": "file:src/overview-cli.ts",
|
|
"targetId": "file:src/types.ts",
|
|
"provenance": "ast"
|
|
},
|
|
{
|
|
"id": "edge:call:func:src/overview-cli.ts#main@9=>func:src/overview.ts#deriveOverview@109",
|
|
"kind": "call",
|
|
"sourceId": "func:src/overview-cli.ts#main@9",
|
|
"targetId": "func:src/overview.ts#deriveOverview@109",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:call:func:src/overview-cli.ts#main@9=>func:src/overview-cli.ts#flag@16",
|
|
"kind": "call",
|
|
"sourceId": "func:src/overview-cli.ts#main@9",
|
|
"targetId": "func:src/overview-cli.ts#flag@16",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:call:func:src/overview-cli.ts#<module>@0=>func:src/overview-cli.ts#main@9",
|
|
"kind": "call",
|
|
"sourceId": "func:src/overview-cli.ts#<module>@0",
|
|
"targetId": "func:src/overview-cli.ts#main@9",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:import:file:web/src/model/reportRepository.ts=>file:web/src/model/report.ts",
|
|
"kind": "import",
|
|
"sourceId": "file:web/src/model/reportRepository.ts",
|
|
"targetId": "file:web/src/model/report.ts",
|
|
"provenance": "ast"
|
|
},
|
|
{
|
|
"id": "edge:import:file:web/src/model/graphModel.ts=>file:web/src/model/report.ts",
|
|
"kind": "import",
|
|
"sourceId": "file:web/src/model/graphModel.ts",
|
|
"targetId": "file:web/src/model/report.ts",
|
|
"provenance": "ast"
|
|
},
|
|
{
|
|
"id": "edge:call:func:web/src/model/graphModel.ts#qualifierOf@24=>func:web/src/model/graphModel.ts#baseName@19",
|
|
"kind": "call",
|
|
"sourceId": "func:web/src/model/graphModel.ts#qualifierOf@24",
|
|
"targetId": "func:web/src/model/graphModel.ts#baseName@19",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:call:func:web/src/model/graphModel.ts#map() 回调@44@44=>func:web/src/model/graphModel.ts#qualifierOf@24",
|
|
"kind": "call",
|
|
"sourceId": "func:web/src/model/graphModel.ts#map() 回调@44@44",
|
|
"targetId": "func:web/src/model/graphModel.ts#qualifierOf@24",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:import:file:web/src/viewmodel/GraphViewModel.ts=>file:web/src/model/report.ts",
|
|
"kind": "import",
|
|
"sourceId": "file:web/src/viewmodel/GraphViewModel.ts",
|
|
"targetId": "file:web/src/model/report.ts",
|
|
"provenance": "ast"
|
|
},
|
|
{
|
|
"id": "edge:import:file:web/src/viewmodel/GraphViewModel.ts=>file:web/src/model/reportRepository.ts",
|
|
"kind": "import",
|
|
"sourceId": "file:web/src/viewmodel/GraphViewModel.ts",
|
|
"targetId": "file:web/src/model/reportRepository.ts",
|
|
"provenance": "ast"
|
|
},
|
|
{
|
|
"id": "edge:import:file:web/src/viewmodel/GraphViewModel.ts=>file:web/src/model/graphModel.ts",
|
|
"kind": "import",
|
|
"sourceId": "file:web/src/viewmodel/GraphViewModel.ts",
|
|
"targetId": "file:web/src/model/graphModel.ts",
|
|
"provenance": "ast"
|
|
},
|
|
{
|
|
"id": "edge:import:file:web/src/viewmodel/GraphViewModel.ts=>file:web/src/services/dagreLayout.ts",
|
|
"kind": "import",
|
|
"sourceId": "file:web/src/viewmodel/GraphViewModel.ts",
|
|
"targetId": "file:web/src/services/dagreLayout.ts",
|
|
"provenance": "ast"
|
|
},
|
|
{
|
|
"id": "edge:import:file:web/src/viewmodel/GraphViewModel.ts=>file:web/src/services/sourceService.ts",
|
|
"kind": "import",
|
|
"sourceId": "file:web/src/viewmodel/GraphViewModel.ts",
|
|
"targetId": "file:web/src/services/sourceService.ts",
|
|
"provenance": "ast"
|
|
},
|
|
{
|
|
"id": "edge:call:func:web/src/viewmodel/GraphViewModel.ts#reaction() 回调@79@79=>func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.loadSelectedFuncCode@346",
|
|
"kind": "call",
|
|
"sourceId": "func:web/src/viewmodel/GraphViewModel.ts#reaction() 回调@79@79",
|
|
"targetId": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.loadSelectedFuncCode@346",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:call:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.selectReport@93=>func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.load@180",
|
|
"kind": "call",
|
|
"sourceId": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.selectReport@93",
|
|
"targetId": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.load@180",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:call:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.groupOfFlow@109=>func:web/src/viewmodel/GraphViewModel.ts#baseName@43",
|
|
"kind": "call",
|
|
"sourceId": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.groupOfFlow@109",
|
|
"targetId": "func:web/src/viewmodel/GraphViewModel.ts#baseName@43",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:call:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.groups@135=>func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.groupOfFlow@109",
|
|
"kind": "call",
|
|
"sourceId": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.groups@135",
|
|
"targetId": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.groupOfFlow@109",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:call:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.visibleFlows@147=>func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.groupOfFlow@109",
|
|
"kind": "call",
|
|
"sourceId": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.visibleFlows@147",
|
|
"targetId": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.groupOfFlow@109",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:call:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.selectedFuncOwner@159=>func:web/src/viewmodel/GraphViewModel.ts#baseName@43",
|
|
"kind": "call",
|
|
"sourceId": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.selectedFuncOwner@159",
|
|
"targetId": "func:web/src/viewmodel/GraphViewModel.ts#baseName@43",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:call:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.positionedGraph@225=>func:web/src/model/graphModel.ts#flowToGraph@43",
|
|
"kind": "call",
|
|
"sourceId": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.positionedGraph@225",
|
|
"targetId": "func:web/src/model/graphModel.ts#flowToGraph@43",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:call:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.positionedGraph@225=>func:web/src/services/dagreLayout.ts#computeLayout@31",
|
|
"kind": "call",
|
|
"sourceId": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.positionedGraph@225",
|
|
"targetId": "func:web/src/services/dagreLayout.ts#computeLayout@31",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:call:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.activateSearchResult@322=>func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.biggestFlowForFunc@287",
|
|
"kind": "call",
|
|
"sourceId": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.activateSearchResult@322",
|
|
"targetId": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.biggestFlowForFunc@287",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:call:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.activateSearchResult@322=>func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.openFlowForFunc@265",
|
|
"kind": "call",
|
|
"sourceId": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.activateSearchResult@322",
|
|
"targetId": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.openFlowForFunc@265",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:import:file:web/src/view/vmContext.ts=>file:web/src/viewmodel/GraphViewModel.ts",
|
|
"kind": "import",
|
|
"sourceId": "file:web/src/view/vmContext.ts",
|
|
"targetId": "file:web/src/viewmodel/GraphViewModel.ts",
|
|
"provenance": "ast"
|
|
},
|
|
{
|
|
"id": "edge:import:file:web/src/view/components/FlowNode.tsx=>file:web/src/model/report.ts",
|
|
"kind": "import",
|
|
"sourceId": "file:web/src/view/components/FlowNode.tsx",
|
|
"targetId": "file:web/src/model/report.ts",
|
|
"provenance": "ast"
|
|
},
|
|
{
|
|
"id": "edge:call:func:web/src/view/components/FlowNode.tsx#memo() 回调@40@40=>func:web/src/view/components/FlowNode.tsx#interactionBadges@12",
|
|
"kind": "call",
|
|
"sourceId": "func:web/src/view/components/FlowNode.tsx#memo() 回调@40@40",
|
|
"targetId": "func:web/src/view/components/FlowNode.tsx#interactionBadges@12",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:import:file:web/src/view/components/FlowGraph.tsx=>file:web/src/view/vmContext.ts",
|
|
"kind": "import",
|
|
"sourceId": "file:web/src/view/components/FlowGraph.tsx",
|
|
"targetId": "file:web/src/view/vmContext.ts",
|
|
"provenance": "ast"
|
|
},
|
|
{
|
|
"id": "edge:import:file:web/src/view/components/FlowGraph.tsx=>file:web/src/view/components/FlowNode.tsx",
|
|
"kind": "import",
|
|
"sourceId": "file:web/src/view/components/FlowGraph.tsx",
|
|
"targetId": "file:web/src/view/components/FlowNode.tsx",
|
|
"provenance": "ast"
|
|
},
|
|
{
|
|
"id": "edge:call:func:web/src/view/components/FlowGraph.tsx#observer() 回调@16@16=>func:web/src/view/vmContext.ts#useGraphVM@6",
|
|
"kind": "call",
|
|
"sourceId": "func:web/src/view/components/FlowGraph.tsx#observer() 回调@16@16",
|
|
"targetId": "func:web/src/view/vmContext.ts#useGraphVM@6",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:call:func:web/src/view/components/FlowGraph.tsx#observer() 回调@16@16=>func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.selectNode@340",
|
|
"kind": "call",
|
|
"sourceId": "func:web/src/view/components/FlowGraph.tsx#observer() 回调@16@16",
|
|
"targetId": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.selectNode@340",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:import:file:web/src/view/components/FlowList.tsx=>file:web/src/view/vmContext.ts",
|
|
"kind": "import",
|
|
"sourceId": "file:web/src/view/components/FlowList.tsx",
|
|
"targetId": "file:web/src/view/vmContext.ts",
|
|
"provenance": "ast"
|
|
},
|
|
{
|
|
"id": "edge:call:func:web/src/view/components/FlowList.tsx#observer() 回调@4@4=>func:web/src/view/vmContext.ts#useGraphVM@6",
|
|
"kind": "call",
|
|
"sourceId": "func:web/src/view/components/FlowList.tsx#observer() 回调@4@4",
|
|
"targetId": "func:web/src/view/vmContext.ts#useGraphVM@6",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:call:func:web/src/view/components/FlowList.tsx#observer() 回调@4@4=>func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.selectFlow@334",
|
|
"kind": "call",
|
|
"sourceId": "func:web/src/view/components/FlowList.tsx#observer() 回调@4@4",
|
|
"targetId": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.selectFlow@334",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:import:file:web/src/view/components/GroupList.tsx=>file:web/src/view/vmContext.ts",
|
|
"kind": "import",
|
|
"sourceId": "file:web/src/view/components/GroupList.tsx",
|
|
"targetId": "file:web/src/view/vmContext.ts",
|
|
"provenance": "ast"
|
|
},
|
|
{
|
|
"id": "edge:call:func:web/src/view/components/GroupList.tsx#observer() 回调@4@4=>func:web/src/view/vmContext.ts#useGraphVM@6",
|
|
"kind": "call",
|
|
"sourceId": "func:web/src/view/components/GroupList.tsx#observer() 回调@4@4",
|
|
"targetId": "func:web/src/view/vmContext.ts#useGraphVM@6",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:call:func:web/src/view/components/GroupList.tsx#observer() 回调@4@4=>func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.selectGroup@171",
|
|
"kind": "call",
|
|
"sourceId": "func:web/src/view/components/GroupList.tsx#observer() 回调@4@4",
|
|
"targetId": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.selectGroup@171",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:import:file:web/src/view/components/NodeDetailPanel.tsx=>file:web/src/view/vmContext.ts",
|
|
"kind": "import",
|
|
"sourceId": "file:web/src/view/components/NodeDetailPanel.tsx",
|
|
"targetId": "file:web/src/view/vmContext.ts",
|
|
"provenance": "ast"
|
|
},
|
|
{
|
|
"id": "edge:import:file:web/src/view/components/NodeDetailPanel.tsx=>file:web/src/model/report.ts",
|
|
"kind": "import",
|
|
"sourceId": "file:web/src/view/components/NodeDetailPanel.tsx",
|
|
"targetId": "file:web/src/model/report.ts",
|
|
"provenance": "ast"
|
|
},
|
|
{
|
|
"id": "edge:call:func:web/src/view/components/NodeDetailPanel.tsx#observer() 回调@13@13=>func:web/src/view/vmContext.ts#useGraphVM@6",
|
|
"kind": "call",
|
|
"sourceId": "func:web/src/view/components/NodeDetailPanel.tsx#observer() 回调@13@13",
|
|
"targetId": "func:web/src/view/vmContext.ts#useGraphVM@6",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:call:func:web/src/view/components/NodeDetailPanel.tsx#observer() 回调@13@13=>func:web/src/view/components/NodeDetailPanel.tsx#describeInteraction@5",
|
|
"kind": "call",
|
|
"sourceId": "func:web/src/view/components/NodeDetailPanel.tsx#observer() 回调@13@13",
|
|
"targetId": "func:web/src/view/components/NodeDetailPanel.tsx#describeInteraction@5",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:call:func:web/src/view/components/NodeDetailPanel.tsx#observer() 回调@13@13=>func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.openFlowForFunc@265",
|
|
"kind": "call",
|
|
"sourceId": "func:web/src/view/components/NodeDetailPanel.tsx#observer() 回调@13@13",
|
|
"targetId": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.openFlowForFunc@265",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:import:file:web/src/view/components/SearchBar.tsx=>file:web/src/view/vmContext.ts",
|
|
"kind": "import",
|
|
"sourceId": "file:web/src/view/components/SearchBar.tsx",
|
|
"targetId": "file:web/src/view/vmContext.ts",
|
|
"provenance": "ast"
|
|
},
|
|
{
|
|
"id": "edge:import:file:web/src/view/components/SearchBar.tsx=>file:web/src/viewmodel/GraphViewModel.ts",
|
|
"kind": "import",
|
|
"sourceId": "file:web/src/view/components/SearchBar.tsx",
|
|
"targetId": "file:web/src/viewmodel/GraphViewModel.ts",
|
|
"provenance": "ast"
|
|
},
|
|
{
|
|
"id": "edge:call:func:web/src/view/components/SearchBar.tsx#observer() 回调@6@6=>func:web/src/view/vmContext.ts#useGraphVM@6",
|
|
"kind": "call",
|
|
"sourceId": "func:web/src/view/components/SearchBar.tsx#observer() 回调@6@6",
|
|
"targetId": "func:web/src/view/vmContext.ts#useGraphVM@6",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:call:func:web/src/view/components/SearchBar.tsx#activate@12=>func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.activateSearchResult@322",
|
|
"kind": "call",
|
|
"sourceId": "func:web/src/view/components/SearchBar.tsx#activate@12",
|
|
"targetId": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.activateSearchResult@322",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:call:func:web/src/view/components/SearchBar.tsx#observer() 回调@6@6=>func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.setSearchQuery@275",
|
|
"kind": "call",
|
|
"sourceId": "func:web/src/view/components/SearchBar.tsx#observer() 回调@6@6",
|
|
"targetId": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.setSearchQuery@275",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:call:func:web/src/view/components/SearchBar.tsx#匿名函数@26@26=>func:web/src/view/components/SearchBar.tsx#activate@12",
|
|
"kind": "call",
|
|
"sourceId": "func:web/src/view/components/SearchBar.tsx#匿名函数@26@26",
|
|
"targetId": "func:web/src/view/components/SearchBar.tsx#activate@12",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:call:func:web/src/view/components/SearchBar.tsx#匿名函数@26@26=>func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.setSearchQuery@275",
|
|
"kind": "call",
|
|
"sourceId": "func:web/src/view/components/SearchBar.tsx#匿名函数@26@26",
|
|
"targetId": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.setSearchQuery@275",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:call:func:web/src/view/components/SearchBar.tsx#匿名函数@41@41=>func:web/src/view/components/SearchBar.tsx#activate@12",
|
|
"kind": "call",
|
|
"sourceId": "func:web/src/view/components/SearchBar.tsx#匿名函数@41@41",
|
|
"targetId": "func:web/src/view/components/SearchBar.tsx#activate@12",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:import:file:web/src/view/components/CodePanel.tsx=>file:web/src/view/vmContext.ts",
|
|
"kind": "import",
|
|
"sourceId": "file:web/src/view/components/CodePanel.tsx",
|
|
"targetId": "file:web/src/view/vmContext.ts",
|
|
"provenance": "ast"
|
|
},
|
|
{
|
|
"id": "edge:import:file:web/src/view/components/CodePanel.tsx=>file:web/src/services/languageMap.ts",
|
|
"kind": "import",
|
|
"sourceId": "file:web/src/view/components/CodePanel.tsx",
|
|
"targetId": "file:web/src/services/languageMap.ts",
|
|
"provenance": "ast"
|
|
},
|
|
{
|
|
"id": "edge:call:func:web/src/view/components/CodePanel.tsx#observer() 回调@7@7=>func:web/src/view/vmContext.ts#useGraphVM@6",
|
|
"kind": "call",
|
|
"sourceId": "func:web/src/view/components/CodePanel.tsx#observer() 回调@7@7",
|
|
"targetId": "func:web/src/view/vmContext.ts#useGraphVM@6",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:call:func:web/src/view/components/CodePanel.tsx#observer() 回调@7@7=>func:web/src/services/languageMap.ts#languageOf@42",
|
|
"kind": "call",
|
|
"sourceId": "func:web/src/view/components/CodePanel.tsx#observer() 回调@7@7",
|
|
"targetId": "func:web/src/services/languageMap.ts#languageOf@42",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:call:func:web/src/view/components/CodePanel.tsx#observer() 回调@7@7=>func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.toggleCodePanel@104",
|
|
"kind": "call",
|
|
"sourceId": "func:web/src/view/components/CodePanel.tsx#observer() 回调@7@7",
|
|
"targetId": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.toggleCodePanel@104",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:import:file:web/src/view/components/FlowBanner.tsx=>file:web/src/view/vmContext.ts",
|
|
"kind": "import",
|
|
"sourceId": "file:web/src/view/components/FlowBanner.tsx",
|
|
"targetId": "file:web/src/view/vmContext.ts",
|
|
"provenance": "ast"
|
|
},
|
|
{
|
|
"id": "edge:call:func:web/src/view/components/FlowBanner.tsx#observer() 回调@4@4=>func:web/src/view/vmContext.ts#useGraphVM@6",
|
|
"kind": "call",
|
|
"sourceId": "func:web/src/view/components/FlowBanner.tsx#observer() 回调@4@4",
|
|
"targetId": "func:web/src/view/vmContext.ts#useGraphVM@6",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:import:file:web/src/view/App.tsx=>file:web/src/view/vmContext.ts",
|
|
"kind": "import",
|
|
"sourceId": "file:web/src/view/App.tsx",
|
|
"targetId": "file:web/src/view/vmContext.ts",
|
|
"provenance": "ast"
|
|
},
|
|
{
|
|
"id": "edge:import:file:web/src/view/App.tsx=>file:web/src/view/components/FlowGraph.tsx",
|
|
"kind": "import",
|
|
"sourceId": "file:web/src/view/App.tsx",
|
|
"targetId": "file:web/src/view/components/FlowGraph.tsx",
|
|
"provenance": "ast"
|
|
},
|
|
{
|
|
"id": "edge:import:file:web/src/view/App.tsx=>file:web/src/view/components/FlowList.tsx",
|
|
"kind": "import",
|
|
"sourceId": "file:web/src/view/App.tsx",
|
|
"targetId": "file:web/src/view/components/FlowList.tsx",
|
|
"provenance": "ast"
|
|
},
|
|
{
|
|
"id": "edge:import:file:web/src/view/App.tsx=>file:web/src/view/components/GroupList.tsx",
|
|
"kind": "import",
|
|
"sourceId": "file:web/src/view/App.tsx",
|
|
"targetId": "file:web/src/view/components/GroupList.tsx",
|
|
"provenance": "ast"
|
|
},
|
|
{
|
|
"id": "edge:import:file:web/src/view/App.tsx=>file:web/src/view/components/NodeDetailPanel.tsx",
|
|
"kind": "import",
|
|
"sourceId": "file:web/src/view/App.tsx",
|
|
"targetId": "file:web/src/view/components/NodeDetailPanel.tsx",
|
|
"provenance": "ast"
|
|
},
|
|
{
|
|
"id": "edge:import:file:web/src/view/App.tsx=>file:web/src/view/components/SearchBar.tsx",
|
|
"kind": "import",
|
|
"sourceId": "file:web/src/view/App.tsx",
|
|
"targetId": "file:web/src/view/components/SearchBar.tsx",
|
|
"provenance": "ast"
|
|
},
|
|
{
|
|
"id": "edge:import:file:web/src/view/App.tsx=>file:web/src/view/components/CodePanel.tsx",
|
|
"kind": "import",
|
|
"sourceId": "file:web/src/view/App.tsx",
|
|
"targetId": "file:web/src/view/components/CodePanel.tsx",
|
|
"provenance": "ast"
|
|
},
|
|
{
|
|
"id": "edge:import:file:web/src/view/App.tsx=>file:web/src/view/components/FlowBanner.tsx",
|
|
"kind": "import",
|
|
"sourceId": "file:web/src/view/App.tsx",
|
|
"targetId": "file:web/src/view/components/FlowBanner.tsx",
|
|
"provenance": "ast"
|
|
},
|
|
{
|
|
"id": "edge:call:func:web/src/view/App.tsx#observer() 回调@11@11=>func:web/src/view/vmContext.ts#useGraphVM@6",
|
|
"kind": "call",
|
|
"sourceId": "func:web/src/view/App.tsx#observer() 回调@11@11",
|
|
"targetId": "func:web/src/view/vmContext.ts#useGraphVM@6",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:call:func:web/src/view/App.tsx#observer() 回调@11@11=>func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.selectReport@93",
|
|
"kind": "call",
|
|
"sourceId": "func:web/src/view/App.tsx#observer() 回调@11@11",
|
|
"targetId": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.selectReport@93",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:import:file:web/src/main.tsx=>file:web/src/view/App.tsx",
|
|
"kind": "import",
|
|
"sourceId": "file:web/src/main.tsx",
|
|
"targetId": "file:web/src/view/App.tsx",
|
|
"provenance": "ast"
|
|
},
|
|
{
|
|
"id": "edge:import:file:web/src/main.tsx=>file:web/src/view/vmContext.ts",
|
|
"kind": "import",
|
|
"sourceId": "file:web/src/main.tsx",
|
|
"targetId": "file:web/src/view/vmContext.ts",
|
|
"provenance": "ast"
|
|
},
|
|
{
|
|
"id": "edge:import:file:web/src/main.tsx=>file:web/src/viewmodel/GraphViewModel.ts",
|
|
"kind": "import",
|
|
"sourceId": "file:web/src/main.tsx",
|
|
"targetId": "file:web/src/viewmodel/GraphViewModel.ts",
|
|
"provenance": "ast"
|
|
},
|
|
{
|
|
"id": "edge:import:file:web/src/main.tsx=>file:web/src/model/reportRepository.ts",
|
|
"kind": "import",
|
|
"sourceId": "file:web/src/main.tsx",
|
|
"targetId": "file:web/src/model/reportRepository.ts",
|
|
"provenance": "ast"
|
|
},
|
|
{
|
|
"id": "edge:import:file:web/src/main.tsx=>file:web/src/services/sourceService.ts",
|
|
"kind": "import",
|
|
"sourceId": "file:web/src/main.tsx",
|
|
"targetId": "file:web/src/services/sourceService.ts",
|
|
"provenance": "ast"
|
|
},
|
|
{
|
|
"id": "edge:call:func:web/src/main.tsx#<module>@0=>func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.load@180",
|
|
"kind": "call",
|
|
"sourceId": "func:web/src/main.tsx#<module>@0",
|
|
"targetId": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.load@180",
|
|
"provenance": "resolved"
|
|
},
|
|
{
|
|
"id": "edge:call:func:web/vite.config.ts#<module>@0=>func:web/vite.config.ts#sourceServer@11",
|
|
"kind": "call",
|
|
"sourceId": "func:web/vite.config.ts#<module>@0",
|
|
"targetId": "func:web/vite.config.ts#sourceServer@11",
|
|
"provenance": "resolved"
|
|
}
|
|
],
|
|
"flows": [
|
|
{
|
|
"id": "flow:call:func:web/src/main.tsx#<module>@0",
|
|
"name": "<module> (web/src/main.tsx)",
|
|
"flowType": "call",
|
|
"provenance": "manual",
|
|
"entryNodeId": "func:web/src/main.tsx#<module>@0",
|
|
"steps": [
|
|
{
|
|
"id": "step:flow:call:func:web/src/main.tsx#<module>@0:func:web/src/main.tsx#<module>@0",
|
|
"order": 0,
|
|
"nodeId": "func:web/src/main.tsx#<module>@0",
|
|
"title": "<module>",
|
|
"nextStepIds": [
|
|
"step:flow:call:func:web/src/main.tsx#<module>@0:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.load@180"
|
|
]
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:web/src/main.tsx#<module>@0:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.load@180",
|
|
"order": 1,
|
|
"nodeId": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.load@180",
|
|
"title": "GraphViewModel.load",
|
|
"nextStepIds": []
|
|
}
|
|
],
|
|
"edgeIds": [
|
|
"edge:call:func:web/src/main.tsx#<module>@0=>func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.load@180"
|
|
],
|
|
"summary": "前端启动:构建报告数据源与 ViewModel,挂载 React 应用"
|
|
},
|
|
{
|
|
"id": "flow:call:func:src/analyzer.ts#visit@245",
|
|
"name": "visit (src/analyzer.ts)",
|
|
"flowType": "call",
|
|
"provenance": "manual",
|
|
"entryNodeId": "func:src/analyzer.ts#visit@245",
|
|
"steps": [
|
|
{
|
|
"id": "step:flow:call:func:src/analyzer.ts#visit@245:func:src/analyzer.ts#visit@245",
|
|
"order": 0,
|
|
"nodeId": "func:src/analyzer.ts#visit@245",
|
|
"title": "visit",
|
|
"nextStepIds": [
|
|
"step:flow:call:func:src/analyzer.ts#visit@245:func:src/analyzer.ts#locOf@70",
|
|
"step:flow:call:func:src/analyzer.ts#visit@245:func:src/scanner.ts#languageOf@52",
|
|
"step:flow:call:func:src/analyzer.ts#visit@245:func:src/analyzer.ts#registerFunc@122",
|
|
"step:flow:call:func:src/analyzer.ts#visit@245:func:src/analyzer.ts#isFnInit@169",
|
|
"step:flow:call:func:src/analyzer.ts#visit@245:func:src/analyzer.ts#containsCall@173",
|
|
"step:flow:call:func:src/analyzer.ts#visit@245:func:src/analyzer.ts#inlineName@202"
|
|
]
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:src/analyzer.ts#visit@245:func:src/analyzer.ts#locOf@70",
|
|
"order": 1,
|
|
"nodeId": "func:src/analyzer.ts#locOf@70",
|
|
"title": "locOf",
|
|
"nextStepIds": [
|
|
"step:flow:call:func:src/analyzer.ts#visit@245:func:src/analyzer.ts#relOf@64"
|
|
]
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:src/analyzer.ts#visit@245:func:src/scanner.ts#languageOf@52",
|
|
"order": 2,
|
|
"nodeId": "func:src/scanner.ts#languageOf@52",
|
|
"title": "languageOf",
|
|
"nextStepIds": []
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:src/analyzer.ts#visit@245:func:src/analyzer.ts#registerFunc@122",
|
|
"order": 3,
|
|
"nodeId": "func:src/analyzer.ts#registerFunc@122",
|
|
"title": "registerFunc",
|
|
"nextStepIds": [
|
|
"step:flow:call:func:src/analyzer.ts#visit@245:func:src/analyzer.ts#locOf@70",
|
|
"step:flow:call:func:src/analyzer.ts#visit@245:func:src/analyzer.ts#getParams@108",
|
|
"step:flow:call:func:src/analyzer.ts#visit@245:func:src/scanner.ts#languageOf@52",
|
|
"step:flow:call:func:src/analyzer.ts#visit@245:func:src/analyzer.ts#buildSignature@117"
|
|
]
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:src/analyzer.ts#visit@245:func:src/analyzer.ts#isFnInit@169",
|
|
"order": 4,
|
|
"nodeId": "func:src/analyzer.ts#isFnInit@169",
|
|
"title": "isFnInit",
|
|
"nextStepIds": []
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:src/analyzer.ts#visit@245:func:src/analyzer.ts#containsCall@173",
|
|
"order": 5,
|
|
"nodeId": "func:src/analyzer.ts#containsCall@173",
|
|
"title": "containsCall",
|
|
"nextStepIds": []
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:src/analyzer.ts#visit@245:func:src/analyzer.ts#inlineName@202",
|
|
"order": 6,
|
|
"nodeId": "func:src/analyzer.ts#inlineName@202",
|
|
"title": "inlineName",
|
|
"nextStepIds": [
|
|
"step:flow:call:func:src/analyzer.ts#visit@245:func:src/analyzer.ts#locOf@70",
|
|
"step:flow:call:func:src/analyzer.ts#visit@245:func:src/analyzer.ts#routeNameFromCall@188"
|
|
]
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:src/analyzer.ts#visit@245:func:src/analyzer.ts#relOf@64",
|
|
"order": 7,
|
|
"nodeId": "func:src/analyzer.ts#relOf@64",
|
|
"title": "relOf",
|
|
"nextStepIds": [
|
|
"step:flow:call:func:src/analyzer.ts#visit@245:func:src/scanner.ts#toPosix@19"
|
|
]
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:src/analyzer.ts#visit@245:func:src/analyzer.ts#getParams@108",
|
|
"order": 8,
|
|
"nodeId": "func:src/analyzer.ts#getParams@108",
|
|
"title": "getParams",
|
|
"nextStepIds": []
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:src/analyzer.ts#visit@245:func:src/analyzer.ts#buildSignature@117",
|
|
"order": 9,
|
|
"nodeId": "func:src/analyzer.ts#buildSignature@117",
|
|
"title": "buildSignature",
|
|
"nextStepIds": []
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:src/analyzer.ts#visit@245:func:src/analyzer.ts#routeNameFromCall@188",
|
|
"order": 10,
|
|
"nodeId": "func:src/analyzer.ts#routeNameFromCall@188",
|
|
"title": "routeNameFromCall",
|
|
"nextStepIds": [
|
|
"step:flow:call:func:src/analyzer.ts#visit@245:func:src/analyzer.ts#extractPathArg@333"
|
|
]
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:src/analyzer.ts#visit@245:func:src/scanner.ts#toPosix@19",
|
|
"order": 11,
|
|
"nodeId": "func:src/scanner.ts#toPosix@19",
|
|
"title": "toPosix",
|
|
"nextStepIds": []
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:src/analyzer.ts#visit@245:func:src/analyzer.ts#extractPathArg@333",
|
|
"order": 12,
|
|
"nodeId": "func:src/analyzer.ts#extractPathArg@333",
|
|
"title": "extractPathArg",
|
|
"nextStepIds": []
|
|
}
|
|
],
|
|
"edgeIds": [
|
|
"edge:call:func:src/analyzer.ts#relOf@64=>func:src/scanner.ts#toPosix@19",
|
|
"edge:call:func:src/analyzer.ts#locOf@70=>func:src/analyzer.ts#relOf@64",
|
|
"edge:call:func:src/analyzer.ts#registerFunc@122=>func:src/analyzer.ts#locOf@70",
|
|
"edge:call:func:src/analyzer.ts#registerFunc@122=>func:src/analyzer.ts#getParams@108",
|
|
"edge:call:func:src/analyzer.ts#registerFunc@122=>func:src/scanner.ts#languageOf@52",
|
|
"edge:call:func:src/analyzer.ts#registerFunc@122=>func:src/analyzer.ts#buildSignature@117",
|
|
"edge:call:func:src/analyzer.ts#routeNameFromCall@188=>func:src/analyzer.ts#extractPathArg@333",
|
|
"edge:call:func:src/analyzer.ts#inlineName@202=>func:src/analyzer.ts#locOf@70",
|
|
"edge:call:func:src/analyzer.ts#inlineName@202=>func:src/analyzer.ts#routeNameFromCall@188",
|
|
"edge:call:func:src/analyzer.ts#visit@245=>func:src/analyzer.ts#locOf@70",
|
|
"edge:call:func:src/analyzer.ts#visit@245=>func:src/scanner.ts#languageOf@52",
|
|
"edge:call:func:src/analyzer.ts#visit@245=>func:src/analyzer.ts#registerFunc@122",
|
|
"edge:call:func:src/analyzer.ts#visit@245=>func:src/analyzer.ts#isFnInit@169",
|
|
"edge:call:func:src/analyzer.ts#visit@245=>func:src/analyzer.ts#containsCall@173",
|
|
"edge:call:func:src/analyzer.ts#visit@245=>func:src/analyzer.ts#inlineName@202"
|
|
],
|
|
"summary": "AST 遍历核心:递归访问语法树,登记函数 / 容器并建立调用边"
|
|
},
|
|
{
|
|
"id": "flow:call:func:web/src/view/components/NodeDetailPanel.tsx#observer() 回调@13@13",
|
|
"name": "observer() 回调@13 (web/src/view/components/NodeDetailPanel.tsx)",
|
|
"flowType": "call",
|
|
"provenance": "manual",
|
|
"entryNodeId": "func:web/src/view/components/NodeDetailPanel.tsx#observer() 回调@13@13",
|
|
"steps": [
|
|
{
|
|
"id": "step:flow:call:func:web/src/view/components/NodeDetailPanel.tsx#observer() 回调@13@13:func:web/src/view/components/NodeDetailPanel.tsx#observer() 回调@13@13",
|
|
"order": 0,
|
|
"nodeId": "func:web/src/view/components/NodeDetailPanel.tsx#observer() 回调@13@13",
|
|
"title": "observer() 回调@13",
|
|
"nextStepIds": [
|
|
"step:flow:call:func:web/src/view/components/NodeDetailPanel.tsx#observer() 回调@13@13:func:web/src/view/vmContext.ts#useGraphVM@6",
|
|
"step:flow:call:func:web/src/view/components/NodeDetailPanel.tsx#observer() 回调@13@13:func:web/src/view/components/NodeDetailPanel.tsx#describeInteraction@5",
|
|
"step:flow:call:func:web/src/view/components/NodeDetailPanel.tsx#observer() 回调@13@13:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.openFlowForFunc@265"
|
|
]
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:web/src/view/components/NodeDetailPanel.tsx#observer() 回调@13@13:func:web/src/view/vmContext.ts#useGraphVM@6",
|
|
"order": 1,
|
|
"nodeId": "func:web/src/view/vmContext.ts#useGraphVM@6",
|
|
"title": "useGraphVM",
|
|
"nextStepIds": []
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:web/src/view/components/NodeDetailPanel.tsx#observer() 回调@13@13:func:web/src/view/components/NodeDetailPanel.tsx#describeInteraction@5",
|
|
"order": 2,
|
|
"nodeId": "func:web/src/view/components/NodeDetailPanel.tsx#describeInteraction@5",
|
|
"title": "describeInteraction",
|
|
"nextStepIds": []
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:web/src/view/components/NodeDetailPanel.tsx#observer() 回调@13@13:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.openFlowForFunc@265",
|
|
"order": 3,
|
|
"nodeId": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.openFlowForFunc@265",
|
|
"title": "GraphViewModel.openFlowForFunc",
|
|
"nextStepIds": []
|
|
}
|
|
],
|
|
"edgeIds": [
|
|
"edge:call:func:web/src/view/components/NodeDetailPanel.tsx#observer() 回调@13@13=>func:web/src/view/vmContext.ts#useGraphVM@6",
|
|
"edge:call:func:web/src/view/components/NodeDetailPanel.tsx#observer() 回调@13@13=>func:web/src/view/components/NodeDetailPanel.tsx#describeInteraction@5",
|
|
"edge:call:func:web/src/view/components/NodeDetailPanel.tsx#observer() 回调@13@13=>func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.openFlowForFunc@265"
|
|
],
|
|
"summary": "渲染右侧节点详情:位置、归属、交互、所在流程"
|
|
},
|
|
{
|
|
"id": "flow:call:func:web/src/view/components/CodePanel.tsx#observer() 回调@7@7",
|
|
"name": "observer() 回调@7 (web/src/view/components/CodePanel.tsx)",
|
|
"flowType": "call",
|
|
"provenance": "manual",
|
|
"entryNodeId": "func:web/src/view/components/CodePanel.tsx#observer() 回调@7@7",
|
|
"steps": [
|
|
{
|
|
"id": "step:flow:call:func:web/src/view/components/CodePanel.tsx#observer() 回调@7@7:func:web/src/view/components/CodePanel.tsx#observer() 回调@7@7",
|
|
"order": 0,
|
|
"nodeId": "func:web/src/view/components/CodePanel.tsx#observer() 回调@7@7",
|
|
"title": "observer() 回调@7",
|
|
"nextStepIds": [
|
|
"step:flow:call:func:web/src/view/components/CodePanel.tsx#observer() 回调@7@7:func:web/src/view/vmContext.ts#useGraphVM@6",
|
|
"step:flow:call:func:web/src/view/components/CodePanel.tsx#observer() 回调@7@7:func:web/src/services/languageMap.ts#languageOf@42",
|
|
"step:flow:call:func:web/src/view/components/CodePanel.tsx#observer() 回调@7@7:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.toggleCodePanel@104"
|
|
]
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:web/src/view/components/CodePanel.tsx#observer() 回调@7@7:func:web/src/view/vmContext.ts#useGraphVM@6",
|
|
"order": 1,
|
|
"nodeId": "func:web/src/view/vmContext.ts#useGraphVM@6",
|
|
"title": "useGraphVM",
|
|
"nextStepIds": []
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:web/src/view/components/CodePanel.tsx#observer() 回调@7@7:func:web/src/services/languageMap.ts#languageOf@42",
|
|
"order": 2,
|
|
"nodeId": "func:web/src/services/languageMap.ts#languageOf@42",
|
|
"title": "languageOf",
|
|
"nextStepIds": []
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:web/src/view/components/CodePanel.tsx#observer() 回调@7@7:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.toggleCodePanel@104",
|
|
"order": 3,
|
|
"nodeId": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.toggleCodePanel@104",
|
|
"title": "GraphViewModel.toggleCodePanel",
|
|
"nextStepIds": []
|
|
}
|
|
],
|
|
"edgeIds": [
|
|
"edge:call:func:web/src/view/components/CodePanel.tsx#observer() 回调@7@7=>func:web/src/view/vmContext.ts#useGraphVM@6",
|
|
"edge:call:func:web/src/view/components/CodePanel.tsx#observer() 回调@7@7=>func:web/src/services/languageMap.ts#languageOf@42",
|
|
"edge:call:func:web/src/view/components/CodePanel.tsx#observer() 回调@7@7=>func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.toggleCodePanel@104"
|
|
],
|
|
"summary": "渲染底部源码面板:随选中节点显示语法高亮源码"
|
|
},
|
|
{
|
|
"id": "flow:call:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.positionedGraph@225",
|
|
"name": "GraphViewModel.positionedGraph (web/src/viewmodel/GraphViewModel.ts)",
|
|
"flowType": "call",
|
|
"provenance": "manual",
|
|
"entryNodeId": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.positionedGraph@225",
|
|
"steps": [
|
|
{
|
|
"id": "step:flow:call:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.positionedGraph@225:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.positionedGraph@225",
|
|
"order": 0,
|
|
"nodeId": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.positionedGraph@225",
|
|
"title": "GraphViewModel.positionedGraph",
|
|
"nextStepIds": [
|
|
"step:flow:call:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.positionedGraph@225:func:web/src/model/graphModel.ts#flowToGraph@43",
|
|
"step:flow:call:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.positionedGraph@225:func:web/src/services/dagreLayout.ts#computeLayout@31"
|
|
]
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.positionedGraph@225:func:web/src/model/graphModel.ts#flowToGraph@43",
|
|
"order": 1,
|
|
"nodeId": "func:web/src/model/graphModel.ts#flowToGraph@43",
|
|
"title": "flowToGraph",
|
|
"nextStepIds": []
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.positionedGraph@225:func:web/src/services/dagreLayout.ts#computeLayout@31",
|
|
"order": 2,
|
|
"nodeId": "func:web/src/services/dagreLayout.ts#computeLayout@31",
|
|
"title": "computeLayout",
|
|
"nextStepIds": []
|
|
}
|
|
],
|
|
"edgeIds": [
|
|
"edge:call:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.positionedGraph@225=>func:web/src/model/graphModel.ts#flowToGraph@43",
|
|
"edge:call:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.positionedGraph@225=>func:web/src/services/dagreLayout.ts#computeLayout@31"
|
|
],
|
|
"summary": "计算当前流程的带坐标中性图(含 Dagre 自动布局)"
|
|
},
|
|
{
|
|
"id": "flow:call:func:web/src/view/components/FlowGraph.tsx#observer() 回调@16@16",
|
|
"name": "observer() 回调@16 (web/src/view/components/FlowGraph.tsx)",
|
|
"flowType": "call",
|
|
"provenance": "manual",
|
|
"entryNodeId": "func:web/src/view/components/FlowGraph.tsx#observer() 回调@16@16",
|
|
"steps": [
|
|
{
|
|
"id": "step:flow:call:func:web/src/view/components/FlowGraph.tsx#observer() 回调@16@16:func:web/src/view/components/FlowGraph.tsx#observer() 回调@16@16",
|
|
"order": 0,
|
|
"nodeId": "func:web/src/view/components/FlowGraph.tsx#observer() 回调@16@16",
|
|
"title": "observer() 回调@16",
|
|
"nextStepIds": [
|
|
"step:flow:call:func:web/src/view/components/FlowGraph.tsx#observer() 回调@16@16:func:web/src/view/vmContext.ts#useGraphVM@6",
|
|
"step:flow:call:func:web/src/view/components/FlowGraph.tsx#observer() 回调@16@16:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.selectNode@340"
|
|
]
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:web/src/view/components/FlowGraph.tsx#observer() 回调@16@16:func:web/src/view/vmContext.ts#useGraphVM@6",
|
|
"order": 1,
|
|
"nodeId": "func:web/src/view/vmContext.ts#useGraphVM@6",
|
|
"title": "useGraphVM",
|
|
"nextStepIds": []
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:web/src/view/components/FlowGraph.tsx#observer() 回调@16@16:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.selectNode@340",
|
|
"order": 2,
|
|
"nodeId": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.selectNode@340",
|
|
"title": "GraphViewModel.selectNode",
|
|
"nextStepIds": []
|
|
}
|
|
],
|
|
"edgeIds": [
|
|
"edge:call:func:web/src/view/components/FlowGraph.tsx#observer() 回调@16@16=>func:web/src/view/vmContext.ts#useGraphVM@6",
|
|
"edge:call:func:web/src/view/components/FlowGraph.tsx#observer() 回调@16@16=>func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.selectNode@340"
|
|
],
|
|
"summary": "把中性图适配为 React Flow 节点 / 边并渲染画布"
|
|
},
|
|
{
|
|
"id": "flow:call:func:web/src/view/components/FlowList.tsx#observer() 回调@4@4",
|
|
"name": "observer() 回调@4 (web/src/view/components/FlowList.tsx)",
|
|
"flowType": "call",
|
|
"provenance": "manual",
|
|
"entryNodeId": "func:web/src/view/components/FlowList.tsx#observer() 回调@4@4",
|
|
"steps": [
|
|
{
|
|
"id": "step:flow:call:func:web/src/view/components/FlowList.tsx#observer() 回调@4@4:func:web/src/view/components/FlowList.tsx#observer() 回调@4@4",
|
|
"order": 0,
|
|
"nodeId": "func:web/src/view/components/FlowList.tsx#observer() 回调@4@4",
|
|
"title": "observer() 回调@4",
|
|
"nextStepIds": [
|
|
"step:flow:call:func:web/src/view/components/FlowList.tsx#observer() 回调@4@4:func:web/src/view/vmContext.ts#useGraphVM@6",
|
|
"step:flow:call:func:web/src/view/components/FlowList.tsx#observer() 回调@4@4:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.selectFlow@334"
|
|
]
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:web/src/view/components/FlowList.tsx#observer() 回调@4@4:func:web/src/view/vmContext.ts#useGraphVM@6",
|
|
"order": 1,
|
|
"nodeId": "func:web/src/view/vmContext.ts#useGraphVM@6",
|
|
"title": "useGraphVM",
|
|
"nextStepIds": []
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:web/src/view/components/FlowList.tsx#observer() 回调@4@4:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.selectFlow@334",
|
|
"order": 2,
|
|
"nodeId": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.selectFlow@334",
|
|
"title": "GraphViewModel.selectFlow",
|
|
"nextStepIds": []
|
|
}
|
|
],
|
|
"edgeIds": [
|
|
"edge:call:func:web/src/view/components/FlowList.tsx#observer() 回调@4@4=>func:web/src/view/vmContext.ts#useGraphVM@6",
|
|
"edge:call:func:web/src/view/components/FlowList.tsx#observer() 回调@4@4=>func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.selectFlow@334"
|
|
],
|
|
"summary": "渲染流程列表并处理流程选择"
|
|
},
|
|
{
|
|
"id": "flow:call:func:web/src/view/components/GroupList.tsx#observer() 回调@4@4",
|
|
"name": "observer() 回调@4 (web/src/view/components/GroupList.tsx)",
|
|
"flowType": "call",
|
|
"provenance": "manual",
|
|
"entryNodeId": "func:web/src/view/components/GroupList.tsx#observer() 回调@4@4",
|
|
"steps": [
|
|
{
|
|
"id": "step:flow:call:func:web/src/view/components/GroupList.tsx#observer() 回调@4@4:func:web/src/view/components/GroupList.tsx#observer() 回调@4@4",
|
|
"order": 0,
|
|
"nodeId": "func:web/src/view/components/GroupList.tsx#observer() 回调@4@4",
|
|
"title": "observer() 回调@4",
|
|
"nextStepIds": [
|
|
"step:flow:call:func:web/src/view/components/GroupList.tsx#observer() 回调@4@4:func:web/src/view/vmContext.ts#useGraphVM@6",
|
|
"step:flow:call:func:web/src/view/components/GroupList.tsx#observer() 回调@4@4:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.selectGroup@171"
|
|
]
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:web/src/view/components/GroupList.tsx#observer() 回调@4@4:func:web/src/view/vmContext.ts#useGraphVM@6",
|
|
"order": 1,
|
|
"nodeId": "func:web/src/view/vmContext.ts#useGraphVM@6",
|
|
"title": "useGraphVM",
|
|
"nextStepIds": []
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:web/src/view/components/GroupList.tsx#observer() 回调@4@4:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.selectGroup@171",
|
|
"order": 2,
|
|
"nodeId": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.selectGroup@171",
|
|
"title": "GraphViewModel.selectGroup",
|
|
"nextStepIds": []
|
|
}
|
|
],
|
|
"edgeIds": [
|
|
"edge:call:func:web/src/view/components/GroupList.tsx#observer() 回调@4@4=>func:web/src/view/vmContext.ts#useGraphVM@6",
|
|
"edge:call:func:web/src/view/components/GroupList.tsx#observer() 回调@4@4=>func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.selectGroup@171"
|
|
],
|
|
"summary": "渲染分组列表,按类 / 文件过滤流程"
|
|
},
|
|
{
|
|
"id": "flow:call:func:web/src/view/components/SearchBar.tsx#observer() 回调@6@6",
|
|
"name": "observer() 回调@6 (web/src/view/components/SearchBar.tsx)",
|
|
"flowType": "call",
|
|
"provenance": "manual",
|
|
"entryNodeId": "func:web/src/view/components/SearchBar.tsx#observer() 回调@6@6",
|
|
"steps": [
|
|
{
|
|
"id": "step:flow:call:func:web/src/view/components/SearchBar.tsx#observer() 回调@6@6:func:web/src/view/components/SearchBar.tsx#observer() 回调@6@6",
|
|
"order": 0,
|
|
"nodeId": "func:web/src/view/components/SearchBar.tsx#observer() 回调@6@6",
|
|
"title": "observer() 回调@6",
|
|
"nextStepIds": [
|
|
"step:flow:call:func:web/src/view/components/SearchBar.tsx#observer() 回调@6@6:func:web/src/view/vmContext.ts#useGraphVM@6",
|
|
"step:flow:call:func:web/src/view/components/SearchBar.tsx#observer() 回调@6@6:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.setSearchQuery@275"
|
|
]
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:web/src/view/components/SearchBar.tsx#observer() 回调@6@6:func:web/src/view/vmContext.ts#useGraphVM@6",
|
|
"order": 1,
|
|
"nodeId": "func:web/src/view/vmContext.ts#useGraphVM@6",
|
|
"title": "useGraphVM",
|
|
"nextStepIds": []
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:web/src/view/components/SearchBar.tsx#observer() 回调@6@6:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.setSearchQuery@275",
|
|
"order": 2,
|
|
"nodeId": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.setSearchQuery@275",
|
|
"title": "GraphViewModel.setSearchQuery",
|
|
"nextStepIds": []
|
|
}
|
|
],
|
|
"edgeIds": [
|
|
"edge:call:func:web/src/view/components/SearchBar.tsx#observer() 回调@6@6=>func:web/src/view/vmContext.ts#useGraphVM@6",
|
|
"edge:call:func:web/src/view/components/SearchBar.tsx#observer() 回调@6@6=>func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.setSearchQuery@275"
|
|
],
|
|
"summary": "渲染搜索框与结果下拉"
|
|
},
|
|
{
|
|
"id": "flow:call:func:web/src/view/components/SearchBar.tsx#匿名函数@26@26",
|
|
"name": "匿名函数@26 (web/src/view/components/SearchBar.tsx)",
|
|
"flowType": "call",
|
|
"provenance": "manual",
|
|
"entryNodeId": "func:web/src/view/components/SearchBar.tsx#匿名函数@26@26",
|
|
"steps": [
|
|
{
|
|
"id": "step:flow:call:func:web/src/view/components/SearchBar.tsx#匿名函数@26@26:func:web/src/view/components/SearchBar.tsx#匿名函数@26@26",
|
|
"order": 0,
|
|
"nodeId": "func:web/src/view/components/SearchBar.tsx#匿名函数@26@26",
|
|
"title": "匿名函数@26",
|
|
"nextStepIds": [
|
|
"step:flow:call:func:web/src/view/components/SearchBar.tsx#匿名函数@26@26:func:web/src/view/components/SearchBar.tsx#activate@12",
|
|
"step:flow:call:func:web/src/view/components/SearchBar.tsx#匿名函数@26@26:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.setSearchQuery@275"
|
|
]
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:web/src/view/components/SearchBar.tsx#匿名函数@26@26:func:web/src/view/components/SearchBar.tsx#activate@12",
|
|
"order": 1,
|
|
"nodeId": "func:web/src/view/components/SearchBar.tsx#activate@12",
|
|
"title": "activate",
|
|
"nextStepIds": [
|
|
"step:flow:call:func:web/src/view/components/SearchBar.tsx#匿名函数@26@26:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.activateSearchResult@322"
|
|
]
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:web/src/view/components/SearchBar.tsx#匿名函数@26@26:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.setSearchQuery@275",
|
|
"order": 2,
|
|
"nodeId": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.setSearchQuery@275",
|
|
"title": "GraphViewModel.setSearchQuery",
|
|
"nextStepIds": []
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:web/src/view/components/SearchBar.tsx#匿名函数@26@26:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.activateSearchResult@322",
|
|
"order": 3,
|
|
"nodeId": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.activateSearchResult@322",
|
|
"title": "GraphViewModel.activateSearchResult",
|
|
"nextStepIds": [
|
|
"step:flow:call:func:web/src/view/components/SearchBar.tsx#匿名函数@26@26:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.biggestFlowForFunc@287",
|
|
"step:flow:call:func:web/src/view/components/SearchBar.tsx#匿名函数@26@26:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.openFlowForFunc@265"
|
|
]
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:web/src/view/components/SearchBar.tsx#匿名函数@26@26:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.biggestFlowForFunc@287",
|
|
"order": 4,
|
|
"nodeId": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.biggestFlowForFunc@287",
|
|
"title": "GraphViewModel.biggestFlowForFunc",
|
|
"nextStepIds": []
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:web/src/view/components/SearchBar.tsx#匿名函数@26@26:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.openFlowForFunc@265",
|
|
"order": 5,
|
|
"nodeId": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.openFlowForFunc@265",
|
|
"title": "GraphViewModel.openFlowForFunc",
|
|
"nextStepIds": []
|
|
}
|
|
],
|
|
"edgeIds": [
|
|
"edge:call:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.activateSearchResult@322=>func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.biggestFlowForFunc@287",
|
|
"edge:call:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.activateSearchResult@322=>func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.openFlowForFunc@265",
|
|
"edge:call:func:web/src/view/components/SearchBar.tsx#activate@12=>func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.activateSearchResult@322",
|
|
"edge:call:func:web/src/view/components/SearchBar.tsx#匿名函数@26@26=>func:web/src/view/components/SearchBar.tsx#activate@12",
|
|
"edge:call:func:web/src/view/components/SearchBar.tsx#匿名函数@26@26=>func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.setSearchQuery@275"
|
|
],
|
|
"summary": "搜索输入变更处理回调"
|
|
},
|
|
{
|
|
"id": "flow:call:func:web/src/view/App.tsx#observer() 回调@11@11",
|
|
"name": "observer() 回调@11 (web/src/view/App.tsx)",
|
|
"flowType": "call",
|
|
"provenance": "manual",
|
|
"entryNodeId": "func:web/src/view/App.tsx#observer() 回调@11@11",
|
|
"steps": [
|
|
{
|
|
"id": "step:flow:call:func:web/src/view/App.tsx#observer() 回调@11@11:func:web/src/view/App.tsx#observer() 回调@11@11",
|
|
"order": 0,
|
|
"nodeId": "func:web/src/view/App.tsx#observer() 回调@11@11",
|
|
"title": "observer() 回调@11",
|
|
"nextStepIds": [
|
|
"step:flow:call:func:web/src/view/App.tsx#observer() 回调@11@11:func:web/src/view/vmContext.ts#useGraphVM@6",
|
|
"step:flow:call:func:web/src/view/App.tsx#observer() 回调@11@11:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.selectReport@93"
|
|
]
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:web/src/view/App.tsx#observer() 回调@11@11:func:web/src/view/vmContext.ts#useGraphVM@6",
|
|
"order": 1,
|
|
"nodeId": "func:web/src/view/vmContext.ts#useGraphVM@6",
|
|
"title": "useGraphVM",
|
|
"nextStepIds": []
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:web/src/view/App.tsx#observer() 回调@11@11:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.selectReport@93",
|
|
"order": 2,
|
|
"nodeId": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.selectReport@93",
|
|
"title": "GraphViewModel.selectReport",
|
|
"nextStepIds": [
|
|
"step:flow:call:func:web/src/view/App.tsx#observer() 回调@11@11:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.load@180"
|
|
]
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:web/src/view/App.tsx#observer() 回调@11@11:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.load@180",
|
|
"order": 3,
|
|
"nodeId": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.load@180",
|
|
"title": "GraphViewModel.load",
|
|
"nextStepIds": []
|
|
}
|
|
],
|
|
"edgeIds": [
|
|
"edge:call:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.selectReport@93=>func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.load@180",
|
|
"edge:call:func:web/src/view/App.tsx#observer() 回调@11@11=>func:web/src/view/vmContext.ts#useGraphVM@6",
|
|
"edge:call:func:web/src/view/App.tsx#observer() 回调@11@11=>func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.selectReport@93"
|
|
],
|
|
"summary": "渲染应用骨架:头部、搜索、各面板布局"
|
|
},
|
|
{
|
|
"id": "flow:call:func:src/flows.ts#map() 回调@72@72",
|
|
"name": "map() 回调@72 (src/flows.ts)",
|
|
"flowType": "call",
|
|
"provenance": "manual",
|
|
"entryNodeId": "func:src/flows.ts#map() 回调@72@72",
|
|
"steps": [
|
|
{
|
|
"id": "step:flow:call:func:src/flows.ts#map() 回调@72@72:func:src/flows.ts#map() 回调@72@72",
|
|
"order": 0,
|
|
"nodeId": "func:src/flows.ts#map() 回调@72@72",
|
|
"title": "map() 回调@72",
|
|
"nextStepIds": [
|
|
"step:flow:call:func:src/flows.ts#map() 回调@72@72:func:src/flows.ts#stepIdOf@70"
|
|
]
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:src/flows.ts#map() 回调@72@72:func:src/flows.ts#stepIdOf@70",
|
|
"order": 1,
|
|
"nodeId": "func:src/flows.ts#stepIdOf@70",
|
|
"title": "stepIdOf",
|
|
"nextStepIds": []
|
|
}
|
|
],
|
|
"edgeIds": [
|
|
"edge:call:func:src/flows.ts#map() 回调@72@72=>func:src/flows.ts#stepIdOf@70"
|
|
],
|
|
"summary": "生成流程步骤时的映射回调"
|
|
},
|
|
{
|
|
"id": "flow:call:func:src/analyzer.ts#inProject@65",
|
|
"name": "inProject (src/analyzer.ts)",
|
|
"flowType": "call",
|
|
"provenance": "manual",
|
|
"entryNodeId": "func:src/analyzer.ts#inProject@65",
|
|
"steps": [
|
|
{
|
|
"id": "step:flow:call:func:src/analyzer.ts#inProject@65:func:src/analyzer.ts#inProject@65",
|
|
"order": 0,
|
|
"nodeId": "func:src/analyzer.ts#inProject@65",
|
|
"title": "inProject",
|
|
"nextStepIds": [
|
|
"step:flow:call:func:src/analyzer.ts#inProject@65:func:src/analyzer.ts#relOf@64"
|
|
]
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:src/analyzer.ts#inProject@65:func:src/analyzer.ts#relOf@64",
|
|
"order": 1,
|
|
"nodeId": "func:src/analyzer.ts#relOf@64",
|
|
"title": "relOf",
|
|
"nextStepIds": [
|
|
"step:flow:call:func:src/analyzer.ts#inProject@65:func:src/scanner.ts#toPosix@19"
|
|
]
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:src/analyzer.ts#inProject@65:func:src/scanner.ts#toPosix@19",
|
|
"order": 2,
|
|
"nodeId": "func:src/scanner.ts#toPosix@19",
|
|
"title": "toPosix",
|
|
"nextStepIds": []
|
|
}
|
|
],
|
|
"edgeIds": [
|
|
"edge:call:func:src/analyzer.ts#relOf@64=>func:src/scanner.ts#toPosix@19",
|
|
"edge:call:func:src/analyzer.ts#inProject@65=>func:src/analyzer.ts#relOf@64"
|
|
],
|
|
"summary": "判断文件是否属于目标项目,过滤外部依赖"
|
|
},
|
|
{
|
|
"id": "flow:call:func:src/overview.ts#map() 回调@229@229",
|
|
"name": "map() 回调@229 (src/overview.ts)",
|
|
"flowType": "call",
|
|
"provenance": "manual",
|
|
"entryNodeId": "func:src/overview.ts#map() 回调@229@229",
|
|
"steps": [
|
|
{
|
|
"id": "step:flow:call:func:src/overview.ts#map() 回调@229@229:func:src/overview.ts#map() 回调@229@229",
|
|
"order": 0,
|
|
"nodeId": "func:src/overview.ts#map() 回调@229@229",
|
|
"title": "map() 回调@229",
|
|
"nextStepIds": [
|
|
"step:flow:call:func:src/overview.ts#map() 回调@229@229:func:src/overview.ts#analyzeEntry@140"
|
|
]
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:src/overview.ts#map() 回调@229@229:func:src/overview.ts#analyzeEntry@140",
|
|
"order": 1,
|
|
"nodeId": "func:src/overview.ts#analyzeEntry@140",
|
|
"title": "analyzeEntry",
|
|
"nextStepIds": [
|
|
"step:flow:call:func:src/overview.ts#map() 回调@229@229:func:src/overview.ts#reachableFuncs@92"
|
|
]
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:src/overview.ts#map() 回调@229@229:func:src/overview.ts#reachableFuncs@92",
|
|
"order": 2,
|
|
"nodeId": "func:src/overview.ts#reachableFuncs@92",
|
|
"title": "reachableFuncs",
|
|
"nextStepIds": []
|
|
}
|
|
],
|
|
"edgeIds": [
|
|
"edge:call:func:src/overview.ts#analyzeEntry@140=>func:src/overview.ts#reachableFuncs@92",
|
|
"edge:call:func:src/overview.ts#map() 回调@229@229=>func:src/overview.ts#analyzeEntry@140"
|
|
],
|
|
"summary": "概览推导中的流程映射回调"
|
|
},
|
|
{
|
|
"id": "flow:call:func:web/src/model/graphModel.ts#map() 回调@44@44",
|
|
"name": "map() 回调@44 (web/src/model/graphModel.ts)",
|
|
"flowType": "call",
|
|
"provenance": "manual",
|
|
"entryNodeId": "func:web/src/model/graphModel.ts#map() 回调@44@44",
|
|
"steps": [
|
|
{
|
|
"id": "step:flow:call:func:web/src/model/graphModel.ts#map() 回调@44@44:func:web/src/model/graphModel.ts#map() 回调@44@44",
|
|
"order": 0,
|
|
"nodeId": "func:web/src/model/graphModel.ts#map() 回调@44@44",
|
|
"title": "map() 回调@44",
|
|
"nextStepIds": [
|
|
"step:flow:call:func:web/src/model/graphModel.ts#map() 回调@44@44:func:web/src/model/graphModel.ts#qualifierOf@24"
|
|
]
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:web/src/model/graphModel.ts#map() 回调@44@44:func:web/src/model/graphModel.ts#qualifierOf@24",
|
|
"order": 1,
|
|
"nodeId": "func:web/src/model/graphModel.ts#qualifierOf@24",
|
|
"title": "qualifierOf",
|
|
"nextStepIds": [
|
|
"step:flow:call:func:web/src/model/graphModel.ts#map() 回调@44@44:func:web/src/model/graphModel.ts#baseName@19"
|
|
]
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:web/src/model/graphModel.ts#map() 回调@44@44:func:web/src/model/graphModel.ts#baseName@19",
|
|
"order": 2,
|
|
"nodeId": "func:web/src/model/graphModel.ts#baseName@19",
|
|
"title": "baseName",
|
|
"nextStepIds": []
|
|
}
|
|
],
|
|
"edgeIds": [
|
|
"edge:call:func:web/src/model/graphModel.ts#qualifierOf@24=>func:web/src/model/graphModel.ts#baseName@19",
|
|
"edge:call:func:web/src/model/graphModel.ts#map() 回调@44@44=>func:web/src/model/graphModel.ts#qualifierOf@24"
|
|
],
|
|
"summary": "将流程步骤映射为图节点"
|
|
},
|
|
{
|
|
"id": "flow:call:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.groups@135",
|
|
"name": "GraphViewModel.groups (web/src/viewmodel/GraphViewModel.ts)",
|
|
"flowType": "call",
|
|
"provenance": "manual",
|
|
"entryNodeId": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.groups@135",
|
|
"steps": [
|
|
{
|
|
"id": "step:flow:call:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.groups@135:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.groups@135",
|
|
"order": 0,
|
|
"nodeId": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.groups@135",
|
|
"title": "GraphViewModel.groups",
|
|
"nextStepIds": [
|
|
"step:flow:call:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.groups@135:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.groupOfFlow@109"
|
|
]
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.groups@135:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.groupOfFlow@109",
|
|
"order": 1,
|
|
"nodeId": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.groupOfFlow@109",
|
|
"title": "GraphViewModel.groupOfFlow",
|
|
"nextStepIds": [
|
|
"step:flow:call:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.groups@135:func:web/src/viewmodel/GraphViewModel.ts#baseName@43"
|
|
]
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.groups@135:func:web/src/viewmodel/GraphViewModel.ts#baseName@43",
|
|
"order": 2,
|
|
"nodeId": "func:web/src/viewmodel/GraphViewModel.ts#baseName@43",
|
|
"title": "baseName",
|
|
"nextStepIds": []
|
|
}
|
|
],
|
|
"edgeIds": [
|
|
"edge:call:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.groupOfFlow@109=>func:web/src/viewmodel/GraphViewModel.ts#baseName@43",
|
|
"edge:call:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.groups@135=>func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.groupOfFlow@109"
|
|
],
|
|
"summary": "派生分组列表的计算属性"
|
|
},
|
|
{
|
|
"id": "flow:call:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.visibleFlows@147",
|
|
"name": "GraphViewModel.visibleFlows (web/src/viewmodel/GraphViewModel.ts)",
|
|
"flowType": "call",
|
|
"provenance": "manual",
|
|
"entryNodeId": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.visibleFlows@147",
|
|
"steps": [
|
|
{
|
|
"id": "step:flow:call:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.visibleFlows@147:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.visibleFlows@147",
|
|
"order": 0,
|
|
"nodeId": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.visibleFlows@147",
|
|
"title": "GraphViewModel.visibleFlows",
|
|
"nextStepIds": [
|
|
"step:flow:call:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.visibleFlows@147:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.groupOfFlow@109"
|
|
]
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.visibleFlows@147:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.groupOfFlow@109",
|
|
"order": 1,
|
|
"nodeId": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.groupOfFlow@109",
|
|
"title": "GraphViewModel.groupOfFlow",
|
|
"nextStepIds": [
|
|
"step:flow:call:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.visibleFlows@147:func:web/src/viewmodel/GraphViewModel.ts#baseName@43"
|
|
]
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.visibleFlows@147:func:web/src/viewmodel/GraphViewModel.ts#baseName@43",
|
|
"order": 2,
|
|
"nodeId": "func:web/src/viewmodel/GraphViewModel.ts#baseName@43",
|
|
"title": "baseName",
|
|
"nextStepIds": []
|
|
}
|
|
],
|
|
"edgeIds": [
|
|
"edge:call:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.groupOfFlow@109=>func:web/src/viewmodel/GraphViewModel.ts#baseName@43",
|
|
"edge:call:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.visibleFlows@147=>func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.groupOfFlow@109"
|
|
],
|
|
"summary": "按当前分组过滤后的流程列表"
|
|
},
|
|
{
|
|
"id": "flow:call:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.selectedFuncOwner@159",
|
|
"name": "GraphViewModel.selectedFuncOwner (web/src/viewmodel/GraphViewModel.ts)",
|
|
"flowType": "call",
|
|
"provenance": "manual",
|
|
"entryNodeId": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.selectedFuncOwner@159",
|
|
"steps": [
|
|
{
|
|
"id": "step:flow:call:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.selectedFuncOwner@159:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.selectedFuncOwner@159",
|
|
"order": 0,
|
|
"nodeId": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.selectedFuncOwner@159",
|
|
"title": "GraphViewModel.selectedFuncOwner",
|
|
"nextStepIds": [
|
|
"step:flow:call:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.selectedFuncOwner@159:func:web/src/viewmodel/GraphViewModel.ts#baseName@43"
|
|
]
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.selectedFuncOwner@159:func:web/src/viewmodel/GraphViewModel.ts#baseName@43",
|
|
"order": 1,
|
|
"nodeId": "func:web/src/viewmodel/GraphViewModel.ts#baseName@43",
|
|
"title": "baseName",
|
|
"nextStepIds": []
|
|
}
|
|
],
|
|
"edgeIds": [
|
|
"edge:call:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.selectedFuncOwner@159=>func:web/src/viewmodel/GraphViewModel.ts#baseName@43"
|
|
],
|
|
"summary": "计算选中函数的归属(类 / 文件)及其说明"
|
|
},
|
|
{
|
|
"id": "flow:call:func:web/src/viewmodel/GraphViewModel.ts#reaction() 回调@79@79",
|
|
"name": "reaction() 回调@79 (web/src/viewmodel/GraphViewModel.ts)",
|
|
"flowType": "call",
|
|
"provenance": "manual",
|
|
"entryNodeId": "func:web/src/viewmodel/GraphViewModel.ts#reaction() 回调@79@79",
|
|
"steps": [
|
|
{
|
|
"id": "step:flow:call:func:web/src/viewmodel/GraphViewModel.ts#reaction() 回调@79@79:func:web/src/viewmodel/GraphViewModel.ts#reaction() 回调@79@79",
|
|
"order": 0,
|
|
"nodeId": "func:web/src/viewmodel/GraphViewModel.ts#reaction() 回调@79@79",
|
|
"title": "reaction() 回调@79",
|
|
"nextStepIds": [
|
|
"step:flow:call:func:web/src/viewmodel/GraphViewModel.ts#reaction() 回调@79@79:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.loadSelectedFuncCode@346"
|
|
]
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:web/src/viewmodel/GraphViewModel.ts#reaction() 回调@79@79:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.loadSelectedFuncCode@346",
|
|
"order": 1,
|
|
"nodeId": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.loadSelectedFuncCode@346",
|
|
"title": "GraphViewModel.loadSelectedFuncCode",
|
|
"nextStepIds": []
|
|
}
|
|
],
|
|
"edgeIds": [
|
|
"edge:call:func:web/src/viewmodel/GraphViewModel.ts#reaction() 回调@79@79=>func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.loadSelectedFuncCode@346"
|
|
],
|
|
"summary": "监听选中节点变化,自动拉取对应源码"
|
|
},
|
|
{
|
|
"id": "flow:call:func:web/src/view/components/FlowNode.tsx#memo() 回调@40@40",
|
|
"name": "memo() 回调@40 (web/src/view/components/FlowNode.tsx)",
|
|
"flowType": "call",
|
|
"provenance": "manual",
|
|
"entryNodeId": "func:web/src/view/components/FlowNode.tsx#memo() 回调@40@40",
|
|
"steps": [
|
|
{
|
|
"id": "step:flow:call:func:web/src/view/components/FlowNode.tsx#memo() 回调@40@40:func:web/src/view/components/FlowNode.tsx#memo() 回调@40@40",
|
|
"order": 0,
|
|
"nodeId": "func:web/src/view/components/FlowNode.tsx#memo() 回调@40@40",
|
|
"title": "memo() 回调@40",
|
|
"nextStepIds": [
|
|
"step:flow:call:func:web/src/view/components/FlowNode.tsx#memo() 回调@40@40:func:web/src/view/components/FlowNode.tsx#interactionBadges@12"
|
|
]
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:web/src/view/components/FlowNode.tsx#memo() 回调@40@40:func:web/src/view/components/FlowNode.tsx#interactionBadges@12",
|
|
"order": 1,
|
|
"nodeId": "func:web/src/view/components/FlowNode.tsx#interactionBadges@12",
|
|
"title": "interactionBadges",
|
|
"nextStepIds": []
|
|
}
|
|
],
|
|
"edgeIds": [
|
|
"edge:call:func:web/src/view/components/FlowNode.tsx#memo() 回调@40@40=>func:web/src/view/components/FlowNode.tsx#interactionBadges@12"
|
|
],
|
|
"summary": "自定义节点渲染(memo 回调)"
|
|
},
|
|
{
|
|
"id": "flow:call:func:web/src/view/components/SearchBar.tsx#匿名函数@41@41",
|
|
"name": "匿名函数@41 (web/src/view/components/SearchBar.tsx)",
|
|
"flowType": "call",
|
|
"provenance": "manual",
|
|
"entryNodeId": "func:web/src/view/components/SearchBar.tsx#匿名函数@41@41",
|
|
"steps": [
|
|
{
|
|
"id": "step:flow:call:func:web/src/view/components/SearchBar.tsx#匿名函数@41@41:func:web/src/view/components/SearchBar.tsx#匿名函数@41@41",
|
|
"order": 0,
|
|
"nodeId": "func:web/src/view/components/SearchBar.tsx#匿名函数@41@41",
|
|
"title": "匿名函数@41",
|
|
"nextStepIds": [
|
|
"step:flow:call:func:web/src/view/components/SearchBar.tsx#匿名函数@41@41:func:web/src/view/components/SearchBar.tsx#activate@12"
|
|
]
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:web/src/view/components/SearchBar.tsx#匿名函数@41@41:func:web/src/view/components/SearchBar.tsx#activate@12",
|
|
"order": 1,
|
|
"nodeId": "func:web/src/view/components/SearchBar.tsx#activate@12",
|
|
"title": "activate",
|
|
"nextStepIds": [
|
|
"step:flow:call:func:web/src/view/components/SearchBar.tsx#匿名函数@41@41:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.activateSearchResult@322"
|
|
]
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:web/src/view/components/SearchBar.tsx#匿名函数@41@41:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.activateSearchResult@322",
|
|
"order": 2,
|
|
"nodeId": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.activateSearchResult@322",
|
|
"title": "GraphViewModel.activateSearchResult",
|
|
"nextStepIds": [
|
|
"step:flow:call:func:web/src/view/components/SearchBar.tsx#匿名函数@41@41:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.biggestFlowForFunc@287",
|
|
"step:flow:call:func:web/src/view/components/SearchBar.tsx#匿名函数@41@41:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.openFlowForFunc@265"
|
|
]
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:web/src/view/components/SearchBar.tsx#匿名函数@41@41:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.biggestFlowForFunc@287",
|
|
"order": 3,
|
|
"nodeId": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.biggestFlowForFunc@287",
|
|
"title": "GraphViewModel.biggestFlowForFunc",
|
|
"nextStepIds": []
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:web/src/view/components/SearchBar.tsx#匿名函数@41@41:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.openFlowForFunc@265",
|
|
"order": 4,
|
|
"nodeId": "func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.openFlowForFunc@265",
|
|
"title": "GraphViewModel.openFlowForFunc",
|
|
"nextStepIds": []
|
|
}
|
|
],
|
|
"edgeIds": [
|
|
"edge:call:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.activateSearchResult@322=>func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.biggestFlowForFunc@287",
|
|
"edge:call:func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.activateSearchResult@322=>func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.openFlowForFunc@265",
|
|
"edge:call:func:web/src/view/components/SearchBar.tsx#activate@12=>func:web/src/viewmodel/GraphViewModel.ts#GraphViewModel.activateSearchResult@322",
|
|
"edge:call:func:web/src/view/components/SearchBar.tsx#匿名函数@41@41=>func:web/src/view/components/SearchBar.tsx#activate@12"
|
|
],
|
|
"summary": "搜索结果项点击处理"
|
|
},
|
|
{
|
|
"id": "flow:call:func:web/src/view/components/FlowBanner.tsx#observer() 回调@4@4",
|
|
"name": "observer() 回调@4 (web/src/view/components/FlowBanner.tsx)",
|
|
"flowType": "call",
|
|
"provenance": "manual",
|
|
"entryNodeId": "func:web/src/view/components/FlowBanner.tsx#observer() 回调@4@4",
|
|
"steps": [
|
|
{
|
|
"id": "step:flow:call:func:web/src/view/components/FlowBanner.tsx#observer() 回调@4@4:func:web/src/view/components/FlowBanner.tsx#observer() 回调@4@4",
|
|
"order": 0,
|
|
"nodeId": "func:web/src/view/components/FlowBanner.tsx#observer() 回调@4@4",
|
|
"title": "observer() 回调@4",
|
|
"nextStepIds": [
|
|
"step:flow:call:func:web/src/view/components/FlowBanner.tsx#observer() 回调@4@4:func:web/src/view/vmContext.ts#useGraphVM@6"
|
|
]
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:web/src/view/components/FlowBanner.tsx#observer() 回调@4@4:func:web/src/view/vmContext.ts#useGraphVM@6",
|
|
"order": 1,
|
|
"nodeId": "func:web/src/view/vmContext.ts#useGraphVM@6",
|
|
"title": "useGraphVM",
|
|
"nextStepIds": []
|
|
}
|
|
],
|
|
"edgeIds": [
|
|
"edge:call:func:web/src/view/components/FlowBanner.tsx#observer() 回调@4@4=>func:web/src/view/vmContext.ts#useGraphVM@6"
|
|
],
|
|
"summary": "渲染当前流程横幅:流程名与一句话说明"
|
|
},
|
|
{
|
|
"id": "flow:call:func:src/cli.ts#<module>@0",
|
|
"name": "<module> (src/cli.ts)",
|
|
"flowType": "call",
|
|
"provenance": "manual",
|
|
"entryNodeId": "func:src/cli.ts#<module>@0",
|
|
"steps": [
|
|
{
|
|
"id": "step:flow:call:func:src/cli.ts#<module>@0:func:src/cli.ts#<module>@0",
|
|
"order": 0,
|
|
"nodeId": "func:src/cli.ts#<module>@0",
|
|
"title": "<module>",
|
|
"nextStepIds": [
|
|
"step:flow:call:func:src/cli.ts#<module>@0:func:src/cli.ts#main@40"
|
|
]
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:src/cli.ts#<module>@0:func:src/cli.ts#main@40",
|
|
"order": 1,
|
|
"nodeId": "func:src/cli.ts#main@40",
|
|
"title": "main",
|
|
"nextStepIds": [
|
|
"step:flow:call:func:src/cli.ts#<module>@0:func:src/cli.ts#parseArgs@13",
|
|
"step:flow:call:func:src/cli.ts#<module>@0:func:src/analyzer.ts#analyzeProject@32"
|
|
]
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:src/cli.ts#<module>@0:func:src/cli.ts#parseArgs@13",
|
|
"order": 2,
|
|
"nodeId": "func:src/cli.ts#parseArgs@13",
|
|
"title": "parseArgs",
|
|
"nextStepIds": []
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:src/cli.ts#<module>@0:func:src/analyzer.ts#analyzeProject@32",
|
|
"order": 3,
|
|
"nodeId": "func:src/analyzer.ts#analyzeProject@32",
|
|
"title": "analyzeProject",
|
|
"nextStepIds": [
|
|
"step:flow:call:func:src/cli.ts#<module>@0:func:src/scanner.ts#collectSourceFiles@24",
|
|
"step:flow:call:func:src/cli.ts#<module>@0:func:src/analyzer.ts#registerFile@223",
|
|
"step:flow:call:func:src/cli.ts#<module>@0:func:src/analyzer.ts#analyzeRelations@487",
|
|
"step:flow:call:func:src/cli.ts#<module>@0:func:src/analyzer.ts#ensureModule@83",
|
|
"step:flow:call:func:src/cli.ts#<module>@0:func:src/flows.ts#generateCallFlows@16",
|
|
"step:flow:call:func:src/cli.ts#<module>@0:func:src/scanner.ts#toPosix@19",
|
|
"step:flow:call:func:src/cli.ts#<module>@0:func:src/externals.ts#deriveExternalSystems@4"
|
|
]
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:src/cli.ts#<module>@0:func:src/scanner.ts#collectSourceFiles@24",
|
|
"order": 4,
|
|
"nodeId": "func:src/scanner.ts#collectSourceFiles@24",
|
|
"title": "collectSourceFiles",
|
|
"nextStepIds": [
|
|
"step:flow:call:func:src/cli.ts#<module>@0:func:src/scanner.ts#walk@27"
|
|
]
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:src/cli.ts#<module>@0:func:src/analyzer.ts#registerFile@223",
|
|
"order": 5,
|
|
"nodeId": "func:src/analyzer.ts#registerFile@223",
|
|
"title": "registerFile",
|
|
"nextStepIds": [
|
|
"step:flow:call:func:src/cli.ts#<module>@0:func:src/analyzer.ts#relOf@64",
|
|
"step:flow:call:func:src/cli.ts#<module>@0:func:src/scanner.ts#languageOf@52",
|
|
"step:flow:call:func:src/cli.ts#<module>@0:func:src/scanner.ts#toPosix@19",
|
|
"step:flow:call:func:src/cli.ts#<module>@0:func:src/analyzer.ts#ensureModule@83"
|
|
]
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:src/cli.ts#<module>@0:func:src/analyzer.ts#analyzeRelations@487",
|
|
"order": 6,
|
|
"nodeId": "func:src/analyzer.ts#analyzeRelations@487",
|
|
"title": "analyzeRelations",
|
|
"nextStepIds": [
|
|
"step:flow:call:func:src/cli.ts#<module>@0:func:src/analyzer.ts#relOf@64",
|
|
"step:flow:call:func:src/cli.ts#<module>@0:func:src/analyzer.ts#walk@492"
|
|
]
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:src/cli.ts#<module>@0:func:src/analyzer.ts#ensureModule@83",
|
|
"order": 7,
|
|
"nodeId": "func:src/analyzer.ts#ensureModule@83",
|
|
"title": "ensureModule",
|
|
"nextStepIds": []
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:src/cli.ts#<module>@0:func:src/flows.ts#generateCallFlows@16",
|
|
"order": 8,
|
|
"nodeId": "func:src/flows.ts#generateCallFlows@16",
|
|
"title": "generateCallFlows",
|
|
"nextStepIds": []
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:src/cli.ts#<module>@0:func:src/scanner.ts#toPosix@19",
|
|
"order": 9,
|
|
"nodeId": "func:src/scanner.ts#toPosix@19",
|
|
"title": "toPosix",
|
|
"nextStepIds": []
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:src/cli.ts#<module>@0:func:src/externals.ts#deriveExternalSystems@4",
|
|
"order": 10,
|
|
"nodeId": "func:src/externals.ts#deriveExternalSystems@4",
|
|
"title": "deriveExternalSystems",
|
|
"nextStepIds": []
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:src/cli.ts#<module>@0:func:src/scanner.ts#walk@27",
|
|
"order": 11,
|
|
"nodeId": "func:src/scanner.ts#walk@27",
|
|
"title": "walk",
|
|
"nextStepIds": []
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:src/cli.ts#<module>@0:func:src/analyzer.ts#relOf@64",
|
|
"order": 12,
|
|
"nodeId": "func:src/analyzer.ts#relOf@64",
|
|
"title": "relOf",
|
|
"nextStepIds": [
|
|
"step:flow:call:func:src/cli.ts#<module>@0:func:src/scanner.ts#toPosix@19"
|
|
]
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:src/cli.ts#<module>@0:func:src/scanner.ts#languageOf@52",
|
|
"order": 13,
|
|
"nodeId": "func:src/scanner.ts#languageOf@52",
|
|
"title": "languageOf",
|
|
"nextStepIds": []
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:src/cli.ts#<module>@0:func:src/analyzer.ts#walk@492",
|
|
"order": 14,
|
|
"nodeId": "func:src/analyzer.ts#walk@492",
|
|
"title": "walk",
|
|
"nextStepIds": [
|
|
"step:flow:call:func:src/cli.ts#<module>@0:func:src/analyzer.ts#resolveInternalImport@548",
|
|
"step:flow:call:func:src/cli.ts#<module>@0:func:src/analyzer.ts#addEdge@433",
|
|
"step:flow:call:func:src/cli.ts#<module>@0:func:src/analyzer.ts#getModuleFunc@462",
|
|
"step:flow:call:func:src/cli.ts#<module>@0:func:src/analyzer.ts#resolveCallTargetFuncId@440",
|
|
"step:flow:call:func:src/cli.ts#<module>@0:func:src/analyzer.ts#detectDb@358",
|
|
"step:flow:call:func:src/cli.ts#<module>@0:func:src/analyzer.ts#addInteraction@419",
|
|
"step:flow:call:func:src/cli.ts#<module>@0:func:src/analyzer.ts#detectApiOut@382",
|
|
"step:flow:call:func:src/cli.ts#<module>@0:func:src/analyzer.ts#detectApiIn@400"
|
|
]
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:src/cli.ts#<module>@0:func:src/analyzer.ts#resolveInternalImport@548",
|
|
"order": 15,
|
|
"nodeId": "func:src/analyzer.ts#resolveInternalImport@548",
|
|
"title": "resolveInternalImport",
|
|
"nextStepIds": [
|
|
"step:flow:call:func:src/cli.ts#<module>@0:func:src/scanner.ts#toPosix@19"
|
|
]
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:src/cli.ts#<module>@0:func:src/analyzer.ts#addEdge@433",
|
|
"order": 16,
|
|
"nodeId": "func:src/analyzer.ts#addEdge@433",
|
|
"title": "addEdge",
|
|
"nextStepIds": []
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:src/cli.ts#<module>@0:func:src/analyzer.ts#getModuleFunc@462",
|
|
"order": 17,
|
|
"nodeId": "func:src/analyzer.ts#getModuleFunc@462",
|
|
"title": "getModuleFunc",
|
|
"nextStepIds": [
|
|
"step:flow:call:func:src/cli.ts#<module>@0:func:src/scanner.ts#languageOf@52"
|
|
]
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:src/cli.ts#<module>@0:func:src/analyzer.ts#resolveCallTargetFuncId@440",
|
|
"order": 18,
|
|
"nodeId": "func:src/analyzer.ts#resolveCallTargetFuncId@440",
|
|
"title": "resolveCallTargetFuncId",
|
|
"nextStepIds": []
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:src/cli.ts#<module>@0:func:src/analyzer.ts#detectDb@358",
|
|
"order": 19,
|
|
"nodeId": "func:src/analyzer.ts#detectDb@358",
|
|
"title": "detectDb",
|
|
"nextStepIds": []
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:src/cli.ts#<module>@0:func:src/analyzer.ts#addInteraction@419",
|
|
"order": 20,
|
|
"nodeId": "func:src/analyzer.ts#addInteraction@419",
|
|
"title": "addInteraction",
|
|
"nextStepIds": []
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:src/cli.ts#<module>@0:func:src/analyzer.ts#detectApiOut@382",
|
|
"order": 21,
|
|
"nodeId": "func:src/analyzer.ts#detectApiOut@382",
|
|
"title": "detectApiOut",
|
|
"nextStepIds": [
|
|
"step:flow:call:func:src/cli.ts#<module>@0:func:src/analyzer.ts#extractPathArg@333",
|
|
"step:flow:call:func:src/cli.ts#<module>@0:func:src/analyzer.ts#extractMethodFromOptions@341",
|
|
"step:flow:call:func:src/cli.ts#<module>@0:func:src/analyzer.ts#hostOf@352"
|
|
]
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:src/cli.ts#<module>@0:func:src/analyzer.ts#detectApiIn@400",
|
|
"order": 22,
|
|
"nodeId": "func:src/analyzer.ts#detectApiIn@400",
|
|
"title": "detectApiIn",
|
|
"nextStepIds": [
|
|
"step:flow:call:func:src/cli.ts#<module>@0:func:src/analyzer.ts#extractPathArg@333"
|
|
]
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:src/cli.ts#<module>@0:func:src/analyzer.ts#extractPathArg@333",
|
|
"order": 23,
|
|
"nodeId": "func:src/analyzer.ts#extractPathArg@333",
|
|
"title": "extractPathArg",
|
|
"nextStepIds": []
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:src/cli.ts#<module>@0:func:src/analyzer.ts#extractMethodFromOptions@341",
|
|
"order": 24,
|
|
"nodeId": "func:src/analyzer.ts#extractMethodFromOptions@341",
|
|
"title": "extractMethodFromOptions",
|
|
"nextStepIds": []
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:src/cli.ts#<module>@0:func:src/analyzer.ts#hostOf@352",
|
|
"order": 25,
|
|
"nodeId": "func:src/analyzer.ts#hostOf@352",
|
|
"title": "hostOf",
|
|
"nextStepIds": []
|
|
}
|
|
],
|
|
"edgeIds": [
|
|
"edge:call:func:src/scanner.ts#collectSourceFiles@24=>func:src/scanner.ts#walk@27",
|
|
"edge:call:func:src/analyzer.ts#analyzeProject@32=>func:src/scanner.ts#collectSourceFiles@24",
|
|
"edge:call:func:src/analyzer.ts#relOf@64=>func:src/scanner.ts#toPosix@19",
|
|
"edge:call:func:src/analyzer.ts#registerFile@223=>func:src/analyzer.ts#relOf@64",
|
|
"edge:call:func:src/analyzer.ts#registerFile@223=>func:src/scanner.ts#languageOf@52",
|
|
"edge:call:func:src/analyzer.ts#registerFile@223=>func:src/scanner.ts#toPosix@19",
|
|
"edge:call:func:src/analyzer.ts#registerFile@223=>func:src/analyzer.ts#ensureModule@83",
|
|
"edge:call:func:src/analyzer.ts#detectApiOut@382=>func:src/analyzer.ts#extractPathArg@333",
|
|
"edge:call:func:src/analyzer.ts#detectApiOut@382=>func:src/analyzer.ts#extractMethodFromOptions@341",
|
|
"edge:call:func:src/analyzer.ts#detectApiOut@382=>func:src/analyzer.ts#hostOf@352",
|
|
"edge:call:func:src/analyzer.ts#detectApiIn@400=>func:src/analyzer.ts#extractPathArg@333",
|
|
"edge:call:func:src/analyzer.ts#getModuleFunc@462=>func:src/scanner.ts#languageOf@52",
|
|
"edge:call:func:src/analyzer.ts#analyzeRelations@487=>func:src/analyzer.ts#relOf@64",
|
|
"edge:call:func:src/analyzer.ts#walk@492=>func:src/analyzer.ts#resolveInternalImport@548",
|
|
"edge:call:func:src/analyzer.ts#walk@492=>func:src/analyzer.ts#addEdge@433",
|
|
"edge:call:func:src/analyzer.ts#walk@492=>func:src/analyzer.ts#getModuleFunc@462",
|
|
"edge:call:func:src/analyzer.ts#walk@492=>func:src/analyzer.ts#resolveCallTargetFuncId@440",
|
|
"edge:call:func:src/analyzer.ts#walk@492=>func:src/analyzer.ts#detectDb@358",
|
|
"edge:call:func:src/analyzer.ts#walk@492=>func:src/analyzer.ts#addInteraction@419",
|
|
"edge:call:func:src/analyzer.ts#walk@492=>func:src/analyzer.ts#detectApiOut@382",
|
|
"edge:call:func:src/analyzer.ts#walk@492=>func:src/analyzer.ts#detectApiIn@400",
|
|
"edge:call:func:src/analyzer.ts#analyzeRelations@487=>func:src/analyzer.ts#walk@492",
|
|
"edge:call:func:src/analyzer.ts#resolveInternalImport@548=>func:src/scanner.ts#toPosix@19",
|
|
"edge:call:func:src/analyzer.ts#analyzeProject@32=>func:src/analyzer.ts#registerFile@223",
|
|
"edge:call:func:src/analyzer.ts#analyzeProject@32=>func:src/analyzer.ts#analyzeRelations@487",
|
|
"edge:call:func:src/analyzer.ts#analyzeProject@32=>func:src/analyzer.ts#ensureModule@83",
|
|
"edge:call:func:src/analyzer.ts#analyzeProject@32=>func:src/flows.ts#generateCallFlows@16",
|
|
"edge:call:func:src/analyzer.ts#analyzeProject@32=>func:src/scanner.ts#toPosix@19",
|
|
"edge:call:func:src/analyzer.ts#analyzeProject@32=>func:src/externals.ts#deriveExternalSystems@4",
|
|
"edge:call:func:src/cli.ts#main@40=>func:src/cli.ts#parseArgs@13",
|
|
"edge:call:func:src/cli.ts#main@40=>func:src/analyzer.ts#analyzeProject@32",
|
|
"edge:call:func:src/cli.ts#<module>@0=>func:src/cli.ts#main@40"
|
|
],
|
|
"summary": "CLI 主流程:解析参数、运行分析、写出报告"
|
|
},
|
|
{
|
|
"id": "flow:call:func:src/overview-cli.ts#<module>@0",
|
|
"name": "<module> (src/overview-cli.ts)",
|
|
"flowType": "call",
|
|
"provenance": "manual",
|
|
"entryNodeId": "func:src/overview-cli.ts#<module>@0",
|
|
"steps": [
|
|
{
|
|
"id": "step:flow:call:func:src/overview-cli.ts#<module>@0:func:src/overview-cli.ts#<module>@0",
|
|
"order": 0,
|
|
"nodeId": "func:src/overview-cli.ts#<module>@0",
|
|
"title": "<module>",
|
|
"nextStepIds": [
|
|
"step:flow:call:func:src/overview-cli.ts#<module>@0:func:src/overview-cli.ts#main@9"
|
|
]
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:src/overview-cli.ts#<module>@0:func:src/overview-cli.ts#main@9",
|
|
"order": 1,
|
|
"nodeId": "func:src/overview-cli.ts#main@9",
|
|
"title": "main",
|
|
"nextStepIds": [
|
|
"step:flow:call:func:src/overview-cli.ts#<module>@0:func:src/overview.ts#deriveOverview@109",
|
|
"step:flow:call:func:src/overview-cli.ts#<module>@0:func:src/overview-cli.ts#flag@16"
|
|
]
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:src/overview-cli.ts#<module>@0:func:src/overview.ts#deriveOverview@109",
|
|
"order": 2,
|
|
"nodeId": "func:src/overview.ts#deriveOverview@109",
|
|
"title": "deriveOverview",
|
|
"nextStepIds": [
|
|
"step:flow:call:func:src/overview-cli.ts#<module>@0:func:src/overview.ts#apiInOf@79",
|
|
"step:flow:call:func:src/overview-cli.ts#<module>@0:func:src/overview.ts#analyzeEntry@140",
|
|
"step:flow:call:func:src/overview-cli.ts#<module>@0:func:src/overview.ts#groupKeyFromPath@83"
|
|
]
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:src/overview-cli.ts#<module>@0:func:src/overview-cli.ts#flag@16",
|
|
"order": 3,
|
|
"nodeId": "func:src/overview-cli.ts#flag@16",
|
|
"title": "flag",
|
|
"nextStepIds": []
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:src/overview-cli.ts#<module>@0:func:src/overview.ts#apiInOf@79",
|
|
"order": 4,
|
|
"nodeId": "func:src/overview.ts#apiInOf@79",
|
|
"title": "apiInOf",
|
|
"nextStepIds": []
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:src/overview-cli.ts#<module>@0:func:src/overview.ts#analyzeEntry@140",
|
|
"order": 5,
|
|
"nodeId": "func:src/overview.ts#analyzeEntry@140",
|
|
"title": "analyzeEntry",
|
|
"nextStepIds": [
|
|
"step:flow:call:func:src/overview-cli.ts#<module>@0:func:src/overview.ts#reachableFuncs@92"
|
|
]
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:src/overview-cli.ts#<module>@0:func:src/overview.ts#groupKeyFromPath@83",
|
|
"order": 6,
|
|
"nodeId": "func:src/overview.ts#groupKeyFromPath@83",
|
|
"title": "groupKeyFromPath",
|
|
"nextStepIds": []
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:src/overview-cli.ts#<module>@0:func:src/overview.ts#reachableFuncs@92",
|
|
"order": 7,
|
|
"nodeId": "func:src/overview.ts#reachableFuncs@92",
|
|
"title": "reachableFuncs",
|
|
"nextStepIds": []
|
|
}
|
|
],
|
|
"edgeIds": [
|
|
"edge:call:func:src/overview.ts#analyzeEntry@140=>func:src/overview.ts#reachableFuncs@92",
|
|
"edge:call:func:src/overview.ts#deriveOverview@109=>func:src/overview.ts#apiInOf@79",
|
|
"edge:call:func:src/overview.ts#deriveOverview@109=>func:src/overview.ts#analyzeEntry@140",
|
|
"edge:call:func:src/overview.ts#deriveOverview@109=>func:src/overview.ts#groupKeyFromPath@83",
|
|
"edge:call:func:src/overview-cli.ts#main@9=>func:src/overview.ts#deriveOverview@109",
|
|
"edge:call:func:src/overview-cli.ts#main@9=>func:src/overview-cli.ts#flag@16",
|
|
"edge:call:func:src/overview-cli.ts#<module>@0=>func:src/overview-cli.ts#main@9"
|
|
],
|
|
"summary": "概览 CLI 主流程:读取报告并打印项目地图"
|
|
},
|
|
{
|
|
"id": "flow:call:func:web/vite.config.ts#<module>@0",
|
|
"name": "<module> (web/vite.config.ts)",
|
|
"flowType": "call",
|
|
"provenance": "manual",
|
|
"entryNodeId": "func:web/vite.config.ts#<module>@0",
|
|
"steps": [
|
|
{
|
|
"id": "step:flow:call:func:web/vite.config.ts#<module>@0:func:web/vite.config.ts#<module>@0",
|
|
"order": 0,
|
|
"nodeId": "func:web/vite.config.ts#<module>@0",
|
|
"title": "<module>",
|
|
"nextStepIds": [
|
|
"step:flow:call:func:web/vite.config.ts#<module>@0:func:web/vite.config.ts#sourceServer@11"
|
|
]
|
|
},
|
|
{
|
|
"id": "step:flow:call:func:web/vite.config.ts#<module>@0:func:web/vite.config.ts#sourceServer@11",
|
|
"order": 1,
|
|
"nodeId": "func:web/vite.config.ts#sourceServer@11",
|
|
"title": "sourceServer",
|
|
"nextStepIds": []
|
|
}
|
|
],
|
|
"edgeIds": [
|
|
"edge:call:func:web/vite.config.ts#<module>@0=>func:web/vite.config.ts#sourceServer@11"
|
|
],
|
|
"summary": "Vite 配置与源码服务中间件初始化"
|
|
}
|
|
],
|
|
"externalSystems": []
|
|
} |