@miragon/bpmn-iq-analyzer
v0.7.0
Published
Pure TypeScript BPMN 2.0 analysis library for Camunda 7 process models. **No Node-only deps** — runs in the daemon, browser bundles, and Cloudflare Workers without polyfills. Wraps `bpmn-moddle` + `camunda-bpmn-moddle` and emits a structured `ModelAnalysi
Readme
@miragon/bpmn-iq-analyzer
Pure TypeScript BPMN 2.0 analysis library for Camunda 7 process models.
No Node-only deps — runs in the daemon, browser bundles, and Cloudflare
Workers without polyfills. Wraps bpmn-moddle + camunda-bpmn-moddle and
emits a structured ModelAnalysis bundle.
Used by:
apps/server— analysis cache +/api/landscape//api/analysespackages/workspace-mcp— cross-model + landscape MCP toolspackages/engine-client—diffBpmnworkspace-vs-engine helperapps/web— type imports only (analysis runs server-side)- (future)
bpmn-vscode-modeleronce published (issue #25)
Public API
import { analyzeBpmn, analyzeCrossModel, parseBpmn } from "@miragon/bpmn-iq-analyzer";
const analysis = await analyzeBpmn({ modelId, fileName, xml });
// → { processes, elements, variables, listeners, complexity, lintIssues, … }
const cross = analyzeCrossModel(models);
// → { callActivityLinks, messageLinks, signalLinks, errorLinks }parseBpmn(xml) is exposed for callers that want the raw moddle
Definitions tree.
What it analyses
| Module | Surface |
| -------------------- | ------------------------------------------------------------------------------------------ |
| parse.ts | bpmn-moddle wrapper (handles Camunda extensions) |
| elements.ts | Processes, elements, counts |
| camunda.ts | Implementations, listeners, IO mappings, async flags, retries, form fields, variables |
| relationships.ts | Call activities, messages, signals, errors |
| complexity.ts | Cyclomatic + decision/join/depth metrics |
| lint.ts | Best-practice rules (no-process, service-task-no-implementation, async-without-retry, …) |
| cross.ts | Resolve refs across the whole landscape |
Lint rule list lives in lint.ts; for the current set see the root
README.md (or the <details> block in there).
Build
pnpm --filter @miragon/bpmn-iq-analyzer build # tsc → dist/
pnpm --filter @miragon/bpmn-iq-analyzer typecheckES modules only ("type": "module"). Outputs dist/index.js + .d.ts.
