All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- ESLint configuration with
@typescript-eslint/recommended - Lint step in CI/CD pipeline (ci.yml and release.yml)
- Test coverage for retry-after header parsing (HTTP-date, invalid, past date)
- Test coverage for rate limit header parsing (valid, NaN, missing reset)
- Test coverage for Markdown qualitative sections (outOfCourtSettlements, other)
- Test coverage for interceptor chain ordering and error propagation
- Complete documentation: API reference, architecture guide, examples, error handling (
docs/) - This changelog
- Version bump to 1.0.0 — stable public API
- Transparency report generator (
TransparencyReportGenerator,createReportGenerator) TransparencyDataProviderinterface for platform data integrationDsaTierenum:INTERMEDIARY,PLATFORM,VLOP- Tier-aware report generation (only includes parts applicable to platform tier)
- Report formatters:
toCSV()(11 parts per EU template),toJSON(),toMarkdown() - Report types:
ReportingPeriod,TransparencyReport,ReportIdentification - Data types for all 10 quantitative parts + qualitative section
- Subpath export
eu-dsa/reports
- Notice-and-action engine per DSA Art. 16
NoticeStateMachinewith 9 states and configurable transitionscreateNotice()factory function- Deadline calculator (
calculateDeadline,getNoticeDeadlines,getDeadlineAlerts) - NetzDG 24h/7d and DSA acknowledgment deadline support
- Trusted flagger integration per DSA Art. 22
calculatePriority()with configurable multiplierevaluateFlaggerStatus()with accuracy thresholdapplyCommunityBonus()for multiple-reporter risk scoring
- Appeal/complaint handler per DSA Art. 20
AppealWorkflowstate machine (5 states)- 6-month filing window enforcement
- Different-reviewer rule (Art. 20(4))
isAppealWindowOpen(),getAppealWindowStatus(),calculateAppealWindowEnd()
- Typed event emitter (
createDsaEventEmitter) with 21 lifecycle events - Storage adapter interface (
StorageAdapter) with 3 sub-interfacesnotices(8 methods),appeals(8 methods),queue(5 methods)createInMemoryStorage()implementation for testing
- Offline queue (
InMemoryQueue) withsubmitOrQueue()andflushQueue() - Subpath exports:
eu-dsa/notice,eu-dsa/appeals,eu-dsa/events,eu-dsa/storage
- Initial release
- Core Zod schemas for EU Transparency Database API
sorSubmissionSchemawith 5 conditional validation rules- 160+ EU-standard enum values across 12 enum types
SorSubmission,SorSubmissionResponse,SorBatchResponsetypes
TransparencyDatabaseClient— typed HTTP clientsubmitStatement(),submitStatements()(auto-chunks >100)checkPuid(),getStatement(),ping()- Rate limit tracking with
getRateLimitInfo()
- Request/response interceptors for audit logging
- Retry with exponential backoff and jitter (
withRetry,RetryConfig) SoRBuilder— fluent builder with 30+ chainable methods- PUID generation:
deterministicPuid,randomPuid,hashedPuid,timestampPuid - PUID validation:
isValidPuid - GDPR pseudonymization:
pseudonymizeUserId,pseudonymizeText,stripIpAddresses,stripEmails,stripMentions,sanitizeForSubmission createPlatformMapperfor bridging platform categories to EU taxonomy- Error class hierarchy:
DsaToolkitError,DsaValidationError,DsaNetworkError,DsaApiError,DsaAuthError,DsaPuidConflictError,DsaRateLimitError,DsaBatchError - Subpath exports:
eu-dsa/schemas,eu-dsa/api,eu-dsa/sor