@hotmeshio/hotmesh 0.3.17 → 0.3.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +161 -64
- package/build/modules/key.js +1 -1
- package/build/modules/utils.js +1 -1
- package/build/package.json +6 -8
- package/build/services/activities/activity.js +1 -1
- package/build/services/activities/await.js +1 -1
- package/build/services/activities/cycle.js +1 -1
- package/build/services/activities/hook.js +1 -1
- package/build/services/activities/index.js +1 -1
- package/build/services/activities/interrupt.js +1 -1
- package/build/services/activities/signal.js +1 -1
- package/build/services/activities/trigger.js +1 -1
- package/build/services/activities/worker.js +1 -1
- package/build/services/collator/index.js +1 -1
- package/build/services/compiler/deployer.js +1 -1
- package/build/services/compiler/index.js +1 -1
- package/build/services/compiler/validator.js +1 -1
- package/build/services/engine/index.d.ts +1 -1
- package/build/services/engine/index.js +1 -1
- package/build/services/exporter/index.js +1 -1
- package/build/services/mapper/index.js +1 -1
- package/build/services/meshflow/exporter.js +1 -1
- package/build/services/pipe/functions/array.js +1 -1
- package/build/services/pipe/functions/bitwise.js +1 -1
- package/build/services/pipe/functions/conditional.js +1 -1
- package/build/services/pipe/functions/cron.js +1 -1
- package/build/services/pipe/functions/date.js +1 -1
- package/build/services/pipe/functions/index.js +1 -1
- package/build/services/pipe/functions/json.js +1 -1
- package/build/services/pipe/functions/logical.js +1 -1
- package/build/services/pipe/functions/math.js +1 -1
- package/build/services/pipe/functions/number.js +1 -1
- package/build/services/pipe/functions/object.js +1 -1
- package/build/services/pipe/functions/string.js +1 -1
- package/build/services/pipe/functions/symbol.js +1 -1
- package/build/services/pipe/functions/unary.js +1 -1
- package/build/services/pipe/index.js +1 -1
- package/build/services/quorum/index.d.ts +1 -1
- package/build/services/quorum/index.js +1 -1
- package/build/services/reporter/index.js +1 -1
- package/build/services/router/index.js +1 -1
- package/build/services/search/providers/postgres/postgres.js +1 -1
- package/build/services/search/providers/redis/ioredis.js +1 -1
- package/build/services/search/providers/redis/redis.js +1 -1
- package/build/services/serializer/index.js +1 -1
- package/build/services/store/providers/postgres/kvsql.js +1 -1
- package/build/services/store/providers/postgres/kvtables.d.ts +1 -0
- package/build/services/store/providers/postgres/kvtables.js +1 -1
- package/build/services/store/providers/postgres/kvtransaction.js +1 -1
- package/build/services/store/providers/postgres/kvtypes/hash.d.ts +1 -0
- package/build/services/store/providers/postgres/kvtypes/hash.js +1 -1
- package/build/services/store/providers/postgres/kvtypes/list.js +1 -1
- package/build/services/store/providers/postgres/kvtypes/string.js +1 -1
- package/build/services/store/providers/postgres/kvtypes/zset.js +1 -1
- package/build/services/store/providers/postgres/postgres.js +1 -1
- package/build/services/store/providers/redis/_base.js +1 -1
- package/build/services/store/providers/redis/ioredis.js +1 -1
- package/build/services/store/providers/redis/redis.js +1 -1
- package/build/services/store/providers/store-initializable.js +1 -1
- package/build/services/stream/providers/nats/nats.js +1 -1
- package/build/services/stream/providers/postgres/postgres.d.ts +1 -0
- package/build/services/stream/providers/postgres/postgres.js +1 -1
- package/build/services/stream/providers/redis/ioredis.js +1 -1
- package/build/services/stream/providers/redis/redis.js +1 -1
- package/build/services/stream/providers/stream-initializable.js +1 -1
- package/build/services/sub/factory.d.ts +2 -2
- package/build/services/sub/factory.js +8 -4
- package/build/services/sub/index.d.ts +3 -2
- package/build/services/sub/providers/postgres/postgres.d.ts +18 -0
- package/build/services/sub/providers/postgres/postgres.js +1 -0
- package/build/services/sub/providers/redis/ioredis.d.ts +1 -1
- package/build/services/sub/providers/redis/ioredis.js +1 -1
- package/build/services/sub/providers/redis/redis.d.ts +1 -1
- package/build/services/sub/providers/redis/redis.js +1 -1
- package/build/services/task/index.js +1 -1
- package/build/services/telemetry/index.js +1 -1
- package/build/services/worker/index.d.ts +1 -1
- package/build/services/worker/index.js +1 -1
- package/build/types/redis.d.ts +8 -8
- package/package.json +6 -8
- package/types/redis.ts +8 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
'use strict';
|
|
1
|
+
'use strict';(function(_0x3f32a8,_0x133bfe){const _0x411134=_0x3183,_0x4eaf9d=_0x3f32a8();while(!![]){try{const _0x10b54b=parseInt(_0x411134(0x1ef))/0x1*(-parseInt(_0x411134(0x1f2))/0x2)+-parseInt(_0x411134(0x1f6))/0x3*(-parseInt(_0x411134(0x1f3))/0x4)+parseInt(_0x411134(0x1f1))/0x5*(parseInt(_0x411134(0x1f0))/0x6)+parseInt(_0x411134(0x1ed))/0x7+parseInt(_0x411134(0x1ee))/0x8+-parseInt(_0x411134(0x1f5))/0x9+-parseInt(_0x411134(0x1f4))/0xa;if(_0x10b54b===_0x133bfe)break;else _0x4eaf9d['push'](_0x4eaf9d['shift']());}catch(_0x54ceef){_0x4eaf9d['push'](_0x4eaf9d['shift']());}}}(_0x49e1,0x92161));function _0x49e1(){const _0x4654bc=['12204400HGpjab','97353QXwooR','21NLdWce','1765820YUCpSR','914312JZuAtM','3ztEkUG','5178mXqRiA','5105oHOPEF','52102MxsShW','377204euuUuY'];_0x49e1=function(){return _0x4654bc;};return _0x49e1();}Object['defineProperty'](exports,'__esModule',{'value':!![]}),exports['NatsStreamService']=void 0x0;const index_1=require('../../index'),key_1=require('../../../../modules/key'),enums_1=require('../../../../modules/enums'),utils_1=require('../../../../modules/utils');class NatsStreamService extends index_1['StreamService']{constructor(_0x5e80b0,_0x3224c6,_0x3695b3={}){super(_0x5e80b0,_0x3224c6,_0x3695b3),this['jetstream']=_0x5e80b0['jetstream']();}async['init'](_0x3cad10,_0x563d42,_0x414d18){this['namespace']=_0x3cad10,this['logger']=_0x414d18,this['appId']=_0x563d42,this['jsm']=await this['jetstream']['jetstreamManager']();}['mintKey'](_0x30194a,_0x5b4c82){if(!this['namespace'])throw new Error('namespace\x20not\x20set');return key_1['KeyService']['mintKey'](this['namespace'],_0x30194a,{..._0x5b4c82,'appId':this['appId']});}['transact'](){return{};}async['createStream'](_0x207c1){try{const _0x7a5d48={'name':_0x207c1,'subjects':[_0x207c1+'.*'],'retention':'workqueue','storage':'memory','num_replicas':0x1};return await this['jsm']['streams']['add'](_0x7a5d48),!![];}catch(_0x48842e){this['logger']['error']('Error\x20creating\x20stream\x20'+_0x207c1,{'error':_0x48842e});throw _0x48842e;}}async['deleteStream'](_0x5b7f11){try{return await this['jsm']['streams']['delete'](_0x5b7f11),!![];}catch(_0x34b17d){this['logger']['error']('Error\x20deleting\x20stream\x20'+_0x5b7f11,{'error':_0x34b17d});throw _0x34b17d;}}async['createConsumerGroup'](_0x49ce35,_0xdc2cdd){try{const _0x33fcbf={'durable_name':_0xdc2cdd,'deliver_group':_0xdc2cdd,'ack_policy':'explicit','ack_wait':0x1e*0x3e8,'max_deliver':0xa};return await this['jsm']['consumers']['add'](_0x49ce35,_0x33fcbf),!![];}catch(_0x58b13a){this['logger']['error']('Error\x20creating\x20consumer\x20group\x20'+_0xdc2cdd+'\x20for\x20stream\x20'+_0x49ce35,{'error':_0x58b13a});throw _0x58b13a;}}async['deleteConsumerGroup'](_0x1a8e02,_0x47beab){try{return await this['jsm']['consumers']['delete'](_0x1a8e02,_0x47beab),!![];}catch(_0x16a5c3){this['logger']['error']('Error\x20deleting\x20consumer\x20group\x20'+_0x47beab+'\x20for\x20stream\x20'+_0x1a8e02,{'error':_0x16a5c3});throw _0x16a5c3;}}async['publishMessages'](_0x2afab3,_0x1aa43d,_0xf6287a){try{const _0x4dbba7=_0x1aa43d['map'](async _0x525fee=>{const _0x1c5044=_0x2afab3+'.message',_0x3fac97=await this['jetstream']['publish'](_0x1c5044,Buffer['from'](_0x525fee));return _0x3fac97;}),_0x38756d=await Promise['all'](_0x4dbba7);return _0x38756d['map'](_0x4d8538=>_0x4d8538['seq']['toString']());}catch(_0x31cf1d){this['logger']['error']('Error\x20publishing\x20messages\x20to\x20'+_0x2afab3,{'error':_0x31cf1d});throw _0x31cf1d;}}async['consumeMessages'](_0x567a09,_0x1a7ff9,_0xb10751,_0x20fc5d){try{const _0xd9c8de=await this['jetstream']['consumers']['get'](_0x567a09,_0x1a7ff9),_0xefc0cb=[],_0x302fa4={'max_messages':_0x20fc5d?.['batchSize']||0x1,'expires':_0x20fc5d?.['blockTimeout']||enums_1['HMSH_BLOCK_TIME_MS']},_0x2310a9=await _0xd9c8de['fetch'](_0x302fa4);for await(const _0x4830f3 of _0x2310a9){_0xefc0cb['push']({'id':_0x4830f3['seq']['toString'](),'data':(0x0,utils_1['parseStreamMessage'])(_0x4830f3['string']())});}return _0xefc0cb;}catch(_0x33a221){this['logger']['error']('Error\x20consuming\x20messages\x20from\x20'+_0x567a09,{'error':_0x33a221});throw _0x33a221;}}async['ackAndDelete'](_0x27006d,_0x379845,_0x1e07df){try{return await this['acknowledgeMessages'](_0x27006d,_0x379845,_0x1e07df),_0x1e07df['length'];}catch(_0x29a108){this['logger']['error']('Error\x20in\x20ack\x20and\x20delete\x20for\x20stream\x20'+_0x27006d,{'error':_0x29a108});throw _0x29a108;}}async['acknowledgeMessages'](_0x1c845d,_0x304d7a,_0x25facd,_0x2f6a1b){return _0x25facd['length'];}async['deleteMessages'](_0x17fc1b,_0x3e59a1,_0x1c9cb5,_0x1e28e0){try{return await Promise['all'](_0x1c9cb5['map'](_0x560996=>this['jsm']['streams']['deleteMessage'](_0x17fc1b,parseInt(_0x560996)))),_0x1c9cb5['length'];}catch(_0x156ba3){this['logger']['error']('Error\x20deleting\x20messages\x20from\x20'+_0x17fc1b,{'error':_0x156ba3});throw _0x156ba3;}}async['retryMessages'](_0x5c8c6b,_0x9c4715,_0x1a2afa){return[];}async['getStreamStats'](_0x435e4e){try{const _0x4617d5=await this['jsm']['streams']['info'](_0x435e4e);return{'messageCount':_0x4617d5['state']['messages']};}catch(_0x5c32ac){this['logger']['error']('Error\x20getting\x20stats\x20for\x20'+_0x435e4e,{'error':_0x5c32ac});throw _0x5c32ac;}}async['getStreamDepth'](_0x5ceefc){try{const _0xff87e5=await this['jsm']['streams']['info'](_0x5ceefc);return _0xff87e5['state']['messages'];}catch(_0x5130b9){this['logger']['error']('Error\x20getting\x20depth\x20for\x20'+_0x5ceefc,{'error':_0x5130b9});throw _0x5130b9;}}async['getStreamDepths'](_0x501b47){try{const _0x2de854=await Promise['all'](_0x501b47['map'](async({stream:_0x1422fe})=>({'stream':_0x1422fe,'depth':await this['getStreamDepth'](_0x1422fe)})));return _0x2de854;}catch(_0x3bc29c){this['logger']['error']('Error\x20getting\x20multiple\x20stream\x20depths',{'error':_0x3bc29c});throw _0x3bc29c;}}async['trimStream'](_0x59363d,_0x578117){try{const _0x16fd19=await this['jsm']['streams']['info'](_0x59363d),_0x4f2827={..._0x16fd19['config']};return _0x578117['maxLen']!==undefined&&(_0x4f2827['max_msgs']=_0x578117['maxLen']),_0x578117['maxAge']!==undefined&&(_0x4f2827['max_age']=_0x578117['maxAge']*0x3b9aca00),await this['jsm']['streams']['update'](_0x59363d,_0x4f2827),0x0;}catch(_0x41592a){this['logger']['error']('Error\x20trimming\x20stream\x20'+_0x59363d,{'error':_0x41592a});throw _0x41592a;}}['getProviderSpecificFeatures'](){return{'supportsBatching':!![],'supportsDeadLetterQueue':!![],'supportsOrdering':!![],'supportsTrimming':!![],'supportsRetry':![],'maxMessageSize':0x400*0x400,'maxBatchSize':0x100};}}function _0x3183(_0x2708ae,_0x12a213){const _0x49e1bf=_0x49e1();return _0x3183=function(_0x31834c,_0x514541){_0x31834c=_0x31834c-0x1ed;let _0x595bf9=_0x49e1bf[_0x31834c];return _0x595bf9;},_0x3183(_0x2708ae,_0x12a213);}exports['NatsStreamService']=NatsStreamService;
|
|
@@ -15,6 +15,7 @@ declare class PostgresStreamService extends StreamService<PostgresClientType & P
|
|
|
15
15
|
getAdvisoryLockId(): number;
|
|
16
16
|
hashStringToInt(str: string): number;
|
|
17
17
|
checkIfTablesExist(client: PostgresClientType): Promise<boolean>;
|
|
18
|
+
safeName(appId: string): string;
|
|
18
19
|
getTableName(): string;
|
|
19
20
|
createTables(client: PostgresClientType): Promise<void>;
|
|
20
21
|
delay(ms: number): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
'use strict';function _0x4b6d(){const _0x2774e5=['582VQRhAC','790866JjyCVn','280726prBryQ','28VeIylB','11176ufKYWi','16189448BLxJPk','796050AhezyG','1077640rKcHqS','3Sfewoy','1555504SlKxSt','10MXVHTx'];_0x4b6d=function(){return _0x2774e5;};return _0x4b6d();}(function(_0x42991d,_0x346968){const _0x572093=_0x6a8b,_0x1e797c=_0x42991d();while(!![]){try{const _0x3e2769=-parseInt(_0x572093(0x1c0))/0x1*(-parseInt(_0x572093(0x1ba))/0x2)+parseInt(_0x572093(0x1b8))/0x3*(parseInt(_0x572093(0x1bc))/0x4)+parseInt(_0x572093(0x1bf))/0x5+-parseInt(_0x572093(0x1be))/0x6*(-parseInt(_0x572093(0x1bb))/0x7)+parseInt(_0x572093(0x1c1))/0x8+parseInt(_0x572093(0x1b9))/0x9*(-parseInt(_0x572093(0x1b7))/0xa)+-parseInt(_0x572093(0x1bd))/0xb;if(_0x3e2769===_0x346968)break;else _0x1e797c['push'](_0x1e797c['shift']());}catch(_0x426426){_0x1e797c['push'](_0x1e797c['shift']());}}}(_0x4b6d,0x54055));function _0x6a8b(_0x27880c,_0x44b6b5){const _0x4b6d28=_0x4b6d();return _0x6a8b=function(_0x6a8b80,_0x34fa46){_0x6a8b80=_0x6a8b80-0x1b7;let _0x4b154d=_0x4b6d28[_0x6a8b80];return _0x4b154d;},_0x6a8b(_0x27880c,_0x44b6b5);}Object['defineProperty'](exports,'__esModule',{'value':!![]}),exports['PostgresStreamService']=void 0x0;const key_1=require('../../../../modules/key'),utils_1=require('../../../../modules/utils'),index_1=require('../../index');class PostgresStreamService extends index_1['StreamService']{constructor(_0x3bc38e,_0x51706b,_0x2a3b4b={}){super(_0x3bc38e,_0x51706b,_0x2a3b4b);}async['init'](_0x165ab2,_0x3283a1,_0x2596be){this['namespace']=_0x165ab2,this['appId']=_0x3283a1,this['logger']=_0x2596be,await this['deploy']();}async['deploy'](){const _0x59a5c9=this['streamClient'];try{const _0x16723f=this['getAdvisoryLockId'](),_0x1226da=await _0x59a5c9['query']('SELECT\x20pg_try_advisory_lock($1)\x20AS\x20locked',[_0x16723f]);if(_0x1226da['rows'][0x0]['locked']){await _0x59a5c9['query']('BEGIN');const _0x1c0f7c=await this['checkIfTablesExist'](_0x59a5c9);!_0x1c0f7c&&await this['createTables'](_0x59a5c9),await _0x59a5c9['query']('COMMIT'),await _0x59a5c9['query']('SELECT\x20pg_advisory_unlock($1)',[_0x16723f]);}else{let _0x3d7002=0x0;const _0x433802=0x14;while(_0x3d7002<_0x433802){await this['delay'](0x64);const _0x2f3a93=await _0x59a5c9['query']('SELECT\x20NOT\x20EXISTS\x20(SELECT\x201\x20FROM\x20pg_locks\x20WHERE\x20locktype\x20=\x20\x27advisory\x27\x20AND\x20objid\x20=\x20$1::bigint)\x20AS\x20unlocked',[_0x16723f]);if(_0x2f3a93['rows'][0x0]['unlocked']){const _0x3a3765=await this['checkIfTablesExist'](_0x59a5c9);if(_0x3a3765)break;}_0x3d7002++;}if(_0x3d7002===_0x433802)throw new Error('Timeout\x20waiting\x20for\x20table\x20creation');}}catch(_0x4b4b15){this['logger']['error']('Error\x20deploying\x20tables',{'error':_0x4b4b15});throw _0x4b4b15;}}['getAdvisoryLockId'](){return this['hashStringToInt'](this['appId']);}['hashStringToInt'](_0x7c1219){let _0x3c4468=0x0;for(let _0x2811b1=0x0;_0x2811b1<_0x7c1219['length'];_0x2811b1++){_0x3c4468=(_0x3c4468<<0x5)-_0x3c4468+_0x7c1219['charCodeAt'](_0x2811b1),_0x3c4468|=0x0;}return Math['abs'](_0x3c4468);}async['checkIfTablesExist'](_0xd5d9dc){const _0x393c4b=await _0xd5d9dc['query']('SELECT\x20to_regclass(\x27public.'+this['getTableName']()+'\x27)\x20AS\x20table');return _0x393c4b['rows'][0x0]['table']!==null;}['getTableName'](){return'hotmesh_'+this['appId']['replace'](/[^a-zA-Z0-9_]/g,'_')+'_streams';}async['createTables'](_0x4a19ef){const _0x55819f=this['getTableName']();await _0x4a19ef['query']('BEGIN'),await _0x4a19ef['query']('CREATE\x20TABLE\x20'+_0x55819f+'\x20(\x0a\x20\x20\x20\x20\x20\x20\x20\x20id\x20BIGSERIAL,\x0a\x20\x20\x20\x20\x20\x20\x20\x20stream_name\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20\x20\x20\x20\x20group_name\x20TEXT\x20NOT\x20NULL\x20DEFAULT\x20\x27ENGINE\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20\x20\x20\x20\x20created_at\x20TIMESTAMPTZ\x20DEFAULT\x20NOW(),\x0a\x20\x20\x20\x20\x20\x20\x20\x20reserved_at\x20TIMESTAMPTZ,\x0a\x20\x20\x20\x20\x20\x20\x20\x20reserved_by\x20TEXT,\x0a\x20\x20\x20\x20\x20\x20\x20\x20PRIMARY\x20KEY\x20(stream_name,\x20id)\x0a\x20\x20\x20\x20\x20\x20)\x20PARTITION\x20BY\x20HASH\x20(stream_name)');for(let _0x110ca2=0x0;_0x110ca2<0x8;_0x110ca2++){await _0x4a19ef['query']('CREATE\x20TABLE\x20'+_0x55819f+'_part_'+_0x110ca2+'\x20PARTITION\x20OF\x20'+_0x55819f+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20FOR\x20VALUES\x20WITH\x20(modulus\x208,\x20remainder\x20'+_0x110ca2+')');}await _0x4a19ef['query']('CREATE\x20INDEX\x20idx_'+_0x55819f+'_group_stream_reserved_at_id\x20\x0a\x20\x20\x20\x20\x20\x20\x20ON\x20'+_0x55819f+'\x20(group_name,\x20stream_name,\x20reserved_at,\x20id)'),await _0x4a19ef['query']('COMMIT');}['delay'](_0x45f01c){return new Promise(_0x213d49=>setTimeout(_0x213d49,_0x45f01c));}['mintKey'](_0x29d535,_0x3765b3){if(!this['namespace'])throw new Error('namespace\x20not\x20set');return key_1['KeyService']['mintKey'](this['namespace'],_0x29d535,{..._0x3765b3,'appId':this['appId']});}['transact'](){return{};}async['createStream'](_0x41ac39){return!![];}async['deleteStream'](_0x32bf4a){const _0x325c19=this['streamClient'],_0x5b048c=this['getTableName']();try{return _0x32bf4a==='*'?await _0x325c19['query']('DELETE\x20FROM\x20'+_0x5b048c):await _0x325c19['query']('DELETE\x20FROM\x20'+_0x5b048c+'\x20WHERE\x20stream_name\x20=\x20$1',[_0x32bf4a]),!![];}catch(_0x1d5b24){this['logger']['error']('Error\x20deleting\x20stream\x20'+_0x32bf4a,{'error':_0x1d5b24});throw _0x1d5b24;}}async['createConsumerGroup'](_0x19582a,_0x4d3248){return!![];}async['deleteConsumerGroup'](_0x314dd4,_0x444199){const _0x113a72=this['streamClient'],_0xd41bf2=this['getTableName']();try{return await _0x113a72['query']('DELETE\x20FROM\x20'+_0xd41bf2+'\x20WHERE\x20stream_name\x20=\x20$1\x20AND\x20group_name\x20=\x20$2',[_0x314dd4,_0x444199]),!![];}catch(_0x24c743){this['logger']['error']('Error\x20deleting\x20consumer\x20group\x20'+_0x444199+'\x20for\x20stream\x20'+_0x314dd4,{'error':_0x24c743});throw _0x24c743;}}async['publishMessages'](_0x48df4a,_0x2d0cd1,_0x3855b6){const {sql:_0x10c591,params:_0x10bdec}=this['_publishMessages'](_0x48df4a,_0x2d0cd1);if(_0x3855b6?.['transaction']&&typeof _0x3855b6['transaction']['addCommand']==='function')return _0x3855b6['transaction']['addCommand'](_0x10c591,_0x10bdec,'array',_0x1fc58b=>_0x1fc58b['map'](_0x5f4730=>_0x5f4730['id']['toString']())),_0x3855b6['transaction'];else try{const _0x28f4da=[],_0xb03050=await this['streamClient']['query'](_0x10c591,_0x10bdec);for(const _0x463f2c of _0xb03050['rows']){_0x28f4da['push'](_0x463f2c['id']['toString']());}return _0x28f4da;}catch(_0x37dd47){this['logger']['error']('Error\x20publishing\x20messages\x20to\x20'+_0x48df4a,{'error':_0x37dd47});throw _0x37dd47;}}['_publishMessages'](_0x13fab5,_0x503c0a){const _0x3a4ed9=this['getTableName'](),_0x501b64=_0x13fab5['endsWith'](':')?'ENGINE':'WORKER',_0x1d1ff1=_0x503c0a['map']((_0x2850f8,_0x400b9c)=>'($1,\x20$2,\x20$'+(_0x400b9c+0x3)+')')['join'](',\x20');return{'sql':'INSERT\x20INTO\x20'+_0x3a4ed9+'\x20(stream_name,\x20group_name,\x20message)\x20VALUES\x20'+_0x1d1ff1+'\x20RETURNING\x20id','params':[_0x13fab5,_0x501b64,..._0x503c0a]};}async['consumeMessages'](_0x2938b8,_0x31f8a1,_0x200c07,_0x482635){const _0x3af7b3=this['streamClient'],_0x352a22=this['getTableName']();try{const _0x283660=_0x482635?.['batchSize']||0x1,_0xa60e17=_0x482635?.['reservationTimeout']||0x1e,_0x3ab735=await _0x3af7b3['query']('WITH\x20selected_messages\x20AS\x20(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20SELECT\x20id,\x20message\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20FROM\x20'+_0x352a22+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20stream_name\x20=\x20$1\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20AND\x20group_name\x20=\x20$2\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20AND\x20COALESCE(reserved_at,\x20\x271970-01-01\x27)\x20<\x20NOW()\x20-\x20INTERVAL\x20\x27'+_0xa60e17+'\x20seconds\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ORDER\x20BY\x20id\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20LIMIT\x20$3\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20FOR\x20UPDATE\x20SKIP\x20LOCKED\x0a\x20\x20\x20\x20\x20\x20\x20\x20),\x0a\x20\x20\x20\x20\x20\x20\x20\x20update_reservation\x20AS\x20(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20UPDATE\x20'+_0x352a22+'\x20t\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20SET\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20reserved_at\x20=\x20NOW(),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20reserved_by\x20=\x20$4\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20FROM\x20selected_messages\x20s\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20t.stream_name\x20=\x20$1\x20AND\x20t.id\x20=\x20s.id\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20RETURNING\x20t.id,\x20t.message\x0a\x20\x20\x20\x20\x20\x20\x20\x20)\x0a\x20\x20\x20\x20\x20\x20\x20\x20SELECT\x20*\x20FROM\x20update_reservation',[_0x2938b8,_0x31f8a1,_0x283660,_0x200c07]),_0x6cf92e=_0x3ab735['rows']['map'](_0x27bef3=>({'id':_0x27bef3['id']['toString'](),'data':(0x0,utils_1['parseStreamMessage'])(_0x27bef3['message'])}));return _0x6cf92e;}catch(_0x435e4a){this['logger']['error']('Error\x20consuming\x20messages\x20from\x20'+_0x2938b8,{'error':_0x435e4a});throw _0x435e4a;}}async['ackAndDelete'](_0x10aee4,_0x175dd2,_0x47c2f3){return await this['deleteMessages'](_0x10aee4,_0x175dd2,_0x47c2f3);}async['acknowledgeMessages'](_0x2153a4,_0x5bfa90,_0x334423,_0x13dcf1){return _0x334423['length'];}async['deleteMessages'](_0x1f5d74,_0x339967,_0x150066,_0x109164){const _0x44d1c2=this['streamClient'],_0x31f11d=this['getTableName']();try{const _0x162b9f=_0x150066['map'](_0xb54dad=>parseInt(_0xb54dad));return await _0x44d1c2['query']('DELETE\x20FROM\x20'+_0x31f11d+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20stream_name\x20=\x20$1\x20AND\x20id\x20=\x20ANY($2::bigint[])\x20AND\x20group_name\x20=\x20$3',[_0x1f5d74,_0x162b9f,_0x339967]),_0x150066['length'];}catch(_0x3467c3){this['logger']['error']('Error\x20deleting\x20messages\x20from\x20'+_0x1f5d74,{'error':_0x3467c3});throw _0x3467c3;}}async['retryMessages'](_0x1c308d,_0x251612,_0x545ef9){return[];}async['getStreamStats'](_0x210e16){const _0x70913f=this['streamClient'],_0x4037a9=this['getTableName']();try{const _0x33f530=await _0x70913f['query']('SELECT\x20COUNT(*)\x20AS\x20count\x20FROM\x20'+_0x4037a9+'\x20WHERE\x20stream_name\x20=\x20$1',[_0x210e16]);return{'messageCount':parseInt(_0x33f530['rows'][0x0]['count'],0xa)};}catch(_0x5d1857){this['logger']['error']('Error\x20getting\x20stats\x20for\x20'+_0x210e16,{'error':_0x5d1857});throw _0x5d1857;}}async['getStreamDepth'](_0x510c29){const _0x352590=await this['getStreamStats'](_0x510c29);return _0x352590['messageCount'];}async['getStreamDepths'](_0x265cdc){const _0x5aacad=this['streamClient'],_0x1e363e=this['getTableName']();try{const _0x33d7da=_0x265cdc['map'](_0x3e66c4=>_0x3e66c4['stream']),_0x5bf326=await _0x5aacad['query']('SELECT\x20stream_name,\x20COUNT(*)\x20AS\x20count\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20FROM\x20'+_0x1e363e+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20stream_name\x20=\x20ANY($1::text[])\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20GROUP\x20BY\x20stream_name',[_0x33d7da]),_0x2dc531=_0x5bf326['rows']['map'](_0x3eec74=>({'stream':_0x3eec74['stream_name'],'depth':parseInt(_0x3eec74['count'],0xa)}));return _0x2dc531;}catch(_0x1f8453){this['logger']['error']('Error\x20getting\x20multiple\x20stream\x20depths',{'error':_0x1f8453});throw _0x1f8453;}}async['trimStream'](_0x3f591f,_0x4bfeb6){const _0x24d410=this['streamClient'],_0xa05b0f=this['getTableName']();try{let _0x53116b=0x0;if(_0x4bfeb6['maxLen']!==undefined){const _0xbc9882=await _0x24d410['query']('DELETE\x20FROM\x20'+_0xa05b0f+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20stream_name\x20=\x20$1\x20AND\x20id\x20IN\x20(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20SELECT\x20id\x20FROM\x20'+_0xa05b0f+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20stream_name\x20=\x20$1\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ORDER\x20BY\x20id\x20ASC\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20OFFSET\x20$2\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20)',[_0x3f591f,_0x4bfeb6['maxLen']]);_0x53116b+=_0xbc9882['rowCount'];}if(_0x4bfeb6['maxAge']!==undefined){const _0x48d21a=await _0x24d410['query']('DELETE\x20FROM\x20'+_0xa05b0f+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20stream_name\x20=\x20$1\x20AND\x20created_at\x20<\x20NOW()\x20-\x20INTERVAL\x20\x27'+_0x4bfeb6['maxAge']+'\x20milliseconds\x27',[_0x3f591f]);_0x53116b+=_0x48d21a['rowCount'];}return _0x53116b;}catch(_0x198f04){this['logger']['error']('Error\x20trimming\x20stream\x20'+_0x3f591f,{'error':_0x198f04});throw _0x198f04;}}['getProviderSpecificFeatures'](){return{'supportsBatching':!![],'supportsDeadLetterQueue':![],'supportsOrdering':!![],'supportsTrimming':!![],'supportsRetry':![],'maxMessageSize':0x400*0x400,'maxBatchSize':0x100};}}exports['PostgresStreamService']=PostgresStreamService;
|
|
1
|
+
'use strict';(function(_0x1b598c,_0x1bbd78){const _0x46ee6c=_0x3c45,_0x1bb781=_0x1b598c();while(!![]){try{const _0x5180e0=-parseInt(_0x46ee6c(0xa0))/0x1+parseInt(_0x46ee6c(0x9e))/0x2+parseInt(_0x46ee6c(0x9d))/0x3+-parseInt(_0x46ee6c(0x9a))/0x4*(-parseInt(_0x46ee6c(0x9b))/0x5)+parseInt(_0x46ee6c(0x9c))/0x6*(parseInt(_0x46ee6c(0x9f))/0x7)+parseInt(_0x46ee6c(0xa2))/0x8*(-parseInt(_0x46ee6c(0xa1))/0x9)+-parseInt(_0x46ee6c(0xa3))/0xa;if(_0x5180e0===_0x1bbd78)break;else _0x1bb781['push'](_0x1bb781['shift']());}catch(_0x3f5206){_0x1bb781['push'](_0x1bb781['shift']());}}}(_0x44e6,0x98f5e));Object['defineProperty'](exports,'__esModule',{'value':!![]}),exports['PostgresStreamService']=void 0x0;const key_1=require('../../../../modules/key'),utils_1=require('../../../../modules/utils'),index_1=require('../../index');function _0x44e6(){const _0x285550=['2870298mnymge','8ghAOkj','5652130gEVUgE','211180HSMxxg','85cWrRjH','108gBYJyq','1886517priKon','1559884vyQKTv','61187qAzGum','952973gcDGDR'];_0x44e6=function(){return _0x285550;};return _0x44e6();}class PostgresStreamService extends index_1['StreamService']{constructor(_0x1231dc,_0x21390e,_0x27d0bc={}){super(_0x1231dc,_0x21390e,_0x27d0bc);}async['init'](_0x5b3e70,_0x30dad3,_0xda1319){this['namespace']=_0x5b3e70,this['appId']=_0x30dad3,this['logger']=_0xda1319,await this['deploy']();}async['deploy'](){const _0x49b9fc=this['streamClient'];try{const _0x32a0e1=this['getAdvisoryLockId'](),_0xf5e37f=await _0x49b9fc['query']('SELECT\x20pg_try_advisory_lock($1)\x20AS\x20locked',[_0x32a0e1]);if(_0xf5e37f['rows'][0x0]['locked']){await _0x49b9fc['query']('BEGIN');const _0x28ff37=await this['checkIfTablesExist'](_0x49b9fc);!_0x28ff37&&await this['createTables'](_0x49b9fc),await _0x49b9fc['query']('COMMIT'),await _0x49b9fc['query']('SELECT\x20pg_advisory_unlock($1)',[_0x32a0e1]);}else{let _0x21112c=0x0;const _0x5e064a=0x14;while(_0x21112c<_0x5e064a){await this['delay'](0x64);const _0x55528e=await _0x49b9fc['query']('SELECT\x20NOT\x20EXISTS\x20(SELECT\x201\x20FROM\x20pg_locks\x20WHERE\x20locktype\x20=\x20\x27advisory\x27\x20AND\x20objid\x20=\x20$1::bigint)\x20AS\x20unlocked',[_0x32a0e1]);if(_0x55528e['rows'][0x0]['unlocked']){const _0x1a8397=await this['checkIfTablesExist'](_0x49b9fc);if(_0x1a8397)break;}_0x21112c++;}if(_0x21112c===_0x5e064a)throw new Error('Timeout\x20waiting\x20for\x20table\x20creation');}}catch(_0x1334ad){this['logger']['error']('Error\x20deploying\x20tables',{'error':_0x1334ad});throw _0x1334ad;}}['getAdvisoryLockId'](){return this['hashStringToInt'](this['appId']);}['hashStringToInt'](_0x32e8d0){let _0x4c6deb=0x0;for(let _0xc83c1d=0x0;_0xc83c1d<_0x32e8d0['length'];_0xc83c1d++){_0x4c6deb=(_0x4c6deb<<0x5)-_0x4c6deb+_0x32e8d0['charCodeAt'](_0xc83c1d),_0x4c6deb|=0x0;}return Math['abs'](_0x4c6deb);}async['checkIfTablesExist'](_0x1dcd3c){const _0x4845ac=await _0x1dcd3c['query']('SELECT\x20to_regclass(\x27'+this['getTableName']()+'\x27)\x20AS\x20table');return _0x4845ac['rows'][0x0]['table']!==null;}['safeName'](_0x3db7fe){return _0x3db7fe['replace'](/[^a-zA-Z0-9_]/g,'_');}['getTableName'](){return this['safeName'](this['appId'])+'.streams';}async['createTables'](_0x3ef908){const _0x510180=this['safeName'](this['appId']),_0x4cc78a=this['getTableName']();await _0x3ef908['query']('BEGIN'),await _0x3ef908['query']('CREATE\x20SCHEMA\x20IF\x20NOT\x20EXISTS\x20'+_0x510180+';'),await _0x3ef908['query']('CREATE\x20TABLE\x20'+_0x510180+'.streams\x20(\x0a\x20\x20\x20\x20\x20\x20\x20\x20id\x20BIGSERIAL,\x0a\x20\x20\x20\x20\x20\x20\x20\x20stream_name\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20\x20\x20\x20\x20group_name\x20TEXT\x20NOT\x20NULL\x20DEFAULT\x20\x27ENGINE\x27,\x0a\x20\x20\x20\x20\x20\x20\x20\x20message\x20TEXT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20\x20\x20\x20\x20created_at\x20TIMESTAMPTZ\x20DEFAULT\x20NOW(),\x0a\x20\x20\x20\x20\x20\x20\x20\x20reserved_at\x20TIMESTAMPTZ,\x0a\x20\x20\x20\x20\x20\x20\x20\x20reserved_by\x20TEXT,\x0a\x20\x20\x20\x20\x20\x20\x20\x20PRIMARY\x20KEY\x20(stream_name,\x20id)\x0a\x20\x20\x20\x20\x20\x20)\x20PARTITION\x20BY\x20HASH\x20(stream_name)');for(let _0x5bc74f=0x0;_0x5bc74f<0x8;_0x5bc74f++){const _0xb91319=_0x510180+'.streams_part_'+_0x5bc74f;await _0x3ef908['query']('CREATE\x20TABLE\x20'+_0xb91319+'\x20PARTITION\x20OF\x20'+_0x4cc78a+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20FOR\x20VALUES\x20WITH\x20(modulus\x208,\x20remainder\x20'+_0x5bc74f+')');}await _0x3ef908['query']('CREATE\x20INDEX\x20idx_streams_group_stream_reserved_at_id\x20\x0a\x20\x20\x20\x20\x20\x20\x20ON\x20'+_0x4cc78a+'\x20(group_name,\x20stream_name,\x20reserved_at,\x20id)'),await _0x3ef908['query']('COMMIT');}['delay'](_0x5be39e){return new Promise(_0x1fe13e=>setTimeout(_0x1fe13e,_0x5be39e));}['mintKey'](_0x438b54,_0x165174){if(!this['namespace'])throw new Error('namespace\x20not\x20set');return key_1['KeyService']['mintKey'](this['namespace'],_0x438b54,{..._0x165174,'appId':this['appId']});}['transact'](){return{};}async['createStream'](_0x12a517){return!![];}async['deleteStream'](_0x29a1ae){const _0x2f40d7=this['streamClient'],_0x3c0de8=this['getTableName']();try{return _0x29a1ae==='*'?await _0x2f40d7['query']('DELETE\x20FROM\x20'+_0x3c0de8):await _0x2f40d7['query']('DELETE\x20FROM\x20'+_0x3c0de8+'\x20WHERE\x20stream_name\x20=\x20$1',[_0x29a1ae]),!![];}catch(_0xc31724){this['logger']['error']('Error\x20deleting\x20stream\x20'+_0x29a1ae,{'error':_0xc31724});throw _0xc31724;}}async['createConsumerGroup'](_0xe06009,_0x58c6bf){return!![];}async['deleteConsumerGroup'](_0x30b45f,_0x17ae86){const _0x302616=this['streamClient'],_0x5af576=this['getTableName']();try{return await _0x302616['query']('DELETE\x20FROM\x20'+_0x5af576+'\x20WHERE\x20stream_name\x20=\x20$1\x20AND\x20group_name\x20=\x20$2',[_0x30b45f,_0x17ae86]),!![];}catch(_0x58726b){this['logger']['error']('Error\x20deleting\x20consumer\x20group\x20'+_0x17ae86+'\x20for\x20stream\x20'+_0x30b45f,{'error':_0x58726b});throw _0x58726b;}}async['publishMessages'](_0x5a088e,_0x4b8c62,_0xb005bc){const {sql:_0x84b5f0,params:_0x5922cc}=this['_publishMessages'](_0x5a088e,_0x4b8c62);if(_0xb005bc?.['transaction']&&typeof _0xb005bc['transaction']['addCommand']==='function')return _0xb005bc['transaction']['addCommand'](_0x84b5f0,_0x5922cc,'array',_0x3da7e1=>_0x3da7e1['map'](_0x5047b2=>_0x5047b2['id']['toString']())),_0xb005bc['transaction'];else try{const _0x5efb13=[],_0x2dc710=await this['streamClient']['query'](_0x84b5f0,_0x5922cc);for(const _0x22e54d of _0x2dc710['rows']){_0x5efb13['push'](_0x22e54d['id']['toString']());}return _0x5efb13;}catch(_0x1369a7){this['logger']['error']('Error\x20publishing\x20messages\x20to\x20'+_0x5a088e,{'error':_0x1369a7});throw _0x1369a7;}}['_publishMessages'](_0x486070,_0x4db11b){const _0x4c13e1=this['getTableName'](),_0x4e1a90=_0x486070['endsWith'](':')?'ENGINE':'WORKER',_0x2b3bbe=_0x4db11b['map']((_0x540ea5,_0x14677c)=>'($1,\x20$2,\x20$'+(_0x14677c+0x3)+')')['join'](',\x20');return{'sql':'INSERT\x20INTO\x20'+_0x4c13e1+'\x20(stream_name,\x20group_name,\x20message)\x20VALUES\x20'+_0x2b3bbe+'\x20RETURNING\x20id','params':[_0x486070,_0x4e1a90,..._0x4db11b]};}async['consumeMessages'](_0x2c1c11,_0x307b1c,_0x41b361,_0x12298e){const _0x4a52ff=this['streamClient'],_0x551fc5=this['getTableName']();try{const _0x48575c=_0x12298e?.['batchSize']||0x1,_0x4e054c=_0x12298e?.['reservationTimeout']||0x1e,_0x486a4a=await _0x4a52ff['query']('WITH\x20selected_messages\x20AS\x20(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20SELECT\x20id,\x20message\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20FROM\x20'+_0x551fc5+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20stream_name\x20=\x20$1\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20AND\x20group_name\x20=\x20$2\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20AND\x20COALESCE(reserved_at,\x20\x271970-01-01\x27)\x20<\x20NOW()\x20-\x20INTERVAL\x20\x27'+_0x4e054c+'\x20seconds\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ORDER\x20BY\x20id\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20LIMIT\x20$3\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20FOR\x20UPDATE\x20SKIP\x20LOCKED\x0a\x20\x20\x20\x20\x20\x20\x20\x20),\x0a\x20\x20\x20\x20\x20\x20\x20\x20update_reservation\x20AS\x20(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20UPDATE\x20'+_0x551fc5+'\x20t\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20SET\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20reserved_at\x20=\x20NOW(),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20reserved_by\x20=\x20$4\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20FROM\x20selected_messages\x20s\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20t.stream_name\x20=\x20$1\x20AND\x20t.id\x20=\x20s.id\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20RETURNING\x20t.id,\x20t.message\x0a\x20\x20\x20\x20\x20\x20\x20\x20)\x0a\x20\x20\x20\x20\x20\x20\x20\x20SELECT\x20*\x20FROM\x20update_reservation',[_0x2c1c11,_0x307b1c,_0x48575c,_0x41b361]),_0x54e8ac=_0x486a4a['rows']['map'](_0x439b4e=>({'id':_0x439b4e['id']['toString'](),'data':(0x0,utils_1['parseStreamMessage'])(_0x439b4e['message'])}));return _0x54e8ac;}catch(_0x200da0){this['logger']['error']('Error\x20consuming\x20messages\x20from\x20'+_0x2c1c11,{'error':_0x200da0});throw _0x200da0;}}async['ackAndDelete'](_0x5e814f,_0x46bf4e,_0x501d6d){return await this['deleteMessages'](_0x5e814f,_0x46bf4e,_0x501d6d);}async['acknowledgeMessages'](_0x1c77ab,_0x21a901,_0x497eb8,_0x4f0122){return _0x497eb8['length'];}async['deleteMessages'](_0x1e6498,_0x5a1edd,_0x2b2c9f,_0x2ef3c1){const _0x33e6a2=this['streamClient'],_0x206377=this['getTableName']();try{const _0x4bb75a=_0x2b2c9f['map'](_0x1d808a=>parseInt(_0x1d808a));return await _0x33e6a2['query']('DELETE\x20FROM\x20'+_0x206377+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20stream_name\x20=\x20$1\x20AND\x20id\x20=\x20ANY($2::bigint[])\x20AND\x20group_name\x20=\x20$3',[_0x1e6498,_0x4bb75a,_0x5a1edd]),_0x2b2c9f['length'];}catch(_0x23a03e){this['logger']['error']('Error\x20deleting\x20messages\x20from\x20'+_0x1e6498,{'error':_0x23a03e});throw _0x23a03e;}}async['retryMessages'](_0x247b2e,_0x4fb20c,_0x50acd3){return[];}async['getStreamStats'](_0xf2c25){const _0x5ae8a8=this['streamClient'],_0x5c6109=this['getTableName']();try{const _0x4927cc=await _0x5ae8a8['query']('SELECT\x20COUNT(*)\x20AS\x20count\x20FROM\x20'+_0x5c6109+'\x20WHERE\x20stream_name\x20=\x20$1',[_0xf2c25]);return{'messageCount':parseInt(_0x4927cc['rows'][0x0]['count'],0xa)};}catch(_0x3098cf){this['logger']['error']('Error\x20getting\x20stats\x20for\x20'+_0xf2c25,{'error':_0x3098cf});throw _0x3098cf;}}async['getStreamDepth'](_0x709ed6){const _0x11f12a=await this['getStreamStats'](_0x709ed6);return _0x11f12a['messageCount'];}async['getStreamDepths'](_0x2fde74){const _0x3acbd8=this['streamClient'],_0xeb9159=this['getTableName']();try{const _0x162e61=_0x2fde74['map'](_0x1b4ea7=>_0x1b4ea7['stream']),_0x3457d8=await _0x3acbd8['query']('SELECT\x20stream_name,\x20COUNT(*)\x20AS\x20count\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20FROM\x20'+_0xeb9159+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20stream_name\x20=\x20ANY($1::text[])\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20GROUP\x20BY\x20stream_name',[_0x162e61]),_0x3bf415=_0x3457d8['rows']['map'](_0x484937=>({'stream':_0x484937['stream_name'],'depth':parseInt(_0x484937['count'],0xa)}));return _0x3bf415;}catch(_0x5b555c){this['logger']['error']('Error\x20getting\x20multiple\x20stream\x20depths',{'error':_0x5b555c});throw _0x5b555c;}}async['trimStream'](_0x2017da,_0x480fb2){const _0x2bf6ea=this['streamClient'],_0x773674=this['getTableName']();try{let _0x1ae301=0x0;if(_0x480fb2['maxLen']!==undefined){const _0x1501dc=await _0x2bf6ea['query']('DELETE\x20FROM\x20'+_0x773674+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20stream_name\x20=\x20$1\x20AND\x20id\x20IN\x20(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20SELECT\x20id\x20FROM\x20'+_0x773674+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20stream_name\x20=\x20$1\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ORDER\x20BY\x20id\x20ASC\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20OFFSET\x20$2\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20)',[_0x2017da,_0x480fb2['maxLen']]);_0x1ae301+=_0x1501dc['rowCount'];}if(_0x480fb2['maxAge']!==undefined){const _0x55a2b0=await _0x2bf6ea['query']('DELETE\x20FROM\x20'+_0x773674+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20stream_name\x20=\x20$1\x20AND\x20created_at\x20<\x20NOW()\x20-\x20INTERVAL\x20\x27'+_0x480fb2['maxAge']+'\x20milliseconds\x27',[_0x2017da]);_0x1ae301+=_0x55a2b0['rowCount'];}return _0x1ae301;}catch(_0x3284a8){this['logger']['error']('Error\x20trimming\x20stream\x20'+_0x2017da,{'error':_0x3284a8});throw _0x3284a8;}}['getProviderSpecificFeatures'](){return{'supportsBatching':!![],'supportsDeadLetterQueue':![],'supportsOrdering':!![],'supportsTrimming':!![],'supportsRetry':![],'maxMessageSize':0x400*0x400,'maxBatchSize':0x100};}}function _0x3c45(_0x3f1e64,_0x4956be){const _0x44e66e=_0x44e6();return _0x3c45=function(_0x3c457e,_0x17bbe8){_0x3c457e=_0x3c457e-0x9a;let _0x53902d=_0x44e66e[_0x3c457e];return _0x53902d;},_0x3c45(_0x3f1e64,_0x4956be);}exports['PostgresStreamService']=PostgresStreamService;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
'use strict';(function(
|
|
1
|
+
'use strict';function _0x5986(_0xa06f3f,_0x218254){const _0x342e3d=_0x342e();return _0x5986=function(_0x598663,_0xb46a24){_0x598663=_0x598663-0x127;let _0x214097=_0x342e3d[_0x598663];return _0x214097;},_0x5986(_0xa06f3f,_0x218254);}(function(_0x684e17,_0x492675){const _0x357022=_0x5986,_0x5c8edd=_0x684e17();while(!![]){try{const _0x161909=-parseInt(_0x357022(0x129))/0x1+-parseInt(_0x357022(0x12a))/0x2+-parseInt(_0x357022(0x12d))/0x3+parseInt(_0x357022(0x128))/0x4*(parseInt(_0x357022(0x127))/0x5)+-parseInt(_0x357022(0x12c))/0x6+parseInt(_0x357022(0x12b))/0x7*(-parseInt(_0x357022(0x12e))/0x8)+parseInt(_0x357022(0x12f))/0x9;if(_0x161909===_0x492675)break;else _0x5c8edd['push'](_0x5c8edd['shift']());}catch(_0x5cf60b){_0x5c8edd['push'](_0x5c8edd['shift']());}}}(_0x342e,0x79518));Object['defineProperty'](exports,'__esModule',{'value':!![]}),exports['IORedisStreamService']=void 0x0;const index_1=require('../../index'),utils_1=require('../../../../modules/utils'),key_1=require('../../../../modules/key'),enums_1=require('../../../../modules/enums');class IORedisStreamService extends index_1['StreamService']{constructor(_0x232de0,_0x4fec8d,_0x2e83a1={}){super(_0x232de0,_0x4fec8d,_0x2e83a1);}async['init'](_0x4ef81f,_0x13867b,_0x1f0208){this['namespace']=_0x4ef81f,this['logger']=_0x1f0208,this['appId']=_0x13867b;}['mintKey'](_0xce8413,_0x5a6ed6){if(!this['namespace'])throw new Error('namespace\x20not\x20set');return key_1['KeyService']['mintKey'](this['namespace'],_0xce8413,{..._0x5a6ed6,'appId':this['appId']});}['transact'](){return this['streamClient']['multi']();}async['createStream'](_0x220ea6){try{const _0x2879aa=await this['streamClient']['xadd'](_0x220ea6,'*','field','value');return await this['streamClient']['xdel'](_0x220ea6,_0x2879aa),!![];}catch(_0x5e3987){this['logger']['error']('Error\x20creating\x20stream\x20'+_0x220ea6,{'error':_0x5e3987});throw _0x5e3987;}}async['deleteStream'](_0x29ed7f){try{const _0x4532bd=await this['streamClient']['del'](_0x29ed7f);return _0x4532bd>0x0;}catch(_0x15b525){this['logger']['error']('Error\x20deleting\x20stream\x20'+_0x29ed7f,{'error':_0x15b525});throw _0x15b525;}}async['createConsumerGroup'](_0x4325c5,_0x13908f){try{return await this['storeClient']['xgroup']('CREATE',_0x4325c5,_0x13908f,'$','MKSTREAM')==='OK';}catch(_0x52a154){this['logger']['debug']('stream-mkstream-caught',{'key':_0x4325c5,'group':_0x13908f});throw _0x52a154;}}async['deleteConsumerGroup'](_0x11966d,_0x39c892){try{const _0xfd043c=await this['streamClient']['xgroup']('DESTROY',_0x11966d,_0x39c892);return _0xfd043c===0x1;}catch(_0x72ca38){this['logger']['error']('Error\x20deleting\x20consumer\x20group\x20'+_0x39c892+'\x20for\x20stream\x20'+_0x11966d,{'error':_0x72ca38});throw _0x72ca38;}}async['publishMessages'](_0x15b4c0,_0x294f84,_0xdef724){try{const _0xd98eb7=_0xdef724?.['transaction']||_0x294f84['length']>0x1&&this['storeClient']['multi']();let _0x1f2e9c;for(const _0x1ee4bd of _0x294f84){_0x1f2e9c=await(_0xd98eb7||this['storeClient'])['xadd'](_0x15b4c0,'*','message',_0x1ee4bd);}return _0xd98eb7&&!_0xdef724?.['transaction']?(await _0xd98eb7['exec']())['map'](_0x247034=>_0x247034[0x1]):[_0x1f2e9c];}catch(_0x264d5f){this['logger']['error']('ioredis-xadd-error\x20key:\x20'+_0x15b4c0,{..._0x264d5f});throw _0x264d5f;}}async['consumeMessages'](_0x772e91,_0x2009ae,_0x2516f5,_0x1136c1){try{const _0x342869=await this['streamClient']['xreadgroup']('GROUP',_0x2009ae,_0x2516f5,'BLOCK',_0x1136c1?.['blockTimeout']??enums_1['HMSH_BLOCK_TIME_MS'],'STREAMS',_0x772e91,'>'),_0x5709ef=[];if((0x0,utils_1['isStreamMessage'])(_0x342869)){const [[,_0x591973]]=_0x342869;for(const [_0x3fc54c,_0x42ee88]of _0x591973){_0x5709ef['push']({'id':_0x3fc54c,'data':(0x0,utils_1['parseStreamMessage'])(_0x42ee88[0x1])});}}else return[];return _0x5709ef;}catch(_0x3c063c){this['logger']['error']('Error\x20consuming\x20messages\x20from\x20'+_0x772e91,{'error':_0x3c063c});throw _0x3c063c;}}async['ackAndDelete'](_0x121787,_0x5ec7a2,_0x282484){const _0x4de006=this['storeClient']['multi']();return this['acknowledgeMessages'](_0x121787,_0x5ec7a2,_0x282484,{'multi':_0x4de006}),this['deleteMessages'](_0x121787,_0x5ec7a2,_0x282484,{'multi':_0x4de006}),await _0x4de006['exec'](),_0x282484['length'];}async['acknowledgeMessages'](_0x241054,_0x2a3a46,_0x121c9,_0x39eecc){try{return _0x39eecc?.['multi']?(_0x39eecc['multi']['xack'](_0x241054,_0x2a3a46,..._0x121c9),_0x39eecc['multi']):await this['streamClient']['xack'](_0x241054,_0x2a3a46,..._0x121c9);}catch(_0x1eb638){this['logger']['error']('Error\x20in\x20acknowledging\x20messages:\x20['+_0x121c9+']\x20in\x20group:\x20'+_0x2a3a46+'\x20for\x20key:\x20'+_0x241054,{..._0x1eb638});throw _0x1eb638;}}async['deleteMessages'](_0x337ad2,_0x1c952d,_0x5495c5,_0x4daf18){try{return _0x4daf18?.['multi']?(_0x4daf18['multi']['xdel'](_0x337ad2,..._0x5495c5),_0x4daf18['multi']):await this['streamClient']['xdel'](_0x337ad2,..._0x5495c5);}catch(_0x210b93){this['logger']['error']('Error\x20in\x20deleting\x20messages:\x20'+_0x5495c5+'\x20for\x20key:\x20'+_0x337ad2,{..._0x210b93});throw _0x210b93;}}async['getPendingMessages'](_0x1222f8,_0x251f1b,_0x143ef5,_0x1c1890){const _0x2f3efd='-',_0x2c94a3='+';try{const _0x195751=[_0x1222f8,_0x251f1b];if(_0x2f3efd)_0x195751['push'](_0x2f3efd);if(_0x2c94a3)_0x195751['push'](_0x2c94a3);if(_0x143ef5!==undefined)_0x195751['push'](_0x143ef5['toString']());if(_0x1c1890)_0x195751['push'](_0x1c1890);try{return await this['streamClient']['call']('XPENDING',..._0x195751);}catch(_0x1e7484){this['logger']['error']('err,\x20args',{..._0x1e7484},_0x195751);}}catch(_0x1e81b9){this['logger']['error']('Error\x20in\x20retrieving\x20pending\x20messages\x20for\x20[stream\x20'+_0x1222f8+'],\x20[group\x20'+_0x251f1b+']',{..._0x1e81b9});throw _0x1e81b9;}}async['retryMessages'](_0x10b90a,_0x54ae55,_0x338b0d){let _0x30ffa5=[];const _0x2dbb6c=await this['getPendingMessages'](_0x10b90a,_0x54ae55,_0x338b0d?.['limit']);for(const _0x4c8410 of _0x2dbb6c){if(Array['isArray'](_0x4c8410)){const [_0x225877,,_0xfadbb3,_0x475c33]=_0x4c8410;if(_0xfadbb3>_0x338b0d?.['minIdleTime']){const _0x1daf7e=await this['claimMessage'](_0x10b90a,_0x54ae55,_0x338b0d?.['consumerName'],_0x338b0d?.['minIdleTime'],_0x225877);_0x30ffa5=_0x30ffa5['concat'](_0x1daf7e);}}}return _0x30ffa5;}async['claimMessage'](_0x10b05b,_0x2142ee,_0x41900a,_0x2b1eb4,_0x4b10b9,..._0x3f8552){try{const _0x393cf3=await this['streamClient']['xclaim'](_0x10b05b,_0x2142ee,_0x41900a,_0x2b1eb4,_0x4b10b9,..._0x3f8552);return{'id':_0x393cf3[0x0][0x0],'data':(0x0,utils_1['parseStreamMessage'])(_0x393cf3[0x0][0x1][0x1])};}catch(_0x226a3c){this['logger']['error']('Error\x20in\x20claiming\x20message\x20with\x20id:\x20'+_0x4b10b9+'\x20in\x20group:\x20'+_0x2142ee+'\x20for\x20key:\x20'+_0x10b05b,{..._0x226a3c});throw _0x226a3c;}}async['getStreamStats'](_0x13f116){return{'messageCount':await this['getStreamDepth'](_0x13f116)};}async['getStreamDepth'](_0x36b84f,_0x5c31fd){try{if(_0x5c31fd?.['multi'])return _0x5c31fd['multi']['xlen'](_0x36b84f),0x0;const _0x77686f=await this['streamClient']['xlen'](_0x36b84f);return _0x77686f;}catch(_0x275f8c){this['logger']['error']('Error\x20getting\x20depth\x20for\x20'+_0x36b84f,{'error':_0x275f8c});throw _0x275f8c;}}async['getStreamDepths'](_0x15d1f0){const _0x15f47a=this['storeClient']['multi'](),_0x340809=new Map();_0x15d1f0['forEach'](_0x120776=>{!_0x340809['has'](_0x120776['stream'])&&(_0x340809['set'](_0x120776['stream'],-0x1),this['getStreamDepth'](_0x120776['stream'],{'multi':_0x15f47a}));});const _0x5e9c3e=await _0x15f47a['exec']();Array['from'](_0x340809['keys']())['forEach']((_0x17045b,_0x40a4db)=>{_0x340809['set'](_0x17045b,_0x5e9c3e[_0x40a4db][0x1]);});const _0x660fc4=_0x15d1f0['map'](_0x22f8a0=>{return{'stream':_0x22f8a0['stream'],'depth':_0x340809['get'](_0x22f8a0['stream'])||0x0};});return _0x660fc4;}async['trimStream'](_0x1dc572,_0x5f0c67){return 0x0;}['getProviderSpecificFeatures'](){return{'supportsBatching':!![],'supportsDeadLetterQueue':![],'supportsOrdering':!![],'supportsTrimming':!![],'supportsRetry':!![],'maxMessageSize':0x200*0x400*0x400,'maxBatchSize':0x3e8};}}function _0x342e(){const _0x55e184=['15588855nNLfcU','2729990qknXLK','4BnBkLA','351657OMprLD','356638TqYoOq','7eXvWsg','2780166GjFQfm','447699ZcQXzB','5108824dYGrvO'];_0x342e=function(){return _0x55e184;};return _0x342e();}exports['IORedisStreamService']=IORedisStreamService;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
'use strict';(function(
|
|
1
|
+
'use strict';(function(_0x23a873,_0x36c333){const _0x2d1b66=_0x2bd6,_0x495793=_0x23a873();while(!![]){try{const _0x41e44a=parseInt(_0x2d1b66(0x1e9))/0x1+-parseInt(_0x2d1b66(0x1e7))/0x2+-parseInt(_0x2d1b66(0x1e2))/0x3+-parseInt(_0x2d1b66(0x1ec))/0x4*(parseInt(_0x2d1b66(0x1e8))/0x5)+-parseInt(_0x2d1b66(0x1e5))/0x6*(-parseInt(_0x2d1b66(0x1e6))/0x7)+-parseInt(_0x2d1b66(0x1e4))/0x8*(parseInt(_0x2d1b66(0x1e3))/0x9)+-parseInt(_0x2d1b66(0x1eb))/0xa*(-parseInt(_0x2d1b66(0x1ea))/0xb);if(_0x41e44a===_0x36c333)break;else _0x495793['push'](_0x495793['shift']());}catch(_0x5c7416){_0x495793['push'](_0x495793['shift']());}}}(_0x5738,0x473de));Object['defineProperty'](exports,'__esModule',{'value':!![]}),exports['RedisStreamService']=void 0x0;function _0x2bd6(_0x1728b6,_0x1be935){const _0x573813=_0x5738();return _0x2bd6=function(_0x2bd6c0,_0x1d8356){_0x2bd6c0=_0x2bd6c0-0x1e2;let _0x5efa53=_0x573813[_0x2bd6c0];return _0x5efa53;},_0x2bd6(_0x1728b6,_0x1be935);}function _0x5738(){const _0x2cb1f2=['522315IvWwqf','33ZYWBjA','1617830ckJxVp','8KRuuCq','689238TzQOmZ','9567cwXOxo','4328uSqGSl','2111910aWbtbK','7kEJbhO','332396TLSzHE','242040DOeKvX'];_0x5738=function(){return _0x2cb1f2;};return _0x5738();}const index_1=require('../../index'),utils_1=require('../../../../modules/utils'),key_1=require('../../../../modules/key'),enums_1=require('../../../../modules/enums');class RedisStreamService extends index_1['StreamService']{constructor(_0x228aab,_0xada3eb,_0x182568={}){super(_0x228aab,_0xada3eb,_0x182568);}async['init'](_0x186f86,_0x32e084,_0x3bcd79){this['namespace']=_0x186f86,this['logger']=_0x3bcd79,this['appId']=_0x32e084;}['mintKey'](_0x45fcae,_0x56cd88){if(!this['namespace'])throw new Error('namespace\x20not\x20set');return key_1['KeyService']['mintKey'](this['namespace'],_0x45fcae,{..._0x56cd88,'appId':this['appId']});}['transact'](){return this['streamClient']['multi']();}async['createStream'](_0x472578){try{const _0x2db37d=await this['streamClient']['XADD'](_0x472578,'*',{'field':'value'});return await this['streamClient']['XDEL'](_0x472578,_0x2db37d),!![];}catch(_0x3d08d0){this['logger']['error']('Error\x20creating\x20stream\x20'+_0x472578,{'error':_0x3d08d0});throw _0x3d08d0;}}async['deleteStream'](_0x303ce2){try{const _0x1b9e39=await this['streamClient']['DEL'](_0x303ce2);return _0x1b9e39>0x0;}catch(_0x3f85c5){this['logger']['error']('Error\x20deleting\x20stream\x20'+_0x303ce2,{'error':_0x3f85c5});throw _0x3f85c5;}}async['createConsumerGroup'](_0x4caf37,_0x964284){try{const _0x16543d=await this['storeClient']['sendCommand'](['XGROUP','CREATE',_0x4caf37,_0x964284,'$','MKSTREAM']);return _0x16543d==='OK';}catch(_0x112e2f){const _0x4ad8ec='with\x20MKSTREAM';this['logger']['debug']('x-group-error\x20'+_0x4ad8ec+'\x20for\x20key:\x20'+_0x4caf37+'\x20and\x20group:\x20'+_0x964284,{..._0x112e2f});throw _0x112e2f;}}async['deleteConsumerGroup'](_0x4bf920,_0x28eb0f){try{const _0x29ce31=await this['streamClient']['xGroupDestroy'](_0x4bf920,_0x28eb0f);return _0x29ce31;}catch(_0x34364d){this['logger']['error']('Error\x20deleting\x20consumer\x20group\x20'+_0x28eb0f+'\x20for\x20stream\x20'+_0x4bf920,{'error':_0x34364d});throw _0x34364d;}}async['publishMessages'](_0x435518,_0x5b4e6e,_0xdda63e){try{const _0x35e70c=_0xdda63e?.['transaction']||_0x5b4e6e['length']>0x1&&this['storeClient']['multi']();let _0x2b4be9;for(const _0x255e86 of _0x5b4e6e){_0x2b4be9=await(_0x35e70c||this['storeClient'])['XADD'](_0x435518,'*',{'message':_0x255e86});}return _0x35e70c&&!_0xdda63e?.['transaction']?(await _0x35e70c['exec']())['map'](_0x3bb40f=>_0x3bb40f[0x1]):[_0x2b4be9];}catch(_0x1d9b81){this['logger']['error']('ioredis-xadd-error\x20key:\x20'+_0x435518,{..._0x1d9b81});throw _0x1d9b81;}}async['consumeMessages'](_0x4a033c,_0x580fe3,_0x438c85,_0x2acfaa){const _0x5ae8e7='GROUP',_0x2be1a1='BLOCK',_0x52ccfc='STREAMS',_0x1d17c7='>';try{const _0x166bad=await this['streamClient']['sendCommand'](['XREADGROUP',_0x5ae8e7,_0x580fe3,_0x438c85,_0x2be1a1,_0x2acfaa?.['blockTimeout']?.['toString']()??enums_1['HMSH_BLOCK_TIME_MS']['toString'](),_0x52ccfc,_0x4a033c,_0x1d17c7]),_0x2f66c1=[];if((0x0,utils_1['isStreamMessage'])(_0x166bad)){const [[,_0x142dcb]]=_0x166bad;for(const [_0x10836b,_0x578f21]of _0x142dcb){_0x2f66c1['push']({'id':_0x10836b,'data':(0x0,utils_1['parseStreamMessage'])(_0x578f21[0x1])});}}else return[];return _0x2f66c1;}catch(_0x520f55){this['logger']['error']('Error\x20consuming\x20messages\x20from\x20'+_0x4a033c,{'error':_0x520f55});throw _0x520f55;}}async['ackAndDelete'](_0x113565,_0x99fd38,_0x985434){const _0x4a5318=this['storeClient']['multi']();return await this['acknowledgeMessages'](_0x113565,_0x99fd38,_0x985434,{'multi':_0x4a5318}),await this['deleteMessages'](_0x113565,_0x99fd38,_0x985434,{'multi':_0x4a5318}),await _0x4a5318['exec'](),_0x985434['length'];}async['acknowledgeMessages'](_0x4b944d,_0x28d409,_0x53855c,_0x4251bf){try{return _0x4251bf?.['multi']?(_0x4251bf['multi']['XACK'](_0x4b944d,_0x28d409,_0x53855c),_0x4251bf['multi']):await this['streamClient']['XACK'](_0x4b944d,_0x28d409,..._0x53855c);}catch(_0x57423c){this['logger']['error']('Error\x20in\x20acknowledging\x20messages\x20in\x20group:\x20'+_0x28d409+'\x20for\x20key:\x20'+_0x4b944d,{'error':_0x57423c});throw _0x57423c;}}async['deleteMessages'](_0x1cd77f,_0x44ef7f,_0x539bbf,_0x43976a){try{return _0x43976a?.['multi']?(_0x43976a['multi']['xDel'](_0x1cd77f,_0x539bbf),_0x43976a['multi']):await this['streamClient']['XDEL'](_0x1cd77f,..._0x539bbf);}catch(_0x1f139e){this['logger']['error']('Error\x20in\x20deleting\x20messages\x20with\x20ids:\x20'+_0x539bbf['join'](',')+'\x20for\x20key:\x20'+_0x1cd77f,{'error':_0x1f139e});throw _0x1f139e;}}async['getPendingMessages'](_0x181036,_0x39f388,_0x492cb7,_0x26bace){try{const _0x4aa811='-',_0x5bfe06='+',_0x394bec=[_0x181036,_0x39f388];if(_0x4aa811)_0x394bec['push'](_0x4aa811);if(_0x5bfe06)_0x394bec['push'](_0x5bfe06);if(_0x492cb7!==undefined)_0x394bec['push'](_0x492cb7['toString']());if(_0x26bace)_0x394bec['push'](_0x26bace);try{return await this['streamClient']['sendCommand'](['XPENDING',..._0x394bec]);}catch(_0x5f1ba7){this['logger']['error']('error,\x20args',{..._0x5f1ba7},_0x394bec);}}catch(_0x998136){this['logger']['error']('Error\x20retrieving\x20pending\x20messages\x20for\x20group:\x20'+_0x39f388+'\x20in\x20key:\x20'+_0x181036,{..._0x998136});throw _0x998136;}}async['retryMessages'](_0x15b13c,_0x120d7d,_0x14aabe){let _0x5d1065=[];const _0x1ab1e8=await this['getPendingMessages'](_0x15b13c,_0x120d7d,_0x14aabe?.['limit']);for(const _0x1e40d5 of _0x1ab1e8){if(Array['isArray'](_0x1e40d5)){const [_0x2201ed,,_0x12dfe8,_0xdce425]=_0x1e40d5;if(_0x12dfe8>_0x14aabe?.['minIdleTime']){const _0x3140e4=await this['claimMessage'](_0x15b13c,_0x120d7d,_0x14aabe?.['consumerName'],_0x14aabe?.['minIdleTime'],_0x2201ed);_0x5d1065=_0x5d1065['concat'](_0x3140e4);}}}return _0x5d1065;}async['claimMessage'](_0xf6427f,_0x55e44b,_0x5cfe44,_0x53d674,_0x43ecfb,..._0x4595c9){try{const _0x8bd475=await this['streamClient']['sendCommand'](['XCLAIM',_0xf6427f,_0x55e44b,_0x5cfe44,_0x53d674['toString'](),_0x43ecfb,..._0x4595c9]);return{'id':_0x8bd475[0x0][0x0],'data':(0x0,utils_1['parseStreamMessage'])(_0x8bd475[0x0][0x1][0x1])};}catch(_0x58676c){this['logger']['error']('Error\x20in\x20claiming\x20message\x20with\x20id:\x20'+_0x43ecfb+'\x20in\x20group:\x20'+_0x55e44b+'\x20for\x20key:\x20'+_0xf6427f,{..._0x58676c});throw _0x58676c;}}async['getStreamStats'](_0x6f822f){return{'messageCount':await this['getStreamDepth'](_0x6f822f)};}async['getStreamDepth'](_0x1d768a,_0x372ae4){try{if(_0x372ae4?.['multi'])return _0x372ae4['multi']['XLEN'](_0x1d768a),0x0;const _0xc2a1af=await this['streamClient']['XLEN'](_0x1d768a);return _0xc2a1af;}catch(_0x6fc8e8){this['logger']['error']('Error\x20getting\x20depth\x20for\x20'+_0x1d768a,{'error':_0x6fc8e8});throw _0x6fc8e8;}}async['getStreamDepths'](_0x111e98){const _0x44a0e9=this['storeClient']['multi'](),_0x43f9bb=new Map();_0x111e98['forEach'](_0x58ca24=>{!_0x43f9bb['has'](_0x58ca24['stream'])&&(_0x43f9bb['set'](_0x58ca24['stream'],-0x1),this['getStreamDepth'](_0x58ca24['stream'],{'multi':_0x44a0e9}));});const _0xce1982=await _0x44a0e9['exec']();return Array['from'](_0x43f9bb['keys']())['forEach']((_0x26e0e9,_0x4a3183)=>{_0x43f9bb['set'](_0x26e0e9,_0xce1982[_0x4a3183]);}),_0x111e98['map'](_0x3d9450=>{return{'stream':_0x3d9450['stream'],'depth':_0x43f9bb['get'](_0x3d9450['stream'])||0x0};});}async['trimStream'](_0x32c714,_0xccdb19){return 0x0;}['getProviderSpecificFeatures'](){return{'supportsBatching':!![],'supportsDeadLetterQueue':![],'supportsOrdering':!![],'supportsTrimming':!![],'supportsRetry':!![],'maxMessageSize':0x200*0x400*0x400,'maxBatchSize':0x3e8};}}exports['RedisStreamService']=RedisStreamService;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
'use strict';(function(
|
|
1
|
+
'use strict';function _0xf3ff(){var _0x2f6385=['2155uOyZWk','62286sBbrCD','52861wHjkqZ','765021RHBxtc','8PkiLsd','1362501XEqIGJ','7441820bsZBYi','884943MViiTf','4398Mmuyqi','4UyxzUw'];_0xf3ff=function(){return _0x2f6385;};return _0xf3ff();}function _0x239b(_0x56eb64,_0x18b739){var _0xf3ff0a=_0xf3ff();return _0x239b=function(_0x239bfd,_0x529083){_0x239bfd=_0x239bfd-0xd8;var _0x4c27d5=_0xf3ff0a[_0x239bfd];return _0x4c27d5;},_0x239b(_0x56eb64,_0x18b739);}(function(_0x7ab2f9,_0x93fd06){var _0xc79177=_0x239b,_0x12fb1e=_0x7ab2f9();while(!![]){try{var _0xb98dd4=parseInt(_0xc79177(0xd8))/0x1+parseInt(_0xc79177(0xe1))/0x2+-parseInt(_0xc79177(0xd9))/0x3*(-parseInt(_0xc79177(0xdf))/0x4)+-parseInt(_0xc79177(0xe0))/0x5*(-parseInt(_0xc79177(0xde))/0x6)+parseInt(_0xc79177(0xdb))/0x7+parseInt(_0xc79177(0xda))/0x8*(parseInt(_0xc79177(0xdd))/0x9)+-parseInt(_0xc79177(0xdc))/0xa;if(_0xb98dd4===_0x93fd06)break;else _0x12fb1e['push'](_0x12fb1e['shift']());}catch(_0x3cc7c1){_0x12fb1e['push'](_0x12fb1e['shift']());}}}(_0xf3ff,0x31bca));Object['defineProperty'](exports,'__esModule',{'value':!![]});
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ILogger } from '../logger';
|
|
2
|
-
import { ProviderClient
|
|
2
|
+
import { ProviderClient } from '../../types/provider';
|
|
3
3
|
import { SubService } from './index';
|
|
4
4
|
declare class SubServiceFactory {
|
|
5
|
-
static init(
|
|
5
|
+
static init(providerClient: ProviderClient, providerStoreClient: ProviderClient, namespace: string, appId: string, engineId: string, logger: ILogger): Promise<SubService<ProviderClient>>;
|
|
6
6
|
}
|
|
7
7
|
export { SubServiceFactory };
|
|
@@ -4,14 +4,18 @@ exports.SubServiceFactory = void 0;
|
|
|
4
4
|
const utils_1 = require("../../modules/utils");
|
|
5
5
|
const ioredis_1 = require("./providers/redis/ioredis");
|
|
6
6
|
const redis_1 = require("./providers/redis/redis");
|
|
7
|
+
const postgres_1 = require("./providers/postgres/postgres");
|
|
7
8
|
class SubServiceFactory {
|
|
8
|
-
static async init(
|
|
9
|
+
static async init(providerClient, providerStoreClient, namespace, appId, engineId, logger) {
|
|
9
10
|
let service;
|
|
10
|
-
if ((0, utils_1.identifyProvider)(
|
|
11
|
-
service = new redis_1.RedisSubService(
|
|
11
|
+
if ((0, utils_1.identifyProvider)(providerClient) === 'redis') {
|
|
12
|
+
service = new redis_1.RedisSubService(providerClient, providerStoreClient);
|
|
13
|
+
}
|
|
14
|
+
else if ((0, utils_1.identifyProvider)(providerClient) === 'postgres') {
|
|
15
|
+
service = new postgres_1.PostgresSubService(providerClient, providerStoreClient);
|
|
12
16
|
}
|
|
13
17
|
else {
|
|
14
|
-
service = new ioredis_1.IORedisSubService(
|
|
18
|
+
service = new ioredis_1.IORedisSubService(providerClient, providerStoreClient);
|
|
15
19
|
}
|
|
16
20
|
await service.init(namespace, appId, engineId, logger);
|
|
17
21
|
return service;
|
|
@@ -2,15 +2,16 @@ import { KeyStoreParams, KeyType } from '../../modules/key';
|
|
|
2
2
|
import { ILogger } from '../logger';
|
|
3
3
|
import { SubscriptionCallback } from '../../types/quorum';
|
|
4
4
|
import { ProviderClient, ProviderTransaction } from '../../types/provider';
|
|
5
|
-
declare abstract class SubService<ClientProvider extends ProviderClient
|
|
5
|
+
declare abstract class SubService<ClientProvider extends ProviderClient> {
|
|
6
6
|
protected eventClient: ClientProvider;
|
|
7
7
|
protected storeClient: ProviderClient;
|
|
8
8
|
protected namespace: string;
|
|
9
|
+
protected engineId: string;
|
|
9
10
|
protected logger: ILogger;
|
|
10
11
|
protected appId: string;
|
|
11
12
|
constructor(eventClient: ClientProvider, storeClient: ProviderClient);
|
|
12
13
|
abstract init(namespace: string, appId: string, engineId: string, logger: ILogger): Promise<void>;
|
|
13
|
-
abstract transact():
|
|
14
|
+
abstract transact(): ProviderTransaction;
|
|
14
15
|
abstract mintKey(type: KeyType, params: KeyStoreParams): string;
|
|
15
16
|
abstract subscribe(keyType: KeyType.QUORUM, callback: SubscriptionCallback, appId: string, engineId?: string): Promise<void>;
|
|
16
17
|
abstract unsubscribe(keyType: KeyType.QUORUM, appId: string, engineId?: string): Promise<void>;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { KeyStoreParams, KeyType } from '../../../../modules/key';
|
|
2
|
+
import { ILogger } from '../../../logger';
|
|
3
|
+
import { SubService } from '../../index';
|
|
4
|
+
import { SubscriptionCallback } from '../../../../types/quorum';
|
|
5
|
+
import { ProviderClient, ProviderTransaction } from '../../../../types/provider';
|
|
6
|
+
import { PostgresClientType } from '../../../../types/postgres';
|
|
7
|
+
declare class PostgresSubService extends SubService<PostgresClientType & ProviderClient> {
|
|
8
|
+
constructor(eventClient: PostgresClientType & ProviderClient, storeClient?: PostgresClientType & ProviderClient);
|
|
9
|
+
init(namespace: string, appId: string, engineId: string, logger: ILogger): Promise<void>;
|
|
10
|
+
transact(): ProviderTransaction;
|
|
11
|
+
mintKey(type: KeyType, params: KeyStoreParams): string;
|
|
12
|
+
subscribe(keyType: KeyType.QUORUM, callback: SubscriptionCallback, appId: string, engineId?: string): Promise<void>;
|
|
13
|
+
unsubscribe(keyType: KeyType.QUORUM, appId: string, engineId?: string): Promise<void>;
|
|
14
|
+
publish(keyType: KeyType.QUORUM, message: Record<string, any>, appId: string, engineId?: string): Promise<boolean>;
|
|
15
|
+
psubscribe(): Promise<void>;
|
|
16
|
+
punsubscribe(): Promise<void>;
|
|
17
|
+
}
|
|
18
|
+
export { PostgresSubService };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';(function(_0x5a0d3b,_0x42230f){const _0x5b2297=_0x42ab,_0x220c2b=_0x5a0d3b();while(!![]){try{const _0x290617=parseInt(_0x5b2297(0x1c3))/0x1+parseInt(_0x5b2297(0x1c7))/0x2+-parseInt(_0x5b2297(0x1c6))/0x3+parseInt(_0x5b2297(0x1ca))/0x4+parseInt(_0x5b2297(0x1c9))/0x5*(-parseInt(_0x5b2297(0x1c2))/0x6)+-parseInt(_0x5b2297(0x1c5))/0x7+-parseInt(_0x5b2297(0x1c8))/0x8*(parseInt(_0x5b2297(0x1c4))/0x9);if(_0x290617===_0x42230f)break;else _0x220c2b['push'](_0x220c2b['shift']());}catch(_0x5acb2d){_0x220c2b['push'](_0x220c2b['shift']());}}}(_0x1517,0x54325));function _0x1517(){const _0x684ab0=['653316kWoQvB','352539VQRNOc','819266igwSOw','648900HNLNsN','985650isLRHy','56rQnacZ','10rAHtIh','607204EeZwuI','1036614eOfnLn'];_0x1517=function(){return _0x684ab0;};return _0x1517();}Object['defineProperty'](exports,'__esModule',{'value':!![]}),exports['PostgresSubService']=void 0x0;const key_1=require('../../../../modules/key'),index_1=require('../../index');class PostgresSubService extends index_1['SubService']{constructor(_0x22d537,_0x4063b5){super(_0x22d537,_0x4063b5);}async['init'](_0x204f64=key_1['HMNS'],_0x153f07,_0xf0e871,_0x2cb2fb){this['namespace']=_0x204f64,this['logger']=_0x2cb2fb,this['appId']=_0x153f07,this['engineId']=_0xf0e871;}['transact'](){throw new Error('Transactions\x20are\x20not\x20supported\x20in\x20lightweight\x20pub/sub');}['mintKey'](_0x1c3b93,_0x337a99){if(!this['namespace'])throw new Error('Namespace\x20not\x20set');return key_1['KeyService']['mintKey'](this['namespace'],_0x1c3b93,_0x337a99);}async['subscribe'](_0x49d712,_0x24bcac,_0x2b4d8f,_0x4a3575){const _0x56874d=this['mintKey'](_0x49d712,{'appId':_0x2b4d8f,'engineId':_0x4a3575});await this['eventClient']['query']('LISTEN\x20\x22'+_0x56874d+'\x22'),this['logger']['info']('postgres-subscribe\x20'+_0x56874d),this['eventClient']['on']('notification',_0x20fef9=>{if(_0x20fef9['channel']===_0x56874d)try{const _0xa7e3b2=JSON['parse'](_0x20fef9['payload']||'{}');_0x24bcac(_0x56874d,_0xa7e3b2);}catch(_0x1ad66c){this['logger']['error']('Error\x20parsing\x20message\x20for\x20topic\x20'+_0x56874d+':',_0x1ad66c);}});}async['unsubscribe'](_0x597bfd,_0x1f4c79,_0x191d0f){const _0x16ebef=this['mintKey'](_0x597bfd,{'appId':_0x1f4c79,'engineId':_0x191d0f});await this['eventClient']['query']('UNLISTEN\x20\x22'+_0x16ebef+'\x22'),this['logger']['info']('postgres-unsubscribe\x20'+_0x16ebef);}async['publish'](_0x1de006,_0x4ab135,_0x4a910b,_0x3073d6){const _0xb08a92=this['mintKey'](_0x1de006,{'appId':_0x4a910b,'engineId':_0x3073d6}),_0x54bef0=JSON['stringify'](_0x4ab135)['replace'](/'/g,'\x27\x27');return await this['storeClient']['query']('NOTIFY\x20\x22'+_0xb08a92+'\x22,\x20\x27'+_0x54bef0+'\x27'),this['logger']['info']('postgres-publish\x20'+_0xb08a92),!![];}async['psubscribe'](){throw new Error('Pattern\x20subscriptions\x20are\x20not\x20supported\x20in\x20PostgreSQL');}async['punsubscribe'](){throw new Error('Pattern\x20subscriptions\x20are\x20not\x20supported\x20in\x20PostgreSQL');}}function _0x42ab(_0x3d8977,_0x1f3fe7){const _0x15176f=_0x1517();return _0x42ab=function(_0x42ab26,_0x3b4ce3){_0x42ab26=_0x42ab26-0x1c2;let _0x2b4a2f=_0x15176f[_0x42ab26];return _0x2b4a2f;},_0x42ab(_0x3d8977,_0x1f3fe7);}exports['PostgresSubService']=PostgresSubService;
|
|
@@ -3,7 +3,7 @@ import { ILogger } from '../../../logger';
|
|
|
3
3
|
import { SubService } from '../../index';
|
|
4
4
|
import { IORedisClientType as RedisClientType, IORedisMultiType as RedisMultiType } from '../../../../types/redis';
|
|
5
5
|
import { SubscriptionCallback } from '../../../../types/quorum';
|
|
6
|
-
declare class IORedisSubService extends SubService<RedisClientType
|
|
6
|
+
declare class IORedisSubService extends SubService<RedisClientType> {
|
|
7
7
|
constructor(eventClient: RedisClientType, storeClient: RedisClientType);
|
|
8
8
|
init(namespace: string, appId: string, engineId: string, logger: ILogger): Promise<void>;
|
|
9
9
|
transact(): RedisMultiType;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
'use strict';(function(
|
|
1
|
+
'use strict';(function(_0x13e63e,_0x4ab37f){const _0xa63ef8=_0x3a56,_0x180c94=_0x13e63e();while(!![]){try{const _0x517aeb=-parseInt(_0xa63ef8(0x9e))/0x1+parseInt(_0xa63ef8(0xa1))/0x2*(parseInt(_0xa63ef8(0xa5))/0x3)+parseInt(_0xa63ef8(0x9d))/0x4+parseInt(_0xa63ef8(0xa3))/0x5*(parseInt(_0xa63ef8(0x9f))/0x6)+parseInt(_0xa63ef8(0xa0))/0x7*(parseInt(_0xa63ef8(0xa2))/0x8)+parseInt(_0xa63ef8(0xa4))/0x9+-parseInt(_0xa63ef8(0xa6))/0xa;if(_0x517aeb===_0x4ab37f)break;else _0x180c94['push'](_0x180c94['shift']());}catch(_0x31243a){_0x180c94['push'](_0x180c94['shift']());}}}(_0x1657,0xc47ae));Object['defineProperty'](exports,'__esModule',{'value':!![]}),exports['IORedisSubService']=void 0x0;const key_1=require('../../../../modules/key'),index_1=require('../../index');function _0x3a56(_0x5175cb,_0x513976){const _0x1657c1=_0x1657();return _0x3a56=function(_0x3a56fa,_0x4b1adf){_0x3a56fa=_0x3a56fa-0x9d;let _0x428a34=_0x1657c1[_0x3a56fa];return _0x428a34;},_0x3a56(_0x5175cb,_0x513976);}function _0x1657(){const _0x2c8238=['1853028qgSELs','1133578mLmLkR','2368362neAXgP','7NMereE','208IpFrbo','5713304hjsoAu','5tRokrv','4633371IjnRUt','25122sCCgLF','10195020ywWfSo'];_0x1657=function(){return _0x2c8238;};return _0x1657();}class IORedisSubService extends index_1['SubService']{constructor(_0x560e72,_0x4406ac){super(_0x560e72,_0x4406ac);}async['init'](_0x5ced5c=key_1['HMNS'],_0x5df240,_0xb6276,_0x8d0434){this['namespace']=_0x5ced5c,this['logger']=_0x8d0434,this['appId']=_0x5df240,this['engineId']=_0xb6276;}['transact'](){return this['eventClient']['multi']();}['mintKey'](_0xbcc69a,_0x841a3a){if(!this['namespace'])throw new Error('namespace\x20not\x20set');return key_1['KeyService']['mintKey'](this['namespace'],_0xbcc69a,_0x841a3a);}async['subscribe'](_0x45d87b,_0x2c0639,_0x3c9218,_0x3bf50a){const _0x10e9fc=this,_0x59e58f=this['mintKey'](_0x45d87b,{'appId':_0x3c9218,'engineId':_0x3bf50a});await this['eventClient']['subscribe'](_0x59e58f,_0x5e9e9c=>{_0x5e9e9c&&_0x10e9fc['logger']['error']('Error\x20subscribing\x20to:\x20'+_0x59e58f,_0x5e9e9c);}),this['eventClient']['on']('message',(_0x5808b8,_0x1f96ea)=>{if(_0x5808b8===_0x59e58f)try{const _0x4fc131=JSON['parse'](_0x1f96ea);_0x2c0639(_0x59e58f,_0x4fc131);}catch(_0x1efac6){_0x10e9fc['logger']['error']('Error\x20parsing\x20message:\x20'+_0x1f96ea,_0x1efac6);}});}async['unsubscribe'](_0x1e887f,_0x5f3b57,_0x31020b){const _0xc5e41d=this['mintKey'](_0x1e887f,{'appId':_0x5f3b57,'engineId':_0x31020b});await this['eventClient']['unsubscribe'](_0xc5e41d);}async['psubscribe'](_0x573a4b,_0x5a5f2d,_0x2b3ea5,_0x1e696c){const _0x5d45cd=this,_0x1eec75=this['mintKey'](_0x573a4b,{'appId':_0x2b3ea5,'engineId':_0x1e696c});await this['eventClient']['psubscribe'](_0x1eec75,_0x6e7e6b=>{_0x6e7e6b&&_0x5d45cd['logger']['error']('Error\x20subscribing\x20to:\x20'+_0x1eec75,_0x6e7e6b);}),this['eventClient']['on']('pmessage',(_0x501437,_0x218cb0,_0x4738ea)=>{if(_0x501437===_0x1eec75)try{const _0xbcc12a=JSON['parse'](_0x4738ea);_0x5a5f2d(_0x218cb0,_0xbcc12a);}catch(_0xfde1e4){_0x5d45cd['logger']['error']('Error\x20parsing\x20message:\x20'+_0x4738ea,_0xfde1e4);}});}async['punsubscribe'](_0x8c4d89,_0x14d9c6,_0x2cd5e2){const _0x38b4ce=this['mintKey'](_0x8c4d89,{'appId':_0x14d9c6,'engineId':_0x2cd5e2});await this['eventClient']['punsubscribe'](_0x38b4ce);}async['publish'](_0xd2f10a,_0x21b7e2,_0x5af1f9,_0x2e923b){const _0x11ccdd=this['mintKey'](_0xd2f10a,{'appId':_0x5af1f9,'engineId':_0x2e923b}),_0x3eac8f=await this['storeClient']['publish'](_0x11ccdd,JSON['stringify'](_0x21b7e2));return _0x3eac8f===0x1;}}exports['IORedisSubService']=IORedisSubService;
|
|
@@ -3,7 +3,7 @@ import { ILogger } from '../../../logger';
|
|
|
3
3
|
import { SubService } from '../../index';
|
|
4
4
|
import { RedisRedisClientType as ClientProvider, RedisRedisMultiType as TransactionProvider } from '../../../../types/redis';
|
|
5
5
|
import { SubscriptionCallback } from '../../../../types/quorum';
|
|
6
|
-
declare class RedisSubService extends SubService<ClientProvider
|
|
6
|
+
declare class RedisSubService extends SubService<ClientProvider> {
|
|
7
7
|
constructor(eventClient: ClientProvider, storeClient: ClientProvider);
|
|
8
8
|
init(namespace: string, appId: string, engineId: string, logger: ILogger): Promise<void>;
|
|
9
9
|
transact(): TransactionProvider;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
'use strict';(function(
|
|
1
|
+
'use strict';(function(_0x37d9a4,_0x2a0344){const _0x172174=_0x5431,_0x2a8a69=_0x37d9a4();while(!![]){try{const _0x2688fb=parseInt(_0x172174(0x192))/0x1*(parseInt(_0x172174(0x194))/0x2)+parseInt(_0x172174(0x18f))/0x3+parseInt(_0x172174(0x196))/0x4*(parseInt(_0x172174(0x195))/0x5)+-parseInt(_0x172174(0x18e))/0x6+parseInt(_0x172174(0x190))/0x7+-parseInt(_0x172174(0x193))/0x8*(-parseInt(_0x172174(0x191))/0x9)+parseInt(_0x172174(0x18d))/0xa*(-parseInt(_0x172174(0x18c))/0xb);if(_0x2688fb===_0x2a0344)break;else _0x2a8a69['push'](_0x2a8a69['shift']());}catch(_0x3655e3){_0x2a8a69['push'](_0x2a8a69['shift']());}}}(_0x47ac,0x47eca));Object['defineProperty'](exports,'__esModule',{'value':!![]}),exports['RedisSubService']=void 0x0;const key_1=require('../../../../modules/key'),index_1=require('../../index');function _0x47ac(){const _0x2fe194=['4004kdcyAP','186153VPVLIn','310WWeKeQ','3519546REWxwz','1129440AeuHcF','2906393RtxZYj','4053411JjXaaq','1pzsPeX','8qONJmr','55224YRONvT','680MZKwhk'];_0x47ac=function(){return _0x2fe194;};return _0x47ac();}function _0x5431(_0x39b740,_0x4fb90b){const _0x47ace3=_0x47ac();return _0x5431=function(_0x54311a,_0x464d52){_0x54311a=_0x54311a-0x18c;let _0x40d66d=_0x47ace3[_0x54311a];return _0x40d66d;},_0x5431(_0x39b740,_0x4fb90b);}class RedisSubService extends index_1['SubService']{constructor(_0x38a9c1,_0x35c314){super(_0x38a9c1,_0x35c314);}async['init'](_0x3d82da=key_1['HMNS'],_0x2eb02f,_0x1c07f0,_0x48f632){this['namespace']=_0x3d82da,this['logger']=_0x48f632,this['appId']=_0x2eb02f,this['engineId']=_0x1c07f0;}['transact'](){const _0x45f99e=this['eventClient']['multi']();return _0x45f99e;}['mintKey'](_0x34b882,_0x1b62c8){if(!this['namespace'])throw new Error('namespace\x20not\x20set');return key_1['KeyService']['mintKey'](this['namespace'],_0x34b882,_0x1b62c8);}async['subscribe'](_0x398e10,_0x282d6e,_0x105816,_0x109a1f){if(this['eventClient']){const _0xa48eb=this,_0x1b8e50=this['mintKey'](_0x398e10,{'appId':_0x105816,'engineId':_0x109a1f});await this['eventClient']['subscribe'](_0x1b8e50,_0x30c8a2=>{try{const _0x3130df=JSON['parse'](_0x30c8a2);_0x282d6e(_0x1b8e50,_0x3130df);}catch(_0x551efe){_0xa48eb['logger']['error']('Error\x20parsing\x20message:\x20'+_0x30c8a2,_0x551efe);}});}}async['unsubscribe'](_0x3ce745,_0x24e835,_0xf340e2){const _0xd31a8e=this['mintKey'](_0x3ce745,{'appId':_0x24e835,'engineId':_0xf340e2});await this['eventClient']['unsubscribe'](_0xd31a8e);}async['psubscribe'](_0x997663,_0x488706,_0x435ad7,_0x1b3951){if(this['eventClient']){const _0x44f081=this,_0x430110=this['mintKey'](_0x997663,{'appId':_0x435ad7,'engineId':_0x1b3951});await this['eventClient']['pSubscribe'](_0x430110,(_0x3f9669,_0xeb8810)=>{try{const _0x159756=JSON['parse'](_0x3f9669);_0x488706(_0xeb8810,_0x159756);}catch(_0x2ffce8){_0x44f081['logger']['error']('Error\x20parsing\x20message:\x20'+_0x3f9669,_0x2ffce8);}});}}async['punsubscribe'](_0x5305c1,_0x5510fc,_0x5f35f9){const _0x3cb965=this['mintKey'](_0x5305c1,{'appId':_0x5510fc,'engineId':_0x5f35f9});await this['eventClient']['pUnsubscribe'](_0x3cb965);}async['publish'](_0x328029,_0x48c0ce,_0x567e78,_0x4d4b75){const _0x4a6ad5=this['mintKey'](_0x328029,{'appId':_0x567e78,'engineId':_0x4d4b75}),_0x1b8f22=await this['storeClient']['publish'](_0x4a6ad5,JSON['stringify'](_0x48c0ce));return _0x1b8f22>0x0;}}exports['RedisSubService']=RedisSubService;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
'use strict';(function(
|
|
1
|
+
'use strict';function _0x2739(){const _0x42d0ab=['136352wCBRei','5PNoCaw','13510ErWsiJ','1758RgGleX','4vNnlcw','3301410hpeUaj','1681735GeJMLk','4395776MpNMch','62894zDzOKd','414lNgwem','1798017fKAaoI'];_0x2739=function(){return _0x42d0ab;};return _0x2739();}(function(_0xdbad8a,_0x2d3595){const _0x4c9ef3=_0x5c64,_0x464fa7=_0xdbad8a();while(!![]){try{const _0x2933de=parseInt(_0x4c9ef3(0xf5))/0x1*(parseInt(_0x4c9ef3(0xfc))/0x2)+-parseInt(_0x4c9ef3(0xfe))/0x3*(parseInt(_0x4c9ef3(0xf8))/0x4)+-parseInt(_0x4c9ef3(0xfa))/0x5+-parseInt(_0x4c9ef3(0xf7))/0x6*(-parseInt(_0x4c9ef3(0xf6))/0x7)+parseInt(_0x4c9ef3(0xf4))/0x8*(parseInt(_0x4c9ef3(0xfd))/0x9)+parseInt(_0x4c9ef3(0xf9))/0xa+-parseInt(_0x4c9ef3(0xfb))/0xb;if(_0x2933de===_0x2d3595)break;else _0x464fa7['push'](_0x464fa7['shift']());}catch(_0x1e55f6){_0x464fa7['push'](_0x464fa7['shift']());}}}(_0x2739,0x7a754));function _0x5c64(_0x399bd2,_0x389eed){const _0x2739b2=_0x2739();return _0x5c64=function(_0x5c64d6,_0x360f24){_0x5c64d6=_0x5c64d6-0xf4;let _0x509733=_0x2739b2[_0x5c64d6];return _0x509733;},_0x5c64(_0x399bd2,_0x389eed);}Object['defineProperty'](exports,'__esModule',{'value':!![]}),exports['TaskService']=void 0x0;const enums_1=require('../../modules/enums'),utils_1=require('../../modules/utils'),pipe_1=require('../pipe'),hotmesh_1=require('../../types/hotmesh'),key_1=require('../../modules/key');class TaskService{constructor(_0x306993,_0x1854d4){this['cleanupTimeout']=null,this['isScout']=![],this['errorCount']=0x0,this['logger']=_0x1854d4,this['store']=_0x306993;}async['processWebHooks'](_0xf16b8d){const _0x432006=await this['store']['getActiveTaskQueue']();if(_0x432006){const [_0x458d3f,_0x394043,_0x56a2e8,..._0x33c1c8]=_0x432006['split'](key_1['WEBSEP']),_0x32159a=JSON['parse'](_0x33c1c8['join'](key_1['WEBSEP'])),_0x17c212=_0x394043+':processed',_0x574aec=await this['store']['processTaskQueue'](_0x394043,_0x17c212);_0x574aec?await _0xf16b8d(_0x458d3f,{..._0x32159a,'id':_0x574aec}):await this['store']['deleteProcessedTaskQueue'](_0x432006,_0x394043,_0x17c212,_0x56a2e8==='true'),setImmediate(()=>this['processWebHooks'](_0xf16b8d));}}async['enqueueWorkItems'](_0x8e16d0){await this['store']['addTaskQueues'](_0x8e16d0);}async['registerJobForCleanup'](_0x19e654,_0x4bfa=enums_1['HMSH_EXPIRE_DURATION'],_0xf74a6d){_0x4bfa>0x0&&await this['store']['expireJob'](_0x19e654,_0x4bfa);}async['registerTimeHook'](_0x2dffb4,_0xbdb465,_0x36b66e,_0x4102b1,_0x116aad=enums_1['HMSH_FIDELITY_SECONDS'],_0x4e894c,_0x45daa6){const _0x27d8ef=Date['now']()+_0x116aad*0x3e8,_0x5f53d8=enums_1['HMSH_FIDELITY_SECONDS']*0x3e8,_0x49d9da=Math['floor'](_0x27d8ef/_0x5f53d8)*_0x5f53d8;await this['store']['registerTimeHook'](_0x2dffb4,_0xbdb465,_0x36b66e,_0x4102b1,_0x49d9da,_0x4e894c,_0x45daa6);}async['shouldScout'](){const _0x3a0008=this['isScout'],_0x3fe8dd=_0x3a0008||(this['isScout']=await this['store']['reserveScoutRole']('time'));if(_0x3fe8dd)return!_0x3a0008&&setTimeout(()=>{this['isScout']=![];},enums_1['HMSH_SCOUT_INTERVAL_SECONDS']*0x3e8),!![];return![];}async['processTimeHooks'](_0x210e3b,_0x54ec43){if(await this['shouldScout']())try{const _0x233298=await this['store']['getNextTask'](_0x54ec43);if(Array['isArray'](_0x233298)){const [_0x4bb6ec,_0xb96e7a,_0x43bc47,_0x48bf1f,_0x50c9ac]=_0x233298;if(_0x50c9ac==='child'){}else{if(_0x50c9ac==='delist'){const _0x24e0a3=this['store']['mintKey'](hotmesh_1['KeyType']['SIGNALS'],{'appId':this['store']['appId']});await this['store']['delistSignalKey'](_0x24e0a3,_0xb96e7a);}else await _0x210e3b(_0xb96e7a,_0x43bc47,_0x48bf1f,_0x50c9ac);}await(0x0,utils_1['sleepFor'])(0x0),this['errorCount']=0x0,this['processTimeHooks'](_0x210e3b,_0x4bb6ec);}else{if(_0x233298)await(0x0,utils_1['sleepFor'])(0x0),this['errorCount']=0x0,this['processTimeHooks'](_0x210e3b);else{const _0x487439=(0x0,utils_1['XSleepFor'])(enums_1['HMSH_FIDELITY_SECONDS']*0x3e8);this['cleanupTimeout']=_0x487439['timerId'],await _0x487439['promise'],this['errorCount']=0x0,this['processTimeHooks'](_0x210e3b);}}}catch(_0x12c136){this['logger']['warn']('task-process-timehooks-error',_0x12c136),await(0x0,utils_1['sleepFor'])(0x3e8*this['errorCount']++),this['errorCount']<0x5&&this['processTimeHooks'](_0x210e3b);}else{const _0x14ec06=(0x0,utils_1['XSleepFor'])(enums_1['HMSH_SCOUT_INTERVAL_SECONDS']*0x3e8*0x2*Math['random']());this['cleanupTimeout']=_0x14ec06['timerId'],await _0x14ec06['promise'],this['processTimeHooks'](_0x210e3b);}}['cancelCleanup'](){this['cleanupTimeout']!==undefined&&(clearTimeout(this['cleanupTimeout']),this['cleanupTimeout']=undefined);}async['getHookRule'](_0x32da14){const _0x2acdc4=await this['store']['getHookRules']();return _0x2acdc4?.[_0x32da14]?.[0x0];}async['registerWebHook'](_0x344ca5,_0x269a35,_0x5b75ce,_0x2e799a,_0x1de96f){const _0x2a2415=await this['getHookRule'](_0x344ca5);if(_0x2a2415){const _0x30f413=_0x2a2415['conditions']['match'][0x0]['expected'],_0x26d0a0=pipe_1['Pipe']['resolve'](_0x30f413,_0x269a35),_0x11f966=_0x269a35['metadata']['jid'],_0x33b493=_0x269a35['metadata']['gid'],_0x159082=_0x2a2415['to'],_0x4a5170=[_0x159082,_0x5b75ce,_0x33b493,_0x11f966]['join'](key_1['WEBSEP']),_0x5c70d3={'topic':_0x344ca5,'resolved':_0x26d0a0,'jobId':_0x4a5170,'expire':_0x2e799a};return await this['store']['setHookSignal'](_0x5c70d3,_0x1de96f),_0x11f966;}else throw new Error('signaler.registerWebHook:error:\x20hook\x20rule\x20not\x20found');}async['processWebHookSignal'](_0x599f71,_0x2ce9ad){const _0x44cccb=await this['getHookRule'](_0x599f71);if(_0x44cccb){const _0x550af9={'$self':{'hook':{'data':_0x2ce9ad}},'$hook':{'data':_0x2ce9ad}},_0x5546b9=_0x44cccb['conditions']['match'][0x0]['actual'],_0x5762eb=pipe_1['Pipe']['resolve'](_0x5546b9,_0x550af9),_0x447b47=await this['store']['getHookSignal'](_0x599f71,_0x5762eb);if(!_0x447b47)return undefined;const [_0x17d660,_0x4c0d1f,_0x3d2ef8,..._0x5ad48e]=_0x447b47['split'](key_1['WEBSEP']);return[_0x5ad48e['join'](key_1['WEBSEP']),_0x44cccb['to'],_0x4c0d1f,_0x3d2ef8];}else throw new Error('signal-not-found');}async['deleteWebHookSignal'](_0x25c173,_0x16899c){const _0x2cb450=await this['getHookRule'](_0x25c173);if(_0x2cb450){const _0x20964e={'$self':{'hook':{'data':_0x16899c}},'$hook':{'data':_0x16899c}},_0x530c2a=_0x2cb450['conditions']['match'][0x0]['actual'],_0xe1f79d=pipe_1['Pipe']['resolve'](_0x530c2a,_0x20964e);return await this['store']['deleteHookSignal'](_0x25c173,_0xe1f79d);}else throw new Error('signaler.process:error:\x20hook\x20rule\x20not\x20found');}}exports['TaskService']=TaskService;
|