@beignet/core
Version:
Core framework primitives for Beignet
136 lines • 6.24 kB
JavaScript
/**
* @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