Files
apophis-fastify/package.json
T
John Dvorak d0523fcc2d fix: harden engine, enrich failure diagnostics, close adoption gaps
- P0: CLI verify now honors  test budget with seeded multi-sample
- P0: Observe sampling enforced via Math.random() gate in hook-validator
- P1: Remove misleading undici-mock-agent isolation option
- P1: Qualify reuses shared discoverRouteDetails() with warnings
- P1: Chaos/scenario config exposed via preset schema
- P1: README/docs limitations updated to current state
- P2: Nested response annotations prefer 2xx deterministically
- P2: --changed documented as heuristic in verify.md

- Add observe sink tests (sampling 0/1, sink failure non-interference)
- Add verify runs regression tests (scale, determinism, variants)
- Add configured-scenario qualify test (independent of OAuth fixture)
- Add coverageBreakdown to qualify artifacts (per-gate route coverage)
- Add production-style observe example with real sink in docs/observe.md
- Add nightly/staging vs PR gating guidance to docs/qualify.md

- Enrich VerifyFailure with formula-aware diagnostics:
  status:201 => 'HTTP 200', body field checks => actual values
- Remove stale observe CLI activation message
- Document outbound mocks as process-global in getting-started.md
- Refresh APOPHIS_ADOPTION_AUDIT.md with current state

903 tests pass, build clean, typecheck clean.
2026-05-21 20:39:36 -07:00

119 lines
3.8 KiB
JSON

{
"name": "@apophis/fastify",
"version": "2.7.0",
"description": "Contract-driven API testing plugin for Fastify with property-based testing, timeout enforcement, redirect capture, and deterministic concurrency",
"main": "dist/index.js",
"types": "dist/index.d.ts",
"type": "module",
"bin": {
"apophis": "dist/cli/index.js"
},
"exports": {
".": {
"import": "./dist/index.js",
"types": "./dist/index.d.ts"
},
"./extension/factories": {
"import": "./dist/extension/factories.js",
"types": "./dist/extension/factories.d.ts"
},
"./extensions": {
"import": "./dist/extensions/index.js",
"types": "./dist/extensions/index.d.ts"
},
"./extensions/sse": {
"import": "./dist/extensions/sse/index.js",
"types": "./dist/extensions/sse/index.d.ts"
},
"./extensions/websocket": {
"import": "./dist/extensions/websocket/index.js",
"types": "./dist/extensions/websocket/index.d.ts"
},
"./extensions/serializers": {
"import": "./dist/extensions/serializers/index.js",
"types": "./dist/extensions/serializers/index.d.ts"
},
"./extensions/*": {
"import": "./dist/extensions/*.js",
"types": "./dist/extensions/*.d.ts"
},
"./quality/*": {
"import": "./dist/quality/*.js",
"types": "./dist/quality/*.d.ts"
}
},
"files": [
"dist",
"README.md",
"LICENSE",
"docs"
],
"engines": {
"node": ">=20.18.1 <21 || >=22 <23"
},
"scripts": {
"prepare": "npm run build",
"build": "tsc -p tsconfig.build.json && chmod +x dist/cli/index.js",
"test": "npm run build && npm run test:src && npm run test:cli",
"test:src": "tsx --test src/test/*.test.ts",
"test:cli": "tsx --test src/test/cli/*.test.ts",
"test:cli:goldens": "tsx --test src/test/cli/goldens.test.ts",
"test:cli:latency": "tsx --test src/test/cli/latency.test.ts",
"test:docs": "tsx --test src/test/cli/docs-smoke.test.ts",
"benchmark": "npm run benchmark:all",
"benchmark:all": "npm run benchmark:cli && npm run benchmark:hot",
"benchmark:cli": "npm run build && node scripts/bench/cli.mjs",
"benchmark:hot": "npm run build && node scripts/bench/hot-paths.mjs",
"profile:qualify": "npm run build && mkdir -p .profiles && node --cpu-prof --cpu-prof-dir=.profiles --cpu-prof-name=qualify.cpuprofile dist/cli/index.js qualify --cwd src/cli/__fixtures__/protocol-lab --profile oauth-nightly --seed 42 --quiet",
"profile:qualify:quick": "npm run build && mkdir -p .profiles && node --cpu-prof --cpu-prof-dir=.profiles --cpu-prof-name=qualify-quick.cpuprofile dist/cli/index.js qualify --cwd src/cli/__fixtures__/protocol-lab --profile oauth-nightly --seed 42 --quiet",
"clean": "rm -rf dist",
"typecheck": "tsc --noEmit",
"lint": "tsc --noEmit",
"apophis:verify": "apophis verify --profile quick",
"apophis:doctor": "apophis doctor"
},
"keywords": [
"fastify",
"plugin",
"testing",
"contract",
"property-based",
"openapi",
"swagger",
"apophis",
"apostl",
"timeout",
"redirect",
"concurrency",
"race-condition"
],
"author": "APOPHIS Team",
"license": "MIT",
"peerDependencies": {
"@fastify/swagger": "^9.0.0",
"fastify": "^5.0.0"
},
"dependencies": {
"@clack/prompts": "^0.10.1",
"cac": "^6.7.14",
"fast-check": "^4.7.0",
"fastify-plugin": "^5.0.0",
"picocolors": "^1.0.0",
"pino": "^10.3.1",
"safe-regex": "^2.1.1",
"undici": "^7.0.0"
},
"devDependencies": {
"@fastify/swagger": "^9.7.0",
"@stryker-mutator/core": "^9.6.1",
"@types/node": "^25.6.0",
"@types/safe-regex": "^1.1.6",
"fastify": "^5.8.5",
"serverless-http": "^4.0.0",
"tsup": "^8.0.0",
"tsx": "^4.0.0",
"typescript": "^6.0.3"
}
}