{ "schema": "stella.callgraph.v1", "scanKey": "scan:express-api:2.1.0", "language": "Node", "artifacts": [ { "artifactKey": "express-api", "kind": "npm-package", "sha256": "c4d5e6f7890123456789abcdef0123456789abcdef0123456789abcdef012345", "purl": "pkg:npm/express-api@2.1.0", "filePath": "/app", "sizeBytes": 2500000 } ], "nodes": [ { "id": "e001", "nodeId": "e001", "name": "startServer", "kind": "function", "namespace": "src", "file": "index.js", "line": 15, "symbolKey": "src/index.js::startServer", "artifactKey": "express-api", "visibility": "Public", "isEntrypointCandidate": true, "flags": 1 }, { "id": "e002", "nodeId": "e002", "name": "getUserById", "kind": "function", "namespace": "src/routes", "file": "users.js", "line": 22, "symbolKey": "src/routes/users.js::getUserById", "artifactKey": "express-api", "visibility": "Public", "isEntrypointCandidate": true, "attributes": { "httpMethod": "GET", "route": "/api/users/:id" }, "flags": 3 }, { "id": "e003", "nodeId": "e003", "name": "findUser", "kind": "function", "namespace": "src/services", "file": "userService.js", "line": 45, "symbolKey": "src/services/userService.js::findUser", "artifactKey": "express-api", "visibility": "Public", "isEntrypointCandidate": false, "flags": 0 }, { "id": "e004", "nodeId": "e004", "name": "query", "kind": "function", "namespace": "src/db", "file": "connection.js", "line": 30, "symbolKey": "src/db/connection.js::query", "artifactKey": "express-api", "visibility": "Public", "isEntrypointCandidate": false, "flags": 0 } ], "edges": [ { "sourceId": "e001", "targetId": "e002", "from": "e001", "to": "e002", "type": "require", "kind": "Static", "reason": "DynamicImport", "weight": 0.95, "isResolved": true, "provenance": "express-router" }, { "sourceId": "e002", "targetId": "e003", "from": "e002", "to": "e003", "type": "call", "kind": "Static", "reason": "DirectCall", "weight": 1.0, "isResolved": true }, { "sourceId": "e003", "targetId": "e004", "from": "e003", "to": "e004", "type": "async-call", "kind": "Static", "reason": "AsyncContinuation", "weight": 1.0, "isResolved": true } ], "entrypoints": [ { "nodeId": "e001", "kind": "Main", "framework": "Express", "source": "convention", "phase": "AppStart", "order": 0 }, { "nodeId": "e002", "kind": "Http", "route": "/api/users/:id", "httpMethod": "GET", "framework": "Express", "source": "code-analysis", "phase": "Runtime", "order": 1 } ], "metadata": { "toolId": "stellaops.scanner.node", "toolVersion": "1.0.0", "analysisTimestamp": "2025-01-15T12:00:00Z", "sourceCommit": "789abc012def", "buildId": "build-003" }, "id": "cg-node-express-api-001", "languageString": "javascript", "component": "express-api", "version": "2.1.0", "ingestedAt": "2025-01-15T12:00:00Z", "graphHash": "sha256:c3d4e5f6a7b8" }