@effect-app/infra 0.25.7 → 0.25.8

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/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @effect-app/infra
2
2
 
3
+ ## 0.25.8
4
+
5
+ ### Patch Changes
6
+
7
+ - ba26d2fc: Fix Queue error reporting and request semantics
8
+
3
9
  ## 0.25.7
4
10
 
5
11
  ### Patch Changes
@@ -5,11 +5,16 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.MessageException = exports.FatalQueueException = void 0;
7
7
  exports.forkDaemonReportQueue = forkDaemonReportQueue;
8
- exports.reportFailure = reportFailure;
9
- exports.reportQueueError = exports.reportFatalQueueError = void 0;
10
- var tsplus_module_1 = _interopRequireWildcard(require("@effect/io/Effect"));
8
+ exports.reportFatalQueueError = void 0;
9
+ exports.reportNonInterruptedFailure = reportNonInterruptedFailure;
10
+ exports.reportNonInterruptedFailureCause = reportNonInterruptedFailureCause;
11
+ exports.reportQueueError = void 0;
12
+ var tsplus_module_1 = _interopRequireWildcard(require("@effect-app/core/Option"));
11
13
  var tsplus_module_2 = _interopRequireWildcard(require("@effect-app/infra/RequestContext"));
12
- var tsplus_module_3 = _interopRequireWildcard(require("@effect-app/core/Effect"));
14
+ var tsplus_module_3 = _interopRequireWildcard(require("@effect/data/Context"));
15
+ var tsplus_module_4 = _interopRequireWildcard(require("@effect/io/Effect"));
16
+ var tsplus_module_5 = _interopRequireWildcard(require("@effect/io/Exit"));
17
+ var tsplus_module_6 = _interopRequireWildcard(require("@effect/io/Cause"));
13
18
  var _errorReporter = require("@effect-app/infra/errorReporter");
14
19
  var _errors = require("@effect-app/infra/errors");
15
20
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
@@ -27,10 +32,10 @@ class FatalQueueException extends _errors.CauseException {
27
32
  }
28
33
  exports.FatalQueueException = FatalQueueException;
29
34
  const reportQueueError_ = (0, _errorReporter.reportError)(cause => new MessageException(cause));
30
- const reportQueueError = (cause, context) => tsplus_module_1.serviceWithEffect(tsplus_module_2.tag, requestContext => tsplus_module_1.sync(() => reportQueueError_(cause, {
31
- requestContext,
35
+ const reportQueueError = (cause, context) => tsplus_module_4.flatMap(tsplus_module_4.contextWith(_ => tsplus_module_3.getOption(_, tsplus_module_2.tag)), requestContext => reportQueueError_(cause, {
36
+ requestContext: tsplus_module_1.getOrUndefined(requestContext),
32
37
  ...context
33
- })));
38
+ }));
34
39
  /**
35
40
  * Forks the effect into a new fiber attached to the global scope. Because the
36
41
  * new fiber is attached to the global scope, when the fiber executing the
@@ -42,13 +47,20 @@ const reportQueueError = (cause, context) => tsplus_module_1.serviceWithEffect(t
42
47
  */
43
48
  exports.reportQueueError = reportQueueError;
44
49
  function forkDaemonReportQueue(self) {
45
- return tsplus_module_1.daemonChildren(tsplus_module_1.fork(tsplus_module_1.tapErrorCause(self, reportQueueError)));
50
+ return tsplus_module_4.daemonChildren(tsplus_module_4.fork(tsplus_module_4.tapErrorCause(self, reportNonInterruptedFailureCause({}))));
46
51
  }
47
52
  const reportFatalQueueError = (0, _errorReporter.reportError)(cause => new FatalQueueException(cause));
48
53
  exports.reportFatalQueueError = reportFatalQueueError;
49
- function reportFailure(name) {
50
- return self => tsplus_module_1.tap(tsplus_module_1.exit(self), exit => exit._tag === "Failure" ? reportFatalQueueError(exit.cause, {
51
- name
52
- }) : tsplus_module_3.unit);
54
+ function reportNonInterruptedFailure(context) {
55
+ const report = reportNonInterruptedFailureCause(context);
56
+ return inp => tsplus_module_4.flatMap(tsplus_module_4.exit(inp), result => tsplus_module_5.match(result, cause => tsplus_module_4.map(report(cause), () => result), () => tsplus_module_4.sync(() => result)));
57
+ }
58
+ function reportNonInterruptedFailureCause(context) {
59
+ return cause => {
60
+ if (tsplus_module_6.isInterrupted(cause)) {
61
+ return tsplus_module_4.failCause(cause);
62
+ }
63
+ return reportQueueError(cause, context);
64
+ };
53
65
  }
54
66
  //# sourceMappingURL=errors.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.cjs","mappings":";;;;;;;;;;;;AAAA;AACA;AAAyD;AAAA;AAGnD,MAAOA,gBAAoB,SAAQC,sBAAiB;EACxDC,YAAYC,KAAe;IACzB,KAAK,CAACA,KAAK,EAAE,SAAS,CAAC;EACzB;;AACD;AAEK,MAAOC,mBAAuB,SAAQH,sBAAiB;EAC3DC,YAAYC,KAAe;IACzB,KAAK,CAACA,KAAK,EAAE,SAAS,CAAC;EACzB;;AACD;AAED,MAAME,iBAAiB,GAAG,8BAAW,EAACF,KAAK,IAAI,IAAIH,gBAAgB,CAACG,KAAK,CAAC,CAAC;AAEpE,MAAMG,gBAAgB,GAAG,CAAIH,KAAe,EAAEI,OAA6C,KAChGC,uDAAoCC,cAAc,IAChDD,2BAAOH,iBAAiB,CAACF,KAAK,EAAE;EAAEM,cAAc;EAAE,GAAGF;AAAO,CAAE,CAAC,CAAC,CACjE;AAEH;;;;;;;;;AAAA;AASM,SAAUG,qBAAqB,CAAUC,IAAqB;EAClE,2DAAOH,kCAAI,EAAeF,gBAAgB,CAAC;AAC7C;AAEO,MAAMM,qBAAqB,GAAG,8BAAW,EAC9CT,KAAK,IAAI,IAAIC,mBAAmB,CAACD,KAAK,CAAC,CACxC;AAAA;AAEK,SAAUU,aAAa,CAACC,IAAY;EACxC,OAAiBH,IAAqB,IACpCH,6CAAI,GAAUO,IAAI,IAChBA,IAAI,CAACC,IAAI,KAAK,SAAS,GACnBJ,qBAAqB,CAACG,IAAI,CAACZ,KAAK,EAAE;IAAEW;EAAI,CAAE,CAAC,GAC5CG,oBAAY,CAChB;AACL","names":["MessageException","CauseException","constructor","cause","FatalQueueException","reportQueueError_","reportQueueError","context","tsplus_module_1","requestContext","forkDaemonReportQueue","self","reportFatalQueueError","reportFailure","name","exit","_tag","tsplus_module_3"],"sourceRoot":"","sources":["../../../_src/services/QueueMaker/errors.ts"],"sourcesContent":[null]}
1
+ {"version":3,"file":"errors.cjs","mappings":";;;;;;;;;;;;;;;;;AAAA;AACA;AAAyD;AAAA;AAGnD,MAAOA,gBAAoB,SAAQC,sBAAiB;EACxDC,YAAYC,KAAe;IACzB,KAAK,CAACA,KAAK,EAAE,SAAS,CAAC;EACzB;;AACD;AAEK,MAAOC,mBAAuB,SAAQH,sBAAiB;EAC3DC,YAAYC,KAAe;IACzB,KAAK,CAACA,KAAK,EAAE,SAAS,CAAC;EACzB;;AACD;AAED,MAAME,iBAAiB,GAAG,8BAAW,EAACF,KAAK,IAAI,IAAIH,gBAAgB,CAACG,KAAK,CAAC,CAAC;AAEpE,MAAMG,gBAAgB,GAAG,CAAIH,KAAe,EAAEI,OAA6C,KAChGC,oDAAoBC,CAAiB,IAAKC,0BAAkBD,CAAC,sBAAqB,CAAC,EACxEE,cAAc,IAAIN,iBAAiB,CAACF,KAAK,EAAE;EAAEQ,cAAc,iCAAEA,cAAc,CAAM;EAAE,GAAGJ;AAAO,CAAE,CAAC,CAAC;AAE9G;;;;;;;;;AAAA;AASM,SAAUK,qBAAqB,CAAUC,IAAqB;EAClE,2DAAOL,kCAAI,EAAeM,gCAAgC,CAAC,EAAE,CAAC,CAAC;AACjE;AAEO,MAAMC,qBAAqB,GAAG,8BAAW,EAC9CZ,KAAK,IAAI,IAAIC,mBAAmB,CAACD,KAAK,CAAC,CACxC;AAAA;AAEK,SAAUa,2BAA2B,CAACT,OAAiC;EAC3E,MAAMU,MAAM,GAAGH,gCAAgC,CAACP,OAAO,CAAC;EACxD,OAAiBW,GAAoB,IACnCV,gDAAG,GACQW,MAAM,IACbC,4BAAM,EACJjB,KAAK,IAAIK,0BAAM,CAACL,KAAK,CAAC,EAAK,MAAMgB,MAAM,CAAC,EACxC,MAAMX,2BAAOW,MAAM,CAAC,CACrB,CACF;AACP;AAEM,SAAUL,gCAAgC,CAACP,OAAiC;EAChF,OAAWJ,KAAe,IAAgC;IACxD,IAAIkB,mCAAK,CAAgB,EAAE;MACzB,iCAAQlB,KAAsB;;IAEhC,OAAOG,gBAAgB,CAACH,KAAK,EAAEI,OAAO,CAAC;EACzC,CAAC;AACH","names":["MessageException","CauseException","constructor","cause","FatalQueueException","reportQueueError_","reportQueueError","context","tsplus_module_4","_","tsplus_module_3","requestContext","forkDaemonReportQueue","self","reportNonInterruptedFailureCause","reportFatalQueueError","reportNonInterruptedFailure","report","inp","result","tsplus_module_5","tsplus_module_6"],"sourceRoot":"","sources":["../../../_src/services/QueueMaker/errors.ts"],"sourcesContent":[null]}
@@ -4,7 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.makeMemQueue = makeMemQueue;
7
- exports.silence = silence;
8
7
  var tsplus_module_1 = _interopRequireWildcard(require("@effect/io/Effect"));
9
8
  var tsplus_module_2 = _interopRequireWildcard(require("@effect-app/infra/RequestContext"));
10
9
  var tsplus_module_3 = _interopRequireWildcard(require("@effect-app/core/_ext/Iterable"));
@@ -13,10 +12,6 @@ var tsplus_module_5 = _interopRequireWildcard(require("@effect-app/prelude/utils
13
12
  var tsplus_module_6 = _interopRequireWildcard(require("@effect-app/prelude/_ext/misc"));
14
13
  var tsplus_module_7 = _interopRequireWildcard(require("@effect-app/prelude/schema"));
15
14
  var tsplus_module_8 = _interopRequireWildcard(require("@effect/io/Fiber"));
16
- var tsplus_module_9 = _interopRequireWildcard(require("@effect-app/infra/api/setupRequest"));
17
- var tsplus_module_10 = _interopRequireWildcard(require("@effect/io/Cause"));
18
- var tsplus_module_11 = _interopRequireWildcard(require("@effect-app/core/Effect"));
19
- var tsplus_module_12 = _interopRequireWildcard(require("@effect/io/Exit"));
20
15
  var _memQueue = require("@effect-app/infra-adapters/memQueue");
21
16
  var _Memory = require("../Store/Memory.cjs");
22
17
  var _errors2 = require("./errors.cjs");
@@ -29,7 +24,7 @@ function makeMemQueue(queueName, queueDrainName, encoder, makeHandleEvent, provi
29
24
  return tsplus_module_1.gen(function* ($) {
30
25
  const mem = yield* $(tsplus_module_1.service(_memQueue.MemQueue));
31
26
  const q = yield* $(mem.getOrCreateQueue(queueName));
32
- const qReply = yield* $(mem.getOrCreateQueue(queueDrainName));
27
+ const qDrain = yield* $(mem.getOrCreateQueue(queueDrainName));
33
28
  return {
34
29
  publish: (...messages) => tsplus_module_1.gen(function* ($) {
35
30
  const requestContext = yield* $(tsplus_module_1.service(tsplus_module_2.tag));
@@ -44,6 +39,9 @@ function makeMemQueue(queueName, queueDrainName, encoder, makeHandleEvent, provi
44
39
  }),
45
40
  drain: tsplus_module_1.gen(function* ($) {
46
41
  const handleEvent = yield* $(makeHandleEvent);
42
+ const silenceAndReportError = (0, _errors2.reportNonInterruptedFailure)({
43
+ name: "MemQueue.drain." + queueDrainName
44
+ });
47
45
  const processMessage = msg =>
48
46
  // we JSON parse, because that is what the wire also does, and it reveals holes in e.g unknown encoders (Date->String)
49
47
  tsplus_module_1.flatMap(tsplus_module_1.orDie(tsplus_module_1.flatMap(tsplus_module_1.sync(() => JSON.parse(msg)), parseDrain)), ({
@@ -53,29 +51,16 @@ function makeMemQueue(queueName, queueDrainName, encoder, makeHandleEvent, provi
53
51
  id: body.id,
54
52
  locale: "en",
55
53
  name: tsplus_module_7.ReasonableString(body._tag)
56
- }))(tsplus_module_1.zipRight(tsplus_module_1.tap(tsplus_module_6.logAnnotates({
54
+ }))(silenceAndReportError(tsplus_module_1.zipRight(tsplus_module_1.tap(tsplus_module_6.logAnnotates({
57
55
  body: tsplus_module_5.RecordPretty(tsplus_module_5.object$(body)),
58
56
  meta: tsplus_module_5.RecordPretty(tsplus_module_5.object$(meta))
59
- })(tsplus_module_1.logDebug(`$$ [${queueDrainName}] Processing incoming message`)), () => _Memory.restoreFromRequestContext), silence(handleEvent(body)))));
60
- return yield* $(tsplus_module_1.forkScoped(tsplus_module_1.forever(tsplus_module_9.setupReq3((0, _errors2.reportFailure)("drain")(tsplus_module_1.flatMap(qReply.take(), x => tsplus_module_1.flatMap(tsplus_module_1.fork(tsplus_module_1.uninterruptible(processMessage(x))), _ => tsplus_module_8.join(_)))), "Queue.ReceiveMessage"))));
57
+ })(tsplus_module_1.logDebug(`$$ [${queueDrainName}] Processing incoming message`)), () => _Memory.restoreFromRequestContext), handleEvent(body)))));
58
+ return yield* $(tsplus_module_1.forkScoped(tsplus_module_1.forever(silenceAndReportError(tsplus_module_1.flatMap(qDrain.take(), x => tsplus_module_1.flatMap(tsplus_module_1.fork(tsplus_module_1.uninterruptible(processMessage(x))), _ => tsplus_module_8.join(_)))
59
+ // TODO: normally a failed item would be returned to the queue and retried up to X times.
60
+ // .flatMap(_ => _._tag === "Failure" && !isInterrupted ? qDrain.offer(x) : Effect.unit) // TODO: retry count tracking and max retries.
61
+ ))));
61
62
  })
62
63
  };
63
64
  });
64
65
  }
65
- // We want the Queue to continue processing even on errors per messages
66
- // must make sure that the errors are processed/handled beforehand.
67
- function silence(inp) {
68
- return tsplus_module_1.flatMap(tsplus_module_1.exit(inp), result => tsplus_module_1.gen(function* ($) {
69
- const requestContext = yield* $(tsplus_module_1.service(tsplus_module_2.tag));
70
- return yield* $(tsplus_module_12.match(result, cause => {
71
- if (tsplus_module_10.isInterrupted(cause)) {
72
- return tsplus_module_1.failCause(cause);
73
- }
74
- (0, _errors2.reportQueueError)(cause, {
75
- requestContext
76
- });
77
- return tsplus_module_11.unit;
78
- }, () => tsplus_module_11.unit));
79
- }));
80
- }
81
66
  //# sourceMappingURL=memQueue.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"memQueue.cjs","mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAGA;AACA;AAA6D;AAAA;AAG7D;;;AAGM,SAAUA,YAAY,CAC1BC,SAAiB,EACjBC,cAAsB,EACtBC,OAAyD,EACzDC,eAAwF,EACxFC,cAEuC,EACvCC,UAGmF;EAEnF,OAAOC,oBAAW,WAAUC,CAAC;IAC3B,MAAMC,GAAG,GAAG,OAAOD,CAAC,yBAACE,kBAAQ,EAAQ;IACrC,MAAMC,CAAC,GAAG,OAAOH,CAAC,CAACC,GAAG,CAACG,gBAAgB,CAACX,SAAS,CAAC,CAAC;IACnD,MAAMY,MAAM,GAAG,OAAOL,CAAC,CAACC,GAAG,CAACG,gBAAgB,CAACV,cAAc,CAAC,CAAC;IAE7D,OAAO;MACLY,OAAO,EAAE,CAAC,GAAGC,QAAQ,KACnBR,oBAAW,WAAUC,CAAC;QACpB,MAAMQ,cAAc,GAAG,OAAOR,CAAC,8CAA2B;QAC1D,OAAO,OAAOA,CAAC,uCACbS,oCAAQ,EAAeC,CAAC,IAAGX;QACzB;QACAA,mDACEY,IAAI,CAACC,SAAS,CACZjB,OAAO,CAAC;UAAEkB,IAAI,EAAEH,CAAC;UAAEI,IAAI,EAAEN;QAAc,CAAE,CAAC,CAC3C;QAED;QAAA,EACSO,CAAC,IAAIZ,CAAC,CAACa,KAAK,CAACD,CAAC,CAAC,CAAC,CAClB,CACV,EAEF;MACH,CAAC,CAAC;MACJE,KAAK,EAAElB,oBAAW,WAAUC,CAAC;QAC3B,MAAMkB,WAAW,GAAG,OAAOlB,CAAC,CAACJ,eAAe,CAAC;QAC7C,MAAMuB,cAAc,GAAIC,GAAW;QACjC;QACArB,iGAAOY,IAAI,CAACU,KAAK,CAACD,GAAG,CAAC,CAAC,EACZtB,UAAU,CAAC,GAEX,CAAC;UAAEe,IAAI;UAAEC;QAAI,CAAE,KAOlBjB,cAAc,CACZyB,8BAAc,CAACC,OAAO,CAACT,IAAI,EAAE;UAC3BU,EAAE,EAAEX,IAAI,CAACW,EAAE;UACXC,MAAM,EAAE,IAAa;UACrBC,IAAI,EAAEC,gCAAgB,CAACd,IAAI,CAACe,IAAI;SACjC,CAAC,CACH,CAZL7B,6CAES8B,6BAAoB;UAAEhB,IAAI,uDAAEA,IAAI,EAAU;UAAEC,IAAI,uDAAEA,IAAI;QAAU,CAAE,CAAC,CAF5Ef,yBACY,OAAOL,cAAc,+BAA+B,CAAC,GAE1D,MAAMoC,iCAAyB,CAAC,EAC3BC,OAAO,CAACb,WAAW,CAACL,IAAI,CAAC,CAAC,CAAC,CASpC,CACJ;QACL,OAAO,OAAOb,CAAC,oDACbgC,0BAES,0BAAa,EAAC,OAAO,CAAC,CAF/BjC,8BAAM,CAACkC,IAAI,EAAE,EACFC,CAAC,IAAInC,2FAAc,CAACmC,CAAC,CAAC,IAA8BnB,CAAC,IAAGoB,qBAACpB,CAAC,CAAK,CAAC,CAAC,GAGpD,sBAAsB,CAAC,GAGhD;MACH,CAAC;KAC+B;EACpC,CAAC,CAAC;AACJ;AAEA;AACA;AACM,SAAUgB,OAAO,CAAUK,GAAoB;EACnD,OAAOrC,gDAAG,GAAcsC,MAAM,IAC5BtC,oBAAW,WAAUC,CAAC;IACpB,MAAMQ,cAAc,GAAG,OAAOR,CAAC,8CAA2B;IAC1D,OAAO,OAAOA,CAAC,CACbsC,6BAAM,EACJC,KAAK,IAAG;MACN,IAAIC,oCAAK,CAAgB,EAAE;QACzB,iCAAQD,KAAsB;;MAEhC,6BAAgB,EAACA,KAAK,EAAE;QAAE/B;MAAc,CAAE,CAAC;MAC3C;IACF,CAAC,EACD,MAAKiC,qBAAY,CAClB,CACF;EACH,CAAC,CAAC,CACH;AACH","names":["makeMemQueue","queueName","queueDrainName","encoder","makeHandleEvent","provideContext","parseDrain","tsplus_module_1","$","mem","MemQueue","q","getOrCreateQueue","qReply","publish","messages","requestContext","tsplus_module_3","m","JSON","stringify","body","meta","_","offer","drain","handleEvent","processMessage","msg","parse","RequestContext","inherit","id","locale","name","tsplus_module_7","_tag","tsplus_module_6","restoreFromRequestContext","silence","tsplus_module_9","take","x","tsplus_module_8","inp","result","tsplus_module_12","cause","tsplus_module_10","tsplus_module_11"],"sourceRoot":"","sources":["../../../_src/services/QueueMaker/memQueue.ts"],"sourcesContent":[null]}
1
+ {"version":3,"file":"memQueue.cjs","mappings":";;;;;;;;;;;;;;AAAA;AAGA;AACA;AAAyD;AAAA;AAGzD;;;AAGM,SAAUA,YAAY,CAQ1BC,SAAiB,EACjBC,cAAsB,EACtBC,OAAyD,EACzDC,eAAwF,EACxFC,cAEwD,EACxDC,UAGmF;EAEnF,OAAOC,oBAAW,WAAUC,CAAC;IAC3B,MAAMC,GAAG,GAAG,OAAOD,CAAC,yBAACE,kBAAQ,EAAQ;IACrC,MAAMC,CAAC,GAAG,OAAOH,CAAC,CAACC,GAAG,CAACG,gBAAgB,CAACX,SAAS,CAAC,CAAC;IACnD,MAAMY,MAAM,GAAG,OAAOL,CAAC,CAACC,GAAG,CAACG,gBAAgB,CAACV,cAAc,CAAC,CAAC;IAE7D,OAAO;MACLY,OAAO,EAAE,CAAC,GAAGC,QAAQ,KACnBR,oBAAW,WAAUC,CAAC;QACpB,MAAMQ,cAAc,GAAG,OAAOR,CAAC,8CAA2B;QAC1D,OAAO,OAAOA,CAAC,uCACbS,oCAAQ,EAAeC,CAAC,IAAGX;QACzB;QACAA,mDACEY,IAAI,CAACC,SAAS,CACZjB,OAAO,CAAC;UAAEkB,IAAI,EAAEH,CAAC;UAAEI,IAAI,EAAEN;QAAc,CAAE,CAAC,CAC3C;QAED;QAAA,EACSO,CAAC,IAAIZ,CAAC,CAACa,KAAK,CAACD,CAAC,CAAC,CAAC,CAClB,CACV,EAEF;MACH,CAAC,CAAC;MACJE,KAAK,EAAElB,oBAAW,WAAUC,CAAC;QAC3B,MAAMkB,WAAW,GAAG,OAAOlB,CAAC,CAACJ,eAAe,CAAC;QAC7C,MAAMuB,qBAAqB,GAAG,wCAA2B,EAAC;UAAEC,IAAI,EAAE,iBAAiB,GAAG1B;QAAc,CAAE,CAAC;QACvG,MAAM2B,cAAc,GAAIC,GAAW;QACjC;QACAvB,iGAAOY,IAAI,CAACY,KAAK,CAACD,GAAG,CAAC,CAAC,EACZxB,UAAU,CAAC,GAEX,CAAC;UAAEe,IAAI;UAAEC;QAAI,CAAE,KAQlBjB,cAAc,CACZ2B,8BAAc,CAACC,OAAO,CAACX,IAAI,EAAE;UAC3BY,EAAE,EAAEb,IAAI,CAACa,EAAE;UACXC,MAAM,EAAE,IAAa;UACrBP,IAAI,EAAEQ,gCAAgB,CAACf,IAAI,CAACgB,IAAI;SACjC,CAAC,CACH,CARIV,qBAAqB,CAL9BpB,6CAES+B,6BAAoB;UAAEjB,IAAI,uDAAEA,IAAI,EAAU;UAAEC,IAAI,uDAAEA,IAAI;QAAU,CAAE,CAAC,CAF5Ef,yBACY,OAAOL,cAAc,+BAA+B,CAAC,GAE1D,MAAMqC,iCAAyB,CAAC,EAC3Bb,WAAW,CAACL,IAAI,CAAC,CAAC,EAU3B,CACJ;QACL,OAAO,OAAOb,CAAC,oDAKJmB,qBAAqB,CAJ9BpB,8BAAM,CAACiC,IAAI,EAAE,EACFC,CAAC,IAAIlC,2FAAc,CAACkC,CAAC,CAAC,IAA8BlB,CAAC,IAAGmB,qBAACnB,CAAC,CAAK,CAAC;QACzE;QACA;QAAA,IAIH;MACH,CAAC;KAC+B;EACpC,CAAC,CAAC;AACJ","names":["makeMemQueue","queueName","queueDrainName","encoder","makeHandleEvent","provideContext","parseDrain","tsplus_module_1","$","mem","MemQueue","q","getOrCreateQueue","qDrain","publish","messages","requestContext","tsplus_module_3","m","JSON","stringify","body","meta","_","offer","drain","handleEvent","silenceAndReportError","name","processMessage","msg","parse","RequestContext","inherit","id","locale","tsplus_module_7","_tag","tsplus_module_6","restoreFromRequestContext","take","x","tsplus_module_8"],"sourceRoot":"","sources":["../../../_src/services/QueueMaker/memQueue.ts"],"sourcesContent":[null]}
@@ -10,10 +10,9 @@ var tsplus_module_2 = _interopRequireWildcard(require("@effect-app/core/Tag"));
10
10
  var tsplus_module_3 = _interopRequireWildcard(require("@effect-app/prelude/utils"));
11
11
  var tsplus_module_4 = _interopRequireWildcard(require("@effect-app/prelude/_ext/misc"));
12
12
  var tsplus_module_5 = _interopRequireWildcard(require("@effect-app/prelude/schema"));
13
- var tsplus_module_6 = _interopRequireWildcard(require("@effect-app/infra/api/setupRequest"));
14
- var tsplus_module_7 = _interopRequireWildcard(require("@effect-app/infra/RequestContext"));
15
- var tsplus_module_8 = _interopRequireWildcard(require("@effect-app/infra/services/QueueMaker/errors"));
16
- var tsplus_module_9 = _interopRequireWildcard(require("@effect/io/Layer"));
13
+ var tsplus_module_6 = _interopRequireWildcard(require("@effect-app/infra/RequestContext"));
14
+ var tsplus_module_7 = _interopRequireWildcard(require("@effect-app/infra/services/QueueMaker/errors"));
15
+ var tsplus_module_8 = _interopRequireWildcard(require("@effect/io/Layer"));
17
16
  var _ServiceBus = require("@effect-app/infra-adapters/ServiceBus");
18
17
  var _errorReporter = require("@effect-app/infra/errorReporter");
19
18
  var _Memory = require("../Store/Memory.cjs");
@@ -28,31 +27,39 @@ function makeServiceBusQueue(_queueName, queueDrainName, encoder, makeHandleEven
28
27
  const s = yield* $(tsplus_module_1.service(_ServiceBus.Sender));
29
28
  const receiver = yield* $(tsplus_module_1.service(_ServiceBus.Receiver));
30
29
  const receiverLayer = tsplus_module_2.makeLayer(_ServiceBus.Receiver, receiver);
30
+ const silenceAndReportError = (0, _errors2.reportNonInterruptedFailure)({
31
+ name: "ServiceBusQueue.drain." + queueDrainName
32
+ });
33
+ const reportError = (0, _errors2.reportNonInterruptedFailureCause)({
34
+ name: "ServiceBusQueue.drain." + queueDrainName
35
+ });
31
36
  return {
32
37
  drain: tsplus_module_1.gen(function* ($) {
33
38
  const handleEvent = yield* $(makeHandleEvent);
34
39
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
35
40
  function processMessage(messageBody) {
36
- return tsplus_module_1.asUnit(tsplus_module_1.orDie(tsplus_module_6.setupReq3(tsplus_module_1.flatMap(tsplus_module_1.tapErrorCause(tsplus_module_1.orDie(tsplus_module_1.flatMap(tsplus_module_1.sync(() => JSON.parse(messageBody)), x => parseDrain(x))), report), ({
41
+ return tsplus_module_1.tapErrorCause(tsplus_module_1.flatMap(tsplus_module_1.orDie(tsplus_module_1.flatMap(tsplus_module_1.sync(() => JSON.parse(messageBody)), x => parseDrain(x))), ({
37
42
  body,
38
43
  meta
39
- }) => provideContext(tsplus_module_7.RequestContext.inherit(meta, {
44
+ }) => provideContext(tsplus_module_6.RequestContext.inherit(meta, {
40
45
  id: body.id,
41
46
  locale: "en",
42
47
  name: tsplus_module_5.ReasonableString(body._tag)
43
- }))(tsplus_module_1.tapErrorCause(tsplus_module_1.zipRight(tsplus_module_1.tap(tsplus_module_4.logAnnotates({
48
+ }))(silenceAndReportError(tsplus_module_1.orDie(tsplus_module_1.zipRight(tsplus_module_1.tap(tsplus_module_4.logAnnotates({
44
49
  body: tsplus_module_3.RecordPretty(tsplus_module_3.object$(body)),
45
50
  meta: tsplus_module_3.RecordPretty(tsplus_module_3.object$(meta))
46
- })(tsplus_module_1.logDebug(`$$ [${queueDrainName}] Processing incoming message`)), () => _Memory.restoreFromRequestContext), handleEvent(body)), report))), "Queue.ReceiveMessage")));
51
+ })(tsplus_module_1.logDebug(`$$ [${queueDrainName}] Processing incoming message`)), () => _Memory.restoreFromRequestContext), handleEvent(body))))))
52
+ // we reportError here, so that we report the error only, and keep flowing
53
+ , reportError);
47
54
  }
48
55
  return yield* $(tsplus_module_1.provideSomeLayer((0, _ServiceBus.subscribe)({
49
- processMessage: x => tsplus_module_1.uninterruptible(processMessage(x.body)),
56
+ processMessage: x => tsplus_module_1.flatMap(tsplus_module_1.uninterruptible(processMessage(x.body)), _ => tsplus_module_1.done(_)),
50
57
  processError: err => tsplus_module_1.sync(() => (0, _errorReporter.captureException)(err.error))
51
58
  }), receiverLayer));
52
59
  }),
53
60
  publish: (...messages) => tsplus_module_1.gen(function* ($) {
54
- const requestContext = yield* $(tsplus_module_1.service(tsplus_module_7.tag));
55
- return yield* $(tsplus_module_8.forkDaemonReportQueue(tsplus_module_1.promise(() => s.sendMessages(messages.map(x => ({
61
+ const requestContext = yield* $(tsplus_module_1.service(tsplus_module_6.tag));
62
+ return yield* $(tsplus_module_7.forkDaemonReportQueue(tsplus_module_1.promise(() => s.sendMessages(messages.map(x => ({
56
63
  body: JSON.stringify(encoder({
57
64
  body: x,
58
65
  meta: requestContext
@@ -68,14 +75,6 @@ function makeServiceBusQueue(_queueName, queueDrainName, encoder, makeHandleEven
68
75
  * @tsplus static QueueMaker.Ops makeServiceBusLayers
69
76
  */
70
77
  function makeServiceBusLayers(url, queueName, queueDrainName) {
71
- return tsplus_module_9.provide(tsplus_module_9.merge((0, _ServiceBus.LiveSender)(queueName))((0, _ServiceBus.LiveReceiver)(queueDrainName)))((0, _ServiceBus.LiveServiceBusClient)(url));
72
- }
73
- function report(cause) {
74
- return tsplus_module_1.gen(function* ($) {
75
- const requestContext = yield* $(tsplus_module_1.service(tsplus_module_7.tag));
76
- return (0, _errors2.reportQueueError)(cause, {
77
- requestContext
78
- });
79
- });
78
+ return tsplus_module_8.provide(tsplus_module_8.merge((0, _ServiceBus.LiveSender)(queueName))((0, _ServiceBus.LiveReceiver)(queueDrainName)))((0, _ServiceBus.LiveServiceBusClient)(url));
80
79
  }
81
80
  //# sourceMappingURL=sbqueue.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"sbqueue.cjs","mappings":"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","names":["makeServiceBusQueue","_queueName","queueDrainName","encoder","makeHandleEvent","provideContext","parseDrain","tsplus_module_1","$","s","Sender","receiver","Receiver","receiverLayer","tsplus_module_2","drain","handleEvent","processMessage","messageBody","tsplus_module_6","JSON","parse","x","report","body","meta","RequestContext","inherit","id","locale","name","tsplus_module_5","_tag","tsplus_module_4","restoreFromRequestContext","processError","err","error","publish","messages","requestContext","sendMessages","map","stringify","messageId","contentType","makeServiceBusLayers","url","queueName","tsplus_module_9","cause"],"sourceRoot":"","sources":["../../../_src/services/QueueMaker/sbqueue.ts"],"sourcesContent":[null]}
1
+ {"version":3,"file":"sbqueue.cjs","mappings":"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","names":["makeServiceBusQueue","_queueName","queueDrainName","encoder","makeHandleEvent","provideContext","parseDrain","tsplus_module_1","$","s","Sender","receiver","Receiver","receiverLayer","tsplus_module_2","silenceAndReportError","name","reportError","drain","handleEvent","processMessage","messageBody","JSON","parse","x","body","meta","RequestContext","inherit","id","locale","tsplus_module_5","_tag","tsplus_module_4","restoreFromRequestContext","_","processError","err","error","publish","messages","requestContext","sendMessages","map","stringify","messageId","contentType","makeServiceBusLayers","url","queueName","tsplus_module_8"],"sourceRoot":"","sources":["../../../_src/services/QueueMaker/sbqueue.ts"],"sourcesContent":[null]}
@@ -17,9 +17,8 @@ export class FatalQueueException<E> extends CauseException<E> {
17
17
  const reportQueueError_ = reportError(cause => new MessageException(cause))
18
18
 
19
19
  export const reportQueueError = <E>(cause: Cause<E>, context?: Record<string, unknown> | undefined) =>
20
- RequestContext.Tag.accessWithEffect(requestContext =>
21
- Effect(reportQueueError_(cause, { requestContext, ...context }))
22
- )
20
+ Effect.contextWith((_: Context<never>) => Context.getOption(_, RequestContext.Tag))
21
+ .flatMap(requestContext => reportQueueError_(cause, { requestContext: requestContext.value, ...context }))
23
22
 
24
23
  /**
25
24
  * Forks the effect into a new fiber attached to the global scope. Because the
@@ -31,18 +30,30 @@ export const reportQueueError = <E>(cause: Cause<E>, context?: Record<string, un
31
30
  * @tsplus getter effect/io/Effect forkDaemonReportQueue
32
31
  */
33
32
  export function forkDaemonReportQueue<R, E, A>(self: Effect<R, E, A>) {
34
- return self.tapErrorCause(reportQueueError).fork.daemonChildren
33
+ return self.tapErrorCause(reportNonInterruptedFailureCause({})).fork.daemonChildren
35
34
  }
36
35
 
37
36
  export const reportFatalQueueError = reportError(
38
37
  cause => new FatalQueueException(cause)
39
38
  )
40
39
 
41
- export function reportFailure(name: string) {
42
- return <R, E, A>(self: Effect<R, E, A>) =>
43
- self.exit.tap(exit =>
44
- exit._tag === "Failure"
45
- ? reportFatalQueueError(exit.cause, { name })
46
- : Effect.unit
47
- )
40
+ export function reportNonInterruptedFailure(context?: Record<string, unknown>) {
41
+ const report = reportNonInterruptedFailureCause(context)
42
+ return <R, E, A>(inp: Effect<R, E, A>): Effect<R, never, Exit<E, A>> =>
43
+ inp.exit
44
+ .flatMap(result =>
45
+ result.match(
46
+ cause => report(cause).map(() => result),
47
+ () => Effect(result)
48
+ )
49
+ )
50
+ }
51
+
52
+ export function reportNonInterruptedFailureCause(context?: Record<string, unknown>) {
53
+ return <E>(cause: Cause<E>): Effect<never, never, void> => {
54
+ if (cause.isInterrupted()) {
55
+ return (cause as Cause<never>).failCause
56
+ }
57
+ return reportQueueError(cause, context)
58
+ }
48
59
  }
@@ -2,20 +2,27 @@ import { MemQueue } from "@effect-app/infra-adapters/memQueue"
2
2
  import { RequestContext } from "@effect-app/infra/RequestContext"
3
3
  import type { CustomSchemaException } from "@effect-app/prelude/schema"
4
4
  import { restoreFromRequestContext } from "../Store/Memory.js"
5
- import { reportFailure, reportQueueError } from "./errors.js"
5
+ import { reportNonInterruptedFailure } from "./errors.js"
6
6
  import type { QueueBase } from "./service.js"
7
7
 
8
8
  /**
9
9
  * @tsplus static QueueMaker.Ops makeMem
10
10
  */
11
- export function makeMemQueue<DrainR, Evt, DrainEvt extends { id: StringId; _tag: string }, RContext, EvtE, DrainE>(
11
+ export function makeMemQueue<
12
+ DrainR,
13
+ Evt,
14
+ DrainEvt extends { id: StringId; _tag: string },
15
+ RContext,
16
+ EvtE,
17
+ DrainE
18
+ >(
12
19
  queueName: string,
13
20
  queueDrainName: string,
14
21
  encoder: (e: { body: Evt; meta: RequestContext }) => EvtE,
15
22
  makeHandleEvent: Effect<DrainR, never, (ks: DrainEvt) => Effect<RContext, DrainE, void>>,
16
23
  provideContext: (context: RequestContext) => <R, E, A>(
17
24
  eff: Effect<RContext | R, E, A>
18
- ) => Effect<Exclude<R, RContext>, E, A>,
25
+ ) => Effect<Exclude<R, RContext | RequestContext>, E, A>,
19
26
  parseDrain: (
20
27
  a: unknown,
21
28
  env?: Parser.ParserEnv | undefined
@@ -24,7 +31,7 @@ export function makeMemQueue<DrainR, Evt, DrainEvt extends { id: StringId; _tag:
24
31
  return Effect.gen(function*($) {
25
32
  const mem = yield* $(MemQueue.access)
26
33
  const q = yield* $(mem.getOrCreateQueue(queueName))
27
- const qReply = yield* $(mem.getOrCreateQueue(queueDrainName))
34
+ const qDrain = yield* $(mem.getOrCreateQueue(queueDrainName))
28
35
 
29
36
  return {
30
37
  publish: (...messages) =>
@@ -47,6 +54,7 @@ export function makeMemQueue<DrainR, Evt, DrainEvt extends { id: StringId; _tag:
47
54
  }),
48
55
  drain: Effect.gen(function*($) {
49
56
  const handleEvent = yield* $(makeHandleEvent)
57
+ const silenceAndReportError = reportNonInterruptedFailure({ name: "MemQueue.drain." + queueDrainName })
50
58
  const processMessage = (msg: string) =>
51
59
  // we JSON parse, because that is what the wire also does, and it reveals holes in e.g unknown encoders (Date->String)
52
60
  Effect(JSON.parse(msg))
@@ -57,7 +65,8 @@ export function makeMemQueue<DrainR, Evt, DrainEvt extends { id: StringId; _tag:
57
65
  .logDebug(`$$ [${queueDrainName}] Processing incoming message`)
58
66
  .apply(Effect.logAnnotates({ body: body.$$.pretty, meta: meta.$$.pretty }))
59
67
  .tap(() => restoreFromRequestContext)
60
- .zipRight(silence(handleEvent(body)))
68
+ .zipRight(handleEvent(body))
69
+ .apply(silenceAndReportError)
61
70
  .apply(
62
71
  provideContext(
63
72
  RequestContext.inherit(meta, {
@@ -69,11 +78,11 @@ export function makeMemQueue<DrainR, Evt, DrainEvt extends { id: StringId; _tag:
69
78
  )
70
79
  )
71
80
  return yield* $(
72
- qReply.take()
81
+ qDrain.take()
73
82
  .flatMap(x => processMessage(x).uninterruptible.fork.flatMap(_ => _.join))
74
- .apply(reportFailure("drain"))
75
- // runs before `forever` or we have an open, increasing span forever
76
- .setupRequestFromWith("Queue.ReceiveMessage")
83
+ // TODO: normally a failed item would be returned to the queue and retried up to X times.
84
+ // .flatMap(_ => _._tag === "Failure" && !isInterrupted ? qDrain.offer(x) : Effect.unit) // TODO: retry count tracking and max retries.
85
+ .apply(silenceAndReportError)
77
86
  .forever
78
87
  .forkScoped
79
88
  )
@@ -81,25 +90,3 @@ export function makeMemQueue<DrainR, Evt, DrainEvt extends { id: StringId; _tag:
81
90
  } satisfies QueueBase<DrainR, Evt>
82
91
  })
83
92
  }
84
-
85
- // We want the Queue to continue processing even on errors per messages
86
- // must make sure that the errors are processed/handled beforehand.
87
- export function silence<R, E, A>(inp: Effect<R, E, A>) {
88
- return inp.exit.flatMap(result =>
89
- Effect.gen(function*($) {
90
- const requestContext = yield* $(RequestContext.Tag.access)
91
- return yield* $(
92
- result.match(
93
- cause => {
94
- if (cause.isInterrupted()) {
95
- return (cause as Cause<never>).failCause
96
- }
97
- reportQueueError(cause, { requestContext })
98
- return Effect.unit
99
- },
100
- () => Effect.unit
101
- )
102
- )
103
- })
104
- )
105
- }
@@ -11,7 +11,7 @@ import { captureException } from "@effect-app/infra/errorReporter"
11
11
  import { RequestContext } from "@effect-app/infra/RequestContext"
12
12
  import type { CustomSchemaException } from "@effect-app/prelude/schema"
13
13
  import { restoreFromRequestContext } from "../Store/Memory.js"
14
- import { reportQueueError } from "./errors.js"
14
+ import { reportNonInterruptedFailure, reportNonInterruptedFailureCause } from "./errors.js"
15
15
  import type { QueueBase } from "./service.js"
16
16
 
17
17
  /**
@@ -31,7 +31,7 @@ export function makeServiceBusQueue<
31
31
  makeHandleEvent: Effect<DrainR, never, (ks: DrainEvt) => Effect<RContext, DrainE, void>>,
32
32
  provideContext: (context: RequestContext) => <R, E, A>(
33
33
  eff: Effect<RContext | R, E, A>
34
- ) => Effect<Exclude<R, RContext>, E, A>,
34
+ ) => Effect<Exclude<R, RContext | RequestContext>, E, A>,
35
35
  parseDrain: (
36
36
  a: unknown,
37
37
  env?: Parser.ParserEnv | undefined
@@ -41,6 +41,8 @@ export function makeServiceBusQueue<
41
41
  const s = yield* $(Sender.access)
42
42
  const receiver = yield* $(Receiver.access)
43
43
  const receiverLayer = Receiver.makeLayer(receiver)
44
+ const silenceAndReportError = reportNonInterruptedFailure({ name: "ServiceBusQueue.drain." + queueDrainName })
45
+ const reportError = reportNonInterruptedFailureCause({ name: "ServiceBusQueue.drain." + queueDrainName })
44
46
 
45
47
  return {
46
48
  drain: Effect.gen(function*($) {
@@ -48,34 +50,34 @@ export function makeServiceBusQueue<
48
50
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
49
51
  function processMessage(messageBody: any) {
50
52
  return Effect.sync(() => JSON.parse(messageBody))
51
- .flatMap(x => parseDrain(x))
52
- .orDie
53
- .tapErrorCause(report)
54
- .flatMap(({ body, meta }) =>
55
- Effect
56
- .logDebug(`$$ [${queueDrainName}] Processing incoming message`)
57
- .apply(Effect.logAnnotates({ body: body.$$.pretty, meta: meta.$$.pretty }))
58
- .tap(() => restoreFromRequestContext)
59
- .zipRight(handleEvent(body))
60
- .tapErrorCause(report)
61
- .apply(
62
- provideContext(
63
- RequestContext.inherit(meta, {
64
- id: body.id,
65
- locale: "en" as const,
66
- name: ReasonableString(body._tag)
67
- })
68
- )
53
+ .flatMap(x => parseDrain(x))
54
+ .orDie
55
+ .flatMap(({ body, meta }) =>
56
+ Effect
57
+ .logDebug(`$$ [${queueDrainName}] Processing incoming message`)
58
+ .apply(Effect.logAnnotates({ body: body.$$.pretty, meta: meta.$$.pretty }))
59
+ .tap(() => restoreFromRequestContext)
60
+ .zipRight(handleEvent(body))
61
+ .orDie
62
+ // we silenceAndReportError here, so that the error is reported, and moves into the Exit.
63
+ .apply(silenceAndReportError)
64
+ .apply(
65
+ provideContext(
66
+ RequestContext.inherit(meta, {
67
+ id: body.id,
68
+ locale: "en" as const,
69
+ name: ReasonableString(body._tag)
70
+ })
71
+ )
72
+ )
69
73
  )
70
- )
71
- .setupRequestFromWith("Queue.ReceiveMessage")
72
- .orDie
73
- .asUnit
74
+ // we reportError here, so that we report the error only, and keep flowing
75
+ .tapErrorCause(reportError)
74
76
  }
75
77
 
76
78
  return yield* $(
77
79
  subscribe({
78
- processMessage: x => processMessage(x.body).uninterruptible,
80
+ processMessage: x => processMessage(x.body).uninterruptible.flatMap(_ => _.done),
79
81
  processError: err => Effect(captureException(err.error))
80
82
  })
81
83
  .provideSomeLayer(receiverLayer)
@@ -111,10 +113,3 @@ export function makeServiceBusLayers(url: string, queueName: string, queueDrainN
111
113
  return LiveServiceBusClient(url)
112
114
  >> (LiveReceiver(queueDrainName) + LiveSender(queueName))
113
115
  }
114
-
115
- function report<E>(cause: Cause<E>) {
116
- return Effect.gen(function*($) {
117
- const requestContext = yield* $(RequestContext.Tag.access)
118
- return reportQueueError(cause, { requestContext })
119
- })
120
- }
@@ -1,14 +1,15 @@
1
1
  import { Cause } from "@effect/io/Cause";
2
+ import { Context } from "@effect/data/Context";
2
3
  import { Effect } from "@effect/io/Effect";
4
+ import { Exit } from "@effect/io/Exit";
3
5
  import { CauseException } from "@effect-app/infra/errors";
4
- import { RequestContext } from "@effect-app/infra/RequestContext";
5
6
  export declare class MessageException<E> extends CauseException<E> {
6
7
  constructor(cause: Cause<E>);
7
8
  }
8
9
  export declare class FatalQueueException<E> extends CauseException<E> {
9
10
  constructor(cause: Cause<E>);
10
11
  }
11
- export declare const reportQueueError: <E>(cause: import("@effect/io/Cause").Cause<E>, context?: Record<string, unknown> | undefined) => import("@effect/io/Effect").Effect<RequestContext, never, import("@effect/io/Effect").Effect<never, never, void>>;
12
+ export declare const reportQueueError: <E>(cause: import("@effect/io/Cause").Cause<E>, context?: Record<string, unknown> | undefined) => import("@effect/io/Effect").Effect<never, never, void>;
12
13
  /**
13
14
  * Forks the effect into a new fiber attached to the global scope. Because the
14
15
  * new fiber is attached to the global scope, when the fiber executing the
@@ -18,7 +19,8 @@ export declare const reportQueueError: <E>(cause: import("@effect/io/Cause").Cau
18
19
  * @tsplus getter effect/io/Effect forkDaemonReportQueue
19
20
  * @tsplus location "@effect-app/infra/services/QueueMaker/errors"
20
21
  */
21
- export declare function forkDaemonReportQueue<R, E, A>(self: Effect<R, E, A>): import("@effect/io/Effect").Effect<RequestContext | R, never, import("@effect/io/Fiber").RuntimeFiber<E, A>>;
22
+ export declare function forkDaemonReportQueue<R, E, A>(self: Effect<R, E, A>): import("@effect/io/Effect").Effect<R, never, import("@effect/io/Fiber").RuntimeFiber<E, A>>;
22
23
  export declare const reportFatalQueueError: (cause: import("@effect/io/Cause").Cause<unknown>, context?: Record<string, unknown> | undefined) => import("@effect/io/Effect").Effect<never, never, void>;
23
- export declare function reportFailure(name: string): <R, E, A>(self: import("@effect/io/Effect").Effect<R, E, A>) => import("@effect/io/Effect").Effect<R, never, import("@effect/io/Exit").Exit<E, A>>;
24
+ export declare function reportNonInterruptedFailure(context?: Record<string, unknown>): <R, E, A>(inp: import("@effect/io/Effect").Effect<R, E, A>) => import("@effect/io/Effect").Effect<R, never, import("@effect/io/Exit").Exit<E, A>>;
25
+ export declare function reportNonInterruptedFailureCause(context?: Record<string, unknown>): <E>(cause: import("@effect/io/Cause").Cause<E>) => Effect<never, never, void>;
24
26
  //# sourceMappingURL=errors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../_src/services/QueueMaker/errors.ts"],"names":[],"mappings":";;AACA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA;AAEjE,qBAAa,gBAAgB,CAAC,CAAC,CAAE,SAAQ,cAAc,CAAC,CAAC,CAAC;gBAC5C,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;CAG5B;AAED,qBAAa,mBAAmB,CAAC,CAAC,CAAE,SAAQ,cAAc,CAAC,CAAC,CAAC;gBAC/C,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;CAG5B;AAID,eAAO,MAAM,gBAAgB,4DAAkC,OAAO,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,sHAG/F,CAAA;;;;;;;;;;AAWH,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,gHAEnE;AAED,eAAO,MAAM,qBAAqB,6JAEjC,CAAA;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,sJAOzC"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../_src/services/QueueMaker/errors.ts"],"names":[],"mappings":";;;;AACA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAGzD,qBAAa,gBAAgB,CAAC,CAAC,CAAE,SAAQ,cAAc,CAAC,CAAC,CAAC;gBAC5C,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;CAG5B;AAED,qBAAa,mBAAmB,CAAC,CAAC,CAAE,SAAQ,cAAc,CAAC,CAAC,CAAC;gBAC/C,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;CAG5B;AAID,eAAO,MAAM,gBAAgB,4DAAkC,OAAO,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,2DAEY,CAAA;;;;;;;;;;AAW9G,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,+FAEnE;AAED,eAAO,MAAM,qBAAqB,6JAEjC,CAAA;AAED,wBAAgB,2BAA2B,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,qJAU5E;AAED,wBAAgB,gCAAgC,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,sDACnD,OAAO,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAMxD"}
@@ -1,6 +1,9 @@
1
- import * as tsplus_module_1 from "@effect/io/Effect";
1
+ import * as tsplus_module_1 from "@effect-app/core/Option";
2
2
  import * as tsplus_module_2 from "@effect-app/infra/RequestContext";
3
- import * as tsplus_module_3 from "@effect-app/core/Effect";
3
+ import * as tsplus_module_3 from "@effect/data/Context";
4
+ import * as tsplus_module_4 from "@effect/io/Effect";
5
+ import * as tsplus_module_5 from "@effect/io/Exit";
6
+ import * as tsplus_module_6 from "@effect/io/Cause";
4
7
  import { reportError } from "@effect-app/infra/errorReporter";
5
8
  import { CauseException } from "@effect-app/infra/errors";
6
9
  import "@effect-app/infra/RequestContext";
@@ -15,7 +18,7 @@ export class FatalQueueException extends CauseException {
15
18
  }
16
19
  }
17
20
  const reportQueueError_ = reportError(cause => new MessageException(cause));
18
- export const reportQueueError = (cause, context) => tsplus_module_1.serviceWithEffect(tsplus_module_2.tag, requestContext => tsplus_module_1.sync(() => reportQueueError_(cause, { requestContext, ...context })));
21
+ export const reportQueueError = (cause, context) => tsplus_module_4.flatMap(tsplus_module_4.contextWith((_) => tsplus_module_3.getOption(_, tsplus_module_2.tag)), requestContext => reportQueueError_(cause, { requestContext: tsplus_module_1.getOrUndefined(requestContext), ...context }));
19
22
  /**
20
23
  * Forks the effect into a new fiber attached to the global scope. Because the
21
24
  * new fiber is attached to the global scope, when the fiber executing the
@@ -26,12 +29,19 @@ export const reportQueueError = (cause, context) => tsplus_module_1.serviceWithE
26
29
  * @tsplus getter effect/io/Effect forkDaemonReportQueue
27
30
  */
28
31
  export function forkDaemonReportQueue(self) {
29
- return tsplus_module_1.daemonChildren(tsplus_module_1.fork(tsplus_module_1.tapErrorCause(self, reportQueueError)));
32
+ return tsplus_module_4.daemonChildren(tsplus_module_4.fork(tsplus_module_4.tapErrorCause(self, reportNonInterruptedFailureCause({}))));
30
33
  }
31
34
  export const reportFatalQueueError = reportError(cause => new FatalQueueException(cause));
32
- export function reportFailure(name) {
33
- return (self) => tsplus_module_1.tap(tsplus_module_1.exit(self), exit => exit._tag === "Failure"
34
- ? reportFatalQueueError(exit.cause, { name })
35
- : tsplus_module_3.unit);
35
+ export function reportNonInterruptedFailure(context) {
36
+ const report = reportNonInterruptedFailureCause(context);
37
+ return (inp) => tsplus_module_4.flatMap(tsplus_module_4.exit(inp), result => tsplus_module_5.match(result, cause => tsplus_module_4.map(report(cause), () => result), () => tsplus_module_4.sync(() => result)));
36
38
  }
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vX3NyYy9zZXJ2aWNlcy9RdWV1ZU1ha2VyL2Vycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUE7QUFDN0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBQ3pELE9BQStCLGtDQUFrQyxDQUFBO0FBRWpFLE1BQU0sT0FBTyxnQkFBb0IsU0FBUSxjQUFpQjtJQUN4RCxZQUFZLEtBQWU7UUFDekIsS0FBSyxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQTtJQUN6QixDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sbUJBQXVCLFNBQVEsY0FBaUI7SUFDM0QsWUFBWSxLQUFlO1FBQ3pCLEtBQUssQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUE7SUFDekIsQ0FBQztDQUNGO0FBRUQsTUFBTSxpQkFBaUIsR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7QUFFM0UsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBSSxLQUFlLEVBQUUsT0FBNkMsRUFBRSxFQUFFLENBQ3BHLHVEQUFvQyxjQUFjLENBQUMsRUFBRSxDQUNuRCwyQkFBTyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsRUFBRSxjQUFjLEVBQUUsR0FBRyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQ2pFLENBQUE7QUFFSDs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sVUFBVSxxQkFBcUIsQ0FBVSxJQUFxQjtJQUNsRSwyREFBTyw4QkFBQSxJQUFJLEVBQWUsZ0JBQWdCLENBQUMsR0FBb0I7QUFDakUsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLFdBQVcsQ0FDOUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUN4QyxDQUFBO0FBRUQsTUFBTSxVQUFVLGFBQWEsQ0FBQyxJQUFZO0lBQ3hDLE9BQU8sQ0FBVSxJQUFxQixFQUFFLEVBQUUsQ0FDeEMseUNBQUEsSUFBSSxHQUFVLElBQUksQ0FBQyxFQUFFLENBQ25CLElBQUksQ0FBQyxJQUFJLEtBQUssU0FBUztRQUNyQixDQUFDLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDO1FBQzdDLENBQUMscUJBQVksQ0FDaEIsQ0FBQTtBQUNMLENBQUMifQ==
39
+ export function reportNonInterruptedFailureCause(context) {
40
+ return (cause) => {
41
+ if (tsplus_module_6.isInterrupted(cause)) {
42
+ return tsplus_module_4.failCause(cause);
43
+ }
44
+ return reportQueueError(cause, context);
45
+ };
46
+ }
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vX3NyYy9zZXJ2aWNlcy9RdWV1ZU1ha2VyL2Vycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUE7QUFDN0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBQ3pELE9BQStCLGtDQUFrQyxDQUFBO0FBRWpFLE1BQU0sT0FBTyxnQkFBb0IsU0FBUSxjQUFpQjtJQUN4RCxZQUFZLEtBQWU7UUFDekIsS0FBSyxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQTtJQUN6QixDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sbUJBQXVCLFNBQVEsY0FBaUI7SUFDM0QsWUFBWSxLQUFlO1FBQ3pCLEtBQUssQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUE7SUFDekIsQ0FBQztDQUNGO0FBRUQsTUFBTSxpQkFBaUIsR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7QUFFM0UsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBSSxLQUFlLEVBQUUsT0FBNkMsRUFBRSxFQUFFLENBQ3BHLHdCQUFBLDRCQUFtQixDQUFDLENBQWlCLEVBQUUsRUFBRSxDQUFDLDBCQUFrQixDQUFDLHNCQUFxQixDQUFDLEVBQ3hFLGNBQWMsQ0FBQyxFQUFFLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLEVBQUUsY0FBYyxpQ0FBRSxjQUFjLENBQU0sRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQTtBQUU5Rzs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sVUFBVSxxQkFBcUIsQ0FBVSxJQUFxQjtJQUNsRSwyREFBTyw4QkFBQSxJQUFJLEVBQWUsZ0NBQWdDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBb0I7QUFDckYsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLFdBQVcsQ0FDOUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUN4QyxDQUFBO0FBRUQsTUFBTSxVQUFVLDJCQUEyQixDQUFDLE9BQWlDO0lBQzNFLE1BQU0sTUFBTSxHQUFHLGdDQUFnQyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ3hELE9BQU8sQ0FBVSxHQUFvQixFQUFnQyxFQUFFLENBQ3JFLDZDQUFBLEdBQUcsR0FDUSxNQUFNLENBQUMsRUFBRSxDQUNoQixzQkFBQSxNQUFNLEVBQ0osS0FBSyxDQUFDLEVBQUUsQ0FBQyxvQkFBQSxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUssR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQ3hDLEdBQUcsRUFBRSxDQUFDLDJCQUFPLE1BQU0sQ0FBQyxDQUNyQixDQUNGLENBQUE7QUFDUCxDQUFDO0FBRUQsTUFBTSxVQUFVLGdDQUFnQyxDQUFDLE9BQWlDO0lBQ2hGLE9BQU8sQ0FBSSxLQUFlLEVBQThCLEVBQUU7UUFDeEQsSUFBSSw4QkFBQSxLQUFLLENBQWdCLEVBQUU7WUFDekIsaUNBQVEsS0FBc0IsRUFBVTtTQUN6QztRQUNELE9BQU8sZ0JBQWdCLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQ3pDLENBQUMsQ0FBQTtBQUNILENBQUMifQ==
@@ -1,6 +1,5 @@
1
1
  import { StringId, Parser } from "@effect-app/prelude/schema";
2
2
  import { Effect } from "@effect/io/Effect";
3
- import { Cause } from "@effect/io/Cause";
4
3
  import { MemQueue } from "@effect-app/infra-adapters/memQueue";
5
4
  import { RequestContext } from "@effect-app/infra/RequestContext";
6
5
  import type { CustomSchemaException } from "@effect-app/prelude/schema";
@@ -14,12 +13,11 @@ export declare function makeMemQueue<DrainR, Evt, DrainEvt extends {
14
13
  }, RContext, EvtE, DrainE>(queueName: string, queueDrainName: string, encoder: (e: {
15
14
  body: Evt;
16
15
  meta: RequestContext;
17
- }) => EvtE, makeHandleEvent: Effect<DrainR, never, (ks: DrainEvt) => Effect<RContext, DrainE, void>>, provideContext: (context: RequestContext) => <R, E, A>(eff: Effect<RContext | R, E, A>) => Effect<Exclude<R, RContext>, E, A>, parseDrain: (a: unknown, env?: Parser.ParserEnv | undefined) => Effect<never, CustomSchemaException, {
16
+ }) => EvtE, makeHandleEvent: Effect<DrainR, never, (ks: DrainEvt) => Effect<RContext, DrainE, void>>, provideContext: (context: RequestContext) => <R, E, A>(eff: Effect<RContext | R, E, A>) => Effect<Exclude<R, RContext | RequestContext>, E, A>, parseDrain: (a: unknown, env?: Parser.ParserEnv | undefined) => Effect<never, CustomSchemaException, {
18
17
  body: DrainEvt;
19
18
  meta: RequestContext;
20
19
  }>): import("@effect/io/Effect").Effect<MemQueue, never, {
21
20
  publish: (messages_0: Evt, ...messages_1: Evt[]) => import("@effect/io/Effect").Effect<RequestContext, never, import("@effect/io/Fiber").RuntimeFiber<never, import("@effect/data/Chunk").Chunk<void>>>;
22
21
  drain: import("@effect/io/Effect").Effect<import("@effect/io/Scope").Scope | DrainR, never, import("@effect/io/Fiber").RuntimeFiber<never, never>>;
23
22
  }>;
24
- export declare function silence<R, E, A>(inp: Effect<R, E, A>): import("@effect/io/Effect").Effect<RequestContext | R, never, void>;
25
23
  //# sourceMappingURL=memQueue.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"memQueue.d.ts","sourceRoot":"","sources":["../../../_src/services/QueueMaker/memQueue.ts"],"names":[],"mappings":";;;AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAA;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA;AACjE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;;;;;AAQvE,wBAAgB,YAAY,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,SAAS;IAAE,EAAE,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAC/G,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,CAAC,CAAC,EAAE;IAAE,IAAI,EAAE,GAAG,CAAC;IAAC,IAAI,EAAE,cAAc,CAAA;CAAE,KAAK,IAAI,EACzD,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,EACxF,cAAc,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EACnD,GAAG,EAAE,MAAM,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAC5B,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACvC,UAAU,EAAE,CACV,CAAC,EAAE,OAAO,EACV,GAAG,CAAC,EAAE,MAAM,CAAC,SAAS,GAAG,SAAS,KAC/B,MAAM,CAAC,KAAK,EAAE,qBAAqB,EAAE;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,cAAc,CAAA;CAAE,CAAC;;;GA6DpF;AAID,wBAAgB,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,uEAkBpD"}
1
+ {"version":3,"file":"memQueue.d.ts","sourceRoot":"","sources":["../../../_src/services/QueueMaker/memQueue.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAA;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA;AACjE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;;;;;AAQvE,wBAAgB,YAAY,CAC1B,MAAM,EACN,GAAG,EACH,QAAQ,SAAS;IAAE,EAAE,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAC/C,QAAQ,EACR,IAAI,EACJ,MAAM,EAEN,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,CAAC,CAAC,EAAE;IAAE,IAAI,EAAE,GAAG,CAAC;IAAC,IAAI,EAAE,cAAc,CAAA;CAAE,KAAK,IAAI,EACzD,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,EACxF,cAAc,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EACnD,GAAG,EAAE,MAAM,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAC5B,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,QAAQ,GAAG,cAAc,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACxD,UAAU,EAAE,CACV,CAAC,EAAE,OAAO,EACV,GAAG,CAAC,EAAE,MAAM,CAAC,SAAS,GAAG,SAAS,KAC/B,MAAM,CAAC,KAAK,EAAE,qBAAqB,EAAE;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,cAAc,CAAA;CAAE,CAAC;;;GA+DpF"}
@@ -6,14 +6,10 @@ import * as tsplus_module_5 from "@effect-app/prelude/utils";
6
6
  import * as tsplus_module_6 from "@effect-app/prelude/_ext/misc";
7
7
  import * as tsplus_module_7 from "@effect-app/prelude/schema";
8
8
  import * as tsplus_module_8 from "@effect/io/Fiber";
9
- import * as tsplus_module_9 from "@effect-app/infra/api/setupRequest";
10
- import * as tsplus_module_10 from "@effect/io/Cause";
11
- import * as tsplus_module_11 from "@effect-app/core/Effect";
12
- import * as tsplus_module_12 from "@effect/io/Exit";
13
9
  import { MemQueue } from "@effect-app/infra-adapters/memQueue";
14
10
  import { RequestContext } from "@effect-app/infra/RequestContext";
15
11
  import { restoreFromRequestContext } from "../Store/Memory.js";
16
- import { reportFailure, reportQueueError } from "./errors.js";
12
+ import { reportNonInterruptedFailure } from "./errors.js";
17
13
  /**
18
14
  * @tsplus static QueueMaker.Ops makeMem
19
15
  */
@@ -21,7 +17,7 @@ export function makeMemQueue(queueName, queueDrainName, encoder, makeHandleEvent
21
17
  return tsplus_module_1.gen(function* ($) {
22
18
  const mem = yield* $(tsplus_module_1.service(MemQueue));
23
19
  const q = yield* $(mem.getOrCreateQueue(queueName));
24
- const qReply = yield* $(mem.getOrCreateQueue(queueDrainName));
20
+ const qDrain = yield* $(mem.getOrCreateQueue(queueDrainName));
25
21
  return {
26
22
  publish: (...messages) => tsplus_module_1.gen(function* ($) {
27
23
  const requestContext = yield* $(tsplus_module_1.service(tsplus_module_2.tag));
@@ -33,30 +29,20 @@ export function makeMemQueue(queueName, queueDrainName, encoder, makeHandleEvent
33
29
  }),
34
30
  drain: tsplus_module_1.gen(function* ($) {
35
31
  const handleEvent = yield* $(makeHandleEvent);
32
+ const silenceAndReportError = reportNonInterruptedFailure({ name: "MemQueue.drain." + queueDrainName });
36
33
  const processMessage = (msg) =>
37
34
  // we JSON parse, because that is what the wire also does, and it reveals holes in e.g unknown encoders (Date->String)
38
35
  tsplus_module_1.flatMap(tsplus_module_1.orDie(tsplus_module_1.flatMap(tsplus_module_1.sync(() => JSON.parse(msg)), parseDrain)), ({ body, meta }) => provideContext(RequestContext.inherit(meta, {
39
36
  id: body.id,
40
37
  locale: "en",
41
38
  name: tsplus_module_7.ReasonableString(body._tag)
42
- }))(tsplus_module_1.zipRight(tsplus_module_1.tap(tsplus_module_6.logAnnotates({ body: tsplus_module_5.RecordPretty(tsplus_module_5.object$(body)), meta: tsplus_module_5.RecordPretty(tsplus_module_5.object$(meta)) })(tsplus_module_1.logDebug(`$$ [${queueDrainName}] Processing incoming message`)), () => restoreFromRequestContext), silence(handleEvent(body)))));
43
- return yield* $(tsplus_module_1.forkScoped(tsplus_module_1.forever(tsplus_module_9.setupReq3(reportFailure("drain")(tsplus_module_1.flatMap(qReply.take(), x => tsplus_module_1.flatMap(tsplus_module_1.fork(tsplus_module_1.uninterruptible(processMessage(x))), _ => tsplus_module_8.join(_)))), "Queue.ReceiveMessage"))));
39
+ }))(silenceAndReportError(tsplus_module_1.zipRight(tsplus_module_1.tap(tsplus_module_6.logAnnotates({ body: tsplus_module_5.RecordPretty(tsplus_module_5.object$(body)), meta: tsplus_module_5.RecordPretty(tsplus_module_5.object$(meta)) })(tsplus_module_1.logDebug(`$$ [${queueDrainName}] Processing incoming message`)), () => restoreFromRequestContext), handleEvent(body)))));
40
+ return yield* $(tsplus_module_1.forkScoped(tsplus_module_1.forever(silenceAndReportError(tsplus_module_1.flatMap(qDrain.take(), x => tsplus_module_1.flatMap(tsplus_module_1.fork(tsplus_module_1.uninterruptible(processMessage(x))), _ => tsplus_module_8.join(_)))
41
+ // TODO: normally a failed item would be returned to the queue and retried up to X times.
42
+ // .flatMap(_ => _._tag === "Failure" && !isInterrupted ? qDrain.offer(x) : Effect.unit) // TODO: retry count tracking and max retries.
43
+ ))));
44
44
  })
45
45
  };
46
46
  });
47
47
  }
48
- // We want the Queue to continue processing even on errors per messages
49
- // must make sure that the errors are processed/handled beforehand.
50
- export function silence(inp) {
51
- return tsplus_module_1.flatMap(tsplus_module_1.exit(inp), result => tsplus_module_1.gen(function* ($) {
52
- const requestContext = yield* $(tsplus_module_1.service(tsplus_module_2.tag));
53
- return yield* $(tsplus_module_12.match(result, cause => {
54
- if (tsplus_module_10.isInterrupted(cause)) {
55
- return tsplus_module_1.failCause(cause);
56
- }
57
- reportQueueError(cause, { requestContext });
58
- return tsplus_module_11.unit;
59
- }, () => tsplus_module_11.unit));
60
- }));
61
- }
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtUXVldWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9fc3JjL3NlcnZpY2VzL1F1ZXVlTWFrZXIvbWVtUXVldWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHFDQUFxQyxDQUFBO0FBQzlELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQTtBQUVqRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUM5RCxPQUFPLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sYUFBYSxDQUFBO0FBRzdEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLFlBQVksQ0FDMUIsU0FBaUIsRUFDakIsY0FBc0IsRUFDdEIsT0FBeUQsRUFDekQsZUFBd0YsRUFDeEYsY0FFdUMsRUFDdkMsVUFHbUY7SUFFbkYsT0FBTyxvQkFBVyxRQUFRLENBQUMsRUFBQyxDQUFDO1FBQzNCLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMseUJBQUMsUUFBUSxFQUFRLENBQUE7UUFDckMsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFBO1FBQ25ELE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQTtRQUU3RCxPQUFPO1lBQ0wsT0FBTyxFQUFFLENBQUMsR0FBRyxRQUFRLEVBQUUsRUFBRSxDQUN2QixvQkFBVyxRQUFRLENBQUMsRUFBQyxDQUFDO2dCQUNwQixNQUFNLGNBQWMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLDhDQUEyQixDQUFBO2dCQUMxRCxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsdUNBQ2IsNEJBQUEsUUFBUSxFQUFlLENB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
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtUXVldWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9fc3JjL3NlcnZpY2VzL1F1ZXVlTWFrZXIvbWVtUXVldWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0scUNBQXFDLENBQUE7QUFDOUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtDQUFrQyxDQUFBO0FBRWpFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQzlELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUd6RDs7R0FFRztBQUNILE1BQU0sVUFBVSxZQUFZLENBUTFCLFNBQWlCLEVBQ2pCLGNBQXNCLEVBQ3RCLE9BQXlELEVBQ3pELGVBQXdGLEVBQ3hGLGNBRXdELEVBQ3hELFVBR21GO0lBRW5GLE9BQU8sb0JBQVcsUUFBUSxDQUFDLEVBQUMsQ0FBQztRQUMzQixNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLHlCQUFDLFFBQVEsRUFBUSxDQUFBO1FBQ3JDLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQTtRQUNuRCxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUE7UUFFN0QsT0FBTztZQUNMLE9BQU8sRUFBRSxDQUFDLEdBQUcsUUFBUSxFQUFFLEVBQUUsQ0FDdkIsb0JBQVcsUUFBUSxDQUFDLEVBQUMsQ0FBQztnQkFDcEIsTUFBTSxjQUFjLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyw4Q0FBMkIsQ0FBQTtnQkFDMUQsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLHVDQUNiLDRCQUFBLFFBQVEsRUFBZSxDQUFDLENBQUMsRUFBRTtnQkFDekIsdUhBQXVIO2dCQUN2SCx3QkFBQSwyQkFDRSxJQUFJLENBQUMsU0FBUyxDQUNaLE9BQU8sQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxDQUFDLENBQzNDLENBQ0Y7Z0JBQ0MsdUVBQXVFO2tCQUM5RCxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDbEIsQ0FDVixFQUVGLENBQUE7WUFDSCxDQUFDLENBQUM7WUFDSixLQUFLLEVBQUUsb0JBQVcsUUFBUSxDQUFDLEVBQUMsQ0FBQztnQkFDM0IsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFBO2dCQUM3QyxNQUFNLHFCQUFxQixHQUFHLDJCQUEyQixDQUFDLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixHQUFHLGNBQWMsRUFBRSxDQUFDLENBQUE7Z0JBQ3ZHLE1BQU0sY0FBYyxHQUFHLENBQUMsR0FBVyxFQUFFLEVBQUU7Z0JBQ3JDLHNIQUFzSDtnQkFDdEgsOENBQUEsd0JBQUEsMkJBQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUNaLFVBQVUsQ0FBQyxHQUVYLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQVF0QixjQUFjLENBQ1osY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUU7b0JBQzNCLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRTtvQkFDWCxNQUFNLEVBQUUsSUFBYTtvQkFDckIsSUFBSSxFQUFFLGdCQUFBLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7aUJBQ2xDLENBQUMsQ0FDSCxDQVJJLHFCQUFxQixDQUw5Qix5QkFBQSxvQkFFUyw2QkFBb0IsRUFBRSxJQUFJLHVEQUFFLElBQUksRUFBVSxFQUFFLElBQUksdURBQUUsSUFBSSxFQUFVLEVBQUUsQ0FBQyxDQUY1RSx5QkFDWSxPQUFPLGNBQWMsK0JBQStCLENBQUMsR0FFMUQsR0FBRyxFQUFFLENBQUMseUJBQXlCLENBQUMsRUFDM0IsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBVTNCLENBQ0osQ0FBQTtnQkFDTCxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsb0RBS0oscUJBQXFCLENBSjlCLHdCQUFBLE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFDRixDQUFDLENBQUMsRUFBRSxDQUFDLDZFQUFBLGNBQWMsQ0FBQyxDQUFDLENBQUMsSUFBOEIsQ0FBQyxDQUFDLEVBQUUsc0JBQUMsQ0FBQyxDQUFLLENBQUMsQ0FBQztnQkFDMUUseUZBQXlGO2dCQUN6Rix1SUFBdUk7b0JBSTFJLENBQUE7WUFDSCxDQUFDLENBQUM7U0FDOEIsQ0FBQTtJQUNwQyxDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUMifQ==
@@ -1,6 +1,5 @@
1
1
  import { StringId, Parser } from "@effect-app/prelude/schema";
2
2
  import { Effect } from "@effect/io/Effect";
3
- import { Cause } from "@effect/io/Cause";
4
3
  import { RequestContext } from "@effect-app/infra/RequestContext";
5
4
  import type { CustomSchemaException } from "@effect-app/prelude/schema";
6
5
  /**
@@ -16,7 +15,7 @@ export declare function makeServiceBusQueue<DrainR, Evt extends {
16
15
  }, RContext, EvtE, DrainE>(_queueName: string, queueDrainName: string, encoder: (e: {
17
16
  body: Evt;
18
17
  meta: RequestContext;
19
- }) => EvtE, makeHandleEvent: Effect<DrainR, never, (ks: DrainEvt) => Effect<RContext, DrainE, void>>, provideContext: (context: RequestContext) => <R, E, A>(eff: Effect<RContext | R, E, A>) => Effect<Exclude<R, RContext>, E, A>, parseDrain: (a: unknown, env?: Parser.ParserEnv | undefined) => Effect<never, CustomSchemaException, {
18
+ }) => EvtE, makeHandleEvent: Effect<DrainR, never, (ks: DrainEvt) => Effect<RContext, DrainE, void>>, provideContext: (context: RequestContext) => <R, E, A>(eff: Effect<RContext | R, E, A>) => Effect<Exclude<R, RContext | RequestContext>, E, A>, parseDrain: (a: unknown, env?: Parser.ParserEnv | undefined) => Effect<never, CustomSchemaException, {
20
19
  body: DrainEvt;
21
20
  meta: RequestContext;
22
21
  }>): import("@effect/io/Effect").Effect<import("@azure/service-bus").ServiceBusReceiver | import("@azure/service-bus").ServiceBusSender, never, {
@@ -1 +1 @@
1
- {"version":3,"file":"sbqueue.d.ts","sourceRoot":"","sources":["../../../_src/services/QueueMaker/sbqueue.ts"],"names":[],"mappings":";;;AAUA,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA;AACjE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;;;;;AAQvE,wBAAgB,mBAAmB,CACjC,MAAM,EACN,GAAG,SAAS;IAAE,EAAE,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAC1C,QAAQ,SAAS;IAAE,EAAE,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAC/C,QAAQ,EACR,IAAI,EACJ,MAAM,EAEN,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,CAAC,CAAC,EAAE;IAAE,IAAI,EAAE,GAAG,CAAC;IAAC,IAAI,EAAE,cAAc,CAAA;CAAE,KAAK,IAAI,EACzD,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,EACxF,cAAc,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EACnD,GAAG,EAAE,MAAM,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAC5B,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACvC,UAAU,EAAE,CACV,CAAC,EAAE,OAAO,EACV,GAAG,CAAC,EAAE,MAAM,CAAC,SAAS,GAAG,SAAS,KAC/B,MAAM,CAAC,KAAK,EAAE,qBAAqB,EAAE;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,cAAc,CAAA;CAAE,CAAC;;;GAmEpF;;;;;AAKD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,mJAG1F"}
1
+ {"version":3,"file":"sbqueue.d.ts","sourceRoot":"","sources":["../../../_src/services/QueueMaker/sbqueue.ts"],"names":[],"mappings":";;AAUA,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA;AACjE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;;;;;AAQvE,wBAAgB,mBAAmB,CACjC,MAAM,EACN,GAAG,SAAS;IAAE,EAAE,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAC1C,QAAQ,SAAS;IAAE,EAAE,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAC/C,QAAQ,EACR,IAAI,EACJ,MAAM,EAEN,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,CAAC,CAAC,EAAE;IAAE,IAAI,EAAE,GAAG,CAAC;IAAC,IAAI,EAAE,cAAc,CAAA;CAAE,KAAK,IAAI,EACzD,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,EACxF,cAAc,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EACnD,GAAG,EAAE,MAAM,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAC5B,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,QAAQ,GAAG,cAAc,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACxD,UAAU,EAAE,CACV,CAAC,EAAE,OAAO,EACV,GAAG,CAAC,EAAE,MAAM,CAAC,SAAS,GAAG,SAAS,KAC/B,MAAM,CAAC,KAAK,EAAE,qBAAqB,EAAE;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,cAAc,CAAA;CAAE,CAAC;;;GAqEpF;;;;;AAKD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,mJAG1F"}
@@ -3,15 +3,14 @@ import * as tsplus_module_2 from "@effect-app/core/Tag";
3
3
  import * as tsplus_module_3 from "@effect-app/prelude/utils";
4
4
  import * as tsplus_module_4 from "@effect-app/prelude/_ext/misc";
5
5
  import * as tsplus_module_5 from "@effect-app/prelude/schema";
6
- import * as tsplus_module_6 from "@effect-app/infra/api/setupRequest";
7
- import * as tsplus_module_7 from "@effect-app/infra/RequestContext";
8
- import * as tsplus_module_8 from "@effect-app/infra/services/QueueMaker/errors";
9
- import * as tsplus_module_9 from "@effect/io/Layer";
6
+ import * as tsplus_module_6 from "@effect-app/infra/RequestContext";
7
+ import * as tsplus_module_7 from "@effect-app/infra/services/QueueMaker/errors";
8
+ import * as tsplus_module_8 from "@effect/io/Layer";
10
9
  import { LiveReceiver, LiveSender, LiveServiceBusClient, Receiver, Sender, subscribe } from "@effect-app/infra-adapters/ServiceBus";
11
10
  import { captureException } from "@effect-app/infra/errorReporter";
12
11
  import { RequestContext } from "@effect-app/infra/RequestContext";
13
12
  import { restoreFromRequestContext } from "../Store/Memory.js";
14
- import { reportQueueError } from "./errors.js";
13
+ import { reportNonInterruptedFailure, reportNonInterruptedFailureCause } from "./errors.js";
15
14
  /**
16
15
  * @tsplus static QueueMaker.Ops makeServiceBus
17
16
  */
@@ -20,25 +19,29 @@ export function makeServiceBusQueue(_queueName, queueDrainName, encoder, makeHan
20
19
  const s = yield* $(tsplus_module_1.service(Sender));
21
20
  const receiver = yield* $(tsplus_module_1.service(Receiver));
22
21
  const receiverLayer = tsplus_module_2.makeLayer(Receiver, receiver);
22
+ const silenceAndReportError = reportNonInterruptedFailure({ name: "ServiceBusQueue.drain." + queueDrainName });
23
+ const reportError = reportNonInterruptedFailureCause({ name: "ServiceBusQueue.drain." + queueDrainName });
23
24
  return {
24
25
  drain: tsplus_module_1.gen(function* ($) {
25
26
  const handleEvent = yield* $(makeHandleEvent);
26
27
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
27
28
  function processMessage(messageBody) {
28
- return tsplus_module_1.asUnit(tsplus_module_1.orDie(tsplus_module_6.setupReq3(tsplus_module_1.flatMap(tsplus_module_1.tapErrorCause(tsplus_module_1.orDie(tsplus_module_1.flatMap(tsplus_module_1.sync(() => JSON.parse(messageBody)), x => parseDrain(x))), report), ({ body, meta }) => provideContext(RequestContext.inherit(meta, {
29
+ return tsplus_module_1.tapErrorCause(tsplus_module_1.flatMap(tsplus_module_1.orDie(tsplus_module_1.flatMap(tsplus_module_1.sync(() => JSON.parse(messageBody)), x => parseDrain(x))), ({ body, meta }) => provideContext(RequestContext.inherit(meta, {
29
30
  id: body.id,
30
31
  locale: "en",
31
32
  name: tsplus_module_5.ReasonableString(body._tag)
32
- }))(tsplus_module_1.tapErrorCause(tsplus_module_1.zipRight(tsplus_module_1.tap(tsplus_module_4.logAnnotates({ body: tsplus_module_3.RecordPretty(tsplus_module_3.object$(body)), meta: tsplus_module_3.RecordPretty(tsplus_module_3.object$(meta)) })(tsplus_module_1.logDebug(`$$ [${queueDrainName}] Processing incoming message`)), () => restoreFromRequestContext), handleEvent(body)), report))), "Queue.ReceiveMessage")));
33
+ }))(silenceAndReportError(tsplus_module_1.orDie(tsplus_module_1.zipRight(tsplus_module_1.tap(tsplus_module_4.logAnnotates({ body: tsplus_module_3.RecordPretty(tsplus_module_3.object$(body)), meta: tsplus_module_3.RecordPretty(tsplus_module_3.object$(meta)) })(tsplus_module_1.logDebug(`$$ [${queueDrainName}] Processing incoming message`)), () => restoreFromRequestContext), handleEvent(body))))))
34
+ // we reportError here, so that we report the error only, and keep flowing
35
+ , reportError);
33
36
  }
34
37
  return yield* $(tsplus_module_1.provideSomeLayer(subscribe({
35
- processMessage: x => tsplus_module_1.uninterruptible(processMessage(x.body)),
38
+ processMessage: x => tsplus_module_1.flatMap(tsplus_module_1.uninterruptible(processMessage(x.body)), _ => tsplus_module_1.done(_)),
36
39
  processError: err => tsplus_module_1.sync(() => captureException(err.error))
37
40
  }), receiverLayer));
38
41
  }),
39
42
  publish: (...messages) => tsplus_module_1.gen(function* ($) {
40
- const requestContext = yield* $(tsplus_module_1.service(tsplus_module_7.tag));
41
- return yield* $(tsplus_module_8.forkDaemonReportQueue(tsplus_module_1.promise(() => s.sendMessages(messages.map(x => ({
43
+ const requestContext = yield* $(tsplus_module_1.service(tsplus_module_6.tag));
44
+ return yield* $(tsplus_module_7.forkDaemonReportQueue(tsplus_module_1.promise(() => s.sendMessages(messages.map(x => ({
42
45
  body: JSON.stringify(encoder({ body: x, meta: requestContext })),
43
46
  messageId: x.id,
44
47
  contentType: "application/json"
@@ -51,12 +54,6 @@ export function makeServiceBusQueue(_queueName, queueDrainName, encoder, makeHan
51
54
  * @tsplus static QueueMaker.Ops makeServiceBusLayers
52
55
  */
53
56
  export function makeServiceBusLayers(url, queueName, queueDrainName) {
54
- return tsplus_module_9.provide((tsplus_module_9.merge(LiveSender(queueName))(LiveReceiver(queueDrainName))))(LiveServiceBusClient(url));
57
+ return tsplus_module_8.provide((tsplus_module_8.merge(LiveSender(queueName))(LiveReceiver(queueDrainName))))(LiveServiceBusClient(url));
55
58
  }
56
- function report(cause) {
57
- return tsplus_module_1.gen(function* ($) {
58
- const requestContext = yield* $(tsplus_module_1.service(tsplus_module_7.tag));
59
- return reportQueueError(cause, { requestContext });
60
- });
61
- }
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2JxdWV1ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL19zcmMvc2VydmljZXMvUXVldWVNYWtlci9zYnF1ZXVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE9BQU8sRUFDTCxZQUFZLEVBQ1osVUFBVSxFQUNWLG9CQUFvQixFQUNwQixRQUFRLEVBQ1IsTUFBTSxFQUNOLFNBQVMsRUFDVixNQUFNLHVDQUF1QyxDQUFBO0FBRTlDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFBO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQTtBQUVqRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUM5RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFHOUM7O0dBRUc7QUFDSCxNQUFNLFVBQVUsbUJBQW1CLENBUWpDLFVBQWtCLEVBQ2xCLGNBQXNCLEVBQ3RCLE9BQXlELEVBQ3pELGVBQXdGLEVBQ3hGLGNBRXVDLEVBQ3ZDLFVBR21GO0lBRW5GLE9BQU8sb0JBQVcsUUFBUSxDQUFDLEVBQUMsQ0FBQztRQUMzQixNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLHlCQUFDLE1BQU0sRUFBUSxDQUFBO1FBQ2pDLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMseUJBQUMsUUFBUSxFQUFRLENBQUE7UUFDMUMsTUFBTSxhQUFhLEdBQUcsMEJBQUEsUUFBUSxFQUFXLFFBQVEsQ0FBQyxDQUFBO1FBRWxELE9BQU87WUFDTCxLQUFLLEVBQUUsb0JBQVcsUUFBUSxDQUFDLEVBQUMsQ0FBQztnQkFDM0IsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFBO2dCQUM3Qyw4REFBOEQ7Z0JBQzlELFNBQVMsY0FBYyxDQUFDLFdBQWdCO29CQUN0QyxvREFBTyww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
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2JxdWV1ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL19zcmMvc2VydmljZXMvUXVldWVNYWtlci9zYnF1ZXVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsT0FBTyxFQUNMLFlBQVksRUFDWixVQUFVLEVBQ1Ysb0JBQW9CLEVBQ3BCLFFBQVEsRUFDUixNQUFNLEVBQ04sU0FBUyxFQUNWLE1BQU0sdUNBQXVDLENBQUE7QUFFOUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUNBQWlDLENBQUE7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtDQUFrQyxDQUFBO0FBRWpFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQzlELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUczRjs7R0FFRztBQUNILE1BQU0sVUFBVSxtQkFBbUIsQ0FRakMsVUFBa0IsRUFDbEIsY0FBc0IsRUFDdEIsT0FBeUQsRUFDekQsZUFBd0YsRUFDeEYsY0FFd0QsRUFDeEQsVUFHbUY7SUFFbkYsT0FBTyxvQkFBVyxRQUFRLENBQUMsRUFBQyxDQUFDO1FBQzNCLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMseUJBQUMsTUFBTSxFQUFRLENBQUE7UUFDakMsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyx5QkFBQyxRQUFRLEVBQVEsQ0FBQTtRQUMxQyxNQUFNLGFBQWEsR0FBRywwQkFBQSxRQUFRLEVBQVcsUUFBUSxDQUFDLENBQUE7UUFDbEQsTUFBTSxxQkFBcUIsR0FBRywyQkFBMkIsQ0FBQyxFQUFFLElBQUksRUFBRSx3QkFBd0IsR0FBRyxjQUFjLEVBQUUsQ0FBQyxDQUFBO1FBQzlHLE1BQU0sV0FBVyxHQUFHLGdDQUFnQyxDQUFDLEVBQUUsSUFBSSxFQUFFLHdCQUF3QixHQUFHLGNBQWMsRUFBRSxDQUFDLENB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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@effect-app/infra",
3
- "version": "0.25.7",
3
+ "version": "0.25.8",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "dependencies": {
@@ -20,10 +20,10 @@
20
20
  "proper-lockfile": "^4.1.2",
21
21
  "pure-rand": "^6.0.0",
22
22
  "redlock": "^4.2.0",
23
+ "@effect-app/prelude": "0.21.4",
23
24
  "@effect-app/core": "0.23.0",
24
25
  "@effect-app/infra-adapters": "0.20.4",
25
- "@effect-app/schema": "0.18.3",
26
- "@effect-app/prelude": "0.21.4"
26
+ "@effect-app/schema": "0.18.3"
27
27
  },
28
28
  "devDependencies": {
29
29
  "@babel/cli": "^7.20.7",