@actdim/msgmesh 1.0.6 → 1.0.9

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.
@@ -97,7 +97,7 @@ export type MsgBusDispatcherParams<TStruct extends MsgBusStruct = MsgBusStruct,
97
97
  priority?: number;
98
98
  persistent?: boolean;
99
99
  callback?: (msg: Msg<TStruct, TChannel, typeof $CG_OUT, THeaders>) => void;
100
- ext?: THeaders;
100
+ headers?: THeaders;
101
101
  }>;
102
102
  export type MsgBusAsyncDispatcherParams<TStruct extends MsgBusStruct = MsgBusStruct, TChannel extends keyof TStruct = keyof TStruct, TGroup extends keyof TStruct[TChannel] = keyof TStruct[TChannel], THeaders = any> = Skip<MsgBusDispatcherParams<TStruct, TChannel, TGroup, THeaders>, "callback">;
103
103
  export type MsgBusDispatcher<TStruct extends MsgBusStruct, THeaders = any> = <TChannel extends keyof TStruct, TGroup extends keyof TStruct[TChannel] = typeof $CG_IN>(params: MsgBusDispatcherParams<TStruct, TChannel, TGroup, THeaders>) => void;
@@ -108,6 +108,8 @@ export type MsgChannelStructNormalized<TStruct extends MsgChannelStruct> = {
108
108
  export type MsgBusStructNormalized<TStruct extends MsgBusStruct> = {
109
109
  [C in keyof TStruct]: MsgChannelStructNormalized<TStruct[C]>;
110
110
  };
111
+ export declare const $TypeArgStruct: unique symbol;
112
+ export declare const $TypeArgHeaders: unique symbol;
111
113
  export type MsgBus<TStruct extends MsgBusStruct, THeaders = any> = {
112
114
  readonly config: MsgBusConfig<MsgBusStructNormalized<TStruct>>;
113
115
  readonly on: MsgBusSubscriber<MsgBusStructNormalized<TStruct>, THeaders>;
@@ -116,5 +118,7 @@ export type MsgBus<TStruct extends MsgBusStruct, THeaders = any> = {
116
118
  readonly provide: MsgBusProvider<MsgBusStructNormalized<TStruct>, THeaders>;
117
119
  readonly dispatch: MsgBusDispatcher<MsgBusStructNormalized<TStruct>, THeaders>;
118
120
  readonly dispatchAsync: MsgBusAsyncDispatcher<MsgBusStructNormalized<TStruct>, THeaders>;
121
+ readonly [$TypeArgStruct]?: TStruct;
122
+ readonly [$TypeArgHeaders]?: TStruct;
119
123
  };
120
124
  //# sourceMappingURL=msgBusCore.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"msgBusCore.d.ts","sourceRoot":"","sources":["../src/msgBusCore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"msgBusCore.d.ts","sourceRoot":"","sources":["../src/msgBusCore.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,10 @@
1
- const o = "in", r = "out", t = "error", R = "error";
1
+ const r = "in", o = "out", t = "error", e = "error", c = Symbol("__<TStruct>"), s = Symbol("__<THeaders>");
2
2
  export {
3
3
  t as $CG_ERROR,
4
- o as $CG_IN,
5
- r as $CG_OUT,
6
- R as $C_ERROR
4
+ r as $CG_IN,
5
+ o as $CG_OUT,
6
+ e as $C_ERROR,
7
+ s as $TypeArgHeaders,
8
+ c as $TypeArgStruct
7
9
  };
8
10
  //# sourceMappingURL=msgBusCore.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"msgBusCore.es.js","sources":["../src/msgBusCore.ts"],"sourcesContent":["//##############################################################################\r\n//# Copyright (c) Pavel Borodaev 2022 #\r\n//##############################################################################\r\n// SafeBus\r\nimport { IsTuple, MaybePromise, Overwrite, Skip } from \"@actdim/utico/typeCore\";\r\n\r\nexport const $CG_IN = \"in\";\r\n\r\nexport const $CG_OUT = \"out\";\r\n\r\nexport const $CG_ERROR = \"error\";\r\n\r\nexport const $C_ERROR = \"error\";\r\n\r\nexport type InParam = {\r\n // [key in typeof $CG_IN]: any;\r\n [$CG_IN]: any;\r\n};\r\n\r\nexport type OutParam = {\r\n // [key in typeof $CG_OUT]: any;\r\n [$CG_OUT]: any;\r\n};\r\n\r\nexport type ErrorPayload = {\r\n error: any; // reason\r\n source?: any;\r\n handled?: boolean;\r\n};\r\n\r\nexport type ErrorParam<T extends ErrorPayload = ErrorPayload> = {\r\n // [key in typeof $CG_ERROR]: any;\r\n [$CG_ERROR]: T;\r\n};\r\n\r\n// ReservedChannelGroup\r\nexport type SystemChannelGroup = `${keyof InParam | keyof OutParam | keyof OutParam}`;\r\n\r\n// TODO:\r\n// Point-to-Point (P2P): direct messaging with targeted, address delivery (exactly one recipient)\r\n// Broadcast\r\n// Queue group: Load Balancing, Round-Robin, Fan-out, Fan-in\r\n// QoS\r\n// Message Filtering\r\n// Cross-tab message delivery:\r\n// https://www.sitepen.com/blog/cross-tab-synchronization-with-the-web-locks-api\r\n// https://developer.mozilla.org/en-US/docs/Web/API/Broadcast_Channel_API\r\n// LocalStorage\r\n// https://github.com/GoogleChromeLabs/comlink\r\n\r\n// MsgBusChannelStruct\r\nexport type MsgChannelStruct = Partial<{ [group: string]: any } & InParam & OutParam & ErrorParam>;\r\n\r\n// type MsgChannelStruct = { [group: string]: any } & (\r\n// | InParam\r\n// | OutParam\r\n// | (InParam & OutParam)\r\n// );\r\n\r\n// SystemMsgBusStruct\r\nexport type MsgBusStructBase = {\r\n [$C_ERROR]?: {\r\n [$CG_IN]: ErrorPayload;\r\n };\r\n // \"*\": {\r\n // [$CG_IN]: any;\r\n // };\r\n};\r\n\r\nexport type MsgBusStruct = {\r\n [channel: string]: MsgChannelStruct;\r\n} & MsgBusStructBase;\r\n\r\n// MsgBusStructBuilder\r\nexport type MsgBusStructFactory<\r\n TStruct extends TStructBase,\r\n TStructBase extends MsgBusStruct = MsgBusStruct\r\n> = {\r\n [C in keyof TStruct]: TStruct[C] & ErrorParam;\r\n };\r\n\r\n// export type MsgBusStruct = Record<string, MsgChannelStruct>;\r\n\r\nexport type InStruct<TStruct extends MsgBusStruct, TChannel extends keyof TStruct> = TStruct[TChannel] extends InParam\r\n ? TStruct[TChannel][\"in\"] // keyof InParam or typeof $CG_IN\r\n : undefined; // never\r\n\r\n// export type InStruct<\r\n// TStruct extends MsgBusStruct,\r\n// TChannel extends keyof TStruct\r\n// > = TStruct[TChannel] extends InParam ? TStruct[TChannel][\"in\"] : never;\r\n\r\nexport type OutStruct<TStruct extends MsgBusStruct, TChannel extends keyof TStruct> = TStruct[TChannel] extends OutParam\r\n ? TStruct[TChannel][keyof OutParam]\r\n : undefined;\r\n\r\n// export type OutStruct<\r\n// TStruct extends MsgBusStruct,\r\n// TChannel extends keyof TStruct\r\n// > = TStruct[TChannel] extends OutParam ? TStruct[TChannel][\"out\"] : never;\r\n\r\n// Options/Settings\r\nexport type MsgChannelConfig<TChannel> = {\r\n // (channel) message queue distribution and processing strategy\r\n replayCount?: number;\r\n initialValues?: { [TGroup in keyof TChannel]: TChannel[TGroup] };\r\n persistent?: boolean; // durable? (for durable queue)\r\n secure?: boolean; // encrypted\r\n federated?: boolean; // broadcasting\r\n autoDeleteTimeout?: number;\r\n noAck?: boolean; // noAutoAck\r\n // manualAck?: boolean;\r\n // prefetchCount?: number; // for manual acknowledgment\r\n // this can be used for some consumer or for all consumers of the channel\r\n maxConcurrentConsumers?: number; // Parallel? Processes? Handlers?\r\n replayBufferSize?: number;\r\n replayWindowTime?: number;\r\n};\r\n\r\nexport type MsgDispatchConfig = {\r\n // MsgConfig\r\n priority?: number;\r\n fetchCount?: number;\r\n abortSignal?: AbortSignal;\r\n};\r\n\r\nexport type MsgBusConfig<TStruct extends MsgBusStruct> = {\r\n [TChannel in keyof TStruct]?: MsgChannelConfig<TStruct[TChannel]>;\r\n}; // Record<string, MsgChannelConfig>\r\n\r\nexport type MsgAddress<\r\n TStruct extends MsgBusStruct = MsgBusStruct,\r\n TChannel extends keyof TStruct = keyof TStruct,\r\n TGroup extends keyof TStruct[TChannel] = keyof TStruct[TChannel] // typeof $CG_IN\r\n> = {\r\n channel: TChannel;\r\n group?: TGroup; // typeGroup\r\n // supports wildcard matching (https://docs.nats.io/nats-concepts/subjects#wildcards)\r\n topic?: string;\r\n version?: string;\r\n};\r\n\r\n// MsgEnvelope\r\nexport type Msg<\r\n TStruct extends MsgBusStruct = MsgBusStruct,\r\n TChannel extends keyof TStruct = keyof TStruct,\r\n TGroup extends keyof TStruct[TChannel] = keyof TStruct[TChannel],\r\n THeaders = any // Record<string, string>\r\n> = {\r\n address: MsgAddress<TStruct, TChannel, TGroup>;\r\n payload?: TGroup extends undefined ? InStruct<TStruct, TChannel> : TStruct[TChannel][TGroup];\r\n // status: MsgStatus;\r\n // inResponseToId\r\n requestId?: string;\r\n // correlationId\r\n traceId?: string;\r\n id?: string;\r\n timestamp?: number; // Date\r\n priority?: number;\r\n persistent?: boolean; // durable? (for durable queue)\r\n version?: string; // schemaVersion\r\n tags?: string[];\r\n headers?: THeaders;\r\n};\r\n\r\n// TODO: support un(subscribing) via Deferred<bool>\r\n\r\nexport type MsgBusSubscriberParams<\r\n TStruct extends MsgBusStruct = MsgBusStruct,\r\n TChannel extends keyof TStruct = keyof TStruct,\r\n TGroup extends keyof TStruct[TChannel] = keyof TStruct[TChannel], // typeof $CG_IN\r\n THeaders = any\r\n> = MsgAddress<TStruct, TChannel, TGroup> & {\r\n channelSelector?: string | ((channel: string) => boolean);\r\n // topicSelector?: string | ((channel: string) => boolean);\r\n callback?: (msg: Msg<TStruct, TChannel, TGroup, THeaders>) => void;\r\n config?: MsgDispatchConfig;\r\n filter?: (msg: Msg<TStruct, TChannel, TGroup, THeaders>) => boolean;\r\n};\r\n\r\n// MsgBusSubscriberFn\r\nexport type MsgBusSubscriber<TStruct extends MsgBusStruct, THeaders = any> = <\r\n TChannel extends keyof TStruct,\r\n TGroup extends keyof TStruct[TChannel] = typeof $CG_IN\r\n>(\r\n params: MsgBusSubscriberParams<TStruct, TChannel, TGroup, THeaders>\r\n) => void;\r\n\r\n// MsgBusAsyncSubIterator(Fn)\r\nexport type MsgBusStreamer<TStruct extends MsgBusStruct, THeaders = any> = <\r\n TChannel extends keyof TStruct,\r\n TGroup extends keyof TStruct[TChannel] = typeof $CG_IN\r\n>(\r\n params: MsgBusSubscriberParams<TStruct, TChannel, TGroup>\r\n) => AsyncIterableIterator<Msg<TStruct, TChannel, TGroup, THeaders>>; // TGroup extends undefined ? typeof $CG_IN : TGroup\r\n\r\nexport type MsgBusAsyncSubscriberParams<\r\n TStruct extends MsgBusStruct = MsgBusStruct,\r\n TChannel extends keyof TStruct = keyof TStruct,\r\n TGroup extends keyof TStruct[TChannel] = keyof TStruct[TChannel], // typeof $CG_IN\r\n THeaders = any\r\n> = Skip<MsgBusSubscriberParams<TStruct, TChannel, TGroup, THeaders>, \"callback\" | \"filter\">;\r\n\r\n// MsgBusAsyncSubscriberFn\r\nexport type MsgBusAsyncSubscriber<TStruct extends MsgBusStruct, THeaders = any> = <\r\n TChannel extends keyof TStruct,\r\n TGroup extends keyof TStruct[TChannel] = typeof $CG_IN\r\n>(\r\n params: MsgBusAsyncSubscriberParams<TStruct, TChannel, TGroup>\r\n) => Promise<Msg<TStruct, TChannel, TGroup, THeaders>>; // TGroup extends undefined ? typeof $CG_IN : TGroup\r\n\r\nexport type MsgBusProviderParams<\r\n TStruct extends MsgBusStruct = MsgBusStruct,\r\n TChannel extends keyof TStruct = keyof TStruct,\r\n TGroup extends keyof TStruct[TChannel] = keyof TStruct[TChannel], // typeof $CG_IN\r\n THeaders = any\r\n> = Overwrite<\r\n MsgBusSubscriberParams<TStruct, TChannel, TGroup, THeaders>,\r\n {\r\n // resolve\r\n callback?: (msgIn: Msg<TStruct, TChannel, TGroup, THeaders>, msgOut: Msg<TStruct, TChannel, typeof $CG_OUT, THeaders>) => MaybePromise<OutStruct<TStruct, TChannel>>;\r\n }\r\n>;\r\n\r\n// MsgBusProviderFn\r\nexport type MsgBusProvider<TStruct extends MsgBusStruct, THeaders = any> = <\r\n TChannel extends keyof TStruct,\r\n TGroup extends keyof TStruct[TChannel] = typeof $CG_IN\r\n>(\r\n params: MsgBusProviderParams<TStruct, TChannel, TGroup, THeaders>\r\n) => void;\r\n\r\n// MsgBusBinderFn\r\nexport type MsgBusBinder<TStruct extends MsgBusStruct> = <\r\n TSourceChannel extends keyof TStruct,\r\n TTargetChannel extends keyof TStruct,\r\n TSourceGroup extends keyof TStruct[TSourceChannel] = typeof $CG_IN,\r\n TTargetGroup extends keyof TStruct[TTargetChannel] = typeof $CG_IN\r\n>(\r\n source: MsgBusSubscriberParams<TStruct, TSourceChannel, TSourceGroup>,\r\n target: MsgAddress<TStruct, TTargetChannel, TTargetGroup>\r\n) => void;\r\n\r\nexport type MsgBusDispatcherParams<\r\n TStruct extends MsgBusStruct = MsgBusStruct,\r\n TChannel extends keyof TStruct = keyof TStruct,\r\n TGroup extends keyof TStruct[TChannel] = keyof TStruct[TChannel], // typeof $CG_IN\r\n THeaders = any\r\n> = Overwrite<\r\n MsgBusSubscriberParams<TStruct, TChannel, TGroup>,\r\n {\r\n payload?: TGroup extends undefined ? InStruct<TStruct, TChannel> : TStruct[TChannel][TGroup];\r\n payloadFn?: IsTuple<TGroup extends undefined ? InStruct<TStruct, TChannel> : TStruct[TChannel][TGroup]> extends true\r\n ? (fn: (...args: TGroup extends undefined ? InStruct<TStruct, TChannel> : TStruct[TChannel][TGroup]) => void) => void\r\n : never;\r\n traceId?: string;\r\n priority?: number;\r\n persistent?: boolean;\r\n callback?: (msg: Msg<TStruct, TChannel, typeof $CG_OUT, THeaders>) => void;\r\n ext?: THeaders;\r\n }\r\n>;\r\n\r\nexport type MsgBusAsyncDispatcherParams<\r\n TStruct extends MsgBusStruct = MsgBusStruct,\r\n TChannel extends keyof TStruct = keyof TStruct,\r\n TGroup extends keyof TStruct[TChannel] = keyof TStruct[TChannel], // typeof $CG_IN\r\n THeaders = any\r\n> = Skip<MsgBusDispatcherParams<TStruct, TChannel, TGroup, THeaders>, \"callback\">;\r\n\r\n// MsgBusDispatcherFn\r\nexport type MsgBusDispatcher<TStruct extends MsgBusStruct, THeaders = any> = <\r\n TChannel extends keyof TStruct,\r\n TGroup extends keyof TStruct[TChannel] = typeof $CG_IN\r\n>(\r\n params: MsgBusDispatcherParams<TStruct, TChannel, TGroup, THeaders>\r\n) => void;\r\n\r\n// MsgBusAsyncDispatcherFn\r\nexport type MsgBusAsyncDispatcher<TStruct extends MsgBusStruct, THeaders = any> = <\r\n TChannel extends keyof TStruct,\r\n TGroup extends keyof TStruct[TChannel] = typeof $CG_IN\r\n>(\r\n params: MsgBusAsyncDispatcherParams<TStruct, TChannel, TGroup, THeaders>\r\n) => Promise<Msg<TStruct, TChannel, typeof $CG_OUT>>;\r\n\r\nexport type MsgChannelStructNormalized<TStruct extends MsgChannelStruct> = {\r\n [G in keyof TStruct]: Awaited<TStruct[G]>;\r\n};\r\n\r\nexport type MsgBusStructNormalized<TStruct extends MsgBusStruct> = {\r\n [C in keyof TStruct]: MsgChannelStructNormalized<TStruct[C]>;\r\n};\r\n\r\n// export interface\r\nexport type MsgBus<TStruct extends MsgBusStruct, THeaders = any> = {\r\n readonly config: MsgBusConfig<MsgBusStructNormalized<TStruct>>;\r\n // subscribe, listen\r\n readonly on: MsgBusSubscriber<MsgBusStructNormalized<TStruct>, THeaders>;\r\n readonly onceAsync: MsgBusAsyncSubscriber<MsgBusStructNormalized<TStruct>, THeaders>;\r\n // listenStream, consume, receive\r\n readonly stream: MsgBusStreamer<MsgBusStructNormalized<TStruct>, THeaders>;\r\n // handle, resolve\r\n readonly provide: MsgBusProvider<MsgBusStructNormalized<TStruct>, THeaders>;\r\n // link, connect\r\n // dispatch (emit/publish + subscribe)\r\n readonly dispatch: MsgBusDispatcher<MsgBusStructNormalized<TStruct>, THeaders>;\r\n readonly dispatchAsync: MsgBusAsyncDispatcher<MsgBusStructNormalized<TStruct>, THeaders>;\r\n};\r\n"],"names":["$CG_IN","$CG_OUT","$CG_ERROR","$C_ERROR"],"mappings":"AAMO,MAAMA,IAAS,MAETC,IAAU,OAEVC,IAAY,SAEZC,IAAW;"}
1
+ {"version":3,"file":"msgBusCore.es.js","sources":["../src/msgBusCore.ts"],"sourcesContent":["//##############################################################################\r\n//# Copyright (c) Pavel Borodaev 2022 #\r\n//##############################################################################\r\n// SafeBus\r\nimport { IsTuple, MaybePromise, Overwrite, Skip } from \"@actdim/utico/typeCore\";\r\n\r\nexport const $CG_IN = \"in\";\r\n\r\nexport const $CG_OUT = \"out\";\r\n\r\nexport const $CG_ERROR = \"error\";\r\n\r\nexport const $C_ERROR = \"error\";\r\n\r\nexport type InParam = {\r\n // [key in typeof $CG_IN]: any;\r\n [$CG_IN]: any;\r\n};\r\n\r\nexport type OutParam = {\r\n // [key in typeof $CG_OUT]: any;\r\n [$CG_OUT]: any;\r\n};\r\n\r\nexport type ErrorPayload = {\r\n error: any; // reason\r\n source?: any;\r\n handled?: boolean;\r\n};\r\n\r\nexport type ErrorParam<T extends ErrorPayload = ErrorPayload> = {\r\n // [key in typeof $CG_ERROR]: any;\r\n [$CG_ERROR]: T;\r\n};\r\n\r\n// ReservedChannelGroup\r\nexport type SystemChannelGroup = `${keyof InParam | keyof OutParam | keyof OutParam}`;\r\n\r\n// TODO:\r\n// Point-to-Point (P2P): direct messaging with targeted, address delivery (exactly one recipient)\r\n// Broadcast\r\n// Queue group: Load Balancing, Round-Robin, Fan-out, Fan-in\r\n// QoS\r\n// Message Filtering\r\n// Cross-tab message delivery:\r\n// https://www.sitepen.com/blog/cross-tab-synchronization-with-the-web-locks-api\r\n// https://developer.mozilla.org/en-US/docs/Web/API/Broadcast_Channel_API\r\n// LocalStorage\r\n// https://github.com/GoogleChromeLabs/comlink\r\n\r\n// MsgBusChannelStruct\r\nexport type MsgChannelStruct = Partial<{ [group: string]: any } & InParam & OutParam & ErrorParam>;\r\n\r\n// type MsgChannelStruct = { [group: string]: any } & (\r\n// | InParam\r\n// | OutParam\r\n// | (InParam & OutParam)\r\n// );\r\n\r\n// SystemMsgBusStruct\r\nexport type MsgBusStructBase = {\r\n [$C_ERROR]?: {\r\n [$CG_IN]: ErrorPayload;\r\n };\r\n // \"*\": {\r\n // [$CG_IN]: any;\r\n // };\r\n};\r\n\r\nexport type MsgBusStruct = {\r\n [channel: string]: MsgChannelStruct;\r\n} & MsgBusStructBase;\r\n\r\n// MsgBusStructBuilder\r\nexport type MsgBusStructFactory<\r\n TStruct extends TStructBase,\r\n TStructBase extends MsgBusStruct = MsgBusStruct\r\n> = {\r\n [C in keyof TStruct]: TStruct[C] & ErrorParam;\r\n };\r\n\r\n// export type MsgBusStruct = Record<string, MsgChannelStruct>;\r\n\r\nexport type InStruct<TStruct extends MsgBusStruct, TChannel extends keyof TStruct> = TStruct[TChannel] extends InParam\r\n ? TStruct[TChannel][\"in\"] // keyof InParam or typeof $CG_IN\r\n : undefined; // never\r\n\r\n// export type InStruct<\r\n// TStruct extends MsgBusStruct,\r\n// TChannel extends keyof TStruct\r\n// > = TStruct[TChannel] extends InParam ? TStruct[TChannel][\"in\"] : never;\r\n\r\nexport type OutStruct<TStruct extends MsgBusStruct, TChannel extends keyof TStruct> = TStruct[TChannel] extends OutParam\r\n ? TStruct[TChannel][keyof OutParam]\r\n : undefined;\r\n\r\n// export type OutStruct<\r\n// TStruct extends MsgBusStruct,\r\n// TChannel extends keyof TStruct\r\n// > = TStruct[TChannel] extends OutParam ? TStruct[TChannel][\"out\"] : never;\r\n\r\n// Options/Settings\r\nexport type MsgChannelConfig<TChannel> = {\r\n // (channel) message queue distribution and processing strategy\r\n replayCount?: number;\r\n initialValues?: { [TGroup in keyof TChannel]: TChannel[TGroup] };\r\n persistent?: boolean; // durable? (for durable queue)\r\n secure?: boolean; // encrypted\r\n federated?: boolean; // broadcasting\r\n autoDeleteTimeout?: number;\r\n noAck?: boolean; // noAutoAck\r\n // manualAck?: boolean;\r\n // prefetchCount?: number; // for manual acknowledgment\r\n // this can be used for some consumer or for all consumers of the channel\r\n maxConcurrentConsumers?: number; // Parallel? Processes? Handlers?\r\n replayBufferSize?: number;\r\n replayWindowTime?: number;\r\n};\r\n\r\nexport type MsgDispatchConfig = {\r\n // MsgConfig\r\n priority?: number;\r\n fetchCount?: number;\r\n abortSignal?: AbortSignal;\r\n};\r\n\r\nexport type MsgBusConfig<TStruct extends MsgBusStruct> = {\r\n [TChannel in keyof TStruct]?: MsgChannelConfig<TStruct[TChannel]>;\r\n}; // Record<string, MsgChannelConfig>\r\n\r\nexport type MsgAddress<\r\n TStruct extends MsgBusStruct = MsgBusStruct,\r\n TChannel extends keyof TStruct = keyof TStruct,\r\n TGroup extends keyof TStruct[TChannel] = keyof TStruct[TChannel] // typeof $CG_IN\r\n> = {\r\n channel: TChannel;\r\n group?: TGroup; // typeGroup\r\n // supports wildcard matching (https://docs.nats.io/nats-concepts/subjects#wildcards)\r\n topic?: string;\r\n version?: string;\r\n};\r\n\r\n// MsgEnvelope\r\nexport type Msg<\r\n TStruct extends MsgBusStruct = MsgBusStruct,\r\n TChannel extends keyof TStruct = keyof TStruct,\r\n TGroup extends keyof TStruct[TChannel] = keyof TStruct[TChannel],\r\n THeaders = any // Record<string, string>\r\n> = {\r\n address: MsgAddress<TStruct, TChannel, TGroup>;\r\n payload?: TGroup extends undefined ? InStruct<TStruct, TChannel> : TStruct[TChannel][TGroup];\r\n // status: MsgStatus;\r\n // inResponseToId\r\n requestId?: string;\r\n // correlationId\r\n traceId?: string;\r\n id?: string;\r\n timestamp?: number; // Date\r\n priority?: number;\r\n persistent?: boolean; // durable? (for durable queue)\r\n version?: string; // schemaVersion\r\n tags?: string[];\r\n headers?: THeaders;\r\n};\r\n\r\n// TODO: support un(subscribing) via Deferred<bool>\r\n\r\nexport type MsgBusSubscriberParams<\r\n TStruct extends MsgBusStruct = MsgBusStruct,\r\n TChannel extends keyof TStruct = keyof TStruct,\r\n TGroup extends keyof TStruct[TChannel] = keyof TStruct[TChannel], // typeof $CG_IN\r\n THeaders = any\r\n> = MsgAddress<TStruct, TChannel, TGroup> & {\r\n channelSelector?: string | ((channel: string) => boolean);\r\n // topicSelector?: string | ((channel: string) => boolean);\r\n callback?: (msg: Msg<TStruct, TChannel, TGroup, THeaders>) => void;\r\n config?: MsgDispatchConfig;\r\n filter?: (msg: Msg<TStruct, TChannel, TGroup, THeaders>) => boolean;\r\n};\r\n\r\n// MsgBusSubscriberFn\r\nexport type MsgBusSubscriber<TStruct extends MsgBusStruct, THeaders = any> = <\r\n TChannel extends keyof TStruct,\r\n TGroup extends keyof TStruct[TChannel] = typeof $CG_IN\r\n>(\r\n params: MsgBusSubscriberParams<TStruct, TChannel, TGroup, THeaders>\r\n) => void;\r\n\r\n// MsgBusAsyncSubIterator(Fn)\r\nexport type MsgBusStreamer<TStruct extends MsgBusStruct, THeaders = any> = <\r\n TChannel extends keyof TStruct,\r\n TGroup extends keyof TStruct[TChannel] = typeof $CG_IN\r\n>(\r\n params: MsgBusSubscriberParams<TStruct, TChannel, TGroup>\r\n) => AsyncIterableIterator<Msg<TStruct, TChannel, TGroup, THeaders>>; // TGroup extends undefined ? typeof $CG_IN : TGroup\r\n\r\nexport type MsgBusAsyncSubscriberParams<\r\n TStruct extends MsgBusStruct = MsgBusStruct,\r\n TChannel extends keyof TStruct = keyof TStruct,\r\n TGroup extends keyof TStruct[TChannel] = keyof TStruct[TChannel], // typeof $CG_IN\r\n THeaders = any\r\n> = Skip<MsgBusSubscriberParams<TStruct, TChannel, TGroup, THeaders>, \"callback\" | \"filter\">;\r\n\r\n// MsgBusAsyncSubscriberFn\r\nexport type MsgBusAsyncSubscriber<TStruct extends MsgBusStruct, THeaders = any> = <\r\n TChannel extends keyof TStruct,\r\n TGroup extends keyof TStruct[TChannel] = typeof $CG_IN\r\n>(\r\n params: MsgBusAsyncSubscriberParams<TStruct, TChannel, TGroup>\r\n) => Promise<Msg<TStruct, TChannel, TGroup, THeaders>>; // TGroup extends undefined ? typeof $CG_IN : TGroup\r\n\r\nexport type MsgBusProviderParams<\r\n TStruct extends MsgBusStruct = MsgBusStruct,\r\n TChannel extends keyof TStruct = keyof TStruct,\r\n TGroup extends keyof TStruct[TChannel] = keyof TStruct[TChannel], // typeof $CG_IN\r\n THeaders = any\r\n> = Overwrite<\r\n MsgBusSubscriberParams<TStruct, TChannel, TGroup, THeaders>,\r\n {\r\n // resolve\r\n callback?: (msgIn: Msg<TStruct, TChannel, TGroup, THeaders>, msgOut: Msg<TStruct, TChannel, typeof $CG_OUT, THeaders>) => MaybePromise<OutStruct<TStruct, TChannel>>;\r\n }\r\n>;\r\n\r\n// MsgBusProviderFn\r\nexport type MsgBusProvider<TStruct extends MsgBusStruct, THeaders = any> = <\r\n TChannel extends keyof TStruct,\r\n TGroup extends keyof TStruct[TChannel] = typeof $CG_IN\r\n>(\r\n params: MsgBusProviderParams<TStruct, TChannel, TGroup, THeaders>\r\n) => void;\r\n\r\n// MsgBusBinderFn\r\nexport type MsgBusBinder<TStruct extends MsgBusStruct> = <\r\n TSourceChannel extends keyof TStruct,\r\n TTargetChannel extends keyof TStruct,\r\n TSourceGroup extends keyof TStruct[TSourceChannel] = typeof $CG_IN,\r\n TTargetGroup extends keyof TStruct[TTargetChannel] = typeof $CG_IN\r\n>(\r\n source: MsgBusSubscriberParams<TStruct, TSourceChannel, TSourceGroup>,\r\n target: MsgAddress<TStruct, TTargetChannel, TTargetGroup>\r\n) => void;\r\n\r\nexport type MsgBusDispatcherParams<\r\n TStruct extends MsgBusStruct = MsgBusStruct,\r\n TChannel extends keyof TStruct = keyof TStruct,\r\n TGroup extends keyof TStruct[TChannel] = keyof TStruct[TChannel], // typeof $CG_IN\r\n THeaders = any\r\n> = Overwrite<\r\n MsgBusSubscriberParams<TStruct, TChannel, TGroup>,\r\n {\r\n payload?: TGroup extends undefined ? InStruct<TStruct, TChannel> : TStruct[TChannel][TGroup];\r\n payloadFn?: IsTuple<TGroup extends undefined ? InStruct<TStruct, TChannel> : TStruct[TChannel][TGroup]> extends true\r\n ? (fn: (...args: TGroup extends undefined ? InStruct<TStruct, TChannel> : TStruct[TChannel][TGroup]) => void) => void\r\n : never;\r\n traceId?: string;\r\n priority?: number;\r\n persistent?: boolean;\r\n callback?: (msg: Msg<TStruct, TChannel, typeof $CG_OUT, THeaders>) => void;\r\n headers?: THeaders;\r\n }\r\n>;\r\n\r\nexport type MsgBusAsyncDispatcherParams<\r\n TStruct extends MsgBusStruct = MsgBusStruct,\r\n TChannel extends keyof TStruct = keyof TStruct,\r\n TGroup extends keyof TStruct[TChannel] = keyof TStruct[TChannel], // typeof $CG_IN\r\n THeaders = any\r\n> = Skip<MsgBusDispatcherParams<TStruct, TChannel, TGroup, THeaders>, \"callback\">;\r\n\r\n// MsgBusDispatcherFn\r\nexport type MsgBusDispatcher<TStruct extends MsgBusStruct, THeaders = any> = <\r\n TChannel extends keyof TStruct,\r\n TGroup extends keyof TStruct[TChannel] = typeof $CG_IN\r\n>(\r\n params: MsgBusDispatcherParams<TStruct, TChannel, TGroup, THeaders>\r\n) => void;\r\n\r\n// MsgBusAsyncDispatcherFn\r\nexport type MsgBusAsyncDispatcher<TStruct extends MsgBusStruct, THeaders = any> = <\r\n TChannel extends keyof TStruct,\r\n TGroup extends keyof TStruct[TChannel] = typeof $CG_IN\r\n>(\r\n params: MsgBusAsyncDispatcherParams<TStruct, TChannel, TGroup, THeaders>\r\n) => Promise<Msg<TStruct, TChannel, typeof $CG_OUT>>;\r\n\r\nexport type MsgChannelStructNormalized<TStruct extends MsgChannelStruct> = {\r\n [G in keyof TStruct]: Awaited<TStruct[G]>;\r\n};\r\n\r\nexport type MsgBusStructNormalized<TStruct extends MsgBusStruct> = {\r\n [C in keyof TStruct]: MsgChannelStructNormalized<TStruct[C]>;\r\n};\r\n\r\nexport const $TypeArgStruct = Symbol(\"__<TStruct>\");\r\nexport const $TypeArgHeaders = Symbol(\"__<THeaders>\");\r\n\r\n// export interface\r\nexport type MsgBus<TStruct extends MsgBusStruct, THeaders = any> = {\r\n readonly config: MsgBusConfig<MsgBusStructNormalized<TStruct>>;\r\n // subscribe, listen\r\n readonly on: MsgBusSubscriber<MsgBusStructNormalized<TStruct>, THeaders>;\r\n readonly onceAsync: MsgBusAsyncSubscriber<MsgBusStructNormalized<TStruct>, THeaders>;\r\n // listenStream, consume, receive\r\n readonly stream: MsgBusStreamer<MsgBusStructNormalized<TStruct>, THeaders>;\r\n // handle, resolve\r\n readonly provide: MsgBusProvider<MsgBusStructNormalized<TStruct>, THeaders>;\r\n // link, connect\r\n // dispatch (emit/publish + subscribe)\r\n readonly dispatch: MsgBusDispatcher<MsgBusStructNormalized<TStruct>, THeaders>;\r\n readonly dispatchAsync: MsgBusAsyncDispatcher<MsgBusStructNormalized<TStruct>, THeaders>;\r\n /**\r\n * @internal\r\n * Type-level only. Do not access at runtime.\r\n */\r\n readonly [$TypeArgStruct]?: TStruct;\r\n /**\r\n * @internal\r\n * Type-level only. Do not access at runtime.\r\n */\r\n readonly [$TypeArgHeaders]?: TStruct;\r\n};\r\n"],"names":["$CG_IN","$CG_OUT","$CG_ERROR","$C_ERROR","$TypeArgStruct","$TypeArgHeaders"],"mappings":"AAMO,MAAMA,IAAS,MAETC,IAAU,OAEVC,IAAY,SAEZC,IAAW,SA0RXC,IAAiB,OAAO,aAAa,GACrCC,IAAkB,OAAO,cAAc;"}
@@ -1,8 +1,8 @@
1
- import { $CG_IN as h, $CG_ERROR as T, $C_ERROR as B, $CG_OUT as C } from "./msgBusCore.es.js";
1
+ import { $CG_IN as b, $CG_ERROR as B, $C_ERROR as T, $CG_OUT as S } from "./msgBusCore.es.js";
2
2
  import { v4 as y } from "uuid";
3
- import { ReplaySubject as O, Subject as W } from "rxjs";
4
- import { filter as q, take as A } from "rxjs/operators";
5
- const L = (i) => {
3
+ import { ReplaySubject as j, Subject as O } from "rxjs";
4
+ import { filter as W, take as q } from "rxjs/operators";
5
+ const A = (i) => {
6
6
  if (i == null)
7
7
  return (c) => c == i;
8
8
  if (i.startsWith("/") && i.endsWith("/")) {
@@ -11,13 +11,13 @@ const L = (i) => {
11
11
  return (l) => c.test(l);
12
12
  } else
13
13
  return (c) => i === c;
14
- }, M = ":";
14
+ }, L = ":";
15
15
  function K(i) {
16
16
  const c = "msgbus";
17
17
  function l() {
18
18
  return Date.now();
19
19
  }
20
- function $(e) {
20
+ function C(e) {
21
21
  return {
22
22
  address: e.address,
23
23
  requestId: e.requestId,
@@ -29,46 +29,46 @@ function K(i) {
29
29
  headers: e.headers
30
30
  };
31
31
  }
32
- function b(e, n) {
32
+ function p(e, n) {
33
33
  const t = {
34
34
  error: n,
35
- source: $(e)
35
+ source: C(e)
36
36
  };
37
37
  let o;
38
38
  o = {
39
39
  address: {
40
40
  channel: e.address.channel,
41
- group: T,
41
+ group: B,
42
42
  topic: c
43
43
  },
44
44
  payload: t
45
- }, p(o), o = {
45
+ }, f(o), o = {
46
46
  address: {
47
- channel: B,
48
- group: h,
47
+ channel: T,
48
+ group: b,
49
49
  topic: c
50
50
  },
51
51
  payload: t
52
- }, p(o);
52
+ }, f(o);
53
53
  }
54
- const u = /* @__PURE__ */ new Map();
55
- function E(e, n) {
56
- return `${e}${M}${n}`;
54
+ const h = /* @__PURE__ */ new Map();
55
+ function $(e, n) {
56
+ return `${e}${L}${n}`;
57
57
  }
58
58
  function g(e, n) {
59
- const t = E(e, n);
60
- if (!u.has(t)) {
59
+ const t = $(e, n);
60
+ if (!h.has(t)) {
61
61
  let o = null;
62
62
  const r = i[e];
63
- r && (r.replayBufferSize != null || r.replayWindowTime != null) && (o = new O(r.replayBufferSize == null ? 1 / 0 : r.replayBufferSize, r.replayWindowTime == null ? 1 / 0 : r.replayWindowTime)), o || (o = new W()), u.set(
63
+ r && (r.replayBufferSize != null || r.replayWindowTime != null) && (o = new j(r.replayBufferSize == null ? 1 / 0 : r.replayBufferSize, r.replayWindowTime == null ? 1 / 0 : r.replayWindowTime)), o || (o = new O()), h.set(
64
64
  t,
65
65
  o
66
66
  );
67
67
  }
68
- return u.get(t);
68
+ return h.get(t);
69
69
  }
70
- function f(e) {
71
- const n = String(e.channel), t = e.group == null ? h : String(e.group), o = g(n, t), r = L(e.topic), d = q(
70
+ function u(e) {
71
+ const n = String(e.channel), t = e.group == null ? b : String(e.group), o = g(n, t), r = A(e.topic), d = W(
72
72
  (s) => (
73
73
  // msg.address.channel === channel &&
74
74
  // msg.address.group === group &&
@@ -76,17 +76,17 @@ function K(i) {
76
76
  )
77
77
  );
78
78
  let a;
79
- e.config?.fetchCount ? a = o.pipe(d, A(e.config.fetchCount)) : a = o.pipe(d);
80
- const x = a.subscribe({
79
+ e.config?.fetchCount ? a = o.pipe(d, q(e.config.fetchCount)) : a = o.pipe(d);
80
+ const P = a.subscribe({
81
81
  next: (s) => {
82
82
  try {
83
83
  return e.callback(s);
84
- } catch (j) {
85
- b(s, j);
84
+ } catch (x) {
85
+ p(s, x);
86
86
  }
87
87
  },
88
88
  error: (s) => {
89
- b(
89
+ p(
90
90
  {
91
91
  address: {
92
92
  channel: n,
@@ -102,25 +102,25 @@ function K(i) {
102
102
  },
103
103
  complete: () => {
104
104
  }
105
- }), S = e.config?.abortSignal;
106
- S?.addEventListener("abort", (s) => {
105
+ }), w = e.config?.abortSignal;
106
+ w?.addEventListener("abort", (s) => {
107
107
  console.log(
108
- `Listening aborted for channel: ${n}, group: ${t}, topic: ${e.topic}. Reason: ${S.reason}`
108
+ `Listening aborted for channel: ${n}, group: ${t}, topic: ${e.topic}. Reason: ${w.reason}`
109
109
  // e.target
110
- ), x.unsubscribe();
110
+ ), P.unsubscribe();
111
111
  });
112
112
  }
113
- function p(e) {
113
+ function f(e) {
114
114
  e.timestamp == null && (e.timestamp = l()), e.id == null && (e.id = y()), e.traceId == null && (e.traceId = y());
115
115
  const n = String(e.address.channel);
116
- e.address.group == null && (e.address.group = h);
116
+ e.address.group == null && (e.address.group = b);
117
117
  const t = String(e.address.group);
118
118
  return g(n, t).next(e), e;
119
119
  }
120
- function R(e) {
121
- f(e);
120
+ function E(e) {
121
+ u(e);
122
122
  }
123
- function k(e) {
123
+ function R(e) {
124
124
  return new Promise((n, t) => {
125
125
  try {
126
126
  const o = e.config?.abortSignal;
@@ -137,13 +137,13 @@ function K(i) {
137
137
  n(d);
138
138
  }
139
139
  };
140
- f(r);
140
+ u(r);
141
141
  } catch (o) {
142
142
  t(o);
143
143
  }
144
144
  });
145
145
  }
146
- function I(e) {
146
+ function k(e) {
147
147
  const n = {
148
148
  ...e,
149
149
  callback: async (t) => {
@@ -151,7 +151,7 @@ function K(i) {
151
151
  const o = {
152
152
  address: {
153
153
  channel: t.address.channel,
154
- group: C,
154
+ group: S,
155
155
  topic: t.address.topic
156
156
  },
157
157
  traceId: t.traceId,
@@ -160,20 +160,20 @@ function K(i) {
160
160
  priority: t.priority,
161
161
  headers: t.headers
162
162
  }, r = await Promise.resolve(e.callback(t, o));
163
- o.payload = r, p(o);
163
+ o.payload = r, f(o);
164
164
  } catch (o) {
165
- b(t, o);
165
+ p(t, o);
166
166
  }
167
167
  }
168
168
  };
169
- f(n);
169
+ u(n);
170
170
  }
171
171
  function v(e) {
172
172
  const n = y();
173
173
  if (e.callback) {
174
174
  const o = {
175
175
  channel: e.channel,
176
- group: C,
176
+ group: S,
177
177
  topic: e.topic,
178
178
  config: {
179
179
  ...e.config,
@@ -184,12 +184,12 @@ function K(i) {
184
184
  },
185
185
  filter: (r) => r.requestId === n && (!e.filter || e.filter(r))
186
186
  };
187
- f(o);
187
+ u(o);
188
188
  }
189
189
  let t;
190
190
  e.payloadFn ? e.payloadFn((o) => {
191
191
  t = o;
192
- }) : t = e.payload, p({
192
+ }) : t = e.payload, f({
193
193
  address: {
194
194
  channel: e.channel,
195
195
  group: e.group,
@@ -200,10 +200,10 @@ function K(i) {
200
200
  persistent: e.persistent,
201
201
  priority: e.priority,
202
202
  id: n,
203
- headers: e.ext
203
+ headers: e.headers
204
204
  });
205
205
  }
206
- async function P(e) {
206
+ async function I(e) {
207
207
  return new Promise((n, t) => {
208
208
  try {
209
209
  const o = e.config?.abortSignal;
@@ -226,18 +226,17 @@ function K(i) {
226
226
  }
227
227
  });
228
228
  }
229
- const w = {
229
+ return {
230
230
  config: i,
231
- on: (e) => R(e),
232
- onceAsync: (e) => k(e),
231
+ on: (e) => E(e),
232
+ onceAsync: (e) => R(e),
233
233
  stream: (e) => {
234
234
  throw new Error("Not implemented");
235
235
  },
236
- provide: (e) => I(e),
236
+ provide: (e) => k(e),
237
237
  dispatch: (e) => v(e),
238
- dispatchAsync: (e) => P(e)
238
+ dispatchAsync: (e) => I(e)
239
239
  };
240
- return w["#subjects"] = u, w;
241
240
  }
242
241
  export {
243
242
  K as createMsgBus
@@ -1 +1 @@
1
- {"version":3,"file":"msgBusFactory.es.js","sources":["../src/msgBusFactory.ts"],"sourcesContent":["import {\r\n MsgBus,\r\n MsgBusStruct,\r\n Msg,\r\n $CG_IN,\r\n $CG_OUT,\r\n MsgBusConfig,\r\n MsgBusSubscriberParams,\r\n MsgBusAsyncSubscriberParams,\r\n MsgBusProviderParams,\r\n MsgBusDispatcherParams,\r\n MsgBusAsyncDispatcherParams,\r\n MsgBusStructNormalized,\r\n $CG_ERROR,\r\n $C_ERROR\r\n} from \"./msgBusCore\";\r\nimport { v4 as uuid } from \"uuid\";\r\nimport { MonoTypeOperatorFunction, Observable, Subject, ReplaySubject } from \"rxjs\";\r\nimport { filter, filter as filterOp, take as takeOp } from \"rxjs/operators\";\r\nimport { Skip } from \"@actdim/utico/typeCore\";\r\n\r\nconst getMatchTest = (pattern: string) => {\r\n if (pattern == undefined) {\r\n // return (value: string) => true;\r\n return (value: string) => value == pattern;\r\n }\r\n if (pattern.startsWith(\"/\") && pattern.endsWith(\"/\")) {\r\n pattern = pattern.substring(1, pattern.length - 1);\r\n const regexp = new RegExp(pattern);\r\n return (value: string) => regexp.test(value);\r\n } else {\r\n return (value: string) => pattern === value;\r\n }\r\n};\r\n\r\n// see also https://www.npmjs.com/package/p-queue\r\n// https://github.com/postaljs/postal.js\r\n\r\n// createServiceBus\r\nconst groupPrefix = \":\"; // \"/\", \":\", \"::\"\r\nexport function createMsgBus<TStruct extends MsgBusStruct, THeaders = any>(config?: MsgBusConfig<MsgBusStructNormalized<TStruct>>) {\r\n type TStructN = MsgBusStructNormalized<TStruct>;\r\n type MsgInfo = Skip<Msg<TStructN>, \"payload\">;\r\n const errTopic = \"msgbus\";\r\n\r\n function now() {\r\n return Date.now(); // new Date().getTime() or +new Date()\r\n }\r\n\r\n function getMsgInfo(msg: Msg<TStructN>) {\r\n return {\r\n address: msg.address,\r\n requestId: msg.requestId,\r\n traceId: msg.traceId,\r\n id: msg.id,\r\n timestamp: msg.timestamp,\r\n priority: msg.priority,\r\n persistent: msg.persistent,\r\n headers: msg.headers\r\n } as MsgInfo;\r\n }\r\n\r\n function handleError(srcMsg: Msg<TStructN>, err: any) {\r\n const errPayload = {\r\n error: err,\r\n source: getMsgInfo(srcMsg)\r\n } as Msg<TStructN>[\"payload\"];\r\n let errMsg: Msg<TStructN>;\r\n errMsg = {\r\n address: {\r\n channel: srcMsg.address.channel,\r\n group: $CG_ERROR,\r\n topic: errTopic\r\n },\r\n payload: errPayload\r\n };\r\n publish(errMsg);\r\n errMsg = {\r\n address: {\r\n channel: $C_ERROR,\r\n group: $CG_IN,\r\n topic: errTopic\r\n },\r\n payload: errPayload\r\n };\r\n publish(errMsg);\r\n }\r\n // observables\r\n const subjects: Map<string, Subject<Msg<TStructN>>> = new Map();\r\n\r\n function createRoutingKey(channel: string, group: string) {\r\n return `${channel}${groupPrefix}${group}`;\r\n }\r\n\r\n function getOrCreateSubject(channel: string, group: string): Subject<Msg<TStructN>> {\r\n const routingKey = createRoutingKey(channel, group);\r\n // TODO: support BehaviorSubject\r\n if (!subjects.has(routingKey)) {\r\n let subject: Subject<Msg<TStructN>> = null;\r\n const channelConfig = config[channel];\r\n if (channelConfig) {\r\n if (channelConfig.replayBufferSize != undefined || channelConfig.replayWindowTime != undefined) {\r\n subject = new ReplaySubject<Msg<TStructN>>(channelConfig.replayBufferSize == undefined ? Infinity : channelConfig.replayBufferSize, channelConfig.replayWindowTime == undefined ? Infinity : channelConfig.replayWindowTime);\r\n }\r\n }\r\n if (!subject) {\r\n subject = new Subject<Msg<TStructN>>();\r\n }\r\n subjects.set(routingKey,\r\n subject\r\n );\r\n }\r\n return subjects.get(routingKey);\r\n }\r\n\r\n function subscribe(params: MsgBusSubscriberParams<TStructN>) {\r\n // TODO: use [channel, group] as key?\r\n\r\n const channel = String(params.channel);\r\n\r\n const group = params.group == undefined ? $CG_IN : String(params.group);\r\n\r\n const subject = getOrCreateSubject(channel, group);\r\n\r\n const match = getMatchTest(params.topic);\r\n\r\n const fOp: MonoTypeOperatorFunction<Msg<TStructN>> = filterOp(\r\n (msg) =>\r\n // msg.address.channel === channel &&\r\n // msg.address.group === group &&\r\n match(msg.address.topic) && (!params.filter || params.filter(msg))\r\n );\r\n\r\n let observable: Observable<Msg<TStructN>>;\r\n // groupBy?\r\n // mergeMap?\r\n // timeout, takeUntil, time?\r\n if (params.config?.fetchCount) {\r\n observable = subject.pipe(fOp, takeOp(params.config.fetchCount));\r\n } else {\r\n observable = subject.pipe(fOp);\r\n }\r\n\r\n const sub = observable.subscribe({\r\n next: (msg: Msg<TStructN>) => {\r\n try {\r\n return params.callback(msg);\r\n } catch (err) {\r\n handleError(msg, err);\r\n // throw err;\r\n }\r\n },\r\n error: (err) => {\r\n handleError(\r\n {\r\n address: {\r\n channel: channel,\r\n group: group,\r\n topic: params.topic\r\n },\r\n id: undefined, // not a real message\r\n timestamp: now()\r\n },\r\n err\r\n );\r\n },\r\n complete: () => {\r\n // cleanup\r\n }\r\n });\r\n\r\n const abortSignal = params.config?.abortSignal;\r\n abortSignal?.addEventListener(\"abort\", (e) => {\r\n // TODO: publish debug (internal) message\r\n console.log(\r\n `Listening aborted for channel: ${channel}, group: ${group}, topic: ${params.topic}. Reason: ${abortSignal.reason}` // e.target\r\n );\r\n sub.unsubscribe();\r\n });\r\n }\r\n\r\n function publish(msg: Msg<TStructN>) {\r\n if (msg.timestamp == undefined) {\r\n msg.timestamp = now()\r\n }\r\n if (msg.id == undefined) {\r\n msg.id = uuid();\r\n }\r\n if (msg.traceId == undefined) {\r\n msg.traceId = uuid();\r\n }\r\n const channel = String(msg.address.channel);\r\n if (msg.address.group == undefined) {\r\n msg.address.group = $CG_IN;\r\n }\r\n const group = String(msg.address.group);\r\n const subject = getOrCreateSubject(channel, group);\r\n subject.next(msg);\r\n return msg;\r\n }\r\n\r\n function on(params: MsgBusSubscriberParams<TStructN>) {\r\n subscribe(params);\r\n }\r\n\r\n function onceAsync(params: MsgBusAsyncSubscriberParams<TStructN>) {\r\n return new Promise<any>((res, rej) => {\r\n try {\r\n const abortSignal = params.config?.abortSignal;\r\n abortSignal?.addEventListener(\"abort\", (e) => {\r\n rej(new Error(\"Cancelled\", { cause: abortSignal.reason })); // e.target\r\n });\r\n const subParams: MsgBusSubscriberParams<TStructN> = {\r\n ...params,\r\n ...{\r\n config: {\r\n ...params.config,\r\n ...{\r\n fetchCount: 1\r\n }\r\n },\r\n callback: (msg) => {\r\n // sub.unsubscribe();\r\n res(msg);\r\n }\r\n }\r\n };\r\n subscribe(subParams);\r\n } catch (e) {\r\n rej(e);\r\n }\r\n });\r\n }\r\n\r\n function provide(params: MsgBusProviderParams<TStructN>) {\r\n const subParams: MsgBusSubscriberParams<TStructN> = {\r\n ...params,\r\n ...{\r\n callback: async (msgIn) => {\r\n try {\r\n const msgOut: Msg<TStructN, keyof TStructN, typeof $CG_OUT> = {\r\n address: {\r\n channel: msgIn.address.channel,\r\n group: $CG_OUT,\r\n topic: msgIn.address.topic\r\n },\r\n traceId: msgIn.traceId,\r\n requestId: msgIn.id,\r\n persistent: msgIn.persistent,\r\n priority: msgIn.priority,\r\n headers: msgIn.headers\r\n };\r\n const payload = (await Promise.resolve(params.callback(msgIn, msgOut)));\r\n msgOut.payload = payload;\r\n publish(msgOut);\r\n } catch (err) {\r\n handleError(msgIn, err);\r\n // throw err;\r\n }\r\n }\r\n }\r\n };\r\n subscribe(subParams);\r\n }\r\n\r\n function dispatch(params: MsgBusDispatcherParams<TStructN>) {\r\n const msgId = uuid();\r\n if (params.callback) {\r\n const subParams: MsgBusSubscriberParams<TStructN, keyof TStructN, typeof $CG_OUT> = {\r\n channel: params.channel,\r\n group: $CG_OUT,\r\n topic: params.topic,\r\n config: {\r\n ...params.config,\r\n ...{\r\n fetchCount: 1\r\n }\r\n },\r\n callback: (msgOut) => {\r\n // sub.unsubscribe();\r\n params.callback(msgOut);\r\n },\r\n filter: (msgOut) => {\r\n return msgOut.requestId === msgId && (!params.filter || params.filter(msgOut)) // TODO: match topic?\r\n }\r\n };\r\n subscribe(subParams);\r\n }\r\n let payload: any;\r\n if (params.payloadFn) {\r\n params.payloadFn((args) => {\r\n payload = args;\r\n });\r\n } else {\r\n payload = params.payload;\r\n }\r\n const msgIn = publish({\r\n address: {\r\n channel: params.channel,\r\n group: params.group,\r\n topic: params.topic\r\n },\r\n payload: payload,\r\n traceId: params.traceId,\r\n persistent: params.persistent,\r\n priority: params.priority,\r\n id: msgId,\r\n headers: params.ext\r\n });\r\n }\r\n\r\n async function dispatchAsync(params: MsgBusAsyncDispatcherParams<TStructN>): Promise<any> {\r\n return new Promise((res, rej) => {\r\n try {\r\n const abortSignal = params.config?.abortSignal;\r\n abortSignal?.addEventListener(\"abort\", (e) => {\r\n rej(new Error(\"Cancelled\", { cause: abortSignal.reason })); // e.target\r\n });\r\n const dispatchParams: MsgBusDispatcherParams<TStructN> = {\r\n ...params,\r\n callback: (msg) => {\r\n try {\r\n res(msg);\r\n } catch (err) {\r\n rej(err);\r\n }\r\n }\r\n };\r\n dispatch(dispatchParams);\r\n } catch (err) {\r\n rej(err);\r\n }\r\n });\r\n }\r\n\r\n const msgBus: MsgBus<TStruct, THeaders> = {\r\n config: config,\r\n on: (params) => on(params as MsgBusSubscriberParams<TStructN>),\r\n onceAsync: (params) => onceAsync(params as MsgBusAsyncSubscriberParams<TStructN>),\r\n stream: (params) => {\r\n throw new Error(\"Not implemented\");\r\n },\r\n provide: (params) => provide(params as MsgBusProviderParams<TStructN>),\r\n dispatch: (params) => dispatch(params as MsgBusDispatcherParams<TStructN>),\r\n dispatchAsync: (params) => dispatchAsync(params as MsgBusAsyncDispatcherParams<TStructN>),\r\n };\r\n\r\n msgBus[\"#subjects\"] = subjects;\r\n\r\n return msgBus;\r\n}\r\n\r\n// class MessageBus<TStruct extends MsgBusStruct>\r\n// implements IMsgBus<TStruct>\r\n// {\r\n// constructor() {}\r\n// // ...\r\n// }\r\n"],"names":["getMatchTest","pattern","value","regexp","groupPrefix","createMsgBus","config","errTopic","now","getMsgInfo","msg","handleError","srcMsg","err","errPayload","errMsg","$CG_ERROR","publish","$C_ERROR","$CG_IN","subjects","createRoutingKey","channel","group","getOrCreateSubject","routingKey","subject","channelConfig","ReplaySubject","Subject","subscribe","params","match","fOp","filterOp","observable","takeOp","sub","abortSignal","e","uuid","on","onceAsync","res","rej","subParams","provide","msgIn","msgOut","$CG_OUT","payload","dispatch","msgId","args","dispatchAsync","dispatchParams","msgBus"],"mappings":"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"}
1
+ {"version":3,"file":"msgBusFactory.es.js","sources":["../src/msgBusFactory.ts"],"sourcesContent":["import {\r\n MsgBus,\r\n MsgBusStruct,\r\n Msg,\r\n $CG_IN,\r\n $CG_OUT,\r\n MsgBusConfig,\r\n MsgBusSubscriberParams,\r\n MsgBusAsyncSubscriberParams,\r\n MsgBusProviderParams,\r\n MsgBusDispatcherParams,\r\n MsgBusAsyncDispatcherParams,\r\n MsgBusStructNormalized,\r\n $CG_ERROR,\r\n $C_ERROR\r\n} from \"./msgBusCore\";\r\nimport { v4 as uuid } from \"uuid\";\r\nimport { MonoTypeOperatorFunction, Observable, Subject, ReplaySubject } from \"rxjs\";\r\nimport { filter, filter as filterOp, take as takeOp } from \"rxjs/operators\";\r\nimport { Skip } from \"@actdim/utico/typeCore\";\r\n\r\nconst getMatchTest = (pattern: string) => {\r\n if (pattern == undefined) {\r\n // return (value: string) => true;\r\n return (value: string) => value == pattern;\r\n }\r\n if (pattern.startsWith(\"/\") && pattern.endsWith(\"/\")) {\r\n pattern = pattern.substring(1, pattern.length - 1);\r\n const regexp = new RegExp(pattern);\r\n return (value: string) => regexp.test(value);\r\n } else {\r\n return (value: string) => pattern === value;\r\n }\r\n};\r\n\r\n// see also https://www.npmjs.com/package/p-queue\r\n// https://github.com/postaljs/postal.js\r\n\r\n// createServiceBus\r\nconst groupPrefix = \":\"; // \"/\", \":\", \"::\"\r\nexport function createMsgBus<TStruct extends MsgBusStruct, THeaders = any>(config?: MsgBusConfig<MsgBusStructNormalized<TStruct>>) {\r\n type TStructN = MsgBusStructNormalized<TStruct>;\r\n type MsgInfo = Skip<Msg<TStructN>, \"payload\">;\r\n const errTopic = \"msgbus\";\r\n\r\n function now() {\r\n return Date.now(); // new Date().getTime() or +new Date()\r\n }\r\n\r\n function getMsgInfo(msg: Msg<TStructN>) {\r\n return {\r\n address: msg.address,\r\n requestId: msg.requestId,\r\n traceId: msg.traceId,\r\n id: msg.id,\r\n timestamp: msg.timestamp,\r\n priority: msg.priority,\r\n persistent: msg.persistent,\r\n headers: msg.headers\r\n } as MsgInfo;\r\n }\r\n\r\n function handleError(srcMsg: Msg<TStructN>, err: any) {\r\n const errPayload = {\r\n error: err,\r\n source: getMsgInfo(srcMsg)\r\n } as Msg<TStructN>[\"payload\"];\r\n let errMsg: Msg<TStructN>;\r\n errMsg = {\r\n address: {\r\n channel: srcMsg.address.channel,\r\n group: $CG_ERROR,\r\n topic: errTopic\r\n },\r\n payload: errPayload\r\n };\r\n publish(errMsg);\r\n errMsg = {\r\n address: {\r\n channel: $C_ERROR,\r\n group: $CG_IN,\r\n topic: errTopic\r\n },\r\n payload: errPayload\r\n };\r\n publish(errMsg);\r\n }\r\n // observables\r\n const subjects: Map<string, Subject<Msg<TStructN>>> = new Map();\r\n\r\n function createRoutingKey(channel: string, group: string) {\r\n return `${channel}${groupPrefix}${group}`;\r\n }\r\n\r\n function getOrCreateSubject(channel: string, group: string): Subject<Msg<TStructN>> {\r\n const routingKey = createRoutingKey(channel, group);\r\n // TODO: support BehaviorSubject\r\n if (!subjects.has(routingKey)) {\r\n let subject: Subject<Msg<TStructN>> = null;\r\n const channelConfig = config[channel];\r\n if (channelConfig) {\r\n if (channelConfig.replayBufferSize != undefined || channelConfig.replayWindowTime != undefined) {\r\n subject = new ReplaySubject<Msg<TStructN>>(channelConfig.replayBufferSize == undefined ? Infinity : channelConfig.replayBufferSize, channelConfig.replayWindowTime == undefined ? Infinity : channelConfig.replayWindowTime);\r\n }\r\n }\r\n if (!subject) {\r\n subject = new Subject<Msg<TStructN>>();\r\n }\r\n subjects.set(routingKey,\r\n subject\r\n );\r\n }\r\n return subjects.get(routingKey);\r\n }\r\n\r\n function subscribe(params: MsgBusSubscriberParams<TStructN>) {\r\n // TODO: use [channel, group] as key?\r\n\r\n const channel = String(params.channel);\r\n\r\n const group = params.group == undefined ? $CG_IN : String(params.group);\r\n\r\n const subject = getOrCreateSubject(channel, group);\r\n\r\n const match = getMatchTest(params.topic);\r\n\r\n const fOp: MonoTypeOperatorFunction<Msg<TStructN>> = filterOp(\r\n (msg) =>\r\n // msg.address.channel === channel &&\r\n // msg.address.group === group &&\r\n match(msg.address.topic) && (!params.filter || params.filter(msg))\r\n );\r\n\r\n let observable: Observable<Msg<TStructN>>;\r\n // groupBy?\r\n // mergeMap?\r\n // timeout, takeUntil, time?\r\n if (params.config?.fetchCount) {\r\n observable = subject.pipe(fOp, takeOp(params.config.fetchCount));\r\n } else {\r\n observable = subject.pipe(fOp);\r\n }\r\n\r\n const sub = observable.subscribe({\r\n next: (msg: Msg<TStructN>) => {\r\n try {\r\n return params.callback(msg);\r\n } catch (err) {\r\n handleError(msg, err);\r\n // throw err;\r\n }\r\n },\r\n error: (err) => {\r\n handleError(\r\n {\r\n address: {\r\n channel: channel,\r\n group: group,\r\n topic: params.topic\r\n },\r\n id: undefined, // not a real message\r\n timestamp: now()\r\n },\r\n err\r\n );\r\n },\r\n complete: () => {\r\n // cleanup\r\n }\r\n });\r\n\r\n const abortSignal = params.config?.abortSignal;\r\n abortSignal?.addEventListener(\"abort\", (e) => {\r\n // TODO: publish debug (internal) message\r\n console.log(\r\n `Listening aborted for channel: ${channel}, group: ${group}, topic: ${params.topic}. Reason: ${abortSignal.reason}` // e.target\r\n );\r\n sub.unsubscribe();\r\n });\r\n }\r\n\r\n function publish(msg: Msg<TStructN>) {\r\n if (msg.timestamp == undefined) {\r\n msg.timestamp = now()\r\n }\r\n if (msg.id == undefined) {\r\n msg.id = uuid();\r\n }\r\n if (msg.traceId == undefined) {\r\n msg.traceId = uuid();\r\n }\r\n const channel = String(msg.address.channel);\r\n if (msg.address.group == undefined) {\r\n msg.address.group = $CG_IN;\r\n }\r\n const group = String(msg.address.group);\r\n const subject = getOrCreateSubject(channel, group);\r\n subject.next(msg);\r\n return msg;\r\n }\r\n\r\n function on(params: MsgBusSubscriberParams<TStructN>) {\r\n subscribe(params);\r\n }\r\n\r\n function onceAsync(params: MsgBusAsyncSubscriberParams<TStructN>) {\r\n return new Promise<any>((res, rej) => {\r\n try {\r\n const abortSignal = params.config?.abortSignal;\r\n abortSignal?.addEventListener(\"abort\", (e) => {\r\n rej(new Error(\"Cancelled\", { cause: abortSignal.reason })); // e.target\r\n });\r\n const subParams: MsgBusSubscriberParams<TStructN> = {\r\n ...params,\r\n ...{\r\n config: {\r\n ...params.config,\r\n ...{\r\n fetchCount: 1\r\n }\r\n },\r\n callback: (msg) => {\r\n // sub.unsubscribe();\r\n res(msg);\r\n }\r\n }\r\n };\r\n subscribe(subParams);\r\n } catch (e) {\r\n rej(e);\r\n }\r\n });\r\n }\r\n\r\n function provide(params: MsgBusProviderParams<TStructN>) {\r\n const subParams: MsgBusSubscriberParams<TStructN> = {\r\n ...params,\r\n ...{\r\n callback: async (msgIn) => {\r\n try {\r\n const msgOut: Msg<TStructN, keyof TStructN, typeof $CG_OUT> = {\r\n address: {\r\n channel: msgIn.address.channel,\r\n group: $CG_OUT,\r\n topic: msgIn.address.topic\r\n },\r\n traceId: msgIn.traceId,\r\n requestId: msgIn.id,\r\n persistent: msgIn.persistent,\r\n priority: msgIn.priority,\r\n headers: msgIn.headers\r\n };\r\n const payload = (await Promise.resolve(params.callback(msgIn, msgOut)));\r\n msgOut.payload = payload;\r\n publish(msgOut);\r\n } catch (err) {\r\n handleError(msgIn, err);\r\n // throw err;\r\n }\r\n }\r\n }\r\n };\r\n subscribe(subParams);\r\n }\r\n\r\n function dispatch(params: MsgBusDispatcherParams<TStructN>) {\r\n const msgId = uuid();\r\n if (params.callback) {\r\n const subParams: MsgBusSubscriberParams<TStructN, keyof TStructN, typeof $CG_OUT> = {\r\n channel: params.channel,\r\n group: $CG_OUT,\r\n topic: params.topic,\r\n config: {\r\n ...params.config,\r\n ...{\r\n fetchCount: 1\r\n }\r\n },\r\n callback: (msgOut) => {\r\n // sub.unsubscribe();\r\n params.callback(msgOut);\r\n },\r\n filter: (msgOut) => {\r\n return msgOut.requestId === msgId && (!params.filter || params.filter(msgOut)) // TODO: match topic?\r\n }\r\n };\r\n subscribe(subParams);\r\n }\r\n let payload: any;\r\n if (params.payloadFn) {\r\n params.payloadFn((args) => {\r\n payload = args;\r\n });\r\n } else {\r\n payload = params.payload;\r\n }\r\n const msgIn = publish({\r\n address: {\r\n channel: params.channel,\r\n group: params.group,\r\n topic: params.topic\r\n },\r\n payload: payload,\r\n traceId: params.traceId,\r\n persistent: params.persistent,\r\n priority: params.priority,\r\n id: msgId,\r\n headers: params.headers\r\n });\r\n }\r\n\r\n async function dispatchAsync(params: MsgBusAsyncDispatcherParams<TStructN>): Promise<any> {\r\n return new Promise((res, rej) => {\r\n try {\r\n const abortSignal = params.config?.abortSignal;\r\n abortSignal?.addEventListener(\"abort\", (e) => {\r\n rej(new Error(\"Cancelled\", { cause: abortSignal.reason })); // e.target\r\n });\r\n const dispatchParams: MsgBusDispatcherParams<TStructN> = {\r\n ...params,\r\n callback: (msg) => {\r\n try {\r\n res(msg);\r\n } catch (err) {\r\n rej(err);\r\n }\r\n }\r\n };\r\n dispatch(dispatchParams);\r\n } catch (err) {\r\n rej(err);\r\n }\r\n });\r\n }\r\n\r\n const msgBus: MsgBus<TStruct, THeaders> = {\r\n config: config,\r\n on: (params) => on(params as MsgBusSubscriberParams<TStructN>),\r\n onceAsync: (params) => onceAsync(params as MsgBusAsyncSubscriberParams<TStructN>),\r\n stream: (params) => {\r\n throw new Error(\"Not implemented\");\r\n },\r\n provide: (params) => provide(params as MsgBusProviderParams<TStructN>),\r\n dispatch: (params) => dispatch(params as MsgBusDispatcherParams<TStructN>),\r\n dispatchAsync: (params) => dispatchAsync(params as MsgBusAsyncDispatcherParams<TStructN>),\r\n };\r\n\r\n // msgBus[\"#subjects\"] = subjects;\r\n\r\n return msgBus;\r\n}\r\n\r\n// class MessageBus<TStruct extends MsgBusStruct>\r\n// implements IMsgBus<TStruct>\r\n// {\r\n// constructor() {}\r\n// // ...\r\n// }\r\n"],"names":["getMatchTest","pattern","value","regexp","groupPrefix","createMsgBus","config","errTopic","now","getMsgInfo","msg","handleError","srcMsg","err","errPayload","errMsg","$CG_ERROR","publish","$C_ERROR","$CG_IN","subjects","createRoutingKey","channel","group","getOrCreateSubject","routingKey","subject","channelConfig","ReplaySubject","Subject","subscribe","params","match","fOp","filterOp","observable","takeOp","sub","abortSignal","e","uuid","on","onceAsync","res","rej","subParams","provide","msgIn","msgOut","$CG_OUT","payload","dispatch","msgId","args","dispatchAsync","dispatchParams"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@actdim/msgmesh",
3
- "version": "1.0.6",
3
+ "version": "1.0.9",
4
4
  "description": "A type-safe, modular message mesh for scalable async communication in TypeScript",
5
5
  "author": "Pavel Borodaev",
6
6
  "license": "Proprietary",