{"_id":"@carloscortezcloud/nan-graph","_rev":"4-2b665150985f913a2c5a80054f6ba2cb","name":"@carloscortezcloud/nan-graph","dist-tags":{"latest":"0.3.0"},"versions":{"0.1.0":{"name":"@carloscortezcloud/nan-graph","version":"0.1.0","keywords":["graph","architecture","dependency","blast-radius","traversal","topology","byaml","sofe"],"author":"Carlos Cortez <carlos@finoptix.dev>","license":"Apache-2.0","_id":"@carloscortezcloud/nan-graph@0.1.0","maintainers":[{"name":"carloscortezcloud","email":"carlos@cortez.cloud"}],"dist":{"shasum":"5658b3cd1f09a56de139f48a73bde4410de9cd3c","tarball":"https://registry.npmjs.org/@carloscortezcloud/nan-graph/-/nan-graph-0.1.0.tgz","fileCount":23,"integrity":"sha512-2DiwD27ZjCAVGWJOogDQloGY0bWss+Fc/in/fyySCiyJyQjRac6a+TfWx3tbQ5p3N8WlvJndybL1yoKj+x6pGw==","signatures":[{"sig":"MEUCICKJp/zUGSjkdldkEI1zvyijPoR1SChhTxNF4nwhH4fTAiEApnnTDCjESH51qDlk0UyQRZhjtqxcpI5U6frT2tmZdz8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":45958},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc","test:watch":"vitest"},"_npmUser":{"name":"carloscortezcloud","email":"carlos@cortez.cloud"},"repository":{"url":"https://github.com/breakingthecloud/nan-graph","type":"git"},"description":"In-memory Architecture Graph engine — NanGraph, BFS/DFS traversal, blast radius, relationship filtering, cost chain. Fusion Ñan × BYaML (SOFE Architecture Graph).","directories":{},"_nodeVersion":"22.23.2","dependencies":{"yaml":"^2.5.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.0.0","typescript":"^5.5.0"},"_npmOperationalInternal":{"tmp":"tmp/nan-graph_0.1.0_1787020778232_0.656973297979097","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@carloscortezcloud/nan-graph","version":"0.1.1","keywords":["graph","architecture","dependency","blast-radius","traversal","topology","byaml","sofe"],"author":"Carlos Cortez <carlos@finoptix.dev>","license":"Apache-2.0","_id":"@carloscortezcloud/nan-graph@0.1.1","maintainers":[{"name":"carloscortezcloud","email":"carlos@cortez.cloud"}],"dist":{"shasum":"50a796bfc1293abbfd1dbccaf3ea9b65f76463af","tarball":"https://registry.npmjs.org/@carloscortezcloud/nan-graph/-/nan-graph-0.1.1.tgz","fileCount":23,"integrity":"sha512-voUO/f9OmEB2qsRjg5VDxm0xC930RDayGHmYh08dM4pfw4rEXs2C52YGEXj9oXBgb3u6MFzoLlt+c0IsQKlr+w==","signatures":[{"sig":"MEYCIQDO1933+yFjlGu2WFFiw8aeZ6+7e8MNWV9f9I/e0UiR3QIhANhJu+HbloRSxVgvT7+aNLpwI4muA+2u7en7RuDxdcEV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":46009},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc","test:watch":"vitest"},"_npmUser":{"name":"carloscortezcloud","email":"carlos@cortez.cloud"},"repository":{"url":"https://github.com/breakingthecloud/nan-graph","type":"git"},"description":"In-memory Architecture Graph engine — NanGraph, BFS/DFS traversal, blast radius, relationship filtering, cost chain. Fusion Ñan × BYaML (SOFE Architecture Graph).","directories":{},"_nodeVersion":"22.23.2","dependencies":{"yaml":"^2.5.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.0.0","typescript":"^5.5.0"},"_npmOperationalInternal":{"tmp":"tmp/nan-graph_0.1.1_1787021450068_0.8808450291228489","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@carloscortezcloud/nan-graph","version":"0.2.0","keywords":["graph","architecture","dependency","blast-radius","traversal","topology","byaml","sofe"],"author":"Carlos Cortez <carlos@finoptix.dev>","license":"Apache-2.0","_id":"@carloscortezcloud/nan-graph@0.2.0","maintainers":[{"name":"carloscortezcloud","email":"carlos@cortez.cloud"}],"dist":{"shasum":"d9e3cf1badfe9300179be9983fc745dd92b7a736","tarball":"https://registry.npmjs.org/@carloscortezcloud/nan-graph/-/nan-graph-0.2.0.tgz","fileCount":23,"integrity":"sha512-f7Xq2Nt5qvg+WBxmBWaVe4jNybOEOcpo7X6MHCmIAfK/vFRwhGJ4BEim4JNI7bzPzkvZhmE34sN68h2aDjpEjQ==","signatures":[{"sig":"MEUCIQDyshS2LB4hA88YkDJUMnJtc/toYX0PWDHWr+A7c1bz2gIgG56ZKqRMAuZvUalvR3Gk7bVH2xH0LHmuHFxu5oabmnc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":54574},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsc","test:watch":"vitest"},"_npmUser":{"name":"carloscortezcloud","email":"carlos@cortez.cloud"},"repository":{"url":"https://github.com/breakingthecloud/nan-graph","type":"git"},"description":"In-memory Architecture Graph engine — NanGraph, BFS/DFS traversal, blast radius, relationship filtering, cost chain. Fusion Ñan × BYaML (SOFE Architecture Graph).","directories":{},"_nodeVersion":"22.23.2","dependencies":{"yaml":"^2.5.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.0.0","typescript":"^5.5.0"},"_npmOperationalInternal":{"tmp":"tmp/nan-graph_0.2.0_1787263536756_0.2436678703400783","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@carloscortezcloud/nan-graph","version":"0.3.0","description":"In-memory Architecture Graph engine — NanGraph, BFS/DFS traversal, blast radius, relationship filtering, cost chain. Fusion Ñan × BYaML (SOFE Architecture Graph).","main":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"keywords":["graph","architecture","dependency","blast-radius","traversal","topology","byaml","sofe"],"author":"Carlos Cortez <carlos@finoptix.dev>","license":"Apache-2.0","repository":{"type":"git","url":"https://github.com/breakingthecloud/nan-graph"},"dependencies":{"@msgpack/msgpack":"^3.1.3","yaml":"^2.5.0"},"devDependencies":{"@types/node":"^26.2.0","typescript":"^5.5.0","vitest":"^2.0.0"},"type":"module","scripts":{"build":"tsc","test":"vitest run","test:watch":"vitest"},"_nodeVersion":"22.23.2","_id":"@carloscortezcloud/nan-graph@0.3.0","dist":{"integrity":"sha512-27RI3ZQaqXUshUHR2oa3kDy2Df5rlMbNsh3S50Z2k7GMqsE3ZVzHuQJLTAl3UeC5OiQ704nQqM/bZfug8xgIaQ==","shasum":"49141fabef2a2dd7248d0a62699a569718a2f1b8","tarball":"https://registry.npmjs.org/@carloscortezcloud/nan-graph/-/nan-graph-0.3.0.tgz","fileCount":27,"unpackedSize":70565,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIA8If+SkyLJNMC5L2/h12yq4KoN4e0w8kvdHWFR5zK2hAiBhSFWRADICbkSJwkIdMTDQTh0kwtT1ZH74y1KLTv8kHw=="}]},"_npmUser":{"name":"carloscortezcloud","email":"carlos@cortez.cloud"},"directories":{},"maintainers":[{"name":"carloscortezcloud","email":"carlos@cortez.cloud"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/nan-graph_0.3.0_1787272251260_0.7628376571922855"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-18T02:39:37.920Z","modified":"2026-08-21T00:30:51.897Z","0.1.0":"2026-08-18T02:39:38.366Z","0.1.1":"2026-08-18T02:50:50.205Z","0.2.0":"2026-08-20T22:05:36.906Z","0.3.0":"2026-08-21T00:30:51.684Z"},"author":"Carlos Cortez <carlos@finoptix.dev>","license":"Apache-2.0","keywords":["graph","architecture","dependency","blast-radius","traversal","topology","byaml","sofe"],"repository":{"type":"git","url":"https://github.com/breakingthecloud/nan-graph"},"description":"In-memory Architecture Graph engine — NanGraph, BFS/DFS traversal, blast radius, relationship filtering, cost chain. Fusion Ñan × BYaML (SOFE Architecture Graph).","maintainers":[{"name":"carloscortezcloud","email":"carlos@cortez.cloud"}],"readme":"# nan-graph\n\n> **In-memory Architecture Graph engine** — la implementación del grafo de **SOFE Architecture Graph**\n> (fusión **Ñan** × **BYaML v2**). OSS, Apache-2.0, bajo `breakingthecloud`.\n\nUn grafo dirigido en memoria con relaciones tipadas, para análisis de arquitectura:\ntraversal BFS/DFS, **blast radius**, **cost chain**, **fan-in / SPOF**, y filtrado por tipo de relación.\n\nCero infraestructura: funciona en Node.js, Cloudflare Workers, Lambda. **Zero deps** en el core\n(la importación YAML usa el paquete ligero `yaml`).\n\n## 📚 Developer Docs\n\n> Documentación completa para desarrolladores en [`docs/`](docs/index.md):\n> [Getting Started](docs/getting-started.md) · [Concepts](docs/concepts.md) ·\n> [API Reference](docs/api.md) · [Contribution](docs/contribution.md)\n\n## Install\n\n```bash\npnpm add @carloscortezcloud/nan-graph\n```\n\n## Uso\n\n```ts\nimport { NanGraph, blastRadius, costChain, fromYaml } from '@carloscortezcloud/nan-graph';\n\nconst g = new NanGraph()\n  .addNode({ id: 'api', type: 'aws.apigateway', attrs: { monthly_cost: 20 } })\n  .addNode({ id: 'lambda', type: 'aws.lambda', attrs: { monthly_cost: 5 } })\n  .addNode({ id: 'ddb', type: 'aws.dynamodb', attrs: { monthly_cost: 30 } })\n  .addEdge({ from: 'api', to: 'lambda', relType: 'routes_to' })\n  .addEdge({ from: 'lambda', to: 'ddb', relType: 'reads_writes' });\n\nblastRadius(g, 'api');   // ['lambda', 'ddb']  — qué se cae si api falla\ncostChain(g, 'api');     // 55 — costo downstream total\n```\n\n### Importar desde YAML / JSON\n\n```ts\nimport { fromYaml } from '@carloscortezcloud/nan-graph';\n\n// estilo dependency-graph.yaml\nconst g = fromYaml(`\nnodes:\n  sofe-engine: { type: python-library }\n  sofe-server: { type: python-api }\nedges:\n  - { from: sofe-engine, to: sofe-server, relType: bundles }\n`);\n\n// estilo BYaML v0.3 (components + relationships)\nconst g2 = fromObject({\n  components: [{ id: 'api', type: 'aws.apigateway', monthly_cost: 20 }],\n  relationships: [{ from: 'api', to: 'lambda', type: 'routes_to' }],\n});\n```\n\n## API\n\n| Función | Descripción |\n|---------|-------------|\n| `new NanGraph()` | Grafo dirigido multi-borde en memoria |\n| `g.addNode(node)` / `g.addEdge(edge)` | Añadir nodo/arista (auto-crea nodos) |\n| `g.getRelated(id, relType?, direction?)` | Vecinos outgoing/incoming/both, con filtro |\n| `traverseBFS(g, start, opts)` | Nodos alcanzables (BFS), con `relTypes`/`maxDepth`/`direction` |\n| `traverseDFS(g, start, opts)` | Nodos alcanzables (DFS) |\n| `blastRadius(g, start)` | Nodos afectados downstream si `start` falla |\n| `costChain(g, start)` | Suma `attrs.monthly_cost` de `start` + downstream |\n| `teamCost(g, owner)` | Suma de costo por `attrs.owner` |\n| `fanIn(g, id)` / `singlePointsOfFailure(g, threshold)` | SPOF por alta dependencia entrante |\n| `fromObject(obj)` / `fromYaml(str)` / `fromJson(str)` | Construir grafo desde input |\n\n## Modelo (fusión con SOFE Architecture Graph)\n\n- **Nodo** = unidad desplegable / recurso / servicio / documento (`id`, `type`, `label`, `attrs`).\n- **Arista** = relación dirigida tipada (`from`, `to`, `relType`).\n- Derivado de SOFE `engine/architecture.py` (blast_radius, cost_chain, fan_in, spof)\n  + cc-mng `graph/data.ts` (GraphNode/GraphEdge) + `dependency-graph.yaml` como formato de input.\n\n## Sync a PyPI\n\nEl port en Python (`nan-graph` en PyPI) se sincroniza desde este core TS — mismo patrón\nque `styrr` → `styrr-py`. Ver SoW `nan-001`.\n\n## Licencia\n\nApache-2.0. Ver [`LICENSE`](LICENSE).\n","readmeFilename":""}