abxbus 2.4.32 → 2.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/README.md +74 -51
  2. package/dist/cjs/BaseEvent.d.ts +46 -55
  3. package/dist/cjs/BaseEvent.js +350 -169
  4. package/dist/cjs/BaseEvent.js.map +3 -3
  5. package/dist/cjs/EventBus.d.ts +8 -1
  6. package/dist/cjs/EventBus.js +153 -85
  7. package/dist/cjs/EventBus.js.map +2 -2
  8. package/dist/cjs/EventHandler.d.ts +3 -3
  9. package/dist/cjs/EventHandler.js.map +1 -1
  10. package/dist/cjs/EventResult.js +16 -22
  11. package/dist/cjs/EventResult.js.map +2 -2
  12. package/dist/cjs/LockManager.d.ts +1 -0
  13. package/dist/cjs/LockManager.js +4 -1
  14. package/dist/cjs/LockManager.js.map +2 -2
  15. package/dist/cjs/events_suck.js +1 -1
  16. package/dist/cjs/events_suck.js.map +2 -2
  17. package/dist/cjs/index.d.ts +1 -0
  18. package/dist/cjs/index.js.map +2 -2
  19. package/dist/cjs/timing.js +1 -1
  20. package/dist/cjs/timing.js.map +2 -2
  21. package/dist/esm/BaseEvent.js +351 -170
  22. package/dist/esm/BaseEvent.js.map +3 -3
  23. package/dist/esm/EventBus.js +153 -85
  24. package/dist/esm/EventBus.js.map +2 -2
  25. package/dist/esm/EventHandler.js.map +1 -1
  26. package/dist/esm/EventResult.js +16 -22
  27. package/dist/esm/EventResult.js.map +2 -2
  28. package/dist/esm/LockManager.js +4 -1
  29. package/dist/esm/LockManager.js.map +2 -2
  30. package/dist/esm/events_suck.js +1 -1
  31. package/dist/esm/events_suck.js.map +2 -2
  32. package/dist/esm/index.js.map +2 -2
  33. package/dist/esm/timing.js +1 -1
  34. package/dist/esm/timing.js.map +2 -2
  35. package/dist/types/BaseEvent.d.ts +46 -55
  36. package/dist/types/EventBus.d.ts +8 -1
  37. package/dist/types/EventHandler.d.ts +3 -3
  38. package/dist/types/LockManager.d.ts +1 -0
  39. package/dist/types/index.d.ts +1 -0
  40. package/package.json +4 -3
  41. package/src/BaseEvent.ts +456 -219
  42. package/src/EventBus.ts +186 -99
  43. package/src/EventHandler.ts +3 -3
  44. package/src/EventResult.ts +18 -22
  45. package/src/LockManager.ts +5 -1
  46. package/src/events_suck.ts +1 -1
  47. package/src/index.ts +1 -0
  48. package/src/timing.ts +1 -1
  49. package/dist/cjs/base_event.d.ts +0 -211
  50. package/dist/cjs/bridge_jsonl.d.ts +0 -26
  51. package/dist/cjs/bridge_nats.d.ts +0 -20
  52. package/dist/cjs/bridge_postgres.d.ts +0 -31
  53. package/dist/cjs/bridge_redis.d.ts +0 -34
  54. package/dist/cjs/bridge_sqlite.d.ts +0 -30
  55. package/dist/cjs/event_bus.d.ts +0 -125
  56. package/dist/cjs/event_handler.d.ts +0 -139
  57. package/dist/cjs/event_history.d.ts +0 -45
  58. package/dist/cjs/event_result.d.ts +0 -86
  59. package/dist/cjs/lock_manager.d.ts +0 -70
  60. package/dist/types/base_event.d.ts +0 -211
  61. package/dist/types/bridge_jsonl.d.ts +0 -26
  62. package/dist/types/bridge_nats.d.ts +0 -20
  63. package/dist/types/bridge_postgres.d.ts +0 -31
  64. package/dist/types/bridge_redis.d.ts +0 -34
  65. package/dist/types/bridge_sqlite.d.ts +0 -30
  66. package/dist/types/event_bus.d.ts +0 -125
  67. package/dist/types/event_handler.d.ts +0 -139
  68. package/dist/types/event_history.d.ts +0 -45
  69. package/dist/types/event_result.d.ts +0 -86
  70. package/dist/types/lock_manager.d.ts +0 -70
@@ -1,139 +0,0 @@
1
- import { z } from 'zod';
2
- import { type EventHandlerCallable, type EventPattern } from './types.js';
3
- import { BaseEvent } from './base_event.js';
4
- import type { EventResult } from './event_result.js';
5
- export type EphemeralFindEventHandler = {
6
- event_pattern: string | '*';
7
- matches: (event: BaseEvent) => boolean;
8
- resolve: (event: BaseEvent) => void;
9
- timeout_id?: ReturnType<typeof setTimeout>;
10
- };
11
- export declare const FindWaiterJSONSchema: z.ZodObject<{
12
- event_pattern: z.ZodUnion<readonly [z.ZodString, z.ZodLiteral<"*">]>;
13
- has_timeout: z.ZodBoolean;
14
- }, z.core.$strict>;
15
- export type FindWaiterJSON = z.infer<typeof FindWaiterJSONSchema>;
16
- export declare class FindWaiter {
17
- static toJSON(waiter: EphemeralFindEventHandler): FindWaiterJSON;
18
- static fromJSON(data: unknown, overrides?: {
19
- matches?: (event: BaseEvent) => boolean;
20
- resolve?: (event: BaseEvent) => void;
21
- }): EphemeralFindEventHandler;
22
- static toJSONArray(waiters: Iterable<EphemeralFindEventHandler>): FindWaiterJSON[];
23
- static fromJSONArray(data: unknown, overrides?: {
24
- matches?: (event: BaseEvent) => boolean;
25
- resolve?: (event: BaseEvent) => void;
26
- }): EphemeralFindEventHandler[];
27
- }
28
- export declare const EventHandlerJSONSchema: z.ZodObject<{
29
- id: z.ZodString;
30
- eventbus_name: z.ZodString;
31
- eventbus_id: z.ZodString;
32
- event_pattern: z.ZodUnion<readonly [z.ZodString, z.ZodLiteral<"*">]>;
33
- handler_name: z.ZodString;
34
- handler_file_path: z.ZodOptional<z.ZodNullable<z.ZodString>>;
35
- handler_timeout: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
36
- handler_slow_timeout: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
37
- handler_registered_at: z.ZodString;
38
- }, z.core.$strict>;
39
- export type EventHandlerJSON = z.infer<typeof EventHandlerJSONSchema>;
40
- export declare class EventHandler {
41
- id: string;
42
- handler: EventHandlerCallable;
43
- handler_name: string;
44
- handler_file_path: string | null;
45
- handler_timeout?: number | null;
46
- handler_slow_timeout?: number | null;
47
- handler_registered_at: string;
48
- event_pattern: string | '*';
49
- eventbus_name: string;
50
- eventbus_id: string;
51
- constructor(params: {
52
- id?: string;
53
- handler: EventHandlerCallable;
54
- handler_name: string;
55
- handler_file_path?: string | null;
56
- handler_timeout?: number | null;
57
- handler_slow_timeout?: number | null;
58
- handler_registered_at: string;
59
- event_pattern: string | '*';
60
- eventbus_name: string;
61
- eventbus_id: string;
62
- });
63
- get _handler_async(): EventHandlerCallable;
64
- static computeHandlerId(params: {
65
- eventbus_id: string;
66
- handler_name: string;
67
- handler_file_path?: string | null;
68
- handler_registered_at: string;
69
- event_pattern: string | '*';
70
- }): string;
71
- static fromCallable<TEvent extends BaseEvent = BaseEvent>(params: {
72
- handler: EventHandlerCallable<TEvent>;
73
- event_pattern: EventPattern | '*';
74
- eventbus_name: string;
75
- eventbus_id: string;
76
- detect_handler_file_path?: boolean;
77
- id?: string;
78
- handler_file_path?: string | null;
79
- handler_timeout?: number | null;
80
- handler_slow_timeout?: number | null;
81
- handler_registered_at?: string;
82
- }): EventHandler;
83
- toString(): string;
84
- _detectHandlerFilePath(): void;
85
- toJSON(): EventHandlerJSON;
86
- static fromJSON(data: unknown, handler?: EventHandlerCallable): EventHandler;
87
- static toJSONArray(handlers: Iterable<EventHandler>): EventHandlerJSON[];
88
- static fromJSONArray(data: unknown, handler?: EventHandlerCallable): EventHandler[];
89
- get eventbus_label(): string;
90
- }
91
- export declare class TimeoutError extends Error {
92
- constructor(message: string);
93
- }
94
- export declare class EventHandlerError extends Error {
95
- event_result: EventResult;
96
- timeout_seconds: number | null;
97
- cause: Error;
98
- constructor(message: string, params: {
99
- event_result: EventResult;
100
- timeout_seconds?: number | null;
101
- cause: Error;
102
- });
103
- get event(): BaseEvent;
104
- get event_type(): string;
105
- get handler_name(): string;
106
- get handler_id(): string;
107
- get event_timeout(): number | null;
108
- }
109
- export declare class EventHandlerTimeoutError extends EventHandlerError {
110
- constructor(message: string, params: {
111
- event_result: EventResult;
112
- timeout_seconds?: number | null;
113
- cause?: Error;
114
- });
115
- }
116
- export declare class EventHandlerCancelledError extends EventHandlerError {
117
- constructor(message: string, params: {
118
- event_result: EventResult;
119
- timeout_seconds?: number | null;
120
- cause: Error;
121
- });
122
- }
123
- export declare class EventHandlerAbortedError extends EventHandlerError {
124
- constructor(message: string, params: {
125
- event_result: EventResult;
126
- timeout_seconds?: number | null;
127
- cause: Error;
128
- });
129
- }
130
- export declare class EventHandlerResultSchemaError extends EventHandlerError {
131
- raw_value: unknown;
132
- constructor(message: string, params: {
133
- event_result: EventResult;
134
- timeout_seconds?: number | null;
135
- cause: Error;
136
- raw_value: unknown;
137
- });
138
- get expected_schema(): any;
139
- }
@@ -1,45 +0,0 @@
1
- import { BaseEvent } from './base_event.js';
2
- import type { EventPattern, FindWindow } from './types.js';
3
- export type EventHistoryFindOptions = {
4
- past?: FindWindow;
5
- future?: FindWindow;
6
- child_of?: BaseEvent | null;
7
- event_is_child_of?: (event: BaseEvent, ancestor: BaseEvent) => boolean;
8
- wait_for_future_match?: (event_pattern: string | '*', matches: (event: BaseEvent) => boolean, future: FindWindow) => Promise<BaseEvent | null>;
9
- } & Record<string, unknown>;
10
- export type EventHistoryTrimOptions<TEvent extends BaseEvent = BaseEvent> = {
11
- is_event_complete?: (event: TEvent) => boolean;
12
- on_remove?: (event: TEvent) => void;
13
- owner_label?: string;
14
- max_history_size?: number | null;
15
- max_history_drop?: boolean;
16
- };
17
- export declare class EventHistory<TEvent extends BaseEvent = BaseEvent> implements Iterable<[string, TEvent]> {
18
- max_history_size: number | null;
19
- max_history_drop: boolean;
20
- private _events;
21
- private _warned_about_dropping_uncompleted_events;
22
- constructor(options?: {
23
- max_history_size?: number | null;
24
- max_history_drop?: boolean;
25
- });
26
- get size(): number;
27
- [Symbol.iterator](): Iterator<[string, TEvent]>;
28
- entries(): IterableIterator<[string, TEvent]>;
29
- keys(): IterableIterator<string>;
30
- values(): IterableIterator<TEvent>;
31
- clear(): void;
32
- get(event_id: string): TEvent | undefined;
33
- set(event_id: string, event: TEvent): this;
34
- has(event_id: string): boolean;
35
- delete(event_id: string): boolean;
36
- addEvent(event: TEvent): void;
37
- getEvent(event_id: string): TEvent | undefined;
38
- removeEvent(event_id: string): boolean;
39
- hasEvent(event_id: string): boolean;
40
- static normalizeEventPattern(event_pattern: EventPattern | '*'): string | '*';
41
- find(event_pattern: '*', where?: (event: TEvent) => boolean, options?: EventHistoryFindOptions): Promise<TEvent | null>;
42
- find<TMatch extends TEvent>(event_pattern: EventPattern<TMatch>, where?: (event: TMatch) => boolean, options?: EventHistoryFindOptions): Promise<TMatch | null>;
43
- trimEventHistory(options?: EventHistoryTrimOptions<TEvent>): number;
44
- private eventIsChildOf;
45
- }
@@ -1,86 +0,0 @@
1
- import { z } from 'zod';
2
- import { BaseEvent } from './base_event.js';
3
- import type { EventBus } from './event_bus.js';
4
- import { EventHandler } from './event_handler.js';
5
- import { type HandlerLock } from './lock_manager.js';
6
- import type { Deferred } from './lock_manager.js';
7
- import type { EventResultType } from './types.js';
8
- export type EventResultStatus = 'pending' | 'started' | 'completed' | 'error';
9
- export declare const EventResultJSONSchema: z.ZodObject<{
10
- id: z.ZodString;
11
- status: z.ZodEnum<{
12
- pending: "pending";
13
- started: "started";
14
- completed: "completed";
15
- error: "error";
16
- }>;
17
- event_id: z.ZodString;
18
- handler_id: z.ZodString;
19
- handler_name: z.ZodString;
20
- handler_file_path: z.ZodOptional<z.ZodNullable<z.ZodString>>;
21
- handler_timeout: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
22
- handler_slow_timeout: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
23
- handler_registered_at: z.ZodOptional<z.ZodString>;
24
- handler_event_pattern: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodLiteral<"*">]>>;
25
- eventbus_name: z.ZodString;
26
- eventbus_id: z.ZodString;
27
- started_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
28
- completed_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
29
- result: z.ZodOptional<z.ZodUnknown>;
30
- error: z.ZodOptional<z.ZodUnknown>;
31
- event_children: z.ZodArray<z.ZodString>;
32
- }, z.core.$strict>;
33
- export type EventResultJSON = z.infer<typeof EventResultJSONSchema>;
34
- export declare class EventResult<TEvent extends BaseEvent = BaseEvent> {
35
- id: string;
36
- status: EventResultStatus;
37
- event: TEvent;
38
- handler: EventHandler;
39
- started_at: string | null;
40
- completed_at: string | null;
41
- result?: EventResultType<TEvent>;
42
- error?: unknown;
43
- event_children: BaseEvent[];
44
- _abort: Deferred<never> | null;
45
- _lock: HandlerLock | null;
46
- _queue_jump_pause_releases: Map<EventBus, () => void> | null;
47
- constructor(params: {
48
- event: TEvent;
49
- handler: EventHandler;
50
- });
51
- toString(): string;
52
- get event_id(): string;
53
- get bus(): EventBus;
54
- get handler_id(): string;
55
- get handler_name(): string;
56
- get handler_file_path(): string | null;
57
- get eventbus_name(): string;
58
- get eventbus_id(): string;
59
- get eventbus_label(): string;
60
- private getHookBus;
61
- private _notifyStatusHook;
62
- get value(): EventResultType<TEvent> | undefined;
63
- get result_type(): TEvent['event_result_type'];
64
- _linkEmittedChildEvent(child_event: BaseEvent): void;
65
- get raw_value(): EventResultType<TEvent> | undefined;
66
- get handler_timeout(): number | null;
67
- get handler_slow_timeout(): number | null;
68
- _createSlowHandlerWarningTimer(effective_timeout: number | null): ReturnType<typeof setTimeout> | null;
69
- _ensureQueueJumpPause(bus: EventBus): void;
70
- _releaseQueueJumpPauses(): void;
71
- update(params: {
72
- status?: EventResultStatus;
73
- result?: EventResultType<TEvent> | BaseEvent | undefined;
74
- error?: unknown;
75
- }): this;
76
- private _createHandlerTimeoutError;
77
- private _handleHandlerError;
78
- private _onHandlerExit;
79
- runHandler(handler_lock: HandlerLock | null): Promise<void>;
80
- _signalAbort(error: Error): void;
81
- _markStarted(notify_hook?: boolean): Promise<never>;
82
- _markCompleted(result: EventResultType<TEvent> | BaseEvent | undefined, notify_hook?: boolean): void;
83
- _markError(error: unknown, notify_hook?: boolean): void;
84
- toJSON(): EventResultJSON;
85
- static fromJSON<TEvent extends BaseEvent>(event: TEvent, data: unknown): EventResult<TEvent>;
86
- }
@@ -1,70 +0,0 @@
1
- import type { BaseEvent } from './base_event.js';
2
- import type { EventResult } from './event_result.js';
3
- export type Deferred<T> = {
4
- promise: Promise<T>;
5
- resolve: (value: T | PromiseLike<T>) => void;
6
- reject: (reason?: unknown) => void;
7
- };
8
- export declare const withResolvers: <T>() => Deferred<T>;
9
- export declare const EVENT_CONCURRENCY_MODES: readonly ["global-serial", "bus-serial", "parallel"];
10
- export type EventConcurrencyMode = (typeof EVENT_CONCURRENCY_MODES)[number];
11
- export declare const EVENT_HANDLER_CONCURRENCY_MODES: readonly ["serial", "parallel"];
12
- export type EventHandlerConcurrencyMode = (typeof EVENT_HANDLER_CONCURRENCY_MODES)[number];
13
- export declare const EVENT_HANDLER_COMPLETION_MODES: readonly ["all", "first"];
14
- export type EventHandlerCompletionMode = (typeof EVENT_HANDLER_COMPLETION_MODES)[number];
15
- export declare class AsyncLock {
16
- size: number;
17
- in_use: number;
18
- waiters: Array<() => void>;
19
- constructor(size: number);
20
- acquire(): Promise<void>;
21
- release(): void;
22
- }
23
- export declare const runWithLock: <T>(lock: AsyncLock | null, fn: () => Promise<T>) => Promise<T>;
24
- export type HandlerExecutionState = 'held' | 'yielded' | 'closed';
25
- export declare class HandlerLock {
26
- private lock;
27
- private state;
28
- constructor(lock: AsyncLock | null);
29
- yieldHandlerLockForChildRun(): boolean;
30
- reclaimHandlerLockIfRunning(): Promise<boolean>;
31
- exitHandlerRun(): void;
32
- runQueueJump<T>(fn: () => Promise<T>): Promise<T>;
33
- }
34
- export type EventBusInterfaceForLockManager = {
35
- isIdleAndQueueEmpty: () => boolean;
36
- event_concurrency: EventConcurrencyMode;
37
- _lock_for_event_global_serial: AsyncLock;
38
- };
39
- export type LockManagerOptions = {
40
- auto_schedule_idle_checks?: boolean;
41
- };
42
- export declare class LockManager {
43
- private bus;
44
- private auto_schedule_idle_checks;
45
- readonly bus_event_lock: AsyncLock;
46
- private pause_depth;
47
- private pause_waiters;
48
- private active_handler_results;
49
- private idle_waiters;
50
- private idle_check_pending;
51
- private idle_check_streak;
52
- constructor(bus: EventBusInterfaceForLockManager, options?: LockManagerOptions);
53
- _requestRunloopPause(): () => void;
54
- _waitUntilRunloopResumed(): Promise<void>;
55
- _isPaused(): boolean;
56
- _runWithHandlerDispatchContext<T>(result: EventResult, fn: () => Promise<T>): Promise<T>;
57
- _getActiveHandlerResultForCurrentAsyncContext(): EventResult | undefined;
58
- _getActiveHandlerResults(): EventResult[];
59
- _isAnyHandlerActive(): boolean;
60
- waitForIdle(timeout_seconds?: number | null): Promise<boolean>;
61
- _notifyIdleListeners(): void;
62
- getLockForEvent(event: BaseEvent): AsyncLock | null;
63
- _runWithEventLock<T>(event: BaseEvent, fn: () => Promise<T>, options?: {
64
- bypass_event_locks?: boolean;
65
- pre_acquired_lock?: AsyncLock | null;
66
- }): Promise<T>;
67
- _runWithHandlerLock<T>(event: BaseEvent, default_handler_concurrency: EventHandlerConcurrencyMode | undefined, fn: (lock: HandlerLock | null) => Promise<T>): Promise<T>;
68
- private scheduleIdleCheck;
69
- clear(): void;
70
- }