@hotmeshio/hotmesh 0.3.32 → 0.4.1

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.
Files changed (207) hide show
  1. package/README.md +128 -823
  2. package/build/index.d.ts +9 -9
  3. package/build/index.js +10 -10
  4. package/build/modules/enums.d.ts +23 -23
  5. package/build/modules/enums.js +26 -26
  6. package/build/modules/errors.d.ts +16 -16
  7. package/build/modules/errors.js +28 -28
  8. package/build/modules/key.js +190 -1
  9. package/build/modules/utils.js +374 -1
  10. package/build/package.json +22 -21
  11. package/build/services/activities/activity.js +549 -1
  12. package/build/services/activities/await.js +114 -1
  13. package/build/services/activities/cycle.js +112 -1
  14. package/build/services/activities/hook.js +168 -1
  15. package/build/services/activities/index.js +20 -1
  16. package/build/services/activities/interrupt.js +158 -1
  17. package/build/services/activities/signal.js +134 -1
  18. package/build/services/activities/trigger.js +246 -1
  19. package/build/services/activities/worker.js +106 -1
  20. package/build/services/collator/index.js +293 -1
  21. package/build/services/compiler/deployer.js +488 -1
  22. package/build/services/compiler/index.js +112 -1
  23. package/build/services/compiler/validator.js +147 -1
  24. package/build/services/engine/index.js +761 -1
  25. package/build/services/exporter/index.js +126 -1
  26. package/build/services/hotmesh/index.d.ts +160 -17
  27. package/build/services/hotmesh/index.js +160 -17
  28. package/build/services/mapper/index.js +81 -1
  29. package/build/services/{meshflow → memflow}/client.d.ts +3 -3
  30. package/build/services/{meshflow → memflow}/client.js +17 -16
  31. package/build/services/{meshflow → memflow}/connection.d.ts +2 -2
  32. package/build/services/{meshflow → memflow}/connection.js +1 -1
  33. package/build/services/memflow/context.d.ts +143 -0
  34. package/build/services/memflow/context.js +299 -0
  35. package/build/services/{meshflow → memflow}/exporter.d.ts +6 -6
  36. package/build/services/memflow/exporter.js +215 -0
  37. package/build/services/{meshflow → memflow}/handle.d.ts +4 -4
  38. package/build/services/{meshflow → memflow}/handle.js +2 -2
  39. package/build/services/{meshflow → memflow}/index.d.ts +18 -13
  40. package/build/services/{meshflow → memflow}/index.js +26 -21
  41. package/build/services/{meshflow → memflow}/schemas/factory.d.ts +4 -4
  42. package/build/services/{meshflow → memflow}/schemas/factory.js +5 -5
  43. package/build/services/{meshflow → memflow}/search.d.ts +1 -1
  44. package/build/services/{meshflow → memflow}/search.js +4 -4
  45. package/build/services/{meshflow → memflow}/worker.d.ts +5 -5
  46. package/build/services/{meshflow → memflow}/worker.js +24 -24
  47. package/build/services/memflow/workflow/common.d.ts +20 -0
  48. package/build/services/memflow/workflow/common.js +47 -0
  49. package/build/services/memflow/workflow/contextMethods.d.ts +14 -0
  50. package/build/services/memflow/workflow/contextMethods.js +33 -0
  51. package/build/services/{meshflow → memflow}/workflow/execChild.js +12 -12
  52. package/build/services/memflow/workflow/execHook.d.ts +65 -0
  53. package/build/services/memflow/workflow/execHook.js +73 -0
  54. package/build/services/{meshflow → memflow}/workflow/hook.js +19 -3
  55. package/build/services/{meshflow → memflow}/workflow/index.d.ts +7 -3
  56. package/build/services/{meshflow → memflow}/workflow/index.js +7 -3
  57. package/build/services/{meshflow → memflow}/workflow/proxyActivities.d.ts +2 -2
  58. package/build/services/{meshflow → memflow}/workflow/proxyActivities.js +8 -8
  59. package/build/services/{meshflow → memflow}/workflow/sleepFor.js +2 -2
  60. package/build/services/{meshflow → memflow}/workflow/waitFor.js +2 -2
  61. package/build/services/meshdata/index.d.ts +24 -24
  62. package/build/services/meshdata/index.js +40 -40
  63. package/build/services/pipe/functions/array.js +74 -1
  64. package/build/services/pipe/functions/bitwise.js +24 -1
  65. package/build/services/pipe/functions/conditional.js +36 -1
  66. package/build/services/pipe/functions/cron.js +40 -1
  67. package/build/services/pipe/functions/date.js +171 -1
  68. package/build/services/pipe/functions/index.js +30 -1
  69. package/build/services/pipe/functions/json.js +12 -1
  70. package/build/services/pipe/functions/logical.js +12 -1
  71. package/build/services/pipe/functions/math.js +184 -1
  72. package/build/services/pipe/functions/number.js +60 -1
  73. package/build/services/pipe/functions/object.js +81 -1
  74. package/build/services/pipe/functions/string.js +69 -1
  75. package/build/services/pipe/functions/symbol.js +33 -1
  76. package/build/services/pipe/functions/unary.js +18 -1
  77. package/build/services/pipe/index.js +242 -1
  78. package/build/services/quorum/index.js +263 -1
  79. package/build/services/reporter/index.js +348 -1
  80. package/build/services/router/config/index.d.ts +11 -0
  81. package/build/services/router/config/index.js +36 -0
  82. package/build/services/router/consumption/index.d.ts +34 -0
  83. package/build/services/router/consumption/index.js +395 -0
  84. package/build/services/router/error-handling/index.d.ts +8 -0
  85. package/build/services/router/error-handling/index.js +98 -0
  86. package/build/services/router/index.d.ts +13 -16
  87. package/build/services/router/index.js +121 -1
  88. package/build/services/router/lifecycle/index.d.ts +27 -0
  89. package/build/services/router/lifecycle/index.js +80 -0
  90. package/build/services/router/telemetry/index.d.ts +11 -0
  91. package/build/services/router/telemetry/index.js +32 -0
  92. package/build/services/router/throttling/index.d.ts +23 -0
  93. package/build/services/router/throttling/index.js +76 -0
  94. package/build/services/search/index.d.ts +2 -1
  95. package/build/services/search/providers/postgres/postgres.d.ts +2 -1
  96. package/build/services/search/providers/postgres/postgres.js +149 -1
  97. package/build/services/search/providers/redis/ioredis.d.ts +1 -0
  98. package/build/services/search/providers/redis/ioredis.js +121 -1
  99. package/build/services/search/providers/redis/redis.d.ts +1 -0
  100. package/build/services/search/providers/redis/redis.js +134 -1
  101. package/build/services/serializer/index.js +282 -1
  102. package/build/services/store/providers/postgres/kvsql.d.ts +1 -1
  103. package/build/services/store/providers/postgres/kvsql.js +198 -1
  104. package/build/services/store/providers/postgres/kvtables.js +441 -1
  105. package/build/services/store/providers/postgres/kvtransaction.js +248 -1
  106. package/build/services/store/providers/postgres/kvtypes/hash.d.ts +1 -1
  107. package/build/services/store/providers/postgres/kvtypes/hash.js +1287 -1
  108. package/build/services/store/providers/postgres/kvtypes/list.js +194 -1
  109. package/build/services/store/providers/postgres/kvtypes/string.js +115 -1
  110. package/build/services/store/providers/postgres/kvtypes/zset.js +214 -1
  111. package/build/services/store/providers/postgres/postgres.js +1036 -1
  112. package/build/services/store/providers/redis/_base.js +980 -1
  113. package/build/services/store/providers/redis/ioredis.js +180 -1
  114. package/build/services/store/providers/redis/redis.js +199 -1
  115. package/build/services/store/providers/store-initializable.js +2 -1
  116. package/build/services/stream/index.d.ts +5 -0
  117. package/build/services/stream/providers/nats/nats.d.ts +1 -0
  118. package/build/services/stream/providers/nats/nats.js +225 -1
  119. package/build/services/stream/providers/postgres/kvtables.d.ts +1 -0
  120. package/build/services/stream/providers/postgres/kvtables.js +146 -1
  121. package/build/services/stream/providers/postgres/postgres.d.ts +19 -0
  122. package/build/services/stream/providers/postgres/postgres.js +519 -1
  123. package/build/services/stream/providers/redis/ioredis.d.ts +1 -0
  124. package/build/services/stream/providers/redis/ioredis.js +272 -1
  125. package/build/services/stream/providers/redis/redis.d.ts +1 -0
  126. package/build/services/stream/providers/redis/redis.js +305 -1
  127. package/build/services/stream/providers/stream-initializable.js +2 -1
  128. package/build/services/sub/providers/nats/nats.js +105 -1
  129. package/build/services/sub/providers/postgres/postgres.js +92 -1
  130. package/build/services/sub/providers/redis/ioredis.js +81 -1
  131. package/build/services/sub/providers/redis/redis.js +72 -1
  132. package/build/services/task/index.js +206 -1
  133. package/build/services/telemetry/index.js +306 -1
  134. package/build/services/worker/index.js +197 -1
  135. package/build/types/error.d.ts +5 -5
  136. package/build/types/exporter.d.ts +1 -1
  137. package/build/types/index.d.ts +3 -3
  138. package/build/types/manifest.d.ts +2 -2
  139. package/build/types/{meshflow.d.ts → memflow.d.ts} +15 -15
  140. package/build/types/meshdata.d.ts +3 -3
  141. package/build/types/postgres.d.ts +7 -0
  142. package/build/types/stream.d.ts +3 -0
  143. package/index.ts +11 -11
  144. package/package.json +22 -21
  145. package/.github/ISSUE_TEMPLATE/bug_report.md +0 -38
  146. package/.github/ISSUE_TEMPLATE/feature_request.md +0 -20
  147. package/build/services/meshflow/exporter.js +0 -1
  148. package/build/services/meshflow/workflow/common.d.ts +0 -18
  149. package/build/services/meshflow/workflow/common.js +0 -45
  150. package/typedoc.json +0 -46
  151. package/types/activity.ts +0 -268
  152. package/types/app.ts +0 -20
  153. package/types/async.ts +0 -6
  154. package/types/cache.ts +0 -1
  155. package/types/collator.ts +0 -9
  156. package/types/error.ts +0 -56
  157. package/types/exporter.ts +0 -102
  158. package/types/hook.ts +0 -44
  159. package/types/hotmesh.ts +0 -314
  160. package/types/index.ts +0 -306
  161. package/types/job.ts +0 -233
  162. package/types/logger.ts +0 -8
  163. package/types/manifest.ts +0 -70
  164. package/types/map.ts +0 -5
  165. package/types/meshcall.ts +0 -235
  166. package/types/meshdata.ts +0 -278
  167. package/types/meshflow.ts +0 -645
  168. package/types/ms.d.ts +0 -7
  169. package/types/nats.ts +0 -270
  170. package/types/pipe.ts +0 -90
  171. package/types/postgres.ts +0 -105
  172. package/types/provider.ts +0 -161
  173. package/types/quorum.ts +0 -167
  174. package/types/redis.ts +0 -404
  175. package/types/serializer.ts +0 -40
  176. package/types/stats.ts +0 -117
  177. package/types/stream.ts +0 -227
  178. package/types/task.ts +0 -7
  179. package/types/telemetry.ts +0 -16
  180. package/types/transition.ts +0 -20
  181. /package/build/services/{meshflow → memflow}/workflow/all.d.ts +0 -0
  182. /package/build/services/{meshflow → memflow}/workflow/all.js +0 -0
  183. /package/build/services/{meshflow → memflow}/workflow/context.d.ts +0 -0
  184. /package/build/services/{meshflow → memflow}/workflow/context.js +0 -0
  185. /package/build/services/{meshflow → memflow}/workflow/didRun.d.ts +0 -0
  186. /package/build/services/{meshflow → memflow}/workflow/didRun.js +0 -0
  187. /package/build/services/{meshflow → memflow}/workflow/emit.d.ts +0 -0
  188. /package/build/services/{meshflow → memflow}/workflow/emit.js +0 -0
  189. /package/build/services/{meshflow → memflow}/workflow/enrich.d.ts +0 -0
  190. /package/build/services/{meshflow → memflow}/workflow/enrich.js +0 -0
  191. /package/build/services/{meshflow → memflow}/workflow/execChild.d.ts +0 -0
  192. /package/build/services/{meshflow → memflow}/workflow/hook.d.ts +0 -0
  193. /package/build/services/{meshflow → memflow}/workflow/interrupt.d.ts +0 -0
  194. /package/build/services/{meshflow → memflow}/workflow/interrupt.js +0 -0
  195. /package/build/services/{meshflow → memflow}/workflow/isSideEffectAllowed.d.ts +0 -0
  196. /package/build/services/{meshflow → memflow}/workflow/isSideEffectAllowed.js +0 -0
  197. /package/build/services/{meshflow → memflow}/workflow/random.d.ts +0 -0
  198. /package/build/services/{meshflow → memflow}/workflow/random.js +0 -0
  199. /package/build/services/{meshflow → memflow}/workflow/searchMethods.d.ts +0 -0
  200. /package/build/services/{meshflow → memflow}/workflow/searchMethods.js +0 -0
  201. /package/build/services/{meshflow → memflow}/workflow/signal.d.ts +0 -0
  202. /package/build/services/{meshflow → memflow}/workflow/signal.js +0 -0
  203. /package/build/services/{meshflow → memflow}/workflow/sleepFor.d.ts +0 -0
  204. /package/build/services/{meshflow → memflow}/workflow/trace.d.ts +0 -0
  205. /package/build/services/{meshflow → memflow}/workflow/trace.js +0 -0
  206. /package/build/services/{meshflow → memflow}/workflow/waitFor.d.ts +0 -0
  207. /package/build/types/{meshflow.js → memflow.js} +0 -0
@@ -1 +1,114 @@
1
- 'use strict';function b(c,d){const e=a();return b=function(f,g){f=f-0x102;let h=e[f];return h;},b(c,d);}const l=b;(function(c,d){const k=b,e=c();while(!![]){try{const f=-parseInt(k(0x132))/0x1*(-parseInt(k(0x11a))/0x2)+parseInt(k(0x12e))/0x3+-parseInt(k(0x11e))/0x4*(-parseInt(k(0x127))/0x5)+parseInt(k(0x131))/0x6+parseInt(k(0x113))/0x7*(-parseInt(k(0x12f))/0x8)+parseInt(k(0x117))/0x9+-parseInt(k(0x119))/0xa;if(f===d)break;else e['push'](e['shift']());}catch(g){e['push'](e['shift']());}}}(a,0xd190d));Object[l(0x145)](exports,l(0x122),{'value':!0x0}),exports[l(0x144)]=void 0x0;const errors_1=require(l(0x135)),utils_1=require(l(0x130)),collator_1=require(l(0x139)),pipe_1=require(l(0x141)),telemetry_1=require(l(0x137)),stream_1=require(l(0x10b)),activity_1=require('./activity');class Await extends activity_1[l(0x110)]{constructor(c,d,f,g,h,j){super(c,d,f,g,h,j);}async[l(0x10a)](){const m=l;let c;this['logger'][m(0x10d)](m(0x128),{'jid':this[m(0x13f)][m(0x11f)]['jid'],'gid':this[m(0x13f)][m(0x11f)][m(0x13c)],'aid':this['metadata']['aid']});try{await this[m(0x142)](),c=new telemetry_1['TelemetryService'](this[m(0x106)]['appId'],this[m(0x11d)],this[m(0x11f)],this[m(0x13f)]),c[m(0x136)](this[m(0x138)]),this[m(0x129)]();const d=this['store'][m(0x13d)](),f=await this[m(0x12a)](d);await collator_1[m(0x133)][m(0x12b)](this,d),await this[m(0x108)](d),await this[m(0x124)](0x0,d);const g=await d['exec']();c[m(0x102)]();const h=this[m(0x123)](g);return c[m(0x13e)]({'app.activity.mid':f,'app.job.jss':h}),this['context']['metadata'][m(0x10f)];}catch(j){if(j instanceof errors_1['InactiveJobError'])return void this['logger'][m(0x120)](m(0x13a),{'error':j});if(j instanceof errors_1['GenerationalError'])return void this['logger'][m(0x11c)](m(0x114),{'error':j});if(j instanceof errors_1[m(0x13b)])return void this[m(0x11b)]['error'](m(0x12d),{'error':j});if(j instanceof errors_1['CollationError']){if(m(0x134)===j['fault'])return void this[m(0x11b)][m(0x11c)]('await-collation-overage',{'job_id':this['context'][m(0x11f)][m(0x10e)],'guid':this[m(0x13f)][m(0x11f)]['guid']});this[m(0x11b)][m(0x120)]('await-collation-error',{'error':j});}else this[m(0x11b)][m(0x120)](m(0x10c),{'error':j});throw c?.['setActivityError'](j[m(0x118)]),j;}finally{c?.[m(0x116)](),this[m(0x11b)][m(0x10d)](m(0x115),{'jid':this[m(0x13f)][m(0x11f)][m(0x10e)],'gid':this[m(0x13f)]['metadata']['gid'],'aid':this[m(0x11f)][m(0x10f)]});}}async[l(0x12a)](c){const n=l,d=pipe_1[n(0x105)][n(0x125)](this['config'][n(0x12c)],this[n(0x13f)]),f={'metadata':{'guid':(0x0,utils_1['guid'])(),'jid':this[n(0x13f)][n(0x11f)][n(0x10e)],'gid':this['context'][n(0x11f)]['gid'],'dad':this[n(0x11f)]['dad'],'aid':this[n(0x11f)][n(0x10f)],'topic':d,'spn':this[n(0x13f)]['$self'][n(0x111)][n(0x11f)]?.[n(0x103)],'trc':this[n(0x13f)][n(0x11f)][n(0x143)]},'type':stream_1[n(0x104)][n(0x121)],'data':this[n(0x13f)][n(0x112)]};return!0x0!==this['config'][n(0x107)]&&(!0x1===pipe_1[n(0x105)]['resolve'](this[n(0x11d)][n(0x107)],this['context'])&&(f['metadata'][n(0x107)]=!0x1)),(this['config'][n(0x126)]&&(f[n(0x109)]={'retry':this['config'][n(0x126)]}),await this['engine']['router']?.[n(0x140)](null,f,c));}}exports[l(0x144)]=Await;function a(){const o=['transact','setActivityAttributes','context','publishMessage','../pipe','verifyEntry','trc','Await','defineProperty','mapActivityAttributes','l1s','StreamDataType','Pipe','engine','await','setState','policies','process','../../types/stream','await-process-error','debug','jid','aid','Activity','output','data','763RqIekz','process-event-generational-job-error','await-process-end','endActivitySpan','10099503wbhIEn','message','53694140mijAKx','3389872ccbPIo','logger','info','config','4CveqDH','metadata','error','AWAIT','__esModule','resolveStatus','setStatus','resolve','retry','8202740gMgwUG','await-process','mapInputData','execActivity','authorizeReentry','subtype','await-get-state-error','4627164NdKche','81280isDtAQ','../../modules/utils','8011176mxvVHX','1SblRHy','CollatorService','duplicate','../../modules/errors','startActivitySpan','../telemetry','leg','../collator','await-inactive-job-error','GetStateError','gid'];a=function(){return o;};return a();}
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Await = void 0;
4
+ const errors_1 = require("../../modules/errors");
5
+ const utils_1 = require("../../modules/utils");
6
+ const collator_1 = require("../collator");
7
+ const pipe_1 = require("../pipe");
8
+ const telemetry_1 = require("../telemetry");
9
+ const stream_1 = require("../../types/stream");
10
+ const activity_1 = require("./activity");
11
+ class Await extends activity_1.Activity {
12
+ constructor(config, data, metadata, hook, engine, context) {
13
+ super(config, data, metadata, hook, engine, context);
14
+ }
15
+ //******** INITIAL ENTRY POINT (A) ********//
16
+ async process() {
17
+ this.logger.debug('await-process', {
18
+ jid: this.context.metadata.jid,
19
+ gid: this.context.metadata.gid,
20
+ aid: this.metadata.aid,
21
+ });
22
+ let telemetry;
23
+ try {
24
+ await this.verifyEntry();
25
+ telemetry = new telemetry_1.TelemetryService(this.engine.appId, this.config, this.metadata, this.context);
26
+ telemetry.startActivitySpan(this.leg);
27
+ this.mapInputData();
28
+ //save state and authorize reentry
29
+ const transaction = this.store.transact();
30
+ //todo: await this.registerTimeout();
31
+ const messageId = await this.execActivity(transaction);
32
+ await collator_1.CollatorService.authorizeReentry(this, transaction);
33
+ await this.setState(transaction);
34
+ await this.setStatus(0, transaction);
35
+ const multiResponse = (await transaction.exec());
36
+ //telemetry
37
+ telemetry.mapActivityAttributes();
38
+ const jobStatus = this.resolveStatus(multiResponse);
39
+ telemetry.setActivityAttributes({
40
+ 'app.activity.mid': messageId,
41
+ 'app.job.jss': jobStatus,
42
+ });
43
+ return this.context.metadata.aid;
44
+ }
45
+ catch (error) {
46
+ if (error instanceof errors_1.InactiveJobError) {
47
+ this.logger.error('await-inactive-job-error', { error });
48
+ return;
49
+ }
50
+ else if (error instanceof errors_1.GenerationalError) {
51
+ this.logger.info('process-event-generational-job-error', { error });
52
+ return;
53
+ }
54
+ else if (error instanceof errors_1.GetStateError) {
55
+ this.logger.error('await-get-state-error', { error });
56
+ return;
57
+ }
58
+ else if (error instanceof errors_1.CollationError) {
59
+ if (error.fault === 'duplicate') {
60
+ this.logger.info('await-collation-overage', {
61
+ job_id: this.context.metadata.jid,
62
+ guid: this.context.metadata.guid,
63
+ });
64
+ return;
65
+ }
66
+ //unknown collation error
67
+ this.logger.error('await-collation-error', { error });
68
+ }
69
+ else {
70
+ this.logger.error('await-process-error', { error });
71
+ }
72
+ telemetry?.setActivityError(error.message);
73
+ throw error;
74
+ }
75
+ finally {
76
+ telemetry?.endActivitySpan();
77
+ this.logger.debug('await-process-end', {
78
+ jid: this.context.metadata.jid,
79
+ gid: this.context.metadata.gid,
80
+ aid: this.metadata.aid,
81
+ });
82
+ }
83
+ }
84
+ async execActivity(transaction) {
85
+ const topic = pipe_1.Pipe.resolve(this.config.subtype, this.context);
86
+ const streamData = {
87
+ metadata: {
88
+ guid: (0, utils_1.guid)(),
89
+ jid: this.context.metadata.jid,
90
+ gid: this.context.metadata.gid,
91
+ dad: this.metadata.dad,
92
+ aid: this.metadata.aid,
93
+ topic,
94
+ spn: this.context['$self'].output.metadata?.l1s,
95
+ trc: this.context.metadata.trc,
96
+ },
97
+ type: stream_1.StreamDataType.AWAIT,
98
+ data: this.context.data,
99
+ };
100
+ if (this.config.await !== true) {
101
+ const doAwait = pipe_1.Pipe.resolve(this.config.await, this.context);
102
+ if (doAwait === false) {
103
+ streamData.metadata.await = false;
104
+ }
105
+ }
106
+ if (this.config.retry) {
107
+ streamData.policies = {
108
+ retry: this.config.retry,
109
+ };
110
+ }
111
+ return (await this.engine.router?.publishMessage(null, streamData, transaction));
112
+ }
113
+ }
114
+ exports.Await = Await;
@@ -1 +1,112 @@
1
- 'use strict';const l=b;(function(c,d){const k=b,e=c();while(!![]){try{const f=-parseInt(k(0x1ad))/0x1*(-parseInt(k(0x1d6))/0x2)+-parseInt(k(0x1c5))/0x3+-parseInt(k(0x1b9))/0x4+-parseInt(k(0x1c6))/0x5*(parseInt(k(0x1b4))/0x6)+parseInt(k(0x1a9))/0x7+parseInt(k(0x1c4))/0x8+parseInt(k(0x1ba))/0x9*(parseInt(k(0x1be))/0xa);if(f===d)break;else e['push'](e['shift']());}catch(g){e['push'](e['shift']());}}}(a,0xd288d));function b(c,d){const e=a();return b=function(f,g){f=f-0x1a2;let h=e[f];return h;},b(c,d);}Object['defineProperty'](exports,l(0x1a5),{'value':!0x0}),exports[l(0x1c3)]=void 0x0;const errors_1=require(l(0x1b8)),utils_1=require(l(0x1bd)),collator_1=require('../collator'),telemetry_1=require(l(0x1af)),activity_1=require('./activity');function a(){const o=['6681400fjKnBk','5410989EaPmkp','data','fault','../../modules/utils','30emtJsR','setStatus','logger','jid','setActivityError','Cycle','4507664gnTfPN','3893430maVHkb','3024465NxmPaM','store','GetStateError','process-event-generational-job-error','error','debug','cycle-process-error','transact','mapActivityAttributes','message','$self','l1s','mapInputData','process','cycle-get-state-error','engine','2435178MaAkcN','gid','trc','setActivityAttributes','output','cycle-inactive-job-error','config','__esModule','cycle-collation-error','publishMessage','ancestor','10189095GAQmLv','cycle-process','metadata','aid','1gJvhcC','duplicate','../telemetry','guid','exec','context','info','12PslmMy','resolveStatus','cycleAncestorActivity','Activity','../../modules/errors'];a=function(){return o;};return a();}class Cycle extends activity_1[l(0x1b7)]{constructor(c,d,f,g,h,j){super(c,d,f,g,h,j);}async[l(0x1d3)](){const m=l;let c;this['logger'][m(0x1cb)](m(0x1aa),{'jid':this['context'][m(0x1ab)]['jid'],'gid':this['context'][m(0x1ab)][m(0x1d7)],'aid':this[m(0x1ab)]['aid']});try{await this['verifyEntry'](),c=new telemetry_1['TelemetryService'](this[m(0x1d5)]['appId'],this[m(0x1a4)],this[m(0x1ab)],this['context']),c['startActivitySpan'](this['leg']),this[m(0x1d2)]();let d=this[m(0x1c7)][m(0x1cd)]();await this['setState'](d),await this[m(0x1bf)](0x0,d);const f=await d[m(0x1b1)]();c[m(0x1ce)]();const g=this[m(0x1b5)](f);d=this['store'][m(0x1cd)]();const h=await this['cycleAncestorActivity'](d);return c[m(0x1d9)]({'app.activity.mid':h,'app.job.jss':g}),await collator_1['CollatorService']['notarizeEarlyExit'](this,d),await d[m(0x1b1)](),this[m(0x1b2)]['metadata'][m(0x1ac)];}catch(j){if(j instanceof errors_1['InactiveJobError'])return void this[m(0x1c0)][m(0x1ca)](m(0x1a3),{'error':j});if(j instanceof errors_1['GenerationalError'])return void this[m(0x1c0)][m(0x1b3)](m(0x1c9),{'error':j});if(j instanceof errors_1[m(0x1c8)])return void this[m(0x1c0)]['error'](m(0x1d4),{'error':j});if(j instanceof errors_1['CollationError']){if(m(0x1ae)===j[m(0x1bc)])return void this['logger']['info']('cycle-collation-overage',{'job_id':this[m(0x1b2)][m(0x1ab)][m(0x1c1)],'guid':this['context'][m(0x1ab)][m(0x1b0)]});this[m(0x1c0)]['error'](m(0x1a6),{'error':j});}else this['logger'][m(0x1ca)](m(0x1cc),{'error':j});throw c?.[m(0x1c2)](j[m(0x1cf)]),j;}finally{c?.['endActivitySpan'](),this[m(0x1c0)][m(0x1cb)]('cycle-process-end',{'jid':this['context']['metadata']['jid'],'gid':this[m(0x1b2)][m(0x1ab)]['gid'],'aid':this['metadata'][m(0x1ac)]});}}async[l(0x1b6)](c){const n=l;this[n(0x1d2)]();const d={'metadata':{'guid':(0x0,utils_1['guid'])(),'jid':this[n(0x1b2)]['metadata']['jid'],'gid':this['context'][n(0x1ab)][n(0x1d7)],'dad':collator_1['CollatorService']['resolveReentryDimension'](this),'aid':this[n(0x1a4)][n(0x1a8)],'spn':this[n(0x1b2)][n(0x1d0)][n(0x1a2)][n(0x1ab)]?.[n(0x1d1)],'trc':this['context']['metadata'][n(0x1d8)]},'data':this[n(0x1b2)][n(0x1bb)]};return await this[n(0x1d5)]['router']?.[n(0x1a7)](null,d,c);}}exports['Cycle']=Cycle;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Cycle = void 0;
4
+ const errors_1 = require("../../modules/errors");
5
+ const utils_1 = require("../../modules/utils");
6
+ const collator_1 = require("../collator");
7
+ const telemetry_1 = require("../telemetry");
8
+ const activity_1 = require("./activity");
9
+ class Cycle extends activity_1.Activity {
10
+ constructor(config, data, metadata, hook, engine, context) {
11
+ super(config, data, metadata, hook, engine, context);
12
+ }
13
+ //******** LEG 1 ENTRY ********//
14
+ async process() {
15
+ this.logger.debug('cycle-process', {
16
+ jid: this.context.metadata.jid,
17
+ gid: this.context.metadata.gid,
18
+ aid: this.metadata.aid,
19
+ });
20
+ let telemetry;
21
+ try {
22
+ await this.verifyEntry();
23
+ telemetry = new telemetry_1.TelemetryService(this.engine.appId, this.config, this.metadata, this.context);
24
+ telemetry.startActivitySpan(this.leg);
25
+ this.mapInputData();
26
+ //set state/status
27
+ let transaction = this.store.transact();
28
+ await this.setState(transaction);
29
+ await this.setStatus(0, transaction); //leg 1 never changes job status
30
+ const txResponse = (await transaction.exec());
31
+ telemetry.mapActivityAttributes();
32
+ const jobStatus = this.resolveStatus(txResponse);
33
+ //cycle the target ancestor
34
+ transaction = this.store.transact();
35
+ const messageId = await this.cycleAncestorActivity(transaction);
36
+ telemetry.setActivityAttributes({
37
+ 'app.activity.mid': messageId,
38
+ 'app.job.jss': jobStatus,
39
+ });
40
+ //exit early (`Cycle` activities only execute Leg 1)
41
+ await collator_1.CollatorService.notarizeEarlyExit(this, transaction);
42
+ (await transaction.exec());
43
+ return this.context.metadata.aid;
44
+ }
45
+ catch (error) {
46
+ if (error instanceof errors_1.InactiveJobError) {
47
+ this.logger.error('cycle-inactive-job-error', { error });
48
+ return;
49
+ }
50
+ else if (error instanceof errors_1.GenerationalError) {
51
+ this.logger.info('process-event-generational-job-error', { error });
52
+ return;
53
+ }
54
+ else if (error instanceof errors_1.GetStateError) {
55
+ this.logger.error('cycle-get-state-error', { error });
56
+ return;
57
+ }
58
+ else if (error instanceof errors_1.CollationError) {
59
+ if (error.fault === 'duplicate') {
60
+ this.logger.info('cycle-collation-overage', {
61
+ job_id: this.context.metadata.jid,
62
+ guid: this.context.metadata.guid,
63
+ });
64
+ return;
65
+ }
66
+ //unknown collation error
67
+ this.logger.error('cycle-collation-error', { error });
68
+ }
69
+ else {
70
+ this.logger.error('cycle-process-error', { error });
71
+ }
72
+ telemetry?.setActivityError(error.message);
73
+ throw error;
74
+ }
75
+ finally {
76
+ telemetry?.endActivitySpan();
77
+ this.logger.debug('cycle-process-end', {
78
+ jid: this.context.metadata.jid,
79
+ gid: this.context.metadata.gid,
80
+ aid: this.metadata.aid,
81
+ });
82
+ }
83
+ }
84
+ /**
85
+ * Trigger the target ancestor to execute in a cycle,
86
+ * without violating the constraints of the DAG. Immutable
87
+ * `individual activity state` will execute in a new dimensional
88
+ * thread while `shared job state` can change. This
89
+ * pattern allows for retries without violating the DAG.
90
+ */
91
+ async cycleAncestorActivity(transaction) {
92
+ //Cycle activity L1 is a standin for the target ancestor L1.
93
+ //Input data mapping (mapInputData) allows for the
94
+ //next dimensonal thread to execute with different
95
+ //input data than the current dimensional thread
96
+ this.mapInputData();
97
+ const streamData = {
98
+ metadata: {
99
+ guid: (0, utils_1.guid)(),
100
+ jid: this.context.metadata.jid,
101
+ gid: this.context.metadata.gid,
102
+ dad: collator_1.CollatorService.resolveReentryDimension(this),
103
+ aid: this.config.ancestor,
104
+ spn: this.context['$self'].output.metadata?.l1s,
105
+ trc: this.context.metadata.trc,
106
+ },
107
+ data: this.context.data,
108
+ };
109
+ return (await this.engine.router?.publishMessage(null, streamData, transaction));
110
+ }
111
+ }
112
+ exports.Cycle = Cycle;
@@ -1 +1,168 @@
1
- 'use strict';const r=b;function a(){const A=['setActivityError','topic','doesHook','appId','store','9064FRjNSL','process-event-generational-job-error','36439bGAAYI','../../modules/errors','Hook','config','aid','processWebHookEvent','../telemetry','defineProperty','taskService','mapActivityAttributes','process','doPassThrough','hook-get-state-error','getHookRule','207663dQrEwu','11225247eDEmDU','transact','TelemetryService','processEvent','endActivitySpan','GenerationalError','duplicate','1066475IIlEwW','36PfXEor','hook-collation-error','InactiveJobError','SUCCESS','../../types/stream','./activity','getHookRules','setState','34ZXTHCq','doHook','error','metadata','expire','resolve','app.activity.mids','sleep','length','hook-inactive-job-error','adjacencyList','mapJobData','hook-process-error','setStatus','10112720SbpUAx','CollatorService','data','hook-process-end','verifyEntry','mapOutputData','info','processTimeHookEvent','CollationError','../collator','exec','gid','registerHook','StreamStatus','hook-collation-overage','hook-process-web-hook-event','engine','debug','setActivityAttributes','hook','registerTimeHook','jid','dad','transition','Pipe','deleteWebHookSignal','registerWebHook','Activity','GetStateError','processWebHookSignal','HMSH_IS_CLUSTER','5382LHjACY','context','resolveDad','logger','7OErved','1160970VvLFyy'];a=function(){return A;};return a();}(function(c,d){const q=b,e=c();while(!![]){try{const f=-parseInt(q(0x103))/0x1*(parseInt(q(0xc9))/0x2)+parseInt(q(0xb8))/0x3*(-parseInt(q(0xc1))/0x4)+parseInt(q(0xc0))/0x5+-parseInt(q(0xfb))/0x6*(-parseInt(q(0xfa))/0x7)+-parseInt(q(0x101))/0x8*(parseInt(q(0xf6))/0x9)+parseInt(q(0xd7))/0xa+parseInt(q(0xb9))/0xb;if(f===d)break;else e['push'](e['shift']());}catch(g){e['push'](e['shift']());}}}(a,0x7e999));Object[r(0xb1)](exports,'__esModule',{'value':!0x0}),exports[r(0x105)]=void 0x0;const enums_1=require('../../modules/enums'),errors_1=require(r(0x104)),collator_1=require(r(0xe0)),pipe_1=require('../pipe'),task_1=require('../task'),telemetry_1=require(r(0xb0)),stream_1=require(r(0xc5)),activity_1=require(r(0xc6));function b(c,d){const e=a();return b=function(f,g){f=f-0xaf;let h=e[f];return h;},b(c,d);}class Hook extends activity_1[r(0xf2)]{constructor(c,d,f,g,h,j){super(c,d,f,g,h,j);}async[r(0xb4)](){const s=r;let c;this[s(0xf9)][s(0xe8)]('hook-process',{'jid':this[s(0xf7)][s(0xcc)][s(0xec)],'gid':this[s(0xf7)]['metadata'][s(0xe2)],'aid':this[s(0xcc)][s(0x107)]});try{return await this[s(0xdb)](),c=new telemetry_1[(s(0xbb))](this[s(0xe7)][s(0xff)],this['config'],this['metadata'],this[s(0xf7)]),c['startActivitySpan'](this['leg']),this['doesHook']()?await this[s(0xca)](c):await this[s(0xb5)](c),this[s(0xf7)][s(0xcc)]['aid'];}catch(d){if(d instanceof errors_1[s(0xc3)])return void this[s(0xf9)][s(0xcb)](s(0xd2),{'error':d});if(d instanceof errors_1[s(0xbe)])return void this[s(0xf9)][s(0xdd)](s(0x102),{'error':d});if(d instanceof errors_1[s(0xf3)])return void this[s(0xf9)][s(0xcb)](s(0xb6),{'error':d});if(d instanceof errors_1[s(0xdf)]){if(s(0xbf)===d['fault'])return void this[s(0xf9)][s(0xdd)](s(0xe5),{'job_id':this[s(0xf7)]['metadata'][s(0xec)],'guid':this[s(0xf7)][s(0xcc)]['guid']});this[s(0xf9)][s(0xcb)](s(0xc2),{'error':d});}else this[s(0xf9)][s(0xcb)](s(0xd5),{'error':d});throw c?.[s(0xfc)](d['message']),d;}finally{c?.[s(0xbd)](),this['logger']['debug'](s(0xda),{'jid':this[s(0xf7)][s(0xcc)][s(0xec)],'gid':this['context'][s(0xcc)][s(0xe2)],'aid':this['metadata']['aid']});}}[r(0xfe)](){const t=r;if(this[t(0x106)]['sleep']){const c=pipe_1[t(0xef)][t(0xce)](this[t(0x106)]['sleep'],this[t(0xf7)]);return!isNaN(c)&&Number(c)>0x0;}return!!this['config'][t(0xea)]?.[t(0xfd)];}async[r(0xca)](c){const u=r,d=this['store'][u(0xba)]();await this['registerHook'](enums_1[u(0xf5)]?void 0x0:d),this[u(0xdc)](),this[u(0xd4)](),await this[u(0xc8)](d),await collator_1[u(0xd8)]['authorizeReentry'](this,d),await this[u(0xd6)](0x0,d),await d[u(0xe1)](),c['mapActivityAttributes']();}async[r(0xb5)](c){const v=r,d=this[v(0x100)][v(0xba)]();let f;this['adjacencyList']=await this['filterAdjacent'](),this[v(0xdc)](),this[v(0xd4)](),await this[v(0xc8)](d),await collator_1[v(0xd8)]['notarizeEarlyCompletion'](this,d),await this[v(0xd6)](this[v(0xd3)][v(0xd1)]-0x1,d),f=await d[v(0xe1)](),c[v(0xb3)]();const g=this['resolveStatus'](f),h={'app.job.jss':g},j=await this[v(0xee)](this[v(0xd3)],g);j['length']&&(h[v(0xcf)]=j['join'](',')),c[v(0xe9)](h);}async[r(0xb7)](c){const w=r,d=await this['store'][w(0xc7)]();return d?.[c]?.[0x0];}async[r(0xe3)](c){const x=r;if(this['config'][x(0xea)]?.[x(0xfd)])return await this['engine'][x(0xb2)][x(0xf1)](this[x(0x106)]['hook']['topic'],this['context'],this[x(0xf8)](),this[x(0xf7)][x(0xcc)][x(0xcd)],c);if(this[x(0x106)][x(0xd0)]){const d=pipe_1['Pipe'][x(0xce)](this['config'][x(0xd0)],this[x(0xf7)]);return await this[x(0xe7)][x(0xb2)][x(0xeb)](this[x(0xf7)]['metadata']['jid'],this['context'][x(0xcc)][x(0xe2)],''+this[x(0xcc)]['aid']+(this[x(0xcc)][x(0xed)]||''),x(0xd0),d,this[x(0xcc)][x(0xed)]||''),this[x(0xf7)]['metadata'][x(0xec)];}}async[r(0xaf)](d=stream_1[r(0xe4)][r(0xc4)],f=0xc8){const y=r;this['logger'][y(0xe8)](y(0xe6),{'topic':this['config'][y(0xea)]['topic'],'aid':this[y(0xcc)][y(0x107)],'status':d,'code':f});const g=new task_1['TaskService'](this[y(0x100)],this[y(0xf9)]),h={...this[y(0xd9)]},j=await g[y(0xf4)](this[y(0x106)][y(0xea)][y(0xfd)],h);if(j){const [k,l,m,p]=j;this[y(0xf7)][y(0xcc)]['jid']=k,this[y(0xf7)][y(0xcc)]['gid']=p,this[y(0xf7)]['metadata']['dad']=m,await this['processEvent'](d,f,y(0xea)),0xc8===f&&await g[y(0xf0)](this[y(0x106)][y(0xea)][y(0xfd)],h);}}async[r(0xde)](c){const z=r;this['logger'][z(0xe8)]('hook-process-time-hook-event',{'jid':c,'gid':this[z(0xf7)]['metadata']['gid'],'aid':this[z(0xcc)][z(0x107)]}),await this[z(0xbc)](stream_1[z(0xe4)][z(0xc4)],0xc8,z(0xea));}}exports[r(0x105)]=Hook;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Hook = void 0;
4
+ const enums_1 = require("../../modules/enums");
5
+ const errors_1 = require("../../modules/errors");
6
+ const collator_1 = require("../collator");
7
+ const pipe_1 = require("../pipe");
8
+ const task_1 = require("../task");
9
+ const telemetry_1 = require("../telemetry");
10
+ const stream_1 = require("../../types/stream");
11
+ const activity_1 = require("./activity");
12
+ /**
13
+ * Supports `signal hook`, `time hook`, and `cycle hook` patterns
14
+ */
15
+ class Hook extends activity_1.Activity {
16
+ constructor(config, data, metadata, hook, engine, context) {
17
+ super(config, data, metadata, hook, engine, context);
18
+ }
19
+ //******** INITIAL ENTRY POINT (A) ********//
20
+ async process() {
21
+ this.logger.debug('hook-process', {
22
+ jid: this.context.metadata.jid,
23
+ gid: this.context.metadata.gid,
24
+ aid: this.metadata.aid,
25
+ });
26
+ let telemetry;
27
+ try {
28
+ await this.verifyEntry();
29
+ telemetry = new telemetry_1.TelemetryService(this.engine.appId, this.config, this.metadata, this.context);
30
+ telemetry.startActivitySpan(this.leg);
31
+ if (this.doesHook()) {
32
+ //sleep and wait to awaken upon a signal
33
+ await this.doHook(telemetry);
34
+ }
35
+ else {
36
+ //end the activity and transition to its children
37
+ await this.doPassThrough(telemetry);
38
+ }
39
+ return this.context.metadata.aid;
40
+ }
41
+ catch (error) {
42
+ if (error instanceof errors_1.InactiveJobError) {
43
+ this.logger.error('hook-inactive-job-error', { error });
44
+ return;
45
+ }
46
+ else if (error instanceof errors_1.GenerationalError) {
47
+ this.logger.info('process-event-generational-job-error', { error });
48
+ return;
49
+ }
50
+ else if (error instanceof errors_1.GetStateError) {
51
+ this.logger.error('hook-get-state-error', { error });
52
+ return;
53
+ }
54
+ else if (error instanceof errors_1.CollationError) {
55
+ if (error.fault === 'duplicate') {
56
+ this.logger.info('hook-collation-overage', {
57
+ job_id: this.context.metadata.jid,
58
+ guid: this.context.metadata.guid,
59
+ });
60
+ return;
61
+ }
62
+ //unknown collation error
63
+ this.logger.error('hook-collation-error', { error });
64
+ }
65
+ else {
66
+ this.logger.error('hook-process-error', { error });
67
+ }
68
+ telemetry?.setActivityError(error.message);
69
+ throw error;
70
+ }
71
+ finally {
72
+ telemetry?.endActivitySpan();
73
+ this.logger.debug('hook-process-end', {
74
+ jid: this.context.metadata.jid,
75
+ gid: this.context.metadata.gid,
76
+ aid: this.metadata.aid,
77
+ });
78
+ }
79
+ }
80
+ /**
81
+ * does this activity use a time-hook or web-hook
82
+ */
83
+ doesHook() {
84
+ if (this.config.sleep) {
85
+ const duration = pipe_1.Pipe.resolve(this.config.sleep, this.context);
86
+ return !isNaN(duration) && Number(duration) > 0;
87
+ }
88
+ return !!this.config.hook?.topic;
89
+ }
90
+ async doHook(telemetry) {
91
+ const transaction = this.store.transact();
92
+ //call registerHook separately if in cluster mode
93
+ //(ok to run this command multiple times if it fails),
94
+ //but the commands that follow must exec as a transaction
95
+ await this.registerHook(enums_1.HMSH_IS_CLUSTER ? undefined : transaction);
96
+ this.mapOutputData();
97
+ this.mapJobData();
98
+ await this.setState(transaction);
99
+ await collator_1.CollatorService.authorizeReentry(this, transaction);
100
+ await this.setStatus(0, transaction);
101
+ await transaction.exec();
102
+ telemetry.mapActivityAttributes();
103
+ }
104
+ async doPassThrough(telemetry) {
105
+ const transaction = this.store.transact();
106
+ let multiResponse;
107
+ this.adjacencyList = await this.filterAdjacent();
108
+ this.mapOutputData();
109
+ this.mapJobData();
110
+ await this.setState(transaction);
111
+ await collator_1.CollatorService.notarizeEarlyCompletion(this, transaction);
112
+ await this.setStatus(this.adjacencyList.length - 1, transaction);
113
+ multiResponse = (await transaction.exec());
114
+ telemetry.mapActivityAttributes();
115
+ const jobStatus = this.resolveStatus(multiResponse);
116
+ const attrs = { 'app.job.jss': jobStatus };
117
+ const messageIds = await this.transition(this.adjacencyList, jobStatus);
118
+ if (messageIds.length) {
119
+ attrs['app.activity.mids'] = messageIds.join(',');
120
+ }
121
+ telemetry.setActivityAttributes(attrs);
122
+ }
123
+ async getHookRule(topic) {
124
+ const rules = await this.store.getHookRules();
125
+ return rules?.[topic]?.[0];
126
+ }
127
+ async registerHook(transaction) {
128
+ if (this.config.hook?.topic) {
129
+ return await this.engine.taskService.registerWebHook(this.config.hook.topic, this.context, this.resolveDad(), this.context.metadata.expire, transaction);
130
+ }
131
+ else if (this.config.sleep) {
132
+ const duration = pipe_1.Pipe.resolve(this.config.sleep, this.context);
133
+ await this.engine.taskService.registerTimeHook(this.context.metadata.jid, this.context.metadata.gid, `${this.metadata.aid}${this.metadata.dad || ''}`, 'sleep', duration, this.metadata.dad || '');
134
+ return this.context.metadata.jid;
135
+ }
136
+ }
137
+ //******** SIGNAL RE-ENTRY POINT ********//
138
+ async processWebHookEvent(status = stream_1.StreamStatus.SUCCESS, code = 200) {
139
+ this.logger.debug('hook-process-web-hook-event', {
140
+ topic: this.config.hook.topic,
141
+ aid: this.metadata.aid,
142
+ status,
143
+ code,
144
+ });
145
+ const taskService = new task_1.TaskService(this.store, this.logger);
146
+ const data = { ...this.data };
147
+ const signal = await taskService.processWebHookSignal(this.config.hook.topic, data);
148
+ if (signal) {
149
+ const [jobId, _aid, dad, gId] = signal;
150
+ this.context.metadata.jid = jobId;
151
+ this.context.metadata.gid = gId;
152
+ this.context.metadata.dad = dad;
153
+ await this.processEvent(status, code, 'hook');
154
+ if (code === 200) {
155
+ await taskService.deleteWebHookSignal(this.config.hook.topic, data);
156
+ } //else => 202/keep alive
157
+ } //else => already resolved
158
+ }
159
+ async processTimeHookEvent(jobId) {
160
+ this.logger.debug('hook-process-time-hook-event', {
161
+ jid: jobId,
162
+ gid: this.context.metadata.gid,
163
+ aid: this.metadata.aid,
164
+ });
165
+ await this.processEvent(stream_1.StreamStatus.SUCCESS, 200, 'hook');
166
+ }
167
+ }
168
+ exports.Hook = Hook;
@@ -1 +1,20 @@
1
- 'use strict';const i=b;(function(c,d){const h=b,e=c();while(!![]){try{const f=-parseInt(h(0x1a3))/0x1*(-parseInt(h(0x19b))/0x2)+-parseInt(h(0x198))/0x3*(-parseInt(h(0x197))/0x4)+-parseInt(h(0x19c))/0x5*(-parseInt(h(0x1ab))/0x6)+-parseInt(h(0x1a0))/0x7+-parseInt(h(0x193))/0x8*(parseInt(h(0x19a))/0x9)+parseInt(h(0x1a9))/0xa+parseInt(h(0x19e))/0xb*(-parseInt(h(0x196))/0xc);if(f===d)break;else e['push'](e['shift']());}catch(g){e['push'](e['shift']());}}}(a,0x9a800));function b(c,d){const e=a();return b=function(f,g){f=f-0x191;let h=e[f];return h;},b(c,d);}Object[i(0x1a5)](exports,'__esModule',{'value':!0x0});const activity_1=require('./activity'),await_1=require(i(0x1a6)),cycle_1=require(i(0x195)),hook_1=require(i(0x191)),interrupt_1=require(i(0x1a2)),signal_1=require(i(0x1a4)),trigger_1=require(i(0x192)),worker_1=require('./worker');function a(){const j=['defineProperty','./await','Cycle','Trigger','1299420ClZlKH','Signal','6rDIRwf','./hook','./trigger','1425144lOSSLs','Interrupt','./cycle','84aUesUH','105244TupStL','87GYDveN','Activity','36CxgbVG','1510108YoUgih','3234295aMEkSx','Await','545963poorpW','Hook','4214273aVXYqD','default','./interrupt','1HJROYL','./signal'];a=function(){return j;};return a();}exports[i(0x1a1)]={'activity':activity_1[i(0x199)],'await':await_1[i(0x19d)],'cycle':cycle_1[i(0x1a7)],'hook':hook_1[i(0x19f)],'interrupt':interrupt_1[i(0x194)],'signal':signal_1[i(0x1aa)],'trigger':trigger_1[i(0x1a8)],'worker':worker_1['Worker']};
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const activity_1 = require("./activity");
4
+ const await_1 = require("./await");
5
+ const cycle_1 = require("./cycle");
6
+ const hook_1 = require("./hook");
7
+ const interrupt_1 = require("./interrupt");
8
+ const signal_1 = require("./signal");
9
+ const trigger_1 = require("./trigger");
10
+ const worker_1 = require("./worker");
11
+ exports.default = {
12
+ activity: activity_1.Activity,
13
+ await: await_1.Await,
14
+ cycle: cycle_1.Cycle,
15
+ hook: hook_1.Hook,
16
+ interrupt: interrupt_1.Interrupt,
17
+ signal: signal_1.Signal,
18
+ trigger: trigger_1.Trigger,
19
+ worker: worker_1.Worker,
20
+ };
@@ -1 +1,158 @@
1
- 'use strict';const m=b;(function(c,d){const l=b,e=c();while(!![]){try{const f=-parseInt(l(0x193))/0x1+parseInt(l(0x1e1))/0x2+-parseInt(l(0x1d8))/0x3*(parseInt(l(0x1ab))/0x4)+parseInt(l(0x19a))/0x5*(-parseInt(l(0x1a9))/0x6)+-parseInt(l(0x1e4))/0x7+parseInt(l(0x1a2))/0x8+-parseInt(l(0x1ce))/0x9*(-parseInt(l(0x1b7))/0xa);if(f===d)break;else e['push'](e['shift']());}catch(g){e['push'](e['shift']());}}}(a,0x5b3c5));Object[m(0x1dd)](exports,m(0x1a3),{'value':!0x0}),exports['Interrupt']=void 0x0;function b(c,d){const e=a();return b=function(f,g){f=f-0x193;let h=e[f];return h;},b(c,d);}function a(){const t=['adjacencyList','transition','notarizeEarlyCompletion','exec','topic','Pipe','duplicate','159130Pfhqre','setActivityError','throw','startActivitySpan','resolveStatus','endActivitySpan','info','engine','interrupt','context','../../modules/errors','transact','guid','../telemetry','expire','error','mapActivityAttributes','interrupt-inactive-job-error','interrupt-collation-error','gid','code','output','setStatus','567jltUyk','stack','store','logger','jid','reason','appId','isInterruptingSelf','job','target','6uEiNIV','length','Activity','descend','interrupt-process-end','defineProperty','config','interruptAnother','setState','662036aYlMEm','CollationError','../pipe','2739611QVCqjY','722576PzRvbC','TelemetryService','interruptSelf','interrupt-collation-overage','../collator','process','mapOutputData','5VQXccN','setActivityAttributes','aid','resolve','mapJobData','debug','interrupt-process-error','fault','2976608pzliay','__esModule','join','Interrupt','metadata','InactiveJobError','maps','519462JCihfX','./activity','262772TUrwKN','filterAdjacent','interrupt-get-state-error','GetStateError','GenerationalError'];a=function(){return t;};return a();}const errors_1=require(m(0x1c1)),collator_1=require(m(0x197)),pipe_1=require(m(0x1e3)),telemetry_1=require(m(0x1c4)),activity_1=require(m(0x1aa));class Interrupt extends activity_1[m(0x1da)]{constructor(c,d,f,g,h,j){super(c,d,f,g,h,j);}async[m(0x198)](){const n=m;let c;this[n(0x1d1)][n(0x19f)]('interrupt-process',{'jid':this['context'][n(0x1a6)][n(0x1d2)],'gid':this[n(0x1c0)][n(0x1a6)][n(0x1ca)],'aid':this[n(0x1a6)][n(0x19c)]});try{await this['verifyEntry'](),c=new telemetry_1[(n(0x194))](this[n(0x1be)][n(0x1d4)],this[n(0x1de)],this[n(0x1a6)],this[n(0x1c0)]),c[n(0x1ba)](this['leg']),this[n(0x1d5)]()?await this[n(0x195)](c):await this[n(0x1df)](c);}catch(d){if(d instanceof errors_1[n(0x1a7)])return void this[n(0x1d1)]['error'](n(0x1c8),{'error':d});if(d instanceof errors_1[n(0x1af)])return void this['logger'][n(0x1bd)]('process-event-generational-job-error',{'error':d});if(d instanceof errors_1[n(0x1ae)])return void this[n(0x1d1)]['error'](n(0x1ad),{'error':d});if(d instanceof errors_1[n(0x1e2)]){if(n(0x1b6)===d[n(0x1a1)])return void this['logger']['info'](n(0x196),{'job_id':this[n(0x1c0)][n(0x1a6)][n(0x1d2)],'guid':this[n(0x1c0)]['metadata'][n(0x1c3)]});this[n(0x1d1)][n(0x1c6)](n(0x1c9),{'error':d});}else this[n(0x1d1)][n(0x1c6)](n(0x1a0),{'error':d});throw c?.[n(0x1b8)](d['message']),d;}finally{c?.[n(0x1bc)](),this['logger']['debug'](n(0x1dc),{'jid':this[n(0x1c0)][n(0x1a6)]['jid'],'gid':this[n(0x1c0)][n(0x1a6)][n(0x1ca)],'aid':this[n(0x1a6)][n(0x19c)]});}}async[m(0x195)](c){const o=m;this[o(0x1de)][o(0x1d6)]?.[o(0x1a8)]&&(this[o(0x19e)](),await this[o(0x1e0)]());const d=await this[o(0x1bf)]();c[o(0x1c7)]();const f=this['store'][o(0x1c2)]();await collator_1['CollatorService'][o(0x1b2)](this,f),await this[o(0x1cd)](-0x1,f);const g=await f[o(0x1b3)](),h=this[o(0x1bb)](g);return c['setActivityAttributes']({'app.activity.mid':d,'app.job.jss':h}),this['context'][o(0x1a6)]['aid'];}async[m(0x1df)](c){const p=m,d={'app.activity.mid':await this['interrupt']()};if(c[p(0x1c7)](),this[p(0x1b0)]=await this[p(0x1ac)](),this[p(0x1de)]['job']?.['maps']||this['config'][p(0x1cc)]?.[p(0x1a8)]){this[p(0x199)](),this['mapJobData']();const k=this[p(0x1d0)]['transact']();await this['setState'](k);}const f=this['store'][p(0x1c2)]();await collator_1['CollatorService'][p(0x1b2)](this,f),await this[p(0x1cd)](this[p(0x1b0)][p(0x1d9)]-0x1,f);const g=await f['exec'](),h=this[p(0x1bb)](g);d['app.job.jss']=h;const j=await this[p(0x1b1)](this[p(0x1b0)],h);return j[p(0x1d9)]&&(d['app.activity.mids']=j[p(0x1a4)](',')),c[p(0x19b)](d),this[p(0x1c0)][p(0x1a6)]['aid'];}['isInterruptingSelf'](){const q=m;if(!this['config']['target'])return!0x0;return pipe_1[q(0x1b5)][q(0x19d)](this[q(0x1de)][q(0x1d7)],this[q(0x1c0)])==this[q(0x1c0)][q(0x1a6)][q(0x1d2)];}['resolveInterruptOptions'](){const r=m;return{'reason':void 0x0!==this[r(0x1de)][r(0x1d3)]?pipe_1['Pipe'][r(0x19d)](this[r(0x1de)][r(0x1d3)],this[r(0x1c0)]):void 0x0,'throw':void 0x0!==this[r(0x1de)]['throw']?pipe_1[r(0x1b5)][r(0x19d)](this[r(0x1de)][r(0x1b9)],this['context']):void 0x0,'descend':void 0x0!==this[r(0x1de)][r(0x1db)]?pipe_1[r(0x1b5)][r(0x19d)](this[r(0x1de)]['descend'],this[r(0x1c0)]):void 0x0,'code':void 0x0!==this[r(0x1de)][r(0x1cb)]?pipe_1[r(0x1b5)][r(0x19d)](this[r(0x1de)]['code'],this[r(0x1c0)]):void 0x0,'expire':void 0x0!==this[r(0x1de)][r(0x1c5)]?pipe_1[r(0x1b5)][r(0x19d)](this[r(0x1de)]['expire'],this[r(0x1c0)]):void 0x0,'stack':void 0x0!==this[r(0x1de)][r(0x1cf)]?pipe_1['Pipe'][r(0x19d)](this['config'][r(0x1cf)],this[r(0x1c0)]):void 0x0};}async[m(0x1bf)](){const s=m,c=this['resolveInterruptOptions']();return await this[s(0x1be)][s(0x1bf)](void 0x0!==this[s(0x1de)][s(0x1b4)]?pipe_1['Pipe'][s(0x19d)](this[s(0x1de)][s(0x1b4)],this[s(0x1c0)]):this['context'][s(0x1a6)]['tpc'],void 0x0!==this[s(0x1de)][s(0x1d7)]?pipe_1[s(0x1b5)][s(0x19d)](this[s(0x1de)][s(0x1d7)],this['context']):this[s(0x1c0)][s(0x1a6)][s(0x1d2)],c);}}exports[m(0x1a5)]=Interrupt;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Interrupt = void 0;
4
+ const errors_1 = require("../../modules/errors");
5
+ const collator_1 = require("../collator");
6
+ const pipe_1 = require("../pipe");
7
+ const telemetry_1 = require("../telemetry");
8
+ const activity_1 = require("./activity");
9
+ class Interrupt extends activity_1.Activity {
10
+ constructor(config, data, metadata, hook, engine, context) {
11
+ super(config, data, metadata, hook, engine, context);
12
+ }
13
+ //******** LEG 1 ENTRY ********//
14
+ async process() {
15
+ this.logger.debug('interrupt-process', {
16
+ jid: this.context.metadata.jid,
17
+ gid: this.context.metadata.gid,
18
+ aid: this.metadata.aid,
19
+ });
20
+ let telemetry;
21
+ try {
22
+ await this.verifyEntry();
23
+ telemetry = new telemetry_1.TelemetryService(this.engine.appId, this.config, this.metadata, this.context);
24
+ telemetry.startActivitySpan(this.leg);
25
+ if (this.isInterruptingSelf()) {
26
+ await this.interruptSelf(telemetry);
27
+ }
28
+ else {
29
+ await this.interruptAnother(telemetry);
30
+ }
31
+ }
32
+ catch (error) {
33
+ if (error instanceof errors_1.InactiveJobError) {
34
+ this.logger.error('interrupt-inactive-job-error', { error });
35
+ return;
36
+ }
37
+ else if (error instanceof errors_1.GenerationalError) {
38
+ this.logger.info('process-event-generational-job-error', { error });
39
+ return;
40
+ }
41
+ else if (error instanceof errors_1.GetStateError) {
42
+ this.logger.error('interrupt-get-state-error', { error });
43
+ return;
44
+ }
45
+ else if (error instanceof errors_1.CollationError) {
46
+ if (error.fault === 'duplicate') {
47
+ this.logger.info('interrupt-collation-overage', {
48
+ job_id: this.context.metadata.jid,
49
+ guid: this.context.metadata.guid,
50
+ });
51
+ return;
52
+ }
53
+ //unknown collation error
54
+ this.logger.error('interrupt-collation-error', { error });
55
+ }
56
+ else {
57
+ this.logger.error('interrupt-process-error', { error });
58
+ }
59
+ telemetry?.setActivityError(error.message);
60
+ throw error;
61
+ }
62
+ finally {
63
+ telemetry?.endActivitySpan();
64
+ this.logger.debug('interrupt-process-end', {
65
+ jid: this.context.metadata.jid,
66
+ gid: this.context.metadata.gid,
67
+ aid: this.metadata.aid,
68
+ });
69
+ }
70
+ }
71
+ async interruptSelf(telemetry) {
72
+ // Apply final updates to THIS job's state
73
+ if (this.config.job?.maps) {
74
+ this.mapJobData();
75
+ await this.setState();
76
+ }
77
+ // Interrupt THIS job
78
+ const messageId = await this.interrupt();
79
+ // Notarize completion and log
80
+ telemetry.mapActivityAttributes();
81
+ const transaction = this.store.transact();
82
+ await collator_1.CollatorService.notarizeEarlyCompletion(this, transaction);
83
+ await this.setStatus(-1, transaction);
84
+ const txResponse = (await transaction.exec());
85
+ const jobStatus = this.resolveStatus(txResponse);
86
+ telemetry.setActivityAttributes({
87
+ 'app.activity.mid': messageId,
88
+ 'app.job.jss': jobStatus,
89
+ });
90
+ return this.context.metadata.aid;
91
+ }
92
+ async interruptAnother(telemetry) {
93
+ // Interrupt ANOTHER job
94
+ const messageId = await this.interrupt();
95
+ const attrs = { 'app.activity.mid': messageId };
96
+ // Apply updates to THIS job's state
97
+ telemetry.mapActivityAttributes();
98
+ this.adjacencyList = await this.filterAdjacent();
99
+ if (this.config.job?.maps || this.config.output?.maps) {
100
+ this.mapOutputData();
101
+ this.mapJobData();
102
+ const transaction = this.store.transact();
103
+ await this.setState(transaction);
104
+ }
105
+ // Notarize completion
106
+ const transaction = this.store.transact();
107
+ await collator_1.CollatorService.notarizeEarlyCompletion(this, transaction);
108
+ await this.setStatus(this.adjacencyList.length - 1, transaction);
109
+ const txResponse = (await transaction.exec());
110
+ const jobStatus = this.resolveStatus(txResponse);
111
+ attrs['app.job.jss'] = jobStatus;
112
+ // Transition next generation and log
113
+ const messageIds = await this.transition(this.adjacencyList, jobStatus);
114
+ if (messageIds.length) {
115
+ attrs['app.activity.mids'] = messageIds.join(',');
116
+ }
117
+ telemetry.setActivityAttributes(attrs);
118
+ return this.context.metadata.aid;
119
+ }
120
+ isInterruptingSelf() {
121
+ if (!this.config.target) {
122
+ return true;
123
+ }
124
+ const resolvedJob = pipe_1.Pipe.resolve(this.config.target, this.context);
125
+ return resolvedJob == this.context.metadata.jid;
126
+ }
127
+ resolveInterruptOptions() {
128
+ return {
129
+ reason: this.config.reason !== undefined
130
+ ? pipe_1.Pipe.resolve(this.config.reason, this.context)
131
+ : undefined,
132
+ throw: this.config.throw !== undefined
133
+ ? pipe_1.Pipe.resolve(this.config.throw, this.context)
134
+ : undefined,
135
+ descend: this.config.descend !== undefined
136
+ ? pipe_1.Pipe.resolve(this.config.descend, this.context)
137
+ : undefined,
138
+ code: this.config.code !== undefined
139
+ ? pipe_1.Pipe.resolve(this.config.code, this.context)
140
+ : undefined,
141
+ expire: this.config.expire !== undefined
142
+ ? pipe_1.Pipe.resolve(this.config.expire, this.context)
143
+ : undefined,
144
+ stack: this.config.stack !== undefined
145
+ ? pipe_1.Pipe.resolve(this.config.stack, this.context)
146
+ : undefined,
147
+ };
148
+ }
149
+ async interrupt() {
150
+ const options = this.resolveInterruptOptions();
151
+ return await this.engine.interrupt(this.config.topic !== undefined
152
+ ? pipe_1.Pipe.resolve(this.config.topic, this.context)
153
+ : this.context.metadata.tpc, this.config.target !== undefined
154
+ ? pipe_1.Pipe.resolve(this.config.target, this.context)
155
+ : this.context.metadata.jid, options);
156
+ }
157
+ }
158
+ exports.Interrupt = Interrupt;