@actdim/msgmesh 1.2.5 → 1.2.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/core.es.js CHANGED
@@ -1,222 +1,232 @@
1
- import { TimeoutError as T, $CG_IN as v, $SYSTEM_TOPIC as W, $CG_ERROR as j, $C_ERROR as q, $CG_OUT as $ } from "./contracts.es.js";
2
- import { v4 as R } from "uuid";
3
- import { asyncScheduler as F, ReplaySubject as z, Subject as D } from "rxjs";
4
- import { filter as G, delay as U, observeOn as K, take as N, debounceTime as Y } from "rxjs/operators";
5
- import { pipeFromArray as H, throttleOp as J } from "./util.es.js";
6
- import { delayError as O } from "@actdim/utico/utils";
7
- const Q = (s) => {
8
- if (s == null)
9
- return (a) => a == s;
10
- if (s.startsWith("/") && s.endsWith("/")) {
11
- s = s.substring(1, s.length - 1);
12
- const a = new RegExp(s);
13
- return (d) => a.test(d);
1
+ import { TimeoutError as C, OperationCanceledError as U, $CG_IN as P, $SYSTEM_TOPIC as m, $CG_ERROR as K, $C_ERROR as N, $CG_OUT as A } from "./contracts.es.js";
2
+ import { v4 as I } from "uuid";
3
+ import { asyncScheduler as Y, ReplaySubject as H, Subject as J } from "rxjs";
4
+ import { filter as Q, delay as V, observeOn as X, take as Z, debounceTime as ee } from "rxjs/operators";
5
+ import { pipeFromArray as te, throttleOp as ne } from "./util.es.js";
6
+ import { delayError as M } from "@actdim/utico/utils";
7
+ const oe = (d) => {
8
+ if (d == null)
9
+ return (p) => p == d;
10
+ if (d.startsWith("/") && d.endsWith("/")) {
11
+ d = d.substring(1, d.length - 1);
12
+ const p = new RegExp(d);
13
+ return (b) => p.test(b);
14
14
  } else
15
- return (a) => s === a;
16
- }, k = 1e3 * 60 * 2;
17
- function V() {
15
+ return (p) => d === p;
16
+ }, _ = 1e3 * 60 * 2;
17
+ function ie() {
18
18
  return Date.now();
19
19
  }
20
- const X = ":";
21
- function ie(s) {
22
- const a = W, d = F;
23
- function L(e) {
20
+ const re = ":";
21
+ function be(d) {
22
+ const p = m, b = Y;
23
+ function x(e) {
24
24
  return {
25
25
  id: e.id,
26
26
  address: e.address,
27
27
  headers: e.headers
28
28
  };
29
29
  }
30
- function y(e, o) {
30
+ function w(e, n) {
31
31
  const t = {
32
- error: o,
33
- source: L(e)
32
+ error: n,
33
+ source: x(e)
34
34
  };
35
- let n;
36
- n = {
35
+ let o;
36
+ o = {
37
37
  address: {
38
38
  channel: e.address.channel,
39
- group: j,
40
- topic: a
39
+ group: K,
40
+ topic: p
41
41
  },
42
42
  payload: t
43
- }, b(n), n = {
43
+ }, v(o), o = {
44
44
  address: {
45
- channel: q,
46
- group: v,
47
- topic: a
45
+ channel: N,
46
+ group: P,
47
+ topic: p
48
48
  },
49
49
  payload: t
50
- }, b(n);
50
+ }, v(o);
51
+ }
52
+ function R(e) {
53
+ return new U(void 0, e);
51
54
  }
52
- const g = /* @__PURE__ */ new Map();
53
- function M(e, o) {
54
- return `${e}${X}${o}`;
55
+ const T = /* @__PURE__ */ new Map();
56
+ function B(e, n) {
57
+ return `${e}${re}${n}`;
55
58
  }
56
- function S(e, o) {
57
- const t = M(e, o);
58
- if (!g.has(t)) {
59
- let n = null;
60
- const r = s?.[e];
61
- r && (r.replayBufferSize != null || r.replayWindowTime != null) && (n = new z(r.replayBufferSize == null ? 1 / 0 : r.replayBufferSize, r.replayWindowTime == null ? 1 / 0 : r.replayWindowTime)), n || (n = new D()), g.set(
59
+ function O(e, n) {
60
+ const t = B(e, n);
61
+ if (!T.has(t)) {
62
+ let o = null;
63
+ const i = d?.[e];
64
+ i && (i.replayBufferSize != null || i.replayWindowTime != null) && (o = new H(i.replayBufferSize == null ? 1 / 0 : i.replayBufferSize, i.replayWindowTime == null ? 1 / 0 : i.replayWindowTime)), o || (o = new J()), T.set(
62
65
  t,
63
- n
66
+ o
64
67
  );
65
68
  }
66
- return g.get(t);
69
+ return T.get(t);
67
70
  }
68
- function w(e, o, t) {
69
- if (o != null) {
70
- let n, r = { leading: !0, trailing: !0 };
71
- typeof o == "number" ? n = o : (n = o.duration, r.leading = o.leading, r.trailing = o.trailing), e.push(J(n, r, t));
71
+ function $(e, n, t) {
72
+ if (n != null) {
73
+ let o, i = { leading: !0, trailing: !0 };
74
+ typeof n == "number" ? o = n : (o = n.duration, i.leading = n.leading, i.trailing = n.trailing), e.push(ne(o, i, t));
72
75
  }
73
76
  }
74
- function E(e, o, t) {
75
- o != null && e.push(Y(o, t));
77
+ function k(e, n, t) {
78
+ n != null && e.push(ee(n, t));
76
79
  }
77
- function p(e) {
78
- const o = String(e.channel), t = e.group == null ? v : String(e.group), n = S(o, t), r = Q(e.topic), i = G(
79
- (f) => (
80
+ function y(e) {
81
+ const n = String(e.channel), t = e.group == null ? P : String(e.group), o = O(n, t), i = oe(e.topic), r = Q(
82
+ (h) => (
80
83
  // msg.address.channel === channel &&
81
84
  // msg.address.group === group &&
82
- r(f.address.topic) && (!e.filter || e.filter(f))
85
+ i(h.address.topic) && (!e.filter || e.filter(h))
83
86
  )
84
87
  );
85
88
  let l;
86
- const u = [];
87
- u.push(i);
88
- const c = s?.[o];
89
- w(u, c?.throttle, d), w(u, e.options?.throttle, d), E(u, c?.debounce, d), E(u, e.options?.debounce, d), c?.delay && u.push(U(c.delay, d)), d && u.push(K(d)), e.options?.fetchCount && u.push(N(e.options.fetchCount)), l = H(u)(n);
90
- const h = l.subscribe({
91
- next: (f) => {
89
+ const c = [];
90
+ c.push(r);
91
+ const s = d?.[n];
92
+ $(c, s?.throttle, b), $(c, e.options?.throttle, b), k(c, s?.debounce, b), k(c, e.options?.debounce, b), s?.delay && c.push(V(s.delay, b)), b && c.push(X(b)), e.options?.fetchCount && c.push(Z(e.options.fetchCount)), l = te(c)(o);
93
+ const u = l.subscribe({
94
+ next: (h) => {
92
95
  try {
93
- return e.callback(f);
94
- } catch (I) {
95
- y(f, I);
96
+ return e.callback(h);
97
+ } catch (E) {
98
+ w(h, E);
96
99
  }
97
100
  },
98
- error: (f) => {
99
- y(
101
+ error: (h) => {
102
+ w(
100
103
  {
101
104
  address: {
102
- channel: o,
105
+ channel: n,
103
106
  group: t,
104
107
  topic: e.topic
105
108
  }
106
109
  },
107
- f
110
+ h
108
111
  );
109
112
  },
110
113
  complete: () => {
111
114
  }
112
- }), P = e.options?.abortSignal;
113
- P?.addEventListener("abort", (f) => {
115
+ }), a = e.options?.abortSignal;
116
+ let f = null;
117
+ return a && (f = () => {
114
118
  console.debug(
115
- `Listening aborted for channel: ${o}, group: ${t}, topic: ${e.topic}. Reason: ${P.reason}`
119
+ `Listening aborted for channel: ${n}, group: ${t}, topic: ${e.topic}. Reason: ${a.reason}`
116
120
  // e.target
117
- ), h.unsubscribe();
118
- });
121
+ ), u.unsubscribe();
122
+ }, a.addEventListener("abort", f)), u.add(() => {
123
+ f && a && (a.removeEventListener("abort", f), f = null);
124
+ }), () => {
125
+ f && a && (a.removeEventListener("abort", f), f = null), u.unsubscribe();
126
+ };
119
127
  }
120
- function b(e) {
121
- e.id == null && (e.id = R()), e.headers == null && (e.headers = {});
122
- const o = e.headers;
123
- o.publishedAt = V();
128
+ function v(e) {
129
+ e.id == null && (e.id = I()), e.headers == null && (e.headers = {});
130
+ const n = e.headers;
131
+ n.publishedAt = ie();
124
132
  const t = String(e.address.channel);
125
- e.address.group == null && (e.address.group = v);
126
- const n = String(e.address.group);
127
- return S(t, n).next(e), Promise.resolve(e);
133
+ e.address.group == null && (e.address.group = P);
134
+ const o = String(e.address.group);
135
+ return O(t, o).next(e), Promise.resolve(e);
128
136
  }
129
- function _(e) {
130
- p(e);
137
+ function j(e) {
138
+ y(e);
131
139
  }
132
- function x(e) {
133
- const o = e.options?.timeout == null ? k : e.options?.timeout;
140
+ function W(e) {
141
+ const n = e.options?.timeout == null ? _ : e.options?.timeout;
134
142
  let t = !1;
135
- return Promise.race([O(o, () => new T()), new Promise((n, r) => {
143
+ return Promise.race([M(n, () => new C()), new Promise((o, i) => {
136
144
  try {
137
- const i = e.options?.abortSignal;
138
- let l = null;
139
- if (i) {
140
- let c = null;
141
- l = () => {
142
- i.removeEventListener("abort", c);
143
- }, c = () => {
144
- t || (t = !0, l(), r(new Error("Cancelled", { cause: i.reason })));
145
- }, i.addEventListener("abort", c);
145
+ const r = e.options?.abortSignal;
146
+ let l = null, c = () => {
147
+ l?.(), l = null;
148
+ };
149
+ if (r) {
150
+ let u = null;
151
+ c = () => {
152
+ r.removeEventListener("abort", u), l?.(), l = null;
153
+ }, u = () => {
154
+ t || (t = !0, c(), i(R(r.reason)));
155
+ }, r.addEventListener("abort", u);
146
156
  }
147
- const u = {
157
+ const s = {
148
158
  ...e,
149
159
  options: {
150
160
  ...e.options,
151
161
  fetchCount: 1
152
162
  },
153
- callback: (c) => {
163
+ callback: (u) => {
154
164
  try {
155
165
  if (t)
156
166
  return;
157
- t = !0, l?.(), n(c);
158
- } catch (h) {
167
+ t = !0, c?.(), o(u);
168
+ } catch (a) {
159
169
  if (t)
160
170
  return;
161
- t = !0, l?.(), r(h);
171
+ t = !0, c?.(), i(a);
162
172
  }
163
173
  }
164
174
  };
165
- p(u);
166
- } catch (i) {
167
- r(i);
175
+ l = y(s);
176
+ } catch (r) {
177
+ i(r);
168
178
  }
169
179
  })]);
170
180
  }
171
- function B(e) {
172
- const o = {
181
+ function F(e) {
182
+ const n = {
173
183
  ...e,
174
184
  callback: async (t) => {
175
185
  try {
176
- const n = {
186
+ const o = {
177
187
  ...t.headers,
178
188
  ...e.headers,
179
189
  requestId: t.id
180
- }, r = await Promise.resolve(e.callback(t, n)), i = {
190
+ }, i = await Promise.resolve(e.callback(t, o)), r = {
181
191
  address: {
182
192
  channel: t.address.channel,
183
- group: $,
193
+ group: A,
184
194
  topic: t.address.topic
185
195
  },
186
- headers: n,
187
- payload: r
196
+ headers: o,
197
+ payload: i
188
198
  };
189
- b(i);
190
- } catch (n) {
191
- y(t, n);
199
+ v(r);
200
+ } catch (o) {
201
+ w(t, o);
192
202
  }
193
203
  }
194
204
  };
195
- p(o);
205
+ y(n);
196
206
  }
197
- async function C(e) {
198
- const o = R();
207
+ async function L(e) {
208
+ const n = I();
199
209
  if (e.callback) {
200
- const n = {
210
+ const o = {
201
211
  channel: e.channel,
202
- group: $,
212
+ group: A,
203
213
  topic: e.topic,
204
214
  options: {
205
215
  ...e.options,
206
216
  fetchCount: 1
207
217
  },
208
- callback: (r) => {
209
- e.callback(r);
218
+ callback: (i) => {
219
+ e.callback(i);
210
220
  },
211
- filter: (r) => r.headers?.requestId === o && (!e.filter || e.filter(r))
221
+ filter: (i) => i.headers?.requestId === n && (!e.filter || e.filter(i))
212
222
  };
213
- p(n);
223
+ y(o);
214
224
  }
215
225
  let t;
216
- e.payloadFn ? e.payloadFn((...n) => {
217
- t = n;
218
- }) : t = e.payload, await b({
219
- id: o,
226
+ e.payloadFn ? e.payloadFn((...o) => {
227
+ t = o;
228
+ }) : t = e.payload, await v({
229
+ id: n,
220
230
  address: {
221
231
  channel: e.channel,
222
232
  group: e.group,
@@ -228,56 +238,88 @@ function ie(s) {
228
238
  payload: t
229
239
  });
230
240
  }
231
- async function A(e) {
232
- const o = e.options?.timeout == null ? k : e.options?.timeout;
241
+ async function q(e) {
242
+ const n = e.options?.timeout == null ? _ : e.options?.timeout;
233
243
  let t = !1;
234
- return Promise.race([O(o, () => new T()), new Promise((n, r) => {
244
+ return Promise.race([M(n, () => new C()), new Promise((o, i) => {
235
245
  try {
236
- const i = e.options?.abortSignal;
246
+ const r = e.options?.abortSignal;
237
247
  let l = null;
238
- if (i) {
239
- let c = null;
240
- const h = () => {
241
- i.removeEventListener("abort", c);
242
- };
243
- c = () => {
244
- t || (t = !0, h(), r(new Error("Cancelled", { cause: i.reason })));
245
- }, i.addEventListener("abort", c);
248
+ if (r) {
249
+ let s = null;
250
+ l = () => {
251
+ r.removeEventListener("abort", s);
252
+ }, s = () => {
253
+ t || (t = !0, l(), i(R(r.reason)));
254
+ }, r.addEventListener("abort", s);
246
255
  }
247
- const u = {
256
+ const c = {
248
257
  ...e,
249
- callback: (c) => {
258
+ callback: (s) => {
250
259
  try {
251
260
  if (t)
252
261
  return;
253
- t = !0, l?.(), n(c);
254
- } catch (h) {
262
+ t = !0, l?.(), o(s);
263
+ } catch (u) {
255
264
  if (t)
256
265
  return;
257
- t = !0, l?.(), r(h);
266
+ t = !0, l?.(), i(u);
258
267
  }
259
268
  }
260
269
  };
261
- C(u);
262
- } catch (i) {
263
- r(i);
270
+ L(c);
271
+ } catch (r) {
272
+ i(r);
264
273
  }
265
274
  })]);
266
275
  }
276
+ async function* z(e) {
277
+ const n = e.options?.timeout, t = e.options?.abortSignal, o = Symbol("stream-end");
278
+ let i = !1, r = null, l = null, c = null, s = 0;
279
+ const u = e.options?.fetchCount, a = () => {
280
+ c && (clearTimeout(c), c = null), n && n !== 1 / 0 && (c = setTimeout(() => {
281
+ l && (l(new C()), l = null, r = null);
282
+ }, n));
283
+ }, f = () => {
284
+ r && (r(o), r = null, l = null);
285
+ }, h = {
286
+ ...e,
287
+ options: {
288
+ ...e.options
289
+ },
290
+ callback: (S) => {
291
+ a(), r && (r(S), r = null, l = null);
292
+ }
293
+ }, E = y(h);
294
+ let g = null;
295
+ t && (g = () => {
296
+ i = !0, E(), f();
297
+ }, t.aborted ? g() : t.addEventListener("abort", g)), a();
298
+ try {
299
+ for (; (!u || s < u) && !i; ) {
300
+ const S = await new Promise((D, G) => {
301
+ r = D, l = G;
302
+ });
303
+ if (S === o)
304
+ break;
305
+ s++, yield S;
306
+ }
307
+ } finally {
308
+ c && clearTimeout(c), g && t && t.removeEventListener("abort", g), E();
309
+ }
310
+ }
267
311
  return {
268
- config: s,
269
- on: (e) => _(e),
270
- once: (e) => x(e),
271
- stream: (e) => {
272
- throw new Error("Not implemented");
273
- },
274
- provide: (e) => B(e),
275
- send: (e) => C(e),
276
- request: (e) => A(e)
312
+ config: d,
313
+ on: j,
314
+ once: W,
315
+ stream: z,
316
+ provide: F,
317
+ send: L,
318
+ request: q
277
319
  };
278
320
  }
279
321
  export {
280
- ie as createMsgBus,
281
- Q as getMatchTest
322
+ be as createMsgBus,
323
+ oe as getMatchTest
282
324
  };
283
325
  //# sourceMappingURL=core.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"core.es.js","sources":["../src/core.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 MsgSubParams,\r\n AwaitableMsgSubParams,\r\n MsgProviderParams,\r\n MsgStructNormalized,\r\n $CG_ERROR,\r\n $C_ERROR,\r\n MsgHeaders,\r\n TimeoutError,\r\n MsgAddress,\r\n InStruct,\r\n MsgSenderOptions,\r\n MsgRequestDispatcherParams,\r\n ErrorPayload,\r\n $SYSTEM_TOPIC\r\n} from \"./contracts\";\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 { IsTuple, Skip } from \"@actdim/utico/typeCore\";\r\nimport { pipeFromArray, throttleOp, ThrottleOptions } from \"./util\";\r\nimport { delayError } 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 = $SYSTEM_TOPIC;\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 // TODO: keep original error only in debug mode\r\n // if (err instanceof Error) {\r\n // err = {\r\n // name: err.name,\r\n // message: err.message,\r\n // stack: err.stack,\r\n // cause: err.cause\r\n // };\r\n // }\r\n const errPayload = ({\r\n error: err,\r\n source: getMsgInfo(srcMsg)\r\n } satisfies ErrorPayload) 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 \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 // TODO: use for subjects\r\n // type MsgRecord = {\r\n // msg: Msg<TStructN>;\r\n // acked: boolean;\r\n // // ackTimestamp\r\n // ackedAt?: number;\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: MsgSubParams<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.options?.throttle, scheduler);\r\n\r\n applyDebounce(ops, channelConfig?.debounce, scheduler);\r\n\r\n applyDebounce(ops, params.options?.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.options?.fetchCount) {\r\n ops.push(takeOp(params.options.fetchCount));\r\n }\r\n\r\n observable = pipeFromArray(ops)(subject);\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 },\r\n err\r\n );\r\n },\r\n complete: () => {\r\n // cleanup\r\n }\r\n });\r\n\r\n const abortSignal = params.options?.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 // TODO: implement backpressure via signal after 'ack' or msg from out signal\r\n return Promise.resolve(msg);\r\n }\r\n\r\n function on(params: MsgSubParams<TStructN>) {\r\n subscribe(params);\r\n }\r\n\r\n function once(params: AwaitableMsgSubParams<TStructN>) {\r\n const timeout = params.options?.timeout == undefined ? DEFAULT_PROMISE_TIMEOUT : params.options?.timeout;\r\n let settled = false;\r\n return Promise.race([delayError(timeout, () => new TimeoutError()), new Promise<any>((res, rej) => {\r\n try {\r\n const abortSignal = params.options?.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: MsgSubParams<TStructN> = {\r\n ...params,\r\n ...{\r\n options: {\r\n ...params.options,\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: MsgSubParams<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 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 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 options?: MsgSenderOptions;\r\n filter?: (msg: Msg<TStruct, TChannel, TGroup, THeaders>) => boolean;\r\n headers?: THeaders;\r\n callback?: (msg: Msg<TStruct, TChannel, typeof $CG_OUT, THeaders>) => void;\r\n };\r\n\r\n async function dispatch(params: MsgDispatcherParams<TStructN>) {\r\n const msgId = uuid();\r\n if (params.callback) {\r\n const subParams: MsgSubParams<TStructN, keyof TStructN, typeof $CG_OUT> = {\r\n channel: params.channel,\r\n group: $CG_OUT,\r\n topic: params.topic,\r\n options: {\r\n ...params.options,\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 await 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 request(params: MsgRequestDispatcherParams<TStructN>): Promise<any> {\r\n const timeout = params.options?.timeout == undefined ? DEFAULT_PROMISE_TIMEOUT : params.options?.timeout;\r\n let settled = false;\r\n return Promise.race([delayError(timeout, () => new TimeoutError()), new Promise((res, rej) => {\r\n try {\r\n const abortSignal = params.options?.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 MsgSubParams<TStructN>),\r\n once: (params) => once(params as AwaitableMsgSubParams<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 send: (params) => dispatch(params as MsgDispatcherParams<TStructN>),\r\n request: (params) => request(params as MsgRequestDispatcherParams<TStructN>),\r\n };\r\n\r\n // msgBus[\"#subjects\"] = subjects;\r\n\r\n return msgBus;\r\n}\r\n\r\n// TODO: support stream\r\n// TODO: support persistence\r\n// TODO: support unsubscribe (abort) alias (like in hooks)\r\n// TODO: support msg ack via custom RepeatSubject and MsgRecord: (no acked messages in queue, auto ack on publish to \"out\" channel)\r\n// TODO: support rate limiting (single channel) and backpressure (for \"in\" and \"out\" channel pair), real send promise\r\n// TODO: support TTL, maxBufferLength\r\n/*\r\nclass RepeatSubject<T> {\r\n private buffer: Msg<T>[] = [];\r\n private subject = new Subject<Msg<T>>();\r\n\r\n next(msg: Msg<T>) {\r\n this.buffer.push(msg);\r\n this.subject.next(msg);\r\n }\r\n\r\n subscribe(\r\n observer: (msg: Msg<T>) => void,\r\n filterFn?: (msg: Msg<T>) => boolean\r\n ) { \r\n this.buffer.filter(filterFn ?? (() => true)).forEach(observer);\r\n \r\n return this.subject.subscribe(observer);\r\n }\r\n}\r\n*/\r\n"],"names":["getMatchTest","pattern","value","regexp","DEFAULT_PROMISE_TIMEOUT","now","groupPrefix","createMsgBus","config","errTopic","$SYSTEM_TOPIC","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","once","timeout","settled","delayError","TimeoutError","res","rej","cleanup","onAbort","subParams","provide","msgIn","payload","msgOut","$CG_OUT","dispatch","msgId","args","request","dispatchParams"],"mappings":";;;;;;AA8BO,MAAMA,IAAe,CAACC,MAAoB;AAC7C,MAAIA,KAAW;AAEX,WAAO,CAACC,MAAkBA,KAASD;AAEvC,MAAIA,EAAQ,WAAW,GAAG,KAAKA,EAAQ,SAAS,GAAG,GAAG;AAClD,IAAAA,IAAUA,EAAQ,UAAU,GAAGA,EAAQ,SAAS,CAAC;AACjD,UAAME,IAAS,IAAI,OAAOF,CAAO;AACjC,WAAO,CAACC,MAAkBC,EAAO,KAAKD,CAAK;AAAA,EAC/C;AACI,WAAO,CAACA,MAAkBD,MAAYC;AAE9C,GAEME,IAA0B,MAAO,KAAK;AAK5C,SAASC,IAAM;AACX,SAAO,KAAK,IAAA;AAChB;AAGA,MAAMC,IAAc;AACb,SAASC,GAAkFC,GAAqD;AAInJ,QAAMC,IAAWC,GACXC,IAA2BC;AAEjC,WAASC,EAAWC,GAAoB;AACpC,WAAO;AAAA,MACH,IAAIA,EAAI;AAAA,MACR,SAASA,EAAI;AAAA,MACb,SAASA,EAAI;AAAA,IAAA;AAAA,EAErB;AAEA,WAASC,EAAYC,GAAuBC,GAAU;AAUlD,UAAMC,IAAc;AAAA,MAChB,OAAOD;AAAA,MACP,QAAQJ,EAAWG,CAAM;AAAA,IAAA;AAE7B,QAAIG;AACJ,IAAAA,IAAS;AAAA,MACL,SAAS;AAAA,QACL,SAASH,EAAO,QAAQ;AAAA,QACxB,OAAOI;AAAA,QACP,OAAOX;AAAA,MAAA;AAAA,MAEX,SAASS;AAAA,IAAA,GAEbG,EAAQF,CAAM,GACdA,IAAS;AAAA,MACL,SAAS;AAAA,QACL,SAASG;AAAA,QACT,OAAOC;AAAA,QACP,OAAOd;AAAA,MAAA;AAAA,MAEX,SAASS;AAAA,IAAA,GAEbG,EAAQF,CAAM;AAAA,EAElB;AAGA,QAAMK,wBAAoD,IAAA;AAE1D,WAASC,EAAiBC,GAAiBC,GAAe;AACtD,WAAO,GAAGD,CAAO,GAAGpB,CAAW,GAAGqB,CAAK;AAAA,EAC3C;AAUA,WAASC,EAAmBF,GAAiBC,GAAuC;AAChF,UAAME,IAAaJ,EAAiBC,GAASC,CAAK;AAElD,QAAI,CAACH,EAAS,IAAIK,CAAU,GAAG;AAC3B,UAAIC,IAAkC;AACtC,YAAMC,IAAgBvB,IAASkB,CAAO;AACtC,MAAIK,MACIA,EAAc,oBAAoB,QAAaA,EAAc,oBAAoB,UACjFD,IAAU,IAAIE,EAA6BD,EAAc,oBAAoB,OAAY,QAAWA,EAAc,kBAAkBA,EAAc,oBAAoB,OAAY,QAAWA,EAAc,gBAAgB,IAG9ND,MACDA,IAAU,IAAIG,EAAA,IAElBT,EAAS;AAAA,QAAIK;AAAA,QACTC;AAAA,MAAA;AAAA,IAER;AACA,WAAON,EAAS,IAAIK,CAAU;AAAA,EAClC;AAEA,WAASK,EAAcC,GAAmCC,GAA+DzB,GAA2B;AAChJ,QAAIyB,KAAY,MAAW;AACvB,UAAIC,GACAC,IAA2B,EAAE,SAAS,IAAM,UAAU,GAAA;AAC1D,MAAI,OAAOF,KAAa,WACpBC,IAAWD,KAEXC,IAAWD,EAAS,UACpBE,EAAQ,UAAUF,EAAS,SAC3BE,EAAQ,WAAWF,EAAS,WAEhCD,EAAI,KAAKI,EAAWF,GAAUC,GAAS3B,CAAS,CAAC;AAAA,IACrD;AAAA,EACJ;AAEA,WAAS6B,EAAcL,GAAmCE,GAAmB1B,GAA2B;AACpG,IAAI0B,KAAY,QACZF,EAAI,KAAKM,EAAWJ,GAAU1B,CAAS,CAAC;AAAA,EAEhD;AAEA,WAAS+B,EAAUC,GAAgC;AAG/C,UAAMjB,IAAU,OAAOiB,EAAO,OAAO,GAE/BhB,IAAQgB,EAAO,SAAS,OAAYpB,IAAS,OAAOoB,EAAO,KAAK,GAEhEb,IAAUF,EAAmBF,GAASC,CAAK,GAE3CiB,IAAQ5C,EAAa2C,EAAO,KAAK,GAEjCE,IAA+CC;AAAAA,MACjD,CAAChC;AAAA;AAAA;AAAA,QAGG8B,EAAM9B,EAAI,QAAQ,KAAK,MAAM,CAAC6B,EAAO,UAAUA,EAAO,OAAO7B,CAAG;AAAA;AAAA,IAAA;AAGxE,QAAIiC;AAEJ,UAAMZ,IAAoC,CAAA;AAE1C,IAAAA,EAAI,KAAKU,CAAG;AAEZ,UAAMd,IAAgBvB,IAASkB,CAAO;AAEtC,IAAAQ,EAAcC,GAAKJ,GAAe,UAAUpB,CAAS,GAErDuB,EAAcC,GAAKQ,EAAO,SAAS,UAAUhC,CAAS,GAEtD6B,EAAcL,GAAKJ,GAAe,UAAUpB,CAAS,GAErD6B,EAAcL,GAAKQ,EAAO,SAAS,UAAUhC,CAAS,GAElDoB,GAAe,SACfI,EAAI,KAAKa,EAAQjB,EAAc,OAAOpB,CAAS,CAAC,GAGhDA,KACAwB,EAAI,KAAKc,EAAUtC,CAAS,CAAC,GAG7BgC,EAAO,SAAS,cAChBR,EAAI,KAAKe,EAAOP,EAAO,QAAQ,UAAU,CAAC,GAG9CI,IAAaI,EAAchB,CAAG,EAAEL,CAAO;AAEvC,UAAMsB,IAAML,EAAW,UAAU;AAAA,MAC7B,MAAM,CAACjC,MAAuB;AAC1B,YAAI;AACA,iBAAO6B,EAAO,SAAS7B,CAAG;AAAA,QAC9B,SAASG,GAAK;AACV,UAAAF,EAAYD,GAAKG,CAAG;AAAA,QAExB;AAAA,MACJ;AAAA,MACA,OAAO,CAACA,MAAQ;AACZ,QAAAF;AAAA,UACI;AAAA,YACI,SAAS;AAAA,cACL,SAAAW;AAAA,cACA,OAAAC;AAAA,cACA,OAAOgB,EAAO;AAAA,YAAA;AAAA,UAClB;AAAA,UAEJ1B;AAAA,QAAA;AAAA,MAER;AAAA,MACA,UAAU,MAAM;AAAA,MAEhB;AAAA,IAAA,CACH,GAEKoC,IAAcV,EAAO,SAAS;AACpC,IAAAU,GAAa,iBAAiB,SAAS,CAACC,MAAM;AAE1C,cAAQ;AAAA,QACJ,kCAAkC5B,CAAO,YAAYC,CAAK,YAAYgB,EAAO,KAAK,aAAaU,EAAY,MAAM;AAAA;AAAA,MAAA,GAErHD,EAAI,YAAA;AAAA,IACR,CAAC;AAAA,EACL;AAEA,WAAS/B,EAAQP,GAAoB;AACjC,IAAIA,EAAI,MAAM,SACVA,EAAI,KAAKyC,EAAA,IAETzC,EAAI,WAAW,SACfA,EAAI,UAAU,CAAA;AAElB,UAAM0C,IAAU1C,EAAI;AACpB,IAAA0C,EAAQ,cAAcnD,EAAA;AACtB,UAAMqB,IAAU,OAAOZ,EAAI,QAAQ,OAAO;AAC1C,IAAIA,EAAI,QAAQ,SAAS,SACrBA,EAAI,QAAQ,QAAQS;AAExB,UAAMI,IAAQ,OAAOb,EAAI,QAAQ,KAAK;AAEtC,WADgBc,EAAmBF,GAASC,CAAK,EACzC,KAAKb,CAAG,GAET,QAAQ,QAAQA,CAAG;AAAA,EAC9B;AAEA,WAAS2C,EAAGd,GAAgC;AACxC,IAAAD,EAAUC,CAAM;AAAA,EACpB;AAEA,WAASe,EAAKf,GAAyC;AACnD,UAAMgB,IAAUhB,EAAO,SAAS,WAAW,OAAYvC,IAA0BuC,EAAO,SAAS;AACjG,QAAIiB,IAAU;AACd,WAAO,QAAQ,KAAK,CAACC,EAAWF,GAAS,MAAM,IAAIG,EAAA,CAAc,GAAG,IAAI,QAAa,CAACC,GAAKC,MAAQ;AAC/F,UAAI;AACA,cAAMX,IAAcV,EAAO,SAAS;AACpC,YAAIsB,IAAsB;AAE1B,YAAIZ,GAAa;AACb,cAAIa,IAAsB;AAC1B,UAAAD,IAAU,MAAM;AACZ,YAAAZ,EAAY,oBAAoB,SAASa,CAAO;AAAA,UACpD,GACAA,IAAU,MAAM;AACZ,YAAIN,MAGJA,IAAU,IACVK,EAAA,GACAD,EAAI,IAAI,MAAM,aAAa,EAAE,OAAOX,EAAY,OAAA,CAAQ,CAAC;AAAA,UAC7D,GACAA,EAAY,iBAAiB,SAASa,CAAO;AAAA,QACjD;AAEA,cAAMC,IAAoC;AAAA,UACtC,GAAGxB;AAAA,UAEC,SAAS;AAAA,YACL,GAAGA,EAAO;AAAA,YAEN,YAAY;AAAA,UAChB;AAAA,UAEJ,UAAU,CAAC7B,MAAQ;AACf,gBAAI;AACA,kBAAI8C;AACA;AAEJ,cAAAA,IAAU,IACVK,IAAA,GAEAF,EAAIjD,CAAG;AAAA,YACX,SAASG,GAAK;AACV,kBAAI2C;AACA;AAEJ,cAAAA,IAAU,IACVK,IAAA,GACAD,EAAI/C,CAAG;AAAA,YACX;AAAA,UACJ;AAAA,QACJ;AAEJ,QAAAyB,EAAUyB,CAAS;AAAA,MACvB,SAASb,GAAG;AACR,QAAAU,EAAIV,CAAC;AAAA,MACT;AAAA,IACJ,CAAC,CAAC,CAAC;AAAA,EACP;AAEA,WAASc,EAAQzB,GAAqC;AAClD,UAAMwB,IAAoC;AAAA,MACtC,GAAGxB;AAAA,MAEC,UAAU,OAAO0B,MAAU;AACvB,YAAI;AACA,gBAAMb,IAAU;AAAA,YACZ,GAAGa,EAAM;AAAA,YACT,GAAG1B,EAAO;AAAA,YACV,WAAW0B,EAAM;AAAA,UAAA,GAEfC,IAAW,MAAM,QAAQ,QAAQ3B,EAAO,SAAS0B,GAAOb,CAAO,CAAC,GAChEe,IAAwD;AAAA,YAC1D,SAAS;AAAA,cACL,SAASF,EAAM,QAAQ;AAAA,cACvB,OAAOG;AAAA,cACP,OAAOH,EAAM,QAAQ;AAAA,YAAA;AAAA,YAEzB,SAAAb;AAAA,YACA,SAAAc;AAAA,UAAA;AAEJ,UAAAjD,EAAQkD,CAAM;AAAA,QAClB,SAAStD,GAAK;AACV,UAAAF,EAAYsD,GAAOpD,CAAG;AAAA,QAE1B;AAAA,MACJ;AAAA,IACJ;AAEJ,IAAAyB,EAAUyB,CAAS;AAAA,EACvB;AAoBA,iBAAeM,EAAS9B,GAAuC;AAC3D,UAAM+B,IAAQnB,EAAA;AACd,QAAIZ,EAAO,UAAU;AACjB,YAAMwB,IAAoE;AAAA,QACtE,SAASxB,EAAO;AAAA,QAChB,OAAO6B;AAAA,QACP,OAAO7B,EAAO;AAAA,QACd,SAAS;AAAA,UACL,GAAGA,EAAO;AAAA,UAEN,YAAY;AAAA,QAChB;AAAA,QAEJ,UAAU,CAAC4B,MAAW;AAElB,UAAA5B,EAAO,SAAS4B,CAAM;AAAA,QAC1B;AAAA,QACA,QAAQ,CAACA,MACEA,EAAO,SAAS,cAAcG,MAAU,CAAC/B,EAAO,UAAUA,EAAO,OAAO4B,CAAM;AAAA,MACzF;AAEJ,MAAA7B,EAAUyB,CAAS;AAAA,IACvB;AACA,QAAIG;AACJ,IAAI3B,EAAO,YACPA,EAAO,UAAU,IAAIgC,MAAS;AAC1B,MAAAL,IAAUK;AAAA,IACd,CAAC,IAEDL,IAAU3B,EAAO,SAErB,MAAMtB,EAAQ;AAAA,MACV,IAAIqD;AAAA,MACJ,SAAS;AAAA,QACL,SAAS/B,EAAO;AAAA,QAChB,OAAOA,EAAO;AAAA,QACd,OAAOA,EAAO;AAAA,MAAA;AAAA,MAElB,SAAS;AAAA,QACL,GAAGA,EAAO;AAAA,MAAA;AAAA,MAEd,SAAA2B;AAAA,IAAA,CACH;AAAA,EACL;AAEA,iBAAeM,EAAQjC,GAA4D;AAC/E,UAAMgB,IAAUhB,EAAO,SAAS,WAAW,OAAYvC,IAA0BuC,EAAO,SAAS;AACjG,QAAIiB,IAAU;AACd,WAAO,QAAQ,KAAK,CAACC,EAAWF,GAAS,MAAM,IAAIG,EAAA,CAAc,GAAG,IAAI,QAAQ,CAACC,GAAKC,MAAQ;AAC1F,UAAI;AACA,cAAMX,IAAcV,EAAO,SAAS;AACpC,YAAIsB,IAAsB;AAE1B,YAAIZ,GAAa;AACb,cAAIa,IAAsB;AAC1B,gBAAMD,IAAU,MAAM;AAClB,YAAAZ,EAAY,oBAAoB,SAASa,CAAO;AAAA,UACpD;AACA,UAAAA,IAAU,MAAM;AACZ,YAAIN,MAGJA,IAAU,IACVK,EAAAA,GACAD,EAAI,IAAI,MAAM,aAAa,EAAE,OAAOX,EAAY,OAAA,CAAQ,CAAC;AAAA,UAC7D,GACAA,EAAY,iBAAiB,SAASa,CAAO;AAAA,QACjD;AAEA,cAAMW,IAAgD;AAAA,UAClD,GAAGlC;AAAA,UACH,UAAU,CAAC7B,MAAQ;AACf,gBAAI;AACA,kBAAI8C;AACA;AAEJ,cAAAA,IAAU,IACVK,IAAA,GACAF,EAAIjD,CAAG;AAAA,YACX,SAASG,GAAK;AACV,kBAAI2C;AACA;AAEJ,cAAAA,IAAU,IACVK,IAAA,GACAD,EAAI/C,CAAG;AAAA,YACX;AAAA,UACJ;AAAA,QAAA;AAEJ,QAAAwD,EAASI,CAAc;AAAA,MAC3B,SAAS5D,GAAK;AACV,QAAA+C,EAAI/C,CAAG;AAAA,MACX;AAAA,IACJ,CAAC,CAAC,CAAC;AAAA,EACP;AAgBA,SAd0C;AAAA,IACtC,QAAAT;AAAA,IACA,IAAI,CAACmC,MAAWc,EAAGd,CAAgC;AAAA,IACnD,MAAM,CAACA,MAAWe,EAAKf,CAAyC;AAAA,IAChE,QAAQ,CAACA,MAAW;AAChB,YAAM,IAAI,MAAM,iBAAiB;AAAA,IACrC;AAAA,IACA,SAAS,CAACA,MAAWyB,EAAQzB,CAAqC;AAAA,IAClE,MAAM,CAACA,MAAW8B,EAAS9B,CAAuC;AAAA,IAClE,SAAS,CAACA,MAAWiC,EAAQjC,CAA8C;AAAA,EAAA;AAMnF;"}
1
+ {"version":3,"file":"core.es.js","sources":["../src/core.ts"],"sourcesContent":null,"names":["getMatchTest","pattern","value","regexp","DEFAULT_PROMISE_TIMEOUT","now","groupPrefix","createMsgBus","config","errTopic","$SYSTEM_TOPIC","scheduler","asyncScheduler","getMsgInfo","msg","handleError","srcMsg","err","errPayload","errMsg","$CG_ERROR","publish","$C_ERROR","$CG_IN","createOperationCanceledError","reason","OperationCanceledError","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","onAbort","uuid","headers","on","once","timeout","settled","delayError","TimeoutError","res","rej","un","cleanup","subParams","e","provide","msgIn","payload","msgOut","$CG_OUT","dispatch","msgId","args","request","dispatchParams","stream","streamEnd","aborted","pendingResolve","pendingReject","timeoutId","messageCount","fetchCount","resetTimeout","resolvePendingAsEnded","unsubscribe","resolve","reject"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"util.es.js","sources":["../src/util.ts"],"sourcesContent":["import { asyncScheduler, Observable, SchedulerLike, Subscriber, timer, UnaryFunction } from \"rxjs\";\r\n\r\nexport function identity<T>(x: T): T {\r\n return x;\r\n}\r\n\r\nexport function pipeFromArray<T, R>(fns: Array<UnaryFunction<T, R>>): UnaryFunction<T, R> {\r\n if (fns.length === 0) {\r\n return identity as UnaryFunction<any, any>;\r\n }\r\n\r\n if (fns.length === 1) {\r\n return fns[0];\r\n }\r\n\r\n return function piped(input: T): R {\r\n return fns.reduce((prev: any, fn: UnaryFunction<T, R>) => fn(prev), input as any);\r\n };\r\n}\r\n\r\nexport type ThrottleOptions = {\r\n leading?: boolean;\r\n trailing?: boolean;\r\n}\r\n\r\nexport function throttleOp<T>(\r\n duration: number,\r\n options: ThrottleOptions = { leading: true, trailing: true },\r\n scheduler: SchedulerLike = asyncScheduler\r\n) {\r\n const { leading = true, trailing = false } = options;\r\n\r\n return (source: Observable<T>) =>\r\n new Observable<T>((subscriber: Subscriber<T>) => {\r\n let throttling = false;\r\n let lastValue: T | undefined;\r\n let timerSub: any;\r\n\r\n const endWindow = () => {\r\n if (trailing && lastValue !== undefined) {\r\n subscriber.next(lastValue);\r\n }\r\n lastValue = undefined;\r\n throttling = false;\r\n };\r\n\r\n const sourceSub = source.subscribe({\r\n next(value) {\r\n if (!throttling) {\r\n throttling = true;\r\n\r\n if (leading) {\r\n subscriber.next(value);\r\n } else if (trailing) {\r\n lastValue = value;\r\n }\r\n\r\n timerSub = timer(duration, scheduler).subscribe(() => {\r\n endWindow();\r\n timerSub?.unsubscribe();\r\n });\r\n } else if (trailing) {\r\n lastValue = value;\r\n }\r\n },\r\n error(err) {\r\n subscriber.error(err);\r\n },\r\n complete() {\r\n if (trailing && lastValue !== undefined) {\r\n subscriber.next(lastValue);\r\n }\r\n subscriber.complete();\r\n }\r\n });\r\n\r\n return () => {\r\n sourceSub.unsubscribe();\r\n timerSub?.unsubscribe();\r\n };\r\n });\r\n}"],"names":["identity","x","pipeFromArray","fns","input","prev","fn","throttleOp","duration","options","scheduler","asyncScheduler","leading","trailing","source","Observable","subscriber","throttling","lastValue","timerSub","endWindow","sourceSub","value","timer","err"],"mappings":";AAEO,SAASA,EAAYC,GAAS;AACjC,SAAOA;AACX;AAEO,SAASC,EAAoBC,GAAsD;AACtF,SAAIA,EAAI,WAAW,IACRH,IAGPG,EAAI,WAAW,IACRA,EAAI,CAAC,IAGT,SAAeC,GAAa;AAC/B,WAAOD,EAAI,OAAO,CAACE,GAAWC,MAA4BA,EAAGD,CAAI,GAAGD,CAAY;AAAA,EACpF;AACJ;AAOO,SAASG,EACZC,GACAC,IAA2B,EAAE,SAAS,IAAM,UAAU,GAAA,GACtDC,IAA2BC,GAC7B;AACE,QAAM,EAAE,SAAAC,IAAU,IAAM,UAAAC,IAAW,OAAUJ;AAE7C,SAAO,CAACK,MACJ,IAAIC,EAAc,CAACC,MAA8B;AAC7C,QAAIC,IAAa,IACbC,GACAC;AAEJ,UAAMC,IAAY,MAAM;AACpB,MAAIP,KAAYK,MAAc,UAC1BF,EAAW,KAAKE,CAAS,GAE7BA,IAAY,QACZD,IAAa;AAAA,IACjB,GAEMI,IAAYP,EAAO,UAAU;AAAA,MAC/B,KAAKQ,GAAO;AACR,QAAKL,IAaMJ,MACPK,IAAYI,MAbZL,IAAa,IAETL,IACAI,EAAW,KAAKM,CAAK,IACdT,MACPK,IAAYI,IAGhBH,IAAWI,EAAMf,GAAUE,CAAS,EAAE,UAAU,MAAM;AAClD,UAAAU,EAAA,GACAD,GAAU,YAAA;AAAA,QACd,CAAC;AAAA,MAIT;AAAA,MACA,MAAMK,GAAK;AACP,QAAAR,EAAW,MAAMQ,CAAG;AAAA,MACxB;AAAA,MACA,WAAW;AACP,QAAIX,KAAYK,MAAc,UAC1BF,EAAW,KAAKE,CAAS,GAE7BF,EAAW,SAAA;AAAA,MACf;AAAA,IAAA,CACH;AAED,WAAO,MAAM;AACT,MAAAK,EAAU,YAAA,GACVF,GAAU,YAAA;AAAA,IACd;AAAA,EACJ,CAAC;AACT;"}
1
+ {"version":3,"file":"util.es.js","sources":["../src/util.ts"],"sourcesContent":null,"names":["identity","x","pipeFromArray","fns","input","prev","fn","throttleOp","duration","options","scheduler","asyncScheduler","leading","trailing","source","Observable","subscriber","throttling","lastValue","timerSub","endWindow","sourceSub","value","timer","err"],"mappings":";AAEO,SAASA,EAAYC,GAAS;AACjC,SAAOA;AACX;AAEO,SAASC,EAAoBC,GAAsD;AACtF,SAAIA,EAAI,WAAW,IACRH,IAGPG,EAAI,WAAW,IACRA,EAAI,CAAC,IAGT,SAAeC,GAAa;AAC/B,WAAOD,EAAI,OAAO,CAACE,GAAWC,MAA4BA,EAAGD,CAAI,GAAGD,CAAY;AAAA,EACpF;AACJ;AAOO,SAASG,EACZC,GACAC,IAA2B,EAAE,SAAS,IAAM,UAAU,GAAA,GACtDC,IAA2BC,GAC7B;AACE,QAAM,EAAE,SAAAC,IAAU,IAAM,UAAAC,IAAW,OAAUJ;AAE7C,SAAO,CAACK,MACJ,IAAIC,EAAc,CAACC,MAA8B;AAC7C,QAAIC,IAAa,IACbC,GACAC;AAEJ,UAAMC,IAAY,MAAM;AACpB,MAAIP,KAAYK,MAAc,UAC1BF,EAAW,KAAKE,CAAS,GAE7BA,IAAY,QACZD,IAAa;AAAA,IACjB,GAEMI,IAAYP,EAAO,UAAU;AAAA,MAC/B,KAAKQ,GAAO;AACR,QAAKL,IAaMJ,MACPK,IAAYI,MAbZL,IAAa,IAETL,IACAI,EAAW,KAAKM,CAAK,IACdT,MACPK,IAAYI,IAGhBH,IAAWI,EAAMf,GAAUE,CAAS,EAAE,UAAU,MAAM;AAClD,UAAAU,EAAA,GACAD,GAAU,YAAA;AAAA,QACd,CAAC;AAAA,MAIT;AAAA,MACA,MAAMK,GAAK;AACP,QAAAR,EAAW,MAAMQ,CAAG;AAAA,MACxB;AAAA,MACA,WAAW;AACP,QAAIX,KAAYK,MAAc,UAC1BF,EAAW,KAAKE,CAAS,GAE7BF,EAAW,SAAA;AAAA,MACf;AAAA,IAAA,CACH;AAED,WAAO,MAAM;AACT,MAAAK,EAAU,YAAA,GACVF,GAAU,YAAA;AAAA,IACd;AAAA,EACJ,CAAC;AACT;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@actdim/msgmesh",
3
- "version": "1.2.5",
3
+ "version": "1.2.7",
4
4
  "description": "A type-safe, modular message mesh for scalable async communication in TypeScript",
5
5
  "author": "Pavel Borodaev",
6
6
  "license": "Proprietary",