UNPKG

@beignet/core

Version:

Core framework primitives for Beignet

84 lines 3.67 kB
import type { EventPayloadDef, ListenerDef } from "../events/index.js"; import type { JobDef } from "../jobs/index.js"; import type { OutboxRegistry } from "../outbox/index.js"; import type { ScheduleDef } from "../schedules/index.js"; import type { TaskDef } from "../tasks/index.js"; export type RuntimeIntegrityArtifact = "listener" | "schedule" | "task" | "outboxEvent" | "outboxJob"; export type RuntimeIntegrityFindingCode = "missing_listener_registration" | "missing_schedule_registration" | "missing_task_registration" | "missing_outbox_event_registration" | "missing_outbox_job_registration" | "duplicate_runtime_manifest_entry" | "duplicate_runtime_registry_entry"; export type RuntimeIntegrityFindingLocation = "manifest" | "registry"; export interface RuntimeIntegrityFinding { readonly code: RuntimeIntegrityFindingCode; readonly artifact: RuntimeIntegrityArtifact; readonly name: string; readonly message: string; readonly location?: RuntimeIntegrityFindingLocation; } export interface RuntimeIntegrityResult { readonly ok: boolean; readonly findings: readonly RuntimeIntegrityFinding[]; } export interface RuntimeOutboxManifest { readonly events?: readonly EventPayloadDef[]; readonly jobs?: readonly JobDef[]; } export interface RuntimeManifestInput { readonly listeners?: readonly ListenerDef[]; readonly schedules?: readonly ScheduleDef[]; readonly tasks?: readonly TaskDef[]; readonly outbox?: RuntimeOutboxManifest; } export interface RuntimeManifest { readonly listeners: readonly ListenerDef[]; readonly schedules: readonly ScheduleDef[]; readonly tasks: readonly TaskDef[]; readonly outbox: { readonly events: readonly EventPayloadDef[]; readonly jobs: readonly JobDef[]; }; } export interface RuntimeRegistriesInput { readonly listeners?: readonly ListenerDef[]; readonly schedules?: readonly ScheduleDef[]; readonly tasks?: readonly TaskDef[]; readonly outbox?: OutboxRegistry; } export interface RuntimeRegistries { readonly listeners: readonly ListenerDef[]; readonly schedules: readonly ScheduleDef[]; readonly tasks: readonly TaskDef[]; readonly outbox?: OutboxRegistry; } export type RuntimeIntegrityMode = "error" | "warn"; export interface RuntimeIntegrityLogger { warn(message: string): void; } export interface CreateRuntimeIntegrityOptions { readonly manifest: RuntimeManifest; readonly registries: RuntimeRegistries; /** * How to handle integrity findings. * * @default "error" */ readonly mode?: RuntimeIntegrityMode; /** * Logger used when `mode` is `"warn"`. * * @default console */ readonly logger?: RuntimeIntegrityLogger; } export interface RuntimeIntegrityCheck { readonly kind: "runtime-integrity"; check(): RuntimeIntegrityResult; } export declare class RuntimeIntegrityError extends Error { readonly findings: readonly RuntimeIntegrityFinding[]; constructor(findings: readonly RuntimeIntegrityFinding[]); } export declare function defineRuntimeManifest(input: RuntimeManifestInput): RuntimeManifest; export declare function defineRuntimeRegistries(input: RuntimeRegistriesInput): RuntimeRegistries; export declare function inspectRuntimeIntegrity(manifest: RuntimeManifest, registries: RuntimeRegistries): RuntimeIntegrityResult; export declare function createRuntimeIntegrity(options: CreateRuntimeIntegrityOptions): RuntimeIntegrityCheck; export declare function runRuntimeIntegrityCheck(check: RuntimeIntegrityCheck | undefined): RuntimeIntegrityResult | undefined; //# sourceMappingURL=runtime-integrity.d.ts.map