@hotmeshio/hotmesh 0.3.6 → 0.3.7
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/build/index.d.ts +2 -1
- package/build/index.js +7 -1
- package/build/modules/key.js +1 -62
- package/build/modules/utils.js +1 -267
- package/build/package.json +12 -8
- package/build/services/activities/activity.js +1 -495
- package/build/services/activities/await.js +1 -109
- package/build/services/activities/cycle.js +1 -96
- package/build/services/activities/hook.js +1 -154
- package/build/services/activities/index.js +1 -20
- package/build/services/activities/interrupt.js +1 -149
- package/build/services/activities/signal.js +1 -118
- package/build/services/activities/trigger.js +1 -237
- package/build/services/activities/worker.js +1 -101
- package/build/services/collator/index.js +1 -197
- package/build/services/compiler/deployer.d.ts +3 -1
- package/build/services/compiler/deployer.js +1 -455
- package/build/services/compiler/index.d.ts +3 -1
- package/build/services/compiler/index.js +1 -91
- package/build/services/compiler/validator.js +1 -122
- package/build/services/engine/index.d.ts +5 -2
- package/build/services/engine/index.js +1 -562
- package/build/services/exporter/index.js +1 -93
- package/build/services/mapper/index.js +1 -67
- package/build/services/meshdata/index.d.ts +0 -1
- package/build/services/meshdata/index.js +16 -24
- package/build/services/meshflow/client.js +4 -8
- package/build/services/meshflow/exporter.js +1 -186
- package/build/services/meshflow/search.d.ts +4 -5
- package/build/services/meshflow/search.js +45 -35
- package/build/services/meshflow/workflow.d.ts +1 -1
- package/build/services/meshflow/workflow.js +3 -28
- package/build/services/pipe/functions/array.js +1 -74
- package/build/services/pipe/functions/bitwise.js +1 -24
- package/build/services/pipe/functions/conditional.js +1 -36
- package/build/services/pipe/functions/cron.js +1 -32
- package/build/services/pipe/functions/date.js +1 -164
- package/build/services/pipe/functions/index.js +1 -30
- package/build/services/pipe/functions/json.js +1 -12
- package/build/services/pipe/functions/logical.js +1 -12
- package/build/services/pipe/functions/math.js +1 -182
- package/build/services/pipe/functions/number.js +1 -60
- package/build/services/pipe/functions/object.js +1 -81
- package/build/services/pipe/functions/string.js +1 -69
- package/build/services/pipe/functions/symbol.js +1 -33
- package/build/services/pipe/functions/unary.js +1 -18
- package/build/services/pipe/index.js +1 -221
- package/build/services/quorum/index.d.ts +1 -1
- package/build/services/quorum/index.js +1 -219
- package/build/services/reporter/index.js +1 -331
- package/build/services/router/index.js +1 -420
- package/build/services/search/factory.d.ts +7 -0
- package/build/services/search/factory.js +20 -0
- package/build/services/search/index.d.ts +21 -0
- package/build/services/search/index.js +10 -0
- package/build/services/search/providers/redis/ioredis.d.ts +18 -0
- package/build/services/search/providers/redis/ioredis.js +1 -0
- package/build/services/search/providers/redis/redis.d.ts +18 -0
- package/build/services/search/providers/redis/redis.js +1 -0
- package/build/services/serializer/index.js +1 -265
- package/build/services/store/factory.d.ts +2 -1
- package/build/services/store/factory.js +2 -2
- package/build/services/store/index.d.ts +71 -97
- package/build/services/store/index.js +2 -939
- package/build/services/store/providers/postgres/postgres.d.ts +0 -0
- package/build/services/store/providers/postgres/postgres.js +0 -0
- package/build/services/store/providers/postgres/types/hash.d.ts +0 -0
- package/build/services/store/providers/postgres/types/hash.js +0 -0
- package/build/services/store/providers/postgres/types/list.d.ts +0 -0
- package/build/services/store/providers/postgres/types/list.js +0 -0
- package/build/services/store/providers/postgres/types/string.d.ts +0 -0
- package/build/services/store/providers/postgres/types/string.js +0 -0
- package/build/services/store/providers/postgres/types/zset.d.ts +0 -0
- package/build/services/store/providers/postgres/types/zset.js +0 -0
- package/build/services/store/providers/redis/_base.d.ts +98 -0
- package/build/services/store/providers/redis/_base.js +1 -0
- package/build/services/store/providers/redis/ioredis.d.ts +12 -0
- package/build/services/store/providers/redis/ioredis.js +1 -0
- package/build/services/store/providers/redis/redis.d.ts +13 -0
- package/build/services/store/providers/redis/redis.js +1 -0
- package/build/services/store/providers/store-initializable.d.ts +5 -0
- package/build/services/store/providers/store-initializable.js +1 -0
- package/build/services/stream/factory.d.ts +2 -1
- package/build/services/stream/factory.js +5 -5
- package/build/services/stream/index.d.ts +13 -14
- package/build/services/stream/index.js +3 -2
- package/build/services/stream/providers/postgres/_deploy.d.ts +4 -0
- package/build/services/stream/providers/postgres/_deploy.js +1 -0
- package/build/services/stream/providers/redis/ioredis.d.ts +21 -0
- package/build/services/stream/providers/redis/ioredis.js +1 -0
- package/build/services/stream/providers/redis/redis.d.ts +21 -0
- package/build/services/stream/providers/redis/redis.js +1 -0
- package/build/services/stream/providers/stream-initializable.d.ts +5 -0
- package/build/services/stream/providers/stream-initializable.js +1 -0
- package/build/services/sub/factory.d.ts +1 -1
- package/build/services/sub/factory.js +5 -5
- package/build/services/sub/index.d.ts +9 -7
- package/build/services/sub/index.js +3 -2
- package/build/services/sub/{clients → providers/redis}/ioredis.d.ts +7 -10
- package/build/services/sub/providers/redis/ioredis.js +1 -0
- package/build/services/sub/{clients → providers/redis}/redis.d.ts +7 -10
- package/build/services/sub/providers/redis/redis.js +1 -0
- package/build/services/task/index.js +1 -171
- package/build/services/telemetry/index.js +1 -225
- package/build/services/worker/index.d.ts +2 -2
- package/build/services/worker/index.js +1 -158
- package/build/types/redis.d.ts +5 -5
- package/index.ts +15 -1
- package/package.json +12 -8
- package/types/redis.ts +5 -5
- package/build/services/store/clients/ioredis.d.ts +0 -30
- package/build/services/store/clients/ioredis.js +0 -220
- package/build/services/store/clients/redis.d.ts +0 -32
- package/build/services/store/clients/redis.js +0 -319
- package/build/services/stream/clients/ioredis.d.ts +0 -24
- package/build/services/stream/clients/ioredis.js +0 -121
- package/build/services/stream/clients/redis.d.ts +0 -24
- package/build/services/stream/clients/redis.js +0 -161
- package/build/services/sub/clients/ioredis.js +0 -72
- package/build/services/sub/clients/redis.js +0 -63
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { KeyStoreParams, KeyType } from '../../../../modules/key';
|
|
2
|
+
import { ILogger } from '../../../logger';
|
|
3
|
+
import { ActivityType, Consumes } from '../../../../types/activity';
|
|
4
|
+
import { AppVID } from '../../../../types/app';
|
|
5
|
+
import { HookRule, HookSignal } from '../../../../types/hook';
|
|
6
|
+
import { HotMeshApp, HotMeshApps, HotMeshSettings } from '../../../../types/hotmesh';
|
|
7
|
+
import { SymbolSets, StringStringType, StringAnyType, Symbols } from '../../../../types/serializer';
|
|
8
|
+
import { IdsData, JobStatsRange, StatsType } from '../../../../types/stats';
|
|
9
|
+
import { Transitions } from '../../../../types/transition';
|
|
10
|
+
import { JobInterruptOptions } from '../../../../types/job';
|
|
11
|
+
import { WorkListTaskType } from '../../../../types/task';
|
|
12
|
+
import { ThrottleOptions } from '../../../../types/quorum';
|
|
13
|
+
import { StoreService } from '../..';
|
|
14
|
+
interface AbstractRedisClient {
|
|
15
|
+
exec(): Promise<any>;
|
|
16
|
+
}
|
|
17
|
+
declare abstract class RedisStoreBase<Client, MultiClient extends AbstractRedisClient> extends StoreService<Client, MultiClient> {
|
|
18
|
+
commands: Record<string, string>;
|
|
19
|
+
abstract getMulti(): MultiClient;
|
|
20
|
+
abstract exec(...args: any[]): Promise<any>;
|
|
21
|
+
abstract setnxex(key: string, value: string, expireSeconds: number): Promise<boolean>;
|
|
22
|
+
constructor(storeClient: Client);
|
|
23
|
+
init(namespace: string, appId: string, logger: ILogger): Promise<HotMeshApps>;
|
|
24
|
+
isSuccessful(result: any): boolean;
|
|
25
|
+
delistSignalKey(key: string, target: string): Promise<void>;
|
|
26
|
+
zAdd(key: string, score: number | string, value: string | number, redisMulti?: MultiClient): Promise<any>;
|
|
27
|
+
zRangeByScoreWithScores(key: string, score: number | string, value: string | number): Promise<string | null>;
|
|
28
|
+
zRangeByScore(key: string, score: number | string, value: string | number): Promise<string | null>;
|
|
29
|
+
mintKey(type: KeyType, params: KeyStoreParams): string;
|
|
30
|
+
invalidateCache(): void;
|
|
31
|
+
reserveScoutRole(scoutType: 'time' | 'signal' | 'activate', delay?: number): Promise<boolean>;
|
|
32
|
+
releaseScoutRole(scoutType: 'time' | 'signal' | 'activate'): Promise<boolean>;
|
|
33
|
+
getSettings(bCreate?: boolean): Promise<HotMeshSettings>;
|
|
34
|
+
setSettings(manifest: HotMeshSettings): Promise<any>;
|
|
35
|
+
reserveSymbolRange(target: string, size: number, type: 'JOB' | 'ACTIVITY', tryCount?: number): Promise<[number, number, Symbols]>;
|
|
36
|
+
getAllSymbols(): Promise<Symbols>;
|
|
37
|
+
getSymbols(activityId: string): Promise<Symbols>;
|
|
38
|
+
addSymbols(activityId: string, symbols: Symbols): Promise<boolean>;
|
|
39
|
+
seedSymbols(target: string, type: 'JOB' | 'ACTIVITY', startIndex: number): StringStringType;
|
|
40
|
+
seedJobSymbols(startIndex: number): StringStringType;
|
|
41
|
+
seedActivitySymbols(startIndex: number, activityId: string): StringStringType;
|
|
42
|
+
getSymbolValues(): Promise<Symbols>;
|
|
43
|
+
addSymbolValues(symvals: Symbols): Promise<boolean>;
|
|
44
|
+
getSymbolKeys(symbolNames: string[]): Promise<SymbolSets>;
|
|
45
|
+
getApp(id: string, refresh?: boolean): Promise<HotMeshApp>;
|
|
46
|
+
setApp(id: string, version: string): Promise<HotMeshApp>;
|
|
47
|
+
activateAppVersion(id: string, version: string): Promise<boolean>;
|
|
48
|
+
registerAppVersion(appId: string, version: string): Promise<any>;
|
|
49
|
+
setStats(jobKey: string, jobId: string, dateTime: string, stats: StatsType, appVersion: AppVID, multi?: MultiClient): Promise<any>;
|
|
50
|
+
hGetAllResult(result: any): any;
|
|
51
|
+
getJobStats(jobKeys: string[]): Promise<JobStatsRange>;
|
|
52
|
+
getJobIds(indexKeys: string[], idRange: [number, number]): Promise<IdsData>;
|
|
53
|
+
setStatus(collationKeyStatus: number, jobId: string, appId: string, multi?: MultiClient): Promise<any>;
|
|
54
|
+
getStatus(jobId: string, appId: string): Promise<number>;
|
|
55
|
+
setState({ ...state }: StringAnyType, status: number | null, jobId: string, symbolNames: string[], dIds: StringStringType, multi?: MultiClient): Promise<string>;
|
|
56
|
+
getQueryState(jobId: string, fields: string[]): Promise<StringAnyType>;
|
|
57
|
+
getState(jobId: string, consumes: Consumes, dIds: StringStringType): Promise<[StringAnyType, number] | undefined>;
|
|
58
|
+
getRaw(jobId: string): Promise<StringStringType>;
|
|
59
|
+
collate(jobId: string, activityId: string, amount: number, dIds: StringStringType, multi?: MultiClient): Promise<number>;
|
|
60
|
+
collateSynthetic(jobId: string, guid: string, amount: number, multi?: MultiClient): Promise<number>;
|
|
61
|
+
setStateNX(jobId: string, appId: string, status?: number): Promise<boolean>;
|
|
62
|
+
getSchema(activityId: string, appVersion: AppVID): Promise<ActivityType>;
|
|
63
|
+
getSchemas(appVersion: AppVID): Promise<Record<string, ActivityType>>;
|
|
64
|
+
setSchemas(schemas: Record<string, ActivityType>, appVersion: AppVID): Promise<any>;
|
|
65
|
+
setSubscriptions(subscriptions: Record<string, any>, appVersion: AppVID): Promise<boolean>;
|
|
66
|
+
getSubscriptions(appVersion: AppVID): Promise<Record<string, string>>;
|
|
67
|
+
getSubscription(topic: string, appVersion: AppVID): Promise<string | undefined>;
|
|
68
|
+
setTransitions(transitions: Record<string, any>, appVersion: AppVID): Promise<any>;
|
|
69
|
+
getTransitions(appVersion: AppVID): Promise<Transitions>;
|
|
70
|
+
setHookRules(hookRules: Record<string, HookRule[]>): Promise<any>;
|
|
71
|
+
getHookRules(): Promise<Record<string, HookRule[]>>;
|
|
72
|
+
setHookSignal(hook: HookSignal, multi?: MultiClient): Promise<any>;
|
|
73
|
+
getHookSignal(topic: string, resolved: string): Promise<string | undefined>;
|
|
74
|
+
deleteHookSignal(topic: string, resolved: string): Promise<number | undefined>;
|
|
75
|
+
addTaskQueues(keys: string[]): Promise<void>;
|
|
76
|
+
getActiveTaskQueue(): Promise<string | null>;
|
|
77
|
+
deleteProcessedTaskQueue(workItemKey: string, key: string, processedKey: string, scrub?: boolean): Promise<void>;
|
|
78
|
+
processTaskQueue(sourceKey: string, destinationKey: string): Promise<any>;
|
|
79
|
+
expireJob(jobId: string, inSeconds: number, redisMulti?: MultiClient): Promise<void>;
|
|
80
|
+
getDependencies(jobId: string): Promise<string[]>;
|
|
81
|
+
registerTimeHook(jobId: string, gId: string, activityId: string, type: WorkListTaskType, deletionTime: number, dad: string, multi?: MultiClient): Promise<void>;
|
|
82
|
+
getNextTask(listKey?: string): Promise<[
|
|
83
|
+
listKey: string,
|
|
84
|
+
jobId: string,
|
|
85
|
+
gId: string,
|
|
86
|
+
activityId: string,
|
|
87
|
+
type: WorkListTaskType
|
|
88
|
+
] | boolean>;
|
|
89
|
+
resolveTaskKeyContext(listKey: string): [WorkListTaskType, string];
|
|
90
|
+
interrupt(topic: string, jobId: string, options?: JobInterruptOptions): Promise<void>;
|
|
91
|
+
scrub(jobId: string): Promise<void>;
|
|
92
|
+
findJobs(queryString?: string, limit?: number, batchSize?: number, cursor?: string): Promise<[string, string[]]>;
|
|
93
|
+
findJobFields(jobId: string, fieldMatchPattern?: string, limit?: number, batchSize?: number, cursor?: string): Promise<[string, StringStringType]>;
|
|
94
|
+
setThrottleRate(options: ThrottleOptions): Promise<void>;
|
|
95
|
+
getThrottleRates(): Promise<StringStringType>;
|
|
96
|
+
getThrottleRate(topic: string): Promise<number>;
|
|
97
|
+
}
|
|
98
|
+
export { RedisStoreBase };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';(function(_0x2c63ac,_0x3d7f32){const _0x5b6963=_0x48a5,_0x1d9eb7=_0x2c63ac();while(!![]){try{const _0x24b79e=parseInt(_0x5b6963(0x19e))/0x1*(-parseInt(_0x5b6963(0x19a))/0x2)+parseInt(_0x5b6963(0x19f))/0x3+parseInt(_0x5b6963(0x199))/0x4*(parseInt(_0x5b6963(0x19d))/0x5)+parseInt(_0x5b6963(0x19b))/0x6+-parseInt(_0x5b6963(0x1a2))/0x7*(-parseInt(_0x5b6963(0x198))/0x8)+-parseInt(_0x5b6963(0x1a1))/0x9*(-parseInt(_0x5b6963(0x19c))/0xa)+-parseInt(_0x5b6963(0x1a0))/0xb;if(_0x24b79e===_0x3d7f32)break;else _0x1d9eb7['push'](_0x1d9eb7['shift']());}catch(_0x57000a){_0x1d9eb7['push'](_0x1d9eb7['shift']());}}}(_0x2e59,0xdadbd));var __createBinding=this&&this['__createBinding']||(Object['create']?function(_0x25fa42,_0x4868be,_0x34d5f8,_0x92f96c){if(_0x92f96c===undefined)_0x92f96c=_0x34d5f8;var _0xf1a932=Object['getOwnPropertyDescriptor'](_0x4868be,_0x34d5f8);(!_0xf1a932||('get'in _0xf1a932?!_0x4868be['__esModule']:_0xf1a932['writable']||_0xf1a932['configurable']))&&(_0xf1a932={'enumerable':!![],'get':function(){return _0x4868be[_0x34d5f8];}}),Object['defineProperty'](_0x25fa42,_0x92f96c,_0xf1a932);}:function(_0x49f65a,_0x237166,_0x5ecefe,_0x1193f2){if(_0x1193f2===undefined)_0x1193f2=_0x5ecefe;_0x49f65a[_0x1193f2]=_0x237166[_0x5ecefe];}),__setModuleDefault=this&&this['__setModuleDefault']||(Object['create']?function(_0x49d8b8,_0x47b92f){Object['defineProperty'](_0x49d8b8,'default',{'enumerable':!![],'value':_0x47b92f});}:function(_0x4a48a1,_0x111a41){_0x4a48a1['default']=_0x111a41;}),__importStar=this&&this['__importStar']||function(_0xbdcbd9){if(_0xbdcbd9&&_0xbdcbd9['__esModule'])return _0xbdcbd9;var _0x52ee40={};if(_0xbdcbd9!=null){for(var _0x2e9109 in _0xbdcbd9)if(_0x2e9109!=='default'&&Object['prototype']['hasOwnProperty']['call'](_0xbdcbd9,_0x2e9109))__createBinding(_0x52ee40,_0xbdcbd9,_0x2e9109);}return __setModuleDefault(_0x52ee40,_0xbdcbd9),_0x52ee40;};function _0x2e59(){const _0x558b63=['24965215txnSiC','153bjVkyX','14gNxjCR','1789672LwXTMC','24ZOsqSq','209738TCJVCQ','3261186FOJDzB','1039010jkdMIU','250540MZbcTj','6VKbYlQ','2211930yMiTBA'];_0x2e59=function(){return _0x558b63;};return _0x2e59();}Object['defineProperty'](exports,'__esModule',{'value':!![]}),exports['RedisStoreBase']=void 0x0;function _0x48a5(_0x1098f1,_0xfbf6a5){const _0x2e595c=_0x2e59();return _0x48a5=function(_0x48a5a0,_0x2501cb){_0x48a5a0=_0x48a5a0-0x198;let _0x1e12d4=_0x2e595c[_0x48a5a0];return _0x1e12d4;},_0x48a5(_0x1098f1,_0xfbf6a5);}const errors_1=require('../../../../modules/errors'),key_1=require('../../../../modules/key'),serializer_1=require('../../../serializer'),utils_1=require('../../../../modules/utils'),enums_1=require('../../../../modules/enums'),cache_1=require('../../cache'),__1=require('../..');class RedisStoreBase extends __1['StoreService']{constructor(_0x447e4f){super(_0x447e4f),this['commands']={},this['storeClient']=_0x447e4f;}async['init'](_0x2338c8=key_1['HMNS'],_0x310f19,_0x9f1db1){this['namespace']=_0x2338c8,this['appId']=_0x310f19,this['logger']=_0x9f1db1;const _0x52add5=await this['getSettings'](!![]);return this['cache']=new cache_1['Cache'](_0x310f19,_0x52add5),this['serializer']=new serializer_1['SerializerService'](),await this['getApp'](_0x310f19),this['cache']['getApps']();}['isSuccessful'](_0x2080d2){return _0x2080d2>0x0||_0x2080d2==='OK'||_0x2080d2===!![];}async['delistSignalKey'](_0x8de4e0,_0xf77815){await this['storeClient'][this['commands']['del']](_0x8de4e0+':'+_0xf77815);}async['zAdd'](_0x12890b,_0x5b13a9,_0x2a81b9,_0x431a5f){return await(_0x431a5f||this['storeClient'])[this['commands']['zadd']](_0x12890b,_0x5b13a9,_0x2a81b9);}async['zRangeByScoreWithScores'](_0xc71ae6,_0x22af9e,_0x441948){const _0x27d8c6=await this['storeClient'][this['commands']['zrangebyscore_withscores']](_0xc71ae6,_0x22af9e,_0x441948,'WITHSCORES');if(_0x27d8c6?.['length']>0x0)return _0x27d8c6[0x0];return null;}async['zRangeByScore'](_0x375d12,_0x389e44,_0x347a9b){const _0x254b10=await this['storeClient'][this['commands']['zrangebyscore']](_0x375d12,_0x389e44,_0x347a9b);if(_0x254b10?.['length']>0x0)return _0x254b10[0x0];return null;}['mintKey'](_0x458e65,_0x30420c){if(!this['namespace'])throw new Error('namespace\x20not\x20set');return key_1['KeyService']['mintKey'](this['namespace'],_0x458e65,_0x30420c);}['invalidateCache'](){this['cache']['invalidate']();}async['reserveScoutRole'](_0x6d65f1,_0x481522=enums_1['HMSH_SCOUT_INTERVAL_SECONDS']){const _0x260b55=this['mintKey'](key_1['KeyType']['WORK_ITEMS'],{'appId':this['appId'],'scoutType':_0x6d65f1}),_0x44b159=await this['exec']('SET',_0x260b55,_0x6d65f1+':'+(0x0,utils_1['formatISODate'])(new Date()),'NX','EX',''+(_0x481522-0x1));return this['isSuccessful'](_0x44b159);}async['releaseScoutRole'](_0x297ce0){const _0x14581a=this['mintKey'](key_1['KeyType']['WORK_ITEMS'],{'appId':this['appId'],'scoutType':_0x297ce0}),_0x33b682=await this['exec']('DEL',_0x14581a);return this['isSuccessful'](_0x33b682);}async['getSettings'](_0xbf8156=![]){let _0x5568e1=this['cache']?.['getSettings']();if(_0x5568e1)return _0x5568e1;else{if(_0xbf8156){const _0x41e018=await Promise['resolve']()['then'](()=>__importStar(require('../../../../package.json'))),_0x2b9f3f=_0x41e018['version']||'0.0.0';return _0x5568e1={'namespace':key_1['HMNS'],'version':_0x2b9f3f},await this['setSettings'](_0x5568e1),_0x5568e1;}}throw new Error('settings\x20not\x20found');}async['setSettings'](_0x49e3df){const _0x161fb4={},_0x19d54c=this['mintKey'](key_1['KeyType']['HOTMESH'],_0x161fb4);return await this['storeClient'][this['commands']['hset']](_0x19d54c,_0x49e3df);}async['reserveSymbolRange'](_0x584fa8,_0x3ed046,_0x157695,_0x4e7bae=0x1){const _0x5c7bc0=this['mintKey'](key_1['KeyType']['SYMKEYS'],{'appId':this['appId']}),_0x27f44f=this['mintKey'](key_1['KeyType']['SYMKEYS'],{'activityId':_0x584fa8,'appId':this['appId']}),_0x9ab7cb=await this['storeClient'][this['commands']['hsetnx']](_0x5c7bc0,_0x584fa8,'?:?');if(_0x9ab7cb){const _0x132e33=await this['storeClient'][this['commands']['hincrby']](_0x5c7bc0,':cursor',_0x3ed046),_0x15b490=_0x132e33-_0x3ed046,_0xc2a8fb=_0x15b490+':'+(_0x132e33-0x1);await this['storeClient'][this['commands']['hset']](_0x5c7bc0,_0x584fa8,_0xc2a8fb);const _0x345cd4=this['seedSymbols'](_0x584fa8,_0x157695,_0x15b490);return await this['storeClient'][this['commands']['hset']](_0x27f44f,_0x345cd4),[_0x15b490+serializer_1['MDATA_SYMBOLS']['SLOTS'],_0x132e33-0x1,{}];}else{const _0xf1f556=await this['storeClient'][this['commands']['hget']](_0x5c7bc0,_0x584fa8),[_0x28c876]=_0xf1f556['split'](':');if(_0x28c876==='?'){await(0x0,utils_1['sleepFor'])(_0x4e7bae*0x3e8);if(_0x4e7bae<0x5)return this['reserveSymbolRange'](_0x584fa8,_0x3ed046,_0x157695,_0x4e7bae+0x1);else throw new Error('Symbol\x20range\x20reservation\x20failed\x20due\x20to\x20deployment\x20contention');}else{const _0x3882ba=parseInt(_0x28c876,0xa),_0x41fa5e=await this['storeClient'][this['commands']['hgetall']](_0x27f44f),_0x244ef2=Object['keys'](_0x41fa5e)['length'],_0xff0906=_0x3882ba+serializer_1['MDATA_SYMBOLS']['SLOTS']+_0x244ef2,_0x495cb6=Number(_0x3882ba+_0x3ed046-0x1);return[_0xff0906,_0x495cb6,_0x41fa5e];}}}async['getAllSymbols'](){const _0x2dbdb5=this['mintKey'](key_1['KeyType']['SYMKEYS'],{'appId':this['appId']}),_0x3a828d=await this['storeClient'][this['commands']['hgetall']](_0x2dbdb5),_0x1ed485=Object['keys'](_0x3a828d)['sort']();delete _0x1ed485[':cursor'];const _0x41a399=this['getMulti']();for(const _0x26e5ee of _0x1ed485){const _0x59821b=this['mintKey'](key_1['KeyType']['SYMKEYS'],{'activityId':_0x26e5ee,'appId':this['appId']});_0x41a399[this['commands']['hgetall']](_0x59821b);}const _0x53f131=await _0x41a399['exec'](),_0x3aa5c4={};return _0x53f131['forEach']((_0x453f5c,_0x2f5514)=>{if(_0x453f5c){let _0x417d7a;Array['isArray'](_0x453f5c)&&_0x453f5c['length']===0x2?_0x417d7a=_0x453f5c[0x1]:_0x417d7a=_0x453f5c;for(const [_0x3fb4d3,_0x4778ca]of Object['entries'](_0x417d7a)){_0x3aa5c4[_0x4778ca]=_0x3fb4d3['startsWith'](_0x1ed485[_0x2f5514])?_0x3fb4d3:_0x1ed485[_0x2f5514]+'/'+_0x3fb4d3;}}}),_0x3aa5c4;}async['getSymbols'](_0x28fb54){let _0x1ac565=this['cache']['getSymbols'](this['appId'],_0x28fb54);if(_0x1ac565)return _0x1ac565;else{const _0x34f69a={'activityId':_0x28fb54,'appId':this['appId']},_0x30c868=this['mintKey'](key_1['KeyType']['SYMKEYS'],_0x34f69a);return _0x1ac565=await this['storeClient'][this['commands']['hgetall']](_0x30c868),this['cache']['setSymbols'](this['appId'],_0x28fb54,_0x1ac565),_0x1ac565;}}async['addSymbols'](_0x308ce0,_0x36a930){if(!_0x36a930||!Object['keys'](_0x36a930)['length'])return![];const _0x523ee1={'activityId':_0x308ce0,'appId':this['appId']},_0x9a3ef8=this['mintKey'](key_1['KeyType']['SYMKEYS'],_0x523ee1),_0x3a98fd=await this['storeClient'][this['commands']['hset']](_0x9a3ef8,_0x36a930);return this['cache']['deleteSymbols'](this['appId'],_0x308ce0),_0x3a98fd>0x0;}['seedSymbols'](_0x40a722,_0x4de419,_0x162394){if(_0x4de419==='JOB')return this['seedJobSymbols'](_0x162394);return this['seedActivitySymbols'](_0x162394,_0x40a722);}['seedJobSymbols'](_0x2293e8){const _0xf7bb4b={};return serializer_1['MDATA_SYMBOLS']['JOB']['KEYS']['forEach'](_0x20ad29=>{_0xf7bb4b['metadata/'+_0x20ad29]=(0x0,utils_1['getSymKey'])(_0x2293e8),_0x2293e8++;}),_0xf7bb4b;}['seedActivitySymbols'](_0x46fdd4,_0x49c1cc){const _0x19c63a={};return serializer_1['MDATA_SYMBOLS']['ACTIVITY']['KEYS']['forEach'](_0x3ba2f6=>{_0x19c63a[_0x49c1cc+'/output/metadata/'+_0x3ba2f6]=(0x0,utils_1['getSymKey'])(_0x46fdd4),_0x46fdd4++;}),_0x19c63a;}async['getSymbolValues'](){let _0xe14a5b=this['cache']['getSymbolValues'](this['appId']);if(_0xe14a5b)return _0xe14a5b;else{const _0x49025b=this['mintKey'](key_1['KeyType']['SYMVALS'],{'appId':this['appId']});return _0xe14a5b=await this['storeClient'][this['commands']['hgetall']](_0x49025b),this['cache']['setSymbolValues'](this['appId'],_0xe14a5b),_0xe14a5b;}}async['addSymbolValues'](_0x222ea1){if(!_0x222ea1||!Object['keys'](_0x222ea1)['length'])return![];const _0x5c4b4f=this['mintKey'](key_1['KeyType']['SYMVALS'],{'appId':this['appId']}),_0x255853=await this['storeClient'][this['commands']['hset']](_0x5c4b4f,_0x222ea1);return this['cache']['deleteSymbolValues'](this['appId']),this['isSuccessful'](_0x255853);}async['getSymbolKeys'](_0x4fff2e){const _0xfa7f56=[];for(const _0x211440 of _0x4fff2e){_0xfa7f56['push'](this['getSymbols'](_0x211440));}const _0x367044=await Promise['all'](_0xfa7f56),_0x594850={};for(const _0xb0a5af of _0x4fff2e){_0x594850[_0xb0a5af]=_0x367044['shift']();}return _0x594850;}async['getApp'](_0x4e6357,_0x1c788d=![]){let _0x3dfd33=this['cache']['getApp'](_0x4e6357);if(_0x1c788d||!(_0x3dfd33&&Object['keys'](_0x3dfd33)['length']>0x0)){const _0x2f00c4={'appId':_0x4e6357},_0x19d43b=this['mintKey'](key_1['KeyType']['APP'],_0x2f00c4),_0x451f9e=await this['storeClient'][this['commands']['hgetall']](_0x19d43b);if(!_0x451f9e)return null;_0x3dfd33={};for(const _0x328ff7 in _0x451f9e){try{_0x328ff7==='active'?_0x3dfd33[_0x328ff7]=_0x451f9e[_0x328ff7]==='true':_0x3dfd33[_0x328ff7]=_0x451f9e[_0x328ff7];}catch(_0x2b4b90){_0x3dfd33[_0x328ff7]=_0x451f9e[_0x328ff7];}}this['cache']['setApp'](_0x4e6357,_0x3dfd33);}return _0x3dfd33;}async['setApp'](_0x14941e,_0xa95913){const _0x4595a2={'appId':_0x14941e},_0x59360a=this['mintKey'](key_1['KeyType']['APP'],_0x4595a2),_0x403aca='versions/'+_0xa95913,_0x1434ec={'id':_0x14941e,'version':_0xa95913,[_0x403aca]:'deployed:'+(0x0,utils_1['formatISODate'])(new Date())};return await this['storeClient'][this['commands']['hset']](_0x59360a,_0x1434ec),this['cache']['setApp'](_0x14941e,_0x1434ec),_0x1434ec;}async['activateAppVersion'](_0x219468,_0x32bfb2){const _0x5c9a93={'appId':_0x219468},_0x5429cf=this['mintKey'](key_1['KeyType']['APP'],_0x5c9a93),_0x1ff6bb='versions/'+_0x32bfb2,_0x46d879=await this['getApp'](_0x219468,!![]);if(_0x46d879&&_0x46d879[_0x1ff6bb]){const _0x2fd07c={'id':_0x219468,'version':_0x32bfb2['toString'](),[_0x1ff6bb]:'activated:'+(0x0,utils_1['formatISODate'])(new Date()),'active':!![]};return Object['entries'](_0x2fd07c)['forEach'](([_0x1a069e,_0x2b742f])=>{_0x2fd07c[_0x1a069e]=_0x2b742f['toString']();}),await this['storeClient'][this['commands']['hset']](_0x5429cf,_0x2fd07c),!![];}throw new Error('Version\x20'+_0x32bfb2+'\x20does\x20not\x20exist\x20for\x20app\x20'+_0x219468);}async['registerAppVersion'](_0x4bd3b0,_0x16ebb4){const _0x5bc235={'appId':_0x4bd3b0},_0x31dd05=this['mintKey'](key_1['KeyType']['APP'],_0x5bc235),_0xb251e4={'id':_0x4bd3b0,'version':_0x16ebb4['toString'](),['versions/'+_0x16ebb4]:(0x0,utils_1['formatISODate'])(new Date())};return await this['storeClient'][this['commands']['hset']](_0x31dd05,_0xb251e4);}async['setStats'](_0x217d9c,_0x2a923d,_0x5b4376,_0x5892ac,_0x6eb21d,_0x1cbfce){const _0x20d668={'appId':_0x6eb21d['id'],'jobId':_0x2a923d,'jobKey':_0x217d9c,'dateTime':_0x5b4376},_0x399a85=_0x1cbfce||this['getMulti']();if(_0x5892ac['general']['length']){const _0x3e6e72=this['mintKey'](key_1['KeyType']['JOB_STATS_GENERAL'],_0x20d668);for(const {target:_0x596e14,value:_0x529fdf}of _0x5892ac['general']){_0x399a85[this['commands']['hincrbyfloat']](_0x3e6e72,_0x596e14,_0x529fdf);}}for(const {target:_0x26215f,value:_0x545e22}of _0x5892ac['index']){const _0x244960={..._0x20d668,'facet':_0x26215f},_0x51babb=this['mintKey'](key_1['KeyType']['JOB_STATS_INDEX'],_0x244960);_0x399a85[this['commands']['rpush']](_0x51babb,_0x545e22['toString']());}for(const {target:_0x2bad43,value:_0x4d0f2c}of _0x5892ac['median']){const _0x128bcd={..._0x20d668,'facet':_0x2bad43},_0x2c4e03=this['mintKey'](key_1['KeyType']['JOB_STATS_MEDIAN'],_0x128bcd);this['zAdd'](_0x2c4e03,_0x4d0f2c,_0x2bad43,_0x399a85);}if(!_0x1cbfce)return await _0x399a85['exec']();}['hGetAllResult'](_0x26792c){return _0x26792c;}async['getJobStats'](_0x26a1eb){const _0x438d8b=this['getMulti']();for(const _0x2f58de of _0x26a1eb){_0x438d8b[this['commands']['hgetall']](_0x2f58de);}const _0x18d8e7=await _0x438d8b['exec'](),_0x585055={};for(const [_0x3a9216,_0xd091fc]of _0x18d8e7['entries']()){const _0x2c159b=_0x26a1eb[_0x3a9216],_0x4cef88=this['hGetAllResult'](_0xd091fc);if(_0x4cef88&&Object['keys'](_0x4cef88)['length']>0x0){const _0x5e7985={..._0x4cef88};for(const [_0x30da30,_0x3c3cc3]of Object['entries'](_0x5e7985)){_0x5e7985[_0x30da30]=Number(_0x3c3cc3);}_0x585055[_0x2c159b]=_0x5e7985;}else _0x585055[_0x2c159b]={};}return _0x585055;}async['getJobIds'](_0x481196,_0x59a1d1){const _0x100a57=this['getMulti']();for(const _0xc376a5 of _0x481196){_0x100a57[this['commands']['lrange']](_0xc376a5,_0x59a1d1[0x0],_0x59a1d1[0x1]);}const _0x3bce9e=await _0x100a57['exec'](),_0x2c26b3={};for(const [_0x5946f4,_0x56cf15]of _0x3bce9e['entries']()){const _0x45622d=_0x481196[_0x5946f4],_0x4b1d1f=_0x56cf15[0x1]||_0x56cf15;_0x4b1d1f&&_0x4b1d1f['length']>0x0?_0x2c26b3[_0x45622d]=_0x4b1d1f:_0x2c26b3[_0x45622d]=[];}return _0x2c26b3;}async['setStatus'](_0x4869b0,_0x1b2a34,_0x1269f8,_0xfdc116){const _0x13b86e=this['mintKey'](key_1['KeyType']['JOB_STATE'],{'appId':_0x1269f8,'jobId':_0x1b2a34});return await(_0xfdc116||this['storeClient'])[this['commands']['hincrbyfloat']](_0x13b86e,':',_0x4869b0);}async['getStatus'](_0x50a800,_0x1a83cd){const _0x13972f=this['mintKey'](key_1['KeyType']['JOB_STATE'],{'appId':_0x1a83cd,'jobId':_0x50a800}),_0x755422=await this['storeClient'][this['commands']['hget']](_0x13972f,':');if(_0x755422===null)throw new Error('Job\x20'+_0x50a800+'\x20not\x20found');return Number(_0x755422);}async['setState']({..._0x888782},_0x250806,_0x344594,_0x4ec65d,_0x38b2b6,_0x49f11a){delete _0x888782['metadata/js'];const _0x31686a=this['mintKey'](key_1['KeyType']['JOB_STATE'],{'appId':this['appId'],'jobId':_0x344594}),_0x5fa0e4=await this['getSymbolKeys'](_0x4ec65d),_0x2bf4e6=await this['getSymbolValues']();this['serializer']['resetSymbols'](_0x5fa0e4,_0x2bf4e6,_0x38b2b6);const _0x500682=this['serializer']['package'](_0x888782,_0x4ec65d);return _0x250806!==null?_0x500682[':']=_0x250806['toString']():delete _0x500682[':'],await(_0x49f11a||this['storeClient'])[this['commands']['hset']](_0x31686a,_0x500682),_0x344594;}async['getQueryState'](_0x34c67e,_0xeb9d26){const _0x463cec=this['mintKey'](key_1['KeyType']['JOB_STATE'],{'appId':this['appId'],'jobId':_0x34c67e}),_0xbfc0a2=_0xeb9d26['map'](_0x24c0c4=>{if(_0x24c0c4['startsWith']('\x22'))return _0x24c0c4['slice'](0x1,-0x1);return'_'+_0x24c0c4;}),_0x59f69c=await this['storeClient'][this['commands']['hmget']](_0x463cec,_0xbfc0a2),_0x1b7c0e={};return _0xeb9d26['forEach']((_0x1b240e,_0x3beff7)=>{_0x1b240e['startsWith']('\x22')&&(_0x1b240e=_0x1b240e['slice'](0x1,-0x1)),_0x1b7c0e[_0x1b240e]=_0x59f69c[_0x3beff7];}),_0x1b7c0e;}async['getState'](_0x2d6993,_0x1cf3d3,_0x769d80){const _0x31c7cf=this['mintKey'](key_1['KeyType']['JOB_STATE'],{'appId':this['appId'],'jobId':_0x2d6993}),_0x29de4e=Object['keys'](_0x1cf3d3),_0x55e668=await this['getSymbolKeys'](_0x29de4e);this['serializer']['resetSymbols'](_0x55e668,{},_0x769d80);const _0x18d739=this['serializer']['abbreviate'](_0x1cf3d3,_0x29de4e,[':']),_0x480775=await this['storeClient'][this['commands']['hmget']](_0x31c7cf,_0x18d739),_0xeffb29={};let _0x112bec=![];_0x18d739['forEach']((_0x279737,_0x4fbbd7)=>{_0x480775[_0x4fbbd7]&&(_0x112bec=!![]),_0xeffb29[_0x279737]=_0x480775[_0x4fbbd7];});if(_0x112bec){const _0x48c4c8=await this['getSymbolValues']();this['serializer']['resetSymbols'](_0x55e668,_0x48c4c8,_0x769d80);const _0x2aa906=this['serializer']['unpackage'](_0xeffb29,_0x29de4e);let _0x57b9e9=0x0;return _0x2aa906[':']&&(_0x57b9e9=Number(_0x2aa906[':']),_0x2aa906['metadata/js']=_0x57b9e9,delete _0x2aa906[':']),[_0x2aa906,_0x57b9e9];}else throw new errors_1['GetStateError'](_0x2d6993);}async['getRaw'](_0x4116a8){const _0x1c59a5=this['mintKey'](key_1['KeyType']['JOB_STATE'],{'appId':this['appId'],'jobId':_0x4116a8}),_0x4c9d54=await this['storeClient'][this['commands']['hgetall']](_0x1c59a5);if(!_0x4c9d54)throw new errors_1['GetStateError'](_0x4116a8);return _0x4c9d54;}async['collate'](_0x15be86,_0x58e50f,_0x45a0ab,_0x5b1eed,_0x4fc9dd){const _0x403fc7=this['mintKey'](key_1['KeyType']['JOB_STATE'],{'appId':this['appId'],'jobId':_0x15be86}),_0x522db6=_0x58e50f+'/output/metadata/as',_0x22a78a=[_0x58e50f],_0x4e27ed=await this['getSymbolKeys'](_0x22a78a),_0x3a4398=await this['getSymbolValues']();this['serializer']['resetSymbols'](_0x4e27ed,_0x3a4398,_0x5b1eed);const _0x4eef58={[_0x522db6]:_0x45a0ab['toString']()},_0x44276d=this['serializer']['package'](_0x4eef58,_0x22a78a),_0x452c40=Object['keys'](_0x44276d)[0x0];return await(_0x4fc9dd||this['storeClient'])[this['commands']['hincrbyfloat']](_0x403fc7,_0x452c40,_0x45a0ab);}async['collateSynthetic'](_0x504d58,_0x551c43,_0x24793d,_0x170f9d){const _0x5161d3=this['mintKey'](key_1['KeyType']['JOB_STATE'],{'appId':this['appId'],'jobId':_0x504d58});return await(_0x170f9d||this['storeClient'])[this['commands']['hincrbyfloat']](_0x5161d3,_0x551c43,_0x24793d['toString']());}async['setStateNX'](_0x20cabc,_0x192e9b,_0x2782e1){const _0x267aff=this['mintKey'](key_1['KeyType']['JOB_STATE'],{'appId':_0x192e9b,'jobId':_0x20cabc}),_0x599924=await this['storeClient'][this['commands']['hsetnx']](_0x267aff,':',_0x2782e1?.['toString']()??'1');return this['isSuccessful'](_0x599924);}async['getSchema'](_0x58a220,_0x10a66f){const _0x4f7ec8=this['cache']['getSchema'](_0x10a66f['id'],_0x10a66f['version'],_0x58a220);if(_0x4f7ec8)return _0x4f7ec8;else{const _0x12c128=await this['getSchemas'](_0x10a66f);return _0x12c128[_0x58a220];}}async['getSchemas'](_0x5ec635){let _0x555302=this['cache']['getSchemas'](_0x5ec635['id'],_0x5ec635['version']);if(_0x555302&&Object['keys'](_0x555302)['length']>0x0)return _0x555302;else{const _0x3fc13b={'appId':_0x5ec635['id'],'appVersion':_0x5ec635['version']},_0x12b4d6=this['mintKey'](key_1['KeyType']['SCHEMAS'],_0x3fc13b);_0x555302={};const _0x51de42=await this['storeClient'][this['commands']['hgetall']](_0x12b4d6);return Object['entries'](_0x51de42)['forEach'](([_0x2297f6,_0x1177f8])=>{_0x555302[_0x2297f6]=JSON['parse'](_0x1177f8);}),this['cache']['setSchemas'](_0x5ec635['id'],_0x5ec635['version'],_0x555302),_0x555302;}}async['setSchemas'](_0x4ed677,_0x44756e){const _0x53f7e7={'appId':_0x44756e['id'],'appVersion':_0x44756e['version']},_0x22b18c=this['mintKey'](key_1['KeyType']['SCHEMAS'],_0x53f7e7),_0x4dd7b1={..._0x4ed677};Object['entries'](_0x4dd7b1)['forEach'](([_0x35aa04,_0x1b34e8])=>{_0x4dd7b1[_0x35aa04]=JSON['stringify'](_0x1b34e8);});const _0xec552e=await this['storeClient'][this['commands']['hset']](_0x22b18c,_0x4dd7b1);return this['cache']['setSchemas'](_0x44756e['id'],_0x44756e['version'],_0x4ed677),_0xec552e;}async['setSubscriptions'](_0x68f54e,_0x4d4475){const _0x52f454={'appId':_0x4d4475['id'],'appVersion':_0x4d4475['version']},_0x2f781a=this['mintKey'](key_1['KeyType']['SUBSCRIPTIONS'],_0x52f454),_0x1f5723={..._0x68f54e};Object['entries'](_0x1f5723)['forEach'](([_0x5115f7,_0x313c07])=>{_0x1f5723[_0x5115f7]=JSON['stringify'](_0x313c07);});const _0x116233=await this['storeClient'][this['commands']['hset']](_0x2f781a,_0x1f5723);return this['cache']['setSubscriptions'](_0x4d4475['id'],_0x4d4475['version'],_0x68f54e),this['isSuccessful'](_0x116233);}async['getSubscriptions'](_0x7f664d){let _0x265e33=this['cache']['getSubscriptions'](_0x7f664d['id'],_0x7f664d['version']);if(_0x265e33&&Object['keys'](_0x265e33)['length']>0x0)return _0x265e33;else{const _0x52f669={'appId':_0x7f664d['id'],'appVersion':_0x7f664d['version']},_0x1842ae=this['mintKey'](key_1['KeyType']['SUBSCRIPTIONS'],_0x52f669);return _0x265e33=await this['storeClient'][this['commands']['hgetall']](_0x1842ae)||{},Object['entries'](_0x265e33)['forEach'](([_0x14b6cf,_0x36b543])=>{_0x265e33[_0x14b6cf]=JSON['parse'](_0x36b543);}),this['cache']['setSubscriptions'](_0x7f664d['id'],_0x7f664d['version'],_0x265e33),_0x265e33;}}async['getSubscription'](_0x3a7e5c,_0x271955){const _0x16e530=await this['getSubscriptions'](_0x271955);return _0x16e530[_0x3a7e5c];}async['setTransitions'](_0x3f6bc4,_0x2d374d){const _0xf272e6={'appId':_0x2d374d['id'],'appVersion':_0x2d374d['version']},_0xb7efa2=this['mintKey'](key_1['KeyType']['SUBSCRIPTION_PATTERNS'],_0xf272e6),_0x280628={..._0x3f6bc4};Object['entries'](_0x280628)['forEach'](([_0x116060,_0xa058ed])=>{_0x280628[_0x116060]=JSON['stringify'](_0xa058ed);});if(Object['keys'](_0x280628)['length']!==0x0){const _0x8de93f=await this['storeClient'][this['commands']['hset']](_0xb7efa2,_0x280628);return this['cache']['setTransitions'](_0x2d374d['id'],_0x2d374d['version'],_0x3f6bc4),_0x8de93f;}}async['getTransitions'](_0x344cfd){let _0x1bb6cc=this['cache']['getTransitions'](_0x344cfd['id'],_0x344cfd['version']);if(_0x1bb6cc&&Object['keys'](_0x1bb6cc)['length']>0x0)return _0x1bb6cc;else{const _0x3bd781={'appId':_0x344cfd['id'],'appVersion':_0x344cfd['version']},_0x4dc8a0=this['mintKey'](key_1['KeyType']['SUBSCRIPTION_PATTERNS'],_0x3bd781);_0x1bb6cc={};const _0x67ce3f=await this['storeClient'][this['commands']['hgetall']](_0x4dc8a0);return Object['entries'](_0x67ce3f)['forEach'](([_0x547289,_0x875431])=>{_0x1bb6cc[_0x547289]=JSON['parse'](_0x875431);}),this['cache']['setTransitions'](_0x344cfd['id'],_0x344cfd['version'],_0x1bb6cc),_0x1bb6cc;}}async['setHookRules'](_0x2819ec){const _0x1e6f5c=this['mintKey'](key_1['KeyType']['HOOKS'],{'appId':this['appId']}),_0x1f8c46={};Object['entries'](_0x2819ec)['forEach'](([_0x46d5ec,_0x4389b6])=>{_0x1f8c46[_0x46d5ec['toString']()]=JSON['stringify'](_0x4389b6);});if(Object['keys'](_0x1f8c46)['length']!==0x0){const _0x328afd=await this['storeClient'][this['commands']['hset']](_0x1e6f5c,_0x1f8c46);return this['cache']['setHookRules'](this['appId'],_0x2819ec),_0x328afd;}}async['getHookRules'](){let _0x46bfd3=this['cache']['getHookRules'](this['appId']);if(_0x46bfd3&&Object['keys'](_0x46bfd3)['length']>0x0)return _0x46bfd3;else{const _0x3b8eb5=this['mintKey'](key_1['KeyType']['HOOKS'],{'appId':this['appId']}),_0x2b274e=await this['storeClient'][this['commands']['hgetall']](_0x3b8eb5);return _0x46bfd3={},Object['entries'](_0x2b274e)['forEach'](([_0x108548,_0x578729])=>{_0x46bfd3[_0x108548]=JSON['parse'](_0x578729);}),this['cache']['setHookRules'](this['appId'],_0x46bfd3),_0x46bfd3;}}async['setHookSignal'](_0x17f996,_0x153f76){const _0x11dc7f=this['mintKey'](key_1['KeyType']['SIGNALS'],{'appId':this['appId']}),{topic:_0x18a64a,resolved:_0x5da10e,jobId:_0xc1a8e}=_0x17f996,_0x22c919=_0x18a64a+':'+_0x5da10e;await this['setnxex'](_0x11dc7f+':'+_0x22c919,_0xc1a8e,Math['max'](_0x17f996['expire'],enums_1['HMSH_SIGNAL_EXPIRE']));}async['getHookSignal'](_0x53bc1f,_0x359c8c){const _0x15987a=this['mintKey'](key_1['KeyType']['SIGNALS'],{'appId':this['appId']}),_0x5b1c37=await this['storeClient'][this['commands']['get']](_0x15987a+':'+_0x53bc1f+':'+_0x359c8c);return _0x5b1c37?_0x5b1c37['toString']():undefined;}async['deleteHookSignal'](_0x38b9a1,_0x438722){const _0x21c95f=this['mintKey'](key_1['KeyType']['SIGNALS'],{'appId':this['appId']}),_0x4c895b=await this['storeClient'][this['commands']['del']](_0x21c95f+':'+_0x38b9a1+':'+_0x438722);return _0x4c895b?Number(_0x4c895b):undefined;}async['addTaskQueues'](_0x5bc12a){const _0x21aec0=this['getMulti'](),_0x5874f7=this['mintKey'](key_1['KeyType']['WORK_ITEMS'],{'appId':this['appId']});for(const _0x5836cc of _0x5bc12a){_0x21aec0[this['commands']['zadd']](_0x5874f7,{'score':Date['now']()['toString'](),'value':_0x5836cc},{'NX':!![]});}await _0x21aec0['exec']();}async['getActiveTaskQueue'](){let _0x1283c7=this['cache']['getActiveTaskQueue'](this['appId'])||null;if(!_0x1283c7){const _0x11d372=this['mintKey'](key_1['KeyType']['WORK_ITEMS'],{'appId':this['appId']}),_0x274da9=await this['storeClient'][this['commands']['zrange']](_0x11d372,0x0,0x0);_0x1283c7=_0x274da9['length']>0x0?_0x274da9[0x0]:null,_0x1283c7&&this['cache']['setWorkItem'](this['appId'],_0x1283c7);}return _0x1283c7;}async['deleteProcessedTaskQueue'](_0x22f815,_0xc3cc5e,_0x2876d9,_0x3039bd=![]){const _0x195c8f=this['mintKey'](key_1['KeyType']['WORK_ITEMS'],{'appId':this['appId']}),_0x3b3949=await this['storeClient'][this['commands']['zrem']](_0x195c8f,_0x22f815);_0x3b3949&&(_0x3039bd?(this['storeClient'][this['commands']['expire']](_0x2876d9,0x0),this['storeClient'][this['commands']['expire']](_0xc3cc5e['split'](':')['slice'](0x0,0x5)['join'](':'),0x0)):await this['storeClient'][this['commands']['rename']](_0x2876d9,_0xc3cc5e)),this['cache']['removeWorkItem'](this['appId']);}async['processTaskQueue'](_0x5a222d,_0x523048){return await this['storeClient'][this['commands']['lmove']](_0x5a222d,_0x523048,'LEFT','RIGHT');}async['expireJob'](_0x255de4,_0x90e5d9,_0x27659f){if(!isNaN(_0x90e5d9)&&_0x90e5d9>0x0){const _0x2fb484=this['mintKey'](key_1['KeyType']['JOB_STATE'],{'appId':this['appId'],'jobId':_0x255de4});await(_0x27659f||this['storeClient'])[this['commands']['expire']](_0x2fb484,_0x90e5d9);}}async['getDependencies'](_0x1fc077){const _0x10e300={'appId':this['appId'],'jobId':_0x1fc077},_0x425947=this['mintKey'](key_1['KeyType']['JOB_DEPENDENTS'],_0x10e300);return this['storeClient'][this['commands']['lrange']](_0x425947,0x0,-0x1);}async['registerTimeHook'](_0x407427,_0x31ee0a,_0x40760f,_0x40b190,_0x40b339,_0x154a84,_0x41afc0){const _0x233f11=this['mintKey'](key_1['KeyType']['TIME_RANGE'],{'appId':this['appId'],'timeValue':_0x40b339}),_0x5728aa=[_0x40b190,_0x40760f,_0x31ee0a,_0x154a84,_0x407427]['join'](key_1['VALSEP']),_0x289455=await(_0x41afc0||this['storeClient'])[this['commands']['rpush']](_0x233f11,_0x5728aa);if(_0x41afc0||_0x289455===0x1){const _0x5269f8=this['mintKey'](key_1['KeyType']['TIME_RANGE'],{'appId':this['appId']});await this['zAdd'](_0x5269f8,_0x40b339['toString'](),_0x233f11,_0x41afc0);}}async['getNextTask'](_0x551247){const _0x61436a=this['mintKey'](key_1['KeyType']['TIME_RANGE'],{'appId':this['appId']});_0x551247=_0x551247||await this['zRangeByScore'](_0x61436a,0x0,Date['now']());if(_0x551247){let [_0x154be2,_0x30f491]=this['resolveTaskKeyContext'](_0x551247);const _0x435db1=await this['storeClient'][this['commands']['lpop']](_0x30f491);if(_0x435db1){let [_0x495a2c,_0x1e5801,_0x46f9dd,_0x36ab24,..._0x21219b]=_0x435db1['split'](key_1['VALSEP']);const _0x5eff16=_0x21219b['join'](key_1['VALSEP']);if(_0x495a2c==='delist')_0x154be2='delist';else{if(_0x495a2c==='child')_0x154be2='child';else _0x495a2c==='expire-child'&&(_0x495a2c='expire');}return[_0x551247,_0x5eff16,_0x46f9dd,_0x1e5801,_0x154be2];}return await this['storeClient'][this['commands']['zrem']](_0x61436a,_0x551247),!![];}return![];}['resolveTaskKeyContext'](_0x34cb6e){if(_0x34cb6e['startsWith'](key_1['TYPSEP']+'INTERRUPT'))return['interrupt',_0x34cb6e['split'](key_1['TYPSEP'])[0x2]];else return _0x34cb6e['startsWith'](key_1['TYPSEP']+'EXPIRE')?['expire',_0x34cb6e['split'](key_1['TYPSEP'])[0x2]]:['sleep',_0x34cb6e];}async['interrupt'](_0x1e2a5e,_0x21e94f,_0x5b4469={}){try{const _0x34b72a=await this['getStatus'](_0x21e94f,this['appId']);if(_0x34b72a<=0x0)throw new Error('Job\x20'+_0x21e94f+'\x20already\x20completed');const _0x86c10b=-0x3b9aca00,_0x502d89=this['mintKey'](key_1['KeyType']['JOB_STATE'],{'appId':this['appId'],'jobId':_0x21e94f}),_0x48b95a=await this['storeClient'][this['commands']['hincrbyfloat']](_0x502d89,':',_0x86c10b);if(_0x48b95a<=_0x86c10b)throw new Error('Job\x20'+_0x21e94f+'\x20already\x20completed');if(_0x5b4469['throw']!==![]){const _0xec5877='metadata/err',_0x44c173=['$'+_0x1e2a5e],_0xe5fba9=await this['getSymbolKeys'](_0x44c173),_0x566559=await this['getSymbolValues']();this['serializer']['resetSymbols'](_0xe5fba9,_0x566559,{});const _0xcc4103=JSON['stringify']({'code':_0x5b4469['code']??enums_1['HMSH_CODE_INTERRUPT'],'message':_0x5b4469['reason']??'job\x20['+_0x21e94f+']\x20interrupted','stack':_0x5b4469['stack']??'','job_id':_0x21e94f}),_0x4b90d8={[_0xec5877]:_0x86c10b['toString']()},_0x2a00a9=this['serializer']['package'](_0x4b90d8,_0x44c173),_0x52b7fd=Object['keys'](_0x2a00a9)[0x0];await this['storeClient'][this['commands']['hset']](_0x502d89,_0x52b7fd,_0xcc4103);}}catch(_0x212658){if(!_0x5b4469['suppress'])throw _0x212658;else this['logger']['debug']('suppressed-interrupt',{'message':_0x212658['message']});}}async['scrub'](_0x1d82b2){const _0x2a2e8c=this['mintKey'](key_1['KeyType']['JOB_STATE'],{'appId':this['appId'],'jobId':_0x1d82b2});await this['storeClient'][this['commands']['del']](_0x2a2e8c);}async['findJobs'](_0x1932c7='*',_0x3495e9=0x3e8,_0x4badbd=0x3e8,_0x57ffdf='0'){const _0x49dabd=this['mintKey'](key_1['KeyType']['JOB_STATE'],{'appId':this['appId'],'jobId':_0x1932c7});let _0x2c7c82;const _0xb8ce1d=[];do{const _0xb9cb9e=await this['exec']('SCAN',_0x57ffdf,'MATCH',_0x49dabd,'COUNT',_0x4badbd['toString']());if(Array['isArray'](_0xb9cb9e)){[_0x57ffdf,_0x2c7c82]=_0xb9cb9e;for(const _0x7c9dfd of[..._0x2c7c82]){_0xb8ce1d['push'](_0x7c9dfd);}if(_0xb8ce1d['length']>=_0x3495e9)break;}else break;}while(_0x57ffdf!=='0');return[_0x57ffdf,_0xb8ce1d];}async['findJobFields'](_0x253e52,_0xf56675='*',_0x48e6bf=0x3e8,_0x586de1=0x3e8,_0x306034='0'){let _0x49b690=[];const _0xe0be15={},_0x14c3b5=this['mintKey'](key_1['KeyType']['JOB_STATE'],{'appId':this['appId'],'jobId':_0x253e52});let _0x15fd7d=0x0;do{const _0x33b233=await this['exec']('HSCAN',_0x14c3b5,_0x306034,'MATCH',_0xf56675,'COUNT',_0x586de1['toString']());if(Array['isArray'](_0x33b233)){[_0x306034,_0x49b690]=_0x33b233;for(let _0x4935c9=0x0;_0x4935c9<_0x49b690['length'];_0x4935c9+=0x2){_0x15fd7d++,_0xe0be15[_0x49b690[_0x4935c9]]=_0x49b690[_0x4935c9+0x1];}}else break;}while(_0x306034!=='0'&&_0x15fd7d<_0x48e6bf);return[_0x306034,_0xe0be15];}async['setThrottleRate'](_0x44121b){const _0x116393=this['mintKey'](key_1['KeyType']['THROTTLE_RATE'],{'appId':this['appId']});if(_0x44121b['guid'])return;const _0x1d3c38=_0x44121b['throttle']['toString']();if(_0x44121b['topic'])await this['storeClient'][this['commands']['hset']](_0x116393,{[_0x44121b['topic']]:_0x1d3c38});else{const _0x5e65af=this['getMulti']();_0x5e65af[this['commands']['del']](_0x116393),_0x5e65af[this['commands']['hset']](_0x116393,{':':_0x1d3c38}),await _0x5e65af['exec']();}}async['getThrottleRates'](){const _0x297a5d=this['mintKey'](key_1['KeyType']['THROTTLE_RATE'],{'appId':this['appId']}),_0x11dc82=await this['storeClient'][this['commands']['hgetall']](_0x297a5d);return _0x11dc82??{};}async['getThrottleRate'](_0x43ceb1){const _0x572bf7=(_0x5be6e8,_0x13a0d7)=>{const _0x5bd73e=_0x13a0d7 in _0x5be6e8?Number(_0x5be6e8[_0x13a0d7]):0x0;if(isNaN(_0x5bd73e))return 0x0;if(_0x5bd73e==-0x1)return enums_1['MAX_DELAY'];return Math['max'](Math['min'](_0x5bd73e,enums_1['MAX_DELAY']),0x0);},_0x359e18=await this['getThrottleRates'](),_0x454eb0=_0x572bf7(_0x359e18,':');if(_0x43ceb1===':'||!(_0x43ceb1 in _0x359e18))return _0x454eb0;return _0x572bf7(_0x359e18,_0x43ceb1);}}exports['RedisStoreBase']=RedisStoreBase;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { IORedisClientType as RedisClientType, IORedisMultiType as RedisMultiType } from '../../../../types/redis';
|
|
2
|
+
import { RedisStoreBase } from './_base';
|
|
3
|
+
import { StoreInitializable } from '../store-initializable';
|
|
4
|
+
declare class IORedisStoreService extends RedisStoreBase<RedisClientType, RedisMultiType> implements StoreInitializable {
|
|
5
|
+
constructor(storeClient: RedisClientType);
|
|
6
|
+
getMulti(): RedisMultiType;
|
|
7
|
+
exec(...args: any[]): Promise<string | string[] | string[][]>;
|
|
8
|
+
setnxex(key: string, value: string, expireSeconds: number): Promise<boolean>;
|
|
9
|
+
hGetAllResult(result: any): any;
|
|
10
|
+
addTaskQueues(keys: string[]): Promise<void>;
|
|
11
|
+
}
|
|
12
|
+
export { IORedisStoreService };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';(function(_0x223d13,_0x5616cb){const _0x48378a=_0xbddf,_0xa9668c=_0x223d13();while(!![]){try{const _0x4342af=parseInt(_0x48378a(0x105))/0x1*(-parseInt(_0x48378a(0x109))/0x2)+parseInt(_0x48378a(0x106))/0x3+parseInt(_0x48378a(0x101))/0x4+-parseInt(_0x48378a(0x104))/0x5+-parseInt(_0x48378a(0x103))/0x6*(parseInt(_0x48378a(0x102))/0x7)+parseInt(_0x48378a(0x108))/0x8+parseInt(_0x48378a(0x100))/0x9*(parseInt(_0x48378a(0x107))/0xa);if(_0x4342af===_0x5616cb)break;else _0xa9668c['push'](_0xa9668c['shift']());}catch(_0x2462da){_0xa9668c['push'](_0xa9668c['shift']());}}}(_0x9c27,0x8a45d));Object['defineProperty'](exports,'__esModule',{'value':!![]}),exports['IORedisStoreService']=void 0x0;function _0xbddf(_0x769355,_0x2cdd3b){const _0x9c27f5=_0x9c27();return _0xbddf=function(_0xbddf75,_0x31a36c){_0xbddf75=_0xbddf75-0x100;let _0x56bf3f=_0x9c27f5[_0xbddf75];return _0x56bf3f;},_0xbddf(_0x769355,_0x2cdd3b);}const key_1=require('../../../../modules/key'),enums_1=require('../../../../modules/enums'),_base_1=require('./_base');class IORedisStoreService extends _base_1['RedisStoreBase']{constructor(_0x4475c3){super(_0x4475c3),this['commands']={'get':'get','set':'set','setnx':'setnx','del':'del','expire':'expire','hset':'hset','hscan':'hscan','hsetnx':'hsetnx','hincrby':'hincrby','hdel':'hdel','hget':'hget','hmget':'hmget','hgetall':'hgetall','hincrbyfloat':'hincrbyfloat','zrank':'zrank','zrange':'zrange','zrangebyscore_withscores':'zrangebyscore','zrangebyscore':'zrangebyscore','zrem':'zrem','zadd':'zadd','lmove':'lmove','lpop':'lpop','lrange':'lrange','rename':'rename','rpush':'rpush','scan':'scan','xack':'xack','xdel':'xdel'};}['getMulti'](){const _0xa9b642=this;if(enums_1['HMSH_IS_CLUSTER']){const _0x3024bd=[],_0x372a79=(_0x4286e0,_0x2a5d86)=>{return _0x3024bd['push']({'command':_0x4286e0,'args':_0x2a5d86}),_0x3e421f;},_0x3e421f={'sendCommand'(_0x58abb2){return _0xa9b642['storeClient']['sendCommand'](_0x58abb2);},async 'exec'(){if(_0x3024bd['length']===0x0)return[];const _0x4245f0=_0x3024bd['every'](_0x6c6fc0=>{return _0x6c6fc0['args'][0x0]===_0x3024bd[0x0]['args'][0x0];});if(_0x4245f0){const _0x164de2=_0xa9b642['storeClient']['multi']();_0x3024bd['forEach'](_0x94cede=>_0x164de2[_0x94cede['command']](..._0x94cede['args']));const _0x128193=await _0x164de2['exec']();return _0x128193['map'](_0x4f364b=>_0x4f364b);}else return Promise['all'](_0x3024bd['map'](_0x51123d=>_0xa9b642['storeClient'][_0x51123d['command']](..._0x51123d['args'])));},'xadd'(_0x420fc4,_0x381058,_0x15a089,_0x5ca022){return _0x372a79('xadd',[_0x420fc4,_0x381058,_0x15a089,_0x5ca022]);},'xack'(_0x5e824a,_0x6c28d0,_0x4a4ac0){return _0x372a79('xack',[_0x5e824a,_0x6c28d0,_0x4a4ac0]);},'xdel'(_0x1d5add,_0x5abb47){return _0x372a79('xdel',[_0x1d5add,_0x5abb47]);},'xlen'(_0x323e28){return _0x372a79('xlen',[_0x323e28]);},'xpending'(_0x50a0e7,_0x5bbdda,_0x405134,_0x5e1784,_0x8babca,_0x27cfc5){return _0x372a79('xpending',[_0x50a0e7,_0x5bbdda,_0x405134,_0x5e1784,_0x8babca,_0x27cfc5]);},'xclaim'(_0x4639d0,_0x4800bc,_0x3fd162,_0x43ce4a,_0x1163fc,..._0x2dcc14){return _0x372a79('xclaim',[_0x4639d0,_0x4800bc,_0x3fd162,_0x43ce4a,_0x1163fc,..._0x2dcc14]);},'del'(_0x2d2cd3){return _0x372a79('del',[_0x2d2cd3]);},'expire':function(_0x3e1590,_0x57e500){return _0x372a79('expire',[_0x3e1590,_0x57e500]);},'hdel'(_0x57b2ff,_0x392949){return _0x372a79('hdel',[_0x57b2ff,_0x392949]);},'hget'(_0x6f0bab,_0x3e0ab4){return _0x372a79('hget',[_0x6f0bab,_0x3e0ab4]);},'hgetall'(_0x5b7498){return _0x372a79('hgetall',[_0x5b7498]);},'hincrbyfloat'(_0x5ef1a1,_0x9db809,_0xb8aeee){return _0x372a79('hincrbyfloat',[_0x5ef1a1,_0x9db809,_0xb8aeee]);},'hmget'(_0x285499,_0x591ac1){return _0x372a79('hmget',[_0x285499,_0x591ac1]);},'hset'(_0x220cea,_0x5ee0de){return _0x372a79('hset',[_0x220cea,_0x5ee0de]);},'lrange'(_0x398bcc,_0x5d3b53,_0x54c937){return _0x372a79('lrange',[_0x398bcc,_0x5d3b53,_0x54c937]);},'rpush'(_0x180217,_0x481a3b){return _0x372a79('rpush',[_0x180217,_0x481a3b]);},'zadd'(..._0x2694b1){return _0x372a79('zadd',_0x2694b1);},'xgroup'(_0x53cf85,_0x1b8280,_0x44b520,_0x47bf8a,_0x4bea2a){return _0x372a79('xgroup',[_0x53cf85,_0x1b8280,_0x44b520,_0x47bf8a,_0x4bea2a]);}};return _0x3e421f;}return this['storeClient']['multi']();}async['exec'](..._0x552528){const _0x535975=await this['storeClient']['call']['apply'](this['storeClient'],_0x552528);if(typeof _0x535975==='string')return _0x535975;else{if(Array['isArray'](_0x535975)){if(Array['isArray'](_0x535975[0x0]))return _0x535975;return _0x535975;}}return _0x535975;}async['setnxex'](_0x182859,_0xe88476,_0x4b94ca){const _0x58dd2d=await this['storeClient'][this['commands']['set']](_0x182859,_0xe88476,'NX','EX',_0x4b94ca['toString']());return this['isSuccessful'](_0x58dd2d);}['hGetAllResult'](_0x5c8c81){return _0x5c8c81[0x1];}async['addTaskQueues'](_0x541542){const _0xfda87f=this['storeClient']['multi'](),_0x1d0fe9=this['mintKey'](key_1['KeyType']['WORK_ITEMS'],{'appId':this['appId']});for(const _0x180d96 of _0x541542){_0xfda87f['zadd'](_0x1d0fe9,'NX',Date['now'](),_0x180d96);}await _0xfda87f['exec']();}}function _0x9c27(){const _0xdcf434=['377526ayXunO','4382640sKCfiD','11KObFYQ','1684557iWBfdO','10360040RKpdxv','3254416qMjKbB','124646STdcJl','9fiOJAx','748168zBNVMB','7HUglQn'];_0x9c27=function(){return _0xdcf434;};return _0x9c27();}exports['IORedisStoreService']=IORedisStoreService;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { RedisStoreBase } from './_base';
|
|
2
|
+
import { StoreInitializable } from '../store-initializable';
|
|
3
|
+
import { RedisRedisClientType as RedisClientType, RedisRedisMultiType as RedisMultiType } from '../../../../types/redis';
|
|
4
|
+
declare class RedisStoreService extends RedisStoreBase<RedisClientType, RedisMultiType> implements StoreInitializable {
|
|
5
|
+
constructor(storeClient: RedisClientType);
|
|
6
|
+
getMulti(): RedisMultiType;
|
|
7
|
+
exec(...args: any[]): Promise<string | string[] | string[][]>;
|
|
8
|
+
setnxex(key: string, value: string, expireSeconds: number): Promise<boolean>;
|
|
9
|
+
zAdd(key: string, score: number | string, value: string | number, redisMulti?: RedisMultiType): Promise<any>;
|
|
10
|
+
zRangeByScoreWithScores(key: string, score: number | string, value: string | number): Promise<string | null>;
|
|
11
|
+
zRangeByScore(key: string, score: number | string, value: string | number): Promise<string | null>;
|
|
12
|
+
}
|
|
13
|
+
export { RedisStoreService };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';function _0x4ca5(_0x2a86f0,_0x190e14){const _0x4929ec=_0x4929();return _0x4ca5=function(_0x4ca56c,_0x595dfb){_0x4ca56c=_0x4ca56c-0xb3;let _0x300a2d=_0x4929ec[_0x4ca56c];return _0x300a2d;},_0x4ca5(_0x2a86f0,_0x190e14);}function _0x4929(){const _0x2252cc=['7438320OYjqTB','1031450fbelYa','7053939zlyfEU','509295EualOc','30ougudv','55032enRSYO','1841400OBmoRE','150098mYdjDr','220AwByuO'];_0x4929=function(){return _0x2252cc;};return _0x4929();}(function(_0x110b32,_0xba65a7){const _0x7274f3=_0x4ca5,_0x54dbb5=_0x110b32();while(!![]){try{const _0x281405=-parseInt(_0x7274f3(0xb7))/0x1+parseInt(_0x7274f3(0xbb))/0x2*(-parseInt(_0x7274f3(0xb8))/0x3)+-parseInt(_0x7274f3(0xba))/0x4+parseInt(_0x7274f3(0xb3))/0x5*(parseInt(_0x7274f3(0xb9))/0x6)+parseInt(_0x7274f3(0xb5))/0x7+parseInt(_0x7274f3(0xb4))/0x8+parseInt(_0x7274f3(0xb6))/0x9;if(_0x281405===_0xba65a7)break;else _0x54dbb5['push'](_0x54dbb5['shift']());}catch(_0x1d64b9){_0x54dbb5['push'](_0x54dbb5['shift']());}}}(_0x4929,0x84e58));Object['defineProperty'](exports,'__esModule',{'value':!![]}),exports['RedisStoreService']=void 0x0;const enums_1=require('../../../../modules/enums'),_base_1=require('./_base');class RedisStoreService extends _base_1['RedisStoreBase']{constructor(_0x373415){super(_0x373415),this['commands']={'get':'GET','set':'SET','setnx':'SETNX','del':'DEL','expire':'EXPIRE','hscan':'HSCAN','hset':'HSET','hsetnx':'HSETNX','hincrby':'HINCRBY','hdel':'HDEL','hget':'HGET','hmget':'HMGET','hgetall':'HGETALL','hincrbyfloat':'HINCRBYFLOAT','zrange':'ZRANGE','zrangebyscore_withscores':'ZRANGEBYSCORE_WITHSCORES','zrangebyscore':'ZRANGEBYSCORE','zrem':'ZREM','zadd':'ZADD','lmove':'LMOVE','lrange':'LRANGE','lpop':'LPOP','rename':'RENAME','rpush':'RPUSH','scan':'SCAN','xack':'XACK','xdel':'XDEL','xlen':'XLEN'};}['getMulti'](){const _0x201b13=this;if(enums_1['HMSH_IS_CLUSTER']){const _0x3bc32a=[],_0x1b1439=(_0x4df4e6,_0x18463b)=>{return _0x3bc32a['push']({'command':_0x4df4e6['toUpperCase'](),'args':_0x18463b}),_0x360c7b;},_0x360c7b={'sendCommand'(_0x28281d,..._0xdcc651){return _0x201b13['storeClient']['sendCommand']([_0x28281d,..._0xdcc651]);},async 'exec'(){if(_0x3bc32a['length']===0x0)return[];const _0x123935=_0x3bc32a['every'](_0x3388e6=>{return _0x3388e6['args'][0x0]===_0x3bc32a[0x0]['args'][0x0];});if(_0x123935){const _0x3ee90=_0x201b13['storeClient']['multi']();_0x3bc32a['forEach'](_0x4651cb=>{if(_0x4651cb['command']==='ZADD')return _0x3ee90['ZADD'](_0x4651cb['args'][0x0],_0x4651cb['args'][0x1],_0x4651cb['args'][0x2]);return _0x3ee90[_0x4651cb['command']](..._0x4651cb['args']);});const _0x285abf=await _0x3ee90['exec']();return _0x285abf['map'](_0x4953da=>_0x4953da);}else return Promise['all'](_0x3bc32a['map'](_0x20c25b=>{if(_0x20c25b['command']==='ZADD')return _0x201b13['storeClient']['ZADD'](_0x20c25b['args'][0x0],_0x20c25b['args'][0x1],_0x20c25b['args'][0x2]);return _0x201b13['storeClient'][_0x20c25b['command']](..._0x20c25b['args']);}));},'XADD'(_0x489c7c,_0x520207,_0x1d1722,_0x30d04e){return _0x1b1439('XADD',[_0x489c7c,_0x520207,_0x1d1722,_0x30d04e]);},'XACK'(_0x8030f8,_0x81da86,_0x7ea592){return _0x1b1439('XACK',[_0x8030f8,_0x81da86,_0x7ea592]);},'XDEL'(_0x21565e,_0x59798b){return _0x1b1439('XDEL',[_0x21565e,_0x59798b]);},'XLEN'(_0xd71c9c){return _0x1b1439('XLEN',[_0xd71c9c]);},'XCLAIM'(_0x4a3e84,_0x47d666,_0x12d3de,_0x37eca4,_0x5be2af,..._0x189afd){return _0x1b1439('XCLAIM',[_0x4a3e84,_0x47d666,_0x12d3de,_0x37eca4,_0x5be2af,..._0x189afd]);},'XPENDING'(_0x487feb,_0x2a929e,_0x57beb9,_0x49f552,_0x489888,_0x941e11){return _0x1b1439('XPENDING',[_0x487feb,_0x2a929e,_0x57beb9,_0x49f552,_0x489888,_0x941e11]);},'DEL':function(_0x314867){return _0x1b1439('DEL',[_0x314867]);},'EXPIRE':function(_0x55babd,_0x51f424){return _0x1b1439('EXPIRE',[_0x55babd,_0x51f424]);},'HDEL'(_0x4a8133,_0x5f2aa7){return _0x1b1439('HDEL',[_0x4a8133,_0x5f2aa7]);},'HGET'(_0xf782de,_0x4066c7){return _0x1b1439('HGET',[_0xf782de,_0x4066c7]);},'HGETALL'(_0x1edc62){return _0x1b1439('HGETALL',[_0x1edc62]);},'HINCRBYFLOAT'(_0x36f88a,_0x2c189a,_0x1d14cb){return _0x1b1439('HINCRBYFLOAT',[_0x36f88a,_0x2c189a,_0x1d14cb]);},'HMGET'(_0x3da6e5,_0x1d3efd){return _0x1b1439('HMGET',[_0x3da6e5,_0x1d3efd]);},'HSET'(_0x2af371,_0x659496){return _0x1b1439('HSET',[_0x2af371,_0x659496]);},'LRANGE'(_0x45afa8,_0x30c3c5,_0xe914f){return _0x1b1439('LRANGE',[_0x45afa8,_0x30c3c5,_0xe914f]);},'RPUSH'(_0x2f50ba,_0x5c4297){return _0x1b1439('RPUSH',[_0x2f50ba,_0x5c4297]);},'ZADD'(_0xe9fc9e,_0x2b35a2,_0x4b7e05){return _0x1b1439('ZADD',[_0xe9fc9e,_0x2b35a2,_0x4b7e05]);},'XGROUP'(_0x38a459,_0x56da6f,_0x485f7b,_0x476d3b,_0x13000b){return _0x1b1439('XGROUP',[_0x38a459,_0x56da6f,_0x485f7b,_0x476d3b,_0x13000b]);},'EXISTS':function(_0x41e69e){throw new Error('Function\x20not\x20implemented.');},'HMPUSH':function(_0x5c2c8b,_0x3d7690){throw new Error('Function\x20not\x20implemented.');},'LPUSH':function(_0x522115,_0x5e3141){throw new Error('Function\x20not\x20implemented.');},'SET':function(_0x20dd27,_0x431b20){throw new Error('Function\x20not\x20implemented.');},'ZRANGE_WITHSCORES':function(_0x3e9bea,_0x5eb8ad,_0x17c7b7){throw new Error('Function\x20not\x20implemented.');},'ZRANK':function(_0x4f17e2,_0x1c18e8){throw new Error('Function\x20not\x20implemented.');},'ZSCORE':function(_0x5a45b5,_0x2b5727){throw new Error('Function\x20not\x20implemented.');}};return _0x360c7b;}return this['storeClient']['multi']();}async['exec'](..._0x3c27ff){return await this['storeClient']['sendCommand'](_0x3c27ff);}async['setnxex'](_0x2bf64b,_0x1e7e4d,_0x1a024b){const _0x109a29=await this['storeClient'][this['commands']['set']](_0x2bf64b,_0x1e7e4d,{'NX':!![],'EX':_0x1a024b});return this['isSuccessful'](_0x109a29);}async['zAdd'](_0x402104,_0x22139f,_0x59b3c3,_0x447335){return await(_0x447335||this['storeClient'])[this['commands']['zadd']](_0x402104,{'score':_0x22139f,'value':_0x59b3c3['toString']()});}async['zRangeByScoreWithScores'](_0x243d6a,_0x3857ea,_0x1b7cbb){const _0x386cdf=await this['storeClient'][this['commands']['zrangebyscore_withscores']](_0x243d6a,_0x3857ea,_0x1b7cbb);if(_0x386cdf?.['length']>0x0)return _0x386cdf[0x0];return null;}async['zRangeByScore'](_0x53eb40,_0x4945e1,_0x5c5028){const _0x1c2db6=await this['storeClient'][this['commands']['zrangebyscore']](_0x53eb40,_0x4945e1,_0x5c5028);if(_0x1c2db6?.['length']>0x0)return _0x1c2db6[0x0];return null;}}exports['RedisStoreService']=RedisStoreService;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';(function(_0x5a04e1,_0x56cf31){var _0x1eed3e=_0x48f5,_0x27b3b6=_0x5a04e1();while(!![]){try{var _0x316368=parseInt(_0x1eed3e(0x139))/0x1*(-parseInt(_0x1eed3e(0x13a))/0x2)+-parseInt(_0x1eed3e(0x13c))/0x3+-parseInt(_0x1eed3e(0x13e))/0x4+parseInt(_0x1eed3e(0x13f))/0x5*(-parseInt(_0x1eed3e(0x140))/0x6)+parseInt(_0x1eed3e(0x142))/0x7+-parseInt(_0x1eed3e(0x13b))/0x8*(parseInt(_0x1eed3e(0x141))/0x9)+parseInt(_0x1eed3e(0x13d))/0xa;if(_0x316368===_0x56cf31)break;else _0x27b3b6['push'](_0x27b3b6['shift']());}catch(_0x29e256){_0x27b3b6['push'](_0x27b3b6['shift']());}}}(_0x303b,0xd5927));function _0x48f5(_0x25dc8d,_0x1dd0b1){var _0x303b29=_0x303b();return _0x48f5=function(_0x48f5ba,_0x2cc116){_0x48f5ba=_0x48f5ba-0x139;var _0x4b57ff=_0x303b29[_0x48f5ba];return _0x4b57ff;},_0x48f5(_0x25dc8d,_0x1dd0b1);}function _0x303b(){var _0x57afdc=['81734LJsizU','11895816fGCyAC','3176931oCbNdX','49519070XSViMm','1056296KKGIBr','1165KcwSJm','29226hjtcie','9kepzqX','3079951fRyOwI','14VnYTHI'];_0x303b=function(){return _0x57afdc;};return _0x303b();}Object['defineProperty'](exports,'__esModule',{'value':!![]});
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { RedisClient } from '../../types/redis';
|
|
2
2
|
import { ILogger } from '../logger';
|
|
3
3
|
import { StreamService } from './index';
|
|
4
|
+
import { StreamInitializable } from './providers/stream-initializable';
|
|
4
5
|
declare class StreamServiceFactory {
|
|
5
|
-
static init(redisClient: RedisClient, namespace: string, appId: string, logger: ILogger): Promise<StreamService<any, any>>;
|
|
6
|
+
static init(redisClient: RedisClient, redisStoreClient: RedisClient, namespace: string, appId: string, logger: ILogger): Promise<StreamService<any, any> & StreamInitializable<any, any>>;
|
|
6
7
|
}
|
|
7
8
|
export { StreamServiceFactory };
|
|
@@ -2,16 +2,16 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.StreamServiceFactory = void 0;
|
|
4
4
|
const utils_1 = require("../../modules/utils");
|
|
5
|
-
const ioredis_1 = require("./
|
|
6
|
-
const redis_1 = require("./
|
|
5
|
+
const ioredis_1 = require("./providers/redis/ioredis");
|
|
6
|
+
const redis_1 = require("./providers/redis/redis");
|
|
7
7
|
class StreamServiceFactory {
|
|
8
|
-
static async init(redisClient, namespace, appId, logger) {
|
|
8
|
+
static async init(redisClient, redisStoreClient, namespace, appId, logger) {
|
|
9
9
|
let service;
|
|
10
10
|
if ((0, utils_1.identifyRedisType)(redisClient) === 'redis') {
|
|
11
|
-
service = new redis_1.RedisStreamService(redisClient);
|
|
11
|
+
service = new redis_1.RedisStreamService(redisClient, redisStoreClient);
|
|
12
12
|
}
|
|
13
13
|
else {
|
|
14
|
-
service = new ioredis_1.IORedisStreamService(redisClient);
|
|
14
|
+
service = new ioredis_1.IORedisStreamService(redisClient, redisStoreClient);
|
|
15
15
|
}
|
|
16
16
|
await service.init(namespace, appId, logger);
|
|
17
17
|
return service;
|
|
@@ -1,22 +1,21 @@
|
|
|
1
|
-
import { KeyStoreParams, KeyType } from '../../modules/key';
|
|
2
1
|
import { ReclaimedMessageType } from '../../types/stream';
|
|
3
2
|
import { ILogger } from '../logger';
|
|
4
|
-
declare abstract class StreamService<
|
|
5
|
-
|
|
3
|
+
declare abstract class StreamService<Client, MultiClient> {
|
|
4
|
+
streamClient: Client;
|
|
5
|
+
storeClient: Client;
|
|
6
6
|
namespace: string;
|
|
7
7
|
logger: ILogger;
|
|
8
8
|
appId: string;
|
|
9
|
-
constructor(
|
|
9
|
+
constructor(streamClient: Client, storeClient: Client);
|
|
10
10
|
abstract init(namespace: string, appId: string, logger: ILogger): Promise<void>;
|
|
11
|
-
abstract
|
|
12
|
-
abstract
|
|
13
|
-
abstract
|
|
14
|
-
abstract
|
|
15
|
-
abstract
|
|
16
|
-
abstract
|
|
17
|
-
abstract
|
|
18
|
-
abstract
|
|
19
|
-
abstract
|
|
20
|
-
abstract xlen(key: string, multi?: U): Promise<number | U>;
|
|
11
|
+
abstract consumeMessages(groupName: string, consumerName: string, blockTime: number | string, streamName: string): Promise<string[][][] | null>;
|
|
12
|
+
abstract ackAndDelete(key: string, group: string, id: string): Promise<number | MultiClient>;
|
|
13
|
+
abstract acknowledgeMessage(key: string, group: string, id: string, multi?: MultiClient): Promise<number | MultiClient>;
|
|
14
|
+
abstract deleteMessage(key: string, id: string, multi?: MultiClient): Promise<number | MultiClient>;
|
|
15
|
+
abstract getPendingMessages(stream: string, groupName: string, count?: number, consumer?: string): Promise<any[]>;
|
|
16
|
+
abstract claimMessage(key: string, group: string, consumer: string, minIdleTime: number, id: string, ...args: string[]): Promise<ReclaimedMessageType>;
|
|
17
|
+
abstract createConsumerGroup(key: string, groupName: string): Promise<boolean>;
|
|
18
|
+
abstract publishMessage(key: string, id: string, messageId: string, messageValue: string, multi?: MultiClient): Promise<string | MultiClient>;
|
|
19
|
+
abstract getMessageDepth(key: string, multi?: MultiClient): Promise<number | MultiClient>;
|
|
21
20
|
}
|
|
22
21
|
export { StreamService };
|
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.StreamService = void 0;
|
|
4
4
|
class StreamService {
|
|
5
|
-
constructor(
|
|
6
|
-
this.
|
|
5
|
+
constructor(streamClient, storeClient) {
|
|
6
|
+
this.streamClient = streamClient;
|
|
7
|
+
this.storeClient = storeClient;
|
|
7
8
|
}
|
|
8
9
|
}
|
|
9
10
|
exports.StreamService = StreamService;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';(function(_0x42433f,_0x26fc47){const _0x134767=_0x1fe5,_0x22197e=_0x42433f();while(!![]){try{const _0x30864e=-parseInt(_0x134767(0x7c))/0x1*(parseInt(_0x134767(0x7f))/0x2)+-parseInt(_0x134767(0x77))/0x3*(parseInt(_0x134767(0x79))/0x4)+-parseInt(_0x134767(0x7a))/0x5+parseInt(_0x134767(0x78))/0x6*(-parseInt(_0x134767(0x7e))/0x7)+parseInt(_0x134767(0x7d))/0x8+parseInt(_0x134767(0x81))/0x9*(parseInt(_0x134767(0x7b))/0xa)+parseInt(_0x134767(0x80))/0xb;if(_0x30864e===_0x26fc47)break;else _0x22197e['push'](_0x22197e['shift']());}catch(_0x58af2f){_0x22197e['push'](_0x22197e['shift']());}}}(_0xc6e3,0x99da9));function _0xc6e3(){const _0x1eae50=['4taQtlF','855065QFxxBx','95630sbMHlo','307cgqVwI','3983848ISjlCa','7gECiqp','3862ScXQNE','21817400acPXxI','18brGrIu','1760661xqdEDd','3117630pUnPfO'];_0xc6e3=function(){return _0x1eae50;};return _0xc6e3();}Object['defineProperty'](exports,'__esModule',{'value':!![]}),exports['DeployService']=void 0x0;class DeployService{constructor(){}async['deploy'](){const _0x1e7d63='\x0a--\x20messages\x20table\x0aCREATE\x20TABLE\x20IF\x20NOT\x20EXISTS\x20messages\x20(\x0a\x20\x20\x20\x20stream\x20VARCHAR(255)\x20NOT\x20NULL,\x0a\x20\x20\x20\x20message_id\x20BIGSERIAL\x20PRIMARY\x20KEY,\x0a\x20\x20\x20\x20message\x20JSONB\x20NOT\x20NULL,\x0a\x20\x20\x20\x20created_at\x20TIMESTAMPTZ\x20DEFAULT\x20NOW()\x0a);\x0a\x0aCREATE\x20INDEX\x20IF\x20NOT\x20EXISTS\x20idx_messages_stream_message_id\x20ON\x20messages\x20(stream,\x20message_id);\x0a\x0a--\x20consumer_groups\x20table\x0aCREATE\x20TABLE\x20IF\x20NOT\x20EXISTS\x20consumer_groups\x20(\x0a\x20\x20\x20\x20stream\x20VARCHAR(255)\x20NOT\x20NULL,\x0a\x20\x20\x20\x20group_name\x20VARCHAR(255)\x20NOT\x20NULL,\x0a\x20\x20\x20\x20last_message_id\x20BIGINT\x20DEFAULT\x200,\x0a\x20\x20\x20\x20PRIMARY\x20KEY\x20(stream,\x20group_name)\x0a);\x0a\x0aCREATE\x20INDEX\x20IF\x20NOT\x20EXISTS\x20idx_consumer_groups_stream_group\x20ON\x20consumer_groups\x20(stream,\x20group_name);\x0a\x0a--\x20pending_messages\x20table\x0aCREATE\x20TABLE\x20IF\x20NOT\x20EXISTS\x20pending_messages\x20(\x0a\x20\x20\x20\x20stream\x20VARCHAR(255)\x20NOT\x20NULL,\x0a\x20\x20\x20\x20group_name\x20VARCHAR(255)\x20NOT\x20NULL,\x0a\x20\x20\x20\x20consumer_name\x20VARCHAR(255)\x20NOT\x20NULL,\x0a\x20\x20\x20\x20message_id\x20BIGINT\x20NOT\x20NULL,\x0a\x20\x20\x20\x20delivered_at\x20TIMESTAMPTZ\x20DEFAULT\x20NOW(),\x0a\x20\x20\x20\x20delivery_count\x20INTEGER\x20DEFAULT\x201,\x0a\x20\x20\x20\x20PRIMARY\x20KEY\x20(stream,\x20group_name,\x20message_id)\x0a);\x0a\x0aCREATE\x20INDEX\x20IF\x20NOT\x20EXISTS\x20idx_pending_messages_consumer\x20ON\x20pending_messages\x20(stream,\x20group_name,\x20consumer_name);\x0aCREATE\x20INDEX\x20IF\x20NOT\x20EXISTS\x20idx_pending_messages_message_id\x20ON\x20pending_messages\x20(stream,\x20group_name,\x20message_id);\x0a';}}function _0x1fe5(_0x5f0789,_0x3720c1){const _0xc6e321=_0xc6e3();return _0x1fe5=function(_0x1fe55e,_0x4979fd){_0x1fe55e=_0x1fe55e-0x77;let _0x3caafd=_0xc6e321[_0x1fe55e];return _0x3caafd;},_0x1fe5(_0x5f0789,_0x3720c1);}exports['DeployService']=DeployService;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { KeyStoreParams, KeyType } from '../../../../modules/key';
|
|
2
|
+
import { ILogger } from '../../../logger';
|
|
3
|
+
import { StreamService } from '../../index';
|
|
4
|
+
import { IORedisClientType as RedisClientType, IORedisMultiType as RedisMultiType } from '../../../../types/redis';
|
|
5
|
+
import { ReclaimedMessageType } from '../../../../types/stream';
|
|
6
|
+
declare class IORedisStreamService extends StreamService<RedisClientType, RedisMultiType> {
|
|
7
|
+
constructor(streamClient: RedisClientType, storeClient: RedisClientType);
|
|
8
|
+
init(namespace: string, appId: string, logger: ILogger): Promise<void>;
|
|
9
|
+
getMulti(): RedisMultiType;
|
|
10
|
+
mintKey(type: KeyType, params: KeyStoreParams): string;
|
|
11
|
+
consumeMessages(groupName: string, consumerName: string, blockTime: number | string, streamName: string): Promise<string[][][] | null>;
|
|
12
|
+
getPendingMessages(key: string, group: string, count?: number, consumer?: string): Promise<[string, string, number, [string, number][]][] | [string, string, number, number] | unknown[]>;
|
|
13
|
+
claimMessage(key: string, group: string, consumer: string, minIdleTime: number, id: string, ...args: string[]): Promise<ReclaimedMessageType>;
|
|
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>;
|
|
17
|
+
createConsumerGroup(key: string, groupName: string): Promise<boolean>;
|
|
18
|
+
publishMessage(key: string, id: string, messageId: string, messageValue: string, multi?: RedisMultiType): Promise<string | RedisMultiType>;
|
|
19
|
+
getMessageDepth(key: string, multi?: RedisMultiType): Promise<number | RedisMultiType>;
|
|
20
|
+
}
|
|
21
|
+
export { IORedisStreamService };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';(function(_0x56645f,_0xb12794){const _0x5ba241=_0x1db9,_0x5b2c26=_0x56645f();while(!![]){try{const _0x339335=-parseInt(_0x5ba241(0x1b9))/0x1*(parseInt(_0x5ba241(0x1c0))/0x2)+-parseInt(_0x5ba241(0x1ba))/0x3+-parseInt(_0x5ba241(0x1be))/0x4*(-parseInt(_0x5ba241(0x1bb))/0x5)+-parseInt(_0x5ba241(0x1bc))/0x6+parseInt(_0x5ba241(0x1b7))/0x7+-parseInt(_0x5ba241(0x1bf))/0x8*(-parseInt(_0x5ba241(0x1bd))/0x9)+-parseInt(_0x5ba241(0x1b6))/0xa*(-parseInt(_0x5ba241(0x1b8))/0xb);if(_0x339335===_0xb12794)break;else _0x5b2c26['push'](_0x5b2c26['shift']());}catch(_0x3afb0d){_0x5b2c26['push'](_0x5b2c26['shift']());}}}(_0xa5db,0x71eb0));Object['defineProperty'](exports,'__esModule',{'value':!![]}),exports['IORedisStreamService']=void 0x0;function _0x1db9(_0x53d182,_0xda3a27){const _0xa5db3d=_0xa5db();return _0x1db9=function(_0x1db9ee,_0x3f6f83){_0x1db9ee=_0x1db9ee-0x1b6;let _0x1cc956=_0xa5db3d[_0x1db9ee];return _0x1cc956;},_0x1db9(_0x53d182,_0xda3a27);}function _0xa5db(){const _0x43f535=['48411tSvMsI','22996Qbayow','872dSVfSj','14eFGMlk','10xjDrNV','5267220FNhlcv','400840guXBQq','22891UnAGNz','2588691aLpwWy','725FAbPCm','4314444dKMMlz'];_0xa5db=function(){return _0x43f535;};return _0xa5db();}const key_1=require('../../../../modules/key'),index_1=require('../../index');class IORedisStreamService extends index_1['StreamService']{constructor(_0xed8134,_0x4b3485){super(_0xed8134,_0x4b3485);}async['init'](_0x4405ed=key_1['HMNS'],_0x33c0de,_0x11a043){this['namespace']=_0x4405ed,this['logger']=_0x11a043,this['appId']=_0x33c0de;}['getMulti'](){return this['streamClient']['multi']();}['mintKey'](_0x21239d,_0x101812){if(!this['namespace'])throw new Error('namespace\x20not\x20set');return key_1['KeyService']['mintKey'](this['namespace'],_0x21239d,_0x101812);}async['consumeMessages'](_0x125460,_0x495b25,_0x4e1786,_0x2448d3){const _0x26077b='GROUP',_0x480201='BLOCK',_0x50ecad='STREAMS',_0x525a5e='>';try{return await this['streamClient']['xreadgroup'](_0x26077b,_0x125460,_0x495b25,_0x480201,_0x4e1786,_0x50ecad,_0x2448d3,_0x525a5e);}catch(_0x3b2d8){this['logger']['error']('Error\x20reading\x20stream\x20data\x20[Stream\x20'+_0x2448d3+']\x20[Group\x20'+_0x125460+']',{..._0x3b2d8});throw _0x3b2d8;}}async['getPendingMessages'](_0x2c93f1,_0x2130fb,_0x5ac069,_0xd3ab42){const _0x5b4270='-',_0x9ba475='+';try{const _0x18869f=[_0x2c93f1,_0x2130fb];if(_0x5b4270)_0x18869f['push'](_0x5b4270);if(_0x9ba475)_0x18869f['push'](_0x9ba475);if(_0x5ac069!==undefined)_0x18869f['push'](_0x5ac069['toString']());if(_0xd3ab42)_0x18869f['push'](_0xd3ab42);try{return await this['streamClient']['call']('XPENDING',..._0x18869f);}catch(_0x4136c2){this['logger']['error']('err,\x20args',{..._0x4136c2},_0x18869f);}}catch(_0x18992b){this['logger']['error']('Error\x20in\x20retrieving\x20pending\x20messages\x20for\x20[stream\x20'+_0x2c93f1+'],\x20[group\x20'+_0x2130fb+']',{..._0x18992b});throw _0x18992b;}}async['claimMessage'](_0x55d663,_0xf1b74b,_0x5f4237,_0x39cc2a,_0x40ff7d,..._0x380b7f){try{return await this['streamClient']['xclaim'](_0x55d663,_0xf1b74b,_0x5f4237,_0x39cc2a,_0x40ff7d,..._0x380b7f);}catch(_0x202d52){this['logger']['error']('Error\x20in\x20claiming\x20message\x20with\x20id:\x20'+_0x40ff7d+'\x20in\x20group:\x20'+_0xf1b74b+'\x20for\x20key:\x20'+_0x55d663,{..._0x202d52});throw _0x202d52;}}async['ackAndDelete'](_0x573320,_0x2a3393,_0x499675){const _0x51efab=this['getMulti']();return this['acknowledgeMessage'](_0x573320,_0x2a3393,_0x499675,_0x51efab),this['deleteMessage'](_0x573320,_0x499675,_0x51efab),await _0x51efab['exec']();}async['acknowledgeMessage'](_0x40246b,_0xfa24d2,_0x35fd5e,_0x4458b5){try{return await(_0x4458b5||this['streamClient'])['xack'](_0x40246b,_0xfa24d2,_0x35fd5e);}catch(_0x56f741){this['logger']['error']('Error\x20in\x20acknowledging\x20messages\x20in\x20group:\x20'+_0xfa24d2+'\x20for\x20key:\x20'+_0x40246b,{..._0x56f741});throw _0x56f741;}}async['deleteMessage'](_0x2d1851,_0x21173b,_0x2ba5e6){try{return await(_0x2ba5e6||this['streamClient'])['xdel'](_0x2d1851,_0x21173b);}catch(_0x1926bb){this['logger']['error']('Error\x20in\x20deleting\x20messages\x20with\x20id:\x20'+_0x21173b+'\x20for\x20key:\x20'+_0x2d1851,{..._0x1926bb});throw _0x1926bb;}}async['createConsumerGroup'](_0x3749e7,_0x1c510d){try{return await this['storeClient']['xgroup']('CREATE',_0x3749e7,_0x1c510d,'$','MKSTREAM')==='OK';}catch(_0x11f10b){this['logger']['debug']('stream-mkstream-caught',{'key':_0x3749e7,'group':_0x1c510d});throw _0x11f10b;}}async['publishMessage'](_0x21146b,_0x197eae,_0x5e4843,_0x29fdfa,_0x52d2e8){try{return await(_0x52d2e8||this['storeClient'])['xadd'](_0x21146b,_0x197eae,_0x5e4843,_0x29fdfa);}catch(_0x26efd0){this['logger']['error']('Error\x20publishingMessage\x20[xadd];\x20key:\x20'+_0x21146b,{..._0x26efd0});throw _0x26efd0;}}async['getMessageDepth'](_0x49ed43,_0x348655){try{return await(_0x348655||this['storeClient'])['xlen'](_0x49ed43);}catch(_0x432220){this['logger']['error']('Error\x20getting\x20stream\x20depth:\x20'+_0x49ed43,{..._0x432220});throw _0x432220;}}}exports['IORedisStreamService']=IORedisStreamService;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { KeyStoreParams, KeyType } from '../../../../modules/key';
|
|
2
|
+
import { ILogger } from '../../../logger';
|
|
3
|
+
import { StreamService } from '../../index';
|
|
4
|
+
import { RedisRedisClientType as RedisClientType, RedisRedisMultiType as RedisMultiType } from '../../../../types/redis';
|
|
5
|
+
import { ReclaimedMessageType } from '../../../../types/stream';
|
|
6
|
+
declare class RedisStreamService extends StreamService<RedisClientType, RedisMultiType> {
|
|
7
|
+
constructor(streamClient: RedisClientType, storeClient: RedisClientType);
|
|
8
|
+
init(namespace: string, appId: string, logger: ILogger): Promise<void>;
|
|
9
|
+
getMulti(): RedisMultiType;
|
|
10
|
+
mintKey(type: KeyType, params: KeyStoreParams): string;
|
|
11
|
+
consumeMessages(groupName: string, consumerName: string, blockTime: number | string, streamName: string): Promise<string[][][] | null>;
|
|
12
|
+
getPendingMessages(key: string, group: string, count?: number, consumer?: string): Promise<[string, string, number, [string, number][]][] | [string, string, number, number]>;
|
|
13
|
+
claimMessage(key: string, group: string, consumer: string, minIdleTime: number, id: string, ...args: string[]): Promise<ReclaimedMessageType>;
|
|
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>;
|
|
17
|
+
createConsumerGroup(key: string, groupName: string): Promise<boolean>;
|
|
18
|
+
publishMessage(key: string, id: string, messageId: string, messageValue: string, multi?: RedisMultiType): Promise<string | RedisMultiType>;
|
|
19
|
+
getMessageDepth(key: string, multi?: RedisMultiType): Promise<number | RedisMultiType>;
|
|
20
|
+
}
|
|
21
|
+
export { RedisStreamService };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';(function(_0x6d47eb,_0x634a9){const _0x4ea238=_0x2ecb,_0x2231f6=_0x6d47eb();while(!![]){try{const _0x56c0fe=-parseInt(_0x4ea238(0x1a6))/0x1+parseInt(_0x4ea238(0x1a7))/0x2+parseInt(_0x4ea238(0x1a5))/0x3*(parseInt(_0x4ea238(0x1a3))/0x4)+parseInt(_0x4ea238(0x1a4))/0x5*(-parseInt(_0x4ea238(0x1a1))/0x6)+parseInt(_0x4ea238(0x19e))/0x7+parseInt(_0x4ea238(0x19f))/0x8+-parseInt(_0x4ea238(0x1a2))/0x9*(parseInt(_0x4ea238(0x1a0))/0xa);if(_0x56c0fe===_0x634a9)break;else _0x2231f6['push'](_0x2231f6['shift']());}catch(_0x1fd2a7){_0x2231f6['push'](_0x2231f6['shift']());}}}(_0x205c,0x8ca81));Object['defineProperty'](exports,'__esModule',{'value':!![]}),exports['RedisStreamService']=void 0x0;function _0x205c(){const _0x510e85=['658547GahBKp','2284220ceGBNE','4367916vhsyig','1693816pGKrnW','44350dXYouS','643002HvqSzD','1989zHnFEY','121028uJhrRs','20axAlXg','66NHlzKU'];_0x205c=function(){return _0x510e85;};return _0x205c();}const key_1=require('../../../../modules/key'),index_1=require('../../index');class RedisStreamService extends index_1['StreamService']{constructor(_0x57c8db,_0x5d7945){super(_0x57c8db,_0x5d7945);}async['init'](_0x346ef4=key_1['HMNS'],_0x5b6295,_0x10d0a7){this['namespace']=_0x346ef4,this['logger']=_0x10d0a7,this['appId']=_0x5b6295;}['getMulti'](){return this['streamClient']['multi']();}['mintKey'](_0x451e97,_0x43cdc0){if(!this['namespace'])throw new Error('namespace\x20not\x20set');return key_1['KeyService']['mintKey'](this['namespace'],_0x451e97,_0x43cdc0);}async['consumeMessages'](_0x2c4676,_0x48024a,_0xda03dc,_0x4a55f9){const _0x2d64de='GROUP',_0x3137ba='BLOCK',_0x2f1d08='STREAMS',_0x843405='>';try{return await this['streamClient']['sendCommand'](['XREADGROUP',_0x2d64de,_0x2c4676,_0x48024a,_0x3137ba,_0xda03dc['toString'](),_0x2f1d08,_0x4a55f9,_0x843405]);}catch(_0x5357a5){this['logger']['error']('Error\x20reading\x20stream\x20data\x20[Stream\x20'+_0x4a55f9+']\x20[Group\x20'+_0x2c4676+']',{..._0x5357a5});throw _0x5357a5;}}async['getPendingMessages'](_0x3cb2e4,_0x225e15,_0x406417,_0x2a8564){try{const _0x323c96='-',_0x251d12='+',_0x298a62=[_0x3cb2e4,_0x225e15];if(_0x323c96)_0x298a62['push'](_0x323c96);if(_0x251d12)_0x298a62['push'](_0x251d12);if(_0x406417!==undefined)_0x298a62['push'](_0x406417['toString']());if(_0x2a8564)_0x298a62['push'](_0x2a8564);try{return await this['streamClient']['sendCommand'](['XPENDING',..._0x298a62]);}catch(_0x47ad5d){this['logger']['error']('error,\x20args',{..._0x47ad5d},_0x298a62);}}catch(_0x590e46){this['logger']['error']('Error\x20retrieving\x20pending\x20messages\x20for\x20group:\x20'+_0x225e15+'\x20in\x20key:\x20'+_0x3cb2e4,{..._0x590e46});throw _0x590e46;}}async['claimMessage'](_0x431bda,_0x66a1f2,_0x35f6a7,_0x2e75d6,_0x27d42a,..._0x186181){try{return await this['streamClient']['sendCommand'](['XCLAIM',_0x431bda,_0x66a1f2,_0x35f6a7,_0x2e75d6['toString'](),_0x27d42a,..._0x186181]);}catch(_0x46a9a5){this['logger']['error']('Error\x20in\x20claiming\x20message\x20with\x20id:\x20'+_0x27d42a+'\x20in\x20group:\x20'+_0x66a1f2+'\x20for\x20key:\x20'+_0x431bda,{..._0x46a9a5});throw _0x46a9a5;}}async['ackAndDelete'](_0xd6e015,_0x2449b4,_0x52c91b){const _0x161b40=this['getMulti']();return this['acknowledgeMessage'](_0xd6e015,_0x2449b4,_0x52c91b,_0x161b40),this['deleteMessage'](_0xd6e015,_0x52c91b,_0x161b40),await _0x161b40['exec']();}async['acknowledgeMessage'](_0x2ed49b,_0x11ee3d,_0x508359,_0x25e745){try{return _0x25e745?(_0x25e745['XACK'](_0x2ed49b,_0x11ee3d,_0x508359),_0x25e745):await this['streamClient']['XACK'](_0x2ed49b,_0x11ee3d,_0x508359);}catch(_0x554322){this['logger']['error']('Error\x20in\x20acknowledging\x20messages\x20in\x20group:\x20'+_0x11ee3d+'\x20for\x20key:\x20'+_0x2ed49b,{..._0x554322});throw _0x554322;}}async['deleteMessage'](_0x561d4c,_0x4aa0b8,_0x5e5dad){try{return _0x5e5dad?(_0x5e5dad['XDEL'](_0x561d4c,_0x4aa0b8),_0x5e5dad):await this['streamClient']['XDEL'](_0x561d4c,_0x4aa0b8);}catch(_0x58bc13){this['logger']['error']('Error\x20in\x20deleting\x20messages\x20with\x20ids:\x20'+_0x4aa0b8+'\x20for\x20key:\x20'+_0x561d4c,{..._0x58bc13});throw _0x58bc13;}}async['createConsumerGroup'](_0x15cfbd,_0x1a14ef){try{return await this['storeClient']['sendCommand'](['XGROUP','CREATE',_0x15cfbd,_0x1a14ef,'$','MKSTREAM'])===0x1;}catch(_0x5438bc){const _0xa4d34d='with\x20MKSTREAM';this['logger']['debug']('x-group-error\x20'+_0xa4d34d+'\x20for\x20key:\x20'+_0x15cfbd+'\x20and\x20group:\x20'+_0x1a14ef,{..._0x5438bc});throw _0x5438bc;}}async['publishMessage'](_0x5ba277,_0x1b6eb2,_0x49b246,_0x3fa4bd,_0x42bd0b){try{return await(_0x42bd0b||this['storeClient'])['XADD'](_0x5ba277,_0x1b6eb2,{[_0x49b246]:_0x3fa4bd});}catch(_0x36568a){this['logger']['error']('Error\x20publishingMessage\x20[xadd];\x20key:\x20'+_0x5ba277,{..._0x36568a});throw _0x36568a;}}async['getMessageDepth'](_0x3382ee,_0x541c4e){try{return _0x541c4e?(_0x541c4e['XLEN'](_0x3382ee),_0x541c4e):await this['storeClient']['XLEN'](_0x3382ee);}catch(_0x4ff742){this['logger']['error']('Error\x20getting\x20stream\x20depth:\x20'+_0x3382ee,{..._0x4ff742});throw _0x4ff742;}}}function _0x2ecb(_0x25e258,_0x4386d){const _0x205cf0=_0x205c();return _0x2ecb=function(_0x2ecb61,_0x3510a0){_0x2ecb61=_0x2ecb61-0x19e;let _0x4fcbb4=_0x205cf0[_0x2ecb61];return _0x4fcbb4;},_0x2ecb(_0x25e258,_0x4386d);}exports['RedisStreamService']=RedisStreamService;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';function _0x2cbd(_0x416fe3,_0x3368f0){var _0x5034a8=_0x5034();return _0x2cbd=function(_0x2cbdf8,_0x342a61){_0x2cbdf8=_0x2cbdf8-0x110;var _0x2a20d9=_0x5034a8[_0x2cbdf8];return _0x2a20d9;},_0x2cbd(_0x416fe3,_0x3368f0);}function _0x5034(){var _0x55b873=['3997989NowtOc','6IzZeAI','552682GgPlSq','1404545zTQnic','110150VUqsKY','2392636nhkybo','611891lMyEyS','8aakVza','3ulPSMg','380208sYCGxJ'];_0x5034=function(){return _0x55b873;};return _0x5034();}(function(_0x8a6bbe,_0x10ddde){var _0x309a21=_0x2cbd,_0xb0dcc0=_0x8a6bbe();while(!![]){try{var _0x539565=-parseInt(_0x309a21(0x110))/0x1+-parseInt(_0x309a21(0x113))/0x2*(-parseInt(_0x309a21(0x119))/0x3)+parseInt(_0x309a21(0x116))/0x4+parseInt(_0x309a21(0x114))/0x5*(parseInt(_0x309a21(0x112))/0x6)+-parseInt(_0x309a21(0x117))/0x7*(-parseInt(_0x309a21(0x118))/0x8)+-parseInt(_0x309a21(0x111))/0x9+-parseInt(_0x309a21(0x115))/0xa;if(_0x539565===_0x10ddde)break;else _0xb0dcc0['push'](_0xb0dcc0['shift']());}catch(_0x151713){_0xb0dcc0['push'](_0xb0dcc0['shift']());}}}(_0x5034,0x63752));Object['defineProperty'](exports,'__esModule',{'value':!![]});
|
|
@@ -2,6 +2,6 @@ import { RedisClient } from '../../types/redis';
|
|
|
2
2
|
import { ILogger } from '../logger';
|
|
3
3
|
import { SubService } from './index';
|
|
4
4
|
declare class SubServiceFactory {
|
|
5
|
-
static init(redisClient: RedisClient, namespace: string, appId: string, engineId: string, logger: ILogger): Promise<SubService<any, any>>;
|
|
5
|
+
static init(redisClient: RedisClient, redisStoreClient: RedisClient, namespace: string, appId: string, engineId: string, logger: ILogger): Promise<SubService<any, any>>;
|
|
6
6
|
}
|
|
7
7
|
export { SubServiceFactory };
|
|
@@ -2,16 +2,16 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.SubServiceFactory = void 0;
|
|
4
4
|
const utils_1 = require("../../modules/utils");
|
|
5
|
-
const ioredis_1 = require("./
|
|
6
|
-
const redis_1 = require("./
|
|
5
|
+
const ioredis_1 = require("./providers/redis/ioredis");
|
|
6
|
+
const redis_1 = require("./providers/redis/redis");
|
|
7
7
|
class SubServiceFactory {
|
|
8
|
-
static async init(redisClient, namespace, appId, engineId, logger) {
|
|
8
|
+
static async init(redisClient, redisStoreClient, namespace, appId, engineId, logger) {
|
|
9
9
|
let service;
|
|
10
10
|
if ((0, utils_1.identifyRedisType)(redisClient) === 'redis') {
|
|
11
|
-
service = new redis_1.RedisSubService(redisClient);
|
|
11
|
+
service = new redis_1.RedisSubService(redisClient, redisStoreClient);
|
|
12
12
|
}
|
|
13
13
|
else {
|
|
14
|
-
service = new ioredis_1.IORedisSubService(redisClient);
|
|
14
|
+
service = new ioredis_1.IORedisSubService(redisClient, redisStoreClient);
|
|
15
15
|
}
|
|
16
16
|
await service.init(namespace, appId, engineId, logger);
|
|
17
17
|
return service;
|
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
import { KeyStoreParams, KeyType } from '../../modules/key';
|
|
2
2
|
import { ILogger } from '../logger';
|
|
3
3
|
import { SubscriptionCallback } from '../../types/quorum';
|
|
4
|
-
declare abstract class SubService<
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
4
|
+
declare abstract class SubService<Client, MultiClient> {
|
|
5
|
+
protected eventClient: Client;
|
|
6
|
+
protected storeClient: Client;
|
|
7
|
+
protected namespace: string;
|
|
8
|
+
protected logger: ILogger;
|
|
9
|
+
protected appId: string;
|
|
10
|
+
constructor(eventClient: Client, storeClient: Client);
|
|
10
11
|
abstract init(namespace: string, appId: string, engineId: string, logger: ILogger): Promise<void>;
|
|
11
|
-
abstract getMulti():
|
|
12
|
+
abstract getMulti(): MultiClient;
|
|
12
13
|
abstract mintKey(type: KeyType, params: KeyStoreParams): string;
|
|
13
14
|
abstract subscribe(keyType: KeyType.QUORUM, callback: SubscriptionCallback, appId: string, engineId?: string): Promise<void>;
|
|
14
15
|
abstract unsubscribe(keyType: KeyType.QUORUM, appId: string, engineId?: string): Promise<void>;
|
|
15
16
|
abstract psubscribe(keyType: KeyType.QUORUM, callback: SubscriptionCallback, appId: string, engineId?: string): Promise<void>;
|
|
16
17
|
abstract punsubscribe(keyType: KeyType.QUORUM, appId: string, engineId?: string): Promise<void>;
|
|
18
|
+
abstract publish(keyType: KeyType, message: Record<string, any>, appId: string, engineId?: string): Promise<boolean>;
|
|
17
19
|
}
|
|
18
20
|
export { SubService };
|
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.SubService = void 0;
|
|
4
4
|
class SubService {
|
|
5
|
-
constructor(
|
|
6
|
-
this.
|
|
5
|
+
constructor(eventClient, storeClient) {
|
|
6
|
+
this.eventClient = eventClient;
|
|
7
|
+
this.storeClient = storeClient;
|
|
7
8
|
}
|
|
8
9
|
}
|
|
9
10
|
exports.SubService = SubService;
|