@edirect/audit-exporter-http-fetch
v11.0.52
Published
HTTP exporter for the eDirect Audit system using the native Fetch API. Implements the `Exporter` interface from `@edirect/audit-domain` and sends audit events to the audit service via HTTP POST — without requiring Axios as a dependency.
Downloads
732
Maintainers
Keywords
Readme
@edirect/audit-exporter-http-fetch
HTTP exporter for the eDirect Audit system using the native Fetch API. Implements the Exporter interface from @edirect/audit-domain and sends audit events to the audit service via HTTP POST — without requiring Axios as a dependency.
Features
- Implements the
Exporterinterface (exportandbulkExport) - Uses native Fetch API — no extra HTTP client dependency
- Per-request token override support (for multi-tenant auth)
- Bearer token sanitization (accepts both
Bearer <token>and raw token) - Bulk export support for batching events
eventTimestampautomatically serialized to ISO string
Installation
pnpm add @edirect/audit-exporter-http-fetch
# or
npm install @edirect/audit-exporter-http-fetchRequires Node.js 18+ or an environment with native Fetch API support.
Usage
Standalone
import { HttpFetchExporter } from '@edirect/audit-exporter-http-fetch';
import { AuditRequest } from '@edirect/audit-domain';
const exporter = new HttpFetchExporter({
basePath: 'https://audit.internal.example.com',
accessToken: process.env.AUDIT_ACCESS_TOKEN,
});
const event: AuditRequest = {
tenant: 'th-broker',
service: 'subscription-service',
domain: 'subscription',
originType: 'HTTP',
actorType: 'CUSTOMER',
actorGroup: 'customers',
actionCategory: 'DATA_MODIFICATION_EVENT',
actionKey: 'CREATE',
targetKey: 'Subscription',
actionDetail: 'Customer created subscription',
resultKey: 'SUCCESS',
eventTimestamp: new Date(),
};
await exporter.export(event);
// Or bulk
await exporter.bulkExport([event1, event2]);With @edirect/audit-nestjs
import { AuditModule } from '@edirect/audit-nestjs';
import { HttpFetchExporter } from '@edirect/audit-exporter-http-fetch';
AuditModule.register({
exporter: request =>
new HttpFetchExporter({
basePath: 'https://audit.internal.example.com',
accessToken: request.headers.authorization,
}),
service: 'subscription-service',
domain: 'subscription',
tenant: 'th-broker',
});API
HttpFetchExporter
constructor(config: HttpFetchExporterConfig)
| Property | Type | Required | Description |
| ------------- | -------- | -------- | ------------------------------------- |
| basePath | string | Yes | Base URL of the audit service |
| accessToken | string | No | Default Bearer token for all requests |
export(data: AuditRequest, accessToken?: string): Promise<void>
Sends a single audit event. Optional accessToken overrides the constructor-level token.
bulkExport(data: AuditRequest[], accessToken?: string): Promise<void>
Sends multiple events in a single request. export() delegates to bulkExport() internally.
Choosing Between Axios and Fetch Exporters
| Feature | http-axios | http-fetch |
| ------------------- | ------------------ | ---------------- |
| HTTP client | Axios | Native Fetch |
| Node.js requirement | Any | Node.js 18+ |
| Bundle size | Larger (axios dep) | Smaller (no dep) |
| Edge/serverless | Compatible | Compatible |
| API surface | Identical | Identical |
Both implement the same Exporter interface and are interchangeable.
