Files
daily-notification-plugin/packages/polling-contracts/package.json
Matthew Raymer a5831b3c9f feat(polling-contracts): add generic polling interface with TypeScript types and Zod schemas
- Add @timesafari/polling-contracts package with comprehensive type definitions
- Implement GenericPollingRequest, PollingResult, and PollingScheduleConfig interfaces
- Add Zod schemas for StarredProjectsRequest/Response and DeepLinkParams validation
- Include calculateBackoffDelay utility with unified retry policy (exponential, linear, fixed)
- Add OutboxPressureManager for storage pressure controls and back-pressure signals
- Implement TelemetryManager with cardinality budgets and PII redaction
- Add ClockSyncManager for JWT timestamp validation and skew tolerance
- Include comprehensive unit tests with Jest snapshots and race condition testing
- Add JWT_ID_PATTERN regex for canonical JWT ID format validation
- Support idempotency with X-Idempotency-Key enforcement
- Implement watermark CAS (Compare-and-Swap) for race condition prevention

This establishes the foundation for the new generic polling system where host apps
define request/response schemas and the plugin provides robust polling logic.
2025-10-07 04:44:01 +00:00

30 lines
734 B
JSON

{
"name": "@timesafari/polling-contracts",
"version": "1.0.0",
"description": "TypeScript contracts and Zod schemas for TimeSafari polling system",
"main": "dist/index.js",
"types": "dist/index.d.ts",
"scripts": {
"build": "tsc",
"test": "jest",
"test:snapshots": "jest --updateSnapshot",
"lint": "eslint src --ext .ts",
"lint-fix": "eslint src --ext .ts --fix"
},
"dependencies": {
"zod": "^3.22.4"
},
"devDependencies": {
"@types/jest": "^29.5.5",
"@typescript-eslint/eslint-plugin": "^5.57.0",
"@typescript-eslint/parser": "^5.57.0",
"eslint": "^8.37.0",
"jest": "^29.7.0",
"ts-jest": "^29.1.0",
"typescript": "^5.2.2"
},
"files": [
"dist/**/*"
]
}