@hotmeshio/hotmesh 0.3.6 → 0.3.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. package/README.md +13 -1
  2. package/build/index.d.ts +3 -1
  3. package/build/index.js +10 -1
  4. package/build/modules/key.js +1 -62
  5. package/build/modules/utils.js +1 -267
  6. package/build/package.json +12 -8
  7. package/build/services/activities/activity.js +1 -495
  8. package/build/services/activities/await.js +1 -109
  9. package/build/services/activities/cycle.js +1 -96
  10. package/build/services/activities/hook.js +1 -154
  11. package/build/services/activities/index.js +1 -20
  12. package/build/services/activities/interrupt.js +1 -149
  13. package/build/services/activities/signal.js +1 -118
  14. package/build/services/activities/trigger.js +1 -237
  15. package/build/services/activities/worker.js +1 -101
  16. package/build/services/collator/index.js +1 -197
  17. package/build/services/compiler/deployer.d.ts +3 -1
  18. package/build/services/compiler/deployer.js +1 -455
  19. package/build/services/compiler/index.d.ts +3 -1
  20. package/build/services/compiler/index.js +1 -91
  21. package/build/services/compiler/validator.js +1 -122
  22. package/build/services/engine/index.d.ts +5 -2
  23. package/build/services/engine/index.js +1 -562
  24. package/build/services/exporter/index.js +1 -93
  25. package/build/services/mapper/index.js +1 -67
  26. package/build/services/meshdata/index.d.ts +0 -1
  27. package/build/services/meshdata/index.js +16 -24
  28. package/build/services/meshflow/client.js +4 -8
  29. package/build/services/meshflow/exporter.js +1 -186
  30. package/build/services/meshflow/index.d.ts +2 -0
  31. package/build/services/meshflow/index.js +2 -0
  32. package/build/services/meshflow/search.d.ts +4 -5
  33. package/build/services/meshflow/search.js +45 -35
  34. package/build/services/meshflow/workflow.d.ts +1 -1
  35. package/build/services/meshflow/workflow.js +3 -28
  36. package/build/services/pipe/functions/array.js +1 -74
  37. package/build/services/pipe/functions/bitwise.js +1 -24
  38. package/build/services/pipe/functions/conditional.js +1 -36
  39. package/build/services/pipe/functions/cron.js +1 -32
  40. package/build/services/pipe/functions/date.js +1 -164
  41. package/build/services/pipe/functions/index.js +1 -30
  42. package/build/services/pipe/functions/json.js +1 -12
  43. package/build/services/pipe/functions/logical.js +1 -12
  44. package/build/services/pipe/functions/math.js +1 -182
  45. package/build/services/pipe/functions/number.js +1 -60
  46. package/build/services/pipe/functions/object.js +1 -81
  47. package/build/services/pipe/functions/string.js +1 -69
  48. package/build/services/pipe/functions/symbol.js +1 -33
  49. package/build/services/pipe/functions/unary.js +1 -18
  50. package/build/services/pipe/index.js +1 -221
  51. package/build/services/quorum/index.d.ts +1 -1
  52. package/build/services/quorum/index.js +1 -219
  53. package/build/services/reporter/index.js +1 -331
  54. package/build/services/router/index.js +1 -420
  55. package/build/services/search/factory.d.ts +7 -0
  56. package/build/services/search/factory.js +20 -0
  57. package/build/services/search/index.d.ts +21 -0
  58. package/build/services/search/index.js +10 -0
  59. package/build/services/search/providers/redis/ioredis.d.ts +18 -0
  60. package/build/services/search/providers/redis/ioredis.js +1 -0
  61. package/build/services/search/providers/redis/redis.d.ts +18 -0
  62. package/build/services/search/providers/redis/redis.js +1 -0
  63. package/build/services/serializer/index.js +1 -265
  64. package/build/services/store/factory.d.ts +2 -1
  65. package/build/services/store/factory.js +2 -2
  66. package/build/services/store/index.d.ts +71 -97
  67. package/build/services/store/index.js +2 -939
  68. package/build/services/store/providers/postgres/postgres.d.ts +0 -0
  69. package/build/services/store/providers/postgres/postgres.js +0 -0
  70. package/build/services/store/providers/postgres/types/hash.d.ts +0 -0
  71. package/build/services/store/providers/postgres/types/hash.js +0 -0
  72. package/build/services/store/providers/postgres/types/list.d.ts +0 -0
  73. package/build/services/store/providers/postgres/types/list.js +0 -0
  74. package/build/services/store/providers/postgres/types/string.d.ts +0 -0
  75. package/build/services/store/providers/postgres/types/string.js +0 -0
  76. package/build/services/store/providers/postgres/types/zset.d.ts +0 -0
  77. package/build/services/store/providers/postgres/types/zset.js +0 -0
  78. package/build/services/store/providers/redis/_base.d.ts +98 -0
  79. package/build/services/store/providers/redis/_base.js +1 -0
  80. package/build/services/store/providers/redis/ioredis.d.ts +12 -0
  81. package/build/services/store/providers/redis/ioredis.js +1 -0
  82. package/build/services/store/providers/redis/redis.d.ts +13 -0
  83. package/build/services/store/providers/redis/redis.js +1 -0
  84. package/build/services/store/providers/store-initializable.d.ts +5 -0
  85. package/build/services/store/providers/store-initializable.js +1 -0
  86. package/build/services/stream/factory.d.ts +2 -1
  87. package/build/services/stream/factory.js +5 -5
  88. package/build/services/stream/index.d.ts +13 -14
  89. package/build/services/stream/index.js +3 -2
  90. package/build/services/stream/providers/postgres/_deploy.d.ts +4 -0
  91. package/build/services/stream/providers/postgres/_deploy.js +1 -0
  92. package/build/services/stream/providers/redis/ioredis.d.ts +21 -0
  93. package/build/services/stream/providers/redis/ioredis.js +1 -0
  94. package/build/services/stream/providers/redis/redis.d.ts +21 -0
  95. package/build/services/stream/providers/redis/redis.js +1 -0
  96. package/build/services/stream/providers/stream-initializable.d.ts +5 -0
  97. package/build/services/stream/providers/stream-initializable.js +1 -0
  98. package/build/services/sub/factory.d.ts +1 -1
  99. package/build/services/sub/factory.js +5 -5
  100. package/build/services/sub/index.d.ts +9 -7
  101. package/build/services/sub/index.js +3 -2
  102. package/build/services/sub/{clients → providers/redis}/ioredis.d.ts +7 -10
  103. package/build/services/sub/providers/redis/ioredis.js +1 -0
  104. package/build/services/sub/{clients → providers/redis}/redis.d.ts +7 -10
  105. package/build/services/sub/providers/redis/redis.js +1 -0
  106. package/build/services/task/index.js +1 -171
  107. package/build/services/telemetry/index.js +1 -225
  108. package/build/services/worker/index.d.ts +2 -2
  109. package/build/services/worker/index.js +1 -158
  110. package/build/types/redis.d.ts +5 -5
  111. package/index.ts +18 -1
  112. package/package.json +12 -8
  113. package/typedoc.json +2 -1
  114. package/types/redis.ts +5 -5
  115. package/build/services/store/clients/ioredis.d.ts +0 -30
  116. package/build/services/store/clients/ioredis.js +0 -220
  117. package/build/services/store/clients/redis.d.ts +0 -32
  118. package/build/services/store/clients/redis.js +0 -319
  119. package/build/services/stream/clients/ioredis.d.ts +0 -24
  120. package/build/services/stream/clients/ioredis.js +0 -121
  121. package/build/services/stream/clients/redis.d.ts +0 -24
  122. package/build/services/stream/clients/redis.js +0 -161
  123. package/build/services/sub/clients/ioredis.js +0 -72
  124. package/build/services/sub/clients/redis.js +0 -63
@@ -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(_0x5ded63,_0xbd454f){const _0x4f2eab=_0x120b,_0x2dffaf=_0x5ded63();while(!![]){try{const _0xd716c=parseInt(_0x4f2eab(0x7e))/0x1*(parseInt(_0x4f2eab(0x78))/0x2)+-parseInt(_0x4f2eab(0x7b))/0x3*(parseInt(_0x4f2eab(0x7d))/0x4)+-parseInt(_0x4f2eab(0x79))/0x5*(parseInt(_0x4f2eab(0x80))/0x6)+-parseInt(_0x4f2eab(0x82))/0x7*(-parseInt(_0x4f2eab(0x77))/0x8)+-parseInt(_0x4f2eab(0x7f))/0x9*(-parseInt(_0x4f2eab(0x7a))/0xa)+-parseInt(_0x4f2eab(0x7c))/0xb+parseInt(_0x4f2eab(0x81))/0xc;if(_0xd716c===_0xbd454f)break;else _0x2dffaf['push'](_0x2dffaf['shift']());}catch(_0x332097){_0x2dffaf['push'](_0x2dffaf['shift']());}}}(_0x34fc,0xf21bc));function _0x120b(_0x41a5e9,_0x1d4470){const _0x34fcc3=_0x34fc();return _0x120b=function(_0x120bd9,_0x32a1e0){_0x120bd9=_0x120bd9-0x77;let _0x27c875=_0x34fcc3[_0x120bd9];return _0x27c875;},_0x120b(_0x41a5e9,_0x1d4470);}function _0x34fc(){const _0x27d9f4=['8HakkLO','24994EUtsYJ','549415RuyLay','50ZUQujg','3CIayJD','17901136pszSbH','1203352FGgBWV','33zOtXHn','147213XBZtCu','24SivcOf','10652412oLTKQt','13842745AptmeN'];_0x34fc=function(){return _0x27d9f4;};return _0x34fc();}var __createBinding=this&&this['__createBinding']||(Object['create']?function(_0x1510bb,_0x57a6b3,_0x5428d2,_0x22e918){if(_0x22e918===undefined)_0x22e918=_0x5428d2;var _0x3f1741=Object['getOwnPropertyDescriptor'](_0x57a6b3,_0x5428d2);(!_0x3f1741||('get'in _0x3f1741?!_0x57a6b3['__esModule']:_0x3f1741['writable']||_0x3f1741['configurable']))&&(_0x3f1741={'enumerable':!![],'get':function(){return _0x57a6b3[_0x5428d2];}}),Object['defineProperty'](_0x1510bb,_0x22e918,_0x3f1741);}:function(_0x4397c4,_0x46bca1,_0x18a4f0,_0x163c04){if(_0x163c04===undefined)_0x163c04=_0x18a4f0;_0x4397c4[_0x163c04]=_0x46bca1[_0x18a4f0];}),__setModuleDefault=this&&this['__setModuleDefault']||(Object['create']?function(_0x5bf245,_0x51fd0a){Object['defineProperty'](_0x5bf245,'default',{'enumerable':!![],'value':_0x51fd0a});}:function(_0xea52f4,_0x3e1f24){_0xea52f4['default']=_0x3e1f24;}),__importStar=this&&this['__importStar']||function(_0x4c2e09){if(_0x4c2e09&&_0x4c2e09['__esModule'])return _0x4c2e09;var _0x4f4ac2={};if(_0x4c2e09!=null){for(var _0x1087e1 in _0x4c2e09)if(_0x1087e1!=='default'&&Object['prototype']['hasOwnProperty']['call'](_0x4c2e09,_0x1087e1))__createBinding(_0x4f4ac2,_0x4c2e09,_0x1087e1);}return __setModuleDefault(_0x4f4ac2,_0x4c2e09),_0x4f4ac2;};Object['defineProperty'](exports,'__esModule',{'value':!![]}),exports['RedisStoreBase']=void 0x0;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(_0x90f4b){super(_0x90f4b),this['commands']={},this['storeClient']=_0x90f4b;}async['init'](_0x42a2b8=key_1['HMNS'],_0x412893,_0x442fe4){this['namespace']=_0x42a2b8,this['appId']=_0x412893,this['logger']=_0x442fe4;const _0x6cbb75=await this['getSettings'](!![]);return this['cache']=new cache_1['Cache'](_0x412893,_0x6cbb75),this['serializer']=new serializer_1['SerializerService'](),await this['getApp'](_0x412893),this['cache']['getApps']();}['isSuccessful'](_0xcea7f0){return _0xcea7f0>0x0||_0xcea7f0==='OK'||_0xcea7f0===!![];}async['delistSignalKey'](_0xd5cddd,_0xe1f0a2){await this['storeClient'][this['commands']['del']](_0xd5cddd+':'+_0xe1f0a2);}async['zAdd'](_0xec354f,_0x465b6e,_0x5bcb28,_0x2ca5db){return await(_0x2ca5db||this['storeClient'])[this['commands']['zadd']](_0xec354f,_0x465b6e,_0x5bcb28);}async['zRangeByScoreWithScores'](_0x38d16c,_0x49dfa2,_0x582fb5){const _0x111658=await this['storeClient'][this['commands']['zrangebyscore_withscores']](_0x38d16c,_0x49dfa2,_0x582fb5,'WITHSCORES');if(_0x111658?.['length']>0x0)return _0x111658[0x0];return null;}async['zRangeByScore'](_0x1526df,_0x236d1b,_0x1071c7){const _0x11f5b9=await this['storeClient'][this['commands']['zrangebyscore']](_0x1526df,_0x236d1b,_0x1071c7);if(_0x11f5b9?.['length']>0x0)return _0x11f5b9[0x0];return null;}['mintKey'](_0x231746,_0xf66474){if(!this['namespace'])throw new Error('namespace\x20not\x20set');return key_1['KeyService']['mintKey'](this['namespace'],_0x231746,_0xf66474);}['invalidateCache'](){this['cache']['invalidate']();}async['reserveScoutRole'](_0x12720c,_0x3f5c5b=enums_1['HMSH_SCOUT_INTERVAL_SECONDS']){const _0x2e4a7c=this['mintKey'](key_1['KeyType']['WORK_ITEMS'],{'appId':this['appId'],'scoutType':_0x12720c}),_0xd266e6=await this['exec']('SET',_0x2e4a7c,_0x12720c+':'+(0x0,utils_1['formatISODate'])(new Date()),'NX','EX',''+(_0x3f5c5b-0x1));return this['isSuccessful'](_0xd266e6);}async['releaseScoutRole'](_0x409ec0){const _0x100f1d=this['mintKey'](key_1['KeyType']['WORK_ITEMS'],{'appId':this['appId'],'scoutType':_0x409ec0}),_0x430147=await this['exec']('DEL',_0x100f1d);return this['isSuccessful'](_0x430147);}async['getSettings'](_0x4e5092=![]){let _0x3f028c=this['cache']?.['getSettings']();if(_0x3f028c)return _0x3f028c;else{if(_0x4e5092){const _0x4bc615=await Promise['resolve']()['then'](()=>__importStar(require('../../../../package.json'))),_0x41c8d9=_0x4bc615['version']||'0.0.0';return _0x3f028c={'namespace':key_1['HMNS'],'version':_0x41c8d9},await this['setSettings'](_0x3f028c),_0x3f028c;}}throw new Error('settings\x20not\x20found');}async['setSettings'](_0x49fec7){const _0x310743={},_0x34256e=this['mintKey'](key_1['KeyType']['HOTMESH'],_0x310743);return await this['storeClient'][this['commands']['hset']](_0x34256e,_0x49fec7);}async['reserveSymbolRange'](_0x59453f,_0x1ae705,_0x1da15f,_0x58db21=0x1){const _0x421c85=this['mintKey'](key_1['KeyType']['SYMKEYS'],{'appId':this['appId']}),_0x243233=this['mintKey'](key_1['KeyType']['SYMKEYS'],{'activityId':_0x59453f,'appId':this['appId']}),_0x5c64a2=await this['storeClient'][this['commands']['hsetnx']](_0x421c85,_0x59453f,'?:?');if(_0x5c64a2){const _0x471c7e=await this['storeClient'][this['commands']['hincrby']](_0x421c85,':cursor',_0x1ae705),_0x11cba2=_0x471c7e-_0x1ae705,_0x19717f=_0x11cba2+':'+(_0x471c7e-0x1);await this['storeClient'][this['commands']['hset']](_0x421c85,_0x59453f,_0x19717f);const _0x404f51=this['seedSymbols'](_0x59453f,_0x1da15f,_0x11cba2);return await this['storeClient'][this['commands']['hset']](_0x243233,_0x404f51),[_0x11cba2+serializer_1['MDATA_SYMBOLS']['SLOTS'],_0x471c7e-0x1,{}];}else{const _0x4ad67d=await this['storeClient'][this['commands']['hget']](_0x421c85,_0x59453f),[_0x2501b4]=_0x4ad67d['split'](':');if(_0x2501b4==='?'){await(0x0,utils_1['sleepFor'])(_0x58db21*0x3e8);if(_0x58db21<0x5)return this['reserveSymbolRange'](_0x59453f,_0x1ae705,_0x1da15f,_0x58db21+0x1);else throw new Error('Symbol\x20range\x20reservation\x20failed\x20due\x20to\x20deployment\x20contention');}else{const _0x3e768d=parseInt(_0x2501b4,0xa),_0x3eaa23=await this['storeClient'][this['commands']['hgetall']](_0x243233),_0xd1b3ab=Object['keys'](_0x3eaa23)['length'],_0x58f7be=_0x3e768d+serializer_1['MDATA_SYMBOLS']['SLOTS']+_0xd1b3ab,_0x15e0a4=Number(_0x3e768d+_0x1ae705-0x1);return[_0x58f7be,_0x15e0a4,_0x3eaa23];}}}async['getAllSymbols'](){const _0x39d4e2=this['mintKey'](key_1['KeyType']['SYMKEYS'],{'appId':this['appId']}),_0x335faa=await this['storeClient'][this['commands']['hgetall']](_0x39d4e2),_0x545c04=Object['keys'](_0x335faa)['sort']();delete _0x545c04[':cursor'];const _0x2c9c71=this['getMulti']();for(const _0x4c891f of _0x545c04){const _0x5c4e71=this['mintKey'](key_1['KeyType']['SYMKEYS'],{'activityId':_0x4c891f,'appId':this['appId']});_0x2c9c71[this['commands']['hgetall']](_0x5c4e71);}const _0x42c98e=await _0x2c9c71['exec'](),_0x2e8fb5={};return _0x42c98e['forEach']((_0x551639,_0x4fbb80)=>{if(_0x551639){let _0xf0dd91;Array['isArray'](_0x551639)&&_0x551639['length']===0x2?_0xf0dd91=_0x551639[0x1]:_0xf0dd91=_0x551639;for(const [_0x215f29,_0x118454]of Object['entries'](_0xf0dd91)){_0x2e8fb5[_0x118454]=_0x215f29['startsWith'](_0x545c04[_0x4fbb80])?_0x215f29:_0x545c04[_0x4fbb80]+'/'+_0x215f29;}}}),_0x2e8fb5;}async['getSymbols'](_0x1713aa){let _0x2db760=this['cache']['getSymbols'](this['appId'],_0x1713aa);if(_0x2db760)return _0x2db760;else{const _0xb23f5c={'activityId':_0x1713aa,'appId':this['appId']},_0x613290=this['mintKey'](key_1['KeyType']['SYMKEYS'],_0xb23f5c);return _0x2db760=await this['storeClient'][this['commands']['hgetall']](_0x613290),this['cache']['setSymbols'](this['appId'],_0x1713aa,_0x2db760),_0x2db760;}}async['addSymbols'](_0x42c481,_0x4f1365){if(!_0x4f1365||!Object['keys'](_0x4f1365)['length'])return![];const _0x57b010={'activityId':_0x42c481,'appId':this['appId']},_0x7a15af=this['mintKey'](key_1['KeyType']['SYMKEYS'],_0x57b010),_0x42d808=await this['storeClient'][this['commands']['hset']](_0x7a15af,_0x4f1365);return this['cache']['deleteSymbols'](this['appId'],_0x42c481),_0x42d808>0x0;}['seedSymbols'](_0xf18b23,_0x2d7f5f,_0x24ac34){if(_0x2d7f5f==='JOB')return this['seedJobSymbols'](_0x24ac34);return this['seedActivitySymbols'](_0x24ac34,_0xf18b23);}['seedJobSymbols'](_0x2c12b6){const _0x535f45={};return serializer_1['MDATA_SYMBOLS']['JOB']['KEYS']['forEach'](_0x537d76=>{_0x535f45['metadata/'+_0x537d76]=(0x0,utils_1['getSymKey'])(_0x2c12b6),_0x2c12b6++;}),_0x535f45;}['seedActivitySymbols'](_0x4c58e2,_0x3079bc){const _0x1854b2={};return serializer_1['MDATA_SYMBOLS']['ACTIVITY']['KEYS']['forEach'](_0x3d0813=>{_0x1854b2[_0x3079bc+'/output/metadata/'+_0x3d0813]=(0x0,utils_1['getSymKey'])(_0x4c58e2),_0x4c58e2++;}),_0x1854b2;}async['getSymbolValues'](){let _0x40ed14=this['cache']['getSymbolValues'](this['appId']);if(_0x40ed14)return _0x40ed14;else{const _0x4d40ff=this['mintKey'](key_1['KeyType']['SYMVALS'],{'appId':this['appId']});return _0x40ed14=await this['storeClient'][this['commands']['hgetall']](_0x4d40ff),this['cache']['setSymbolValues'](this['appId'],_0x40ed14),_0x40ed14;}}async['addSymbolValues'](_0x15c2bf){if(!_0x15c2bf||!Object['keys'](_0x15c2bf)['length'])return![];const _0x24f325=this['mintKey'](key_1['KeyType']['SYMVALS'],{'appId':this['appId']}),_0xf5763c=await this['storeClient'][this['commands']['hset']](_0x24f325,_0x15c2bf);return this['cache']['deleteSymbolValues'](this['appId']),this['isSuccessful'](_0xf5763c);}async['getSymbolKeys'](_0xe72329){const _0x2bf9b9=[];for(const _0x37f84b of _0xe72329){_0x2bf9b9['push'](this['getSymbols'](_0x37f84b));}const _0x5ac6b5=await Promise['all'](_0x2bf9b9),_0x5e1bfe={};for(const _0x2b5645 of _0xe72329){_0x5e1bfe[_0x2b5645]=_0x5ac6b5['shift']();}return _0x5e1bfe;}async['getApp'](_0x4c8b5a,_0x64b981=![]){let _0x1c638b=this['cache']['getApp'](_0x4c8b5a);if(_0x64b981||!(_0x1c638b&&Object['keys'](_0x1c638b)['length']>0x0)){const _0x31ede8={'appId':_0x4c8b5a},_0x557e9f=this['mintKey'](key_1['KeyType']['APP'],_0x31ede8),_0x3cd5f3=await this['storeClient'][this['commands']['hgetall']](_0x557e9f);if(!_0x3cd5f3)return null;_0x1c638b={};for(const _0x171d02 in _0x3cd5f3){try{_0x171d02==='active'?_0x1c638b[_0x171d02]=_0x3cd5f3[_0x171d02]==='true':_0x1c638b[_0x171d02]=_0x3cd5f3[_0x171d02];}catch(_0x30a542){_0x1c638b[_0x171d02]=_0x3cd5f3[_0x171d02];}}this['cache']['setApp'](_0x4c8b5a,_0x1c638b);}return _0x1c638b;}async['setApp'](_0x512333,_0x3e48a5){const _0x474902={'appId':_0x512333},_0x3387ff=this['mintKey'](key_1['KeyType']['APP'],_0x474902),_0x1d93e7='versions/'+_0x3e48a5,_0x26aa29={'id':_0x512333,'version':_0x3e48a5,[_0x1d93e7]:'deployed:'+(0x0,utils_1['formatISODate'])(new Date())};return await this['storeClient'][this['commands']['hset']](_0x3387ff,_0x26aa29),this['cache']['setApp'](_0x512333,_0x26aa29),_0x26aa29;}async['activateAppVersion'](_0x418c1c,_0x449c13){const _0x163f09={'appId':_0x418c1c},_0x4ef4f4=this['mintKey'](key_1['KeyType']['APP'],_0x163f09),_0x2a70d1='versions/'+_0x449c13,_0x44ee93=await this['getApp'](_0x418c1c,!![]);if(_0x44ee93&&_0x44ee93[_0x2a70d1]){const _0x2c3cdd={'id':_0x418c1c,'version':_0x449c13['toString'](),[_0x2a70d1]:'activated:'+(0x0,utils_1['formatISODate'])(new Date()),'active':!![]};return Object['entries'](_0x2c3cdd)['forEach'](([_0x2d056a,_0x27054f])=>{_0x2c3cdd[_0x2d056a]=_0x27054f['toString']();}),await this['storeClient'][this['commands']['hset']](_0x4ef4f4,_0x2c3cdd),!![];}throw new Error('Version\x20'+_0x449c13+'\x20does\x20not\x20exist\x20for\x20app\x20'+_0x418c1c);}async['registerAppVersion'](_0xf021ba,_0x2eafac){const _0x4192f6={'appId':_0xf021ba},_0x4648d4=this['mintKey'](key_1['KeyType']['APP'],_0x4192f6),_0xc8554f={'id':_0xf021ba,'version':_0x2eafac['toString'](),['versions/'+_0x2eafac]:(0x0,utils_1['formatISODate'])(new Date())};return await this['storeClient'][this['commands']['hset']](_0x4648d4,_0xc8554f);}async['setStats'](_0x5cf49a,_0xef0059,_0x209927,_0x59a993,_0x4f2044,_0x2273fd){const _0x1d0b04={'appId':_0x4f2044['id'],'jobId':_0xef0059,'jobKey':_0x5cf49a,'dateTime':_0x209927},_0xa34d4b=_0x2273fd||this['getMulti']();if(_0x59a993['general']['length']){const _0x4acb7f=this['mintKey'](key_1['KeyType']['JOB_STATS_GENERAL'],_0x1d0b04);for(const {target:_0x38eca6,value:_0x3bfb6f}of _0x59a993['general']){_0xa34d4b[this['commands']['hincrbyfloat']](_0x4acb7f,_0x38eca6,_0x3bfb6f);}}for(const {target:_0x5e65cf,value:_0x4b0285}of _0x59a993['index']){const _0x39e5cd={..._0x1d0b04,'facet':_0x5e65cf},_0x1db97a=this['mintKey'](key_1['KeyType']['JOB_STATS_INDEX'],_0x39e5cd);_0xa34d4b[this['commands']['rpush']](_0x1db97a,_0x4b0285['toString']());}for(const {target:_0x1aa3f5,value:_0x3b08c8}of _0x59a993['median']){const _0x26c950={..._0x1d0b04,'facet':_0x1aa3f5},_0x324123=this['mintKey'](key_1['KeyType']['JOB_STATS_MEDIAN'],_0x26c950);this['zAdd'](_0x324123,_0x3b08c8,_0x1aa3f5,_0xa34d4b);}if(!_0x2273fd)return await _0xa34d4b['exec']();}['hGetAllResult'](_0x4889c6){return _0x4889c6;}async['getJobStats'](_0x12620a){const _0x3c664d=this['getMulti']();for(const _0x4c0336 of _0x12620a){_0x3c664d[this['commands']['hgetall']](_0x4c0336);}const _0xc64a33=await _0x3c664d['exec'](),_0x32da87={};for(const [_0x15735e,_0x48ee17]of _0xc64a33['entries']()){const _0x3c4036=_0x12620a[_0x15735e],_0x26aa21=this['hGetAllResult'](_0x48ee17);if(_0x26aa21&&Object['keys'](_0x26aa21)['length']>0x0){const _0x10dd67={..._0x26aa21};for(const [_0x449297,_0x35b677]of Object['entries'](_0x10dd67)){_0x10dd67[_0x449297]=Number(_0x35b677);}_0x32da87[_0x3c4036]=_0x10dd67;}else _0x32da87[_0x3c4036]={};}return _0x32da87;}async['getJobIds'](_0x12c41d,_0x489abc){const _0x375732=this['getMulti']();for(const _0x5db8f4 of _0x12c41d){_0x375732[this['commands']['lrange']](_0x5db8f4,_0x489abc[0x0],_0x489abc[0x1]);}const _0x2d5a8c=await _0x375732['exec'](),_0x42b056={};for(const [_0x2aa150,_0xa14c25]of _0x2d5a8c['entries']()){const _0x397efb=_0x12c41d[_0x2aa150],_0x541f66=_0xa14c25[0x1]||_0xa14c25;_0x541f66&&_0x541f66['length']>0x0?_0x42b056[_0x397efb]=_0x541f66:_0x42b056[_0x397efb]=[];}return _0x42b056;}async['setStatus'](_0x3cb46b,_0x3e7d33,_0xb85198,_0x599a74){const _0x22a259=this['mintKey'](key_1['KeyType']['JOB_STATE'],{'appId':_0xb85198,'jobId':_0x3e7d33});return await(_0x599a74||this['storeClient'])[this['commands']['hincrbyfloat']](_0x22a259,':',_0x3cb46b);}async['getStatus'](_0x18d9d7,_0x270d9c){const _0x5bbbc2=this['mintKey'](key_1['KeyType']['JOB_STATE'],{'appId':_0x270d9c,'jobId':_0x18d9d7}),_0x3f32b1=await this['storeClient'][this['commands']['hget']](_0x5bbbc2,':');if(_0x3f32b1===null)throw new Error('Job\x20'+_0x18d9d7+'\x20not\x20found');return Number(_0x3f32b1);}async['setState']({..._0x4331c6},_0x1fc513,_0x83be80,_0x32054a,_0x3a3e03,_0x223b56){delete _0x4331c6['metadata/js'];const _0x16a6a8=this['mintKey'](key_1['KeyType']['JOB_STATE'],{'appId':this['appId'],'jobId':_0x83be80}),_0x1299aa=await this['getSymbolKeys'](_0x32054a),_0x3bef83=await this['getSymbolValues']();this['serializer']['resetSymbols'](_0x1299aa,_0x3bef83,_0x3a3e03);const _0x4fec36=this['serializer']['package'](_0x4331c6,_0x32054a);return _0x1fc513!==null?_0x4fec36[':']=_0x1fc513['toString']():delete _0x4fec36[':'],await(_0x223b56||this['storeClient'])[this['commands']['hset']](_0x16a6a8,_0x4fec36),_0x83be80;}async['getQueryState'](_0x12ed02,_0x44cb98){const _0x576508=this['mintKey'](key_1['KeyType']['JOB_STATE'],{'appId':this['appId'],'jobId':_0x12ed02}),_0x1ca464=_0x44cb98['map'](_0x46cc5c=>{if(_0x46cc5c['startsWith']('\x22'))return _0x46cc5c['slice'](0x1,-0x1);return'_'+_0x46cc5c;}),_0x1102a5=await this['storeClient'][this['commands']['hmget']](_0x576508,_0x1ca464),_0x51016e={};return _0x44cb98['forEach']((_0x18bb00,_0x5385ed)=>{_0x18bb00['startsWith']('\x22')&&(_0x18bb00=_0x18bb00['slice'](0x1,-0x1)),_0x51016e[_0x18bb00]=_0x1102a5[_0x5385ed];}),_0x51016e;}async['getState'](_0x5a09d6,_0x59cf49,_0x169a45){const _0x373bf5=this['mintKey'](key_1['KeyType']['JOB_STATE'],{'appId':this['appId'],'jobId':_0x5a09d6}),_0x520901=Object['keys'](_0x59cf49),_0x5b3037=await this['getSymbolKeys'](_0x520901);this['serializer']['resetSymbols'](_0x5b3037,{},_0x169a45);const _0x16e987=this['serializer']['abbreviate'](_0x59cf49,_0x520901,[':']),_0x408149=await this['storeClient'][this['commands']['hmget']](_0x373bf5,_0x16e987),_0x4e42db={};let _0x5d997c=![];_0x16e987['forEach']((_0x104ce1,_0x579ec5)=>{_0x408149[_0x579ec5]&&(_0x5d997c=!![]),_0x4e42db[_0x104ce1]=_0x408149[_0x579ec5];});if(_0x5d997c){const _0x295c53=await this['getSymbolValues']();this['serializer']['resetSymbols'](_0x5b3037,_0x295c53,_0x169a45);const _0x57d500=this['serializer']['unpackage'](_0x4e42db,_0x520901);let _0x9f4700=0x0;return _0x57d500[':']&&(_0x9f4700=Number(_0x57d500[':']),_0x57d500['metadata/js']=_0x9f4700,delete _0x57d500[':']),[_0x57d500,_0x9f4700];}else throw new errors_1['GetStateError'](_0x5a09d6);}async['getRaw'](_0xebb32){const _0x3d6b21=this['mintKey'](key_1['KeyType']['JOB_STATE'],{'appId':this['appId'],'jobId':_0xebb32}),_0x5db25b=await this['storeClient'][this['commands']['hgetall']](_0x3d6b21);if(!_0x5db25b)throw new errors_1['GetStateError'](_0xebb32);return _0x5db25b;}async['collate'](_0x4f3420,_0x3f335a,_0x1e97c1,_0x3b7e4a,_0x3b98bb){const _0x37380e=this['mintKey'](key_1['KeyType']['JOB_STATE'],{'appId':this['appId'],'jobId':_0x4f3420}),_0x58e8e2=_0x3f335a+'/output/metadata/as',_0x3faf69=[_0x3f335a],_0x19af63=await this['getSymbolKeys'](_0x3faf69),_0x5b5f2c=await this['getSymbolValues']();this['serializer']['resetSymbols'](_0x19af63,_0x5b5f2c,_0x3b7e4a);const _0x72a029={[_0x58e8e2]:_0x1e97c1['toString']()},_0x2e504a=this['serializer']['package'](_0x72a029,_0x3faf69),_0x112793=Object['keys'](_0x2e504a)[0x0];return await(_0x3b98bb||this['storeClient'])[this['commands']['hincrbyfloat']](_0x37380e,_0x112793,_0x1e97c1);}async['collateSynthetic'](_0x1fb59f,_0x5e3e91,_0x5dccb0,_0x9b676){const _0xf9fa96=this['mintKey'](key_1['KeyType']['JOB_STATE'],{'appId':this['appId'],'jobId':_0x1fb59f});return await(_0x9b676||this['storeClient'])[this['commands']['hincrbyfloat']](_0xf9fa96,_0x5e3e91,_0x5dccb0['toString']());}async['setStateNX'](_0x1a1163,_0x449047,_0x10e393){const _0x20e65e=this['mintKey'](key_1['KeyType']['JOB_STATE'],{'appId':_0x449047,'jobId':_0x1a1163}),_0x228d45=await this['storeClient'][this['commands']['hsetnx']](_0x20e65e,':',_0x10e393?.['toString']()??'1');return this['isSuccessful'](_0x228d45);}async['getSchema'](_0x10e0bd,_0x59e797){const _0x218739=this['cache']['getSchema'](_0x59e797['id'],_0x59e797['version'],_0x10e0bd);if(_0x218739)return _0x218739;else{const _0x1397a6=await this['getSchemas'](_0x59e797);return _0x1397a6[_0x10e0bd];}}async['getSchemas'](_0x4bce38){let _0x120ba2=this['cache']['getSchemas'](_0x4bce38['id'],_0x4bce38['version']);if(_0x120ba2&&Object['keys'](_0x120ba2)['length']>0x0)return _0x120ba2;else{const _0x45152b={'appId':_0x4bce38['id'],'appVersion':_0x4bce38['version']},_0x36e6ab=this['mintKey'](key_1['KeyType']['SCHEMAS'],_0x45152b);_0x120ba2={};const _0x181b45=await this['storeClient'][this['commands']['hgetall']](_0x36e6ab);return Object['entries'](_0x181b45)['forEach'](([_0x5cde8a,_0x3e59f1])=>{_0x120ba2[_0x5cde8a]=JSON['parse'](_0x3e59f1);}),this['cache']['setSchemas'](_0x4bce38['id'],_0x4bce38['version'],_0x120ba2),_0x120ba2;}}async['setSchemas'](_0x3bedf1,_0x5a23d4){const _0x5f07b1={'appId':_0x5a23d4['id'],'appVersion':_0x5a23d4['version']},_0x3dcd68=this['mintKey'](key_1['KeyType']['SCHEMAS'],_0x5f07b1),_0x2c4a59={..._0x3bedf1};Object['entries'](_0x2c4a59)['forEach'](([_0x3608eb,_0xb52551])=>{_0x2c4a59[_0x3608eb]=JSON['stringify'](_0xb52551);});const _0xc501a4=await this['storeClient'][this['commands']['hset']](_0x3dcd68,_0x2c4a59);return this['cache']['setSchemas'](_0x5a23d4['id'],_0x5a23d4['version'],_0x3bedf1),_0xc501a4;}async['setSubscriptions'](_0x54c298,_0x37fd31){const _0x452ad3={'appId':_0x37fd31['id'],'appVersion':_0x37fd31['version']},_0x5d7843=this['mintKey'](key_1['KeyType']['SUBSCRIPTIONS'],_0x452ad3),_0x169167={..._0x54c298};Object['entries'](_0x169167)['forEach'](([_0x35d1c8,_0x1b638e])=>{_0x169167[_0x35d1c8]=JSON['stringify'](_0x1b638e);});const _0x270f77=await this['storeClient'][this['commands']['hset']](_0x5d7843,_0x169167);return this['cache']['setSubscriptions'](_0x37fd31['id'],_0x37fd31['version'],_0x54c298),this['isSuccessful'](_0x270f77);}async['getSubscriptions'](_0x275588){let _0x9a6cac=this['cache']['getSubscriptions'](_0x275588['id'],_0x275588['version']);if(_0x9a6cac&&Object['keys'](_0x9a6cac)['length']>0x0)return _0x9a6cac;else{const _0x24689d={'appId':_0x275588['id'],'appVersion':_0x275588['version']},_0x8d787a=this['mintKey'](key_1['KeyType']['SUBSCRIPTIONS'],_0x24689d);return _0x9a6cac=await this['storeClient'][this['commands']['hgetall']](_0x8d787a)||{},Object['entries'](_0x9a6cac)['forEach'](([_0x25bd8e,_0x5008ae])=>{_0x9a6cac[_0x25bd8e]=JSON['parse'](_0x5008ae);}),this['cache']['setSubscriptions'](_0x275588['id'],_0x275588['version'],_0x9a6cac),_0x9a6cac;}}async['getSubscription'](_0x4394ad,_0x45a5be){const _0x178810=await this['getSubscriptions'](_0x45a5be);return _0x178810[_0x4394ad];}async['setTransitions'](_0x4b9e04,_0x1a9a7c){const _0x211a1f={'appId':_0x1a9a7c['id'],'appVersion':_0x1a9a7c['version']},_0xb52154=this['mintKey'](key_1['KeyType']['SUBSCRIPTION_PATTERNS'],_0x211a1f),_0x112f1e={..._0x4b9e04};Object['entries'](_0x112f1e)['forEach'](([_0x105518,_0x213518])=>{_0x112f1e[_0x105518]=JSON['stringify'](_0x213518);});if(Object['keys'](_0x112f1e)['length']!==0x0){const _0x528bcc=await this['storeClient'][this['commands']['hset']](_0xb52154,_0x112f1e);return this['cache']['setTransitions'](_0x1a9a7c['id'],_0x1a9a7c['version'],_0x4b9e04),_0x528bcc;}}async['getTransitions'](_0x476f61){let _0x447240=this['cache']['getTransitions'](_0x476f61['id'],_0x476f61['version']);if(_0x447240&&Object['keys'](_0x447240)['length']>0x0)return _0x447240;else{const _0x225776={'appId':_0x476f61['id'],'appVersion':_0x476f61['version']},_0x228583=this['mintKey'](key_1['KeyType']['SUBSCRIPTION_PATTERNS'],_0x225776);_0x447240={};const _0x172be7=await this['storeClient'][this['commands']['hgetall']](_0x228583);return Object['entries'](_0x172be7)['forEach'](([_0x3a46e4,_0x1453ce])=>{_0x447240[_0x3a46e4]=JSON['parse'](_0x1453ce);}),this['cache']['setTransitions'](_0x476f61['id'],_0x476f61['version'],_0x447240),_0x447240;}}async['setHookRules'](_0x2fa198){const _0x3d670d=this['mintKey'](key_1['KeyType']['HOOKS'],{'appId':this['appId']}),_0x59ff2f={};Object['entries'](_0x2fa198)['forEach'](([_0xf6389a,_0x5d7f02])=>{_0x59ff2f[_0xf6389a['toString']()]=JSON['stringify'](_0x5d7f02);});if(Object['keys'](_0x59ff2f)['length']!==0x0){const _0x28061f=await this['storeClient'][this['commands']['hset']](_0x3d670d,_0x59ff2f);return this['cache']['setHookRules'](this['appId'],_0x2fa198),_0x28061f;}}async['getHookRules'](){let _0x3e41e5=this['cache']['getHookRules'](this['appId']);if(_0x3e41e5&&Object['keys'](_0x3e41e5)['length']>0x0)return _0x3e41e5;else{const _0x4307ff=this['mintKey'](key_1['KeyType']['HOOKS'],{'appId':this['appId']}),_0x227e48=await this['storeClient'][this['commands']['hgetall']](_0x4307ff);return _0x3e41e5={},Object['entries'](_0x227e48)['forEach'](([_0x10375c,_0x32a9f8])=>{_0x3e41e5[_0x10375c]=JSON['parse'](_0x32a9f8);}),this['cache']['setHookRules'](this['appId'],_0x3e41e5),_0x3e41e5;}}async['setHookSignal'](_0x32a0d3,_0x3852b6){const _0x51d01c=this['mintKey'](key_1['KeyType']['SIGNALS'],{'appId':this['appId']}),{topic:_0x1e94d6,resolved:_0x2e69c8,jobId:_0x4b1c48}=_0x32a0d3,_0x152b93=_0x1e94d6+':'+_0x2e69c8;await this['setnxex'](_0x51d01c+':'+_0x152b93,_0x4b1c48,Math['max'](_0x32a0d3['expire'],enums_1['HMSH_SIGNAL_EXPIRE']));}async['getHookSignal'](_0x23710f,_0x19015e){const _0x19d170=this['mintKey'](key_1['KeyType']['SIGNALS'],{'appId':this['appId']}),_0x2227b6=await this['storeClient'][this['commands']['get']](_0x19d170+':'+_0x23710f+':'+_0x19015e);return _0x2227b6?_0x2227b6['toString']():undefined;}async['deleteHookSignal'](_0x4396b2,_0x10ed76){const _0x35c124=this['mintKey'](key_1['KeyType']['SIGNALS'],{'appId':this['appId']}),_0x1d5bba=await this['storeClient'][this['commands']['del']](_0x35c124+':'+_0x4396b2+':'+_0x10ed76);return _0x1d5bba?Number(_0x1d5bba):undefined;}async['addTaskQueues'](_0x14691c){const _0x291277=this['getMulti'](),_0x521b9e=this['mintKey'](key_1['KeyType']['WORK_ITEMS'],{'appId':this['appId']});for(const _0x44b390 of _0x14691c){_0x291277[this['commands']['zadd']](_0x521b9e,{'score':Date['now']()['toString'](),'value':_0x44b390},{'NX':!![]});}await _0x291277['exec']();}async['getActiveTaskQueue'](){let _0x1b074b=this['cache']['getActiveTaskQueue'](this['appId'])||null;if(!_0x1b074b){const _0x117ec2=this['mintKey'](key_1['KeyType']['WORK_ITEMS'],{'appId':this['appId']}),_0x1bd3e=await this['storeClient'][this['commands']['zrange']](_0x117ec2,0x0,0x0);_0x1b074b=_0x1bd3e['length']>0x0?_0x1bd3e[0x0]:null,_0x1b074b&&this['cache']['setWorkItem'](this['appId'],_0x1b074b);}return _0x1b074b;}async['deleteProcessedTaskQueue'](_0x54e9f2,_0x3e1e75,_0x7a2510,_0x20a403=![]){const _0x595084=this['mintKey'](key_1['KeyType']['WORK_ITEMS'],{'appId':this['appId']}),_0x34bf2e=await this['storeClient'][this['commands']['zrem']](_0x595084,_0x54e9f2);_0x34bf2e&&(_0x20a403?(this['storeClient'][this['commands']['expire']](_0x7a2510,0x0),this['storeClient'][this['commands']['expire']](_0x3e1e75['split'](':')['slice'](0x0,0x5)['join'](':'),0x0)):await this['storeClient'][this['commands']['rename']](_0x7a2510,_0x3e1e75)),this['cache']['removeWorkItem'](this['appId']);}async['processTaskQueue'](_0x4a588e,_0x167c5b){return await this['storeClient'][this['commands']['lmove']](_0x4a588e,_0x167c5b,'LEFT','RIGHT');}async['expireJob'](_0x56651d,_0x499c98,_0x188d2e){if(!isNaN(_0x499c98)&&_0x499c98>0x0){const _0x2962d3=this['mintKey'](key_1['KeyType']['JOB_STATE'],{'appId':this['appId'],'jobId':_0x56651d});await(_0x188d2e||this['storeClient'])[this['commands']['expire']](_0x2962d3,_0x499c98);}}async['getDependencies'](_0x1b1a1c){const _0x489933={'appId':this['appId'],'jobId':_0x1b1a1c},_0x4eec71=this['mintKey'](key_1['KeyType']['JOB_DEPENDENTS'],_0x489933);return this['storeClient'][this['commands']['lrange']](_0x4eec71,0x0,-0x1);}async['registerTimeHook'](_0x1f9b84,_0x1c1adc,_0x354551,_0x139848,_0x1151b2,_0x211158,_0x1e7b18){const _0x388ae1=this['mintKey'](key_1['KeyType']['TIME_RANGE'],{'appId':this['appId'],'timeValue':_0x1151b2}),_0x1d2856=[_0x139848,_0x354551,_0x1c1adc,_0x211158,_0x1f9b84]['join'](key_1['VALSEP']),_0x23fd9a=await(_0x1e7b18||this['storeClient'])[this['commands']['rpush']](_0x388ae1,_0x1d2856);if(_0x1e7b18||_0x23fd9a===0x1){const _0x50ec90=this['mintKey'](key_1['KeyType']['TIME_RANGE'],{'appId':this['appId']});await this['zAdd'](_0x50ec90,_0x1151b2['toString'](),_0x388ae1,_0x1e7b18);}}async['getNextTask'](_0x85178a){const _0x64d06e=this['mintKey'](key_1['KeyType']['TIME_RANGE'],{'appId':this['appId']});_0x85178a=_0x85178a||await this['zRangeByScore'](_0x64d06e,0x0,Date['now']());if(_0x85178a){let [_0x4271db,_0x122417]=this['resolveTaskKeyContext'](_0x85178a);const _0x564e56=await this['storeClient'][this['commands']['lpop']](_0x122417);if(_0x564e56){let [_0x5c995c,_0x121dfd,_0x4ad4c9,_0x5aeafe,..._0x2adc62]=_0x564e56['split'](key_1['VALSEP']);const _0x49c770=_0x2adc62['join'](key_1['VALSEP']);if(_0x5c995c==='delist')_0x4271db='delist';else{if(_0x5c995c==='child')_0x4271db='child';else _0x5c995c==='expire-child'&&(_0x5c995c='expire');}return[_0x85178a,_0x49c770,_0x4ad4c9,_0x121dfd,_0x4271db];}return await this['storeClient'][this['commands']['zrem']](_0x64d06e,_0x85178a),!![];}return![];}['resolveTaskKeyContext'](_0x30db36){if(_0x30db36['startsWith'](key_1['TYPSEP']+'INTERRUPT'))return['interrupt',_0x30db36['split'](key_1['TYPSEP'])[0x2]];else return _0x30db36['startsWith'](key_1['TYPSEP']+'EXPIRE')?['expire',_0x30db36['split'](key_1['TYPSEP'])[0x2]]:['sleep',_0x30db36];}async['interrupt'](_0x3c3252,_0x5b1e6b,_0x162d37={}){try{const _0x35be22=await this['getStatus'](_0x5b1e6b,this['appId']);if(_0x35be22<=0x0)throw new Error('Job\x20'+_0x5b1e6b+'\x20already\x20completed');const _0xe7f765=-0x3b9aca00,_0x16d2c6=this['mintKey'](key_1['KeyType']['JOB_STATE'],{'appId':this['appId'],'jobId':_0x5b1e6b}),_0x5b371c=await this['storeClient'][this['commands']['hincrbyfloat']](_0x16d2c6,':',_0xe7f765);if(_0x5b371c<=_0xe7f765)throw new Error('Job\x20'+_0x5b1e6b+'\x20already\x20completed');if(_0x162d37['throw']!==![]){const _0x2aa6b8='metadata/err',_0x3999c6=['$'+_0x3c3252],_0x473ae0=await this['getSymbolKeys'](_0x3999c6),_0x40f966=await this['getSymbolValues']();this['serializer']['resetSymbols'](_0x473ae0,_0x40f966,{});const _0x5f35db=JSON['stringify']({'code':_0x162d37['code']??enums_1['HMSH_CODE_INTERRUPT'],'message':_0x162d37['reason']??'job\x20['+_0x5b1e6b+']\x20interrupted','stack':_0x162d37['stack']??'','job_id':_0x5b1e6b}),_0x17e602={[_0x2aa6b8]:_0xe7f765['toString']()},_0x117af1=this['serializer']['package'](_0x17e602,_0x3999c6),_0x10788d=Object['keys'](_0x117af1)[0x0];await this['storeClient'][this['commands']['hset']](_0x16d2c6,_0x10788d,_0x5f35db);}}catch(_0x2b979a){if(!_0x162d37['suppress'])throw _0x2b979a;else this['logger']['debug']('suppressed-interrupt',{'message':_0x2b979a['message']});}}async['scrub'](_0xb44659){const _0x52e4c7=this['mintKey'](key_1['KeyType']['JOB_STATE'],{'appId':this['appId'],'jobId':_0xb44659});await this['storeClient'][this['commands']['del']](_0x52e4c7);}async['findJobs'](_0x5b4b43='*',_0x545e43=0x3e8,_0x161258=0x3e8,_0x25f95f='0'){const _0x339ca4=this['mintKey'](key_1['KeyType']['JOB_STATE'],{'appId':this['appId'],'jobId':_0x5b4b43});let _0x509b49;const _0x498386=[];do{const _0x343131=await this['exec']('SCAN',_0x25f95f,'MATCH',_0x339ca4,'COUNT',_0x161258['toString']());if(Array['isArray'](_0x343131)){[_0x25f95f,_0x509b49]=_0x343131;for(const _0x45c06d of[..._0x509b49]){_0x498386['push'](_0x45c06d);}if(_0x498386['length']>=_0x545e43)break;}else break;}while(_0x25f95f!=='0');return[_0x25f95f,_0x498386];}async['findJobFields'](_0x54942f,_0x59057e='*',_0x11ed29=0x3e8,_0xe6fd8d=0x3e8,_0x54c074='0'){let _0x537c99=[];const _0x254163={},_0x371f80=this['mintKey'](key_1['KeyType']['JOB_STATE'],{'appId':this['appId'],'jobId':_0x54942f});let _0x1347f6=0x0;do{const _0x563f02=await this['exec']('HSCAN',_0x371f80,_0x54c074,'MATCH',_0x59057e,'COUNT',_0xe6fd8d['toString']());if(Array['isArray'](_0x563f02)){[_0x54c074,_0x537c99]=_0x563f02;for(let _0x4df2fc=0x0;_0x4df2fc<_0x537c99['length'];_0x4df2fc+=0x2){_0x1347f6++,_0x254163[_0x537c99[_0x4df2fc]]=_0x537c99[_0x4df2fc+0x1];}}else break;}while(_0x54c074!=='0'&&_0x1347f6<_0x11ed29);return[_0x54c074,_0x254163];}async['setThrottleRate'](_0x1d789a){const _0x83b43f=this['mintKey'](key_1['KeyType']['THROTTLE_RATE'],{'appId':this['appId']});if(_0x1d789a['guid'])return;const _0x4ecce9=_0x1d789a['throttle']['toString']();if(_0x1d789a['topic'])await this['storeClient'][this['commands']['hset']](_0x83b43f,{[_0x1d789a['topic']]:_0x4ecce9});else{const _0x387e2d=this['getMulti']();_0x387e2d[this['commands']['del']](_0x83b43f),_0x387e2d[this['commands']['hset']](_0x83b43f,{':':_0x4ecce9}),await _0x387e2d['exec']();}}async['getThrottleRates'](){const _0x275cdc=this['mintKey'](key_1['KeyType']['THROTTLE_RATE'],{'appId':this['appId']}),_0x5a7d54=await this['storeClient'][this['commands']['hgetall']](_0x275cdc);return _0x5a7d54??{};}async['getThrottleRate'](_0x36d42c){const _0x475df2=(_0x49f482,_0x262fce)=>{const _0x5e9960=_0x262fce in _0x49f482?Number(_0x49f482[_0x262fce]):0x0;if(isNaN(_0x5e9960))return 0x0;if(_0x5e9960==-0x1)return enums_1['MAX_DELAY'];return Math['max'](Math['min'](_0x5e9960,enums_1['MAX_DELAY']),0x0);},_0x3fac70=await this['getThrottleRates'](),_0x489dfe=_0x475df2(_0x3fac70,':');if(_0x36d42c===':'||!(_0x36d42c in _0x3fac70))return _0x489dfe;return _0x475df2(_0x3fac70,_0x36d42c);}}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 _0x57cb(){const _0x34ef5c=['1565hcvIwH','115770XovzDH','1211280DQXXAo','720aPYovx','18165UBQudD','870496eXfkTW','43310OkvkPj','901572kppiNc','6kFaWeJ','1388XUxXbr'];_0x57cb=function(){return _0x34ef5c;};return _0x57cb();}(function(_0x4b5c18,_0x2a0216){const _0x520b68=_0x2f28,_0x167378=_0x4b5c18();while(!![]){try{const _0x1feadf=parseInt(_0x520b68(0xd4))/0x1*(parseInt(_0x520b68(0xd8))/0x2)+parseInt(_0x520b68(0xdb))/0x3+parseInt(_0x520b68(0xd9))/0x4*(parseInt(_0x520b68(0xda))/0x5)+-parseInt(_0x520b68(0xd2))/0x6+-parseInt(_0x520b68(0xd7))/0x7+-parseInt(_0x520b68(0xd5))/0x8+-parseInt(_0x520b68(0xd3))/0x9*(-parseInt(_0x520b68(0xd6))/0xa);if(_0x1feadf===_0x2a0216)break;else _0x167378['push'](_0x167378['shift']());}catch(_0x79040a){_0x167378['push'](_0x167378['shift']());}}}(_0x57cb,0x1a890));function _0x2f28(_0x379d12,_0x57f96b){const _0x57cb9c=_0x57cb();return _0x2f28=function(_0x2f2881,_0x42b6ce){_0x2f2881=_0x2f2881-0xd2;let _0xca1a98=_0x57cb9c[_0x2f2881];return _0xca1a98;},_0x2f28(_0x379d12,_0x57f96b);}Object['defineProperty'](exports,'__esModule',{'value':!![]}),exports['IORedisStoreService']=void 0x0;const key_1=require('../../../../modules/key'),enums_1=require('../../../../modules/enums'),_base_1=require('./_base');class IORedisStoreService extends _base_1['RedisStoreBase']{constructor(_0x3f6930){super(_0x3f6930),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 _0x146fcc=this;if(enums_1['HMSH_IS_CLUSTER']){const _0x2bc8f0=[],_0x5b7a98=(_0x182f5a,_0x704991)=>{return _0x2bc8f0['push']({'command':_0x182f5a,'args':_0x704991}),_0xd237a8;},_0xd237a8={'sendCommand'(_0x2ee30e){return _0x146fcc['storeClient']['sendCommand'](_0x2ee30e);},async 'exec'(){if(_0x2bc8f0['length']===0x0)return[];const _0x5ce269=_0x2bc8f0['every'](_0x253ca6=>{return _0x253ca6['args'][0x0]===_0x2bc8f0[0x0]['args'][0x0];});if(_0x5ce269){const _0x21d68f=_0x146fcc['storeClient']['multi']();_0x2bc8f0['forEach'](_0x3121e8=>_0x21d68f[_0x3121e8['command']](..._0x3121e8['args']));const _0x43d703=await _0x21d68f['exec']();return _0x43d703['map'](_0x31371e=>_0x31371e);}else return Promise['all'](_0x2bc8f0['map'](_0x3160cb=>_0x146fcc['storeClient'][_0x3160cb['command']](..._0x3160cb['args'])));},'xadd'(_0x1fe292,_0x1db06a,_0x166b35,_0x2c288d){return _0x5b7a98('xadd',[_0x1fe292,_0x1db06a,_0x166b35,_0x2c288d]);},'xack'(_0x4b3346,_0x1be366,_0x2cfd31){return _0x5b7a98('xack',[_0x4b3346,_0x1be366,_0x2cfd31]);},'xdel'(_0xb1d433,_0x9df49a){return _0x5b7a98('xdel',[_0xb1d433,_0x9df49a]);},'xlen'(_0x40129b){return _0x5b7a98('xlen',[_0x40129b]);},'xpending'(_0x54733b,_0x3894a9,_0xf1a281,_0x1d0e77,_0x1c062f,_0x276653){return _0x5b7a98('xpending',[_0x54733b,_0x3894a9,_0xf1a281,_0x1d0e77,_0x1c062f,_0x276653]);},'xclaim'(_0x17ad20,_0xd87dc8,_0x1e6896,_0x1a8f52,_0x1b4a5e,..._0x18c6e0){return _0x5b7a98('xclaim',[_0x17ad20,_0xd87dc8,_0x1e6896,_0x1a8f52,_0x1b4a5e,..._0x18c6e0]);},'del'(_0x3efc4d){return _0x5b7a98('del',[_0x3efc4d]);},'expire':function(_0x55460e,_0x1a01b5){return _0x5b7a98('expire',[_0x55460e,_0x1a01b5]);},'hdel'(_0x18bfb3,_0x124b67){return _0x5b7a98('hdel',[_0x18bfb3,_0x124b67]);},'hget'(_0xce5da7,_0x22f0ed){return _0x5b7a98('hget',[_0xce5da7,_0x22f0ed]);},'hgetall'(_0x5a769e){return _0x5b7a98('hgetall',[_0x5a769e]);},'hincrbyfloat'(_0x46b6c1,_0x4dd9d1,_0x19943a){return _0x5b7a98('hincrbyfloat',[_0x46b6c1,_0x4dd9d1,_0x19943a]);},'hmget'(_0x540cab,_0x138287){return _0x5b7a98('hmget',[_0x540cab,_0x138287]);},'hset'(_0x5ec948,_0xb49af0){return _0x5b7a98('hset',[_0x5ec948,_0xb49af0]);},'lrange'(_0x262677,_0x256196,_0x3dd959){return _0x5b7a98('lrange',[_0x262677,_0x256196,_0x3dd959]);},'rpush'(_0x1c5672,_0x4d30f2){return _0x5b7a98('rpush',[_0x1c5672,_0x4d30f2]);},'zadd'(..._0x17d6c4){return _0x5b7a98('zadd',_0x17d6c4);},'xgroup'(_0x41b204,_0x31fa83,_0x5ab63a,_0x36fd41,_0x31c093){return _0x5b7a98('xgroup',[_0x41b204,_0x31fa83,_0x5ab63a,_0x36fd41,_0x31c093]);}};return _0xd237a8;}return this['storeClient']['multi']();}async['exec'](..._0x385286){const _0x1a594b=await this['storeClient']['call']['apply'](this['storeClient'],_0x385286);if(typeof _0x1a594b==='string')return _0x1a594b;else{if(Array['isArray'](_0x1a594b)){if(Array['isArray'](_0x1a594b[0x0]))return _0x1a594b;return _0x1a594b;}}return _0x1a594b;}async['setnxex'](_0x409654,_0x135235,_0x11fcd6){const _0x8de244=await this['storeClient'][this['commands']['set']](_0x409654,_0x135235,'NX','EX',_0x11fcd6['toString']());return this['isSuccessful'](_0x8de244);}['hGetAllResult'](_0xc52a05){return _0xc52a05[0x1];}async['addTaskQueues'](_0x46fc86){const _0x14543d=this['storeClient']['multi'](),_0x40e7c5=this['mintKey'](key_1['KeyType']['WORK_ITEMS'],{'appId':this['appId']});for(const _0x20466a of _0x46fc86){_0x14543d['zadd'](_0x40e7c5,'NX',Date['now'](),_0x20466a);}await _0x14543d['exec']();}}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(_0x4989a8,_0x1bcd4b){const _0x4f1f88=_0x3b2c,_0x1463bf=_0x4989a8();while(!![]){try{const _0x23df65=-parseInt(_0x4f1f88(0xf6))/0x1*(-parseInt(_0x4f1f88(0xef))/0x2)+-parseInt(_0x4f1f88(0xf1))/0x3*(parseInt(_0x4f1f88(0xf4))/0x4)+-parseInt(_0x4f1f88(0xf5))/0x5+-parseInt(_0x4f1f88(0xf3))/0x6*(parseInt(_0x4f1f88(0xec))/0x7)+parseInt(_0x4f1f88(0xeb))/0x8*(parseInt(_0x4f1f88(0xee))/0x9)+parseInt(_0x4f1f88(0xf0))/0xa+-parseInt(_0x4f1f88(0xf2))/0xb*(-parseInt(_0x4f1f88(0xed))/0xc);if(_0x23df65===_0x1bcd4b)break;else _0x1463bf['push'](_0x1463bf['shift']());}catch(_0x328a3b){_0x1463bf['push'](_0x1463bf['shift']());}}}(_0x7a67,0x9bd99));Object['defineProperty'](exports,'__esModule',{'value':!![]}),exports['RedisStoreService']=void 0x0;const enums_1=require('../../../../modules/enums'),_base_1=require('./_base');function _0x7a67(){const _0x256036=['2GQcGwT','352030dTopkH','82593mZEjsG','55891aqhSmH','426mRqfcP','40VVDhWm','2309315xWxgda','55518nScEBg','1155464iDbkJr','25319DexiVn','912iwKXfP','72AhIoVV'];_0x7a67=function(){return _0x256036;};return _0x7a67();}function _0x3b2c(_0x20f45e,_0x34069f){const _0x7a67b7=_0x7a67();return _0x3b2c=function(_0x3b2cef,_0x4be1ac){_0x3b2cef=_0x3b2cef-0xeb;let _0x596dbb=_0x7a67b7[_0x3b2cef];return _0x596dbb;},_0x3b2c(_0x20f45e,_0x34069f);}class RedisStoreService extends _base_1['RedisStoreBase']{constructor(_0x4c5a23){super(_0x4c5a23),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 _0x2f7de2=this;if(enums_1['HMSH_IS_CLUSTER']){const _0x43f0eb=[],_0x269a8c=(_0x306041,_0x59966e)=>{return _0x43f0eb['push']({'command':_0x306041['toUpperCase'](),'args':_0x59966e}),_0x639a91;},_0x639a91={'sendCommand'(_0x4eb27c,..._0x55a432){return _0x2f7de2['storeClient']['sendCommand']([_0x4eb27c,..._0x55a432]);},async 'exec'(){if(_0x43f0eb['length']===0x0)return[];const _0x1eb982=_0x43f0eb['every'](_0x179d9b=>{return _0x179d9b['args'][0x0]===_0x43f0eb[0x0]['args'][0x0];});if(_0x1eb982){const _0x31e421=_0x2f7de2['storeClient']['multi']();_0x43f0eb['forEach'](_0x541861=>{if(_0x541861['command']==='ZADD')return _0x31e421['ZADD'](_0x541861['args'][0x0],_0x541861['args'][0x1],_0x541861['args'][0x2]);return _0x31e421[_0x541861['command']](..._0x541861['args']);});const _0x3f8c48=await _0x31e421['exec']();return _0x3f8c48['map'](_0x4967c0=>_0x4967c0);}else return Promise['all'](_0x43f0eb['map'](_0x78e1c1=>{if(_0x78e1c1['command']==='ZADD')return _0x2f7de2['storeClient']['ZADD'](_0x78e1c1['args'][0x0],_0x78e1c1['args'][0x1],_0x78e1c1['args'][0x2]);return _0x2f7de2['storeClient'][_0x78e1c1['command']](..._0x78e1c1['args']);}));},'XADD'(_0x490b0e,_0x29dbfc,_0x471d6f,_0xba82a){return _0x269a8c('XADD',[_0x490b0e,_0x29dbfc,_0x471d6f,_0xba82a]);},'XACK'(_0x27810c,_0x24bc2d,_0xf7cf43){return _0x269a8c('XACK',[_0x27810c,_0x24bc2d,_0xf7cf43]);},'XDEL'(_0x617e14,_0x52345e){return _0x269a8c('XDEL',[_0x617e14,_0x52345e]);},'XLEN'(_0x4be3e0){return _0x269a8c('XLEN',[_0x4be3e0]);},'XCLAIM'(_0x35fa8d,_0x1ec068,_0xa9ad77,_0x5877f5,_0xfa6753,..._0x44ed89){return _0x269a8c('XCLAIM',[_0x35fa8d,_0x1ec068,_0xa9ad77,_0x5877f5,_0xfa6753,..._0x44ed89]);},'XPENDING'(_0x2e98c7,_0x2c35d1,_0x404699,_0x210344,_0x4e3a41,_0x444a22){return _0x269a8c('XPENDING',[_0x2e98c7,_0x2c35d1,_0x404699,_0x210344,_0x4e3a41,_0x444a22]);},'DEL':function(_0x3348e9){return _0x269a8c('DEL',[_0x3348e9]);},'EXPIRE':function(_0x3bf3a5,_0x50925e){return _0x269a8c('EXPIRE',[_0x3bf3a5,_0x50925e]);},'HDEL'(_0x1a2560,_0x1b0ed0){return _0x269a8c('HDEL',[_0x1a2560,_0x1b0ed0]);},'HGET'(_0x53af13,_0xcbbe4e){return _0x269a8c('HGET',[_0x53af13,_0xcbbe4e]);},'HGETALL'(_0x23fce4){return _0x269a8c('HGETALL',[_0x23fce4]);},'HINCRBYFLOAT'(_0x387e4e,_0x1469ae,_0x2578a4){return _0x269a8c('HINCRBYFLOAT',[_0x387e4e,_0x1469ae,_0x2578a4]);},'HMGET'(_0x2ca86b,_0x1ca65e){return _0x269a8c('HMGET',[_0x2ca86b,_0x1ca65e]);},'HSET'(_0x662e35,_0x5797da){return _0x269a8c('HSET',[_0x662e35,_0x5797da]);},'LRANGE'(_0x5e798e,_0x350369,_0x2615f9){return _0x269a8c('LRANGE',[_0x5e798e,_0x350369,_0x2615f9]);},'RPUSH'(_0x4f6872,_0x208eee){return _0x269a8c('RPUSH',[_0x4f6872,_0x208eee]);},'ZADD'(_0x18b152,_0x3d9ec0,_0x1c6c2a){return _0x269a8c('ZADD',[_0x18b152,_0x3d9ec0,_0x1c6c2a]);},'XGROUP'(_0x2811e5,_0x5779b0,_0x222752,_0x2ea334,_0x4a6b01){return _0x269a8c('XGROUP',[_0x2811e5,_0x5779b0,_0x222752,_0x2ea334,_0x4a6b01]);},'EXISTS':function(_0x536f35){throw new Error('Function\x20not\x20implemented.');},'HMPUSH':function(_0x3d96e0,_0x366b96){throw new Error('Function\x20not\x20implemented.');},'LPUSH':function(_0x94c392,_0x276b63){throw new Error('Function\x20not\x20implemented.');},'SET':function(_0x5308d9,_0x49f98b){throw new Error('Function\x20not\x20implemented.');},'ZRANGE_WITHSCORES':function(_0x2a5cb7,_0x5d7367,_0x5153dd){throw new Error('Function\x20not\x20implemented.');},'ZRANK':function(_0x9a4130,_0x1d1112){throw new Error('Function\x20not\x20implemented.');},'ZSCORE':function(_0x4d5f06,_0x35b0da){throw new Error('Function\x20not\x20implemented.');}};return _0x639a91;}return this['storeClient']['multi']();}async['exec'](..._0x1c7c27){return await this['storeClient']['sendCommand'](_0x1c7c27);}async['setnxex'](_0x22e48b,_0x1ba93e,_0x4c579d){const _0x5b36ff=await this['storeClient'][this['commands']['set']](_0x22e48b,_0x1ba93e,{'NX':!![],'EX':_0x4c579d});return this['isSuccessful'](_0x5b36ff);}async['zAdd'](_0x1391af,_0x3dc9fa,_0x13d3cc,_0x525c37){return await(_0x525c37||this['storeClient'])[this['commands']['zadd']](_0x1391af,{'score':_0x3dc9fa,'value':_0x13d3cc['toString']()});}async['zRangeByScoreWithScores'](_0x12d0dd,_0x3b432f,_0x390844){const _0x6ebb13=await this['storeClient'][this['commands']['zrangebyscore_withscores']](_0x12d0dd,_0x3b432f,_0x390844);if(_0x6ebb13?.['length']>0x0)return _0x6ebb13[0x0];return null;}async['zRangeByScore'](_0x18e9c9,_0x23dfb0,_0x54c8a9){const _0x5a0ee2=await this['storeClient'][this['commands']['zrangebyscore']](_0x18e9c9,_0x23dfb0,_0x54c8a9);if(_0x5a0ee2?.['length']>0x0)return _0x5a0ee2[0x0];return null;}}exports['RedisStoreService']=RedisStoreService;
@@ -0,0 +1,5 @@
1
+ import { ILogger } from '../../logger';
2
+ import { HotMeshApps } from '../../../types/hotmesh';
3
+ export interface StoreInitializable {
4
+ init(namespace: string, appId: string, logger: ILogger): Promise<HotMeshApps>;
5
+ }
@@ -0,0 +1 @@
1
+ 'use strict';(function(_0x3db2c1,_0x2660a0){var _0x4b837f=_0x5d10,_0x5c705d=_0x3db2c1();while(!![]){try{var _0x1f4616=-parseInt(_0x4b837f(0x179))/0x1+-parseInt(_0x4b837f(0x178))/0x2+parseInt(_0x4b837f(0x175))/0x3+-parseInt(_0x4b837f(0x17b))/0x4+-parseInt(_0x4b837f(0x176))/0x5+parseInt(_0x4b837f(0x177))/0x6+parseInt(_0x4b837f(0x17a))/0x7;if(_0x1f4616===_0x2660a0)break;else _0x5c705d['push'](_0x5c705d['shift']());}catch(_0xf71fca){_0x5c705d['push'](_0x5c705d['shift']());}}}(_0x5f0b,0x7f9cf));Object['defineProperty'](exports,'__esModule',{'value':!![]});function _0x5d10(_0x3b9f40,_0x551ef7){var _0x5f0bf0=_0x5f0b();return _0x5d10=function(_0x5d1051,_0x399bdf){_0x5d1051=_0x5d1051-0x175;var _0x12aa71=_0x5f0bf0[_0x5d1051];return _0x12aa71;},_0x5d10(_0x3b9f40,_0x551ef7);}function _0x5f0b(){var _0x3c37f7=['497550UicmFC','4399770iCvBqa','3046920JIhDPd','1146954DjMoGt','490135dIVGgI','19689516VTrDlU','4080756nzgStT'];_0x5f0b=function(){return _0x3c37f7;};return _0x5f0b();}
@@ -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("./clients/ioredis");
6
- const redis_1 = require("./clients/redis");
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<T, U> {
5
- redisClient: T;
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(redisClient: T);
9
+ constructor(streamClient: Client, storeClient: Client);
10
10
  abstract init(namespace: string, appId: string, logger: ILogger): Promise<void>;
11
- abstract getMulti(): U;
12
- abstract mintKey(type: KeyType, params: KeyStoreParams): string;
13
- abstract xgroup(command: 'CREATE', key: string, groupName: string, id: string, mkStream?: 'MKSTREAM'): Promise<boolean>;
14
- abstract xadd(key: string, id: string, messageId: string, messageValue: string, multi?: U): Promise<string | U>;
15
- abstract xreadgroup(command: 'GROUP', groupName: string, consumerName: string, blockOption: 'BLOCK' | 'COUNT', blockTime: number | string, streamsOption: 'STREAMS', streamName: string, id: string): Promise<string[][][] | null | unknown[]>;
16
- abstract xpending(key: string, group: string, start?: string, end?: string, count?: number, consumer?: string): Promise<[string, string, number, [string, number][]][] | [string, string, number, number] | unknown[]>;
17
- abstract xclaim(key: string, group: string, consumer: string, minIdleTime: number, id: string, ...args: string[]): Promise<ReclaimedMessageType>;
18
- abstract xack(key: string, group: string, id: string, multi?: U): Promise<number | U>;
19
- abstract xdel(key: string, id: string, multi?: U): Promise<number | U>;
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(redisClient) {
6
- this.redisClient = redisClient;
5
+ constructor(streamClient, storeClient) {
6
+ this.streamClient = streamClient;
7
+ this.storeClient = storeClient;
7
8
  }
8
9
  }
9
10
  exports.StreamService = StreamService;
@@ -0,0 +1,4 @@
1
+ export declare class DeployService {
2
+ constructor();
3
+ deploy(): Promise<void>;
4
+ }
@@ -0,0 +1 @@
1
+ 'use strict';(function(_0x1f8d0e,_0x2d0f77){const _0x5ae236=_0x3116,_0x1a2ab9=_0x1f8d0e();while(!![]){try{const _0x26a10f=parseInt(_0x5ae236(0x1b8))/0x1+parseInt(_0x5ae236(0x1bd))/0x2+parseInt(_0x5ae236(0x1c0))/0x3*(parseInt(_0x5ae236(0x1bb))/0x4)+parseInt(_0x5ae236(0x1c1))/0x5+parseInt(_0x5ae236(0x1ba))/0x6*(parseInt(_0x5ae236(0x1be))/0x7)+parseInt(_0x5ae236(0x1b9))/0x8*(parseInt(_0x5ae236(0x1bc))/0x9)+-parseInt(_0x5ae236(0x1bf))/0xa;if(_0x26a10f===_0x2d0f77)break;else _0x1a2ab9['push'](_0x1a2ab9['shift']());}catch(_0x9b34ce){_0x1a2ab9['push'](_0x1a2ab9['shift']());}}}(_0x3e02,0xb7835));Object['defineProperty'](exports,'__esModule',{'value':!![]}),exports['DeployService']=void 0x0;class DeployService{constructor(){}async['deploy'](){const _0x1e618f='\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 _0x3116(_0x13f367,_0x114c61){const _0x3e02cb=_0x3e02();return _0x3116=function(_0x311699,_0x2c2b26){_0x311699=_0x311699-0x1b8;let _0x591dd6=_0x3e02cb[_0x311699];return _0x591dd6;},_0x3116(_0x13f367,_0x114c61);}function _0x3e02(){const _0x14e956=['9BilSbu','5833660mCyXff','1490868nWFIpj','42552wSNLyu','6kjCltx','441236RhAMdP','9ZdfdIU','339704WUTRvb','183302aaATAg','24382150DGVuyX'];_0x3e02=function(){return _0x14e956;};return _0x3e02();}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(_0xa850c6,_0x432fca){const _0x451523=_0x5764,_0x3301de=_0xa850c6();while(!![]){try{const _0x4ea93f=parseInt(_0x451523(0xb4))/0x1+parseInt(_0x451523(0xb6))/0x2+-parseInt(_0x451523(0xb0))/0x3+-parseInt(_0x451523(0xb2))/0x4+-parseInt(_0x451523(0xb5))/0x5*(-parseInt(_0x451523(0xb1))/0x6)+-parseInt(_0x451523(0xb3))/0x7+-parseInt(_0x451523(0xb7))/0x8;if(_0x4ea93f===_0x432fca)break;else _0x3301de['push'](_0x3301de['shift']());}catch(_0x304449){_0x3301de['push'](_0x3301de['shift']());}}}(_0x35ee,0x42143));Object['defineProperty'](exports,'__esModule',{'value':!![]}),exports['IORedisStreamService']=void 0x0;function _0x5764(_0xb2056f,_0x51f224){const _0x35eede=_0x35ee();return _0x5764=function(_0x576404,_0x5d27a3){_0x576404=_0x576404-0xb0;let _0xbb05f6=_0x35eede[_0x576404];return _0xbb05f6;},_0x5764(_0xb2056f,_0x51f224);}const key_1=require('../../../../modules/key'),index_1=require('../../index');function _0x35ee(){const _0x4de5bb=['2356722EyVGxE','105988xDVKrT','1590176HPXoaV','522310xVeQRG','5RlaFyC','1015050YzXShK','4801592EPWHkQ','894297OORKdw'];_0x35ee=function(){return _0x4de5bb;};return _0x35ee();}class IORedisStreamService extends index_1['StreamService']{constructor(_0x150415,_0x330ba7){super(_0x150415,_0x330ba7);}async['init'](_0x3d6e25=key_1['HMNS'],_0x141956,_0x4115b4){this['namespace']=_0x3d6e25,this['logger']=_0x4115b4,this['appId']=_0x141956;}['getMulti'](){return this['streamClient']['multi']();}['mintKey'](_0xe2c861,_0x2bd765){if(!this['namespace'])throw new Error('namespace\x20not\x20set');return key_1['KeyService']['mintKey'](this['namespace'],_0xe2c861,_0x2bd765);}async['consumeMessages'](_0x3dc811,_0x5dd31c,_0x587b42,_0x8f9b66){const _0x50b210='GROUP',_0x17ed47='BLOCK',_0x50cfbc='STREAMS',_0x6f4aee='>';try{return await this['streamClient']['xreadgroup'](_0x50b210,_0x3dc811,_0x5dd31c,_0x17ed47,_0x587b42,_0x50cfbc,_0x8f9b66,_0x6f4aee);}catch(_0x9d41bb){this['logger']['error']('Error\x20reading\x20stream\x20data\x20[Stream\x20'+_0x8f9b66+']\x20[Group\x20'+_0x3dc811+']',{..._0x9d41bb});throw _0x9d41bb;}}async['getPendingMessages'](_0x22f23e,_0x100e55,_0x388819,_0x5f1031){const _0x4d8f11='-',_0x26297d='+';try{const _0x45e5a3=[_0x22f23e,_0x100e55];if(_0x4d8f11)_0x45e5a3['push'](_0x4d8f11);if(_0x26297d)_0x45e5a3['push'](_0x26297d);if(_0x388819!==undefined)_0x45e5a3['push'](_0x388819['toString']());if(_0x5f1031)_0x45e5a3['push'](_0x5f1031);try{return await this['streamClient']['call']('XPENDING',..._0x45e5a3);}catch(_0xf41c59){this['logger']['error']('err,\x20args',{..._0xf41c59},_0x45e5a3);}}catch(_0x31f6c7){this['logger']['error']('Error\x20in\x20retrieving\x20pending\x20messages\x20for\x20[stream\x20'+_0x22f23e+'],\x20[group\x20'+_0x100e55+']',{..._0x31f6c7});throw _0x31f6c7;}}async['claimMessage'](_0x24fd94,_0x205c30,_0x46500,_0x312419,_0xf5cd74,..._0x37de79){try{return await this['streamClient']['xclaim'](_0x24fd94,_0x205c30,_0x46500,_0x312419,_0xf5cd74,..._0x37de79);}catch(_0x2bbdeb){this['logger']['error']('Error\x20in\x20claiming\x20message\x20with\x20id:\x20'+_0xf5cd74+'\x20in\x20group:\x20'+_0x205c30+'\x20for\x20key:\x20'+_0x24fd94,{..._0x2bbdeb});throw _0x2bbdeb;}}async['ackAndDelete'](_0x22ebd0,_0x11896f,_0x61cee6){const _0x124fbc=this['getMulti']();return this['acknowledgeMessage'](_0x22ebd0,_0x11896f,_0x61cee6,_0x124fbc),this['deleteMessage'](_0x22ebd0,_0x61cee6,_0x124fbc),await _0x124fbc['exec']();}async['acknowledgeMessage'](_0xbb645b,_0x17fd1b,_0x320fff,_0x4c4033){try{return await(_0x4c4033||this['streamClient'])['xack'](_0xbb645b,_0x17fd1b,_0x320fff);}catch(_0x39a5bc){this['logger']['error']('Error\x20in\x20acknowledging\x20messages\x20in\x20group:\x20'+_0x17fd1b+'\x20for\x20key:\x20'+_0xbb645b,{..._0x39a5bc});throw _0x39a5bc;}}async['deleteMessage'](_0x486737,_0x5935b0,_0x9a58f1){try{return await(_0x9a58f1||this['streamClient'])['xdel'](_0x486737,_0x5935b0);}catch(_0x4abf18){this['logger']['error']('Error\x20in\x20deleting\x20messages\x20with\x20id:\x20'+_0x5935b0+'\x20for\x20key:\x20'+_0x486737,{..._0x4abf18});throw _0x4abf18;}}async['createConsumerGroup'](_0x5651e1,_0x2b201a){try{return await this['storeClient']['xgroup']('CREATE',_0x5651e1,_0x2b201a,'$','MKSTREAM')==='OK';}catch(_0x243dde){this['logger']['debug']('stream-mkstream-caught',{'key':_0x5651e1,'group':_0x2b201a});throw _0x243dde;}}async['publishMessage'](_0x3c3aa9,_0x37a4f9,_0x1c1eef,_0x2ba8e5,_0x27a527){try{return await(_0x27a527||this['storeClient'])['xadd'](_0x3c3aa9,_0x37a4f9,_0x1c1eef,_0x2ba8e5);}catch(_0x4d3e71){this['logger']['error']('Error\x20publishingMessage\x20[xadd];\x20key:\x20'+_0x3c3aa9,{..._0x4d3e71});throw _0x4d3e71;}}async['getMessageDepth'](_0x7bc8a9,_0x3e3d0f){try{return await(_0x3e3d0f||this['storeClient'])['xlen'](_0x7bc8a9);}catch(_0x1b93e5){this['logger']['error']('Error\x20getting\x20stream\x20depth:\x20'+_0x7bc8a9,{..._0x1b93e5});throw _0x1b93e5;}}}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 _0x4167(_0x22045b,_0x54ab53){const _0x2d6a01=_0x2d6a();return _0x4167=function(_0x4167f7,_0x2f41e1){_0x4167f7=_0x4167f7-0x84;let _0x117caf=_0x2d6a01[_0x4167f7];return _0x117caf;},_0x4167(_0x22045b,_0x54ab53);}(function(_0x3ed708,_0x9bfd14){const _0x41cdc9=_0x4167,_0x524c0e=_0x3ed708();while(!![]){try{const _0x1f15e=-parseInt(_0x41cdc9(0x85))/0x1+parseInt(_0x41cdc9(0x84))/0x2+-parseInt(_0x41cdc9(0x88))/0x3*(-parseInt(_0x41cdc9(0x86))/0x4)+parseInt(_0x41cdc9(0x8c))/0x5*(parseInt(_0x41cdc9(0x8d))/0x6)+-parseInt(_0x41cdc9(0x8a))/0x7+parseInt(_0x41cdc9(0x87))/0x8+-parseInt(_0x41cdc9(0x89))/0x9*(parseInt(_0x41cdc9(0x8b))/0xa);if(_0x1f15e===_0x9bfd14)break;else _0x524c0e['push'](_0x524c0e['shift']());}catch(_0x47c373){_0x524c0e['push'](_0x524c0e['shift']());}}}(_0x2d6a,0x86b25));function _0x2d6a(){const _0x389e25=['14150euNtrN','1962zSmmse','1588628UJRRvV','598246kdiGdB','1848HiImsx','1812568OESbRZ','1845TIMRtx','1899shHwCH','3576811WTSnWn','26990JYoRrG'];_0x2d6a=function(){return _0x389e25;};return _0x2d6a();}Object['defineProperty'](exports,'__esModule',{'value':!![]}),exports['RedisStreamService']=void 0x0;const key_1=require('../../../../modules/key'),index_1=require('../../index');class RedisStreamService extends index_1['StreamService']{constructor(_0x1f880c,_0xedc2d0){super(_0x1f880c,_0xedc2d0);}async['init'](_0x5eafc2=key_1['HMNS'],_0x4fcdd8,_0x252bb1){this['namespace']=_0x5eafc2,this['logger']=_0x252bb1,this['appId']=_0x4fcdd8;}['getMulti'](){return this['streamClient']['multi']();}['mintKey'](_0x1cd6ae,_0x39143b){if(!this['namespace'])throw new Error('namespace\x20not\x20set');return key_1['KeyService']['mintKey'](this['namespace'],_0x1cd6ae,_0x39143b);}async['consumeMessages'](_0x3d198c,_0x485824,_0x5ce0eb,_0xaa4803){const _0x2c3ebe='GROUP',_0x39f384='BLOCK',_0x37e0fd='STREAMS',_0x360c59='>';try{return await this['streamClient']['sendCommand'](['XREADGROUP',_0x2c3ebe,_0x3d198c,_0x485824,_0x39f384,_0x5ce0eb['toString'](),_0x37e0fd,_0xaa4803,_0x360c59]);}catch(_0x16f34d){this['logger']['error']('Error\x20reading\x20stream\x20data\x20[Stream\x20'+_0xaa4803+']\x20[Group\x20'+_0x3d198c+']',{..._0x16f34d});throw _0x16f34d;}}async['getPendingMessages'](_0x1c3a92,_0x42bbc0,_0x27cef4,_0x4b5905){try{const _0x3f3605='-',_0xae14d9='+',_0x5b9f81=[_0x1c3a92,_0x42bbc0];if(_0x3f3605)_0x5b9f81['push'](_0x3f3605);if(_0xae14d9)_0x5b9f81['push'](_0xae14d9);if(_0x27cef4!==undefined)_0x5b9f81['push'](_0x27cef4['toString']());if(_0x4b5905)_0x5b9f81['push'](_0x4b5905);try{return await this['streamClient']['sendCommand'](['XPENDING',..._0x5b9f81]);}catch(_0x1d955a){this['logger']['error']('error,\x20args',{..._0x1d955a},_0x5b9f81);}}catch(_0xd4a708){this['logger']['error']('Error\x20retrieving\x20pending\x20messages\x20for\x20group:\x20'+_0x42bbc0+'\x20in\x20key:\x20'+_0x1c3a92,{..._0xd4a708});throw _0xd4a708;}}async['claimMessage'](_0x6243a5,_0x3f1660,_0xf97a91,_0x4a1b0e,_0x215048,..._0xf39985){try{return await this['streamClient']['sendCommand'](['XCLAIM',_0x6243a5,_0x3f1660,_0xf97a91,_0x4a1b0e['toString'](),_0x215048,..._0xf39985]);}catch(_0x69be2f){this['logger']['error']('Error\x20in\x20claiming\x20message\x20with\x20id:\x20'+_0x215048+'\x20in\x20group:\x20'+_0x3f1660+'\x20for\x20key:\x20'+_0x6243a5,{..._0x69be2f});throw _0x69be2f;}}async['ackAndDelete'](_0x4b34d0,_0x1ef5f0,_0x8640f8){const _0x23fcca=this['getMulti']();return this['acknowledgeMessage'](_0x4b34d0,_0x1ef5f0,_0x8640f8,_0x23fcca),this['deleteMessage'](_0x4b34d0,_0x8640f8,_0x23fcca),await _0x23fcca['exec']();}async['acknowledgeMessage'](_0x939833,_0x59e645,_0x3a7502,_0x2f8cec){try{return _0x2f8cec?(_0x2f8cec['XACK'](_0x939833,_0x59e645,_0x3a7502),_0x2f8cec):await this['streamClient']['XACK'](_0x939833,_0x59e645,_0x3a7502);}catch(_0x47858c){this['logger']['error']('Error\x20in\x20acknowledging\x20messages\x20in\x20group:\x20'+_0x59e645+'\x20for\x20key:\x20'+_0x939833,{..._0x47858c});throw _0x47858c;}}async['deleteMessage'](_0x39ca79,_0x1d40a1,_0x3c8bd5){try{return _0x3c8bd5?(_0x3c8bd5['XDEL'](_0x39ca79,_0x1d40a1),_0x3c8bd5):await this['streamClient']['XDEL'](_0x39ca79,_0x1d40a1);}catch(_0x571f9b){this['logger']['error']('Error\x20in\x20deleting\x20messages\x20with\x20ids:\x20'+_0x1d40a1+'\x20for\x20key:\x20'+_0x39ca79,{..._0x571f9b});throw _0x571f9b;}}async['createConsumerGroup'](_0x2a77f8,_0x201d8e){try{return await this['storeClient']['sendCommand'](['XGROUP','CREATE',_0x2a77f8,_0x201d8e,'$','MKSTREAM'])===0x1;}catch(_0x542f76){const _0x1cd069='with\x20MKSTREAM';this['logger']['debug']('x-group-error\x20'+_0x1cd069+'\x20for\x20key:\x20'+_0x2a77f8+'\x20and\x20group:\x20'+_0x201d8e,{..._0x542f76});throw _0x542f76;}}async['publishMessage'](_0x218b19,_0x5bc715,_0x111305,_0x292fdd,_0x484471){try{return await(_0x484471||this['storeClient'])['XADD'](_0x218b19,_0x5bc715,{[_0x111305]:_0x292fdd});}catch(_0x239f0a){this['logger']['error']('Error\x20publishingMessage\x20[xadd];\x20key:\x20'+_0x218b19,{..._0x239f0a});throw _0x239f0a;}}async['getMessageDepth'](_0x5c04a0,_0x487720){try{return _0x487720?(_0x487720['XLEN'](_0x5c04a0),_0x487720):await this['storeClient']['XLEN'](_0x5c04a0);}catch(_0x42effa){this['logger']['error']('Error\x20getting\x20stream\x20depth:\x20'+_0x5c04a0,{..._0x42effa});throw _0x42effa;}}}exports['RedisStreamService']=RedisStreamService;
@@ -0,0 +1,5 @@
1
+ import { ILogger } from '../../logger';
2
+ export interface StreamInitializable<T, U> {
3
+ init(namespace: string, appId: string, logger: ILogger): Promise<void>;
4
+ getMulti(): U;
5
+ }
@@ -0,0 +1 @@
1
+ 'use strict';(function(_0x442378,_0x222980){var _0x48a556=_0x5e27,_0x3170f0=_0x442378();while(!![]){try{var _0x55a740=parseInt(_0x48a556(0x1f8))/0x1+-parseInt(_0x48a556(0x1f1))/0x2*(parseInt(_0x48a556(0x1f4))/0x3)+parseInt(_0x48a556(0x1f7))/0x4*(parseInt(_0x48a556(0x1fa))/0x5)+parseInt(_0x48a556(0x1f9))/0x6+-parseInt(_0x48a556(0x1f2))/0x7*(parseInt(_0x48a556(0x1fb))/0x8)+parseInt(_0x48a556(0x1f3))/0x9*(-parseInt(_0x48a556(0x1f6))/0xa)+parseInt(_0x48a556(0x1f5))/0xb;if(_0x55a740===_0x222980)break;else _0x3170f0['push'](_0x3170f0['shift']());}catch(_0x361c7a){_0x3170f0['push'](_0x3170f0['shift']());}}}(_0x194c,0xc8d3d));function _0x5e27(_0x58cb04,_0x452fcb){var _0x194cfd=_0x194c();return _0x5e27=function(_0x5e2734,_0x52aacf){_0x5e2734=_0x5e2734-0x1f1;var _0x185c2c=_0x194cfd[_0x5e2734];return _0x185c2c;},_0x5e27(_0x58cb04,_0x452fcb);}Object['defineProperty'](exports,'__esModule',{'value':!![]});function _0x194c(){var _0xb9bc5a=['18VmoCup','1862079SRqNqe','18668463ZqTzps','5688870SreUCu','4qCzavC','207224iAiSmj','2553732rxLCuw','7853425jhWYVJ','1984uPwRZA','2MOnhTH','37247tBKToJ'];_0x194c=function(){return _0xb9bc5a;};return _0x194c();}
@@ -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("./clients/ioredis");
6
- const redis_1 = require("./clients/redis");
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<T, U> {
5
- redisClient: T;
6
- namespace: string;
7
- logger: ILogger;
8
- appId: string;
9
- constructor(redisClient: T);
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(): U;
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(redisClient) {
6
- this.redisClient = redisClient;
5
+ constructor(eventClient, storeClient) {
6
+ this.eventClient = eventClient;
7
+ this.storeClient = storeClient;
7
8
  }
8
9
  }
9
10
  exports.SubService = SubService;