npm run build # Compile TypeScript to dist/src/
npm run typecheck # TypeScript check (no emit)
npm start # Run server (requires .env with all required vars)
npm run dev # build + start
npm test # Watch mode (vitest)
npm run test:run # Single runWEBID- Solid WebIDISSUER- OIDC issuerWHITELISTED_ISSUERS- Comma-separated issuers; enforced insolidAuth.ts(403 if tokenissnot in list)WEBHOOK_CONFIG_URL- URL to load RDF webhook config fromHANDLER_BASE_URL- Base URL for handler namespace (e.g.,https://example.com/handlers#)
TypeScript compiles to dist/src/ (not dist/). The entry point is dist/src/main.js.
Tests live alongside source in tests/ directory, mirroring src/ structure. Run npm test for watch mode, npm run test:run for CI.
src/main.ts- CLI entry point, startup sequence: createApp → startServer → createSolidFetch → fetch config → subscribesrc/index.ts- Server utilities: createApp, startServer, subscribeAll, unsubscribeAllsrc/config.ts-loadConfig()reads all env vars,parseWebhooksFromRDF()parses Turtle RDFsrc/middleware/solidAuth.ts- DPoP auth middleware; enforces whitelistedIssuers (403 if tokenissnot in list)src/services/webhookChannel.ts- WebhookChannel2023 subscribe/unsubscribe
- Mock
@soid/koato avoid real network calls in tests - n3
Parser.parse()returns array synchronously, but callback mode is used forStore.addQuad() - Config tests use
vi.resetModules()to reload env vars between tests