@hotmeshio/hotmesh 0.3.18 → 0.3.20

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 (101) hide show
  1. package/README.md +194 -68
  2. package/build/index.d.ts +5 -1
  3. package/build/index.js +9 -1
  4. package/build/modules/key.js +1 -1
  5. package/build/modules/utils.d.ts +0 -1
  6. package/build/modules/utils.js +1 -1
  7. package/build/package.json +10 -7
  8. package/build/services/activities/activity.js +1 -1
  9. package/build/services/activities/await.js +1 -1
  10. package/build/services/activities/cycle.js +1 -1
  11. package/build/services/activities/hook.js +1 -1
  12. package/build/services/activities/index.js +1 -1
  13. package/build/services/activities/interrupt.js +1 -1
  14. package/build/services/activities/signal.js +1 -1
  15. package/build/services/activities/trigger.js +1 -1
  16. package/build/services/activities/worker.js +1 -1
  17. package/build/services/collator/index.js +1 -1
  18. package/build/services/compiler/deployer.js +1 -1
  19. package/build/services/compiler/index.js +1 -1
  20. package/build/services/compiler/validator.js +1 -1
  21. package/build/services/connector/factory.d.ts +1 -0
  22. package/build/services/connector/factory.js +22 -21
  23. package/build/services/connector/index.d.ts +4 -2
  24. package/build/services/connector/index.js +10 -5
  25. package/build/services/connector/providers/postgres.d.ts +13 -2
  26. package/build/services/connector/providers/postgres.js +54 -9
  27. package/build/services/engine/index.d.ts +1 -1
  28. package/build/services/engine/index.js +1 -1
  29. package/build/services/exporter/index.js +1 -1
  30. package/build/services/hotmesh/index.js +1 -6
  31. package/build/services/mapper/index.js +1 -1
  32. package/build/services/meshflow/connection.js +1 -0
  33. package/build/services/meshflow/exporter.js +1 -1
  34. package/build/services/pipe/functions/array.js +1 -1
  35. package/build/services/pipe/functions/bitwise.js +1 -1
  36. package/build/services/pipe/functions/conditional.js +1 -1
  37. package/build/services/pipe/functions/cron.js +1 -1
  38. package/build/services/pipe/functions/date.js +1 -1
  39. package/build/services/pipe/functions/index.js +1 -1
  40. package/build/services/pipe/functions/json.js +1 -1
  41. package/build/services/pipe/functions/logical.js +1 -1
  42. package/build/services/pipe/functions/math.js +1 -1
  43. package/build/services/pipe/functions/number.js +1 -1
  44. package/build/services/pipe/functions/object.js +1 -1
  45. package/build/services/pipe/functions/string.js +1 -1
  46. package/build/services/pipe/functions/symbol.js +1 -1
  47. package/build/services/pipe/functions/unary.js +1 -1
  48. package/build/services/pipe/index.js +1 -1
  49. package/build/services/quorum/index.d.ts +1 -1
  50. package/build/services/quorum/index.js +1 -1
  51. package/build/services/reporter/index.js +1 -1
  52. package/build/services/router/index.js +1 -1
  53. package/build/services/search/providers/postgres/postgres.js +1 -1
  54. package/build/services/search/providers/redis/ioredis.js +1 -1
  55. package/build/services/search/providers/redis/redis.js +1 -1
  56. package/build/services/serializer/index.js +1 -1
  57. package/build/services/store/providers/postgres/kvsql.js +1 -1
  58. package/build/services/store/providers/postgres/kvtables.d.ts +3 -2
  59. package/build/services/store/providers/postgres/kvtables.js +1 -1
  60. package/build/services/store/providers/postgres/kvtransaction.js +1 -1
  61. package/build/services/store/providers/postgres/kvtypes/hash.d.ts +1 -0
  62. package/build/services/store/providers/postgres/kvtypes/hash.js +1 -1
  63. package/build/services/store/providers/postgres/kvtypes/list.js +1 -1
  64. package/build/services/store/providers/postgres/kvtypes/string.js +1 -1
  65. package/build/services/store/providers/postgres/kvtypes/zset.js +1 -1
  66. package/build/services/store/providers/postgres/postgres.js +1 -1
  67. package/build/services/store/providers/redis/_base.js +1 -1
  68. package/build/services/store/providers/redis/ioredis.js +1 -1
  69. package/build/services/store/providers/redis/redis.js +1 -1
  70. package/build/services/store/providers/store-initializable.js +1 -1
  71. package/build/services/stream/providers/nats/nats.js +1 -1
  72. package/build/services/stream/providers/postgres/postgres.d.ts +1 -0
  73. package/build/services/stream/providers/postgres/postgres.js +1 -1
  74. package/build/services/stream/providers/redis/ioredis.js +1 -1
  75. package/build/services/stream/providers/redis/redis.js +1 -1
  76. package/build/services/stream/providers/stream-initializable.js +1 -1
  77. package/build/services/sub/factory.d.ts +3 -3
  78. package/build/services/sub/factory.js +14 -5
  79. package/build/services/sub/index.d.ts +3 -2
  80. package/build/services/sub/providers/nats/nats.d.ts +19 -0
  81. package/build/services/sub/providers/nats/nats.js +1 -0
  82. package/build/services/sub/providers/postgres/postgres.d.ts +19 -0
  83. package/build/services/sub/providers/postgres/postgres.js +1 -0
  84. package/build/services/sub/providers/redis/ioredis.d.ts +1 -1
  85. package/build/services/sub/providers/redis/ioredis.js +1 -1
  86. package/build/services/sub/providers/redis/redis.d.ts +1 -1
  87. package/build/services/sub/providers/redis/redis.js +1 -1
  88. package/build/services/task/index.js +1 -1
  89. package/build/services/telemetry/index.js +1 -1
  90. package/build/services/worker/index.d.ts +1 -1
  91. package/build/services/worker/index.js +1 -1
  92. package/build/types/nats.d.ts +8 -0
  93. package/build/types/postgres.d.ts +10 -1
  94. package/build/types/provider.d.ts +1 -0
  95. package/build/types/redis.d.ts +8 -8
  96. package/index.ts +20 -5
  97. package/package.json +10 -7
  98. package/types/nats.ts +34 -0
  99. package/types/postgres.ts +13 -2
  100. package/types/provider.ts +4 -0
  101. package/types/redis.ts +8 -8
@@ -1 +1 @@
1
- 'use strict';function _0x5a14(){const _0x336a98=['1103430TpgsEJ','12752946GALWrN','4CHZdSx','600320auUQje','4228128kjqTqg','4360370houwGz','2724996LGsONi','4OalZmc','5816562vgoUHg'];_0x5a14=function(){return _0x336a98;};return _0x5a14();}function _0x8c25(_0x30c82e,_0xfb0ace){const _0x5a147b=_0x5a14();return _0x8c25=function(_0x8c2578,_0x2d79bb){_0x8c2578=_0x8c2578-0x1ba;let _0x4dc3bf=_0x5a147b[_0x8c2578];return _0x4dc3bf;},_0x8c25(_0x30c82e,_0xfb0ace);}(function(_0x39af62,_0x1167e8){const _0xee6693=_0x8c25,_0x34d955=_0x39af62();while(!![]){try{const _0x4052a0=parseInt(_0xee6693(0x1be))/0x1*(parseInt(_0xee6693(0x1ba))/0x2)+-parseInt(_0xee6693(0x1bd))/0x3+-parseInt(_0xee6693(0x1c2))/0x4*(parseInt(_0xee6693(0x1c0))/0x5)+-parseInt(_0xee6693(0x1bf))/0x6+parseInt(_0xee6693(0x1bc))/0x7+-parseInt(_0xee6693(0x1bb))/0x8+parseInt(_0xee6693(0x1c1))/0x9;if(_0x4052a0===_0x1167e8)break;else _0x34d955['push'](_0x34d955['shift']());}catch(_0x2e51b2){_0x34d955['push'](_0x34d955['shift']());}}}(_0x5a14,0x95ccf));Object['defineProperty'](exports,'__esModule',{'value':!![]}),exports['WorkerService']=void 0x0;const key_1=require('../../modules/key'),utils_1=require('../../modules/utils'),factory_1=require('../connector/factory'),router_1=require('../router'),stream_1=require('../../types/stream'),enums_1=require('../../modules/enums'),factory_2=require('../stream/factory'),factory_3=require('../sub/factory'),factory_4=require('../store/factory');class WorkerService{constructor(){this['reporting']=![];}static async['init'](_0xa5be15,_0xfda74f,_0x4663b5,_0x146d38,_0x2c7971){const _0x138a32=[];if(Array['isArray'](_0x146d38['workers']))for(const _0x44660c of _0x146d38['workers']){await factory_1['ConnectorService']['initClients'](_0x44660c);const _0x20a6c5=new WorkerService();_0x20a6c5['verifyWorkerFields'](_0x44660c),_0x20a6c5['namespace']=_0xa5be15,_0x20a6c5['appId']=_0xfda74f,_0x20a6c5['guid']=_0x4663b5,_0x20a6c5['callback']=_0x44660c['callback'],_0x20a6c5['topic']=_0x44660c['topic'],_0x20a6c5['config']=_0x146d38,_0x20a6c5['logger']=_0x2c7971,await _0x20a6c5['initStoreChannel'](_0x20a6c5,_0x44660c['store']),await _0x20a6c5['initSubChannel'](_0x20a6c5,_0x44660c['sub'],_0x44660c['pub']),await _0x20a6c5['subscribe']['subscribe'](key_1['KeyType']['QUORUM'],_0x20a6c5['subscriptionHandler'](),_0xfda74f),await _0x20a6c5['subscribe']['subscribe'](key_1['KeyType']['QUORUM'],_0x20a6c5['subscriptionHandler'](),_0xfda74f,_0x20a6c5['topic']),await _0x20a6c5['subscribe']['subscribe'](key_1['KeyType']['QUORUM'],_0x20a6c5['subscriptionHandler'](),_0xfda74f,_0x20a6c5['guid']),await _0x20a6c5['initStreamChannel'](_0x20a6c5,_0x44660c['stream'],_0x44660c['store']),_0x20a6c5['router']=await _0x20a6c5['initRouter'](_0x44660c,_0x2c7971);const _0x44c1bc=_0x20a6c5['store']['mintKey'](key_1['KeyType']['STREAMS'],{'appId':_0x20a6c5['appId'],'topic':_0x44660c['topic']});await _0x20a6c5['router']['consumeMessages'](_0x44c1bc,'WORKER',_0x20a6c5['guid'],_0x44660c['callback']),_0x20a6c5['inited']=(0x0,utils_1['formatISODate'])(new Date()),_0x138a32['push'](_0x20a6c5);}return _0x138a32;}['verifyWorkerFields'](_0xad6639){if(!(0x0,utils_1['identifyProvider'])(_0xad6639['store'])||!(0x0,utils_1['identifyProvider'])(_0xad6639['stream'])||!(0x0,utils_1['identifyProvider'])(_0xad6639['sub'])||!(_0xad6639['topic']&&_0xad6639['callback']))throw new Error('worker\x20must\x20include\x20`store`,\x20`stream`,\x20and\x20`sub`\x20fields\x20along\x20with\x20a\x20callback\x20function\x20and\x20topic.');}async['initStoreChannel'](_0x511361,_0x48be44){_0x511361['store']=await factory_4['StoreServiceFactory']['init'](_0x48be44,_0x511361['namespace'],_0x511361['appId'],_0x511361['logger']);}async['initSubChannel'](_0x21b83d,_0x5585a3,_0x26c294){_0x21b83d['subscribe']=await factory_3['SubServiceFactory']['init'](_0x5585a3,_0x26c294,_0x21b83d['namespace'],_0x21b83d['appId'],_0x21b83d['guid'],_0x21b83d['logger']);}async['initStreamChannel'](_0x32f1b8,_0x2b14d3,_0x4b66ca){_0x32f1b8['stream']=await factory_2['StreamServiceFactory']['init'](_0x2b14d3,_0x4b66ca,_0x32f1b8['namespace'],_0x32f1b8['appId'],_0x32f1b8['logger']);}async['initRouter'](_0x1ce5d1,_0x1f5954){const _0x1ca37e=await this['store']['getThrottleRate'](_0x1ce5d1['topic']);return new router_1['Router']({'namespace':this['namespace'],'appId':this['appId'],'guid':this['guid'],'role':stream_1['StreamRole']['WORKER'],'topic':_0x1ce5d1['topic'],'reclaimDelay':_0x1ce5d1['reclaimDelay'],'reclaimCount':_0x1ce5d1['reclaimCount'],'throttle':_0x1ca37e},this['stream'],_0x1f5954);}['subscriptionHandler'](){const _0x26a05a=this;return async(_0x56c89b,_0x47117c)=>{_0x26a05a['logger']['debug']('worker-event-received',{'topic':_0x56c89b,'type':_0x47117c['type']});if(_0x47117c['type']==='throttle')_0x47117c['topic']!==null&&_0x26a05a['throttle'](_0x47117c['throttle']);else{if(_0x47117c['type']==='ping')_0x26a05a['sayPong'](_0x26a05a['appId'],_0x26a05a['guid'],_0x47117c['originator'],_0x47117c['details']);else _0x47117c['type']==='rollcall'&&(_0x47117c['topic']!==null&&_0x26a05a['doRollCall'](_0x47117c));}};}async['doRollCall'](_0x58806e){let _0x5d4e24=0x0;const _0x47f947=!isNaN(_0x58806e['max'])?_0x58806e['max']:enums_1['HMSH_QUORUM_ROLLCALL_CYCLES'];if(this['rollCallInterval'])clearTimeout(this['rollCallInterval']);const _0x3f57de=_0x58806e['interval']/0x2,_0x38a536=_0x3f57de+Math['ceil'](Math['random']()*_0x3f57de);do{await(0x0,utils_1['sleepFor'])(Math['ceil'](Math['random']()*0x3e8)),await this['sayPong'](this['appId'],this['guid'],null,!![],_0x58806e['signature']);if(!_0x58806e['interval'])return;const {promise:_0x2dcaa9,timerId:_0x56212e}=(0x0,utils_1['XSleepFor'])(_0x38a536*0x3e8);this['rollCallInterval']=_0x56212e,await _0x2dcaa9;}while(this['rollCallInterval']&&_0x5d4e24++<_0x47f947-0x1);}['cancelRollCall'](){this['rollCallInterval']&&(clearTimeout(this['rollCallInterval']),delete this['rollCallInterval']);}['stop'](){this['cancelRollCall']();}async['sayPong'](_0x3ce58d,_0x4f1ee1,_0x52cbaf,_0xacebe1=![],_0x264186=![]){let _0x49afec;if(_0xacebe1){const _0x2646e3={'appId':this['appId'],'topic':this['topic']};_0x49afec={'engine_id':this['guid'],'namespace':this['namespace'],'app_id':this['appId'],'worker_topic':this['topic'],'stream':this['store']['mintKey'](key_1['KeyType']['STREAMS'],_0x2646e3),'counts':this['router']?.['counts'],'timestamp':(0x0,utils_1['formatISODate'])(new Date()),'inited':this['inited'],'throttle':this['router']?.['throttle'],'reclaimDelay':this['router']?.['reclaimDelay'],'reclaimCount':this['router']?.['reclaimCount'],'system':await(0x0,utils_1['getSystemHealth'])(),'signature':_0x264186?this['callback']['toString']():undefined};}this['subscribe']['publish'](key_1['KeyType']['QUORUM'],{'type':'pong','guid':_0x4f1ee1,'originator':_0x52cbaf,'profile':_0x49afec},_0x3ce58d);}async['throttle'](_0x4199ad){this['router']?.['setThrottle'](_0x4199ad);}}exports['WorkerService']=WorkerService;
1
+ 'use strict';(function(_0x45285f,_0x19e90e){const _0x409fea=_0x5984,_0x2c44a0=_0x45285f();while(!![]){try{const _0x30ec35=-parseInt(_0x409fea(0xf4))/0x1+parseInt(_0x409fea(0xf3))/0x2*(parseInt(_0x409fea(0xef))/0x3)+parseInt(_0x409fea(0xf2))/0x4+parseInt(_0x409fea(0xf0))/0x5+-parseInt(_0x409fea(0xee))/0x6*(-parseInt(_0x409fea(0xed))/0x7)+parseInt(_0x409fea(0xf5))/0x8+parseInt(_0x409fea(0xec))/0x9*(-parseInt(_0x409fea(0xf1))/0xa);if(_0x30ec35===_0x19e90e)break;else _0x2c44a0['push'](_0x2c44a0['shift']());}catch(_0x3b2793){_0x2c44a0['push'](_0x2c44a0['shift']());}}}(_0x3d47,0xb399d));Object['defineProperty'](exports,'__esModule',{'value':!![]}),exports['WorkerService']=void 0x0;function _0x3d47(){const _0x217b24=['2113608UPoMpV','24dJmuNl','1797696aOuFVl','6126475BsEbPL','949570GeCgyw','5320952ItBtOq','2dTVgDH','206590oiYbuO','9101040uVqHXt','432nYNnSd'];_0x3d47=function(){return _0x217b24;};return _0x3d47();}const key_1=require('../../modules/key'),utils_1=require('../../modules/utils'),factory_1=require('../connector/factory'),router_1=require('../router'),stream_1=require('../../types/stream'),enums_1=require('../../modules/enums'),factory_2=require('../stream/factory'),factory_3=require('../sub/factory'),factory_4=require('../store/factory');class WorkerService{constructor(){this['reporting']=![];}static async['init'](_0x35b948,_0x391a9f,_0xf2c847,_0x5a6a93,_0x3da8d7){const _0x5262=[];if(Array['isArray'](_0x5a6a93['workers']))for(const _0x157083 of _0x5a6a93['workers']){await factory_1['ConnectorService']['initClients'](_0x157083);const _0xd91e28=new WorkerService();_0xd91e28['verifyWorkerFields'](_0x157083),_0xd91e28['namespace']=_0x35b948,_0xd91e28['appId']=_0x391a9f,_0xd91e28['guid']=_0xf2c847,_0xd91e28['callback']=_0x157083['callback'],_0xd91e28['topic']=_0x157083['topic'],_0xd91e28['config']=_0x5a6a93,_0xd91e28['logger']=_0x3da8d7,await _0xd91e28['initStoreChannel'](_0xd91e28,_0x157083['store']),await _0xd91e28['initSubChannel'](_0xd91e28,_0x157083['sub'],_0x157083['pub']),await _0xd91e28['subscribe']['subscribe'](key_1['KeyType']['QUORUM'],_0xd91e28['subscriptionHandler'](),_0x391a9f),await _0xd91e28['subscribe']['subscribe'](key_1['KeyType']['QUORUM'],_0xd91e28['subscriptionHandler'](),_0x391a9f,_0xd91e28['topic']),await _0xd91e28['subscribe']['subscribe'](key_1['KeyType']['QUORUM'],_0xd91e28['subscriptionHandler'](),_0x391a9f,_0xd91e28['guid']),await _0xd91e28['initStreamChannel'](_0xd91e28,_0x157083['stream'],_0x157083['store']),_0xd91e28['router']=await _0xd91e28['initRouter'](_0x157083,_0x3da8d7);const _0x500a1f=_0xd91e28['store']['mintKey'](key_1['KeyType']['STREAMS'],{'appId':_0xd91e28['appId'],'topic':_0x157083['topic']});await _0xd91e28['router']['consumeMessages'](_0x500a1f,'WORKER',_0xd91e28['guid'],_0x157083['callback']),_0xd91e28['inited']=(0x0,utils_1['formatISODate'])(new Date()),_0x5262['push'](_0xd91e28);}return _0x5262;}['verifyWorkerFields'](_0x187b03){if(!(0x0,utils_1['identifyProvider'])(_0x187b03['store'])||!(0x0,utils_1['identifyProvider'])(_0x187b03['stream'])||!(0x0,utils_1['identifyProvider'])(_0x187b03['sub'])||!(_0x187b03['topic']&&_0x187b03['callback']))throw new Error('worker\x20must\x20include\x20`store`,\x20`stream`,\x20and\x20`sub`\x20fields\x20along\x20with\x20a\x20callback\x20function\x20and\x20topic.');}async['initStoreChannel'](_0x585f8d,_0x386c4f){_0x585f8d['store']=await factory_4['StoreServiceFactory']['init'](_0x386c4f,_0x585f8d['namespace'],_0x585f8d['appId'],_0x585f8d['logger']);}async['initSubChannel'](_0x39838d,_0x3cc48e,_0x34e127){_0x39838d['subscribe']=await factory_3['SubServiceFactory']['init'](_0x3cc48e,_0x34e127,_0x39838d['namespace'],_0x39838d['appId'],_0x39838d['guid'],_0x39838d['logger']);}async['initStreamChannel'](_0x3c44df,_0x13ecf0,_0x3a8984){_0x3c44df['stream']=await factory_2['StreamServiceFactory']['init'](_0x13ecf0,_0x3a8984,_0x3c44df['namespace'],_0x3c44df['appId'],_0x3c44df['logger']);}async['initRouter'](_0x1817dc,_0x467697){const _0x54617b=await this['store']['getThrottleRate'](_0x1817dc['topic']);return new router_1['Router']({'namespace':this['namespace'],'appId':this['appId'],'guid':this['guid'],'role':stream_1['StreamRole']['WORKER'],'topic':_0x1817dc['topic'],'reclaimDelay':_0x1817dc['reclaimDelay'],'reclaimCount':_0x1817dc['reclaimCount'],'throttle':_0x54617b},this['stream'],_0x467697);}['subscriptionHandler'](){const _0x1efcb8=this;return async(_0xed5e13,_0x56b33c)=>{_0x1efcb8['logger']['debug']('worker-event-received',{'topic':_0xed5e13,'type':_0x56b33c['type']});if(_0x56b33c['type']==='throttle')_0x56b33c['topic']!==null&&_0x1efcb8['throttle'](_0x56b33c['throttle']);else{if(_0x56b33c['type']==='ping')_0x1efcb8['sayPong'](_0x1efcb8['appId'],_0x1efcb8['guid'],_0x56b33c['originator'],_0x56b33c['details']);else _0x56b33c['type']==='rollcall'&&(_0x56b33c['topic']!==null&&_0x1efcb8['doRollCall'](_0x56b33c));}};}async['doRollCall'](_0x30a7f1){let _0xb974f8=0x0;const _0x28ee86=!isNaN(_0x30a7f1['max'])?_0x30a7f1['max']:enums_1['HMSH_QUORUM_ROLLCALL_CYCLES'];if(this['rollCallInterval'])clearTimeout(this['rollCallInterval']);const _0x29abf4=_0x30a7f1['interval']/0x2,_0x1786fb=_0x29abf4+Math['ceil'](Math['random']()*_0x29abf4);do{await(0x0,utils_1['sleepFor'])(Math['ceil'](Math['random']()*0x3e8)),await this['sayPong'](this['appId'],this['guid'],null,!![],_0x30a7f1['signature']);if(!_0x30a7f1['interval'])return;const {promise:_0x1dcea3,timerId:_0x4b927a}=(0x0,utils_1['XSleepFor'])(_0x1786fb*0x3e8);this['rollCallInterval']=_0x4b927a,await _0x1dcea3;}while(this['rollCallInterval']&&_0xb974f8++<_0x28ee86-0x1);}['cancelRollCall'](){this['rollCallInterval']&&(clearTimeout(this['rollCallInterval']),delete this['rollCallInterval']);}['stop'](){this['cancelRollCall']();}async['sayPong'](_0x693b32,_0x290f92,_0x14995e,_0x175b29=![],_0x655336=![]){let _0x47fc1b;if(_0x175b29){const _0x5114db={'appId':this['appId'],'topic':this['topic']};_0x47fc1b={'engine_id':this['guid'],'namespace':this['namespace'],'app_id':this['appId'],'worker_topic':this['topic'],'stream':this['store']['mintKey'](key_1['KeyType']['STREAMS'],_0x5114db),'counts':this['router']?.['counts'],'timestamp':(0x0,utils_1['formatISODate'])(new Date()),'inited':this['inited'],'throttle':this['router']?.['throttle'],'reclaimDelay':this['router']?.['reclaimDelay'],'reclaimCount':this['router']?.['reclaimCount'],'system':await(0x0,utils_1['getSystemHealth'])(),'signature':_0x655336?this['callback']['toString']():undefined};}this['subscribe']['publish'](key_1['KeyType']['QUORUM'],{'type':'pong','guid':_0x290f92,'originator':_0x14995e,'profile':_0x47fc1b},_0x693b32);}async['throttle'](_0x533956){this['router']?.['setThrottle'](_0x533956);}}function _0x5984(_0x22bb97,_0x2e552b){const _0x3d47a9=_0x3d47();return _0x5984=function(_0x59841c,_0x4ec2a7){_0x59841c=_0x59841c-0xec;let _0x7d53ac=_0x3d47a9[_0x59841c];return _0x7d53ac;},_0x5984(_0x22bb97,_0x2e552b);}exports['WorkerService']=WorkerService;
@@ -21,6 +21,14 @@ export interface NatsConnection extends ProviderClient {
21
21
  jetstreamManager(options?: NatsJetStreamOptions): Promise<NatsJetStreamManager>;
22
22
  close(): Promise<void>;
23
23
  }
24
+ export interface NatsSubscriptionType {
25
+ unsubscribe(): void;
26
+ drain(): Promise<void>;
27
+ subject: string;
28
+ queue?: string;
29
+ isClosed: boolean;
30
+ [Symbol.asyncIterator](): AsyncIterableIterator<NatsMessageType>;
31
+ }
24
32
  export type NatsClientType = NatsConnection;
25
33
  export type NatsClassType = (options: NatsClientOptions) => Promise<NatsConnection>;
26
34
  export interface NatsJetStreamClient {
@@ -10,15 +10,24 @@ export interface PostgresClientOptions {
10
10
  export type PostgresJobEnumType = 'status' | 'jdata' | 'adata' | 'udata' | 'jmark' | 'hmark' | 'other';
11
11
  export type PostgresClassType = {
12
12
  new (options: PostgresClientOptions): PostgresClientType;
13
+ };
14
+ export type PostgresPoolType = {
15
+ new (options: PostgresClientOptions): PostgresPoolClientType;
13
16
  connect: (options: PostgresClientOptions) => Promise<PostgresClientType>;
17
+ query: (text: string, values?: any[]) => Promise<PostgresQueryResultType>;
14
18
  };
15
19
  export interface PostgresClientType {
20
+ connect: () => Promise<PostgresClientType>;
16
21
  query: (text: string, values?: any[]) => Promise<PostgresQueryResultType>;
17
22
  end: () => Promise<void>;
18
23
  }
19
24
  export interface PostgresPoolClientType {
20
- query: (text: string, values?: any[]) => Promise<PostgresQueryResultType>;
25
+ connect: () => Promise<PostgresClientType>;
21
26
  release: () => void;
27
+ end: () => Promise<void>;
28
+ query: (text: string, values?: any[]) => Promise<PostgresQueryResultType>;
29
+ idleCount: number;
30
+ totalCount: number;
22
31
  }
23
32
  export interface PostgresQueryResultType {
24
33
  rows: any[];
@@ -23,6 +23,7 @@ export type TransactionResultList = (string | number)[];
23
23
  export type ProviderConfig = {
24
24
  class: any;
25
25
  options: StringAnyType;
26
+ provider?: string;
26
27
  };
27
28
  export type ProvidersConfig = {
28
29
  sub: ProviderConfig;
@@ -104,10 +104,10 @@ interface RedisRedisClientType extends ProviderClient {
104
104
  duplicate(): RedisRedisClientType;
105
105
  on(event: string, callback: (...args: any[]) => void): void;
106
106
  publish(channel: string, message: string): Promise<number>;
107
- pSubscribe(pattern: string, callback: (channel: string, message: string) => void): void;
108
- pUnsubscribe(pattern: string): void;
109
- subscribe(channel: string, callback: (channel: string, message: string) => void): void;
110
- unsubscribe(channel: string): void;
107
+ pSubscribe(pattern: string, callback: (channel: string, message: string) => void): Promise<void>;
108
+ pUnsubscribe(pattern: string): Promise<void>;
109
+ subscribe(channel: string, callback: (channel: string, message: string) => void): Promise<void>;
110
+ unsubscribe(channel: string): Promise<void>;
111
111
  punsubscribe(channel: string): void;
112
112
  get(key: string): Promise<string | null>;
113
113
  set(key: string, value: string): Promise<string>;
@@ -179,10 +179,10 @@ interface IORedisClient extends ProviderClient {
179
179
  flushdb(): Promise<string>;
180
180
  publish(channel: string, message: string): Promise<number>;
181
181
  psubscribe(pattern: string, callback: (channel: string, message: string) => void): Promise<void>;
182
- punsubscribe(pattern: string): void;
183
- subscribe(channel: string, callback: (channel: string, message: string) => void): void;
184
- unsubscribe(channel: string): void;
185
- punsubscribe(channel: string): void;
182
+ punsubscribe(pattern: string): Promise<number>;
183
+ subscribe(channel: string, callback: (channel: string, message: string) => void): Promise<void>;
184
+ unsubscribe(channel: string): Promise<number>;
185
+ punsubscribe(channel: string): Promise<number>;
186
186
  xadd(key: string, id: string, fields: any, message?: string): Promise<string>;
187
187
  xack(key: string, group: string, id: string): Promise<number>;
188
188
  xack(key: string, group: string, ...ids: string[]): Promise<number>;
package/index.ts CHANGED
@@ -8,25 +8,40 @@ import { MeshOS } from './services/meshos';
8
8
  import * as Errors from './modules/errors';
9
9
  import * as Utils from './modules/utils';
10
10
  import { ConnectorService as Connector } from './services/connector/factory';
11
+ import { PostgresConnection as ConnectorPostgres } from './services/connector/providers/postgres';
12
+ import { RedisConnection as ConnectorIORedis } from './services/connector/providers/ioredis';
13
+ import { RedisConnection as ConnectorRedis } from './services/connector/providers/redis';
14
+ import { NatsConnection as ConnectorNATS } from './services/connector/providers/nats';
11
15
 
12
16
  const { Client, Connection, Search, Worker, workflow } = MeshFlow;
13
17
 
14
18
  export {
15
- Client,
16
- Connection,
17
- Connector,
18
- Errors,
19
+ //Provider Connectors
20
+ Connector, //factory
21
+ ConnectorIORedis,
22
+ ConnectorNATS,
23
+ ConnectorPostgres,
24
+ ConnectorRedis,
25
+
26
+ //Top-level Modules
19
27
  HotMesh,
20
28
  HotMeshConfig,
21
29
  MeshCall,
22
30
  MeshData,
23
31
  MeshFlow,
24
32
  MeshOS,
33
+
34
+ //MeshFlow Submodules
35
+ Client,
36
+ Connection,
25
37
  Search,
26
- Utils,
27
38
  Worker,
28
39
  workflow,
29
40
  WorkflowHandle,
41
+
42
+ //Global Modules
43
+ Errors,
44
+ Utils,
30
45
  };
31
46
 
32
47
  export * as Types from './types';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hotmeshio/hotmesh",
3
- "version": "0.3.18",
3
+ "version": "0.3.20",
4
4
  "description": "Serverless Workflow",
5
5
  "main": "./build/index.js",
6
6
  "types": "./build/index.d.ts",
@@ -27,20 +27,20 @@
27
27
  "test:connect:nats": "NODE_ENV=test jest ./tests/unit/services/connector/providers/nats.test.ts --detectOpenHandles --forceExit --verbose",
28
28
  "test:cycle": "NODE_ENV=test jest ./tests/functional/cycle/*.test.ts --detectOpenHandles --forceExit --verbose",
29
29
  "test:meshflow": "NODE_ENV=test jest ./tests/meshflow/*/*.test.ts --detectOpenHandles --forceExit --verbose",
30
- "test:meshflow:basic": "NODE_ENV=test jest ./tests/meshflow/basic/*.test.ts --detectOpenHandles --forceExit --verbose",
30
+ "test:meshflow:basic": "HMSH_LOGLEVEL=info NODE_ENV=test jest ./tests/meshflow/basic/*.test.ts --detectOpenHandles --forceExit --verbose",
31
31
  "test:meshflow:collision": "NODE_ENV=test jest ./tests/meshflow/collision/*.test.ts --detectOpenHandles --forceExit --verbose",
32
32
  "test:meshflow:fatal": "NODE_ENV=test jest ./tests/meshflow/fatal/*.test.ts --detectOpenHandles --forceExit --verbose",
33
33
  "test:meshflow:goodbye": "NODE_ENV=test jest ./tests/meshflow/goodbye/*.test.ts --detectOpenHandles --forceExit --verbose",
34
34
  "test:meshflow:hello": "HMSH_LOGLEVEL=debug HMSH_IS_CLUSTER=true NODE_ENV=test jest ./tests/meshflow/helloworld/*.test.ts --detectOpenHandles --forceExit --verbose",
35
35
  "test:meshflow:hook": "NODE_ENV=test jest ./tests/meshflow/hook/*.test.ts --detectOpenHandles --forceExit --verbose",
36
36
  "test:meshflow:interrupt": "NODE_ENV=test jest ./tests/meshflow/interrupt/*.test.ts --detectOpenHandles --forceExit --verbose",
37
- "test:meshflow:loopactivity": "NODE_ENV=test jest ./tests/meshflow/loopactivity/*.test.ts --detectOpenHandles --forceExit --verbose",
37
+ "test:meshflow:loopactivity": "NODE_ENV=test jest ./tests/meshflow/loopactivity/I.test.ts --detectOpenHandles --forceExit --verbose",
38
38
  "test:meshflow:nested": "NODE_ENV=test jest ./tests/meshflow/nested/*.test.ts --detectOpenHandles --forceExit --verbose",
39
39
  "test:meshflow:retry": "NODE_ENV=test jest ./tests/meshflow/retry/*.test.ts --detectOpenHandles --forceExit --verbose",
40
40
  "test:meshflow:sleep": "NODE_ENV=test jest ./tests/meshflow/sleep/*.test.ts --detectOpenHandles --forceExit --verbose",
41
41
  "test:meshflow:signal": "NODE_ENV=test jest ./tests/meshflow/signal/*.test.ts --detectOpenHandles --forceExit --verbose",
42
42
  "test:meshflow:unknown": "NODE_ENV=test jest ./tests/meshflow/unknown/*.test.ts --detectOpenHandles --forceExit --verbose",
43
- "test:emit": "NODE_ENV=test jest ./tests/functional/emit/index.test.ts --detectOpenHandles --forceExit --verbose",
43
+ "test:emit": "NODE_ENV=test jest ./tests/functional/emit/*.test.ts --detectOpenHandles --forceExit --verbose",
44
44
  "test:pending": "NODE_ENV=test jest ./tests/functional/pending/index.test.ts --detectOpenHandles --forceExit --verbose",
45
45
  "test:functional": "NODE_ENV=test jest ./tests/functional/* --detectOpenHandles --forceExit --verbose",
46
46
  "test:hmsh": "NODE_ENV=test jest ./tests/functional/*.test.ts --detectOpenHandles --verbose --forceExit",
@@ -52,11 +52,12 @@
52
52
  "test:reclaim": "NODE_ENV=test jest ./tests/functional/reclaim/index.test.ts --detectOpenHandles --forceExit --verbose",
53
53
  "test:redeploy": "NODE_ENV=test jest ./tests/functional/redeploy/*.test.ts --detectOpenHandles --forceExit --verbose",
54
54
  "test:reporter": "NODE_ENV=test jest ./tests/unit/services/reporter/index.test.ts --detectOpenHandles --forceExit --verbose",
55
- "test:reentrant": "NODE_ENV=test jest ./tests/functional/reentrant/index.test.ts --detectOpenHandles --forceExit --verbose",
55
+ "test:reentrant": "NODE_ENV=test jest ./tests/functional/reentrant/*.test.ts --detectOpenHandles --forceExit --verbose",
56
56
  "test:retry": "NODE_ENV=test jest ./tests/functional/retry/*.test.ts --detectOpenHandles --forceExit --verbose",
57
57
  "test:sequence": "NODE_ENV=test HMSH_LOGLEVEL=debug jest ./tests/functional/sequence/*.test.ts --detectOpenHandles --forceExit --verbose",
58
- "test:signal": "NODE_ENV=test jest ./tests/functional/signal/index.test.ts --detectOpenHandles --forceExit --verbose",
58
+ "test:signal": "NODE_ENV=test jest ./tests/functional/signal/*.test.ts --detectOpenHandles --forceExit --verbose",
59
59
  "test:status": "NODE_ENV=test jest ./tests/functional/status/index.test.ts --detectOpenHandles --forceExit --verbose",
60
+ "test:providers": "NODE_ENV=test jest ./tests/functional/*/providers/*/*.test.ts --detectOpenHandles --forceExit --verbose",
60
61
  "test:store:ioredis": "NODE_ENV=test jest ./tests/functional/store/providers/redis/ioredis.test.ts --detectOpenHandles --forceExit --verbose",
61
62
  "test:store:redis": "NODE_ENV=test jest ./tests/functional/store/providers/redis/redis.test.ts --detectOpenHandles --forceExit --verbose",
62
63
  "test:store:postgres": "NODE_ENV=test jest ./tests/functional/store/providers/postgres/postgres.test.ts --detectOpenHandles --forceExit --verbose",
@@ -66,8 +67,10 @@
66
67
  "test:stream:nats": "NODE_ENV=test jest ./tests/functional/stream/providers/nats/nats.test.ts --detectOpenHandles --forceExit --verbose",
67
68
  "test:sub:ioredis": "NODE_ENV=test jest ./tests/functional/sub/providers/redis/ioredis.test.ts --detectOpenHandles --forceExit --verbose",
68
69
  "test:sub:redis": "NODE_ENV=test jest ./tests/functional/sub/providers/redis/redis.test.ts --detectOpenHandles --forceExit --verbose",
70
+ "test:sub:postgres": "NODE_ENV=test jest ./tests/functional/sub/providers/postgres/postgres.test.ts --detectOpenHandles --forceExit --verbose",
71
+ "test:sub:nats": "NODE_ENV=test jest ./tests/functional/sub/providers/nats/nats.test.ts --detectOpenHandles --forceExit --verbose",
69
72
  "test:trigger": "NODE_ENV=test jest ./tests/unit/services/activities/trigger.test.ts --detectOpenHandles --forceExit --verbose",
70
- "test:meshdata": "NODE_ENV=test jest ./tests/meshdata/postgres.test.ts --forceExit --verbose --detectOpenHandles",
73
+ "test:meshdata": "NODE_ENV=test jest ./tests/meshdata/*.test.ts --forceExit --verbose --detectOpenHandles",
71
74
  "test:meshos": "NODE_ENV=test HMSH_IS_CLUSTER=true jest ./tests/meshos/*.test.ts --forceExit --verbose --detectOpenHandles",
72
75
  "test:meshcall": "NODE_ENV=test jest ./tests/meshcall/*.test.ts --forceExit --verbose --detectOpenHandles",
73
76
  "test:unit": "NODE_ENV=test jest ./tests/unit/*/*/index.test.ts --detectOpenHandles --forceExit --verbose"
package/types/nats.ts CHANGED
@@ -35,6 +35,40 @@ export interface NatsConnection extends ProviderClient {
35
35
  close(): Promise<void>;
36
36
  }
37
37
 
38
+ export interface NatsSubscriptionType {
39
+ /**
40
+ * Unsubscribes from the subject, stopping message delivery.
41
+ */
42
+ unsubscribe(): void;
43
+
44
+ /**
45
+ * Drains the subscription, ensuring all pending messages are delivered
46
+ * before unsubscribing.
47
+ * @returns Promise<void>
48
+ */
49
+ drain(): Promise<void>;
50
+
51
+ /**
52
+ * The subject this subscription is listening to.
53
+ */
54
+ subject: string;
55
+
56
+ /**
57
+ * The queue group this subscription belongs to, if any.
58
+ */
59
+ queue?: string;
60
+
61
+ /**
62
+ * Indicates whether this subscription is currently active.
63
+ */
64
+ isClosed: boolean;
65
+
66
+ /**
67
+ * Async iterator for processing incoming messages.
68
+ */
69
+ [Symbol.asyncIterator](): AsyncIterableIterator<NatsMessageType>;
70
+ }
71
+
38
72
  /** Type representing the NATS Connection */
39
73
  export type NatsClientType = NatsConnection;
40
74
 
package/types/postgres.ts CHANGED
@@ -21,18 +21,29 @@ export type PostgresJobEnumType =
21
21
 
22
22
  export type PostgresClassType = {
23
23
  new (options: PostgresClientOptions): PostgresClientType;
24
- connect: (options: PostgresClientOptions) => Promise<PostgresClientType>;
25
24
  };
26
25
 
26
+ export type PostgresPoolType = {
27
+ new (options: PostgresClientOptions): PostgresPoolClientType;
28
+ connect: (options: PostgresClientOptions) => Promise<PostgresClientType>;
29
+ //NOTE: query is a shorthand and includes implicit `connect/release` handled by pool
30
+ query: (text: string, values?: any[]) => Promise<PostgresQueryResultType>;
31
+ };
32
+
27
33
  export interface PostgresClientType {
34
+ connect: () => Promise<PostgresClientType>;
28
35
  query: (text: string, values?: any[]) => Promise<PostgresQueryResultType>;
29
36
  end: () => Promise<void>;
30
37
  // Include other methods if necessary
31
38
  }
32
39
 
33
40
  export interface PostgresPoolClientType {
34
- query: (text: string, values?: any[]) => Promise<PostgresQueryResultType>;
41
+ connect: () => Promise<PostgresClientType>;
35
42
  release: () => void;
43
+ end: () => Promise<void>;
44
+ query: (text: string, values?: any[]) => Promise<PostgresQueryResultType>;
45
+ idleCount: number;
46
+ totalCount: number;
36
47
  // Include other methods if necessary
37
48
  }
38
49
 
package/types/provider.ts CHANGED
@@ -67,8 +67,12 @@ export type TransactionResultList = (string | number)[]; // e.g., [3, 2, '0']
67
67
  export type ProviderConfig = {
68
68
  class: any;
69
69
  options: StringAnyType;
70
+ /* 'redis' (Class) | 'ioredis' (Class) | 'postgres' (Client module) | 'postgres.pool' | 'postgres.poolclient', 'nats' */
71
+ provider?: string;
70
72
  };
71
73
 
74
+
75
+
72
76
  export type ProvidersConfig = {
73
77
  sub: ProviderConfig;
74
78
  store: ProviderConfig;
package/types/redis.ts CHANGED
@@ -139,13 +139,13 @@ interface RedisRedisClientType extends ProviderClient {
139
139
  pSubscribe(
140
140
  pattern: string,
141
141
  callback: (channel: string, message: string) => void,
142
- ): void;
143
- pUnsubscribe(pattern: string): void;
142
+ ): Promise<void>;
143
+ pUnsubscribe(pattern: string): Promise<void>;
144
144
  subscribe(
145
145
  channel: string,
146
146
  callback: (channel: string, message: string) => void,
147
- ): void;
148
- unsubscribe(channel: string): void;
147
+ ): Promise<void>;
148
+ unsubscribe(channel: string): Promise<void>;
149
149
  punsubscribe(channel: string): void;
150
150
  get(key: string): Promise<string | null>;
151
151
  set(key: string, value: string): Promise<string>;
@@ -239,13 +239,13 @@ interface IORedisClient extends ProviderClient {
239
239
  pattern: string,
240
240
  callback: (channel: string, message: string) => void,
241
241
  ): Promise<void>;
242
- punsubscribe(pattern: string): void;
242
+ punsubscribe(pattern: string): Promise<number>;
243
243
  subscribe(
244
244
  channel: string,
245
245
  callback: (channel: string, message: string) => void,
246
- ): void;
247
- unsubscribe(channel: string): void;
248
- punsubscribe(channel: string): void;
246
+ ): Promise<void>;
247
+ unsubscribe(channel: string): Promise<number>;
248
+ punsubscribe(channel: string): Promise<number>;
249
249
 
250
250
  xadd(key: string, id: string, fields: any, message?: string): Promise<string>;
251
251
  xack(key: string, group: string, id: string): Promise<number>;