@burdenoff/be-sdk 2026.513.2 → 2026.513.4
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.
- package/dist/EventQueueFactory-FNE7H66N.js +8 -0
- package/dist/{EventQueueFactory-TWDDFMQY.js.map → EventQueueFactory-FNE7H66N.js.map} +1 -1
- package/dist/{chunk-QKJR4L7B.js → chunk-COSUYUCB.js} +3 -149
- package/dist/chunk-COSUYUCB.js.map +1 -0
- package/dist/{chunk-Y4TPKRZB.js → chunk-DR5AQJT6.js} +3 -3
- package/dist/{chunk-Y4TPKRZB.js.map → chunk-DR5AQJT6.js.map} +1 -1
- package/dist/{chunk-EMSON3UD.js → chunk-KSO6QQVD.js} +10 -952
- package/dist/chunk-KSO6QQVD.js.map +1 -0
- package/dist/{chunk-L72RC2EI.js → chunk-LRL6GKXI.js} +3 -3
- package/dist/{chunk-L72RC2EI.js.map → chunk-LRL6GKXI.js.map} +1 -1
- package/dist/{chunk-3HCMPYG6.js → chunk-NUZZRJNN.js} +5 -168
- package/dist/chunk-NUZZRJNN.js.map +1 -0
- package/dist/{chunk-Q6HJARHV.js → chunk-S52PJKSW.js} +3 -3
- package/dist/{chunk-Q6HJARHV.js.map → chunk-S52PJKSW.js.map} +1 -1
- package/dist/{chunk-OMKFTTAN.js → chunk-SXIL2AJF.js} +5 -5
- package/dist/{chunk-OMKFTTAN.js.map → chunk-SXIL2AJF.js.map} +1 -1
- package/dist/{chunk-UVYDP6P6.js → chunk-VOFKF27Q.js} +2 -3
- package/dist/chunk-VOFKF27Q.js.map +1 -0
- package/dist/{chunk-3JBKPVWY.js → chunk-WPGSKLAG.js} +5 -24
- package/dist/chunk-WPGSKLAG.js.map +1 -0
- package/dist/config-7U7J3QXQ.js +4 -0
- package/dist/{config-QVYSAUMT.js.map → config-7U7J3QXQ.js.map} +1 -1
- package/dist/esm-K6H7EIWK.js +1450 -0
- package/dist/esm-K6H7EIWK.js.map +1 -0
- package/dist/event-queue/index.d.ts +1 -1
- package/dist/event-queue/index.js +5 -5
- package/dist/graph/index.js +6 -6
- package/dist/graphql/index.d.ts +1 -1
- package/dist/graphql/index.js +2 -2
- package/dist/{index-eUvoVdr7.d.ts → index-BF2uh_h9.d.ts} +2 -158
- package/dist/{index-CDFQRL-h.d.ts → index-HkD7NBED.d.ts} +2 -24
- package/dist/index.d.ts +3 -3
- package/dist/index.js +12 -12
- package/dist/init/index.js +4 -4
- package/dist/prisma/index.js +5 -5
- package/package.json +3 -14
- package/dist/EventQueueFactory-TWDDFMQY.js +0 -8
- package/dist/chunk-3HCMPYG6.js.map +0 -1
- package/dist/chunk-3JBKPVWY.js.map +0 -1
- package/dist/chunk-EMSON3UD.js.map +0 -1
- package/dist/chunk-QKJR4L7B.js.map +0 -1
- package/dist/chunk-UVYDP6P6.js.map +0 -1
- package/dist/config-QVYSAUMT.js +0 -4
- package/dist/esm-M2M7HGV4.js +0 -1356
- package/dist/esm-M2M7HGV4.js.map +0 -1
|
@@ -73,7 +73,6 @@ interface SubscriptionOptions {
|
|
|
73
73
|
|
|
74
74
|
declare enum QueueType {
|
|
75
75
|
NATS = "nats",
|
|
76
|
-
REDIS_STREAMS = "redis-streams",
|
|
77
76
|
RABBITMQ = "rabbitmq",
|
|
78
77
|
KAFKA = "kafka",
|
|
79
78
|
SQS = "sqs"
|
|
@@ -284,155 +283,6 @@ declare class NatsEventConsumer implements IEventConsumer {
|
|
|
284
283
|
private mapDeliverPolicy;
|
|
285
284
|
}
|
|
286
285
|
|
|
287
|
-
type IoRedis = {
|
|
288
|
-
status: string;
|
|
289
|
-
connect: () => Promise<void>;
|
|
290
|
-
disconnect: () => void;
|
|
291
|
-
quit: () => Promise<unknown>;
|
|
292
|
-
ping: () => Promise<string>;
|
|
293
|
-
on: (event: string, handler: (...args: unknown[]) => void) => void;
|
|
294
|
-
duplicate: () => IoRedis;
|
|
295
|
-
xadd: (...args: unknown[]) => Promise<string>;
|
|
296
|
-
xack: (...args: unknown[]) => Promise<number>;
|
|
297
|
-
xreadgroup: (...args: unknown[]) => Promise<unknown>;
|
|
298
|
-
xgroup: (...args: unknown[]) => Promise<unknown>;
|
|
299
|
-
xautoclaim: (...args: unknown[]) => Promise<unknown>;
|
|
300
|
-
xpending: (...args: unknown[]) => Promise<unknown>;
|
|
301
|
-
xlen: (key: string) => Promise<number>;
|
|
302
|
-
xinfo: (...args: unknown[]) => Promise<unknown>;
|
|
303
|
-
xrevrange: (...args: unknown[]) => Promise<unknown>;
|
|
304
|
-
xrange: (...args: unknown[]) => Promise<unknown>;
|
|
305
|
-
xdel: (key: string, ...ids: string[]) => Promise<number>;
|
|
306
|
-
set: (...args: unknown[]) => Promise<string | null>;
|
|
307
|
-
expire: (key: string, seconds: number) => Promise<number>;
|
|
308
|
-
del: (...keys: string[]) => Promise<number>;
|
|
309
|
-
sadd: (key: string, ...members: string[]) => Promise<number>;
|
|
310
|
-
smembers: (key: string) => Promise<string[]>;
|
|
311
|
-
zadd: (...args: unknown[]) => Promise<number>;
|
|
312
|
-
zrangebyscore: (...args: unknown[]) => Promise<string[]>;
|
|
313
|
-
zrem: (key: string, ...members: string[]) => Promise<number>;
|
|
314
|
-
pipeline: () => {
|
|
315
|
-
xadd: (...args: unknown[]) => unknown;
|
|
316
|
-
exec: () => Promise<Array<[Error | null, unknown]>>;
|
|
317
|
-
};
|
|
318
|
-
};
|
|
319
|
-
declare class RedisStreamsConnection {
|
|
320
|
-
private readonly config;
|
|
321
|
-
private client;
|
|
322
|
-
private connecting;
|
|
323
|
-
private readonly tls;
|
|
324
|
-
private readonly host;
|
|
325
|
-
private readonly normalisedUrl;
|
|
326
|
-
constructor(config: BaseQueueConfig);
|
|
327
|
-
isConnected(): boolean;
|
|
328
|
-
connect(): Promise<void>;
|
|
329
|
-
private doConnect;
|
|
330
|
-
disconnect(): Promise<void>;
|
|
331
|
-
getClient(): IoRedis;
|
|
332
|
-
makeBlockingClient(): Promise<IoRedis>;
|
|
333
|
-
ping(): Promise<string>;
|
|
334
|
-
}
|
|
335
|
-
|
|
336
|
-
interface RedisStreamsPublisherConfig extends PublisherConfig {
|
|
337
|
-
maxLen?: number;
|
|
338
|
-
dedupTtlSeconds?: number;
|
|
339
|
-
keyPrefix?: string;
|
|
340
|
-
}
|
|
341
|
-
declare class RedisStreamsEventPublisher implements IEventPublisher {
|
|
342
|
-
private config;
|
|
343
|
-
private connection;
|
|
344
|
-
private publishCount;
|
|
345
|
-
private lastPublishTime;
|
|
346
|
-
private readonly maxLen;
|
|
347
|
-
private readonly dedupTtl;
|
|
348
|
-
private readonly keyPrefix;
|
|
349
|
-
constructor(config: RedisStreamsPublisherConfig);
|
|
350
|
-
connect(): Promise<void>;
|
|
351
|
-
disconnect(): Promise<void>;
|
|
352
|
-
isConnected(): boolean;
|
|
353
|
-
healthCheck(): Promise<EventQueueHealthCheckResult>;
|
|
354
|
-
getStatistics(): Promise<QueueStatistics>;
|
|
355
|
-
ensureStream(_config: StreamConfig): Promise<void>;
|
|
356
|
-
publish<T = unknown>(options: {
|
|
357
|
-
subject: string;
|
|
358
|
-
data: T;
|
|
359
|
-
metadata?: Partial<EventMetadata>;
|
|
360
|
-
options?: PublishOptions;
|
|
361
|
-
}): Promise<number | string>;
|
|
362
|
-
private publishInternal;
|
|
363
|
-
publishBatch<T = unknown>(events: Array<{
|
|
364
|
-
subject: string;
|
|
365
|
-
data: T;
|
|
366
|
-
metadata?: Partial<EventMetadata>;
|
|
367
|
-
options?: PublishOptions;
|
|
368
|
-
}>): Promise<Array<number | string>>;
|
|
369
|
-
publishWithAck<T = unknown, R = unknown>(opts: {
|
|
370
|
-
subject: string;
|
|
371
|
-
data: T;
|
|
372
|
-
metadata?: Partial<EventMetadata>;
|
|
373
|
-
timeout?: number;
|
|
374
|
-
}): Promise<R>;
|
|
375
|
-
sendReply(correlationId: string, data: unknown): Promise<void>;
|
|
376
|
-
}
|
|
377
|
-
|
|
378
|
-
interface RedisStreamsConsumerConfig extends ConsumerConfig {
|
|
379
|
-
keyPrefix?: string;
|
|
380
|
-
}
|
|
381
|
-
declare class RedisStreamsEventConsumer implements IEventConsumer {
|
|
382
|
-
private readonly connection;
|
|
383
|
-
private subscriptions;
|
|
384
|
-
private readonly subscriptionLoops;
|
|
385
|
-
private readonly keyPrefix;
|
|
386
|
-
private readonly consumerName;
|
|
387
|
-
private readonly group;
|
|
388
|
-
private readonly maxDeliver;
|
|
389
|
-
private readonly ackWaitMs;
|
|
390
|
-
private readonly maxConcurrent;
|
|
391
|
-
private consumedCount;
|
|
392
|
-
private failedCount;
|
|
393
|
-
private lastActivity;
|
|
394
|
-
private stopped;
|
|
395
|
-
private sweepTimer;
|
|
396
|
-
private delayqTimer;
|
|
397
|
-
private knownStreams;
|
|
398
|
-
constructor(config: RedisStreamsConsumerConfig);
|
|
399
|
-
connect(): Promise<void>;
|
|
400
|
-
disconnect(): Promise<void>;
|
|
401
|
-
isConnected(): boolean;
|
|
402
|
-
healthCheck(): Promise<EventQueueHealthCheckResult>;
|
|
403
|
-
getStatistics(): Promise<QueueStatistics>;
|
|
404
|
-
ensureStream(_config: StreamConfig): Promise<void>;
|
|
405
|
-
ensureConsumer(_config: ConsumerConfig): Promise<void>;
|
|
406
|
-
subscribe<T = unknown>(opts: {
|
|
407
|
-
subject: string;
|
|
408
|
-
handler: EventHandler<T>;
|
|
409
|
-
options?: SubscriptionOptions;
|
|
410
|
-
}): Promise<ISubscription>;
|
|
411
|
-
subscribeMultiple<T = unknown>(subjects: string[], handler: EventHandler<T>, options?: SubscriptionOptions): Promise<ISubscription[]>;
|
|
412
|
-
pull<T = unknown>(opts: {
|
|
413
|
-
subject: string;
|
|
414
|
-
batch?: number;
|
|
415
|
-
timeout?: number;
|
|
416
|
-
}): Promise<AcknowledgeableEvent<T>[]>;
|
|
417
|
-
unsubscribeAll(): Promise<void>;
|
|
418
|
-
getSubscriptions(): ISubscription[];
|
|
419
|
-
processDLQ<T = unknown>(handler: EventHandler<T>): Promise<void>;
|
|
420
|
-
listSubjects(_stream?: string): Promise<string[]>;
|
|
421
|
-
private resolveStartId;
|
|
422
|
-
private ensureGroup;
|
|
423
|
-
private spawnLoop;
|
|
424
|
-
private parseEntry;
|
|
425
|
-
private toAcknowledgeable;
|
|
426
|
-
private sweepPending;
|
|
427
|
-
private drainDelayQueues;
|
|
428
|
-
}
|
|
429
|
-
|
|
430
|
-
interface KeyspaceOptions {
|
|
431
|
-
prefix?: string;
|
|
432
|
-
}
|
|
433
|
-
declare function streamKey(subject: string, opts?: KeyspaceOptions): string;
|
|
434
|
-
declare function dlqKey(stream: string): string;
|
|
435
|
-
|
|
436
286
|
type EntityEventType = 'entity.created' | 'entity.updated' | 'entity.deleted';
|
|
437
287
|
interface GraphEventEmitter {
|
|
438
288
|
publishEntityEvent(eventType: EntityEventType, entity: {
|
|
@@ -736,12 +586,6 @@ type index_PublisherConfig = PublisherConfig;
|
|
|
736
586
|
type index_QueueStatistics = QueueStatistics;
|
|
737
587
|
type index_QueueType = QueueType;
|
|
738
588
|
declare const index_QueueType: typeof QueueType;
|
|
739
|
-
type index_RedisStreamsConnection = RedisStreamsConnection;
|
|
740
|
-
declare const index_RedisStreamsConnection: typeof RedisStreamsConnection;
|
|
741
|
-
type index_RedisStreamsEventConsumer = RedisStreamsEventConsumer;
|
|
742
|
-
declare const index_RedisStreamsEventConsumer: typeof RedisStreamsEventConsumer;
|
|
743
|
-
type index_RedisStreamsEventPublisher = RedisStreamsEventPublisher;
|
|
744
|
-
declare const index_RedisStreamsEventPublisher: typeof RedisStreamsEventPublisher;
|
|
745
589
|
type index_StreamConfig = StreamConfig;
|
|
746
590
|
type index_StreamInfo = StreamInfo;
|
|
747
591
|
type index_SubscribeOptions = SubscribeOptions;
|
|
@@ -754,7 +598,7 @@ declare const index_createPublisher: typeof createPublisher;
|
|
|
754
598
|
declare const index_getGraphEventEmitter: typeof getGraphEventEmitter;
|
|
755
599
|
declare const index_resetGraphEventEmitter: typeof resetGraphEventEmitter;
|
|
756
600
|
declare namespace index {
|
|
757
|
-
export { type index_AcknowledgeableEvent as AcknowledgeableEvent, type index_BaseQueueConfig as BaseQueueConfig, type index_BulkEventPayload as BulkEventPayload, type index_ConsumerConfig as ConsumerConfig, index_EntityEventRbacMetadata as EntityEventRbacMetadata, EntityEventType$1 as EntityEventType, type index_EventHandler as EventHandler, type EventMessage$1 as EventMessage, type index_EventMetadata as EventMetadata, index_EventPriority as EventPriority, index_EventQueueFactory as EventQueueFactory, type index_EventQueueHealthCheckResult as EventQueueHealthCheckResult, index_EventsModule as EventsModule, GraphEventEmitter$1 as GraphEventEmitter, type EventMessage as GraphQLEventMessage, type EventQueueHealthCheckResult as HealthCheckResult, type index_IEventConsumer as IEventConsumer, type index_IEventPublisher as IEventPublisher, type index_IEventQueue as IEventQueue, type index_ISubscription as ISubscription, index_MemoryEventBus as MemoryEventBus, index_MemoryEventConsumer as MemoryEventConsumer, index_MemoryEventPublisher as MemoryEventPublisher, index_MemoryEventQueue as MemoryEventQueue, type index_ModuleEventPayload as ModuleEventPayload, type index_ModuleEventsConfig as ModuleEventsConfig, index_ModuleEventsService as ModuleEventsService, type index_NATSConsumerOptions as NATSConsumerOptions, index_NatsEventConsumer as NatsEventConsumer, index_NatsEventPublisher as NatsEventPublisher, index_NatsGraphEventEmitter as NatsGraphEventEmitter, type index_PublishEventOptions as PublishEventOptions, type index_PublishOptions as PublishOptions, type index_PublishResult as PublishResult, type index_PublisherConfig as PublisherConfig, type index_QueueStatistics as QueueStatistics, index_QueueType as QueueType,
|
|
601
|
+
export { type index_AcknowledgeableEvent as AcknowledgeableEvent, type index_BaseQueueConfig as BaseQueueConfig, type index_BulkEventPayload as BulkEventPayload, type index_ConsumerConfig as ConsumerConfig, index_EntityEventRbacMetadata as EntityEventRbacMetadata, EntityEventType$1 as EntityEventType, type index_EventHandler as EventHandler, type EventMessage$1 as EventMessage, type index_EventMetadata as EventMetadata, index_EventPriority as EventPriority, index_EventQueueFactory as EventQueueFactory, type index_EventQueueHealthCheckResult as EventQueueHealthCheckResult, index_EventsModule as EventsModule, GraphEventEmitter$1 as GraphEventEmitter, type EventMessage as GraphQLEventMessage, type EventQueueHealthCheckResult as HealthCheckResult, type index_IEventConsumer as IEventConsumer, type index_IEventPublisher as IEventPublisher, type index_IEventQueue as IEventQueue, type index_ISubscription as ISubscription, index_MemoryEventBus as MemoryEventBus, index_MemoryEventConsumer as MemoryEventConsumer, index_MemoryEventPublisher as MemoryEventPublisher, index_MemoryEventQueue as MemoryEventQueue, type index_ModuleEventPayload as ModuleEventPayload, type index_ModuleEventsConfig as ModuleEventsConfig, index_ModuleEventsService as ModuleEventsService, type index_NATSConsumerOptions as NATSConsumerOptions, index_NatsEventConsumer as NatsEventConsumer, index_NatsEventPublisher as NatsEventPublisher, index_NatsGraphEventEmitter as NatsGraphEventEmitter, type index_PublishEventOptions as PublishEventOptions, type index_PublishOptions as PublishOptions, type index_PublishResult as PublishResult, type index_PublisherConfig as PublisherConfig, type index_QueueStatistics as QueueStatistics, index_QueueType as QueueType, type index_StreamConfig as StreamConfig, type index_StreamInfo as StreamInfo, type index_SubscribeOptions as SubscribeOptions, type index_SubscriptionOptions as SubscriptionOptions, index_createConsumer as createConsumer, createGraphEventEmitter$1 as createGraphEventEmitter, index_createMemoryConsumer as createMemoryConsumer, createGraphEventEmitter as createMemoryGraphEventEmitter, index_createMemoryPublisher as createMemoryPublisher, index_createModuleEventsService as createModuleEventsService, index_createPublisher as createPublisher, index_getGraphEventEmitter as getGraphEventEmitter, index_resetGraphEventEmitter as resetGraphEventEmitter };
|
|
758
602
|
}
|
|
759
603
|
|
|
760
|
-
export { type AcknowledgeableEvent as A, type BaseQueueConfig as B, type ConsumerConfig as C, type
|
|
604
|
+
export { type AcknowledgeableEvent as A, type BaseQueueConfig as B, type ConsumerConfig as C, type SubscriptionOptions as D, EventsModule as E, createConsumer as F, createMemoryConsumer as G, createGraphEventEmitter as H, type IEventPublisher as I, createMemoryPublisher as J, createModuleEventsService as K, createPublisher as L, MemoryEventBus as M, type NATSConsumerOptions as N, type PublishEventOptions as P, type QueueStatistics as Q, type StreamConfig as S, type BulkEventPayload as a, type EventHandler as b, type EventMessage$1 as c, type EventMetadata as d, EventPriority as e, EventQueueFactory as f, type EventQueueHealthCheckResult as g, type EventMessage as h, index as i, type IEventConsumer as j, type IEventQueue as k, type ISubscription as l, MemoryEventConsumer as m, MemoryEventPublisher as n, MemoryEventQueue as o, type ModuleEventPayload as p, type ModuleEventsConfig as q, ModuleEventsService as r, NatsEventConsumer as s, NatsEventPublisher as t, type PublishOptions as u, type PublishResult as v, type PublisherConfig as w, QueueType as x, type StreamInfo as y, type SubscribeOptions as z };
|
|
@@ -29,38 +29,16 @@ interface NatsEventTarget {
|
|
|
29
29
|
}
|
|
30
30
|
declare function createNatsEventTarget(options: NatsEventTargetOptions): Promise<NatsEventTarget>;
|
|
31
31
|
|
|
32
|
-
interface RedisStreamsEventTarget {
|
|
33
|
-
addEventListener(type: string, listener: (event: Event) => void): void;
|
|
34
|
-
removeEventListener(type: string, listener: (event: Event) => void): void;
|
|
35
|
-
dispatchEvent(event: Event): boolean;
|
|
36
|
-
close(): Promise<void>;
|
|
37
|
-
isHealthy(): boolean;
|
|
38
|
-
}
|
|
39
|
-
interface RedisStreamsEventTargetOptions {
|
|
40
|
-
redisUrl?: string;
|
|
41
|
-
password?: string;
|
|
42
|
-
subjectPrefix?: string;
|
|
43
|
-
maxLen?: number;
|
|
44
|
-
serializer?: {
|
|
45
|
-
stringify: (data: unknown) => string | Promise<string>;
|
|
46
|
-
parse: (msg: string) => unknown | Promise<unknown>;
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
declare function createRedisStreamsEventTarget(options?: RedisStreamsEventTargetOptions): Promise<RedisStreamsEventTarget>;
|
|
50
|
-
|
|
51
32
|
declare const index_DatabaseService: typeof DatabaseService;
|
|
52
33
|
declare const index_Logger: typeof Logger;
|
|
53
34
|
type index_MessageSerializer = MessageSerializer;
|
|
54
35
|
type index_NatsEventTarget = NatsEventTarget;
|
|
55
36
|
type index_NatsEventTargetOptions = NatsEventTargetOptions;
|
|
56
37
|
declare const index_PrismaTransactionClient: typeof PrismaTransactionClient;
|
|
57
|
-
type index_RedisStreamsEventTarget = RedisStreamsEventTarget;
|
|
58
|
-
type index_RedisStreamsEventTargetOptions = RedisStreamsEventTargetOptions;
|
|
59
38
|
declare const index_createDatabaseService: typeof createDatabaseService;
|
|
60
39
|
declare const index_createNatsEventTarget: typeof createNatsEventTarget;
|
|
61
|
-
declare const index_createRedisStreamsEventTarget: typeof createRedisStreamsEventTarget;
|
|
62
40
|
declare namespace index {
|
|
63
|
-
export { index_DatabaseService as DatabaseService, index_Logger as Logger, type index_MessageSerializer as MessageSerializer, type index_NatsEventTarget as NatsEventTarget, type index_NatsEventTargetOptions as NatsEventTargetOptions, index_PrismaTransactionClient as PrismaTransactionClient,
|
|
41
|
+
export { index_DatabaseService as DatabaseService, index_Logger as Logger, type index_MessageSerializer as MessageSerializer, type index_NatsEventTarget as NatsEventTarget, type index_NatsEventTargetOptions as NatsEventTargetOptions, index_PrismaTransactionClient as PrismaTransactionClient, index_createDatabaseService as createDatabaseService, index_createNatsEventTarget as createNatsEventTarget };
|
|
64
42
|
}
|
|
65
43
|
|
|
66
|
-
export { type MessageSerializer as M, type NatsEventTarget as N, type
|
|
44
|
+
export { type MessageSerializer as M, type NatsEventTarget as N, type NatsEventTargetOptions as a, createNatsEventTarget as c, index as i };
|
package/dist/index.d.ts
CHANGED
|
@@ -9,8 +9,8 @@ import { RBACModule } from './rbac/index.js';
|
|
|
9
9
|
export { LayerAwareRBACConfig, RBACDirectiveConfig, createRBACDirective, createRBACDirectiveForLayer, createRBACDirectiveFromEnv } from './rbac/index.js';
|
|
10
10
|
import { A as ActivityModule, U as UsageModule, T as TrackerModule } from './index-DJq060D-.js';
|
|
11
11
|
import { DatabaseConfig, DatabaseModule } from './database/index.js';
|
|
12
|
-
import { E as EventsModule, I as IEventPublisher } from './index-
|
|
13
|
-
export { i as EventQueue } from './index-
|
|
12
|
+
import { E as EventsModule, I as IEventPublisher } from './index-BF2uh_h9.js';
|
|
13
|
+
export { i as EventQueue } from './index-BF2uh_h9.js';
|
|
14
14
|
import { G as GraphModule } from './index-DZO2nvC9.js';
|
|
15
15
|
export { i as Graph } from './index-DZO2nvC9.js';
|
|
16
16
|
import { B as BurdenoffGraphQLClient } from './graphql-0_hoaeUf.js';
|
|
@@ -20,7 +20,7 @@ export { createInternalClient, createInternalClientForTenant, createInternalClie
|
|
|
20
20
|
export { i as Cache } from './index-BODgvRtL.js';
|
|
21
21
|
export { i as Middleware } from './index-DSOpj8DI.js';
|
|
22
22
|
export { i as Observability } from './index-4gKQKZ2B.js';
|
|
23
|
-
export { i as GraphQL } from './index-
|
|
23
|
+
export { i as GraphQL } from './index-HkD7NBED.js';
|
|
24
24
|
export { i as Prisma } from './index-Dtf6FBaD.js';
|
|
25
25
|
export { i as Utils } from './index-PaojfSdd.js';
|
|
26
26
|
export { i as I18n, I as I18nCapableContext, T as Translator, c as createTranslator, g as getLanguage, a as getLocale, h as hasI18n, t } from './index-BV3G48cH.js';
|
package/dist/index.js
CHANGED
|
@@ -6,34 +6,34 @@ export { middleware_exports as Middleware } from './chunk-2HANKZZM.js';
|
|
|
6
6
|
import { TenantNotificationsModule, NotificationsModule } from './chunk-I43B35CP.js';
|
|
7
7
|
export { tenant_notifications_exports as Notifications, NotificationsModule } from './chunk-I43B35CP.js';
|
|
8
8
|
export { observability_exports as Observability } from './chunk-5LXDPGDH.js';
|
|
9
|
-
export { prisma_exports as Prisma } from './chunk-
|
|
9
|
+
export { prisma_exports as Prisma } from './chunk-LRL6GKXI.js';
|
|
10
10
|
import './chunk-GTEMQXCA.js';
|
|
11
11
|
import { RBACModule } from './chunk-ER77ZA7C.js';
|
|
12
12
|
export { RBACModule, createRBACDirective, createRBACDirectiveForLayer, createRBACDirectiveFromEnv } from './chunk-ER77ZA7C.js';
|
|
13
13
|
export { export_exports as Export } from './chunk-FNZEQOJY.js';
|
|
14
14
|
export { feature_flags_exports as FeatureFlags } from './chunk-VWCN5PMD.js';
|
|
15
|
-
import { GraphModule } from './chunk-
|
|
16
|
-
export { graph_exports as Graph, GraphModule } from './chunk-
|
|
15
|
+
import { GraphModule } from './chunk-DR5AQJT6.js';
|
|
16
|
+
export { graph_exports as Graph, GraphModule } from './chunk-DR5AQJT6.js';
|
|
17
17
|
import './chunk-TKBD2ONF.js';
|
|
18
|
-
import { EventsModule } from './chunk-
|
|
19
|
-
export { event_queue_exports as EventQueue, EventsModule } from './chunk-
|
|
20
|
-
import './chunk-
|
|
21
|
-
export { graphql_exports as GraphQL } from './chunk-
|
|
18
|
+
import { EventsModule } from './chunk-WPGSKLAG.js';
|
|
19
|
+
export { event_queue_exports as EventQueue, EventsModule } from './chunk-WPGSKLAG.js';
|
|
20
|
+
import './chunk-S52PJKSW.js';
|
|
21
|
+
export { graphql_exports as GraphQL } from './chunk-NUZZRJNN.js';
|
|
22
22
|
import './chunk-QLVKMWFA.js';
|
|
23
23
|
export { i18n_exports as I18n, createTranslator, getLanguage, getLocale, hasI18n, t } from './chunk-IYE2NTRX.js';
|
|
24
|
-
export { init_exports as Init } from './chunk-
|
|
24
|
+
export { init_exports as Init } from './chunk-SXIL2AJF.js';
|
|
25
25
|
export { gateway_exports as Gateway } from './chunk-4B43DZIS.js';
|
|
26
26
|
import './chunk-MLW2HPS5.js';
|
|
27
27
|
export { layer_exports as Layer } from './chunk-HIWTWIGQ.js';
|
|
28
|
-
import { EventQueueFactory } from './chunk-
|
|
29
|
-
import './chunk-
|
|
30
|
-
import './chunk-
|
|
28
|
+
import { EventQueueFactory } from './chunk-KSO6QQVD.js';
|
|
29
|
+
import './chunk-VOFKF27Q.js';
|
|
30
|
+
import './chunk-COSUYUCB.js';
|
|
31
31
|
import { AuthModule } from './chunk-WBWM7UY7.js';
|
|
32
32
|
export { AuthModule } from './chunk-WBWM7UY7.js';
|
|
33
33
|
export { utils_exports as Utils } from './chunk-MOCUBSTW.js';
|
|
34
34
|
export { cache_exports as Cache } from './chunk-4XGGWW36.js';
|
|
35
|
-
export { createInternalClient, createInternalClientForTenant, createInternalClientForWorkspaces } from './chunk-VI4VSNTI.js';
|
|
36
35
|
export { captcha_exports as Captcha, isCaptchaEnabled, verifyCaptcha, verifyCaptchaIfEnabled } from './chunk-YMZEUTD2.js';
|
|
36
|
+
export { createInternalClient, createInternalClientForTenant, createInternalClientForWorkspaces } from './chunk-VI4VSNTI.js';
|
|
37
37
|
export { crypto_exports as Crypto } from './chunk-SBS4S2PJ.js';
|
|
38
38
|
import { DatabaseModule } from './chunk-5CAA3JST.js';
|
|
39
39
|
export { DatabaseModule } from './chunk-5CAA3JST.js';
|
package/dist/init/index.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
export { getSDKState, initializeBurdenoffSDK, isSDKInitialized, resetSDK } from '../chunk-
|
|
1
|
+
export { getSDKState, initializeBurdenoffSDK, isSDKInitialized, resetSDK } from '../chunk-SXIL2AJF.js';
|
|
2
2
|
import '../chunk-4B43DZIS.js';
|
|
3
3
|
import '../chunk-MLW2HPS5.js';
|
|
4
4
|
import '../chunk-HIWTWIGQ.js';
|
|
5
|
-
import '../chunk-
|
|
6
|
-
import '../chunk-
|
|
7
|
-
import '../chunk-
|
|
5
|
+
import '../chunk-KSO6QQVD.js';
|
|
6
|
+
import '../chunk-VOFKF27Q.js';
|
|
7
|
+
import '../chunk-COSUYUCB.js';
|
|
8
8
|
import '../chunk-NGMEI42S.js';
|
|
9
9
|
import '../chunk-CBZNP6RF.js';
|
|
10
10
|
import '../chunk-XE4OXN2W.js';
|
package/dist/prisma/index.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
export { PrismaClientWrapper, buildContextWhereClause, buildContextWhereConditions, checkDatabaseHealth, configurePrismaLogging, contextMatches, createConnectionPool, createContextFromSDK, createDatabaseClient, createDatabaseClientFromEnv, createPrismaAdapter, createPrismaClient, extractFieldsFromModel, getAllModelNames, getDatabaseManager, getDatabaseProductName, getDatabaseStats, getDatabaseVersion, getDb, getModelFields, hasModel, initializeDatabase, initializeDatabaseWithConfig, isDatabaseInitialized, loadGeneratedFields, mergeContext, parseContext, resetDatabaseManager, testConnection, toContextJson } from '../chunk-
|
|
1
|
+
export { PrismaClientWrapper, buildContextWhereClause, buildContextWhereConditions, checkDatabaseHealth, configurePrismaLogging, contextMatches, createConnectionPool, createContextFromSDK, createDatabaseClient, createDatabaseClientFromEnv, createPrismaAdapter, createPrismaClient, extractFieldsFromModel, getAllModelNames, getDatabaseManager, getDatabaseProductName, getDatabaseStats, getDatabaseVersion, getDb, getModelFields, hasModel, initializeDatabase, initializeDatabaseWithConfig, isDatabaseInitialized, loadGeneratedFields, mergeContext, parseContext, resetDatabaseManager, testConnection, toContextJson } from '../chunk-LRL6GKXI.js';
|
|
2
2
|
export { addWorkspaceExtension, getWorkspaceContext, injectWhereWorkspaceId, setWorkspaceContext, withWorkspaceContext, withWorkspaceContextSync } from '../chunk-GTEMQXCA.js';
|
|
3
3
|
import '../chunk-TKBD2ONF.js';
|
|
4
|
-
import '../chunk-
|
|
5
|
-
import '../chunk-
|
|
6
|
-
import '../chunk-
|
|
7
|
-
import '../chunk-
|
|
4
|
+
import '../chunk-S52PJKSW.js';
|
|
5
|
+
import '../chunk-KSO6QQVD.js';
|
|
6
|
+
import '../chunk-VOFKF27Q.js';
|
|
7
|
+
import '../chunk-COSUYUCB.js';
|
|
8
8
|
import '../chunk-NGMEI42S.js';
|
|
9
9
|
import '../chunk-CBZNP6RF.js';
|
|
10
10
|
import '../chunk-XE4OXN2W.js';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@burdenoff/be-sdk",
|
|
3
|
-
"version": "2026.513.
|
|
3
|
+
"version": "2026.513.4",
|
|
4
4
|
"description": "Backend SDK for Burdenoff products providing unified access to notifications, RBAC, activity tracking, usage monitoring, and more",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -113,7 +113,8 @@
|
|
|
113
113
|
"dependencies": {
|
|
114
114
|
"@graphql-yoga/logger": "^2.0.1",
|
|
115
115
|
"@prisma/generator-helper": "^7.2.0",
|
|
116
|
-
"@sinclair/typebox": "^0.34.45"
|
|
116
|
+
"@sinclair/typebox": "^0.34.45",
|
|
117
|
+
"jose": "^6.1.2"
|
|
117
118
|
},
|
|
118
119
|
"peerDependencies": {
|
|
119
120
|
"@clickhouse/client": "^1.14.0",
|
|
@@ -133,21 +134,13 @@
|
|
|
133
134
|
"graphql-request": "^7.3.5",
|
|
134
135
|
"graphql-yoga": "^5.17.0",
|
|
135
136
|
"@valkey/valkey-glide": "^2.2.6",
|
|
136
|
-
"jose": "^6.1.2",
|
|
137
137
|
"jsonwebtoken": "^9.0.2",
|
|
138
138
|
"nats": "^2.29.3",
|
|
139
|
-
"ioredis": "^5.4.1",
|
|
140
139
|
"pg": "^8.16.3",
|
|
141
140
|
"prom-client": "^15.1.3",
|
|
142
141
|
"reflect-metadata": "^0.2.2"
|
|
143
142
|
},
|
|
144
143
|
"peerDependenciesMeta": {
|
|
145
|
-
"ioredis": {
|
|
146
|
-
"optional": true
|
|
147
|
-
},
|
|
148
|
-
"nats": {
|
|
149
|
-
"optional": true
|
|
150
|
-
},
|
|
151
144
|
"@clickhouse/client": {
|
|
152
145
|
"optional": true
|
|
153
146
|
},
|
|
@@ -166,9 +159,6 @@
|
|
|
166
159
|
"@prisma/adapter-pg": {
|
|
167
160
|
"optional": true
|
|
168
161
|
},
|
|
169
|
-
"jose": {
|
|
170
|
-
"optional": true
|
|
171
|
-
},
|
|
172
162
|
"jsonwebtoken": {
|
|
173
163
|
"optional": true
|
|
174
164
|
},
|
|
@@ -223,7 +213,6 @@
|
|
|
223
213
|
"jose": "^6.1.3",
|
|
224
214
|
"jsonwebtoken": "^9.0.3",
|
|
225
215
|
"lefthook": "^2.1.1",
|
|
226
|
-
"ioredis": "^5.4.1",
|
|
227
216
|
"nats": "^2.29.3",
|
|
228
217
|
"pg": "^8.16.3",
|
|
229
218
|
"prettier": "^3.7.4",
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
export { EventQueueFactory } from './chunk-EMSON3UD.js';
|
|
2
|
-
import './chunk-UVYDP6P6.js';
|
|
3
|
-
import './chunk-QKJR4L7B.js';
|
|
4
|
-
import './chunk-NGMEI42S.js';
|
|
5
|
-
import './chunk-CBZNP6RF.js';
|
|
6
|
-
import './chunk-XE4OXN2W.js';
|
|
7
|
-
//# sourceMappingURL=EventQueueFactory-TWDDFMQY.js.map
|
|
8
|
-
//# sourceMappingURL=EventQueueFactory-TWDDFMQY.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/graphql/index.ts","../src/graphql/nats-event-target.ts","../src/graphql/redis-streams-event-target.ts"],"names":["createNatsEventTarget","options","natsUrl","connectionOptions","serializer","stringify","data","JSON","parse","message","subjectPrefix","sc","StringCodec","defaultConnectionOptions","name","maxReconnectAttempts","reconnectTimeWait","pingInterval","maxPingOut","timeout","mergedConnectionOptions","effectiveUser","user","process","env","effectivePass","pass","password","connectionConfig","type","url","Array","isArray","token","creds","credsFile","connectionManager","connection","NatsConnectionManager","connect","getNatsConnection","logger","info","error","Error","callbacks","Map","subscriptions","getSubject","eventType","subscribeToNats","has","subject","subscription","subscribe","set","debug","msg","messageData","decode","payload","eventCallbacks","get","size","event","CustomEvent","detail","callback","from","callbackError","messageError","subscriptionError","unsubscribeFromNats","unsubscribe","delete","eventTarget","addEventListener","listener","Set","add","listenerCount","removeEventListener","remainingListeners","dispatchEvent","encode","publish","serializeError","close","entries","clear","disconnect","isHealthy","isClosed","createRedisStreamsEventTarget","redisUrl","prefix","maxLen","d","m","conn","RedisStreamsConnection","cmd","getClient","streamKey","replace","listeners","readers","closed","startReader","stopped","stream","loop","blockingClient","makeBlockingClient","lastId","raw","xreadgroup","call","err","String","Promise","r","setTimeout","id","rawFields","fields","i","length","cbs","ev","cb","cbErr","stop","catch","stopReader","target","xadd","values","isConnected"],"mappings":"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","file":"chunk-3HCMPYG6.js","sourcesContent":["/**\n * GraphQL Utilities Module\n *\n * Provides GraphQL-related utilities for Burdenoff products.\n *\n * @module graphql\n */\n\nexport { createNatsEventTarget } from './nats-event-target.js';\nexport type { NatsEventTarget, NatsEventTargetOptions, MessageSerializer } from './nats-event-target.js';\n\nexport { createRedisStreamsEventTarget } from './redis-streams-event-target.js';\nexport type {\n RedisStreamsEventTarget,\n RedisStreamsEventTargetOptions,\n} from './redis-streams-event-target.js';\n\n// Injectable services for GraphQL Modules\nexport { Logger, createDatabaseService } from './services/index.js';\nexport type { DatabaseService, PrismaTransactionClient } from './services/index.js';\n","/**\n * NATS-based EventTarget Implementation for GraphQL Yoga Distributed PubSub\n *\n * Provides NATS pub/sub infrastructure for GraphQL subscriptions across multiple server instances.\n * This enables horizontal scaling of GraphQL servers while maintaining real-time subscription functionality.\n *\n * Uses event queue abstraction's NatsConnectionManager for connection management\n * while maintaining Core NATS pub/sub for low-latency GraphQL subscriptions\n *\n * Architecture:\n * - Uses NATS Core NATS (not JetStream) for low-latency pub/sub\n * - Implements DOM EventTarget interface required by graphql-yoga's createPubSub\n * - Handles message serialization/deserialization with JSON (customizable)\n * - Manages NATS subscriptions and publishing lifecycle\n * - Includes error handling and reconnection logic\n *\n * Features:\n * - Automatic subscription management per event type\n * - Multiple listener support per event type\n * - Custom serialization support (e.g., SuperJSON for complex types)\n * - Graceful connection handling and cleanup\n * - TypeScript type safety\n *\n * @example\n * ```typescript\n * import { createNatsEventTarget } from '@burdenoff/be-sdk';\n * import { createPubSub } from 'graphql-yoga';\n *\n * const eventTarget = await createNatsEventTarget({\n * natsUrl: 'nats://localhost:4222',\n * });\n *\n * const pubsub = createPubSub({ eventTarget });\n * ```\n *\n * Reference Implementation:\n * Based on @graphql-yoga/redis-event-target pattern\n * https://github.com/graphql-hive/graphql-yoga/tree/main/packages/event-target/redis-event-target\n */\n\nimport type { NatsConnection, Subscription } from 'nats';\nimport { StringCodec } from 'nats';\nimport { logger } from '../logger/index.js';\nimport { NatsConnectionManager } from '../event-queue/implementations/nats/NatsConnection.js';\nimport type { BaseQueueConfig } from '../event-queue/types/config.js';\n\n/**\n * Message Serializer Interface\n *\n * Allows custom serialization for event payloads.\n * Useful for handling non-JSON-serializable data (Dates, BigInts, etc.)\n *\n * @example\n * ```typescript\n * import superjson from 'superjson';\n *\n * const eventTarget = await createNatsEventTarget({\n * natsUrl: 'nats://localhost:4222',\n * serializer: {\n * stringify: (data) => superjson.stringify(data),\n * parse: (message) => superjson.parse(message),\n * }\n * });\n * ```\n */\nexport interface MessageSerializer {\n /**\n * Serialize data to string for transmission over NATS\n */\n stringify: (data: unknown) => string | Promise<string>;\n\n /**\n * Deserialize string message from NATS back to original type\n */\n parse: (message: string) => unknown | Promise<unknown>;\n}\n\n/**\n * NATS EventTarget Options\n */\nexport interface NatsEventTargetOptions {\n /**\n * NATS server URL(s)\n * Examples:\n * - Single server: 'nats://localhost:4222'\n * - Multiple servers: ['nats://server1:4222', 'nats://server2:4222']\n * - With credentials: 'nats://user:password@localhost:4222'\n */\n natsUrl: string | string[];\n\n /**\n * Optional NATS connection options\n * See: https://github.com/nats-io/nats.js#connection-options\n */\n connectionOptions?: {\n /**\n * Connection name for debugging\n * @default 'graphql-pubsub'\n */\n name?: string;\n\n /**\n * Maximum reconnection attempts (-1 for infinite)\n * @default -1\n */\n maxReconnectAttempts?: number;\n\n /**\n * Time to wait between reconnection attempts (ms)\n * @default 2000\n */\n reconnectTimeWait?: number;\n\n /**\n * Ping interval (ms)\n * @default 20000\n */\n pingInterval?: number;\n\n /**\n * Maximum outstanding pings\n * @default 2\n */\n maxPingOut?: number;\n\n /**\n * Connection timeout (ms)\n * @default 20000\n */\n timeout?: number;\n\n /**\n * NATS credentials file contents (JWT + NKEY seed)\n */\n creds?: string;\n\n /**\n * Path to a NATS credentials file\n */\n credsFile?: string;\n };\n\n /**\n * Custom message serializer\n * Defaults to JSON.stringify/parse\n */\n serializer?: MessageSerializer;\n\n /**\n * Subject prefix for all GraphQL subscription topics\n * Useful for namespacing in multi-tenant or multi-app environments\n *\n * @default 'graphql.pubsub'\n *\n * Example: With prefix 'myapp.gql', a subscription to 'MESSAGE_ADDED'\n * will use NATS subject 'myapp.gql.MESSAGE_ADDED'\n */\n subjectPrefix?: string;\n}\n\n/**\n * Event Listener Type\n * Compatible with DOM EventListener interface\n */\ntype EventListener = (event: Event) => void;\n\n/**\n * NATS EventTarget Implementation\n *\n * Implements the EventTarget interface required by graphql-yoga's createPubSub.\n * Uses NATS Core NATS for pub/sub messaging across distributed GraphQL servers.\n */\nexport interface NatsEventTarget {\n /**\n * Subscribe to events of a specific type\n *\n * @param type - Event type (GraphQL subscription trigger)\n * @param listener - Callback function to invoke when event is received\n */\n addEventListener(type: string, listener: EventListener): void;\n\n /**\n * Unsubscribe from events of a specific type\n *\n * @param type - Event type (GraphQL subscription trigger)\n * @param listener - Callback function to remove\n */\n removeEventListener(type: string, listener: EventListener): void;\n\n /**\n * Publish an event to all subscribers\n *\n * @param event - Event to dispatch (must have 'type' and 'detail' properties)\n * @returns Always returns true (EventTarget interface requirement)\n */\n dispatchEvent(event: Event): boolean;\n\n /**\n * Close the NATS connection and cleanup resources\n * Should be called on application shutdown\n */\n close(): Promise<void>;\n\n /**\n * Check if the NATS connection is healthy\n */\n isHealthy(): boolean;\n}\n\n/**\n * Create NATS-based EventTarget for GraphQL Yoga Distributed PubSub\n *\n * This function creates an EventTarget implementation that uses NATS for\n * distributed publish-subscribe across multiple GraphQL server instances.\n *\n * @param options - NATS connection and configuration options\n * @returns Promise resolving to NatsEventTarget instance\n *\n * @example\n * ```typescript\n * // Basic usage\n * const eventTarget = await createNatsEventTarget({\n * natsUrl: 'nats://localhost:4222',\n * });\n *\n * const pubsub = createPubSub({ eventTarget });\n * ```\n *\n * @example\n * ```typescript\n * // With custom configuration\n * const eventTarget = await createNatsEventTarget({\n * natsUrl: ['nats://server1:4222', 'nats://server2:4222'],\n * connectionOptions: {\n * name: 'my-graphql-server',\n * maxReconnectAttempts: 10,\n * reconnectTimeWait: 1000,\n * },\n * subjectPrefix: 'myapp.graphql',\n * serializer: {\n * stringify: (data) => JSON.stringify(data),\n * parse: (msg) => JSON.parse(msg),\n * },\n * });\n * ```\n *\n * @throws {Error} If connection to NATS server fails\n */\nexport async function createNatsEventTarget(options: NatsEventTargetOptions): Promise<NatsEventTarget> {\n const {\n natsUrl,\n connectionOptions = {},\n serializer = {\n stringify: async (data: unknown): Promise<string> => JSON.stringify(data),\n parse: async (message: string): Promise<unknown> => JSON.parse(message),\n },\n subjectPrefix = 'graphql.pubsub',\n } = options;\n\n // NATS StringCodec for encoding/decoding messages\n const sc = StringCodec();\n\n // Default connection options\n const defaultConnectionOptions = {\n name: 'graphql-pubsub',\n maxReconnectAttempts: -1, // Infinite reconnects\n reconnectTimeWait: 2000, // 2 seconds\n pingInterval: 20000, // 20 seconds\n maxPingOut: 2,\n timeout: 20000, // 20 seconds\n };\n\n const mergedConnectionOptions = {\n ...defaultConnectionOptions,\n ...connectionOptions,\n };\n\n // Create connection manager config. Auth is sourced from\n // connectionOptions.user/pass first, then falls back to NATS_USER /\n // NATS_PASSWORD env vars. Required because the bun-bundled `nats`\n // 2.29.x client mis-parses URL-embedded credentials, so the URL must\n // be credential-free and auth must arrive as separate ConnectionOptions.\n const effectiveUser = (mergedConnectionOptions as { user?: string }).user ?? process.env['NATS_USER'];\n const effectivePass =\n (mergedConnectionOptions as { pass?: string; password?: string }).pass ??\n (mergedConnectionOptions as { pass?: string; password?: string }).password ??\n process.env['NATS_PASSWORD'];\n const connectionConfig: BaseQueueConfig = {\n type: 'nats',\n url: Array.isArray(natsUrl) ? (natsUrl[0] ?? 'nats://localhost:4222') : natsUrl,\n name: mergedConnectionOptions.name,\n user: effectiveUser,\n password: effectivePass,\n token: (mergedConnectionOptions as { token?: string }).token ?? process.env['NATS_TOKEN'],\n creds: (mergedConnectionOptions as { creds?: string }).creds ?? process.env['NATS_CREDS'],\n credsFile: (mergedConnectionOptions as { credsFile?: string }).credsFile ?? process.env['NATS_CREDS_FILE'],\n maxReconnectAttempts: mergedConnectionOptions.maxReconnectAttempts,\n reconnectTimeWait: mergedConnectionOptions.reconnectTimeWait,\n };\n\n // Connect to NATS using connection manager\n let connectionManager: NatsConnectionManager;\n let connection: NatsConnection;\n try {\n connectionManager = new NatsConnectionManager(connectionConfig);\n await connectionManager.connect();\n connection = connectionManager.getNatsConnection();\n\n logger.info('[NatsEventTarget] Connected to NATS', {\n url: connectionConfig.url,\n name: connectionConfig.name,\n });\n } catch (error) {\n logger.error('[NatsEventTarget] Failed to connect to NATS', {\n error: error instanceof Error ? error.message : 'Unknown error',\n url: connectionConfig.url,\n });\n throw error;\n }\n\n // Track callbacks per event type\n // Map<eventType, Set<listener>>\n const callbacks = new Map<string, Set<EventListener>>();\n\n // Track NATS subscriptions per event type\n // Map<eventType, Subscription>\n const subscriptions = new Map<string, Subscription>();\n\n /**\n * Get NATS subject for an event type\n * Prefixes the event type with the configured subject prefix\n */\n const getSubject = (eventType: string): string => {\n return `${subjectPrefix}.${eventType}`;\n };\n\n /**\n * Subscribe to NATS subject for an event type\n * Creates a new NATS subscription if one doesn't exist\n */\n const subscribeToNats = (eventType: string): void => {\n // Check if already subscribed\n if (subscriptions.has(eventType)) {\n return;\n }\n\n const subject = getSubject(eventType);\n\n try {\n // Create NATS subscription\n const subscription = connection.subscribe(subject);\n\n // Store subscription\n subscriptions.set(eventType, subscription);\n\n logger.debug('[NatsEventTarget] Subscribed to NATS subject', {\n eventType,\n subject,\n });\n\n // Process messages asynchronously\n void (async (): Promise<void> => {\n try {\n for await (const msg of subscription) {\n try {\n // Decode and deserialize message\n const messageData = sc.decode(msg.data);\n const payload = await serializer.parse(messageData);\n\n // Get callbacks for this event type\n const eventCallbacks = callbacks.get(eventType);\n\n if (eventCallbacks && eventCallbacks.size > 0) {\n // Create CustomEvent with payload\n const event = new CustomEvent(eventType, {\n detail: payload,\n });\n\n // Dispatch to all registered callbacks\n for (const callback of Array.from(eventCallbacks)) {\n try {\n callback(event);\n } catch (callbackError) {\n logger.error('[NatsEventTarget] Error in event callback', {\n eventType,\n error: callbackError instanceof Error ? callbackError.message : 'Unknown error',\n });\n }\n }\n }\n } catch (messageError) {\n logger.error('[NatsEventTarget] Error processing NATS message', {\n eventType,\n subject,\n error: messageError instanceof Error ? messageError.message : 'Unknown error',\n });\n }\n }\n } catch (subscriptionError) {\n logger.error('[NatsEventTarget] Error in NATS subscription loop', {\n eventType,\n subject,\n error: subscriptionError instanceof Error ? subscriptionError.message : 'Unknown error',\n });\n }\n })();\n } catch (error) {\n logger.error('[NatsEventTarget] Failed to subscribe to NATS subject', {\n eventType,\n subject,\n error: error instanceof Error ? error.message : 'Unknown error',\n });\n throw error;\n }\n };\n\n /**\n * Unsubscribe from NATS subject for an event type\n * Only unsubscribes if no more callbacks are registered\n */\n const unsubscribeFromNats = (eventType: string): void => {\n const subscription = subscriptions.get(eventType);\n\n if (subscription) {\n try {\n subscription.unsubscribe();\n subscriptions.delete(eventType);\n\n logger.debug('[NatsEventTarget] Unsubscribed from NATS subject', {\n eventType,\n subject: getSubject(eventType),\n });\n } catch (error) {\n logger.error('[NatsEventTarget] Failed to unsubscribe from NATS subject', {\n eventType,\n error: error instanceof Error ? error.message : 'Unknown error',\n });\n }\n }\n };\n\n /**\n * EventTarget Implementation\n */\n const eventTarget: NatsEventTarget = {\n /**\n * Add event listener (subscribe)\n */\n addEventListener(type: string, listener: EventListener): void {\n try {\n // Get or create callback set for this event type\n let eventCallbacks = callbacks.get(type);\n\n if (!eventCallbacks) {\n eventCallbacks = new Set();\n callbacks.set(type, eventCallbacks);\n\n // First listener for this event type - subscribe to NATS\n subscribeToNats(type);\n }\n\n // Add listener to set\n eventCallbacks.add(listener);\n\n logger.debug('[NatsEventTarget] Event listener added', {\n eventType: type,\n listenerCount: eventCallbacks.size,\n });\n } catch (error) {\n logger.error('[NatsEventTarget] Failed to add event listener', {\n eventType: type,\n error: error instanceof Error ? error.message : 'Unknown error',\n });\n throw error;\n }\n },\n\n /**\n * Remove event listener (unsubscribe)\n */\n removeEventListener(type: string, listener: EventListener): void {\n try {\n const eventCallbacks = callbacks.get(type);\n\n if (eventCallbacks) {\n // Remove listener from set\n eventCallbacks.delete(listener);\n\n const remainingListeners = eventCallbacks.size;\n\n logger.debug('[NatsEventTarget] Event listener removed', {\n eventType: type,\n remainingListeners,\n });\n\n // If no more listeners, unsubscribe from NATS and cleanup\n if (remainingListeners === 0) {\n callbacks.delete(type);\n unsubscribeFromNats(type);\n }\n }\n } catch (error) {\n logger.error('[NatsEventTarget] Failed to remove event listener', {\n eventType: type,\n error: error instanceof Error ? error.message : 'Unknown error',\n });\n throw error;\n }\n },\n\n /**\n * Dispatch event (publish)\n */\n dispatchEvent(event: Event): boolean {\n try {\n const eventType = event.type;\n const subject = getSubject(eventType);\n\n // Extract payload from CustomEvent detail or use event itself\n const payload = 'detail' in event ? (event as CustomEvent).detail : event;\n\n // Serialize payload (fire and forget for async serializers)\n void (async (): Promise<void> => {\n try {\n const message = await serializer.stringify(payload);\n\n // Encode and publish to NATS\n const data = sc.encode(message);\n connection.publish(subject, data);\n\n logger.debug('[NatsEventTarget] Event dispatched to NATS', {\n eventType,\n subject,\n });\n } catch (serializeError) {\n logger.error('[NatsEventTarget] Failed to serialize event for dispatch', {\n eventType,\n error: serializeError instanceof Error ? serializeError.message : 'Unknown error',\n });\n }\n })();\n\n return true;\n } catch (error) {\n logger.error('[NatsEventTarget] Failed to dispatch event', {\n eventType: event.type,\n error: error instanceof Error ? error.message : 'Unknown error',\n });\n throw error;\n }\n },\n\n /**\n * Close NATS connection and cleanup\n */\n async close(): Promise<void> {\n try {\n logger.info('[NatsEventTarget] Closing NATS connection...');\n\n // Unsubscribe from all subjects\n for (const [eventType, subscription] of Array.from(subscriptions.entries())) {\n try {\n subscription.unsubscribe();\n logger.debug('[NatsEventTarget] Unsubscribed from subject', {\n eventType,\n });\n } catch (error) {\n logger.error('[NatsEventTarget] Error unsubscribing from subject', {\n eventType,\n error: error instanceof Error ? error.message : 'Unknown error',\n });\n }\n }\n\n // Clear all subscriptions and callbacks\n subscriptions.clear();\n callbacks.clear();\n\n // Disconnect using connection manager\n await connectionManager.disconnect();\n\n logger.info('[NatsEventTarget] NATS connection closed successfully');\n } catch (error) {\n logger.error('[NatsEventTarget] Failed to close NATS connection', {\n error: error instanceof Error ? error.message : 'Unknown error',\n });\n throw error;\n }\n },\n\n /**\n * Check if connection is healthy\n */\n isHealthy(): boolean {\n return !connection.isClosed();\n },\n };\n\n return eventTarget;\n}\n","/**\n * Redis Streams-based EventTarget for graphql-yoga distributed PubSub.\n *\n * Each server tails a per-event-type stream with `XREAD BLOCK ... $` (no\n * consumer group) so every instance receives every dispatch — the fan-out\n * semantics GraphQL subscriptions require.\n *\n * For durable inter-svc events use `event-queue/createPublisher` instead.\n */\nimport { logger } from '../logger/index.js';\nimport { RedisStreamsConnection } from '../event-queue/implementations/redis-streams/RedisStreamsConnection.js';\n\nexport interface RedisStreamsEventTarget {\n addEventListener(type: string, listener: (event: Event) => void): void;\n removeEventListener(type: string, listener: (event: Event) => void): void;\n dispatchEvent(event: Event): boolean;\n close(): Promise<void>;\n isHealthy(): boolean;\n}\n\nexport interface RedisStreamsEventTargetOptions {\n /** Redis connection URL. Defaults to `REDIS_URL` env. */\n redisUrl?: string;\n /** Optional password override. */\n password?: string;\n /** Subject prefix; keys become `<prefix>.<type>` mapped via `:` separator. */\n subjectPrefix?: string;\n /** Approximate MAXLEN trim for each pubsub stream. Default 1000. */\n maxLen?: number;\n /** Per-event serialiser. */\n serializer?: {\n stringify: (data: unknown) => string | Promise<string>;\n parse: (msg: string) => unknown | Promise<unknown>;\n };\n}\n\nexport async function createRedisStreamsEventTarget(\n options: RedisStreamsEventTargetOptions = {}\n): Promise<RedisStreamsEventTarget> {\n const url = options.redisUrl ?? process.env['REDIS_URL'];\n if (!url) throw new Error('[RedisStreamsEventTarget] redisUrl or REDIS_URL is required');\n const prefix = options.subjectPrefix ?? 'graphql.pubsub';\n const maxLen = options.maxLen ?? 1000;\n const serializer = options.serializer ?? {\n stringify: (d: unknown): string => JSON.stringify(d),\n parse: (m: string): unknown => JSON.parse(m),\n };\n\n const conn = new RedisStreamsConnection({\n type: 'redis-streams',\n url,\n password: options.password ?? process.env['REDIS_PASSWORD'],\n name: 'graphql-pubsub',\n });\n await conn.connect();\n const cmd = conn.getClient();\n\n const streamKey = (type: string): string => `boff:pubsub:${prefix}:${type.replace(/\\./g, ':')}`;\n\n const listeners = new Map<string, Set<(event: Event) => void>>();\n const readers = new Map<string, { stop: () => void }>();\n let closed = false;\n\n function startReader(type: string): void {\n if (readers.has(type) || closed) return;\n let stopped = false;\n const stream = streamKey(type);\n\n const loop = async (): Promise<void> => {\n const blockingClient = await conn.makeBlockingClient();\n let lastId = '$';\n try {\n while (!stopped && !closed) {\n let raw: Array<[string, Array<[string, string[]]>]> | null = null;\n try {\n raw = (await blockingClient.xreadgroup(\n // pretend-arg pattern: we actually want XREAD, fall through\n 'COUNT',\n 50,\n 'BLOCK',\n 5000,\n 'STREAMS',\n stream,\n lastId\n )) as Array<[string, Array<[string, string[]]>]> | null;\n } catch {\n // Some ioredis typings make xreadgroup the only signature; fall back to xread via raw command.\n try {\n raw = (await (blockingClient as unknown as {\n call: (...args: unknown[]) => Promise<unknown>;\n }).call('XREAD', 'COUNT', 50, 'BLOCK', 5000, 'STREAMS', stream, lastId)) as Array<\n [string, Array<[string, string[]]>]\n > | null;\n } catch (err) {\n logger.debug('[RedisStreamsEventTarget] xread error', {\n stream,\n error: err instanceof Error ? err.message : String(err),\n });\n await new Promise((r) => setTimeout(r, 1000));\n continue;\n }\n }\n if (!raw) continue;\n for (const [, entries] of raw) {\n for (const [id, rawFields] of entries) {\n lastId = id;\n const fields: Record<string, string> = {};\n for (let i = 0; i + 1 < rawFields.length; i += 2) {\n fields[rawFields[i]!] = rawFields[i + 1]!;\n }\n const payload = await serializer.parse(fields['payload'] ?? 'null');\n const cbs = listeners.get(type);\n if (!cbs) continue;\n const ev = new CustomEvent(type, { detail: payload });\n for (const cb of Array.from(cbs)) {\n try {\n cb(ev);\n } catch (cbErr) {\n logger.error('[RedisStreamsEventTarget] listener error', {\n type,\n error: cbErr instanceof Error ? cbErr.message : String(cbErr),\n });\n }\n }\n }\n }\n }\n } finally {\n try {\n blockingClient.disconnect();\n } catch {\n /* ignore */\n }\n }\n };\n\n readers.set(type, {\n stop: (): void => {\n stopped = true;\n },\n });\n void loop().catch((err) => {\n logger.error('[RedisStreamsEventTarget] reader crashed', {\n type,\n error: err instanceof Error ? err.message : String(err),\n });\n });\n }\n\n function stopReader(type: string): void {\n const r = readers.get(type);\n if (r) {\n r.stop();\n readers.delete(type);\n }\n }\n\n const target: RedisStreamsEventTarget = {\n addEventListener(type, listener): void {\n let set = listeners.get(type);\n if (!set) {\n set = new Set();\n listeners.set(type, set);\n startReader(type);\n }\n set.add(listener);\n },\n removeEventListener(type, listener): void {\n const set = listeners.get(type);\n if (!set) return;\n set.delete(listener);\n if (set.size === 0) {\n listeners.delete(type);\n stopReader(type);\n }\n },\n dispatchEvent(event): boolean {\n const detail = 'detail' in event ? (event as CustomEvent).detail : event;\n void (async (): Promise<void> => {\n try {\n const payload = await serializer.stringify(detail);\n await cmd.xadd(streamKey(event.type), 'MAXLEN', '~', maxLen, '*', 'payload', payload);\n } catch (err) {\n logger.error('[RedisStreamsEventTarget] dispatch failed', {\n type: event.type,\n error: err instanceof Error ? err.message : String(err),\n });\n }\n })();\n return true;\n },\n async close(): Promise<void> {\n closed = true;\n for (const r of readers.values()) r.stop();\n readers.clear();\n listeners.clear();\n await conn.disconnect();\n },\n isHealthy(): boolean {\n return conn.isConnected();\n },\n };\n\n logger.info('[RedisStreamsEventTarget] ready', { prefix });\n return target;\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/event-queue/index.ts","../src/event-queue/module-events.ts","../src/event-queue/events.ts"],"names":["createGraphEventEmitter","ModuleEventsService","productSource","subjectPrefix","loggerLabel","publisher","connected","connecting","config","moduleName","charAt","toUpperCase","slice","natsServers","process","env","EventQueueFactory","createPublisherFromEnv","logger","info","MemoryEventPublisher","ensureConnected","connect","then","publish","subject","payload","data","buildPayload","type","action","id","userId","tenantId","workspaceId","correlationId","metadata","timestamp","Date","toISOString","buildSubject","entityType","normalizedType","replace","_match","p1","offset","toLowerCase","publishCreated","publishUpdated","publishDeleted","publishCustom","publishBulkCreated","_entityType","items","close","disconnect","healthCheck","result","isHealthy","status","healthy","message","error","createModuleEventsService","EventPriority","EventsModule","client","context","createStream","name","subjects","options","debug","mutation","variables","input","maxMessages","maxBytes","maxAge","storageType","replicas","response","query","getStreamInfo","deleteStream","purgeStream","sequence","purgedCount","createConsumer","streamName","consumerName","queueGroup","durableName","startPosition","ackMode","maxDeliver","ackWait","deleteConsumer","ackMessage","nakMessage","getConsumerInfo","isRedisStreamsSelected","raw","createPublisher","stream","consumer","createConsumerFromEnv","MemoryEventConsumer"],"mappings":"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","file":"chunk-3JBKPVWY.js","sourcesContent":["/**\n * Event Queue - Public API\n *\n * This module provides a complete abstraction over event queue systems (NATS, RabbitMQ, Kafka, SQS, etc.)\n * allowing the application to publish and consume events without direct dependency on any specific queue implementation.\n *\n * Usage:\n *\n * // Publishing events (workspaces-backend)\n * import { createPublisher } from './utils/event-queue';\n *\n * const publisher = createPublisher();\n * await publisher.connect();\n *\n * await publisher.publish({\n * subject: 'workspace.created',\n * data: { workspaceId: '123', name: 'My Workspace' },\n * metadata: { userId: 'user-123', source: 'api' }\n * });\n *\n * // Consuming events (workspaces-workers)\n * import { createConsumer } from './core/event-queue';\n *\n * const consumer = createConsumer('WORKSPACE_EVENTS', 'workspace-consumer');\n * await consumer.connect();\n *\n * await consumer.subscribe({\n * subject: 'workspace.*',\n * handler: async (event) => {\n * logger.log('Received event:', event.data);\n * await event.ack();\n * }\n * });\n */\n// Import factory for use in convenience functions\nimport { EventQueueFactory } from './factory/EventQueueFactory.js';\n// Import implementations for use in convenience functions\nimport { MemoryEventPublisher, MemoryEventConsumer } from './implementations/memory/MemoryEventQueue.js';\n// Import interfaces for type annotations\nimport type { IEventConsumer } from './interfaces/IEventConsumer.js';\nimport type { IEventPublisher } from './interfaces/IEventPublisher.js';\n\n// Export interfaces\nexport type { IEventQueue } from './interfaces/IEventQueue.js';\nexport type { IEventPublisher, PublishOptions } from './interfaces/IEventPublisher.js';\nexport type { IEventConsumer, ISubscription } from './interfaces/IEventConsumer.js';\n\n// Export types\nexport type {\n EventMessage,\n EventMetadata,\n AcknowledgeableEvent,\n EventHandler,\n StreamConfig,\n SubscriptionOptions,\n NATSConsumerOptions,\n} from './types/events.js';\n\nexport { QueueType } from './types/config.js';\n\nexport type {\n BaseQueueConfig,\n PublisherConfig,\n ConsumerConfig,\n EventQueueHealthCheckResult,\n QueueStatistics,\n} from './types/config.js';\n\n// Backwards compatibility alias\nexport type { EventQueueHealthCheckResult as HealthCheckResult } from './types/config.js';\n\n// Export factory\nexport { EventQueueFactory } from './factory/EventQueueFactory.js';\n\n// Export NATS implementations (in case direct access is needed)\nexport { NatsEventPublisher } from './implementations/nats/NatsEventPublisher.js';\nexport { NatsEventConsumer } from './implementations/nats/NatsEventConsumer.js';\n\n// Export Redis Streams implementations\nexport {\n RedisStreamsEventPublisher,\n RedisStreamsEventConsumer,\n RedisStreamsConnection,\n streamKey as redisStreamKey,\n dlqKey as redisDlqKey,\n} from './implementations/redis-streams/index.js';\n\n// Export Memory implementations (for development/testing or fallback)\nexport {\n MemoryEventBus,\n MemoryEventQueue,\n MemoryEventPublisher,\n MemoryEventConsumer,\n createMemoryPublisher,\n createMemoryConsumer,\n createGraphEventEmitter as createMemoryGraphEventEmitter,\n} from './implementations/memory/MemoryEventQueue.js';\n\n// Export NATS-based Graph Event Emitter (recommended for production)\nexport {\n NatsGraphEventEmitter,\n getGraphEventEmitter,\n createGraphEventEmitter,\n resetGraphEventEmitter,\n} from './graph-emitter.js';\nexport type { GraphEventEmitter, EntityEventType, EntityEventRbacMetadata } from './graph-emitter.js';\n\n// Export Module Events Service\nexport { ModuleEventsService, createModuleEventsService } from './module-events.js';\nexport type { ModuleEventPayload, BulkEventPayload, ModuleEventsConfig } from './module-events.js';\n\n// Export high-level Events Module (GraphQL-based event publishing)\nexport { EventsModule } from './events.js';\nexport {\n EventPriority,\n type PublishEventOptions,\n type SubscribeOptions,\n type EventMessage as GraphQLEventMessage,\n type PublishResult,\n type StreamInfo,\n} from './events.js';\n\nfunction isRedisStreamsSelected(): boolean {\n const raw = (process.env['EVENT_QUEUE_TYPE'] ?? process.env['QUEUE_TYPE'] ?? '').toLowerCase();\n if (raw === 'redis-streams' || raw === 'redis' || raw === 'streams') return true;\n if (raw === 'nats') return false;\n // Auto-select redis-streams when REDIS_URL is set and NATS is not.\n return !!process.env['REDIS_URL'] && !process.env['NATS_URL'] && !process.env['NATS_SERVERS'];\n}\n\n/**\n * Create an event publisher from environment configuration.\n *\n * Backend resolution:\n * - `EVENT_QUEUE_TYPE=redis-streams` → Redis Streams\n * - `EVENT_QUEUE_TYPE=nats` → NATS\n * - `REDIS_URL` set & no `NATS_URL` → Redis Streams\n * - `NATS_URL`/`NATS_SERVERS` set → NATS\n * - none of the above → in-memory (dev/test fallback)\n */\nexport function createPublisher(): IEventPublisher {\n if (isRedisStreamsSelected() && process.env['REDIS_URL']) {\n return EventQueueFactory.createPublisherFromEnv();\n }\n const natsServers = process.env['NATS_SERVERS'] || process.env['NATS_URL'];\n if (!natsServers) {\n return new MemoryEventPublisher();\n }\n if (!process.env['NATS_SERVERS'] && process.env['NATS_URL']) {\n process.env['NATS_SERVERS'] = process.env['NATS_URL'];\n }\n return EventQueueFactory.createPublisherFromEnv();\n}\n\n/**\n * Create an event consumer from environment configuration.\n * See `createPublisher` for backend-resolution semantics.\n */\nexport function createConsumer(stream: string, consumer: string): IEventConsumer {\n if (isRedisStreamsSelected() && process.env['REDIS_URL']) {\n return EventQueueFactory.createConsumerFromEnv(stream, consumer);\n }\n const natsServers = process.env['NATS_SERVERS'] || process.env['NATS_URL'];\n if (!natsServers) {\n return new MemoryEventConsumer(stream, consumer);\n }\n if (!process.env['NATS_SERVERS'] && process.env['NATS_URL']) {\n process.env['NATS_SERVERS'] = process.env['NATS_URL'];\n }\n return EventQueueFactory.createConsumerFromEnv(stream, consumer);\n}\n","/**\n * Module Events Service\n *\n * Generic event publishing service that modules can configure to publish\n * domain-specific events to NATS JetStream.\n *\n * @module event-queue/module-events\n * @category Events\n *\n * @example\n * ```typescript\n * import { createModuleEventsService } from '@burdenoff/be-sdk/event-queue';\n *\n * // Create a configured event service for the tags module\n * const tagsEventsService = createModuleEventsService({\n * moduleName: 'tags',\n * entityTypes: ['Tag', 'Vocabulary', 'Assignment'],\n * });\n *\n * // Publish events\n * await tagsEventsService.publishCreated('Tag', tagId, tagData, userId);\n * await tagsEventsService.publishUpdated('Vocabulary', vocabId, vocabData, userId);\n * ```\n */\nimport { logger } from '../logger/index.js';\nimport type { IEventPublisher } from './interfaces/IEventPublisher.js';\nimport { MemoryEventPublisher } from './implementations/memory/MemoryEventQueue.js';\nimport { EventQueueFactory } from './factory/EventQueueFactory.js';\n\n/**\n * Event payload structure for module events\n */\nexport interface ModuleEventPayload {\n /** Entity ID */\n id: string;\n /** Entity type (e.g., 'UniversalTag', 'UniversalTagVocabulary') */\n type: string;\n /** Action performed */\n action: 'created' | 'updated' | 'deleted' | 'assigned' | 'removed' | string;\n /** Entity data */\n data: Record<string, unknown>;\n /** Event metadata */\n metadata: {\n tenantId?: string;\n workspaceId?: string;\n userId: string;\n timestamp: string;\n productSource: string;\n correlationId?: string;\n };\n}\n\n/**\n * Bulk event payload structure\n */\nexport interface BulkEventPayload {\n /** Items in the bulk operation */\n items: Array<{ id: string; data: Record<string, unknown> }>;\n /** Event metadata */\n metadata: {\n tenantId?: string;\n workspaceId?: string;\n userId: string;\n timestamp: string;\n productSource: string;\n };\n}\n\n/**\n * Configuration for module events service\n */\nexport interface ModuleEventsConfig {\n /** Module name (used as productSource and in subject prefixes) */\n moduleName: string;\n /** Subject prefix override (defaults to moduleName) */\n subjectPrefix?: string;\n /** Custom logger label */\n loggerLabel?: string;\n}\n\n/**\n * Generic Module Events Service\n *\n * Provides a consistent interface for publishing domain events across all modules.\n * Automatically falls back to in-memory publisher when NATS is not configured.\n */\nexport class ModuleEventsService {\n private readonly productSource: string;\n private readonly subjectPrefix: string;\n private readonly loggerLabel: string;\n private publisher: IEventPublisher;\n private connected = false;\n private connecting: Promise<void> | null = null;\n\n constructor(config: ModuleEventsConfig) {\n this.productSource = config.moduleName;\n this.subjectPrefix = config.subjectPrefix || config.moduleName;\n this.loggerLabel =\n config.loggerLabel || `${config.moduleName.charAt(0).toUpperCase()}${config.moduleName.slice(1)}EventsService`;\n\n // Initialize publisher based on environment\n const natsServers = process.env['NATS_SERVERS'] || process.env['NATS_URL'];\n if (natsServers) {\n // Ensure NATS_SERVERS is set for downstream factory\n if (!process.env['NATS_SERVERS'] && process.env['NATS_URL']) {\n process.env['NATS_SERVERS'] = process.env['NATS_URL'];\n }\n this.publisher = EventQueueFactory.createPublisherFromEnv();\n logger.info(`[${this.loggerLabel}] Using NATS publisher`);\n } else {\n this.publisher = new MemoryEventPublisher();\n logger.info(`[${this.loggerLabel}] Using in-memory publisher (NATS_SERVERS not configured)`);\n }\n }\n\n /**\n * Ensure publisher is connected before publishing\n */\n private async ensureConnected(): Promise<void> {\n if (this.connected) {\n return;\n }\n\n if (this.connecting) {\n await this.connecting;\n return;\n }\n\n this.connecting = this.publisher.connect().then(() => {\n this.connected = true;\n this.connecting = null;\n logger.info(`[${this.loggerLabel}] Publisher connected`);\n });\n\n await this.connecting;\n }\n\n /**\n * Publish an event to the queue\n */\n private async publish(subject: string, payload: unknown): Promise<void> {\n await this.ensureConnected();\n await this.publisher.publish({\n subject,\n data: payload as Record<string, unknown>,\n });\n }\n\n /**\n * Build event payload\n */\n private buildPayload(\n type: string,\n action: string,\n id: string,\n data: Record<string, unknown>,\n userId: string,\n tenantId?: string,\n workspaceId?: string,\n correlationId?: string\n ): ModuleEventPayload {\n return {\n id,\n type,\n action,\n data,\n metadata: {\n tenantId,\n workspaceId,\n userId,\n timestamp: new Date().toISOString(),\n productSource: this.productSource,\n ...(correlationId && { correlationId }),\n },\n };\n }\n\n /**\n * Build subject string\n */\n private buildSubject(entityType: string, action: string): string {\n // Convert entityType from PascalCase to lowercase (e.g., UniversalTag -> tag)\n const normalizedType = entityType\n .replace(/^Universal/, '')\n .replace(/([A-Z])/g, (_match, p1, offset) => (offset > 0 ? '_' : '') + (p1 as string).toLowerCase())\n .replace(/^_/, '');\n return `${this.subjectPrefix}.${normalizedType}.${action}`;\n }\n\n /**\n * Publish entity created event\n */\n async publishCreated(\n entityType: string,\n id: string,\n data: Record<string, unknown>,\n userId: string,\n tenantId?: string,\n workspaceId?: string\n ): Promise<void> {\n const payload = this.buildPayload(entityType, 'created', id, data, userId, tenantId, workspaceId);\n await this.publish(this.buildSubject(entityType, 'created'), payload);\n }\n\n /**\n * Publish entity updated event\n */\n async publishUpdated(\n entityType: string,\n id: string,\n data: Record<string, unknown>,\n userId: string,\n tenantId?: string,\n workspaceId?: string\n ): Promise<void> {\n const payload = this.buildPayload(entityType, 'updated', id, data, userId, tenantId, workspaceId);\n await this.publish(this.buildSubject(entityType, 'updated'), payload);\n }\n\n /**\n * Publish entity deleted event\n */\n async publishDeleted(\n entityType: string,\n id: string,\n userId: string,\n tenantId?: string,\n workspaceId?: string\n ): Promise<void> {\n const payload = this.buildPayload(entityType, 'deleted', id, {}, userId, tenantId, workspaceId);\n await this.publish(this.buildSubject(entityType, 'deleted'), payload);\n }\n\n /**\n * Publish custom action event\n */\n async publishCustom(\n entityType: string,\n action: string,\n id: string,\n data: Record<string, unknown>,\n userId: string,\n tenantId?: string,\n workspaceId?: string\n ): Promise<void> {\n const payload = this.buildPayload(entityType, action, id, data, userId, tenantId, workspaceId);\n await this.publish(this.buildSubject(entityType, action), payload);\n }\n\n /**\n * Publish bulk created event\n */\n async publishBulkCreated(\n _entityType: string,\n items: Array<{ id: string; data: Record<string, unknown> }>,\n userId: string,\n tenantId?: string,\n workspaceId?: string\n ): Promise<void> {\n const payload: BulkEventPayload = {\n items,\n metadata: {\n tenantId,\n workspaceId,\n userId,\n timestamp: new Date().toISOString(),\n productSource: this.productSource,\n },\n };\n await this.publish(`${this.subjectPrefix}.bulk.created`, payload);\n }\n\n /**\n * Close event queue connection\n */\n async close(): Promise<void> {\n if (this.connected) {\n await this.publisher.disconnect();\n this.connected = false;\n logger.info(`[${this.loggerLabel}] Publisher disconnected`);\n }\n }\n\n /**\n * Get health check status\n */\n async healthCheck(): Promise<{ healthy: boolean; message: string }> {\n const result = await this.publisher.healthCheck();\n const isHealthy = result.status === 'healthy';\n return {\n healthy: isHealthy,\n message: result.error || (isHealthy ? 'Healthy' : 'Unhealthy'),\n };\n }\n}\n\n/**\n * Create a module events service instance\n */\nexport function createModuleEventsService(config: ModuleEventsConfig): ModuleEventsService {\n return new ModuleEventsService(config);\n}\n","/**\n * Events Module\n * Helpers for sending events to NATS JetStream queue\n */\n\nimport type { BurdenoffGraphQLClient } from '../client/graphql.js';\nimport type { SDKContext } from '../types/index.js';\nimport { logger } from '../logger/index.js';\n\nexport enum EventPriority {\n LOW = 'low',\n NORMAL = 'normal',\n HIGH = 'high',\n CRITICAL = 'critical',\n}\n\nexport interface PublishEventOptions {\n /** Event subject/topic */\n subject: string;\n /** Event payload */\n data: Record<string, unknown>;\n /** Event priority */\n priority?: EventPriority;\n /** Event metadata */\n metadata?: Record<string, unknown>;\n /** Delay delivery by milliseconds */\n delay?: number;\n /** Message ID (for deduplication) */\n messageId?: string;\n /** Workspace context */\n workspaceId?: string;\n /** Organization context */\n organizationId?: string;\n}\n\nexport interface SubscribeOptions {\n /** Subject pattern to subscribe to */\n subject: string;\n /** Queue group name */\n queueGroup?: string;\n /** Durable consumer name */\n durableName?: string;\n /** Start from specific position */\n startPosition?: 'first' | 'last' | 'new';\n /** Acknowledge mode */\n ackMode?: 'explicit' | 'auto';\n /** Max messages to deliver */\n maxDeliver?: number;\n /** Acknowledgment timeout in milliseconds */\n ackWait?: number;\n}\n\nexport interface EventMessage {\n id: string;\n subject: string;\n data: Record<string, unknown>;\n priority: EventPriority;\n metadata?: Record<string, unknown>;\n workspaceId?: string;\n organizationId?: string;\n publishedAt: string;\n publishedBy?: string;\n}\n\nexport interface PublishResult {\n messageId: string;\n subject: string;\n sequence: number;\n timestamp: string;\n}\n\nexport interface StreamInfo {\n name: string;\n subjects: string[];\n messageCount: number;\n byteCount: number;\n firstSequence: number;\n lastSequence: number;\n consumerCount: number;\n}\n\n/**\n * Events Module\n */\nexport class EventsModule {\n constructor(\n private client: BurdenoffGraphQLClient,\n private context: SDKContext\n ) {}\n\n /**\n * Create stream\n */\n public async createStream(\n name: string,\n subjects: string[],\n options?: {\n maxMessages?: number;\n maxBytes?: number;\n maxAge?: number;\n storageType?: 'file' | 'memory';\n replicas?: number;\n }\n ): Promise<StreamInfo> {\n logger.debug('[Events] Creating stream', { name, subjects });\n\n const mutation = `\n mutation CreateStream($input: CreateStreamInput!) {\n createStream(input: $input) {\n name\n subjects\n messageCount\n byteCount\n firstSequence\n lastSequence\n consumerCount\n }\n }\n `;\n\n const variables = {\n input: {\n name,\n subjects,\n maxMessages: options?.maxMessages,\n maxBytes: options?.maxBytes,\n maxAge: options?.maxAge,\n storageType: options?.storageType || 'file',\n replicas: options?.replicas || 1,\n },\n };\n\n const response = await this.client.query<{ createStream: StreamInfo }>(mutation, variables, this.context);\n\n logger.info('[Events] Stream created', { name });\n\n return response.createStream;\n }\n\n /**\n * Get stream info\n */\n public async getStreamInfo(name: string): Promise<StreamInfo> {\n logger.debug('[Events] Getting stream info', { name });\n\n const query = `\n query GetStreamInfo($name: String!) {\n getStreamInfo(name: $name) {\n name\n subjects\n messageCount\n byteCount\n firstSequence\n lastSequence\n consumerCount\n }\n }\n `;\n\n const response = await this.client.query<{ getStreamInfo: StreamInfo }>(query, { name }, this.context);\n\n return response.getStreamInfo;\n }\n\n /**\n * Delete stream\n */\n public async deleteStream(name: string): Promise<boolean> {\n logger.debug('[Events] Deleting stream', { name });\n\n const mutation = `\n mutation DeleteStream($name: String!) {\n deleteStream(name: $name) {\n success\n }\n }\n `;\n\n await this.client.query(mutation, { name }, this.context);\n\n logger.info('[Events] Stream deleted', { name });\n\n return true;\n }\n\n /**\n * Purge stream messages\n */\n public async purgeStream(name: string, options?: { subject?: string; sequence?: number }): Promise<number> {\n logger.debug('[Events] Purging stream', { name, options });\n\n const mutation = `\n mutation PurgeStream($name: String!, $subject: String, $sequence: Int) {\n purgeStream(name: $name, subject: $subject, sequence: $sequence) {\n purgedCount\n }\n }\n `;\n\n const response = await this.client.query<{ purgeStream: { purgedCount: number } }>(\n mutation,\n { name, subject: options?.subject, sequence: options?.sequence },\n this.context\n );\n\n logger.info('[Events] Stream purged', { name, purgedCount: response.purgeStream.purgedCount });\n\n return response.purgeStream.purgedCount;\n }\n\n /**\n * Create consumer\n */\n public async createConsumer(\n streamName: string,\n consumerName: string,\n options: SubscribeOptions\n ): Promise<{ name: string; pending: number }> {\n logger.debug('[Events] Creating consumer', { streamName, consumerName });\n\n const mutation = `\n mutation CreateConsumer($input: CreateConsumerInput!) {\n createConsumer(input: $input) {\n name\n pending\n }\n }\n `;\n\n const variables = {\n input: {\n streamName,\n consumerName,\n subject: options.subject,\n queueGroup: options.queueGroup,\n durableName: options.durableName,\n startPosition: options.startPosition || 'last',\n ackMode: options.ackMode || 'explicit',\n maxDeliver: options.maxDeliver || 5,\n ackWait: options.ackWait || 30000,\n },\n };\n\n const response = await this.client.query<{ createConsumer: { name: string; pending: number } }>(\n mutation,\n variables,\n this.context\n );\n\n logger.info('[Events] Consumer created', { consumerName });\n\n return response.createConsumer;\n }\n\n /**\n * Delete consumer\n */\n public async deleteConsumer(streamName: string, consumerName: string): Promise<boolean> {\n logger.debug('[Events] Deleting consumer', { streamName, consumerName });\n\n const mutation = `\n mutation DeleteConsumer($streamName: String!, $consumerName: String!) {\n deleteConsumer(streamName: $streamName, consumerName: $consumerName) {\n success\n }\n }\n `;\n\n await this.client.query(mutation, { streamName, consumerName }, this.context);\n\n logger.info('[Events] Consumer deleted', { consumerName });\n\n return true;\n }\n\n /**\n * Acknowledge message\n */\n public async ackMessage(streamName: string, consumerName: string, sequence: number): Promise<boolean> {\n logger.debug('[Events] Acknowledging message', { streamName, consumerName, sequence });\n\n const mutation = `\n mutation AckMessage($streamName: String!, $consumerName: String!, $sequence: Int!) {\n ackMessage(streamName: $streamName, consumerName: $consumerName, sequence: $sequence) {\n success\n }\n }\n `;\n\n await this.client.query(mutation, { streamName, consumerName, sequence }, this.context);\n\n return true;\n }\n\n /**\n * Negative acknowledge message (requeue)\n */\n public async nakMessage(streamName: string, consumerName: string, sequence: number): Promise<boolean> {\n logger.debug('[Events] Negative acknowledging message', { streamName, consumerName, sequence });\n\n const mutation = `\n mutation NakMessage($streamName: String!, $consumerName: String!, $sequence: Int!) {\n nakMessage(streamName: $streamName, consumerName: $consumerName, sequence: $sequence) {\n success\n }\n }\n `;\n\n await this.client.query(mutation, { streamName, consumerName, sequence }, this.context);\n\n return true;\n }\n\n /**\n * Get consumer info\n */\n public async getConsumerInfo(\n streamName: string,\n consumerName: string\n ): Promise<{\n name: string;\n pending: number;\n redelivered: number;\n numAckPending: number;\n }> {\n logger.debug('[Events] Getting consumer info', { streamName, consumerName });\n\n const query = `\n query GetConsumerInfo($streamName: String!, $consumerName: String!) {\n getConsumerInfo(streamName: $streamName, consumerName: $consumerName) {\n name\n pending\n redelivered\n numAckPending\n }\n }\n `;\n\n const response = await this.client.query<{\n getConsumerInfo: {\n name: string;\n pending: number;\n redelivered: number;\n numAckPending: number;\n };\n }>(query, { streamName, consumerName }, this.context);\n\n return response.getConsumerInfo;\n }\n}\n"]}
|