@hotmeshio/hotmesh 0.3.8 → 0.3.10
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 +7 -13
- package/build/index.d.ts +5 -2
- package/build/index.js +8 -3
- package/build/modules/key.js +1 -1
- package/build/modules/utils.d.ts +12 -4
- package/build/modules/utils.js +1 -1
- package/build/package.json +15 -8
- package/build/services/activities/activity.d.ts +9 -9
- package/build/services/activities/activity.js +1 -1
- package/build/services/activities/await.d.ts +2 -2
- package/build/services/activities/await.js +1 -1
- package/build/services/activities/cycle.d.ts +2 -2
- package/build/services/activities/cycle.js +1 -1
- package/build/services/activities/hook.d.ts +2 -2
- 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.d.ts +3 -3
- package/build/services/activities/trigger.js +1 -1
- package/build/services/activities/worker.d.ts +2 -2
- package/build/services/activities/worker.js +1 -1
- package/build/services/collator/index.d.ts +9 -9
- package/build/services/collator/index.js +1 -1
- package/build/services/compiler/deployer.d.ts +4 -4
- package/build/services/compiler/deployer.js +1 -1
- package/build/services/compiler/index.d.ts +4 -4
- package/build/services/compiler/index.js +1 -1
- package/build/services/compiler/validator.d.ts +3 -3
- package/build/services/compiler/validator.js +1 -1
- package/build/services/connector/factory.d.ts +7 -0
- package/build/services/connector/factory.js +65 -0
- package/build/services/connector/index.d.ts +13 -4
- package/build/services/connector/index.js +30 -23
- package/build/services/connector/providers/ioredis.d.ts +9 -0
- package/build/services/connector/providers/ioredis.js +26 -0
- package/build/services/connector/providers/nats.d.ts +9 -0
- package/build/services/connector/providers/nats.js +26 -0
- package/build/services/connector/providers/postgres.d.ts +9 -0
- package/build/services/connector/providers/postgres.js +44 -0
- package/build/services/connector/providers/redis.d.ts +9 -0
- package/build/services/connector/providers/redis.js +38 -0
- package/build/services/engine/index.d.ts +12 -12
- package/build/services/engine/index.js +1 -1
- package/build/services/exporter/index.d.ts +3 -3
- package/build/services/exporter/index.js +1 -1
- package/build/services/hotmesh/index.js +4 -4
- package/build/services/mapper/index.js +1 -1
- package/build/services/meshcall/index.d.ts +5 -4
- package/build/services/meshcall/index.js +31 -14
- package/build/services/meshdata/index.d.ts +6 -6
- package/build/services/meshdata/index.js +7 -15
- package/build/services/meshflow/connection.d.ts +3 -2
- package/build/services/meshflow/exporter.d.ts +3 -3
- package/build/services/meshflow/exporter.js +1 -1
- package/build/services/meshflow/search.js +12 -4
- package/build/services/meshflow/worker.js +7 -7
- package/build/services/meshos/index.d.ts +1 -4
- package/build/services/meshos/index.js +11 -44
- 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.d.ts +2 -0
- 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 +5 -5
- package/build/services/quorum/index.js +1 -1
- package/build/services/reporter/index.d.ts +2 -2
- package/build/services/reporter/index.js +1 -1
- package/build/services/router/index.d.ts +8 -13
- package/build/services/router/index.js +1 -1
- package/build/services/search/factory.d.ts +2 -2
- package/build/services/search/factory.js +1 -1
- package/build/services/search/index.d.ts +5 -4
- 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/factory.d.ts +3 -3
- package/build/services/store/factory.js +1 -1
- package/build/services/store/index.d.ts +18 -17
- package/build/services/store/providers/redis/_base.d.ts +13 -15
- package/build/services/store/providers/redis/_base.js +1 -1
- package/build/services/store/providers/redis/ioredis.d.ts +2 -2
- package/build/services/store/providers/redis/ioredis.js +1 -1
- package/build/services/store/providers/redis/redis.d.ts +2 -2
- package/build/services/store/providers/redis/redis.js +1 -1
- package/build/services/store/providers/store-initializable.js +1 -1
- package/build/services/stream/factory.d.ts +3 -3
- package/build/services/stream/factory.js +16 -4
- package/build/services/stream/index.d.ts +57 -18
- package/build/services/stream/index.js +2 -1
- package/build/services/stream/providers/nats/nats.d.ts +59 -0
- package/build/services/stream/providers/nats/nats.js +1 -0
- package/build/services/stream/providers/postgres/postgres.d.ts +68 -0
- package/build/services/stream/providers/postgres/postgres.js +1 -0
- package/build/services/stream/providers/redis/ioredis.d.ts +53 -14
- package/build/services/stream/providers/redis/ioredis.js +1 -1
- package/build/services/stream/providers/redis/redis.d.ts +54 -15
- package/build/services/stream/providers/redis/redis.js +1 -1
- package/build/services/stream/providers/stream-initializable.d.ts +1 -2
- 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 +1 -1
- package/build/services/sub/index.d.ts +6 -5
- 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 +4 -4
- package/build/services/sub/providers/redis/redis.js +1 -1
- package/build/services/task/index.d.ts +5 -5
- package/build/services/task/index.js +1 -1
- package/build/services/telemetry/index.js +1 -1
- package/build/services/worker/index.d.ts +9 -9
- package/build/services/worker/index.js +1 -1
- package/build/types/hotmesh.d.ts +26 -14
- package/build/types/index.d.ts +8 -5
- package/build/types/manifest.d.ts +1 -9
- package/build/types/meshcall.d.ts +12 -7
- package/build/types/meshflow.d.ts +3 -7
- package/build/types/nats.d.ts +150 -0
- package/build/types/nats.js +2 -0
- package/build/types/postgres.d.ts +70 -0
- package/build/types/postgres.js +2 -0
- package/build/types/provider.d.ts +26 -0
- package/build/types/provider.js +2 -0
- package/build/types/redis.d.ts +33 -15
- package/build/types/stream.d.ts +65 -1
- package/index.ts +10 -5
- package/package.json +15 -8
- package/typedoc.json +6 -0
- package/types/hotmesh.ts +139 -22
- package/types/index.ts +80 -17
- package/types/manifest.ts +1 -10
- package/types/meshcall.ts +38 -13
- package/types/meshflow.ts +2 -7
- package/types/nats.ts +236 -0
- package/types/postgres.ts +85 -0
- package/types/provider.ts +71 -0
- package/types/redis.ts +63 -18
- package/types/stream.ts +85 -1
- package/build/services/connector/clients/ioredis.d.ts +0 -13
- package/build/services/connector/clients/ioredis.js +0 -48
- package/build/services/connector/clients/redis.d.ts +0 -13
- package/build/services/connector/clients/redis.js +0 -60
- package/build/services/stream/providers/postgres/_deploy.d.ts +0 -4
- package/build/services/stream/providers/postgres/_deploy.js +0 -1
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { ILogger } from '../../../logger';
|
|
2
|
+
import { KeyType } from '../../../../modules/key';
|
|
3
|
+
import { StreamService } from '../../index';
|
|
4
|
+
import { KeyStoreParams, StringAnyType } from '../../../../types';
|
|
5
|
+
import { PostgresClientType } from '../../../../types/postgres';
|
|
6
|
+
import { PublishMessageConfig, StreamConfig, StreamMessage, StreamStats } from '../../../../types/stream';
|
|
7
|
+
import { ProviderClient, ProviderTransaction } from '../../../../types/provider';
|
|
8
|
+
declare class PostgresStreamService extends StreamService<PostgresClientType & ProviderClient, any> {
|
|
9
|
+
namespace: string;
|
|
10
|
+
appId: string;
|
|
11
|
+
logger: ILogger;
|
|
12
|
+
constructor(streamClient: PostgresClientType & ProviderClient, storeClient: ProviderClient, config?: StreamConfig);
|
|
13
|
+
init(namespace: string, appId: string, logger: ILogger): Promise<void>;
|
|
14
|
+
deploy(): Promise<void>;
|
|
15
|
+
getAdvisoryLockId(): number;
|
|
16
|
+
hashStringToInt(str: string): number;
|
|
17
|
+
checkIfTablesExist(client: PostgresClientType): Promise<boolean>;
|
|
18
|
+
getTableName(): string;
|
|
19
|
+
createTables(client: PostgresClientType): Promise<void>;
|
|
20
|
+
delay(ms: number): Promise<void>;
|
|
21
|
+
mintKey(type: KeyType, params: KeyStoreParams): string;
|
|
22
|
+
transact(): ProviderTransaction;
|
|
23
|
+
createStream(streamName: string): Promise<boolean>;
|
|
24
|
+
deleteStream(streamName: string): Promise<boolean>;
|
|
25
|
+
createConsumerGroup(streamName: string, groupName: string): Promise<boolean>;
|
|
26
|
+
deleteConsumerGroup(streamName: string, groupName: string): Promise<boolean>;
|
|
27
|
+
publishMessages(streamName: string, messages: string[], options?: PublishMessageConfig): Promise<string[] | ProviderTransaction>;
|
|
28
|
+
consumeMessages(streamName: string, groupName: string, consumerName: string, options?: {
|
|
29
|
+
batchSize?: number;
|
|
30
|
+
blockTimeout?: number;
|
|
31
|
+
autoAck?: boolean;
|
|
32
|
+
reservationTimeout?: number;
|
|
33
|
+
}): Promise<StreamMessage[]>;
|
|
34
|
+
ackAndDelete(streamName: string, groupName: string, messageIds: string[]): Promise<number>;
|
|
35
|
+
acknowledgeMessages(streamName: string, groupName: string, messageIds: string[], options?: StringAnyType): Promise<number>;
|
|
36
|
+
deleteMessages(streamName: string, groupName: string, messageIds: string[], options?: StringAnyType): Promise<number>;
|
|
37
|
+
retryMessages(streamName: string, groupName: string, options?: {
|
|
38
|
+
consumerName?: string;
|
|
39
|
+
minIdleTime?: number;
|
|
40
|
+
messageIds?: string[];
|
|
41
|
+
delay?: number;
|
|
42
|
+
maxRetries?: number;
|
|
43
|
+
limit?: number;
|
|
44
|
+
}): Promise<StreamMessage[]>;
|
|
45
|
+
getStreamStats(streamName: string): Promise<StreamStats>;
|
|
46
|
+
getStreamDepth(streamName: string): Promise<number>;
|
|
47
|
+
getStreamDepths(streamNames: {
|
|
48
|
+
stream: string;
|
|
49
|
+
}[]): Promise<{
|
|
50
|
+
stream: string;
|
|
51
|
+
depth: number;
|
|
52
|
+
}[]>;
|
|
53
|
+
trimStream(streamName: string, options: {
|
|
54
|
+
maxLen?: number;
|
|
55
|
+
maxAge?: number;
|
|
56
|
+
exactLimit?: boolean;
|
|
57
|
+
}): Promise<number>;
|
|
58
|
+
getProviderSpecificFeatures(): {
|
|
59
|
+
supportsBatching: boolean;
|
|
60
|
+
supportsDeadLetterQueue: boolean;
|
|
61
|
+
supportsOrdering: boolean;
|
|
62
|
+
supportsTrimming: boolean;
|
|
63
|
+
supportsRetry: boolean;
|
|
64
|
+
maxMessageSize: number;
|
|
65
|
+
maxBatchSize: number;
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
export { PostgresStreamService };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';(function(_0x4447fb,_0x565ffe){const _0x515e0b=_0x2536,_0x1d697e=_0x4447fb();while(!![]){try{const _0x392001=parseInt(_0x515e0b(0x1b5))/0x1+parseInt(_0x515e0b(0x1b4))/0x2*(parseInt(_0x515e0b(0x1b6))/0x3)+parseInt(_0x515e0b(0x1b2))/0x4*(-parseInt(_0x515e0b(0x1b1))/0x5)+-parseInt(_0x515e0b(0x1b3))/0x6+parseInt(_0x515e0b(0x1b7))/0x7+-parseInt(_0x515e0b(0x1b9))/0x8+parseInt(_0x515e0b(0x1b8))/0x9*(parseInt(_0x515e0b(0x1b0))/0xa);if(_0x392001===_0x565ffe)break;else _0x1d697e['push'](_0x1d697e['shift']());}catch(_0x2a514f){_0x1d697e['push'](_0x1d697e['shift']());}}}(_0x2932,0x3f438));Object['defineProperty'](exports,'__esModule',{'value':!![]}),exports['PostgresStreamService']=void 0x0;function _0x2536(_0x2a5fde,_0x1f7a44){const _0x29321d=_0x2932();return _0x2536=function(_0x2536a3,_0x12f0a2){_0x2536a3=_0x2536a3-0x1b0;let _0xd42a85=_0x29321d[_0x2536a3];return _0xd42a85;},_0x2536(_0x2a5fde,_0x1f7a44);}const key_1=require('../../../../modules/key'),utils_1=require('../../../../modules/utils'),index_1=require('../../index');class PostgresStreamService extends index_1['StreamService']{constructor(_0x595ed9,_0xc72dd8,_0x41bf1c={}){super(_0x595ed9,_0xc72dd8,_0x41bf1c);}async['init'](_0x430c40,_0x497287,_0x5c286b){this['namespace']=_0x430c40,this['appId']=_0x497287,this['logger']=_0x5c286b,await this['deploy']();}async['deploy'](){const _0x435992=this['streamClient'];try{const _0x5017fd=this['getAdvisoryLockId'](),_0x2e2bdd=await _0x435992['query']('SELECT\x20pg_try_advisory_lock($1)\x20AS\x20locked',[_0x5017fd]);if(_0x2e2bdd['rows'][0x0]['locked']){await _0x435992['query']('BEGIN');const _0x299ffd=await this['checkIfTablesExist'](_0x435992);!_0x299ffd&&await this['createTables'](_0x435992),await _0x435992['query']('COMMIT'),await _0x435992['query']('SELECT\x20pg_advisory_unlock($1)',[_0x5017fd]);}else{let _0x4d9d19=0x0;const _0x5e95e3=0x14;while(_0x4d9d19<_0x5e95e3){await this['delay'](0x64);const _0x29fdee=await _0x435992['query']('SELECT\x20NOT\x20EXISTS\x20(SELECT\x201\x20FROM\x20pg_locks\x20WHERE\x20locktype\x20=\x20\x27advisory\x27\x20AND\x20objid\x20=\x20$1::bigint)\x20AS\x20unlocked',[_0x5017fd]);if(_0x29fdee['rows'][0x0]['unlocked']){const _0xa7b03d=await this['checkIfTablesExist'](_0x435992);if(_0xa7b03d)break;}_0x4d9d19++;}if(_0x4d9d19===_0x5e95e3)throw new Error('Timeout\x20waiting\x20for\x20table\x20creation');}}catch(_0x4839cf){this['logger']['error']('Error\x20deploying\x20tables',{'error':_0x4839cf});throw _0x4839cf;}}['getAdvisoryLockId'](){return this['hashStringToInt'](this['appId']);}['hashStringToInt'](_0x39f559){let _0x5bdc19=0x0;for(let _0x36abaa=0x0;_0x36abaa<_0x39f559['length'];_0x36abaa++){_0x5bdc19=(_0x5bdc19<<0x5)-_0x5bdc19+_0x39f559['charCodeAt'](_0x36abaa),_0x5bdc19|=0x0;}return Math['abs'](_0x5bdc19);}async['checkIfTablesExist'](_0x5eeed2){const _0x24949d=await _0x5eeed2['query']('SELECT\x20to_regclass(\x27public.'+this['getTableName']()+'\x27)\x20AS\x20table');return _0x24949d['rows'][0x0]['table']!==null;}['getTableName'](){return'stream_'+this['namespace']['replace'](/[^a-zA-Z0-9_]/g,'_')+'_'+this['appId']['replace'](/[^a-zA-Z0-9_]/g,'_');}async['createTables'](_0x19c40a){const _0x238068=this['getTableName']();await _0x19c40a['query']('BEGIN'),await _0x19c40a['query']('CREATE\x20TABLE\x20'+_0x238068+'\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 _0x1264cc=0x0;_0x1264cc<0x8;_0x1264cc++){await _0x19c40a['query']('CREATE\x20TABLE\x20'+_0x238068+'_part_'+_0x1264cc+'\x20PARTITION\x20OF\x20'+_0x238068+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20FOR\x20VALUES\x20WITH\x20(modulus\x208,\x20remainder\x20'+_0x1264cc+')');}await _0x19c40a['query']('CREATE\x20INDEX\x20idx_'+_0x238068+'_group_stream_reserved_at_id\x20\x0a\x20\x20\x20\x20\x20\x20\x20ON\x20'+_0x238068+'\x20(group_name,\x20stream_name,\x20reserved_at,\x20id)'),await _0x19c40a['query']('COMMIT');}['delay'](_0x4e6d9f){return new Promise(_0x108541=>setTimeout(_0x108541,_0x4e6d9f));}['mintKey'](_0x273cec,_0x1d5538){if(!this['namespace'])throw new Error('namespace\x20not\x20set');return key_1['KeyService']['mintKey'](this['namespace'],_0x273cec,{..._0x1d5538,'appId':this['appId']});}['transact'](){return{};}async['createStream'](_0x4f2249){return!![];}async['deleteStream'](_0x32608f){const _0x28bb02=this['streamClient'],_0x4d2b82=this['getTableName']();try{return await _0x28bb02['query']('BEGIN'),_0x32608f==='*'?await _0x28bb02['query']('DELETE\x20FROM\x20'+_0x4d2b82):await _0x28bb02['query']('DELETE\x20FROM\x20'+_0x4d2b82+'\x20WHERE\x20stream_name\x20=\x20$1',[_0x32608f]),await _0x28bb02['query']('COMMIT'),!![];}catch(_0x32ef33){await _0x28bb02['query']('ROLLBACK'),this['logger']['error']('Error\x20deleting\x20stream\x20'+_0x32608f,{'error':_0x32ef33});throw _0x32ef33;}}async['createConsumerGroup'](_0x475668,_0x670bdd){return!![];}async['deleteConsumerGroup'](_0x373fd7,_0x485471){const _0x2e851f=this['streamClient'],_0x35628a=this['getTableName']();try{return await _0x2e851f['query']('BEGIN'),await _0x2e851f['query']('DELETE\x20FROM\x20'+_0x35628a+'\x20WHERE\x20stream_name\x20=\x20$1\x20AND\x20group_name\x20=\x20$2',[_0x373fd7,_0x485471]),await _0x2e851f['query']('COMMIT'),!![];}catch(_0x108581){await _0x2e851f['query']('ROLLBACK'),this['logger']['error']('Error\x20deleting\x20consumer\x20group\x20'+_0x485471+'\x20for\x20stream\x20'+_0x373fd7,{'error':_0x108581});throw _0x108581;}}async['publishMessages'](_0x24b636,_0x5dd601,_0x3dd904){const _0x10c2ff=_0x3dd904?.['transaction']||this['streamClient'],_0x15311c=this['getTableName']();try{!_0x3dd904?.['transaction']&&await _0x10c2ff['query']('BEGIN');const _0x2cf283=[],_0x4bf592=_0x24b636['endsWith'](':')?'ENGINE':'WORKER',_0x3fb651=_0x5dd601['map']((_0x480dc6,_0x515d52)=>'($1,\x20$2,\x20$'+(_0x515d52+0x3)+')')['join'](',\x20'),_0x1a9734=[_0x24b636,_0x4bf592,..._0x5dd601],_0x4a4038=await _0x10c2ff['query']('INSERT\x20INTO\x20'+_0x15311c+'\x20(stream_name,\x20group_name,\x20message)\x20VALUES\x20'+_0x3fb651+'\x20RETURNING\x20id',_0x1a9734);for(const _0xa55f19 of _0x4a4038['rows']){_0x2cf283['push'](_0xa55f19['id']['toString']());}return!_0x3dd904?.['transaction']&&await _0x10c2ff['query']('COMMIT'),_0x2cf283;}catch(_0x4ca12e){!_0x3dd904?.['transaction']&&await _0x10c2ff['query']('ROLLBACK');this['logger']['error']('Error\x20publishing\x20messages\x20to\x20'+_0x24b636,{'error':_0x4ca12e});throw _0x4ca12e;}}async['consumeMessages'](_0x50a060,_0x16a355,_0x5ad16f,_0x593a89){const _0x29e878=this['streamClient'],_0x2418b2=this['getTableName']();try{const _0x58f38b=_0x593a89?.['batchSize']||0x1,_0x2475bd=_0x593a89?.['reservationTimeout']||0x1e,_0x3c0a23=await _0x29e878['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'+_0x2418b2+'\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'+_0x2475bd+'\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'+_0x2418b2+'\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',[_0x50a060,_0x16a355,_0x58f38b,_0x5ad16f]),_0x22c52d=_0x3c0a23['rows']['map'](_0x3530c5=>({'id':_0x3530c5['id']['toString'](),'data':(0x0,utils_1['parseStreamMessage'])(_0x3530c5['message'])}));return _0x22c52d;}catch(_0xf6675f){this['logger']['error']('Error\x20consuming\x20messages\x20from\x20'+_0x50a060,{'error':_0xf6675f});throw _0xf6675f;}}async['ackAndDelete'](_0xaf3e8b,_0x325948,_0x32d316){return await this['deleteMessages'](_0xaf3e8b,_0x325948,_0x32d316);}async['acknowledgeMessages'](_0x2d2693,_0x3b3b67,_0x8b7c74,_0x10733b){return _0x8b7c74['length'];}async['deleteMessages'](_0x1931d1,_0x40883f,_0x4bde6d,_0x26ec58){const _0x31091b=this['streamClient'],_0x24b8cd=this['getTableName']();try{await _0x31091b['query']('BEGIN');const _0x3a65e9=_0x4bde6d['map'](_0x413568=>parseInt(_0x413568));return await _0x31091b['query']('DELETE\x20FROM\x20'+_0x24b8cd+'\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',[_0x1931d1,_0x3a65e9,_0x40883f]),await _0x31091b['query']('COMMIT'),_0x4bde6d['length'];}catch(_0x4127f3){await _0x31091b['query']('ROLLBACK'),this['logger']['error']('Error\x20deleting\x20messages\x20from\x20'+_0x1931d1,{'error':_0x4127f3});throw _0x4127f3;}}async['retryMessages'](_0x2091a6,_0x3d0bec,_0x223645){return[];}async['getStreamStats'](_0x47225e){const _0x14a4c9=this['streamClient'],_0x3efc1a=this['getTableName']();try{const _0x11eb4f=await _0x14a4c9['query']('SELECT\x20COUNT(*)\x20AS\x20count\x20FROM\x20'+_0x3efc1a+'\x20WHERE\x20stream_name\x20=\x20$1',[_0x47225e]);return{'messageCount':parseInt(_0x11eb4f['rows'][0x0]['count'],0xa)};}catch(_0x22ded9){this['logger']['error']('Error\x20getting\x20stats\x20for\x20'+_0x47225e,{'error':_0x22ded9});throw _0x22ded9;}}async['getStreamDepth'](_0x55d220){const _0x1449f1=await this['getStreamStats'](_0x55d220);return _0x1449f1['messageCount'];}async['getStreamDepths'](_0x57457b){const _0x502818=this['streamClient'],_0x1b2efd=this['getTableName']();try{const _0x17b2b9=_0x57457b['map'](_0x4ed74d=>_0x4ed74d['stream']),_0x54a213=await _0x502818['query']('SELECT\x20stream_name,\x20COUNT(*)\x20AS\x20count\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20FROM\x20'+_0x1b2efd+'\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',[_0x17b2b9]),_0x14dfe6=_0x54a213['rows']['map'](_0x55eb5d=>({'stream':_0x55eb5d['stream_name'],'depth':parseInt(_0x55eb5d['count'],0xa)}));return _0x14dfe6;}catch(_0x922bd8){this['logger']['error']('Error\x20getting\x20multiple\x20stream\x20depths',{'error':_0x922bd8});throw _0x922bd8;}}async['trimStream'](_0x26be55,_0x40d803){const _0x5f4ed6=this['streamClient'],_0x52d3d1=this['getTableName']();try{await _0x5f4ed6['query']('BEGIN');let _0x517cee=0x0;if(_0x40d803['maxLen']!==undefined){const _0x143ded=await _0x5f4ed6['query']('DELETE\x20FROM\x20'+_0x52d3d1+'\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'+_0x52d3d1+'\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)',[_0x26be55,_0x40d803['maxLen']]);_0x517cee+=_0x143ded['rowCount'];}if(_0x40d803['maxAge']!==undefined){const _0x4f2222=await _0x5f4ed6['query']('DELETE\x20FROM\x20'+_0x52d3d1+'\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'+_0x40d803['maxAge']+'\x20milliseconds\x27',[_0x26be55]);_0x517cee+=_0x4f2222['rowCount'];}return await _0x5f4ed6['query']('COMMIT'),_0x517cee;}catch(_0x45a449){await _0x5f4ed6['query']('ROLLBACK'),this['logger']['error']('Error\x20trimming\x20stream\x20'+_0x26be55,{'error':_0x45a449});throw _0x45a449;}}['getProviderSpecificFeatures'](){return{'supportsBatching':!![],'supportsDeadLetterQueue':![],'supportsOrdering':!![],'supportsTrimming':!![],'supportsRetry':![],'maxMessageSize':0x400*0x400,'maxBatchSize':0x100};}}exports['PostgresStreamService']=PostgresStreamService;function _0x2932(){const _0x217045=['28jFsejg','1602246TKPEUt','2xjckIg','146866OwRzJa','761934ddQVev','899101QNYFIz','18WhVLzD','76456wcqxsb','179160IggAWR','20995KOvfVF'];_0x2932=function(){return _0x217045;};return _0x2932();}
|
|
@@ -1,21 +1,60 @@
|
|
|
1
|
-
import { KeyStoreParams, KeyType } from '../../../../modules/key';
|
|
2
1
|
import { ILogger } from '../../../logger';
|
|
3
2
|
import { StreamService } from '../../index';
|
|
4
|
-
import { IORedisClientType
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
import { IORedisClientType, IORedisMultiType } from '../../../../types/redis';
|
|
4
|
+
import { PublishMessageConfig, StreamConfig, StreamMessage, StreamStats } from '../../../../types/stream';
|
|
5
|
+
import { KeyStoreParams, StringAnyType } from '../../../../types';
|
|
6
|
+
import { KeyType } from '../../../../modules/key';
|
|
7
|
+
import { ProviderTransaction } from '../../../../types/provider';
|
|
8
|
+
declare class IORedisStreamService extends StreamService<IORedisClientType, IORedisMultiType> {
|
|
9
|
+
constructor(streamClient: IORedisClientType, storeClient: IORedisClientType, config?: StreamConfig);
|
|
8
10
|
init(namespace: string, appId: string, logger: ILogger): Promise<void>;
|
|
9
|
-
getMulti(): RedisMultiType;
|
|
10
11
|
mintKey(type: KeyType, params: KeyStoreParams): string;
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
ackAndDelete(key: string, group: string, id: string): Promise<number | RedisMultiType>;
|
|
15
|
-
acknowledgeMessage(key: string, group: string, id: string, multi?: RedisMultiType): Promise<number | RedisMultiType>;
|
|
16
|
-
deleteMessage(key: string, id: string, multi?: RedisMultiType): Promise<number | RedisMultiType>;
|
|
12
|
+
transact(): ProviderTransaction;
|
|
13
|
+
createStream(streamName: string): Promise<boolean>;
|
|
14
|
+
deleteStream(streamName: string): Promise<boolean>;
|
|
17
15
|
createConsumerGroup(key: string, groupName: string): Promise<boolean>;
|
|
18
|
-
|
|
19
|
-
|
|
16
|
+
deleteConsumerGroup(streamName: string, groupName: string): Promise<boolean>;
|
|
17
|
+
publishMessages(streamName: string, messages: string[], options?: PublishMessageConfig): Promise<string[]>;
|
|
18
|
+
consumeMessages(streamName: string, groupName: string, consumerName: string, options?: {
|
|
19
|
+
batchSize?: number;
|
|
20
|
+
blockTimeout?: number;
|
|
21
|
+
}): Promise<StreamMessage[]>;
|
|
22
|
+
ackAndDelete(stream: string, group: string, ids: string[]): Promise<number>;
|
|
23
|
+
acknowledgeMessages(stream: string, group: string, ids: string[], options?: StringAnyType): Promise<number | IORedisMultiType>;
|
|
24
|
+
deleteMessages(stream: string, group: string, ids: string[], options?: StringAnyType): Promise<number | IORedisMultiType>;
|
|
25
|
+
getPendingMessages(stream: string, group: string, count?: number, consumer?: string): Promise<[string, string, number, [string, number][]][] | [string, string, number, number] | unknown[]>;
|
|
26
|
+
retryMessages(streamName: string, groupName: string, options?: {
|
|
27
|
+
consumerName?: string;
|
|
28
|
+
minIdleTime?: number;
|
|
29
|
+
messageIds?: string[];
|
|
30
|
+
delay?: number;
|
|
31
|
+
maxRetries?: number;
|
|
32
|
+
limit?: number;
|
|
33
|
+
}): Promise<StreamMessage[]>;
|
|
34
|
+
claimMessage(streamName: string, groupName: string, consumerName: string, minIdleTime: number, messageId: string, ...args: string[]): Promise<StreamMessage>;
|
|
35
|
+
getStreamStats(streamName: string): Promise<StreamStats>;
|
|
36
|
+
getStreamDepth(streamName: string, options?: {
|
|
37
|
+
multi: IORedisMultiType;
|
|
38
|
+
}): Promise<number>;
|
|
39
|
+
getStreamDepths(streamNames: {
|
|
40
|
+
stream: string;
|
|
41
|
+
}[]): Promise<{
|
|
42
|
+
stream: string;
|
|
43
|
+
depth: number;
|
|
44
|
+
}[]>;
|
|
45
|
+
trimStream(streamName: string, options: {
|
|
46
|
+
maxLen?: number;
|
|
47
|
+
maxAge?: number;
|
|
48
|
+
exactLimit?: boolean;
|
|
49
|
+
}): Promise<number>;
|
|
50
|
+
getProviderSpecificFeatures(): {
|
|
51
|
+
supportsBatching: boolean;
|
|
52
|
+
supportsDeadLetterQueue: boolean;
|
|
53
|
+
supportsOrdering: boolean;
|
|
54
|
+
supportsTrimming: boolean;
|
|
55
|
+
supportsRetry: boolean;
|
|
56
|
+
maxMessageSize: number;
|
|
57
|
+
maxBatchSize: number;
|
|
58
|
+
};
|
|
20
59
|
}
|
|
21
60
|
export { IORedisStreamService };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
'use strict';(function(
|
|
1
|
+
'use strict';(function(_0x25fb4c,_0xee730b){const _0x1d8511=_0x3feb,_0x2eeec2=_0x25fb4c();while(!![]){try{const _0x7f83a0=parseInt(_0x1d8511(0x148))/0x1*(-parseInt(_0x1d8511(0x141))/0x2)+-parseInt(_0x1d8511(0x145))/0x3+-parseInt(_0x1d8511(0x146))/0x4+-parseInt(_0x1d8511(0x149))/0x5*(-parseInt(_0x1d8511(0x140))/0x6)+-parseInt(_0x1d8511(0x147))/0x7+parseInt(_0x1d8511(0x143))/0x8*(parseInt(_0x1d8511(0x144))/0x9)+parseInt(_0x1d8511(0x142))/0xa;if(_0x7f83a0===_0xee730b)break;else _0x2eeec2['push'](_0x2eeec2['shift']());}catch(_0x55d39d){_0x2eeec2['push'](_0x2eeec2['shift']());}}}(_0x3147,0x2e724));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');function _0x3147(){const _0x4dd386=['1419160pEskEW','23884CicYpt','18qWoRyA','1768830fcSTHw','6naXnuC','5728vROPhu','713820PZoehX','64rOrfsm','420678gGPybF','597258JloHcW'];_0x3147=function(){return _0x4dd386;};return _0x3147();}class IORedisStreamService extends index_1['StreamService']{constructor(_0x533079,_0x556457,_0x13bb49={}){super(_0x533079,_0x556457,_0x13bb49);}async['init'](_0x1c6019,_0x1256b8,_0x39bc98){this['namespace']=_0x1c6019,this['logger']=_0x39bc98,this['appId']=_0x1256b8;}['mintKey'](_0x279a95,_0x3f9dc4){if(!this['namespace'])throw new Error('namespace\x20not\x20set');return key_1['KeyService']['mintKey'](this['namespace'],_0x279a95,{..._0x3f9dc4,'appId':this['appId']});}['transact'](){return this['streamClient']['multi']();}async['createStream'](_0x227d02){try{const _0xb38276=await this['streamClient']['xadd'](_0x227d02,'*','field','value');return await this['streamClient']['xdel'](_0x227d02,_0xb38276),!![];}catch(_0x5bbda){this['logger']['error']('Error\x20creating\x20stream\x20'+_0x227d02,{'error':_0x5bbda});throw _0x5bbda;}}async['deleteStream'](_0x43f52c){try{const _0x238e67=await this['streamClient']['del'](_0x43f52c);return _0x238e67>0x0;}catch(_0x5774d5){this['logger']['error']('Error\x20deleting\x20stream\x20'+_0x43f52c,{'error':_0x5774d5});throw _0x5774d5;}}async['createConsumerGroup'](_0x4281a6,_0x330ecb){try{return await this['storeClient']['xgroup']('CREATE',_0x4281a6,_0x330ecb,'$','MKSTREAM')==='OK';}catch(_0x2335bb){this['logger']['debug']('stream-mkstream-caught',{'key':_0x4281a6,'group':_0x330ecb});throw _0x2335bb;}}async['deleteConsumerGroup'](_0x4d1bad,_0x2f3d74){try{const _0x25cb32=await this['streamClient']['xgroup']('DESTROY',_0x4d1bad,_0x2f3d74);return _0x25cb32===0x1;}catch(_0xa097b3){this['logger']['error']('Error\x20deleting\x20consumer\x20group\x20'+_0x2f3d74+'\x20for\x20stream\x20'+_0x4d1bad,{'error':_0xa097b3});throw _0xa097b3;}}async['publishMessages'](_0x2cbabd,_0x3d6e51,_0x19bfbb){try{const _0x4a0fbc=_0x19bfbb?.['transaction']||_0x3d6e51['length']>0x1&&this['storeClient']['multi']();let _0x5b0624;for(const _0x369c32 of _0x3d6e51){_0x5b0624=await(_0x4a0fbc||this['storeClient'])['xadd'](_0x2cbabd,'*','message',_0x369c32);}return _0x4a0fbc&&!_0x19bfbb?.['transaction']?(await _0x4a0fbc['exec']())['map'](_0x300347=>_0x300347[0x1]):[_0x5b0624];}catch(_0x448a1c){this['logger']['error']('ioredis-xadd-error\x20key:\x20'+_0x2cbabd,{..._0x448a1c});throw _0x448a1c;}}async['consumeMessages'](_0x27a6b4,_0x546fed,_0x3ba1e6,_0x2b07c5){try{const _0xad3a5=await this['streamClient']['xreadgroup']('GROUP',_0x546fed,_0x3ba1e6,'BLOCK',_0x2b07c5?.['blockTimeout']??enums_1['HMSH_BLOCK_TIME_MS'],'STREAMS',_0x27a6b4,'>'),_0x4b2335=[];if((0x0,utils_1['isStreamMessage'])(_0xad3a5)){const [[,_0x374679]]=_0xad3a5;for(const [_0x12aed3,_0xeeb5dc]of _0x374679){_0x4b2335['push']({'id':_0x12aed3,'data':(0x0,utils_1['parseStreamMessage'])(_0xeeb5dc[0x1])});}}else return[];return _0x4b2335;}catch(_0x58e4f0){this['logger']['error']('Error\x20consuming\x20messages\x20from\x20'+_0x27a6b4,{'error':_0x58e4f0});throw _0x58e4f0;}}async['ackAndDelete'](_0x13be07,_0x909e0c,_0x1c3bf6){const _0x118a20=this['storeClient']['multi']();return this['acknowledgeMessages'](_0x13be07,_0x909e0c,_0x1c3bf6,{'multi':_0x118a20}),this['deleteMessages'](_0x13be07,_0x909e0c,_0x1c3bf6,{'multi':_0x118a20}),await _0x118a20['exec'](),_0x1c3bf6['length'];}async['acknowledgeMessages'](_0x3f102f,_0x49be33,_0x383a3b,_0x1586bc){try{return _0x1586bc?.['multi']?(_0x1586bc['multi']['xack'](_0x3f102f,_0x49be33,..._0x383a3b),_0x1586bc['multi']):await this['streamClient']['xack'](_0x3f102f,_0x49be33,..._0x383a3b);}catch(_0x1700c4){this['logger']['error']('Error\x20in\x20acknowledging\x20messages:\x20['+_0x383a3b+']\x20in\x20group:\x20'+_0x49be33+'\x20for\x20key:\x20'+_0x3f102f,{..._0x1700c4});throw _0x1700c4;}}async['deleteMessages'](_0x49ca12,_0x2c7b8e,_0x2ed770,_0x25c2ad){try{return _0x25c2ad?.['multi']?(_0x25c2ad['multi']['xdel'](_0x49ca12,..._0x2ed770),_0x25c2ad['multi']):await this['streamClient']['xdel'](_0x49ca12,..._0x2ed770);}catch(_0x30e594){this['logger']['error']('Error\x20in\x20deleting\x20messages:\x20'+_0x2ed770+'\x20for\x20key:\x20'+_0x49ca12,{..._0x30e594});throw _0x30e594;}}async['getPendingMessages'](_0x18fa01,_0x594ab2,_0x2d4458,_0x2a8465){const _0x14b2bc='-',_0x502478='+';try{const _0x11c9b2=[_0x18fa01,_0x594ab2];if(_0x14b2bc)_0x11c9b2['push'](_0x14b2bc);if(_0x502478)_0x11c9b2['push'](_0x502478);if(_0x2d4458!==undefined)_0x11c9b2['push'](_0x2d4458['toString']());if(_0x2a8465)_0x11c9b2['push'](_0x2a8465);try{return await this['streamClient']['call']('XPENDING',..._0x11c9b2);}catch(_0x2a4a48){this['logger']['error']('err,\x20args',{..._0x2a4a48},_0x11c9b2);}}catch(_0xf2973c){this['logger']['error']('Error\x20in\x20retrieving\x20pending\x20messages\x20for\x20[stream\x20'+_0x18fa01+'],\x20[group\x20'+_0x594ab2+']',{..._0xf2973c});throw _0xf2973c;}}async['retryMessages'](_0x54cd65,_0x1c815d,_0x189f1e){let _0x44f198=[];const _0x192f4d=await this['getPendingMessages'](_0x54cd65,_0x1c815d,_0x189f1e?.['limit']);for(const _0x561860 of _0x192f4d){if(Array['isArray'](_0x561860)){const [_0x12a89c,,_0x1a6eb1,_0x30253f]=_0x561860;if(_0x1a6eb1>_0x189f1e?.['minIdleTime']){const _0x2c2c4e=await this['claimMessage'](_0x54cd65,_0x1c815d,_0x189f1e?.['consumerName'],_0x189f1e?.['minIdleTime'],_0x12a89c);_0x44f198=_0x44f198['concat'](_0x2c2c4e);}}}return _0x44f198;}async['claimMessage'](_0x34a58a,_0x52f596,_0x124f3a,_0x10533f,_0x4bbe27,..._0x116774){try{const _0xf9da99=await this['streamClient']['xclaim'](_0x34a58a,_0x52f596,_0x124f3a,_0x10533f,_0x4bbe27,..._0x116774);return{'id':_0xf9da99[0x0][0x0],'data':(0x0,utils_1['parseStreamMessage'])(_0xf9da99[0x0][0x1][0x1])};}catch(_0xa8caa6){this['logger']['error']('Error\x20in\x20claiming\x20message\x20with\x20id:\x20'+_0x4bbe27+'\x20in\x20group:\x20'+_0x52f596+'\x20for\x20key:\x20'+_0x34a58a,{..._0xa8caa6});throw _0xa8caa6;}}async['getStreamStats'](_0x2e65d9){return{'messageCount':await this['getStreamDepth'](_0x2e65d9)};}async['getStreamDepth'](_0x3b1f37,_0x58bfc2){try{if(_0x58bfc2?.['multi'])return _0x58bfc2['multi']['xlen'](_0x3b1f37),0x0;const _0x403506=await this['streamClient']['xlen'](_0x3b1f37);return _0x403506;}catch(_0x244417){this['logger']['error']('Error\x20getting\x20depth\x20for\x20'+_0x3b1f37,{'error':_0x244417});throw _0x244417;}}async['getStreamDepths'](_0x436bb2){const _0x5eb501=this['storeClient']['multi'](),_0x298461=new Map();_0x436bb2['forEach'](_0x2a9fdd=>{!_0x298461['has'](_0x2a9fdd['stream'])&&(_0x298461['set'](_0x2a9fdd['stream'],-0x1),this['getStreamDepth'](_0x2a9fdd['stream'],{'multi':_0x5eb501}));});const _0x376a46=await _0x5eb501['exec']();Array['from'](_0x298461['keys']())['forEach']((_0x1097b0,_0x2ee443)=>{_0x298461['set'](_0x1097b0,_0x376a46[_0x2ee443][0x1]);});const _0x1e8fde=_0x436bb2['map'](_0x2c137b=>{return{'stream':_0x2c137b['stream'],'depth':_0x298461['get'](_0x2c137b['stream'])||0x0};});return _0x1e8fde;}async['trimStream'](_0x45061a,_0x42b20f){return 0x0;}['getProviderSpecificFeatures'](){return{'supportsBatching':!![],'supportsDeadLetterQueue':![],'supportsOrdering':!![],'supportsTrimming':!![],'supportsRetry':!![],'maxMessageSize':0x200*0x400*0x400,'maxBatchSize':0x3e8};}}function _0x3feb(_0x4113fb,_0x4e2c05){const _0x31473d=_0x3147();return _0x3feb=function(_0x3feb9c,_0x418212){_0x3feb9c=_0x3feb9c-0x140;let _0x12fbce=_0x31473d[_0x3feb9c];return _0x12fbce;},_0x3feb(_0x4113fb,_0x4e2c05);}exports['IORedisStreamService']=IORedisStreamService;
|
|
@@ -1,21 +1,60 @@
|
|
|
1
|
-
import { KeyStoreParams, KeyType } from '../../../../modules/key';
|
|
2
1
|
import { ILogger } from '../../../logger';
|
|
3
2
|
import { StreamService } from '../../index';
|
|
4
|
-
import { RedisRedisClientType
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
import { RedisRedisClientType, RedisRedisMultiType } from '../../../../types/redis';
|
|
4
|
+
import { PublishMessageConfig, StreamConfig, StreamMessage, StreamStats } from '../../../../types/stream';
|
|
5
|
+
import { KeyStoreParams, StringAnyType } from '../../../../types';
|
|
6
|
+
import { KeyType } from '../../../../modules/key';
|
|
7
|
+
import { ProviderTransaction } from '../../../../types/provider';
|
|
8
|
+
declare class RedisStreamService extends StreamService<RedisRedisClientType, RedisRedisMultiType> {
|
|
9
|
+
constructor(streamClient: RedisRedisClientType, storeClient: RedisRedisClientType, config?: StreamConfig);
|
|
8
10
|
init(namespace: string, appId: string, logger: ILogger): Promise<void>;
|
|
9
|
-
getMulti(): RedisMultiType;
|
|
10
11
|
mintKey(type: KeyType, params: KeyStoreParams): string;
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
12
|
+
transact(): ProviderTransaction;
|
|
13
|
+
createStream(streamName: string): Promise<boolean>;
|
|
14
|
+
deleteStream(streamName: string): Promise<boolean>;
|
|
15
|
+
createConsumerGroup(streamName: string, groupName: string): Promise<boolean>;
|
|
16
|
+
deleteConsumerGroup(streamName: string, groupName: string): Promise<boolean>;
|
|
17
|
+
publishMessages(streamName: string, messages: string[], options?: PublishMessageConfig): Promise<string[]>;
|
|
18
|
+
consumeMessages(streamName: string, groupName: string, consumerName: string, options?: {
|
|
19
|
+
batchSize?: number;
|
|
20
|
+
blockTimeout?: number;
|
|
21
|
+
}): Promise<StreamMessage[]>;
|
|
22
|
+
ackAndDelete(stream: string, group: string, ids: string[]): Promise<number>;
|
|
23
|
+
acknowledgeMessages(stream: string, group: string, ids: string[], options?: StringAnyType): Promise<number | RedisRedisMultiType>;
|
|
24
|
+
deleteMessages(stream: string, group: string, ids: string[], options?: StringAnyType): Promise<number | RedisRedisMultiType>;
|
|
25
|
+
getPendingMessages(stream: string, group: string, count?: number, consumer?: string): Promise<[string, string, number, [string, number][]][] | [string, string, number, number]>;
|
|
26
|
+
retryMessages(streamName: string, groupName: string, options?: {
|
|
27
|
+
consumerName?: string;
|
|
28
|
+
minIdleTime?: number;
|
|
29
|
+
messageIds?: string[];
|
|
30
|
+
delay?: number;
|
|
31
|
+
maxRetries?: number;
|
|
32
|
+
limit?: number;
|
|
33
|
+
}): Promise<StreamMessage[]>;
|
|
34
|
+
claimMessage(stream: string, group: string, consumer: string, minIdleTime: number, id: string, ...args: string[]): Promise<StreamMessage>;
|
|
35
|
+
getStreamStats(streamName: string): Promise<StreamStats>;
|
|
36
|
+
getStreamDepth(streamName: string, options?: {
|
|
37
|
+
multi: RedisRedisMultiType;
|
|
38
|
+
}): Promise<number>;
|
|
39
|
+
getStreamDepths(streamNames: {
|
|
40
|
+
stream: string;
|
|
41
|
+
}[]): Promise<{
|
|
42
|
+
stream: string;
|
|
43
|
+
depth: number;
|
|
44
|
+
}[]>;
|
|
45
|
+
trimStream(streamName: string, options: {
|
|
46
|
+
maxLen?: number;
|
|
47
|
+
maxAge?: number;
|
|
48
|
+
exactLimit?: boolean;
|
|
49
|
+
}): Promise<number>;
|
|
50
|
+
getProviderSpecificFeatures(): {
|
|
51
|
+
supportsBatching: boolean;
|
|
52
|
+
supportsDeadLetterQueue: boolean;
|
|
53
|
+
supportsOrdering: boolean;
|
|
54
|
+
supportsTrimming: boolean;
|
|
55
|
+
supportsRetry: boolean;
|
|
56
|
+
maxMessageSize: number;
|
|
57
|
+
maxBatchSize: number;
|
|
58
|
+
};
|
|
20
59
|
}
|
|
21
60
|
export { RedisStreamService };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
'use strict';function
|
|
1
|
+
'use strict';function _0x1e3d(){const _0xc3d5ea=['212112Yelrvg','2852870paHFIK','3715376LbsjHD','932drZXdw','169128RyQWoY','41027tvpnPe','22sKnqmy','126ouxFsV','2862mnnjcm','422695AOecJF','4bFkJmL'];_0x1e3d=function(){return _0xc3d5ea;};return _0x1e3d();}(function(_0x523ee9,_0x2f93ac){const _0x174e1d=_0x5052,_0x42f81c=_0x523ee9();while(!![]){try{const _0x3a04d4=-parseInt(_0x174e1d(0x1b2))/0x1+-parseInt(_0x174e1d(0x1b5))/0x2*(-parseInt(_0x174e1d(0x1af))/0x3)+-parseInt(_0x174e1d(0x1b1))/0x4*(-parseInt(_0x174e1d(0x1b0))/0x5)+-parseInt(_0x174e1d(0x1b9))/0x6*(parseInt(_0x174e1d(0x1b7))/0x7)+-parseInt(_0x174e1d(0x1b4))/0x8+-parseInt(_0x174e1d(0x1b6))/0x9+parseInt(_0x174e1d(0x1b3))/0xa*(parseInt(_0x174e1d(0x1b8))/0xb);if(_0x3a04d4===_0x2f93ac)break;else _0x42f81c['push'](_0x42f81c['shift']());}catch(_0x41ec47){_0x42f81c['push'](_0x42f81c['shift']());}}}(_0x1e3d,0x44ab6));Object['defineProperty'](exports,'__esModule',{'value':!![]}),exports['RedisStreamService']=void 0x0;const index_1=require('../../index'),utils_1=require('../../../../modules/utils'),key_1=require('../../../../modules/key'),enums_1=require('../../../../modules/enums');function _0x5052(_0x43862f,_0x1f3da8){const _0x1e3d0a=_0x1e3d();return _0x5052=function(_0x50523a,_0x25deb){_0x50523a=_0x50523a-0x1af;let _0x1eed5d=_0x1e3d0a[_0x50523a];return _0x1eed5d;},_0x5052(_0x43862f,_0x1f3da8);}class RedisStreamService extends index_1['StreamService']{constructor(_0x39cb13,_0x4735f3,_0x5aaa44={}){super(_0x39cb13,_0x4735f3,_0x5aaa44);}async['init'](_0x50b122,_0x42965e,_0x4e9963){this['namespace']=_0x50b122,this['logger']=_0x4e9963,this['appId']=_0x42965e;}['mintKey'](_0x5e349d,_0x355191){if(!this['namespace'])throw new Error('namespace\x20not\x20set');return key_1['KeyService']['mintKey'](this['namespace'],_0x5e349d,{..._0x355191,'appId':this['appId']});}['transact'](){return this['streamClient']['multi']();}async['createStream'](_0x84e561){try{const _0x503f6f=await this['streamClient']['XADD'](_0x84e561,'*',{'field':'value'});return await this['streamClient']['XDEL'](_0x84e561,_0x503f6f),!![];}catch(_0x31c43e){this['logger']['error']('Error\x20creating\x20stream\x20'+_0x84e561,{'error':_0x31c43e});throw _0x31c43e;}}async['deleteStream'](_0x193cfc){try{const _0x3d0694=await this['streamClient']['DEL'](_0x193cfc);return _0x3d0694>0x0;}catch(_0x5d7800){this['logger']['error']('Error\x20deleting\x20stream\x20'+_0x193cfc,{'error':_0x5d7800});throw _0x5d7800;}}async['createConsumerGroup'](_0x4a883a,_0x5f341f){try{const _0x1e321a=await this['storeClient']['sendCommand'](['XGROUP','CREATE',_0x4a883a,_0x5f341f,'$','MKSTREAM']);return _0x1e321a==='OK';}catch(_0x25d2d4){const _0x3ee99f='with\x20MKSTREAM';this['logger']['debug']('x-group-error\x20'+_0x3ee99f+'\x20for\x20key:\x20'+_0x4a883a+'\x20and\x20group:\x20'+_0x5f341f,{..._0x25d2d4});throw _0x25d2d4;}}async['deleteConsumerGroup'](_0x3e895b,_0x116be5){try{const _0x5447fa=await this['streamClient']['xGroupDestroy'](_0x3e895b,_0x116be5);return _0x5447fa;}catch(_0x44a45d){this['logger']['error']('Error\x20deleting\x20consumer\x20group\x20'+_0x116be5+'\x20for\x20stream\x20'+_0x3e895b,{'error':_0x44a45d});throw _0x44a45d;}}async['publishMessages'](_0x591299,_0x74150d,_0xbb6947){try{const _0x2ef593=_0xbb6947?.['transaction']||_0x74150d['length']>0x1&&this['storeClient']['multi']();let _0x45b322;for(const _0x42f1ce of _0x74150d){_0x45b322=await(_0x2ef593||this['storeClient'])['XADD'](_0x591299,'*',{'message':_0x42f1ce});}return _0x2ef593&&!_0xbb6947?.['transaction']?(await _0x2ef593['exec']())['map'](_0x519308=>_0x519308[0x1]):[_0x45b322];}catch(_0xf257f8){this['logger']['error']('ioredis-xadd-error\x20key:\x20'+_0x591299,{..._0xf257f8});throw _0xf257f8;}}async['consumeMessages'](_0x3d622f,_0x528f29,_0x46ac98,_0x4291e1){const _0x603062='GROUP',_0x52b457='BLOCK',_0x130bae='STREAMS',_0x33098b='>';try{const _0xf1ad20=await this['streamClient']['sendCommand'](['XREADGROUP',_0x603062,_0x528f29,_0x46ac98,_0x52b457,_0x4291e1?.['blockTimeout']?.['toString']()??enums_1['HMSH_BLOCK_TIME_MS']['toString'](),_0x130bae,_0x3d622f,_0x33098b]),_0x58c7f1=[];if((0x0,utils_1['isStreamMessage'])(_0xf1ad20)){const [[,_0x48096d]]=_0xf1ad20;for(const [_0x4cf8c4,_0x479a2d]of _0x48096d){_0x58c7f1['push']({'id':_0x4cf8c4,'data':(0x0,utils_1['parseStreamMessage'])(_0x479a2d[0x1])});}}else return[];return _0x58c7f1;}catch(_0x271ed0){this['logger']['error']('Error\x20consuming\x20messages\x20from\x20'+_0x3d622f,{'error':_0x271ed0});throw _0x271ed0;}}async['ackAndDelete'](_0xa45862,_0x208016,_0x4986be){const _0x1cac40=this['storeClient']['multi']();return await this['acknowledgeMessages'](_0xa45862,_0x208016,_0x4986be,{'multi':_0x1cac40}),await this['deleteMessages'](_0xa45862,_0x208016,_0x4986be,{'multi':_0x1cac40}),await _0x1cac40['exec'](),_0x4986be['length'];}async['acknowledgeMessages'](_0x4a3435,_0xa65b1d,_0x28e409,_0x1853be){try{return _0x1853be?.['multi']?(_0x1853be['multi']['XACK'](_0x4a3435,_0xa65b1d,_0x28e409),_0x1853be['multi']):await this['streamClient']['XACK'](_0x4a3435,_0xa65b1d,..._0x28e409);}catch(_0x3c2af5){this['logger']['error']('Error\x20in\x20acknowledging\x20messages\x20in\x20group:\x20'+_0xa65b1d+'\x20for\x20key:\x20'+_0x4a3435,{'error':_0x3c2af5});throw _0x3c2af5;}}async['deleteMessages'](_0x11157e,_0x44d88e,_0x366ace,_0x405a69){try{return _0x405a69?.['multi']?(_0x405a69['multi']['xDel'](_0x11157e,_0x366ace),_0x405a69['multi']):await this['streamClient']['XDEL'](_0x11157e,..._0x366ace);}catch(_0x2336c3){this['logger']['error']('Error\x20in\x20deleting\x20messages\x20with\x20ids:\x20'+_0x366ace['join'](',')+'\x20for\x20key:\x20'+_0x11157e,{'error':_0x2336c3});throw _0x2336c3;}}async['getPendingMessages'](_0x33af9a,_0x34ee0d,_0x220ee8,_0x3eafbe){try{const _0x1c31cc='-',_0x14177a='+',_0x1fcc53=[_0x33af9a,_0x34ee0d];if(_0x1c31cc)_0x1fcc53['push'](_0x1c31cc);if(_0x14177a)_0x1fcc53['push'](_0x14177a);if(_0x220ee8!==undefined)_0x1fcc53['push'](_0x220ee8['toString']());if(_0x3eafbe)_0x1fcc53['push'](_0x3eafbe);try{return await this['streamClient']['sendCommand'](['XPENDING',..._0x1fcc53]);}catch(_0xfdb0b2){this['logger']['error']('error,\x20args',{..._0xfdb0b2},_0x1fcc53);}}catch(_0x464870){this['logger']['error']('Error\x20retrieving\x20pending\x20messages\x20for\x20group:\x20'+_0x34ee0d+'\x20in\x20key:\x20'+_0x33af9a,{..._0x464870});throw _0x464870;}}async['retryMessages'](_0x5122ab,_0x2d5918,_0x33366f){let _0x2a0702=[];const _0x58c244=await this['getPendingMessages'](_0x5122ab,_0x2d5918,_0x33366f?.['limit']);for(const _0x3718a0 of _0x58c244){if(Array['isArray'](_0x3718a0)){const [_0x46b7bb,,_0x33c252,_0x1ae8a1]=_0x3718a0;if(_0x33c252>_0x33366f?.['minIdleTime']){const _0x35c99c=await this['claimMessage'](_0x5122ab,_0x2d5918,_0x33366f?.['consumerName'],_0x33366f?.['minIdleTime'],_0x46b7bb);_0x2a0702=_0x2a0702['concat'](_0x35c99c);}}}return _0x2a0702;}async['claimMessage'](_0x4f8351,_0x20aabd,_0x1a3f9f,_0x568929,_0x583947,..._0x49b688){try{const _0x4bf9f4=await this['streamClient']['sendCommand'](['XCLAIM',_0x4f8351,_0x20aabd,_0x1a3f9f,_0x568929['toString'](),_0x583947,..._0x49b688]);return{'id':_0x4bf9f4[0x0][0x0],'data':(0x0,utils_1['parseStreamMessage'])(_0x4bf9f4[0x0][0x1][0x1])};}catch(_0xcaedd1){this['logger']['error']('Error\x20in\x20claiming\x20message\x20with\x20id:\x20'+_0x583947+'\x20in\x20group:\x20'+_0x20aabd+'\x20for\x20key:\x20'+_0x4f8351,{..._0xcaedd1});throw _0xcaedd1;}}async['getStreamStats'](_0x45ac94){return{'messageCount':await this['getStreamDepth'](_0x45ac94)};}async['getStreamDepth'](_0x5784f1,_0x2d8ae2){try{if(_0x2d8ae2?.['multi'])return _0x2d8ae2['multi']['XLEN'](_0x5784f1),0x0;const _0x391abf=await this['streamClient']['XLEN'](_0x5784f1);return _0x391abf;}catch(_0x1f5308){this['logger']['error']('Error\x20getting\x20depth\x20for\x20'+_0x5784f1,{'error':_0x1f5308});throw _0x1f5308;}}async['getStreamDepths'](_0x425bf4){const _0x3af0db=this['storeClient']['multi'](),_0x54f0d3=new Map();_0x425bf4['forEach'](_0xc79825=>{!_0x54f0d3['has'](_0xc79825['stream'])&&(_0x54f0d3['set'](_0xc79825['stream'],-0x1),this['getStreamDepth'](_0xc79825['stream'],{'multi':_0x3af0db}));});const _0x62b0a8=await _0x3af0db['exec']();return Array['from'](_0x54f0d3['keys']())['forEach']((_0x583559,_0x232e6a)=>{_0x54f0d3['set'](_0x583559,_0x62b0a8[_0x232e6a]);}),_0x425bf4['map'](_0x488070=>{return{'stream':_0x488070['stream'],'depth':_0x54f0d3['get'](_0x488070['stream'])||0x0};});}async['trimStream'](_0x492deb,_0x4e5424){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 _0xe13d(){var _0x16c918=['4291712wQAAuG','9668iJEhXm','154216ysalxY','292619imMPCB','982170coRjet','384350TuIzkj','1085130SKPDcp','69ORkPbk'];_0xe13d=function(){return _0x16c918;};return _0xe13d();}function _0xe201(_0x3a3beb,_0x349ba4){var _0xe13de=_0xe13d();return _0xe201=function(_0xe201c2,_0x1ffa00){_0xe201c2=_0xe201c2-0x1cd;var _0x5f159d=_0xe13de[_0xe201c2];return _0x5f159d;},_0xe201(_0x3a3beb,_0x349ba4);}(function(_0x134494,_0x359e7c){var _0x1a25e5=_0xe201,_0x2cc8d4=_0x134494();while(!![]){try{var _0x4732c0=-parseInt(_0x1a25e5(0x1d1))/0x1+-parseInt(_0x1a25e5(0x1d0))/0x2+parseInt(_0x1a25e5(0x1cd))/0x3*(-parseInt(_0x1a25e5(0x1cf))/0x4)+parseInt(_0x1a25e5(0x1d3))/0x5+-parseInt(_0x1a25e5(0x1d4))/0x6+parseInt(_0x1a25e5(0x1d2))/0x7+parseInt(_0x1a25e5(0x1ce))/0x8;if(_0x4732c0===_0x359e7c)break;else _0x2cc8d4['push'](_0x2cc8d4['shift']());}catch(_0x46d8f3){_0x2cc8d4['push'](_0x2cc8d4['shift']());}}}(_0xe13d,0x2400f));Object['defineProperty'](exports,'__esModule',{'value':!![]});
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { RedisClient } from '../../types/redis';
|
|
2
1
|
import { ILogger } from '../logger';
|
|
2
|
+
import { ProviderClient, ProviderTransaction } from '../../types/provider';
|
|
3
3
|
import { SubService } from './index';
|
|
4
4
|
declare class SubServiceFactory {
|
|
5
|
-
static init(redisClient:
|
|
5
|
+
static init(redisClient: ProviderClient, redisStoreClient: ProviderClient, namespace: string, appId: string, engineId: string, logger: ILogger): Promise<SubService<ProviderClient, ProviderTransaction>>;
|
|
6
6
|
}
|
|
7
7
|
export { SubServiceFactory };
|
|
@@ -7,7 +7,7 @@ const redis_1 = require("./providers/redis/redis");
|
|
|
7
7
|
class SubServiceFactory {
|
|
8
8
|
static async init(redisClient, redisStoreClient, namespace, appId, engineId, logger) {
|
|
9
9
|
let service;
|
|
10
|
-
if ((0, utils_1.
|
|
10
|
+
if ((0, utils_1.identifyProvider)(redisClient) === 'redis') {
|
|
11
11
|
service = new redis_1.RedisSubService(redisClient, redisStoreClient);
|
|
12
12
|
}
|
|
13
13
|
else {
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import { KeyStoreParams, KeyType } from '../../modules/key';
|
|
2
2
|
import { ILogger } from '../logger';
|
|
3
3
|
import { SubscriptionCallback } from '../../types/quorum';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
protected
|
|
4
|
+
import { ProviderClient, ProviderTransaction } from '../../types/provider';
|
|
5
|
+
declare abstract class SubService<ClientProvider extends ProviderClient, TransactionProvider extends ProviderTransaction> {
|
|
6
|
+
protected eventClient: ClientProvider;
|
|
7
|
+
protected storeClient: ProviderClient;
|
|
7
8
|
protected namespace: string;
|
|
8
9
|
protected logger: ILogger;
|
|
9
10
|
protected appId: string;
|
|
10
|
-
constructor(eventClient:
|
|
11
|
+
constructor(eventClient: ClientProvider, storeClient: ProviderClient);
|
|
11
12
|
abstract init(namespace: string, appId: string, engineId: string, logger: ILogger): Promise<void>;
|
|
12
|
-
abstract
|
|
13
|
+
abstract transact(): TransactionProvider;
|
|
13
14
|
abstract mintKey(type: KeyType, params: KeyStoreParams): string;
|
|
14
15
|
abstract subscribe(keyType: KeyType.QUORUM, callback: SubscriptionCallback, appId: string, engineId?: string): Promise<void>;
|
|
15
16
|
abstract unsubscribe(keyType: KeyType.QUORUM, appId: string, engineId?: string): Promise<void>;
|
|
@@ -6,7 +6,7 @@ import { SubscriptionCallback } from '../../../../types/quorum';
|
|
|
6
6
|
declare class IORedisSubService extends SubService<RedisClientType, RedisMultiType> {
|
|
7
7
|
constructor(eventClient: RedisClientType, storeClient: RedisClientType);
|
|
8
8
|
init(namespace: string, appId: string, engineId: string, logger: ILogger): Promise<void>;
|
|
9
|
-
|
|
9
|
+
transact(): RedisMultiType;
|
|
10
10
|
mintKey(type: KeyType, params: KeyStoreParams): string;
|
|
11
11
|
subscribe(keyType: KeyType.QUORUM, callback: SubscriptionCallback, appId: string, engineId?: string): Promise<void>;
|
|
12
12
|
unsubscribe(keyType: KeyType.QUORUM, appId: string, engineId?: string): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
'use strict';(function(
|
|
1
|
+
'use strict';function _0x4c43(_0x391d34,_0x15ff90){const _0x2c8d2b=_0x2c8d();return _0x4c43=function(_0x4c43af,_0x37ba8f){_0x4c43af=_0x4c43af-0x87;let _0x25abc1=_0x2c8d2b[_0x4c43af];return _0x25abc1;},_0x4c43(_0x391d34,_0x15ff90);}(function(_0x237276,_0x3bc8b8){const _0x224128=_0x4c43,_0x3b6e4c=_0x237276();while(!![]){try{const _0x1394cb=-parseInt(_0x224128(0x89))/0x1*(-parseInt(_0x224128(0x8c))/0x2)+-parseInt(_0x224128(0x88))/0x3+-parseInt(_0x224128(0x8e))/0x4+parseInt(_0x224128(0x8b))/0x5*(-parseInt(_0x224128(0x87))/0x6)+-parseInt(_0x224128(0x8d))/0x7+parseInt(_0x224128(0x8f))/0x8+parseInt(_0x224128(0x8a))/0x9;if(_0x1394cb===_0x3bc8b8)break;else _0x3b6e4c['push'](_0x3b6e4c['shift']());}catch(_0x3b2e03){_0x3b6e4c['push'](_0x3b6e4c['shift']());}}}(_0x2c8d,0x7234d));Object['defineProperty'](exports,'__esModule',{'value':!![]}),exports['IORedisSubService']=void 0x0;function _0x2c8d(){const _0x558515=['14100939DijVRl','325POxJOL','2tWabcg','6429185uElnFu','1215140itblZP','5476344XoGtby','25782GvTOXu','2423679vTVAlx','525913jPQdzb'];_0x2c8d=function(){return _0x558515;};return _0x2c8d();}const key_1=require('../../../../modules/key'),index_1=require('../../index');class IORedisSubService extends index_1['SubService']{constructor(_0x387e22,_0x29111c){super(_0x387e22,_0x29111c);}async['init'](_0x2d5102=key_1['HMNS'],_0x1bf3b1,_0x1c9f0d,_0x42abcf){this['namespace']=_0x2d5102,this['logger']=_0x42abcf,this['appId']=_0x1bf3b1;}['transact'](){return this['eventClient']['multi']();}['mintKey'](_0x1b7a5b,_0x2d1374){if(!this['namespace'])throw new Error('namespace\x20not\x20set');return key_1['KeyService']['mintKey'](this['namespace'],_0x1b7a5b,_0x2d1374);}async['subscribe'](_0x1b20b4,_0x390c2d,_0x54af75,_0x1403d0){const _0x20d3ea=this,_0x194628=this['mintKey'](_0x1b20b4,{'appId':_0x54af75,'engineId':_0x1403d0});await this['eventClient']['subscribe'](_0x194628,_0x376567=>{_0x376567&&_0x20d3ea['logger']['error']('Error\x20subscribing\x20to:\x20'+_0x194628,_0x376567);}),this['eventClient']['on']('message',(_0x2859e1,_0x5d452e)=>{if(_0x2859e1===_0x194628)try{const _0x393452=JSON['parse'](_0x5d452e);_0x390c2d(_0x194628,_0x393452);}catch(_0x12c48b){_0x20d3ea['logger']['error']('Error\x20parsing\x20message:\x20'+_0x5d452e,_0x12c48b);}});}async['unsubscribe'](_0x6c812,_0x269958,_0x57b9e1){const _0x2f46aa=this['mintKey'](_0x6c812,{'appId':_0x269958,'engineId':_0x57b9e1});await this['eventClient']['unsubscribe'](_0x2f46aa);}async['psubscribe'](_0x16cd3a,_0x19c115,_0x328511,_0x25589a){const _0x158ab2=this,_0x61cc76=this['mintKey'](_0x16cd3a,{'appId':_0x328511,'engineId':_0x25589a});await this['eventClient']['psubscribe'](_0x61cc76,_0x43ce28=>{_0x43ce28&&_0x158ab2['logger']['error']('Error\x20subscribing\x20to:\x20'+_0x61cc76,_0x43ce28);}),this['eventClient']['on']('pmessage',(_0x22ae06,_0x35a76f,_0x433a70)=>{if(_0x22ae06===_0x61cc76)try{const _0xce4dc=JSON['parse'](_0x433a70);_0x19c115(_0x35a76f,_0xce4dc);}catch(_0x4ccfb6){_0x158ab2['logger']['error']('Error\x20parsing\x20message:\x20'+_0x433a70,_0x4ccfb6);}});}async['punsubscribe'](_0x4c6e86,_0x33b566,_0x4cfd61){const _0x2affdb=this['mintKey'](_0x4c6e86,{'appId':_0x33b566,'engineId':_0x4cfd61});await this['eventClient']['punsubscribe'](_0x2affdb);}async['publish'](_0x30953e,_0x484833,_0x12eac7,_0x52d361){const _0x3249e0=this['mintKey'](_0x30953e,{'appId':_0x12eac7,'engineId':_0x52d361}),_0x3faf61=await this['storeClient']['publish'](_0x3249e0,JSON['stringify'](_0x484833));return _0x3faf61===0x1;}}exports['IORedisSubService']=IORedisSubService;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { KeyStoreParams, KeyType } from '../../../../modules/key';
|
|
2
2
|
import { ILogger } from '../../../logger';
|
|
3
3
|
import { SubService } from '../../index';
|
|
4
|
-
import { RedisRedisClientType as
|
|
4
|
+
import { RedisRedisClientType as ClientProvider, RedisRedisMultiType as TransactionProvider } from '../../../../types/redis';
|
|
5
5
|
import { SubscriptionCallback } from '../../../../types/quorum';
|
|
6
|
-
declare class RedisSubService extends SubService<
|
|
7
|
-
constructor(eventClient:
|
|
6
|
+
declare class RedisSubService extends SubService<ClientProvider, TransactionProvider> {
|
|
7
|
+
constructor(eventClient: ClientProvider, storeClient: ClientProvider);
|
|
8
8
|
init(namespace: string, appId: string, engineId: string, logger: ILogger): Promise<void>;
|
|
9
|
-
|
|
9
|
+
transact(): TransactionProvider;
|
|
10
10
|
mintKey(type: KeyType, params: KeyStoreParams): string;
|
|
11
11
|
subscribe(keyType: KeyType.QUORUM, callback: SubscriptionCallback, appId: string, engineId?: string): Promise<void>;
|
|
12
12
|
unsubscribe(keyType: KeyType.QUORUM, appId: string, engineId?: string): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
'use strict';(function(
|
|
1
|
+
'use strict';(function(_0x57349e,_0x11cc9e){const _0x3aed14=_0x1f1b,_0x5e1da2=_0x57349e();while(!![]){try{const _0x2b3be5=parseInt(_0x3aed14(0xa2))/0x1+-parseInt(_0x3aed14(0xa5))/0x2+parseInt(_0x3aed14(0xa1))/0x3+-parseInt(_0x3aed14(0xa7))/0x4+-parseInt(_0x3aed14(0xa6))/0x5*(parseInt(_0x3aed14(0xa8))/0x6)+parseInt(_0x3aed14(0xa4))/0x7+parseInt(_0x3aed14(0xa3))/0x8;if(_0x2b3be5===_0x11cc9e)break;else _0x5e1da2['push'](_0x5e1da2['shift']());}catch(_0x279c02){_0x5e1da2['push'](_0x5e1da2['shift']());}}}(_0x3e8b,0x274bf));function _0x1f1b(_0x244db6,_0x431f33){const _0x3e8bde=_0x3e8b();return _0x1f1b=function(_0x1f1b8d,_0x218041){_0x1f1b8d=_0x1f1b8d-0xa1;let _0x249b82=_0x3e8bde[_0x1f1b8d];return _0x249b82;},_0x1f1b(_0x244db6,_0x431f33);}Object['defineProperty'](exports,'__esModule',{'value':!![]}),exports['RedisSubService']=void 0x0;const key_1=require('../../../../modules/key'),index_1=require('../../index');class RedisSubService extends index_1['SubService']{constructor(_0x4b3735,_0x38f640){super(_0x4b3735,_0x38f640);}async['init'](_0xb29165=key_1['HMNS'],_0x1a0389,_0x1b87ba,_0x23064a){this['namespace']=_0xb29165,this['logger']=_0x23064a,this['appId']=_0x1a0389;}['transact'](){const _0x1b1697=this['eventClient']['multi']();return _0x1b1697;}['mintKey'](_0x492512,_0x29630e){if(!this['namespace'])throw new Error('namespace\x20not\x20set');return key_1['KeyService']['mintKey'](this['namespace'],_0x492512,_0x29630e);}async['subscribe'](_0x33346c,_0x7389a4,_0x5d3e61,_0x1c081b){if(this['eventClient']){const _0x142ddb=this,_0x88d526=this['mintKey'](_0x33346c,{'appId':_0x5d3e61,'engineId':_0x1c081b});await this['eventClient']['subscribe'](_0x88d526,_0xdd839f=>{try{const _0x388ee4=JSON['parse'](_0xdd839f);_0x7389a4(_0x88d526,_0x388ee4);}catch(_0x370185){_0x142ddb['logger']['error']('Error\x20parsing\x20message:\x20'+_0xdd839f,_0x370185);}});}}async['unsubscribe'](_0x103587,_0x296064,_0x2c3bca){const _0x245822=this['mintKey'](_0x103587,{'appId':_0x296064,'engineId':_0x2c3bca});await this['eventClient']['unsubscribe'](_0x245822);}async['psubscribe'](_0x5daf38,_0x4221f9,_0x43f8ac,_0x29ab07){if(this['eventClient']){const _0x4d7619=this,_0x2ea082=this['mintKey'](_0x5daf38,{'appId':_0x43f8ac,'engineId':_0x29ab07});await this['eventClient']['pSubscribe'](_0x2ea082,(_0x2e2152,_0x5ca5d8)=>{try{const _0x5d8869=JSON['parse'](_0x2e2152);_0x4221f9(_0x5ca5d8,_0x5d8869);}catch(_0x3f59f8){_0x4d7619['logger']['error']('Error\x20parsing\x20message:\x20'+_0x2e2152,_0x3f59f8);}});}}async['punsubscribe'](_0xd83a3a,_0x95b3ff,_0x18ca45){const _0x21bacb=this['mintKey'](_0xd83a3a,{'appId':_0x95b3ff,'engineId':_0x18ca45});await this['eventClient']['pUnsubscribe'](_0x21bacb);}async['publish'](_0x21ff54,_0x18fb2d,_0x345359,_0x5899c3){const _0x1cfaad=this['mintKey'](_0x21ff54,{'appId':_0x345359,'engineId':_0x5899c3}),_0x30a175=await this['storeClient']['publish'](_0x1cfaad,JSON['stringify'](_0x18fb2d));return _0x30a175>0x0;}}exports['RedisSubService']=RedisSubService;function _0x3e8b(){const _0x2038ed=['664972CiukUC','204298KeTXrE','4010TMgrTh','402344tqSIbS','1818plHnhm','825555MwsIHB','62952hwcsrh','1388536JeVFhA'];_0x3e8b=function(){return _0x2038ed;};return _0x3e8b();}
|
|
@@ -3,24 +3,24 @@ import { ILogger } from '../logger';
|
|
|
3
3
|
import { StoreService } from '../store';
|
|
4
4
|
import { HookInterface, HookRule } from '../../types/hook';
|
|
5
5
|
import { JobCompletionOptions, JobState } from '../../types/job';
|
|
6
|
-
import {
|
|
6
|
+
import { ProviderClient, ProviderTransaction } from '../../types/provider';
|
|
7
7
|
import { WorkListTaskType } from '../../types/task';
|
|
8
8
|
declare class TaskService {
|
|
9
|
-
store: StoreService<
|
|
9
|
+
store: StoreService<ProviderClient, ProviderTransaction>;
|
|
10
10
|
logger: ILogger;
|
|
11
11
|
cleanupTimeout: NodeJS.Timeout | null;
|
|
12
12
|
isScout: boolean;
|
|
13
13
|
errorCount: number;
|
|
14
|
-
constructor(store: StoreService<
|
|
14
|
+
constructor(store: StoreService<ProviderClient, ProviderTransaction>, logger: ILogger);
|
|
15
15
|
processWebHooks(hookEventCallback: HookInterface): Promise<void>;
|
|
16
16
|
enqueueWorkItems(keys: string[]): Promise<void>;
|
|
17
17
|
registerJobForCleanup(jobId: string, inSeconds: number, options: JobCompletionOptions): Promise<void>;
|
|
18
|
-
registerTimeHook(jobId: string, gId: string, activityId: string, type: WorkListTaskType, inSeconds: number, dad: string,
|
|
18
|
+
registerTimeHook(jobId: string, gId: string, activityId: string, type: WorkListTaskType, inSeconds: number, dad: string, transaction?: ProviderTransaction): Promise<void>;
|
|
19
19
|
shouldScout(): Promise<boolean>;
|
|
20
20
|
processTimeHooks(timeEventCallback: (jobId: string, gId: string, activityId: string, type: WorkListTaskType) => Promise<void>, listKey?: string): Promise<void>;
|
|
21
21
|
cancelCleanup(): void;
|
|
22
22
|
getHookRule(topic: string): Promise<HookRule | undefined>;
|
|
23
|
-
registerWebHook(topic: string, context: JobState, dad: string, expire: number,
|
|
23
|
+
registerWebHook(topic: string, context: JobState, dad: string, expire: number, transaction?: ProviderTransaction): Promise<string>;
|
|
24
24
|
processWebHookSignal(topic: string, data: Record<string, unknown>): Promise<[string, string, string, string] | undefined>;
|
|
25
25
|
deleteWebHookSignal(topic: string, data: Record<string, unknown>): Promise<number>;
|
|
26
26
|
}
|