UNPKG

@beignet/core

Version:

Core framework primitives for Beignet

136 lines 6.24 kB
/** * @beignet/core/ports * * A tiny, framework-agnostic subpath that standardizes how apps define and * type their "ports" (outbound dependencies like db, cache, event bus). * * This subpath provides: * - `definePorts` – helper to define a typed ports object * - `PortsContext` – a generic type that describes ctx objects that carry ports * - `EventBusPort` – interface for event bus implementations * - `JobDispatcherPort` – interface for job dispatch implementations * - `UnitOfWorkPort` – interface for app-owned transaction boundaries * - `OutboxPort` – interface for durable event/job delivery storage * - `IdempotencyPort` – interface for retry-safe command/key storage * - `AuthPort` – interface for request authentication implementations * - `AuditLogPort` – interface for audit/activity log implementations * - `ClockPort` – interface for deterministic time * - `EntitlementsPort` – interface for product access checks * - `IdGeneratorPort` – interface for deterministic id generation * - `LoggerPort` – interface for structured application logging * - `GatePort` – interface for application authorization policies * - `RateLimitPort` – interface for rate limiting implementations * - `CachePort` – interface for cache implementations * - `StoragePort` – interface for object/file storage implementations * - `FlagsPort` – interface for feature flag evaluation implementations * - `ErrorReporterPort` – interface for production error reporting * - `LocksPort` – interface for lease-backed distributed locks * * Dedicated framework areas own their capability-specific APIs: * - `@beignet/core/entitlements` owns product access helpers and test adapters * - `@beignet/core/error-reporting` owns error reporting helpers and test adapters * - `@beignet/core/flags` owns feature flag helpers and test adapters * - `@beignet/core/idempotency` owns idempotency helpers and test adapters * - `@beignet/core/locks` owns lease-backed lock helpers and test adapters * - `@beignet/core/mail` owns `MailerPort` and mail test adapters * - `@beignet/core/notifications` owns notification helpers and test adapters * - `@beignet/core/outbox` owns durable outbox helpers and test adapters * - `@beignet/core/payments` owns `PaymentsPort` and payment test adapters * - `@beignet/core/schedules` owns schedule definitions and runners * - `@beignet/core/webhooks` owns inbound webhook definitions and verifiers */ import { createUnboundPort } from "./unbound.js"; export function definePorts(ports) { if (ports !== undefined) { return ports; } return (definition) => { const result = { ...definition.bound }; for (const key of definition.deferred) { result[key] = createUnboundPort(key); } return result; }; } /** * Entitlement helper exports. */ export { allowEntitlement, createEntitlements, createStaticEntitlements, denyEntitlement, EntitlementRequiredError, requireEntitlement, } from "../entitlements/index.js"; /** * Error reporting helper exports. */ export { createMemoryErrorReporter, createNoopErrorReporter, reportException, reportMessage, } from "../error-reporting/index.js"; /** * Feature flag helper exports. */ export { createMemoryFlags, createStaticFlags, defineFlag, defineFlags, evaluateFlag, getFlagDetails, } from "../flags/index.js"; /** * Lease-backed lock helper exports. */ export { acquireLease, createMemoryLocks, createMemoryLocksProvider, LeaseOptionsError, withLease, } from "../locks/index.js"; /** * Payments helper exports. */ export { createMemoryPayments, createMemoryPaymentsProvider, PaymentProviderError, } from "../payments/index.js"; /** * Search helper exports. */ export { createMemorySearch, createMemorySearchProvider, defineSearchIndex, indexSearchDocuments, SearchOptionsError, searchDocuments, } from "../search/index.js"; export { createTenantScope, requireTenantScope, tenantScopeId, } from "../tenancy/index.js"; /** * Webhook helper exports. */ export { createHmacWebhookVerifier, createMemoryWebhookVerifier, defineWebhook, parseWebhookEvent, verifyWebhook, WebhookOptionsError, WebhookValidationError, WebhookVerificationError, } from "../webhooks/index.js"; /** * Audit log helper exports. */ export { createAnonymousActor, createInstrumentedAuditLog, createMemoryAuditLog, createRedactedAuditLog, createServiceActor, createSystemActor, createTenant, createUserActor, normalizeAuditLogEntry, redactAuditLogEntry, } from "./audit.js"; /** * Auth helper exports. */ export { AuthUnauthorizedError, createAnonymousAuth, createStaticAuth, requireSession, requireTenant, requireTenantId, requireUser, requireUserId, TenantRequiredError, } from "./auth.js"; /** * Ports builder exports. */ export { createPortsBuilder, } from "./builder.js"; /** * Cache helper exports. */ export { createMemoryCache } from "./cache.js"; /** * Clock helper exports. */ export { createFrozenClock, createSystemClock } from "./clock.js"; /** * ID generator helper exports. */ export { createSequenceIdGenerator, createUuidIdGenerator, } from "./id-generator.js"; /** * Logger helper exports. */ export { createMemoryLogger, createNoopLogger } from "./logger.js"; /** * Policy and authorization gate helper exports. */ export { allow, createGate, definePolicy, deny, GateAuthorizationError, } from "./policy.js"; /** * Rate limit helper exports. */ export { createMemoryRateLimiter } from "./rate-limit.js"; /** * Redaction helper exports. */ export { createRedactor, DEFAULT_CIRCULAR_VALUE, DEFAULT_REDACTED_VALUE, DEFAULT_SENSITIVE_KEY_TERMS, DEFAULT_SENSITIVE_KEYS, DEFAULT_TRUNCATED_VALUE, isSensitiveKey, redactHeaders, redactValue, } from "./redaction.js"; /** * Storage helper exports. */ export { assertValidStorageKey, createMemoryStorage, createStoragePublicUrl, normalizeStorageKeyPrefix, prefixStorageKey, } from "./storage.js"; /** * Unbound (deferred) port helper exports. */ export { createUnboundPort, isUnboundPort } from "./unbound.js"; /** * Unit of Work port exports. */ export { createDomainEventRecorder, createNoopUnitOfWork, createObservedUnitOfWork, } from "./unit-of-work.js"; //# sourceMappingURL=index.js.map