Demo Scenarios
The repo ships 21 integration scenarios with a local mock REST/GraphQL/SOAP server and demo-only SQLite seeds (@vaagatech/snapline-demo-shared). Use them as runnable reference implementations.
Run commands
npm install
npm run demo # build + run all 21
npm run demo:list # list ids and infra needs
npm run demo:run -- api-vs-file-graphql
npm run demo:run -- --build snapline-transformations
Infra is auto-wired by demo/scripts/run-scenario.mjs:
needsServer→ starts mock API, setsAPI_BASE_URL, OAuth credentialsneedsDatabase→ seeds temp SQLite via demo-shared, setsAPP_DATABASE_URL, etc.
All 21 scenarios
| # | ID | Mode | Highlights |
|---|---|---|---|
| 1 | snapline-ignore-fields | API ↔ file | Nested ignoreFields |
| 2 | snapline-transformations | Fixture cases | Offline pass + expected transformation failures |
| 3 | snapline-data-mapping-lookup | Fixture cases | Lookup-table dataMapping |
| 4 | db-vs-db-sqlite | DB ↔ DB | Multi-table JOIN, linkKeys |
| 5 | db-vs-db-cross-dialect | DB ↔ DB | Postgres vs MySQL via demo seedDb |
| 6 | nosql-vs-nosql | NoSQL | Document stores + linkKeys |
| 7 | snapline-data-mapping-function | Fixture + DB | Function mapper cases + live DB |
| 8 | db-comparison-transformations | DB ↔ DB | Date normalization on audit tables |
| 9 | snapline-combined-options | API ↔ DB | All snapline options combined |
| 10 | api-vs-file-rest | API ↔ file | OAuth2 REST single fixture |
| 11 | api-vs-file-rest-cases | Fixture cases | OAuth2 REST multi-case |
| 12 | api-vs-file-graphql | Fixture cases | 7 GraphQL cases incl. auth failure |
| 13 | api-vs-file-soap | API ↔ file | SOAP vs JSON |
| 14 | api-vs-db-rest | API ↔ DB | REST profile vs demo SQLite JOIN |
| 15 | api-vs-db-graphql | API ↔ DB | OAuth2 GraphQL vs demo SQLite |
| 16 | api-vs-db-soap | API ↔ DB | SOAP vs demo SQLite JOIN |
| 17 | db-vs-api-rest | DB ↔ API | inputFromDb REST |
| 18 | db-vs-api-graphql | DB ↔ API | OAuth2 GraphQL from DB row |
| 19 | db-vs-api-soap | DB ↔ API | SOAP from DB row |
| 20 | project-graphql | Fixture cases | Sample GraphQL app (Auth0/Okta swap docs) |
| 21 | project-db | Warehouse | Chunked SQL→NoSQL via runWarehouseComparison |
Scenario folder structure
Each scenario is a standalone package you can copy into your project:
demo/scenarios/api-vs-file-graphql/
├── fixtures/cases/...
├── src/
│ ├── run.ts # entry point
│ ├── env.ts # env vars + report finalization
│ ├── auth.ts # OAuth from env
│ ├── demo-data.ts # transforms / mappings
│ └── db.ts # demo DB from @vaagatech/snapline-demo-shared (when needed)
└── package.json # @vaagatech/snapline-core (+ demo-shared for DB scenarios)
Published @vaagatech/snapline-core has zero external runtime dependencies and does not ship SQL drivers. Demos use @vaagatech/snapline-demo-shared for SQLite and in-memory stubs only.
Run against your own API
cp demo/scenarios/api-vs-file-graphql/.env.example demo/scenarios/api-vs-file-graphql/.env
# edit API_BASE_URL, CLIENT_ID, CLIENT_SECRET
npm run start --workspace=@vaagatech/snapline-demo-scenario-api-vs-file-graphql
HTML reports from demo
REPORT_FORMAT=html REPORT_OUTPUT=./reports/demo.html npm run demo
npm run start:report:html --workspace=@vaagatech/snapline-demo-run-all