@actdim/msgmesh 1.1.4 → 1.1.6

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.
@@ -130,7 +130,7 @@ export type MsgAsyncSubscriberParams<TStruct extends MsgStruct = MsgStruct, TCha
130
130
  }>;
131
131
  export type MsgAsyncSubscriber<TStruct extends MsgStruct, THeaders extends MsgHeaders = MsgHeaders> = <TChannel extends keyof TStruct, TGroup extends keyof TStruct[TChannel] = typeof $CG_IN>(params: MsgAsyncSubscriberParams<TStruct, TChannel, TGroup>) => Promise<Msg<TStruct, TChannel, TGroup, THeaders>>;
132
132
  export type MsgProviderParams<TStruct extends MsgStruct = MsgStruct, TChannel extends keyof TStruct = keyof TStruct, TGroup extends keyof TStruct[TChannel] = keyof TStruct[TChannel], THeaders extends MsgHeaders = MsgHeaders> = Overwrite<MsgSubscriberParams<TStruct, TChannel, TGroup, THeaders>, {
133
- callback?: (msgIn: Msg<TStruct, TChannel, TGroup, THeaders>, msgOut: Msg<TStruct, TChannel, typeof $CG_OUT, THeaders>) => MaybePromise<OutStruct<TStruct, TChannel>>;
133
+ callback?: (msgIn: Msg<TStruct, TChannel, TGroup, THeaders>, headers: THeaders) => MaybePromise<OutStruct<TStruct, TChannel>>;
134
134
  headers?: THeaders;
135
135
  }>;
136
136
  export type MsgProvider<TStruct extends MsgStruct, THeaders extends MsgHeaders = MsgHeaders> = <TChannel extends keyof TStruct, TGroup extends keyof TStruct[TChannel] = typeof $CG_IN>(params: MsgProviderParams<TStruct, TChannel, TGroup, THeaders>) => void;
@@ -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 +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\nimport { ThrottleOptions } from \"./util\";\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\nexport class BaseError extends Error {\r\n readonly name: string = 'BaseError';\r\n\r\n constructor(\r\n message: string,\r\n options?: {\r\n cause?: unknown;\r\n }\r\n ) {\r\n super(message, options);\r\n Object.setPrototypeOf(this, new.target.prototype);\r\n }\r\n}\r\nexport class TimeoutError extends BaseError {\r\n readonly name: string = 'TimeoutError';\r\n\r\n constructor(message?: string, cause?: unknown) {\r\n // Operation\r\n super(message || \"Timeout exceeded\", { cause });\r\n }\r\n}\r\n\r\nexport class AbortError extends BaseError {\r\n readonly name: string = 'AbortError';\r\n\r\n constructor(message?: string, cause?: unknown) {\r\n super(message || \"Operation aborted\", { cause });\r\n }\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\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// SystemMsgtruct\r\nexport type MsgStructBase = {\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 MsgStruct = {\r\n [channel: string]: MsgChannelStruct;\r\n} & MsgStructBase;\r\n\r\n// MsgStructBuilder\r\nexport type MsgStructFactory<\r\n TStruct extends TStructBase,\r\n TStructBase extends MsgStruct = MsgStruct\r\n> = {\r\n [C in keyof TStruct]: TStruct[C] & ErrorParam;\r\n };\r\n\r\n// export type MsgStruct = Record<string, MsgChannelStruct>;\r\n\r\nexport type InStruct<TStruct extends MsgStruct, 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 MsgStruct,\r\n// TChannel extends keyof TStruct\r\n// > = TStruct[TChannel] extends InParam ? TStruct[TChannel][\"in\"] : never;\r\n\r\nexport type OutStruct<TStruct extends MsgStruct, 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 MsgStruct,\r\n// TChannel extends keyof TStruct\r\n// > = TStruct[TChannel] extends OutParam ? TStruct[TChannel][\"out\"] : never;\r\n\r\nexport type AckMode = 'atLeastOne' | 'all';\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 // ackMode: AckMode;\r\n // requireAck: boolean;\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 delay?: number;\r\n throttle?: number | (ThrottleOptions & { duration: number; });\r\n debounce?: number;\r\n};\r\n\r\nexport type MsgSubscriberConfig = {\r\n fetchCount?: number;\r\n abortSignal?: AbortSignal;\r\n\r\n throttle?: number | (ThrottleOptions & { duration: number; });\r\n debounce?: number;\r\n};\r\n\r\nexport type MsgDispatcherConfig = MsgSubscriberConfig & {\r\n priority?: number;\r\n};\r\n\r\nexport type MsgAsyncSubscriberConfig = {\r\n abortSignal?: AbortSignal;\r\n timeout?: number;\r\n};\r\n\r\nexport type MsgAsyncDispatcherConfig = MsgAsyncSubscriberConfig & {\r\n priority?: number;\r\n};\r\n\r\nexport type MsgBusConfig<TStruct extends MsgStruct> = {\r\n [TChannel in keyof TStruct]?: MsgChannelConfig<TStruct[TChannel]>;\r\n}; // Record<string, MsgChannelConfig>\r\n\r\nexport type MsgAddress<\r\n TStruct extends MsgStruct = MsgStruct,\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\nexport type MsgHeaders = {\r\n\r\n // similar to inReplyToId\r\n inResponseToId?: string;\r\n version?: string; // schemaVersion\r\n\r\n requestId?: string;\r\n\r\n // routing hints\r\n sourceId?: string; // senderId/producerId\r\n targetId?: string; // receiverId/recipientId\r\n\r\n originId?: string;\r\n\r\n correlationId?: string; // activityId\r\n traceId?: string;\r\n\r\n // timestamps (unix epoch, ms):\r\n publishedAt?: number;\r\n\r\n priority?: number;\r\n persistent?: boolean; // durable? (for durable queue)\r\n\r\n tags?: string | string[];\r\n\r\n auth?: {\r\n userId?: string;\r\n token?: string;\r\n }\r\n\r\n absoluteExpiration?: number;\r\n ttl?: number;\r\n slidingExpiration?: number;\r\n\r\n // ack/nack policy\r\n // requireAck: boolean;\r\n // ackMode: AckMode;\r\n\r\n // retryCount?: number;\r\n // deliveryAttempt?: number;\r\n\r\n // audience\r\n // intent \r\n // subject\r\n // group\r\n // schema\r\n // scope \r\n};\r\n\r\n// TODO: support MsgStatus\r\n// export type MsgStatus = \"pending\" | \"sent\" | \"delivered\" | \"processed\" | \"failed\" | \"expired\";\r\n\r\n// TODO: support ack/nack\r\n// TODO: integrate with https://github.com/connor4312/cockatiel \r\n// MsgEnvelope\r\nexport type Msg<\r\n TStruct extends MsgStruct = MsgStruct,\r\n TChannel extends keyof TStruct = keyof TStruct,\r\n TGroup extends keyof TStruct[TChannel] = keyof TStruct[TChannel],\r\n THeaders extends MsgHeaders = MsgHeaders // Record<string, string>\r\n> = {\r\n // transportId\r\n id?: string;\r\n address: MsgAddress<TStruct, TChannel, TGroup>;\r\n payload?: TGroup extends undefined ? InStruct<TStruct, TChannel> : TStruct[TChannel][TGroup];\r\n headers?: THeaders;\r\n};\r\n\r\nexport type MsgSubscriberParams<\r\n TStruct extends MsgStruct = MsgStruct,\r\n TChannel extends keyof TStruct = keyof TStruct,\r\n TGroup extends keyof TStruct[TChannel] = keyof TStruct[TChannel], // typeof $CG_IN\r\n THeaders extends MsgHeaders = MsgHeaders\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?: MsgSubscriberConfig;\r\n filter?: (msg: Msg<TStruct, TChannel, TGroup, THeaders>) => boolean;\r\n};\r\n\r\n// MsgSubscriberFn\r\nexport type MsgSubscriber<TStruct extends MsgStruct, THeaders extends MsgHeaders = MsgHeaders> = <\r\n TChannel extends keyof TStruct,\r\n TGroup extends keyof TStruct[TChannel] = typeof $CG_IN\r\n>(\r\n params: MsgSubscriberParams<TStruct, TChannel, TGroup, THeaders>\r\n) => void;\r\n\r\n// MsgAsyncSubIterator(Fn)\r\nexport type MsgStreamer<TStruct extends MsgStruct, THeaders extends MsgHeaders = MsgHeaders> = <\r\n TChannel extends keyof TStruct,\r\n TGroup extends keyof TStruct[TChannel] = typeof $CG_IN\r\n>(\r\n params: MsgSubscriberParams<TStruct, TChannel, TGroup>\r\n) => AsyncIterableIterator<Msg<TStruct, TChannel, TGroup, THeaders>>; // TGroup extends undefined ? typeof $CG_IN : TGroup\r\n\r\nexport type MsgAsyncSubscriberParams<\r\n TStruct extends MsgStruct = MsgStruct,\r\n TChannel extends keyof TStruct = keyof TStruct,\r\n TGroup extends keyof TStruct[TChannel] = keyof TStruct[TChannel], // typeof $CG_IN\r\n THeaders extends MsgHeaders = MsgHeaders\r\n> = Overwrite<Skip<MsgSubscriberParams<TStruct, TChannel, TGroup, THeaders>, \"callback\">, {\r\n config?: MsgAsyncSubscriberConfig\r\n}>;\r\n\r\n// MsgAsyncSubscriberFn\r\nexport type MsgAsyncSubscriber<TStruct extends MsgStruct, THeaders extends MsgHeaders = MsgHeaders> = <\r\n TChannel extends keyof TStruct,\r\n TGroup extends keyof TStruct[TChannel] = typeof $CG_IN\r\n>(\r\n params: MsgAsyncSubscriberParams<TStruct, TChannel, TGroup>\r\n) => Promise<Msg<TStruct, TChannel, TGroup, THeaders>>; // TGroup extends undefined ? typeof $CG_IN : TGroup\r\n\r\nexport type MsgProviderParams<\r\n TStruct extends MsgStruct = MsgStruct,\r\n TChannel extends keyof TStruct = keyof TStruct,\r\n TGroup extends keyof TStruct[TChannel] = keyof TStruct[TChannel], // typeof $CG_IN\r\n THeaders extends MsgHeaders = MsgHeaders\r\n> = Overwrite<\r\n MsgSubscriberParams<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 headers?: THeaders;\r\n }\r\n>;\r\n\r\n// MsgProviderFn\r\nexport type MsgProvider<TStruct extends MsgStruct, THeaders extends MsgHeaders = MsgHeaders> = <\r\n TChannel extends keyof TStruct,\r\n TGroup extends keyof TStruct[TChannel] = typeof $CG_IN\r\n>(\r\n params: MsgProviderParams<TStruct, TChannel, TGroup, THeaders>\r\n) => void;\r\n\r\n// MsgBinderFn\r\nexport type MsgBinder<TStruct extends MsgStruct> = <\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: MsgSubscriberParams<TStruct, TSourceChannel, TSourceGroup>,\r\n target: MsgAddress<TStruct, TTargetChannel, TTargetGroup>\r\n) => void;\r\n\r\nexport type MsgDispatcherParams<\r\n TStruct extends MsgStruct = MsgStruct,\r\n TChannel extends keyof TStruct = keyof TStruct,\r\n TGroup extends keyof TStruct[TChannel] = keyof TStruct[TChannel], // typeof $CG_IN\r\n THeaders extends MsgHeaders = MsgHeaders\r\n> = MsgAddress<TStruct, TChannel, TGroup> & {\r\n channelSelector?: string | ((channel: string) => boolean);\r\n // topicSelector?: string | ((channel: string) => boolean);\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 callback?: (msg: Msg<TStruct, TChannel, typeof $CG_OUT, THeaders>) => void;\r\n config?: MsgDispatcherConfig;\r\n filter?: (msg: Msg<TStruct, TChannel, TGroup, THeaders>) => boolean;\r\n headers?: THeaders;\r\n};\r\n\r\nexport type MsgAsyncDispatcherParams<\r\n TStruct extends MsgStruct = MsgStruct,\r\n TChannel extends keyof TStruct = keyof TStruct,\r\n TGroup extends keyof TStruct[TChannel] = keyof TStruct[TChannel], // typeof $CG_IN\r\n THeaders extends MsgHeaders = MsgHeaders\r\n> = Overwrite<Skip<MsgDispatcherParams<TStruct, TChannel, TGroup, THeaders>, \"callback\">,\r\n {\r\n config?: MsgAsyncDispatcherConfig\r\n }>;\r\n\r\n// MsgDispatcherFn\r\nexport type MsgDispatcher<TStruct extends MsgStruct, THeaders extends MsgHeaders = MsgHeaders> = <\r\n TChannel extends keyof TStruct,\r\n TGroup extends keyof TStruct[TChannel] = typeof $CG_IN\r\n>(\r\n params: MsgDispatcherParams<TStruct, TChannel, TGroup, THeaders>\r\n) => void;\r\n\r\n// MsgAsyncDispatcherFn\r\nexport type MsgAsyncDispatcher<TStruct extends MsgStruct, THeaders extends MsgHeaders = MsgHeaders> = <\r\n TChannel extends keyof TStruct,\r\n TGroup extends keyof TStruct[TChannel] = typeof $CG_IN\r\n>(\r\n params: MsgAsyncDispatcherParams<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 MsgStructNormalized<TStruct extends MsgStruct> = {\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 MsgStruct, THeaders extends MsgHeaders = MsgHeaders> = {\r\n readonly config: MsgBusConfig<MsgStructNormalized<TStruct>>;\r\n // subscribe, listen\r\n readonly on: MsgSubscriber<MsgStructNormalized<TStruct>, THeaders>;\r\n readonly onceAsync: MsgAsyncSubscriber<MsgStructNormalized<TStruct>, THeaders>;\r\n // listenStream, consume, receive\r\n readonly stream: MsgStreamer<MsgStructNormalized<TStruct>, THeaders>;\r\n // handle, resolve\r\n readonly provide: MsgProvider<MsgStructNormalized<TStruct>, THeaders>;\r\n // link, connect\r\n // dispatch (emit/publish + subscribe)\r\n readonly dispatch: MsgDispatcher<MsgStructNormalized<TStruct>, THeaders>;\r\n readonly dispatchAsync: MsgAsyncDispatcher<MsgStructNormalized<TStruct>, THeaders>;\r\n // TODO: support suspend/resume methods\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]?: THeaders;\r\n};\r\n"],"names":["$CG_IN","$CG_OUT","$CG_ERROR","$C_ERROR","BaseError","message","options","TimeoutError","cause","AbortError","$TypeArgStruct","$TypeArgHeaders"],"mappings":"AAOO,MAAMA,IAAS,MAETC,IAAU,OAEVC,IAAY,SAEZC,IAAW;AAuBjB,MAAMC,UAAkB,MAAM;AAAA,EACxB,OAAe;AAAA,EAExB,YACIC,GACAC,GAGF;AACE,UAAMD,GAASC,CAAO,GACtB,OAAO,eAAe,MAAM,WAAW,SAAS;AAAA,EACpD;AACJ;AACO,MAAMC,UAAqBH,EAAU;AAAA,EAC/B,OAAe;AAAA,EAExB,YAAYC,GAAkBG,GAAiB;AAE3C,UAAMH,KAAW,oBAAoB,EAAE,OAAAG,EAAA,CAAO;AAAA,EAClD;AACJ;AAEO,MAAMC,UAAmBL,EAAU;AAAA,EAC7B,OAAe;AAAA,EAExB,YAAYC,GAAkBG,GAAiB;AAC3C,UAAMH,KAAW,qBAAqB,EAAE,OAAAG,EAAA,CAAO;AAAA,EACnD;AACJ;AAyUO,MAAME,IAAiB,OAAO,aAAa,GACrCC,IAAkB,OAAO,cAAc;"}
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\nimport { ThrottleOptions } from \"./util\";\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\nexport class BaseError extends Error {\r\n readonly name: string = 'BaseError';\r\n\r\n constructor(\r\n message: string,\r\n options?: {\r\n cause?: unknown;\r\n }\r\n ) {\r\n super(message, options);\r\n Object.setPrototypeOf(this, new.target.prototype);\r\n }\r\n}\r\nexport class TimeoutError extends BaseError {\r\n readonly name: string = 'TimeoutError';\r\n\r\n constructor(message?: string, cause?: unknown) {\r\n // Operation\r\n super(message || \"Timeout exceeded\", { cause });\r\n }\r\n}\r\n\r\nexport class AbortError extends BaseError {\r\n readonly name: string = 'AbortError';\r\n\r\n constructor(message?: string, cause?: unknown) {\r\n super(message || \"Operation aborted\", { cause });\r\n }\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\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// SystemMsgtruct\r\nexport type MsgStructBase = {\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 MsgStruct = {\r\n [channel: string]: MsgChannelStruct;\r\n} & MsgStructBase;\r\n\r\n// MsgStructBuilder\r\nexport type MsgStructFactory<\r\n TStruct extends TStructBase,\r\n TStructBase extends MsgStruct = MsgStruct\r\n> = {\r\n [C in keyof TStruct]: TStruct[C] & ErrorParam;\r\n };\r\n\r\n// export type MsgStruct = Record<string, MsgChannelStruct>;\r\n\r\nexport type InStruct<TStruct extends MsgStruct, 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 MsgStruct,\r\n// TChannel extends keyof TStruct\r\n// > = TStruct[TChannel] extends InParam ? TStruct[TChannel][\"in\"] : never;\r\n\r\nexport type OutStruct<TStruct extends MsgStruct, 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 MsgStruct,\r\n// TChannel extends keyof TStruct\r\n// > = TStruct[TChannel] extends OutParam ? TStruct[TChannel][\"out\"] : never;\r\n\r\nexport type AckMode = 'atLeastOne' | 'all';\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 // ackMode: AckMode;\r\n // requireAck: boolean;\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 delay?: number;\r\n throttle?: number | (ThrottleOptions & { duration: number; });\r\n debounce?: number;\r\n};\r\n\r\nexport type MsgSubscriberConfig = {\r\n fetchCount?: number;\r\n abortSignal?: AbortSignal;\r\n\r\n throttle?: number | (ThrottleOptions & { duration: number; });\r\n debounce?: number;\r\n};\r\n\r\nexport type MsgDispatcherConfig = MsgSubscriberConfig & {\r\n priority?: number;\r\n};\r\n\r\nexport type MsgAsyncSubscriberConfig = {\r\n abortSignal?: AbortSignal;\r\n timeout?: number;\r\n};\r\n\r\nexport type MsgAsyncDispatcherConfig = MsgAsyncSubscriberConfig & {\r\n priority?: number;\r\n};\r\n\r\nexport type MsgBusConfig<TStruct extends MsgStruct> = {\r\n [TChannel in keyof TStruct]?: MsgChannelConfig<TStruct[TChannel]>;\r\n}; // Record<string, MsgChannelConfig>\r\n\r\nexport type MsgAddress<\r\n TStruct extends MsgStruct = MsgStruct,\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\nexport type MsgHeaders = {\r\n\r\n // similar to inReplyToId\r\n inResponseToId?: string;\r\n version?: string; // schemaVersion\r\n\r\n requestId?: string;\r\n\r\n // routing hints\r\n sourceId?: string; // senderId/producerId\r\n targetId?: string; // receiverId/recipientId\r\n\r\n originId?: string;\r\n\r\n correlationId?: string; // activityId\r\n traceId?: string;\r\n\r\n // timestamps (unix epoch, ms):\r\n publishedAt?: number;\r\n\r\n priority?: number;\r\n persistent?: boolean; // durable? (for durable queue)\r\n\r\n tags?: string | string[];\r\n\r\n auth?: {\r\n userId?: string;\r\n token?: string;\r\n }\r\n\r\n absoluteExpiration?: number;\r\n ttl?: number;\r\n slidingExpiration?: number;\r\n\r\n // ack/nack policy\r\n // requireAck: boolean;\r\n // ackMode: AckMode;\r\n\r\n // retryCount?: number;\r\n // deliveryAttempt?: number;\r\n\r\n // audience\r\n // intent \r\n // subject\r\n // group\r\n // schema\r\n // scope \r\n};\r\n\r\n// TODO: support MsgStatus\r\n// export type MsgStatus = \"pending\" | \"sent\" | \"delivered\" | \"processed\" | \"failed\" | \"expired\";\r\n\r\n// TODO: support ack/nack\r\n// TODO: integrate with https://github.com/connor4312/cockatiel \r\n// MsgEnvelope\r\nexport type Msg<\r\n TStruct extends MsgStruct = MsgStruct,\r\n TChannel extends keyof TStruct = keyof TStruct,\r\n TGroup extends keyof TStruct[TChannel] = keyof TStruct[TChannel],\r\n THeaders extends MsgHeaders = MsgHeaders // Record<string, string>\r\n> = {\r\n // transportId\r\n id?: string;\r\n address: MsgAddress<TStruct, TChannel, TGroup>;\r\n payload?: TGroup extends undefined ? InStruct<TStruct, TChannel> : TStruct[TChannel][TGroup];\r\n headers?: THeaders;\r\n};\r\n\r\nexport type MsgSubscriberParams<\r\n TStruct extends MsgStruct = MsgStruct,\r\n TChannel extends keyof TStruct = keyof TStruct,\r\n TGroup extends keyof TStruct[TChannel] = keyof TStruct[TChannel], // typeof $CG_IN\r\n THeaders extends MsgHeaders = MsgHeaders\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?: MsgSubscriberConfig;\r\n filter?: (msg: Msg<TStruct, TChannel, TGroup, THeaders>) => boolean;\r\n};\r\n\r\n// MsgSubscriberFn\r\nexport type MsgSubscriber<TStruct extends MsgStruct, THeaders extends MsgHeaders = MsgHeaders> = <\r\n TChannel extends keyof TStruct,\r\n TGroup extends keyof TStruct[TChannel] = typeof $CG_IN\r\n>(\r\n params: MsgSubscriberParams<TStruct, TChannel, TGroup, THeaders>\r\n) => void;\r\n\r\n// MsgAsyncSubIterator(Fn)\r\nexport type MsgStreamer<TStruct extends MsgStruct, THeaders extends MsgHeaders = MsgHeaders> = <\r\n TChannel extends keyof TStruct,\r\n TGroup extends keyof TStruct[TChannel] = typeof $CG_IN\r\n>(\r\n params: MsgSubscriberParams<TStruct, TChannel, TGroup>\r\n) => AsyncIterableIterator<Msg<TStruct, TChannel, TGroup, THeaders>>; // TGroup extends undefined ? typeof $CG_IN : TGroup\r\n\r\nexport type MsgAsyncSubscriberParams<\r\n TStruct extends MsgStruct = MsgStruct,\r\n TChannel extends keyof TStruct = keyof TStruct,\r\n TGroup extends keyof TStruct[TChannel] = keyof TStruct[TChannel], // typeof $CG_IN\r\n THeaders extends MsgHeaders = MsgHeaders\r\n> = Overwrite<Skip<MsgSubscriberParams<TStruct, TChannel, TGroup, THeaders>, \"callback\">, {\r\n config?: MsgAsyncSubscriberConfig\r\n}>;\r\n\r\n// MsgAsyncSubscriberFn\r\nexport type MsgAsyncSubscriber<TStruct extends MsgStruct, THeaders extends MsgHeaders = MsgHeaders> = <\r\n TChannel extends keyof TStruct,\r\n TGroup extends keyof TStruct[TChannel] = typeof $CG_IN\r\n>(\r\n params: MsgAsyncSubscriberParams<TStruct, TChannel, TGroup>\r\n) => Promise<Msg<TStruct, TChannel, TGroup, THeaders>>; // TGroup extends undefined ? typeof $CG_IN : TGroup\r\n\r\nexport type MsgProviderParams<\r\n TStruct extends MsgStruct = MsgStruct,\r\n TChannel extends keyof TStruct = keyof TStruct,\r\n TGroup extends keyof TStruct[TChannel] = keyof TStruct[TChannel], // typeof $CG_IN\r\n THeaders extends MsgHeaders = MsgHeaders\r\n> = Overwrite<\r\n MsgSubscriberParams<TStruct, TChannel, TGroup, THeaders>,\r\n {\r\n // resolve\r\n callback?: (msgIn: Msg<TStruct, TChannel, TGroup, THeaders>, headers: THeaders) => MaybePromise<OutStruct<TStruct, TChannel>>;\r\n headers?: THeaders;\r\n }\r\n>;\r\n\r\n// MsgProviderFn\r\nexport type MsgProvider<TStruct extends MsgStruct, THeaders extends MsgHeaders = MsgHeaders> = <\r\n TChannel extends keyof TStruct,\r\n TGroup extends keyof TStruct[TChannel] = typeof $CG_IN\r\n>(\r\n params: MsgProviderParams<TStruct, TChannel, TGroup, THeaders>\r\n) => void;\r\n\r\n// MsgBinderFn\r\nexport type MsgBinder<TStruct extends MsgStruct> = <\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: MsgSubscriberParams<TStruct, TSourceChannel, TSourceGroup>,\r\n target: MsgAddress<TStruct, TTargetChannel, TTargetGroup>\r\n) => void;\r\n\r\nexport type MsgDispatcherParams<\r\n TStruct extends MsgStruct = MsgStruct,\r\n TChannel extends keyof TStruct = keyof TStruct,\r\n TGroup extends keyof TStruct[TChannel] = keyof TStruct[TChannel], // typeof $CG_IN\r\n THeaders extends MsgHeaders = MsgHeaders\r\n> = MsgAddress<TStruct, TChannel, TGroup> & {\r\n channelSelector?: string | ((channel: string) => boolean);\r\n // topicSelector?: string | ((channel: string) => boolean);\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 callback?: (msg: Msg<TStruct, TChannel, typeof $CG_OUT, THeaders>) => void;\r\n config?: MsgDispatcherConfig;\r\n filter?: (msg: Msg<TStruct, TChannel, TGroup, THeaders>) => boolean;\r\n headers?: THeaders;\r\n};\r\n\r\nexport type MsgAsyncDispatcherParams<\r\n TStruct extends MsgStruct = MsgStruct,\r\n TChannel extends keyof TStruct = keyof TStruct,\r\n TGroup extends keyof TStruct[TChannel] = keyof TStruct[TChannel], // typeof $CG_IN\r\n THeaders extends MsgHeaders = MsgHeaders\r\n> = Overwrite<Skip<MsgDispatcherParams<TStruct, TChannel, TGroup, THeaders>, \"callback\">,\r\n {\r\n config?: MsgAsyncDispatcherConfig\r\n }>;\r\n\r\n// MsgDispatcherFn\r\nexport type MsgDispatcher<TStruct extends MsgStruct, THeaders extends MsgHeaders = MsgHeaders> = <\r\n TChannel extends keyof TStruct,\r\n TGroup extends keyof TStruct[TChannel] = typeof $CG_IN\r\n>(\r\n params: MsgDispatcherParams<TStruct, TChannel, TGroup, THeaders>\r\n) => void;\r\n\r\n// MsgAsyncDispatcherFn\r\nexport type MsgAsyncDispatcher<TStruct extends MsgStruct, THeaders extends MsgHeaders = MsgHeaders> = <\r\n TChannel extends keyof TStruct,\r\n TGroup extends keyof TStruct[TChannel] = typeof $CG_IN\r\n>(\r\n params: MsgAsyncDispatcherParams<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 MsgStructNormalized<TStruct extends MsgStruct> = {\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 MsgStruct, THeaders extends MsgHeaders = MsgHeaders> = {\r\n readonly config: MsgBusConfig<MsgStructNormalized<TStruct>>;\r\n // subscribe, listen\r\n readonly on: MsgSubscriber<MsgStructNormalized<TStruct>, THeaders>;\r\n readonly onceAsync: MsgAsyncSubscriber<MsgStructNormalized<TStruct>, THeaders>;\r\n // listenStream, consume, receive\r\n readonly stream: MsgStreamer<MsgStructNormalized<TStruct>, THeaders>;\r\n // handle, resolve\r\n readonly provide: MsgProvider<MsgStructNormalized<TStruct>, THeaders>;\r\n // link, connect\r\n // dispatch (emit/publish + subscribe)\r\n readonly dispatch: MsgDispatcher<MsgStructNormalized<TStruct>, THeaders>;\r\n readonly dispatchAsync: MsgAsyncDispatcher<MsgStructNormalized<TStruct>, THeaders>;\r\n // TODO: support suspend/resume methods\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]?: THeaders;\r\n};\r\n"],"names":["$CG_IN","$CG_OUT","$CG_ERROR","$C_ERROR","BaseError","message","options","TimeoutError","cause","AbortError","$TypeArgStruct","$TypeArgHeaders"],"mappings":"AAOO,MAAMA,IAAS,MAETC,IAAU,OAEVC,IAAY,SAEZC,IAAW;AAuBjB,MAAMC,UAAkB,MAAM;AAAA,EACxB,OAAe;AAAA,EAExB,YACIC,GACAC,GAGF;AACE,UAAMD,GAASC,CAAO,GACtB,OAAO,eAAe,MAAM,WAAW,SAAS;AAAA,EACpD;AACJ;AACO,MAAMC,UAAqBH,EAAU;AAAA,EAC/B,OAAe;AAAA,EAExB,YAAYC,GAAkBG,GAAiB;AAE3C,UAAMH,KAAW,oBAAoB,EAAE,OAAAG,EAAA,CAAO;AAAA,EAClD;AACJ;AAEO,MAAMC,UAAmBL,EAAU;AAAA,EAC7B,OAAe;AAAA,EAExB,YAAYC,GAAkBG,GAAiB;AAC3C,UAAMH,KAAW,qBAAqB,EAAE,OAAAG,EAAA,CAAO;AAAA,EACnD;AACJ;AAyUO,MAAME,IAAiB,OAAO,aAAa,GACrCC,IAAkB,OAAO,cAAc;"}
@@ -1 +1 @@
1
- {"version":3,"file":"msgBusFactory.d.ts","sourceRoot":"","sources":["../src/msgBusFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,MAAM,EACN,SAAS,EAIT,YAAY,EAMZ,mBAAmB,EAGnB,UAAU,EAEb,MAAM,cAAc,CAAC;AAStB,eAAO,MAAM,YAAY,GAAI,SAAS,MAAM,aAGrB,MAAM,YAS5B,CAAC;AAaF,wBAAgB,YAAY,CAAC,OAAO,SAAS,SAAS,EAAE,QAAQ,SAAS,UAAU,GAAG,UAAU,EAAE,MAAM,CAAC,EAAE,YAAY,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,6BAiZpJ"}
1
+ {"version":3,"file":"msgBusFactory.d.ts","sourceRoot":"","sources":["../src/msgBusFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,MAAM,EACN,SAAS,EAIT,YAAY,EAMZ,mBAAmB,EAGnB,UAAU,EAEb,MAAM,cAAc,CAAC;AAStB,eAAO,MAAM,YAAY,GAAI,SAAS,MAAM,aAGrB,MAAM,YAS5B,CAAC;AAaF,wBAAgB,YAAY,CAAC,OAAO,SAAS,SAAS,EAAE,QAAQ,SAAS,UAAU,GAAG,UAAU,EAAE,MAAM,CAAC,EAAE,YAAY,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,6BAmZpJ"}
@@ -75,7 +75,7 @@ function re(u) {
75
75
  t != null && e.push(N(t, n));
76
76
  }
77
77
  function b(e) {
78
- const t = String(e.channel), n = e.group == null ? v : String(e.group), o = w(t, n), r = Q(e.topic), c = G(
78
+ const t = String(e.channel), n = e.group == null ? v : String(e.group), o = w(t, n), r = Q(e.topic), i = G(
79
79
  (f) => (
80
80
  // msg.address.channel === channel &&
81
81
  // msg.address.group === group &&
@@ -84,9 +84,9 @@ function re(u) {
84
84
  );
85
85
  let l;
86
86
  const s = [];
87
- s.push(c);
88
- const i = u[t];
89
- S(s, i?.throttle, d), S(s, e.config?.throttle, d), E(s, i?.debounce, d), E(s, e.config?.debounce, d), i?.delay && s.push(U(i.delay, d)), d && s.push(q(d)), e.config?.fetchCount && s.push(K(e.config.fetchCount)), l = H(s)(o);
87
+ s.push(i);
88
+ const c = u[t];
89
+ S(s, c?.throttle, d), S(s, e.config?.throttle, d), E(s, c?.debounce, d), E(s, e.config?.debounce, d), c?.delay && s.push(U(c.delay, d)), d && s.push(q(d)), e.config?.fetchCount && s.push(K(e.config.fetchCount)), l = H(s)(o);
90
90
  const h = l.subscribe({
91
91
  next: (f) => {
92
92
  try {
@@ -134,15 +134,15 @@ function re(u) {
134
134
  let n = !1;
135
135
  return Promise.race([A(t, () => new T()), new Promise((o, r) => {
136
136
  try {
137
- const c = e.config?.abortSignal;
137
+ const i = e.config?.abortSignal;
138
138
  let l = null;
139
- if (c) {
140
- let i = null;
139
+ if (i) {
140
+ let c = null;
141
141
  l = () => {
142
- c.removeEventListener("abort", i);
143
- }, i = () => {
144
- n || (n = !0, l(), r(new Error("Cancelled", { cause: c.reason })));
145
- }, c.addEventListener("abort", i);
142
+ i.removeEventListener("abort", c);
143
+ }, c = () => {
144
+ n || (n = !0, l(), r(new Error("Cancelled", { cause: i.reason })));
145
+ }, i.addEventListener("abort", c);
146
146
  }
147
147
  const s = {
148
148
  ...e,
@@ -150,11 +150,11 @@ function re(u) {
150
150
  ...e.config,
151
151
  fetchCount: 1
152
152
  },
153
- callback: (i) => {
153
+ callback: (c) => {
154
154
  try {
155
155
  if (n)
156
156
  return;
157
- n = !0, l?.(), o(i);
157
+ n = !0, l?.(), o(c);
158
158
  } catch (h) {
159
159
  if (n)
160
160
  return;
@@ -163,8 +163,8 @@ function re(u) {
163
163
  }
164
164
  };
165
165
  b(s);
166
- } catch (c) {
167
- r(c);
166
+ } catch (i) {
167
+ r(i);
168
168
  }
169
169
  })]);
170
170
  }
@@ -174,18 +174,19 @@ function re(u) {
174
174
  callback: async (n) => {
175
175
  try {
176
176
  const o = {
177
+ ...n.headers,
178
+ ...e.headers,
179
+ requestId: n.id
180
+ }, r = await Promise.resolve(e.callback(n, o)), i = {
177
181
  address: {
178
182
  channel: n.address.channel,
179
183
  group: R,
180
184
  topic: n.address.topic
181
185
  },
182
- headers: {
183
- ...n.headers,
184
- ...e.headers,
185
- requestId: n.id
186
- }
187
- }, r = await Promise.resolve(e.callback(n, o));
188
- o.payload = r, g(o);
186
+ headers: o,
187
+ payload: r
188
+ };
189
+ g(i);
189
190
  } catch (o) {
190
191
  p(n, o);
191
192
  }
@@ -232,24 +233,24 @@ function re(u) {
232
233
  let n = !1;
233
234
  return Promise.race([A(t, () => new T()), new Promise((o, r) => {
234
235
  try {
235
- const c = e.config?.abortSignal;
236
+ const i = e.config?.abortSignal;
236
237
  let l = null;
237
- if (c) {
238
- let i = null;
238
+ if (i) {
239
+ let c = null;
239
240
  const h = () => {
240
- c.removeEventListener("abort", i);
241
+ i.removeEventListener("abort", c);
241
242
  };
242
- i = () => {
243
- n || (n = !0, h(), r(new Error("Cancelled", { cause: c.reason })));
244
- }, c.addEventListener("abort", i);
243
+ c = () => {
244
+ n || (n = !0, h(), r(new Error("Cancelled", { cause: i.reason })));
245
+ }, i.addEventListener("abort", c);
245
246
  }
246
247
  const s = {
247
248
  ...e,
248
- callback: (i) => {
249
+ callback: (c) => {
249
250
  try {
250
251
  if (n)
251
252
  return;
252
- n = !0, l?.(), o(i);
253
+ n = !0, l?.(), o(c);
253
254
  } catch (h) {
254
255
  if (n)
255
256
  return;
@@ -258,8 +259,8 @@ function re(u) {
258
259
  }
259
260
  };
260
261
  C(s);
261
- } catch (c) {
262
- r(c);
262
+ } catch (i) {
263
+ r(i);
263
264
  }
264
265
  })]);
265
266
  }
@@ -1 +1 @@
1
- {"version":3,"file":"msgBusFactory.es.js","sources":["../src/msgBusFactory.ts"],"sourcesContent":["import {\r\n MsgBus,\r\n MsgStruct,\r\n Msg,\r\n $CG_IN,\r\n $CG_OUT,\r\n MsgBusConfig,\r\n MsgSubscriberParams,\r\n MsgAsyncSubscriberParams,\r\n MsgProviderParams,\r\n MsgDispatcherParams,\r\n MsgAsyncDispatcherParams,\r\n MsgStructNormalized,\r\n $CG_ERROR,\r\n $C_ERROR,\r\n MsgHeaders,\r\n TimeoutError\r\n} from \"./msgBusCore\";\r\nimport { v4 as uuid } from \"uuid\";\r\nimport { MonoTypeOperatorFunction, Observable, Subject, ReplaySubject, asyncScheduler, OperatorFunction, SchedulerLike } from \"rxjs\";\r\nimport { filter as filterOp, take as takeOp, observeOn, delay as delayOp, debounceTime as debounceOp } from \"rxjs/operators\";\r\n\r\nimport { Skip } from \"@actdim/utico/typeCore\";\r\nimport { pipeFromArray, throttleOp, ThrottleOptions } from \"./util\";\r\nimport { delayErrorAsync } from \"@actdim/utico/utils\";\r\n\r\nexport const 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\nconst DEFAULT_PROMISE_TIMEOUT = 1000 * 60 * 2; // 2 minutes\r\n\r\n// see also https://www.npmjs.com/package/p-queue\r\n// https://github.com/postaljs/postal.js\r\n\r\nfunction now() {\r\n return Date.now(); // new Date().getTime() or +new Date()\r\n}\r\n\r\n// createServiceBus\r\nconst groupPrefix = \":\"; // \"/\", \":\", \"::\"\r\nexport function createMsgBus<TStruct extends MsgStruct, THeaders extends MsgHeaders = MsgHeaders>(config?: MsgBusConfig<MsgStructNormalized<TStruct>>) {\r\n type TStructN = MsgStructNormalized<TStruct>;\r\n type MsgInfo = Skip<Msg<TStructN>, \"payload\">;\r\n\r\n const errTopic = \"msgbus\";\r\n const scheduler: SchedulerLike = asyncScheduler;\r\n\r\n function getMsgInfo(msg: Msg<TStructN>) {\r\n return {\r\n id: msg.id,\r\n address: msg.address,\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 // + nack?\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 applyThrottle(ops: OperatorFunction<any, any>[], throttle?: number | (ThrottleOptions & { duration: number; }), scheduler?: SchedulerLike) {\r\n if (throttle != undefined) {\r\n let duration: number;\r\n let options: ThrottleOptions = { leading: true, trailing: true };\r\n if (typeof throttle === \"number\") {\r\n duration = throttle;\r\n } else {\r\n duration = throttle.duration;\r\n options.leading = throttle.leading;\r\n options.trailing = throttle.trailing;\r\n }\r\n ops.push(throttleOp(duration, options, scheduler));\r\n }\r\n }\r\n\r\n function applyDebounce(ops: OperatorFunction<any, any>[], duration?: number, scheduler?: SchedulerLike) {\r\n if (duration != undefined) {\r\n ops.push(debounceOp(duration, scheduler));\r\n }\r\n }\r\n\r\n function subscribe(params: MsgSubscriberParams<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\r\n const ops: OperatorFunction<any, any>[] = [];\r\n\r\n ops.push(fOp);\r\n\r\n const channelConfig = config[channel];\r\n\r\n applyThrottle(ops, channelConfig?.throttle, scheduler);\r\n\r\n applyThrottle(ops, params.config?.throttle, scheduler);\r\n\r\n applyDebounce(ops, channelConfig?.debounce, scheduler);\r\n\r\n applyDebounce(ops, params.config?.debounce, scheduler);\r\n\r\n if (channelConfig?.delay) {\r\n ops.push(delayOp(channelConfig.delay, scheduler));\r\n }\r\n\r\n if (scheduler) {\r\n ops.push(observeOn(scheduler));\r\n }\r\n\r\n if (params.config?.fetchCount) {\r\n ops.push(takeOp(params.config.fetchCount));\r\n }\r\n\r\n observable = pipeFromArray(ops)(subject);\r\n\r\n // TODO: support retryOp\r\n // TODO: support timeout\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 },\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.debug(\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.id == undefined) {\r\n msg.id = uuid();\r\n }\r\n if (msg.headers == undefined) {\r\n msg.headers = {};\r\n }\r\n const headers = msg.headers;\r\n headers.publishedAt = now()\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: MsgSubscriberParams<TStructN>) {\r\n subscribe(params);\r\n }\r\n\r\n function onceAsync(params: MsgAsyncSubscriberParams<TStructN>) {\r\n const timeout = params.config?.timeout == undefined ? DEFAULT_PROMISE_TIMEOUT : params.config?.timeout;\r\n let settled = false;\r\n return Promise.race([delayErrorAsync(timeout, () => new TimeoutError()), new Promise<any>((res, rej) => {\r\n try {\r\n const abortSignal = params.config?.abortSignal;\r\n let cleanup: () => void = null;\r\n\r\n if (abortSignal) {\r\n let onAbort: () => void = null;\r\n cleanup = () => {\r\n abortSignal.removeEventListener(\"abort\", onAbort);\r\n };\r\n onAbort = () => {\r\n if (settled) {\r\n return\r\n };\r\n settled = true;\r\n cleanup();\r\n rej(new Error(\"Cancelled\", { cause: abortSignal.reason })); // e.target\r\n };\r\n abortSignal.addEventListener(\"abort\", onAbort);\r\n }\r\n\r\n const subParams: MsgSubscriberParams<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 try {\r\n if (settled) {\r\n return;\r\n }\r\n settled = true;\r\n cleanup?.();\r\n // sub.unsubscribe();\r\n res(msg);\r\n } catch (err) {\r\n if (settled) {\r\n return;\r\n }\r\n settled = true;\r\n cleanup?.();\r\n rej(err);\r\n }\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: MsgProviderParams<TStructN>) {\r\n const subParams: MsgSubscriberParams<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 headers: {\r\n ...msgIn.headers,\r\n ...params.headers,\r\n requestId: msgIn.id,\r\n }\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: MsgDispatcherParams<TStructN>) {\r\n const msgId = uuid();\r\n if (params.callback) {\r\n const subParams: MsgSubscriberParams<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.headers?.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 id: msgId,\r\n address: {\r\n channel: params.channel,\r\n group: params.group,\r\n topic: params.topic\r\n },\r\n headers: {\r\n ...params.headers\r\n },\r\n payload: payload\r\n });\r\n }\r\n\r\n async function dispatchAsync(params: MsgAsyncDispatcherParams<TStructN>): Promise<any> {\r\n const timeout = params.config?.timeout == undefined ? DEFAULT_PROMISE_TIMEOUT : params.config?.timeout;\r\n let settled = false;\r\n return Promise.race([delayErrorAsync(timeout, () => new TimeoutError()), new Promise((res, rej) => {\r\n try {\r\n const abortSignal = params.config?.abortSignal;\r\n let cleanup: () => void = null;\r\n\r\n if (abortSignal) {\r\n let onAbort: () => void = null;\r\n const cleanup = () => {\r\n abortSignal.removeEventListener(\"abort\", onAbort);\r\n };\r\n onAbort = () => {\r\n if (settled) {\r\n return\r\n };\r\n settled = true;\r\n cleanup();\r\n rej(new Error(\"Cancelled\", { cause: abortSignal.reason })); // e.target\r\n };\r\n abortSignal.addEventListener(\"abort\", onAbort);\r\n }\r\n\r\n const dispatchParams: MsgDispatcherParams<TStructN> = {\r\n ...params,\r\n callback: (msg) => {\r\n try {\r\n if (settled) {\r\n return;\r\n }\r\n settled = true;\r\n cleanup?.();\r\n res(msg);\r\n } catch (err) {\r\n if (settled) {\r\n return;\r\n }\r\n settled = true;\r\n cleanup?.();\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 MsgSubscriberParams<TStructN>),\r\n onceAsync: (params) => onceAsync(params as MsgAsyncSubscriberParams<TStructN>),\r\n stream: (params) => {\r\n throw new Error(\"Not implemented\");\r\n },\r\n provide: (params) => provide(params as MsgProviderParams<TStructN>),\r\n dispatch: (params) => dispatch(params as MsgDispatcherParams<TStructN>),\r\n dispatchAsync: (params) => dispatchAsync(params as MsgAsyncDispatcherParams<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","DEFAULT_PROMISE_TIMEOUT","now","groupPrefix","createMsgBus","config","errTopic","scheduler","asyncScheduler","getMsgInfo","msg","handleError","srcMsg","err","errPayload","errMsg","$CG_ERROR","publish","$C_ERROR","$CG_IN","subjects","createRoutingKey","channel","group","getOrCreateSubject","routingKey","subject","channelConfig","ReplaySubject","Subject","applyThrottle","ops","throttle","duration","options","throttleOp","applyDebounce","debounceOp","subscribe","params","match","fOp","filterOp","observable","delayOp","observeOn","takeOp","pipeFromArray","sub","abortSignal","e","uuid","headers","on","onceAsync","timeout","settled","delayErrorAsync","TimeoutError","res","rej","cleanup","onAbort","subParams","provide","msgIn","msgOut","$CG_OUT","payload","dispatch","msgId","args","dispatchAsync","dispatchParams"],"mappings":"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"}
1
+ {"version":3,"file":"msgBusFactory.es.js","sources":["../src/msgBusFactory.ts"],"sourcesContent":["import {\r\n MsgBus,\r\n MsgStruct,\r\n Msg,\r\n $CG_IN,\r\n $CG_OUT,\r\n MsgBusConfig,\r\n MsgSubscriberParams,\r\n MsgAsyncSubscriberParams,\r\n MsgProviderParams,\r\n MsgDispatcherParams,\r\n MsgAsyncDispatcherParams,\r\n MsgStructNormalized,\r\n $CG_ERROR,\r\n $C_ERROR,\r\n MsgHeaders,\r\n TimeoutError\r\n} from \"./msgBusCore\";\r\nimport { v4 as uuid } from \"uuid\";\r\nimport { MonoTypeOperatorFunction, Observable, Subject, ReplaySubject, asyncScheduler, OperatorFunction, SchedulerLike } from \"rxjs\";\r\nimport { filter as filterOp, take as takeOp, observeOn, delay as delayOp, debounceTime as debounceOp } from \"rxjs/operators\";\r\n\r\nimport { Skip } from \"@actdim/utico/typeCore\";\r\nimport { pipeFromArray, throttleOp, ThrottleOptions } from \"./util\";\r\nimport { delayErrorAsync } from \"@actdim/utico/utils\";\r\n\r\nexport const 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\nconst DEFAULT_PROMISE_TIMEOUT = 1000 * 60 * 2; // 2 minutes\r\n\r\n// see also https://www.npmjs.com/package/p-queue\r\n// https://github.com/postaljs/postal.js\r\n\r\nfunction now() {\r\n return Date.now(); // new Date().getTime() or +new Date()\r\n}\r\n\r\n// createServiceBus\r\nconst groupPrefix = \":\"; // \"/\", \":\", \"::\"\r\nexport function createMsgBus<TStruct extends MsgStruct, THeaders extends MsgHeaders = MsgHeaders>(config?: MsgBusConfig<MsgStructNormalized<TStruct>>) {\r\n type TStructN = MsgStructNormalized<TStruct>;\r\n type MsgInfo = Skip<Msg<TStructN>, \"payload\">;\r\n\r\n const errTopic = \"msgbus\";\r\n const scheduler: SchedulerLike = asyncScheduler;\r\n\r\n function getMsgInfo(msg: Msg<TStructN>) {\r\n return {\r\n id: msg.id,\r\n address: msg.address,\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 // + nack?\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 applyThrottle(ops: OperatorFunction<any, any>[], throttle?: number | (ThrottleOptions & { duration: number; }), scheduler?: SchedulerLike) {\r\n if (throttle != undefined) {\r\n let duration: number;\r\n let options: ThrottleOptions = { leading: true, trailing: true };\r\n if (typeof throttle === \"number\") {\r\n duration = throttle;\r\n } else {\r\n duration = throttle.duration;\r\n options.leading = throttle.leading;\r\n options.trailing = throttle.trailing;\r\n }\r\n ops.push(throttleOp(duration, options, scheduler));\r\n }\r\n }\r\n\r\n function applyDebounce(ops: OperatorFunction<any, any>[], duration?: number, scheduler?: SchedulerLike) {\r\n if (duration != undefined) {\r\n ops.push(debounceOp(duration, scheduler));\r\n }\r\n }\r\n\r\n function subscribe(params: MsgSubscriberParams<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\r\n const ops: OperatorFunction<any, any>[] = [];\r\n\r\n ops.push(fOp);\r\n\r\n const channelConfig = config[channel];\r\n\r\n applyThrottle(ops, channelConfig?.throttle, scheduler);\r\n\r\n applyThrottle(ops, params.config?.throttle, scheduler);\r\n\r\n applyDebounce(ops, channelConfig?.debounce, scheduler);\r\n\r\n applyDebounce(ops, params.config?.debounce, scheduler);\r\n\r\n if (channelConfig?.delay) {\r\n ops.push(delayOp(channelConfig.delay, scheduler));\r\n }\r\n\r\n if (scheduler) {\r\n ops.push(observeOn(scheduler));\r\n }\r\n\r\n if (params.config?.fetchCount) {\r\n ops.push(takeOp(params.config.fetchCount));\r\n }\r\n\r\n observable = pipeFromArray(ops)(subject);\r\n\r\n // TODO: support retryOp\r\n // TODO: support timeout\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 },\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.debug(\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.id == undefined) {\r\n msg.id = uuid();\r\n }\r\n if (msg.headers == undefined) {\r\n msg.headers = {};\r\n }\r\n const headers = msg.headers;\r\n headers.publishedAt = now()\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: MsgSubscriberParams<TStructN>) {\r\n subscribe(params);\r\n }\r\n\r\n function onceAsync(params: MsgAsyncSubscriberParams<TStructN>) {\r\n const timeout = params.config?.timeout == undefined ? DEFAULT_PROMISE_TIMEOUT : params.config?.timeout;\r\n let settled = false;\r\n return Promise.race([delayErrorAsync(timeout, () => new TimeoutError()), new Promise<any>((res, rej) => {\r\n try {\r\n const abortSignal = params.config?.abortSignal;\r\n let cleanup: () => void = null;\r\n\r\n if (abortSignal) {\r\n let onAbort: () => void = null;\r\n cleanup = () => {\r\n abortSignal.removeEventListener(\"abort\", onAbort);\r\n };\r\n onAbort = () => {\r\n if (settled) {\r\n return\r\n };\r\n settled = true;\r\n cleanup();\r\n rej(new Error(\"Cancelled\", { cause: abortSignal.reason })); // e.target\r\n };\r\n abortSignal.addEventListener(\"abort\", onAbort);\r\n }\r\n\r\n const subParams: MsgSubscriberParams<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 try {\r\n if (settled) {\r\n return;\r\n }\r\n settled = true;\r\n cleanup?.();\r\n // sub.unsubscribe();\r\n res(msg);\r\n } catch (err) {\r\n if (settled) {\r\n return;\r\n }\r\n settled = true;\r\n cleanup?.();\r\n rej(err);\r\n }\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: MsgProviderParams<TStructN>) {\r\n const subParams: MsgSubscriberParams<TStructN> = {\r\n ...params,\r\n ...{\r\n callback: async (msgIn) => {\r\n try {\r\n const headers = {\r\n ...msgIn.headers,\r\n ...params.headers,\r\n requestId: msgIn.id,\r\n }\r\n\r\n const payload = (await Promise.resolve(params.callback(msgIn, headers)));\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 headers: headers,\r\n payload: payload\r\n };\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: MsgDispatcherParams<TStructN>) {\r\n const msgId = uuid();\r\n if (params.callback) {\r\n const subParams: MsgSubscriberParams<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.headers?.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 id: msgId,\r\n address: {\r\n channel: params.channel,\r\n group: params.group,\r\n topic: params.topic\r\n },\r\n headers: {\r\n ...params.headers\r\n },\r\n payload: payload\r\n });\r\n }\r\n\r\n async function dispatchAsync(params: MsgAsyncDispatcherParams<TStructN>): Promise<any> {\r\n const timeout = params.config?.timeout == undefined ? DEFAULT_PROMISE_TIMEOUT : params.config?.timeout;\r\n let settled = false;\r\n return Promise.race([delayErrorAsync(timeout, () => new TimeoutError()), new Promise((res, rej) => {\r\n try {\r\n const abortSignal = params.config?.abortSignal;\r\n let cleanup: () => void = null;\r\n\r\n if (abortSignal) {\r\n let onAbort: () => void = null;\r\n const cleanup = () => {\r\n abortSignal.removeEventListener(\"abort\", onAbort);\r\n };\r\n onAbort = () => {\r\n if (settled) {\r\n return\r\n };\r\n settled = true;\r\n cleanup();\r\n rej(new Error(\"Cancelled\", { cause: abortSignal.reason })); // e.target\r\n };\r\n abortSignal.addEventListener(\"abort\", onAbort);\r\n }\r\n\r\n const dispatchParams: MsgDispatcherParams<TStructN> = {\r\n ...params,\r\n callback: (msg) => {\r\n try {\r\n if (settled) {\r\n return;\r\n }\r\n settled = true;\r\n cleanup?.();\r\n res(msg);\r\n } catch (err) {\r\n if (settled) {\r\n return;\r\n }\r\n settled = true;\r\n cleanup?.();\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 MsgSubscriberParams<TStructN>),\r\n onceAsync: (params) => onceAsync(params as MsgAsyncSubscriberParams<TStructN>),\r\n stream: (params) => {\r\n throw new Error(\"Not implemented\");\r\n },\r\n provide: (params) => provide(params as MsgProviderParams<TStructN>),\r\n dispatch: (params) => dispatch(params as MsgDispatcherParams<TStructN>),\r\n dispatchAsync: (params) => dispatchAsync(params as MsgAsyncDispatcherParams<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","DEFAULT_PROMISE_TIMEOUT","now","groupPrefix","createMsgBus","config","errTopic","scheduler","asyncScheduler","getMsgInfo","msg","handleError","srcMsg","err","errPayload","errMsg","$CG_ERROR","publish","$C_ERROR","$CG_IN","subjects","createRoutingKey","channel","group","getOrCreateSubject","routingKey","subject","channelConfig","ReplaySubject","Subject","applyThrottle","ops","throttle","duration","options","throttleOp","applyDebounce","debounceOp","subscribe","params","match","fOp","filterOp","observable","delayOp","observeOn","takeOp","pipeFromArray","sub","abortSignal","e","uuid","headers","on","onceAsync","timeout","settled","delayErrorAsync","TimeoutError","res","rej","cleanup","onAbort","subParams","provide","msgIn","payload","msgOut","$CG_OUT","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.1.4",
3
+ "version": "1.1.6",
4
4
  "description": "A type-safe, modular message mesh for scalable async communication in TypeScript",
5
5
  "author": "Pavel Borodaev",
6
6
  "license": "Proprietary",
@@ -67,7 +67,7 @@
67
67
  "format:check": "prettier --check ."
68
68
  },
69
69
  "peerDependencies": {
70
- "@actdim/utico": "^1.0.4",
70
+ "@actdim/utico": "^1.0.5",
71
71
  "rxjs": "^7.8.2",
72
72
  "uuid": "^13.0.0"
73
73
  },