@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,180 @@
1
- 'use strict';function b(c,d){const e=a();return b=function(f,g){f=f-0x1d0;let h=e[f];return h;},b(c,d);}const q=b;function a(){const y=['length','all','xadd','expire','hincrbyfloat','hsetnx','16qedZar','2965752PpZTmY','lrange','defineProperty','27nSssLe','1026BlQRvm','__esModule','xlen','lpop','sendCommand','4527465FOBpKS','./_base','RedisStoreBase','storeClient','2837070YThMDS','setnxex','WORK_ITEMS','hmget','62300KrhMyH','xack','forEach','exec','hGetAllResult','1572633DEZNmC','hget','map','hincrby','command','scan','set','args','zadd','xdel','zrange','hdel','xgroup','hgetall','string','1957490YAHgmi','addTaskQueues','1571540CApFVX','commands','hscan','IORedisStoreService','zrangebyscore','del','setnx','hset','xpending','isArray','multi'];a=function(){return y;};return a();}(function(c,d){const p=b,e=c();while(!![]){try{const f=parseInt(p(0x1f7))/0x1+parseInt(p(0x1ee))/0x2+-parseInt(p(0x1ea))/0x3+parseInt(p(0x1e0))/0x4*(-parseInt(p(0x208))/0x5)+-parseInt(p(0x1e5))/0x6*(-parseInt(p(0x1f2))/0x7)+-parseInt(p(0x1e1))/0x8+-parseInt(p(0x1e4))/0x9*(parseInt(p(0x206))/0xa);if(f===d)break;else e['push'](e['shift']());}catch(g){e['push'](e['shift']());}}}(a,0xc08eb));Object[q(0x1e3)](exports,q(0x1e6),{'value':!0x0}),exports['IORedisStoreService']=void 0x0;const key_1=require('../../../../modules/key'),enums_1=require('../../../../modules/enums'),_base_1=require(q(0x1eb));class IORedisStoreService extends _base_1[q(0x1ec)]{constructor(c){const r=q;super(c),this[r(0x1d0)]={'get':'get','set':r(0x1fd),'setnx':r(0x1d5),'del':r(0x1d4),'expire':r(0x1dd),'hset':r(0x1d6),'hscan':r(0x1d1),'hsetnx':r(0x1df),'hincrby':r(0x1fa),'hdel':r(0x202),'hget':'hget','hmget':r(0x1f1),'hgetall':r(0x204),'hincrbyfloat':r(0x1de),'zrank':'zrank','zrange':r(0x201),'zrangebyscore_withscores':r(0x1d3),'zrangebyscore':'zrangebyscore','zrem':'zrem','zadd':r(0x1ff),'lmove':'lmove','lpop':r(0x1e8),'lrange':r(0x1e2),'rename':'rename','rpush':'rpush','scan':r(0x1fc),'xack':r(0x1f3),'xdel':r(0x200)};}['transact'](){const s=q,c=this;if(enums_1['HMSH_IS_CLUSTER']){const d=[],f=(h,i)=>(d['push']({'command':h,'args':i}),g),g={'sendCommand':h=>c[s(0x1ed)][s(0x1e9)](h),async 'exec'(){const t=s;if(0x0===d[t(0x1da)])return[];if(d['every'](h=>h[t(0x1fe)][0x0]===d[0x0][t(0x1fe)][0x0])){const h=c[t(0x1ed)][t(0x1d9)]();return d[t(0x1f4)](i=>h[i[t(0x1fb)]](...i[t(0x1fe)])),(await h[t(0x1f5)]())[t(0x1f9)](i=>i);}return Promise[t(0x1db)](d[t(0x1f9)](i=>c[t(0x1ed)][i[t(0x1fb)]](...i['args'])));},'xadd':(h,i,j,k)=>f(s(0x1dc),[h,i,j,k]),'xack':(h,i,j)=>f(s(0x1f3),[h,i,j]),'xdel':(h,i)=>f(s(0x200),[h,i]),'xlen':h=>f(s(0x1e7),[h]),'xpending':(h,j,k,l,m,o)=>f(s(0x1d7),[h,j,k,l,m,o]),'xclaim':(h,j,k,l,m,...o)=>f('xclaim',[h,j,k,l,m,...o]),'del':h=>f(s(0x1d4),[h]),'expire':function(h,i){const u=s;return f(u(0x1dd),[h,i]);},'hdel':(h,i)=>f(s(0x202),[h,i]),'hget':(h,i)=>f(s(0x1f8),[h,i]),'hgetall':h=>f(s(0x204),[h]),'hincrbyfloat':(h,i,j)=>f('hincrbyfloat',[h,i,j]),'hmget':(h,i)=>f(s(0x1f1),[h,i]),'hset':(h,i)=>f(s(0x1d6),[h,i]),'lrange':(h,i,j)=>f(s(0x1e2),[h,i,j]),'rpush':(h,i)=>f('rpush',[h,i]),'zadd':(...h)=>f(s(0x1ff),h),'xgroup':(h,i,j,k,l)=>f(s(0x203),[h,i,j,k,l])};return g;}return this[s(0x1ed)][s(0x1d9)]();}async['exec'](...c){const v=q,d=await this[v(0x1ed)]['call']['apply'](this[v(0x1ed)],c);return v(0x205)==typeof d?d:Array[v(0x1d8)](d)?(Array[v(0x1d8)](d[0x0]),d):d;}async[q(0x1ef)](c,d,f){const w=q,g=await this[w(0x1ed)][this[w(0x1d0)]['set']](c,d,'NX','EX',f['toString']());return this['isSuccessful'](g);}[q(0x1f6)](c){return c[0x1];}async[q(0x207)](c){const x=q,d=this['storeClient'][x(0x1d9)](),f=this['mintKey'](key_1['KeyType'][x(0x1f0)],{'appId':this['appId']});for(const g of c)d[x(0x1ff)](f,'NX',Date['now'](),g);await d[x(0x1f5)]();}}exports[q(0x1d2)]=IORedisStoreService;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IORedisStoreService = void 0;
4
+ const key_1 = require("../../../../modules/key");
5
+ const enums_1 = require("../../../../modules/enums");
6
+ const _base_1 = require("./_base");
7
+ class IORedisStoreService extends _base_1.RedisStoreBase {
8
+ constructor(storeClient) {
9
+ super(storeClient);
10
+ this.commands = {
11
+ get: 'get',
12
+ set: 'set',
13
+ setnx: 'setnx',
14
+ del: 'del',
15
+ expire: 'expire',
16
+ hset: 'hset',
17
+ hscan: 'hscan',
18
+ hsetnx: 'hsetnx',
19
+ hincrby: 'hincrby',
20
+ hdel: 'hdel',
21
+ hget: 'hget',
22
+ hmget: 'hmget',
23
+ hgetall: 'hgetall',
24
+ hincrbyfloat: 'hincrbyfloat',
25
+ zrank: 'zrank',
26
+ zrange: 'zrange',
27
+ zrangebyscore_withscores: 'zrangebyscore',
28
+ zrangebyscore: 'zrangebyscore',
29
+ zrem: 'zrem',
30
+ zadd: 'zadd',
31
+ lmove: 'lmove',
32
+ lpop: 'lpop',
33
+ lrange: 'lrange',
34
+ rename: 'rename',
35
+ rpush: 'rpush',
36
+ scan: 'scan',
37
+ xack: 'xack',
38
+ xdel: 'xdel',
39
+ };
40
+ }
41
+ /**
42
+ * When in cluster mode, the transact wrapper only
43
+ * sends commands to the same node/shard if they share a key.
44
+ * All other commands are sent simultaneouslyusing Promise.all
45
+ * and are then collated. this is effectiely a wrapper for
46
+ * `multi` but is closer to `pipeline` in terms of usage when
47
+ * promises are used.
48
+ */
49
+ transact() {
50
+ const my = this;
51
+ if (enums_1.HMSH_IS_CLUSTER) {
52
+ const commands = [];
53
+ const addCommand = (command, args) => {
54
+ commands.push({ command, args });
55
+ return multiInstance;
56
+ };
57
+ const multiInstance = {
58
+ sendCommand(command) {
59
+ return my.storeClient.sendCommand(command);
60
+ },
61
+ async exec() {
62
+ if (commands.length === 0)
63
+ return [];
64
+ const sameKey = commands.every((cmd) => {
65
+ return cmd.args[0] === commands[0].args[0];
66
+ });
67
+ if (sameKey) {
68
+ const multi = my.storeClient.multi();
69
+ commands.forEach((cmd) => multi[cmd.command](...cmd.args));
70
+ const results = await multi.exec();
71
+ return results.map((item) => item);
72
+ }
73
+ else {
74
+ return Promise.all(commands.map((cmd) => my.storeClient[cmd.command](...cmd.args)));
75
+ }
76
+ },
77
+ xadd(key, id, fields, message) {
78
+ return addCommand('xadd', [key, id, fields, message]);
79
+ },
80
+ xack(key, group, id) {
81
+ return addCommand('xack', [key, group, id]);
82
+ },
83
+ xdel(key, id) {
84
+ return addCommand('xdel', [key, id]);
85
+ },
86
+ xlen(key) {
87
+ return addCommand('xlen', [key]);
88
+ },
89
+ xpending(key, group, start, end, count, consumer) {
90
+ return addCommand('xpending', [
91
+ key,
92
+ group,
93
+ start,
94
+ end,
95
+ count,
96
+ consumer,
97
+ ]);
98
+ },
99
+ xclaim(key, group, consumer, minIdleTime, id, ...args) {
100
+ return addCommand('xclaim', [
101
+ key,
102
+ group,
103
+ consumer,
104
+ minIdleTime,
105
+ id,
106
+ ...args,
107
+ ]);
108
+ },
109
+ del(key) {
110
+ return addCommand('del', [key]);
111
+ },
112
+ expire: function (key, seconds) {
113
+ return addCommand('expire', [key, seconds]);
114
+ },
115
+ hdel(key, itemId) {
116
+ return addCommand('hdel', [key, itemId]);
117
+ },
118
+ hget(key, itemId) {
119
+ return addCommand('hget', [key, itemId]);
120
+ },
121
+ hgetall(key) {
122
+ return addCommand('hgetall', [key]);
123
+ },
124
+ hincrbyfloat(key, itemId, value) {
125
+ return addCommand('hincrbyfloat', [key, itemId, value]);
126
+ },
127
+ hmget(key, itemIds) {
128
+ return addCommand('hmget', [key, itemIds]);
129
+ },
130
+ hset(key, values) {
131
+ return addCommand('hset', [key, values]);
132
+ },
133
+ lrange(key, start, end) {
134
+ return addCommand('lrange', [key, start, end]);
135
+ },
136
+ rpush(key, value) {
137
+ return addCommand('rpush', [key, value]);
138
+ },
139
+ zadd(...args) {
140
+ return addCommand('zadd', args);
141
+ },
142
+ xgroup(command, key, groupName, id, mkStream) {
143
+ return addCommand('xgroup', [command, key, groupName, id, mkStream]);
144
+ },
145
+ };
146
+ return multiInstance;
147
+ }
148
+ return this.storeClient.multi();
149
+ }
150
+ async exec(...args) {
151
+ const response = await this.storeClient.call.apply(this.storeClient, args);
152
+ if (typeof response === 'string') {
153
+ return response;
154
+ }
155
+ else if (Array.isArray(response)) {
156
+ if (Array.isArray(response[0])) {
157
+ return response;
158
+ }
159
+ return response;
160
+ }
161
+ return response;
162
+ }
163
+ async setnxex(key, value, expireSeconds) {
164
+ const status = await this.storeClient[this.commands.set](key, value, 'NX', 'EX', expireSeconds.toString());
165
+ return this.isSuccessful(status);
166
+ }
167
+ hGetAllResult(result) {
168
+ //ioredis response signature is [null, {}] or [null, null]
169
+ return result[1];
170
+ }
171
+ async addTaskQueues(keys) {
172
+ const multi = this.storeClient.multi();
173
+ const zsetKey = this.mintKey(key_1.KeyType.WORK_ITEMS, { appId: this.appId });
174
+ for (const key of keys) {
175
+ multi.zadd(zsetKey, 'NX', Date.now(), key);
176
+ }
177
+ await multi.exec();
178
+ }
179
+ }
180
+ exports.IORedisStoreService = IORedisStoreService;
@@ -1 +1,199 @@
1
- 'use strict';const r=b;(function(c,d){const q=b,e=c();while(!![]){try{const f=-parseInt(q(0x1ed))/0x1+-parseInt(q(0x1d6))/0x2*(parseInt(q(0x201))/0x3)+parseInt(q(0x1f0))/0x4*(parseInt(q(0x1ef))/0x5)+-parseInt(q(0x1fd))/0x6*(-parseInt(q(0x1f8))/0x7)+parseInt(q(0x1ee))/0x8+parseInt(q(0x1d1))/0x9+-parseInt(q(0x1eb))/0xa;if(f===d)break;else e['push'](e['shift']());}catch(g){e['push'](e['shift']());}}}(a,0xac267));function b(c,d){const e=a();return b=function(f,g){f=f-0x1c7;let h=e[f];return h;},b(c,d);}Object[r(0x1d7)](exports,r(0x1d9),{'value':!0x0}),exports['RedisStoreService']=void 0x0;const enums_1=require(r(0x1d2)),_base_1=require(r(0x1cb));function a(){const E=['args','setnxex','SET','1024760YBLnGQ','LMOVE','946727OIprQe','132960gkLVAS','2530sVTNLA','7412kQODgO','zadd','HINCRBY','RENAME','zRangeByScore','XGROUP','HMSH_IS_CLUSTER','HDEL','92477FlmMAu','XDEL','commands','multi','XPENDING','186AxWqDp','RedisStoreService','storeClient','GET','3spWNeH','push','zrangebyscore','all','ZRANGE','EXPIRE','XLEN','map','ZADD','SCAN','./_base','LRANGE','toString','SETNX','HMGET','HINCRBYFLOAT','10996839RvYRBQ','../../../../modules/enums','sendCommand','HSCAN','XCLAIM','1662640HZyqVu','defineProperty','ZRANGEBYSCORE','__esModule','exec','HGETALL','HGET','XACK','DEL','transact','RPUSH','Function\x20not\x20implemented.','length','toUpperCase','command','HSET','XADD','ZRANGEBYSCORE_WITHSCORES'];a=function(){return E;};return a();}class RedisStoreService extends _base_1['RedisStoreBase']{constructor(c){const s=r;super(c),this[s(0x1fa)]={'get':s(0x200),'set':s(0x1ea),'setnx':s(0x1ce),'del':s(0x1de),'expire':s(0x206),'hscan':s(0x1d4),'hset':s(0x1e5),'hsetnx':'HSETNX','hincrby':s(0x1f2),'hdel':'HDEL','hget':s(0x1dc),'hmget':s(0x1cf),'hgetall':s(0x1db),'hincrbyfloat':s(0x1d0),'zrange':s(0x205),'zrangebyscore_withscores':s(0x1e7),'zrangebyscore':s(0x1d8),'zrem':'ZREM','zadd':'ZADD','lmove':s(0x1ec),'lrange':'LRANGE','lpop':'LPOP','rename':s(0x1f3),'rpush':s(0x1e0),'scan':s(0x1ca),'xack':s(0x1dd),'xdel':s(0x1f9),'xlen':'XLEN'};}[r(0x1df)](){const t=r,c=this;if(enums_1[t(0x1f6)]){const d=[],f=(h,i)=>(d[t(0x202)]({'command':h[t(0x1e3)](),'args':i}),g),g={'sendCommand':(h,...i)=>c[t(0x1ff)][t(0x1d3)]([h,...i]),async 'exec'(){const u=t;if(0x0===d[u(0x1e2)])return[];if(d['every'](h=>h['args'][0x0]===d[0x0][u(0x1e8)][0x0])){const h=c[u(0x1ff)][u(0x1fb)]();return d['forEach'](i=>u(0x1c9)===i[u(0x1e4)]?h[u(0x1c9)](i[u(0x1e8)][0x0],i[u(0x1e8)][0x1],i[u(0x1e8)][0x2]):h[i['command']](...i[u(0x1e8)])),(await h[u(0x1da)]())[u(0x1c8)](i=>i);}return Promise[u(0x204)](d[u(0x1c8)](i=>u(0x1c9)===i[u(0x1e4)]?c[u(0x1ff)][u(0x1c9)](i[u(0x1e8)][0x0],i[u(0x1e8)][0x1],i['args'][0x2]):c[u(0x1ff)][i[u(0x1e4)]](...i[u(0x1e8)])));},'XADD':(h,i,j,k)=>f(t(0x1e6),[h,i,j,k]),'XACK':(h,i,j)=>f(t(0x1dd),[h,i,j]),'XDEL':(h,i)=>f(t(0x1f9),[h,i]),'XLEN':h=>f(t(0x1c7),[h]),'XCLAIM':(h,j,k,l,m,...p)=>f(t(0x1d5),[h,j,k,l,m,...p]),'XPENDING':(h,j,k,l,m,p)=>f(t(0x1fc),[h,j,k,l,m,p]),'DEL':function(h){return f('DEL',[h]);},'EXPIRE':function(h,i){const v=t;return f(v(0x206),[h,i]);},'HDEL':(h,i)=>f(t(0x1f7),[h,i]),'HGET':(h,i)=>f('HGET',[h,i]),'HGETALL':h=>f(t(0x1db),[h]),'HINCRBYFLOAT':(h,i,j)=>f('HINCRBYFLOAT',[h,i,j]),'HMGET':(h,i)=>f(t(0x1cf),[h,i]),'HSET':(h,i)=>f(t(0x1e5),[h,i]),'LRANGE':(h,i,j)=>f(t(0x1cc),[h,i,j]),'RPUSH':(h,i)=>f('RPUSH',[h,i]),'ZADD':(h,i,j)=>f(t(0x1c9),[h,i,j]),'XGROUP':(h,i,j,k,l)=>f(t(0x1f5),[h,i,j,k,l]),'EXISTS':function(h){const w=t;throw new Error(w(0x1e1));},'HMPUSH':function(h,i){const x=t;throw new Error(x(0x1e1));},'LPUSH':function(h,i){throw new Error('Function\x20not\x20implemented.');},'SET':function(h,i){const y=t;throw new Error(y(0x1e1));},'ZRANGE_WITHSCORES':function(h,i,j){throw new Error('Function\x20not\x20implemented.');},'ZRANK':function(h,i){throw new Error('Function\x20not\x20implemented.');},'ZSCORE':function(h,i){const z=t;throw new Error(z(0x1e1));}};return g;}return this[t(0x1ff)][t(0x1fb)]();}async[r(0x1da)](...c){const A=r;return await this[A(0x1ff)]['sendCommand'](c);}async[r(0x1e9)](c,d,f){const B=r,g=await this[B(0x1ff)][this[B(0x1fa)]['set']](c,d,{'NX':!0x0,'EX':f});return this['isSuccessful'](g);}async['zAdd'](c,d,f,g){const C=r;return await(g||this[C(0x1ff)])[this[C(0x1fa)][C(0x1f1)]](c,{'score':d,'value':f[C(0x1cd)]()});}async[r(0x1f4)](c,d,f){const D=r,g=await this['storeClient'][this[D(0x1fa)][D(0x203)]](c,d,f);return g?.[D(0x1e2)]>0x0?g[0x0]:null;}}exports[r(0x1fe)]=RedisStoreService;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RedisStoreService = void 0;
4
+ const enums_1 = require("../../../../modules/enums");
5
+ const _base_1 = require("./_base");
6
+ class RedisStoreService extends _base_1.RedisStoreBase {
7
+ constructor(storeClient) {
8
+ super(storeClient);
9
+ this.commands = {
10
+ get: 'GET',
11
+ set: 'SET',
12
+ setnx: 'SETNX',
13
+ del: 'DEL',
14
+ expire: 'EXPIRE',
15
+ hscan: 'HSCAN',
16
+ hset: 'HSET',
17
+ hsetnx: 'HSETNX',
18
+ hincrby: 'HINCRBY',
19
+ hdel: 'HDEL',
20
+ hget: 'HGET',
21
+ hmget: 'HMGET',
22
+ hgetall: 'HGETALL',
23
+ hincrbyfloat: 'HINCRBYFLOAT',
24
+ zrange: 'ZRANGE',
25
+ zrangebyscore_withscores: 'ZRANGEBYSCORE_WITHSCORES',
26
+ zrangebyscore: 'ZRANGEBYSCORE',
27
+ zrem: 'ZREM',
28
+ zadd: 'ZADD',
29
+ lmove: 'LMOVE',
30
+ lrange: 'LRANGE',
31
+ lpop: 'LPOP',
32
+ rename: 'RENAME',
33
+ rpush: 'RPUSH',
34
+ scan: 'SCAN',
35
+ xack: 'XACK',
36
+ xdel: 'XDEL',
37
+ xlen: 'XLEN',
38
+ };
39
+ }
40
+ /**
41
+ * When in cluster mode, the transact wrapper only
42
+ * sends commands to the same node/shard if they share a key.
43
+ * All other commands are sent simultaneouslyusing Promise.all
44
+ * and are then collated
45
+ */
46
+ transact() {
47
+ const my = this;
48
+ if (enums_1.HMSH_IS_CLUSTER) {
49
+ const commands = [];
50
+ const addCommand = (command, args) => {
51
+ commands.push({ command: command.toUpperCase(), args });
52
+ return multiInstance;
53
+ };
54
+ const multiInstance = {
55
+ sendCommand(command, ...args) {
56
+ return my.storeClient.sendCommand([command, ...args]);
57
+ },
58
+ async exec() {
59
+ if (commands.length === 0)
60
+ return [];
61
+ const sameKey = commands.every((cmd) => {
62
+ return cmd.args[0] === commands[0].args[0];
63
+ });
64
+ if (sameKey) {
65
+ const multi = my.storeClient.multi();
66
+ commands.forEach((cmd) => {
67
+ if (cmd.command === 'ZADD') {
68
+ return multi.ZADD(cmd.args[0], cmd.args[1], cmd.args[2]);
69
+ }
70
+ return multi[cmd.command](...cmd.args);
71
+ });
72
+ const results = await multi.exec();
73
+ return results.map((item) => item);
74
+ }
75
+ else {
76
+ return Promise.all(commands.map((cmd) => {
77
+ if (cmd.command === 'ZADD') {
78
+ return my.storeClient.ZADD(cmd.args[0], cmd.args[1], cmd.args[2]);
79
+ }
80
+ return my.storeClient[cmd.command](...cmd.args);
81
+ }));
82
+ }
83
+ },
84
+ XADD(key, id, fields, message) {
85
+ return addCommand('XADD', [key, id, fields, message]);
86
+ },
87
+ XACK(key, group, id) {
88
+ return addCommand('XACK', [key, group, id]);
89
+ },
90
+ XDEL(key, id) {
91
+ return addCommand('XDEL', [key, id]);
92
+ },
93
+ XLEN(key) {
94
+ return addCommand('XLEN', [key]);
95
+ },
96
+ XCLAIM(key, group, consumer, minIdleTime, id, ...args) {
97
+ return addCommand('XCLAIM', [
98
+ key,
99
+ group,
100
+ consumer,
101
+ minIdleTime,
102
+ id,
103
+ ...args,
104
+ ]);
105
+ },
106
+ XPENDING(key, group, start, end, count, consumer) {
107
+ return addCommand('XPENDING', [
108
+ key,
109
+ group,
110
+ start,
111
+ end,
112
+ count,
113
+ consumer,
114
+ ]);
115
+ },
116
+ DEL: function (key) {
117
+ return addCommand('DEL', [key]);
118
+ },
119
+ EXPIRE: function (key, seconds) {
120
+ return addCommand('EXPIRE', [key, seconds]);
121
+ },
122
+ HDEL(key, itemId) {
123
+ return addCommand('HDEL', [key, itemId]);
124
+ },
125
+ HGET(key, itemId) {
126
+ return addCommand('HGET', [key, itemId]);
127
+ },
128
+ HGETALL(key) {
129
+ return addCommand('HGETALL', [key]);
130
+ },
131
+ HINCRBYFLOAT(key, itemId, value) {
132
+ return addCommand('HINCRBYFLOAT', [key, itemId, value]);
133
+ },
134
+ HMGET(key, itemIds) {
135
+ return addCommand('HMGET', [key, itemIds]);
136
+ },
137
+ HSET(key, values) {
138
+ return addCommand('HSET', [key, values]);
139
+ },
140
+ LRANGE(key, start, end) {
141
+ return addCommand('LRANGE', [key, start, end]);
142
+ },
143
+ RPUSH(key, items) {
144
+ return addCommand('RPUSH', [key, items]);
145
+ },
146
+ ZADD(key, args, opts) {
147
+ return addCommand('ZADD', [key, args, opts]);
148
+ },
149
+ XGROUP(command, key, groupName, id, mkStream) {
150
+ return addCommand('XGROUP', [command, key, groupName, id, mkStream]);
151
+ },
152
+ EXISTS: function (key) {
153
+ throw new Error('Function not implemented.');
154
+ },
155
+ HMPUSH: function (key, values) {
156
+ throw new Error('Function not implemented.');
157
+ },
158
+ LPUSH: function (key, items) {
159
+ throw new Error('Function not implemented.');
160
+ },
161
+ SET: function (key, value) {
162
+ throw new Error('Function not implemented.');
163
+ },
164
+ ZRANGE_WITHSCORES: function (key, start, end) {
165
+ throw new Error('Function not implemented.');
166
+ },
167
+ ZRANK: function (key, member) {
168
+ throw new Error('Function not implemented.');
169
+ },
170
+ ZSCORE: function (key, value) {
171
+ throw new Error('Function not implemented.');
172
+ },
173
+ };
174
+ return multiInstance;
175
+ }
176
+ return this.storeClient.multi();
177
+ }
178
+ async exec(...args) {
179
+ return await this.storeClient.sendCommand(args);
180
+ }
181
+ async setnxex(key, value, expireSeconds) {
182
+ const status = await this.storeClient[this.commands.set](key, value, { NX: true, EX: expireSeconds });
183
+ return this.isSuccessful(status);
184
+ }
185
+ async zAdd(key, score, value, redisMulti) {
186
+ return await (redisMulti || this.storeClient)[this.commands.zadd](key, {
187
+ score: score,
188
+ value: value.toString(),
189
+ });
190
+ }
191
+ async zRangeByScore(key, score, value) {
192
+ const result = await this.storeClient[this.commands.zrangebyscore](key, score, value);
193
+ if (result?.length > 0) {
194
+ return result[0];
195
+ }
196
+ return null;
197
+ }
198
+ }
199
+ exports.RedisStoreService = RedisStoreService;
@@ -1 +1,2 @@
1
- 'use strict';function a(){var j=['defineProperty','1191752MjdDyi','1194160QaIpYr','317610eopEAA','852628eyWdST','584235yNrdsV','14myhRas','316154KGQqcM','121053dOUyUg'];a=function(){return j;};return a();}var i=b;function b(c,d){var e=a();return b=function(f,g){f=f-0x16d;var h=e[f];return h;},b(c,d);}(function(c,d){var h=b,e=c();while(!![]){try{var f=-parseInt(h(0x172))/0x1+parseInt(h(0x171))/0x2+parseInt(h(0x16f))/0x3+-parseInt(h(0x16e))/0x4+-parseInt(h(0x175))/0x5+parseInt(h(0x16d))/0x6+parseInt(h(0x170))/0x7*(parseInt(h(0x174))/0x8);if(f===d)break;else e['push'](e['shift']());}catch(g){e['push'](e['shift']());}}}(a,0x1fe5d));Object[i(0x173)](exports,'__esModule',{'value':!0x0});
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -26,6 +26,8 @@ export declare abstract class StreamService<ClientProvider extends ProviderClien
26
26
  initialBackoff?: number;
27
27
  maxBackoff?: number;
28
28
  maxRetries?: number;
29
+ enableNotifications?: boolean;
30
+ notificationCallback?: (messages: StreamMessage[]) => void;
29
31
  }): Promise<StreamMessage[]>;
30
32
  abstract transact(): ProviderTransaction;
31
33
  abstract ackAndDelete(streamName: string, groupName: string, messageIds: string[], options?: StringAnyType): Promise<number>;
@@ -58,7 +60,10 @@ export declare abstract class StreamService<ClientProvider extends ProviderClien
58
60
  supportsOrdering: boolean;
59
61
  supportsTrimming: boolean;
60
62
  supportsRetry: boolean;
63
+ supportsNotifications?: boolean;
61
64
  maxMessageSize: number;
62
65
  maxBatchSize: number;
63
66
  };
67
+ stopNotificationConsumer?(streamName: string, groupName: string): Promise<void>;
68
+ cleanup?(): Promise<void>;
64
69
  }
@@ -52,6 +52,7 @@ declare class NatsStreamService extends StreamService<NatsClientType, NatsPubAck
52
52
  supportsOrdering: boolean;
53
53
  supportsTrimming: boolean;
54
54
  supportsRetry: boolean;
55
+ supportsNotifications: boolean;
55
56
  maxMessageSize: number;
56
57
  maxBatchSize: number;
57
58
  };
@@ -1 +1,225 @@
1
- 'use strict';const p=b;(function(c,d){const o=b,e=c();while(!![]){try{const f=-parseInt(o(0x10c))/0x1*(-parseInt(o(0x117))/0x2)+parseInt(o(0x11c))/0x3+parseInt(o(0x137))/0x4+-parseInt(o(0x110))/0x5*(parseInt(o(0x122))/0x6)+parseInt(o(0x136))/0x7*(parseInt(o(0x10e))/0x8)+-parseInt(o(0x118))/0x9+-parseInt(o(0x100))/0xa;if(f===d)break;else e['push'](e['shift']());}catch(g){e['push'](e['shift']());}}}(a,0xc5cc0));function b(c,d){const e=a();return b=function(f,g){f=f-0xef;let h=e[f];return h;},b(c,d);}Object[p(0x10a)](exports,p(0xf7),{'value':!0x0}),exports[p(0xf1)]=void 0x0;function a(){const H=['.message','getStreamStats','defineProperty','jsm','182786OwlwaU','batchSize','155864IoZrHr','../../../../modules/enums','340865TGSmJa','acknowledgeMessages','blockTimeout','init','Error\x20creating\x20consumer\x20group\x20','Error\x20trimming\x20stream\x20','Error\x20publishing\x20messages\x20to\x20','10Mzihxd','7400439kptAEb','../../../../modules/key','Error\x20getting\x20multiple\x20stream\x20depths','consumeMessages','4050537aKQVMz','Error\x20deleting\x20consumer\x20group\x20','from','jetstream','seq','appId','24YgAIPD','../../index','createConsumerGroup','jetstreamManager','ackAndDelete','explicit','maxAge','length','getStreamDepth','info','Error\x20deleting\x20stream\x20','publishMessages','StreamService','memory','publish','Error\x20creating\x20stream\x20','namespace\x20not\x20set','toString','update','Error\x20deleting\x20messages\x20from\x20','399kbTnuC','6130732LHtyap','deleteMessage','mintKey','KeyService','HMSH_BLOCK_TIME_MS','string','delete','map','consumers','createStream','parseStreamMessage','logger','NatsStreamService','\x20for\x20stream\x20','maxLen','getProviderSpecificFeatures','get','Error\x20getting\x20stats\x20for\x20','__esModule','deleteMessages','namespace','state','config','deleteConsumerGroup','transact','all','add','30021840kkozpg','push','streams','fetch','messages','error','Error\x20consuming\x20messages\x20from\x20','Error\x20getting\x20depth\x20for\x20'];a=function(){return H;};return a();}const index_1=require(p(0x123)),key_1=require(p(0x119)),enums_1=require(p(0x10f)),utils_1=require('../../../../modules/utils');class NatsStreamService extends index_1[p(0x12e)]{constructor(c,d,f={}){const q=p;super(c,d,f),this[q(0x11f)]=c[q(0x11f)]();}async[p(0x113)](c,d,f){const r=p;this['namespace']=c,this[r(0xf0)]=f,this[r(0x121)]=d,this[r(0x10b)]=await this[r(0x11f)][r(0x125)]();}[p(0x139)](c,d){const s=p;if(!this[s(0xf9)])throw new Error(s(0x132));return key_1[s(0x13a)][s(0x139)](this[s(0xf9)],c,{...d,'appId':this[s(0x121)]});}[p(0xfd)](){return{};}async[p(0x140)](c){const t=p;try{const d={'name':c,'subjects':[c+'.*'],'retention':'workqueue','storage':t(0x12f),'num_replicas':0x1};return await this['jsm'][t(0x102)][t(0xff)](d),!0x0;}catch(f){throw this[t(0xf0)][t(0x105)](t(0x131)+c,{'error':f}),f;}}async['deleteStream'](c){const u=p;try{return await this[u(0x10b)][u(0x102)][u(0x13d)](c),!0x0;}catch(d){throw this[u(0xf0)][u(0x105)](u(0x12c)+c,{'error':d}),d;}}async[p(0x124)](c,d){const v=p;try{const f={'durable_name':d,'deliver_group':d,'ack_policy':v(0x127),'ack_wait':0x7530,'max_deliver':0xa};return await this[v(0x10b)][v(0x13f)][v(0xff)](c,f),!0x0;}catch(g){throw this['logger'][v(0x105)](v(0x114)+d+v(0xf2)+c,{'error':g}),g;}}async[p(0xfc)](c,d){const w=p;try{return await this['jsm'][w(0x13f)][w(0x13d)](c,d),!0x0;}catch(f){throw this[w(0xf0)]['error'](w(0x11d)+d+w(0xf2)+c,{'error':f}),f;}}async[p(0x12d)](c,d,f){const x=p;try{const g=d[x(0x13e)](async h=>{const y=x,i=c+y(0x108);return await this[y(0x11f)][y(0x130)](i,Buffer[y(0x11e)](h));});return(await Promise[x(0xfe)](g))[x(0x13e)](h=>h[x(0x120)]['toString']());}catch(h){throw this[x(0xf0)][x(0x105)](x(0x116)+c,{'error':h}),h;}}async[p(0x11b)](c,d,f,g){const z=p;try{const h=await this['jetstream'][z(0x13f)][z(0xf5)](c,d),j=[],k={'max_messages':g?.[z(0x10d)]||0x1,'expires':g?.[z(0x112)]||enums_1[z(0x13b)]},l=await h[z(0x103)](k);for await(const m of l)j[z(0x101)]({'id':m[z(0x120)][z(0x133)](),'data':(0x0,utils_1[z(0xef)])(m[z(0x13c)]())});return j;}catch(n){throw this[z(0xf0)]['error'](z(0x106)+c,{'error':n}),n;}}async[p(0x126)](c,d,f){const A=p;try{return await this[A(0x111)](c,d,f),f[A(0x129)];}catch(g){throw this['logger']['error']('Error\x20in\x20ack\x20and\x20delete\x20for\x20stream\x20'+c,{'error':g}),g;}}async[p(0x111)](c,d,f,g){const B=p;return f[B(0x129)];}async[p(0xf8)](c,d,f,g){const C=p;try{return await Promise[C(0xfe)](f[C(0x13e)](h=>this[C(0x10b)][C(0x102)][C(0x138)](c,parseInt(h)))),f[C(0x129)];}catch(h){throw this['logger']['error'](C(0x135)+c,{'error':h}),h;}}async['retryMessages'](c,d,f){return[];}async[p(0x109)](c){const D=p;try{return{'messageCount':(await this[D(0x10b)][D(0x102)]['info'](c))[D(0xfa)][D(0x104)]};}catch(d){throw this[D(0xf0)]['error'](D(0xf6)+c,{'error':d}),d;}}async['getStreamDepth'](c){const E=p;try{return(await this[E(0x10b)][E(0x102)][E(0x12b)](c))[E(0xfa)][E(0x104)];}catch(d){throw this['logger']['error'](E(0x107)+c,{'error':d}),d;}}async['getStreamDepths'](c){const F=p;try{return await Promise[F(0xfe)](c[F(0x13e)](async({stream:d})=>({'stream':d,'depth':await this[F(0x12a)](d)})));}catch(d){throw this[F(0xf0)][F(0x105)](F(0x11a),{'error':d}),d;}}async['trimStream'](c,d){const G=p;try{const f={...(await this['jsm'][G(0x102)][G(0x12b)](c))[G(0xfb)]};return void 0x0!==d[G(0xf3)]&&(f['max_msgs']=d[G(0xf3)]),void 0x0!==d[G(0x128)]&&(f['max_age']=0x3b9aca00*d['maxAge']),await this[G(0x10b)][G(0x102)][G(0x134)](c,f),0x0;}catch(g){throw this[G(0xf0)][G(0x105)](G(0x115)+c,{'error':g}),g;}}[p(0xf4)](){return{'supportsBatching':!0x0,'supportsDeadLetterQueue':!0x0,'supportsOrdering':!0x0,'supportsTrimming':!0x0,'supportsRetry':!0x1,'maxMessageSize':0x100000,'maxBatchSize':0x100};}}exports[p(0xf1)]=NatsStreamService;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NatsStreamService = void 0;
4
+ const index_1 = require("../../index");
5
+ const key_1 = require("../../../../modules/key");
6
+ const enums_1 = require("../../../../modules/enums");
7
+ const utils_1 = require("../../../../modules/utils");
8
+ class NatsStreamService extends index_1.StreamService {
9
+ constructor(streamClient, storeClient, config = {}) {
10
+ super(streamClient, storeClient, config);
11
+ this.jetstream = streamClient.jetstream();
12
+ }
13
+ async init(namespace, appId, logger) {
14
+ this.namespace = namespace;
15
+ this.logger = logger;
16
+ this.appId = appId;
17
+ this.jsm = await this.jetstream.jetstreamManager();
18
+ }
19
+ mintKey(type, params) {
20
+ if (!this.namespace)
21
+ throw new Error('namespace not set');
22
+ return key_1.KeyService.mintKey(this.namespace, type, {
23
+ ...params,
24
+ appId: this.appId,
25
+ });
26
+ }
27
+ transact() {
28
+ return {};
29
+ }
30
+ async createStream(streamName) {
31
+ try {
32
+ const config = {
33
+ name: streamName,
34
+ subjects: [`${streamName}.*`],
35
+ retention: 'workqueue',
36
+ storage: 'memory',
37
+ num_replicas: 1,
38
+ };
39
+ await this.jsm.streams.add(config);
40
+ return true;
41
+ }
42
+ catch (error) {
43
+ this.logger.error(`Error creating stream ${streamName}`, { error });
44
+ throw error;
45
+ }
46
+ }
47
+ async deleteStream(streamName) {
48
+ try {
49
+ await this.jsm.streams.delete(streamName);
50
+ return true;
51
+ }
52
+ catch (error) {
53
+ this.logger.error(`Error deleting stream ${streamName}`, { error });
54
+ throw error;
55
+ }
56
+ }
57
+ async createConsumerGroup(streamName, groupName) {
58
+ try {
59
+ const consumerConfig = {
60
+ durable_name: groupName,
61
+ deliver_group: groupName,
62
+ ack_policy: 'explicit',
63
+ ack_wait: 30 * 1000,
64
+ max_deliver: 10,
65
+ };
66
+ await this.jsm.consumers.add(streamName, consumerConfig);
67
+ return true;
68
+ }
69
+ catch (error) {
70
+ this.logger.error(`Error creating consumer group ${groupName} for stream ${streamName}`, { error });
71
+ throw error;
72
+ }
73
+ }
74
+ async deleteConsumerGroup(streamName, groupName) {
75
+ try {
76
+ await this.jsm.consumers.delete(streamName, groupName);
77
+ return true;
78
+ }
79
+ catch (error) {
80
+ this.logger.error(`Error deleting consumer group ${groupName} for stream ${streamName}`, { error });
81
+ throw error;
82
+ }
83
+ }
84
+ async publishMessages(streamName, messages, options) {
85
+ try {
86
+ const publishPromises = messages.map(async (message) => {
87
+ const subject = `${streamName}.message`;
88
+ const ack = await this.jetstream.publish(subject, Buffer.from(message));
89
+ return ack;
90
+ });
91
+ const acks = await Promise.all(publishPromises);
92
+ return acks.map((ack) => ack.seq.toString());
93
+ }
94
+ catch (error) {
95
+ this.logger.error(`Error publishing messages to ${streamName}`, {
96
+ error,
97
+ });
98
+ throw error;
99
+ }
100
+ }
101
+ async consumeMessages(streamName, groupName, consumerName, options) {
102
+ try {
103
+ const consumer = await this.jetstream.consumers.get(streamName, groupName);
104
+ const messages = [];
105
+ const fetchOptions = {
106
+ max_messages: options?.batchSize || 1,
107
+ expires: options?.blockTimeout || enums_1.HMSH_BLOCK_TIME_MS,
108
+ };
109
+ const fetchedMessages = await consumer.fetch(fetchOptions);
110
+ for await (const msg of fetchedMessages) {
111
+ messages.push({
112
+ id: msg.seq.toString(),
113
+ data: (0, utils_1.parseStreamMessage)(msg.string()),
114
+ });
115
+ }
116
+ return messages;
117
+ }
118
+ catch (error) {
119
+ this.logger.error(`Error consuming messages from ${streamName}`, {
120
+ error,
121
+ });
122
+ throw error;
123
+ }
124
+ }
125
+ async ackAndDelete(streamName, groupName, messageIds) {
126
+ try {
127
+ await this.acknowledgeMessages(streamName, groupName, messageIds);
128
+ return messageIds.length;
129
+ }
130
+ catch (error) {
131
+ this.logger.error(`Error in ack and delete for stream ${streamName}`, {
132
+ error,
133
+ });
134
+ throw error;
135
+ }
136
+ }
137
+ async acknowledgeMessages(streamName, groupName, messageIds, options) {
138
+ //no-op
139
+ return messageIds.length;
140
+ }
141
+ async deleteMessages(streamName, groupName, messageIds, options) {
142
+ try {
143
+ await Promise.all(messageIds.map((id) => this.jsm.streams.deleteMessage(streamName, parseInt(id))));
144
+ return messageIds.length;
145
+ }
146
+ catch (error) {
147
+ this.logger.error(`Error deleting messages from ${streamName}`, {
148
+ error,
149
+ });
150
+ throw error;
151
+ }
152
+ }
153
+ async retryMessages(streamName, groupName, options) {
154
+ return [];
155
+ }
156
+ async getStreamStats(streamName) {
157
+ try {
158
+ const info = await this.jsm.streams.info(streamName);
159
+ return {
160
+ messageCount: info.state.messages,
161
+ };
162
+ }
163
+ catch (error) {
164
+ this.logger.error(`Error getting stats for ${streamName}`, { error });
165
+ throw error;
166
+ }
167
+ }
168
+ async getStreamDepth(streamName) {
169
+ try {
170
+ const info = await this.jsm.streams.info(streamName);
171
+ return info.state.messages;
172
+ }
173
+ catch (error) {
174
+ this.logger.error(`Error getting depth for ${streamName}`, { error });
175
+ throw error;
176
+ }
177
+ }
178
+ async getStreamDepths(streamNames) {
179
+ try {
180
+ const results = await Promise.all(streamNames.map(async ({ stream }) => ({
181
+ stream,
182
+ depth: await this.getStreamDepth(stream),
183
+ })));
184
+ return results;
185
+ }
186
+ catch (error) {
187
+ this.logger.error('Error getting multiple stream depths', { error });
188
+ throw error;
189
+ }
190
+ }
191
+ async trimStream(streamName, options) {
192
+ try {
193
+ // Retrieve the current stream info
194
+ const streamInfo = await this.jsm.streams.info(streamName);
195
+ const config = { ...streamInfo.config }; // Clone to avoid direct mutation
196
+ // Apply new limits based on options
197
+ if (options.maxLen !== undefined) {
198
+ config.max_msgs = options.maxLen;
199
+ }
200
+ if (options.maxAge !== undefined) {
201
+ config.max_age = options.maxAge * 1e9; // Convert maxAge to nanoseconds
202
+ }
203
+ // Update the stream with the modified config
204
+ await this.jsm.streams.update(streamName, config);
205
+ return 0; // Trimming is applied automatically based on updated config
206
+ }
207
+ catch (error) {
208
+ this.logger.error(`Error trimming stream ${streamName}`, { error });
209
+ throw error;
210
+ }
211
+ }
212
+ getProviderSpecificFeatures() {
213
+ return {
214
+ supportsBatching: true,
215
+ supportsDeadLetterQueue: true,
216
+ supportsOrdering: true,
217
+ supportsTrimming: true,
218
+ supportsRetry: false,
219
+ supportsNotifications: false,
220
+ maxMessageSize: 1024 * 1024,
221
+ maxBatchSize: 256,
222
+ };
223
+ }
224
+ }
225
+ exports.NatsStreamService = NatsStreamService;