@hotmeshio/hotmesh 0.3.5 → 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.
Files changed (132) hide show
  1. package/build/index.d.ts +6 -4
  2. package/build/index.js +13 -5
  3. package/build/modules/key.js +1 -62
  4. package/build/modules/utils.d.ts +1 -0
  5. package/build/modules/utils.js +1 -242
  6. package/build/package.json +14 -9
  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.d.ts +0 -1
  15. package/build/services/activities/trigger.js +1 -269
  16. package/build/services/activities/worker.js +1 -101
  17. package/build/services/collator/index.js +1 -197
  18. package/build/services/compiler/deployer.d.ts +3 -1
  19. package/build/services/compiler/deployer.js +1 -455
  20. package/build/services/compiler/index.d.ts +3 -1
  21. package/build/services/compiler/index.js +1 -91
  22. package/build/services/compiler/validator.js +1 -122
  23. package/build/services/engine/index.d.ts +5 -2
  24. package/build/services/engine/index.js +1 -583
  25. package/build/services/exporter/index.js +1 -93
  26. package/build/services/mapper/index.js +1 -67
  27. package/build/services/meshdata/index.d.ts +0 -1
  28. package/build/services/meshdata/index.js +16 -24
  29. package/build/services/meshflow/client.js +4 -8
  30. package/build/services/meshflow/exporter.js +1 -186
  31. package/build/services/meshflow/search.d.ts +4 -5
  32. package/build/services/meshflow/search.js +48 -36
  33. package/build/services/meshflow/worker.js +1 -1
  34. package/build/services/meshflow/workflow.d.ts +1 -1
  35. package/build/services/meshflow/workflow.js +5 -30
  36. package/build/services/meshos/index.d.ts +81 -0
  37. package/build/services/meshos/index.js +339 -0
  38. package/build/services/pipe/functions/array.js +1 -74
  39. package/build/services/pipe/functions/bitwise.js +1 -24
  40. package/build/services/pipe/functions/conditional.js +1 -36
  41. package/build/services/pipe/functions/cron.js +1 -32
  42. package/build/services/pipe/functions/date.js +1 -164
  43. package/build/services/pipe/functions/index.js +1 -30
  44. package/build/services/pipe/functions/json.js +1 -12
  45. package/build/services/pipe/functions/logical.js +1 -12
  46. package/build/services/pipe/functions/math.js +1 -182
  47. package/build/services/pipe/functions/number.js +1 -60
  48. package/build/services/pipe/functions/object.js +1 -81
  49. package/build/services/pipe/functions/string.js +1 -69
  50. package/build/services/pipe/functions/symbol.js +1 -33
  51. package/build/services/pipe/functions/unary.js +1 -18
  52. package/build/services/pipe/index.js +1 -221
  53. package/build/services/quorum/index.d.ts +1 -1
  54. package/build/services/quorum/index.js +1 -233
  55. package/build/services/reporter/index.js +1 -331
  56. package/build/services/router/index.js +1 -420
  57. package/build/services/search/factory.d.ts +7 -0
  58. package/build/services/search/factory.js +20 -0
  59. package/build/services/search/index.d.ts +21 -0
  60. package/build/services/search/index.js +10 -0
  61. package/build/services/search/providers/redis/ioredis.d.ts +18 -0
  62. package/build/services/search/providers/redis/ioredis.js +1 -0
  63. package/build/services/search/providers/redis/redis.d.ts +18 -0
  64. package/build/services/search/providers/redis/redis.js +1 -0
  65. package/build/services/serializer/index.js +1 -265
  66. package/build/services/store/factory.d.ts +8 -0
  67. package/build/services/store/factory.js +20 -0
  68. package/build/services/store/index.d.ts +71 -98
  69. package/build/services/store/index.js +2 -941
  70. package/build/services/store/providers/postgres/postgres.d.ts +0 -0
  71. package/build/services/store/providers/postgres/postgres.js +0 -0
  72. package/build/services/store/providers/postgres/types/hash.d.ts +0 -0
  73. package/build/services/store/providers/postgres/types/hash.js +0 -0
  74. package/build/services/store/providers/postgres/types/list.d.ts +0 -0
  75. package/build/services/store/providers/postgres/types/list.js +0 -0
  76. package/build/services/store/providers/postgres/types/string.d.ts +0 -0
  77. package/build/services/store/providers/postgres/types/string.js +0 -0
  78. package/build/services/store/providers/postgres/types/zset.d.ts +0 -0
  79. package/build/services/store/providers/postgres/types/zset.js +0 -0
  80. package/build/services/store/providers/redis/_base.d.ts +98 -0
  81. package/build/services/store/providers/redis/_base.js +1 -0
  82. package/build/services/store/providers/redis/ioredis.d.ts +12 -0
  83. package/build/services/store/providers/redis/ioredis.js +1 -0
  84. package/build/services/store/providers/redis/redis.d.ts +13 -0
  85. package/build/services/store/providers/redis/redis.js +1 -0
  86. package/build/services/store/providers/store-initializable.d.ts +5 -0
  87. package/build/services/store/providers/store-initializable.js +1 -0
  88. package/build/services/stream/factory.d.ts +8 -0
  89. package/build/services/stream/factory.js +20 -0
  90. package/build/services/stream/index.d.ts +13 -14
  91. package/build/services/stream/index.js +3 -2
  92. package/build/services/stream/providers/postgres/_deploy.d.ts +4 -0
  93. package/build/services/stream/providers/postgres/_deploy.js +1 -0
  94. package/build/services/stream/providers/redis/ioredis.d.ts +21 -0
  95. package/build/services/stream/providers/redis/ioredis.js +1 -0
  96. package/build/services/stream/providers/redis/redis.d.ts +21 -0
  97. package/build/services/stream/providers/redis/redis.js +1 -0
  98. package/build/services/stream/providers/stream-initializable.d.ts +5 -0
  99. package/build/services/stream/providers/stream-initializable.js +1 -0
  100. package/build/services/sub/factory.d.ts +7 -0
  101. package/build/services/sub/factory.js +20 -0
  102. package/build/services/sub/index.d.ts +9 -7
  103. package/build/services/sub/index.js +3 -2
  104. package/build/services/sub/{clients → providers/redis}/ioredis.d.ts +7 -10
  105. package/build/services/sub/providers/redis/ioredis.js +1 -0
  106. package/build/services/sub/{clients → providers/redis}/redis.d.ts +7 -10
  107. package/build/services/sub/providers/redis/redis.js +1 -0
  108. package/build/services/task/index.js +1 -171
  109. package/build/services/telemetry/index.js +1 -225
  110. package/build/services/worker/index.d.ts +2 -2
  111. package/build/services/worker/index.js +1 -179
  112. package/build/types/index.d.ts +1 -0
  113. package/build/types/manifest.d.ts +49 -0
  114. package/build/types/manifest.js +2 -0
  115. package/build/types/redis.d.ts +5 -5
  116. package/index.ts +19 -4
  117. package/package.json +14 -9
  118. package/typedoc.json +1 -0
  119. package/types/index.ts +15 -0
  120. package/types/manifest.ts +68 -0
  121. package/types/meshflow.ts +1 -1
  122. package/types/redis.ts +5 -5
  123. package/build/services/store/clients/ioredis.d.ts +0 -30
  124. package/build/services/store/clients/ioredis.js +0 -220
  125. package/build/services/store/clients/redis.d.ts +0 -32
  126. package/build/services/store/clients/redis.js +0 -319
  127. package/build/services/stream/clients/ioredis.d.ts +0 -24
  128. package/build/services/stream/clients/ioredis.js +0 -121
  129. package/build/services/stream/clients/redis.d.ts +0 -24
  130. package/build/services/stream/clients/redis.js +0 -161
  131. package/build/services/sub/clients/ioredis.js +0 -72
  132. package/build/services/sub/clients/redis.js +0 -63
@@ -1,265 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SerializerService = exports.MDATA_SYMBOLS = void 0;
4
- const utils_1 = require("../../modules/utils");
5
- const dateReg = /^"\d{4}-\d{2}-\d{2}(?:T\d{2}:\d{2}:\d{2}(?:\.\d{3})?Z)?"$/;
6
- exports.MDATA_SYMBOLS = {
7
- SLOTS: 26,
8
- ACTIVITY: {
9
- KEYS: ['aid', 'dad', 'as', 'atp', 'stp', 'ac', 'au', 'err', 'l1s', 'l2s'],
10
- },
11
- ACTIVITY_UPDATE: {
12
- KEYS: ['au', 'err', 'l2s'],
13
- },
14
- JOB: {
15
- KEYS: [
16
- 'ngn',
17
- 'tpc',
18
- 'pj',
19
- 'pg',
20
- 'pd',
21
- 'px',
22
- 'pa',
23
- 'key',
24
- 'app',
25
- 'vrs',
26
- 'jid',
27
- 'gid',
28
- 'aid',
29
- 'ts',
30
- 'jc',
31
- 'ju',
32
- 'js',
33
- 'err',
34
- 'trc',
35
- ],
36
- },
37
- JOB_UPDATE: {
38
- KEYS: ['ju', 'err'],
39
- },
40
- };
41
- class SerializerService {
42
- constructor() {
43
- this.resetSymbols({}, {}, {});
44
- }
45
- abbreviate(consumes, symbolNames, fields = []) {
46
- for (const symbolName of symbolNames) {
47
- const symbolSet = this.symKeys.get(symbolName);
48
- const symbolPaths = consumes[symbolName];
49
- for (const symbolPath of symbolPaths) {
50
- const abbreviation = symbolSet.get(symbolPath);
51
- if (abbreviation) {
52
- const dimensionalIndex = this.resolveDimensionalIndex(symbolPath);
53
- fields.push(`${abbreviation}${dimensionalIndex}`);
54
- }
55
- else {
56
- fields.push(symbolPath);
57
- }
58
- }
59
- }
60
- return fields;
61
- }
62
- resolveDimensionalIndex(path) {
63
- if (this.isJobPath(path)) {
64
- return '';
65
- }
66
- else {
67
- const [activityId] = path.split('/');
68
- if (activityId in this.dIds) {
69
- return this.dIds[activityId];
70
- }
71
- else if ('$ADJACENT' in this.dIds) {
72
- return this.dIds['$ADJACENT'];
73
- }
74
- return ',0';
75
- }
76
- }
77
- isJobPath(path) {
78
- return path.startsWith('data/') || path.startsWith('metadata/');
79
- }
80
- resetSymbols(symKeys, symVals, dIds) {
81
- this.symKeys = new Map();
82
- this.symReverseKeys = new Map();
83
- for (const id in symKeys) {
84
- this.symKeys.set(id, new Map(Object.entries(symKeys[id])));
85
- }
86
- this.symValMaps = new Map(Object.entries(symVals));
87
- this.symValReverseMaps = this.getReverseValueMap(this.symValMaps);
88
- this.dIds = dIds;
89
- }
90
- getReverseKeyMap(keyMap, id) {
91
- let map = this.symReverseKeys.get(id);
92
- if (!map) {
93
- map = new Map();
94
- for (const [key, val] of keyMap.entries()) {
95
- map.set(val, key);
96
- }
97
- this.symReverseKeys.set(id, map);
98
- }
99
- return map;
100
- }
101
- getReverseValueMap(valueMap) {
102
- const map = new Map();
103
- for (const [key, val] of valueMap.entries()) {
104
- map.set(val, key);
105
- }
106
- return map;
107
- }
108
- static filterSymVals(startIndex, maxIndex, existingSymbolValues, proposedValues) {
109
- const newSymbolValues = {};
110
- const currentSymbolValues = { ...existingSymbolValues };
111
- const currentValuesSet = new Set(Object.values(currentSymbolValues));
112
- for (const value of proposedValues) {
113
- if (!currentValuesSet.has(value)) {
114
- if (startIndex > maxIndex) {
115
- return newSymbolValues;
116
- }
117
- const symbol = (0, utils_1.getSymVal)(startIndex);
118
- startIndex++;
119
- newSymbolValues[symbol] = value;
120
- currentValuesSet.add(value);
121
- }
122
- }
123
- return newSymbolValues;
124
- }
125
- compress(document, ids) {
126
- if (this.symKeys.size === 0) {
127
- return document;
128
- }
129
- const source = { ...document };
130
- const result = {};
131
- const compressWithMap = (abbreviationMap, id) => {
132
- for (const key in source) {
133
- if (key.startsWith(`${id}/`) ||
134
- id.startsWith('$') &&
135
- ['data', 'metadata'].includes(key.split('/')[0])) {
136
- const dimensionalIndex = this.resolveDimensionalIndex(key);
137
- const shortKey = abbreviationMap.get(key) || key;
138
- const shortDimensionalKey = `${shortKey}${dimensionalIndex}`;
139
- result[shortDimensionalKey] = source[key];
140
- }
141
- else if (!(key in result) && this.isLiteralKeyType(key)) {
142
- result[key] = source[key];
143
- }
144
- }
145
- };
146
- for (const id of ids) {
147
- const abbreviationMap = this.symKeys.get(id);
148
- if (abbreviationMap) {
149
- compressWithMap(abbreviationMap, id);
150
- }
151
- }
152
- return result;
153
- }
154
- isLiteralKeyType(key) {
155
- return key.startsWith('-') || key.startsWith('_');
156
- }
157
- decompress(document, ids) {
158
- if (this.symKeys.size === 0) {
159
- return document;
160
- }
161
- const result = { ...document };
162
- const inflateWithMap = (abbreviationMap, id) => {
163
- const reversedAbbreviationMap = this.getReverseKeyMap(abbreviationMap, id);
164
- for (const key in result) {
165
- const shortKey = key.split(',')[0];
166
- const longKey = reversedAbbreviationMap.get(shortKey);
167
- if (longKey) {
168
- result[longKey] = result[key];
169
- delete result[key];
170
- }
171
- }
172
- };
173
- for (const id of ids) {
174
- const abbreviationMap = this.symKeys.get(id);
175
- if (abbreviationMap) {
176
- inflateWithMap(abbreviationMap, id);
177
- }
178
- }
179
- return result;
180
- }
181
- stringify(document) {
182
- const result = {};
183
- for (const key in document) {
184
- const value = SerializerService.toString(document[key]);
185
- if (value) {
186
- result[key] = value;
187
- }
188
- }
189
- return result;
190
- }
191
- parse(document) {
192
- const result = {};
193
- for (const [key, value] of Object.entries(document)) {
194
- if (value === undefined || value === null)
195
- continue;
196
- result[key] = SerializerService.fromString(value);
197
- }
198
- return result;
199
- }
200
- static toString(value) {
201
- switch (typeof value) {
202
- case 'string':
203
- break;
204
- case 'boolean':
205
- value = value ? '/t' : '/f';
206
- break;
207
- case 'number':
208
- value = '/d' + value.toString();
209
- break;
210
- case 'undefined':
211
- return undefined;
212
- case 'object':
213
- if (value === null) {
214
- value = '/n';
215
- }
216
- else {
217
- value = '/s' + JSON.stringify(value);
218
- }
219
- break;
220
- }
221
- return value;
222
- }
223
- static fromString(value) {
224
- if (typeof value !== 'string')
225
- return undefined;
226
- const prefix = value.slice(0, 2);
227
- const rest = value.slice(2);
228
- switch (prefix) {
229
- case '/t':
230
- return true;
231
- case '/f':
232
- return false;
233
- case '/d':
234
- return Number(rest);
235
- case '/n':
236
- return null;
237
- case '/s':
238
- if (dateReg.exec(rest)) {
239
- return new Date(JSON.parse(rest));
240
- }
241
- return JSON.parse(rest);
242
- default:
243
- return value;
244
- }
245
- }
246
- package(multiDimensionalDocument, ids) {
247
- const flatDocument = this.stringify(multiDimensionalDocument);
248
- return this.compress(flatDocument, ids);
249
- }
250
- unpackage(document, ids) {
251
- const multiDimensionalDocument = this.decompress(document, ids);
252
- return this.parse(multiDimensionalDocument);
253
- }
254
- export() {
255
- const obj = {};
256
- for (const [id, map] of this.symKeys.entries()) {
257
- obj[id] = {};
258
- for (const [key, value] of map.entries()) {
259
- obj[id][key] = value;
260
- }
261
- }
262
- return obj;
263
- }
264
- }
265
- exports.SerializerService = SerializerService;
1
+ 'use strict';function _0x4b36(){const _0x46c6ec=['46596nSSjnp','986390zNFuZR','5358918FBaQYv','4230YFpWnB','7MOdHyz','40ZtoDaH','5137bvKPcZ','4862168kQzqmW','110985HQeHNV','13149OuIVpH','626uRVMTW','668TCnZza'];_0x4b36=function(){return _0x46c6ec;};return _0x4b36();}(function(_0x467f9e,_0x160d7c){const _0x191084=_0x3bf0,_0x3d12ee=_0x467f9e();while(!![]){try{const _0x8fc761=parseInt(_0x191084(0x1e7))/0x1*(parseInt(_0x191084(0x1e6))/0x2)+parseInt(_0x191084(0x1f0))/0x3*(-parseInt(_0x191084(0x1ed))/0x4)+-parseInt(_0x191084(0x1e9))/0x5+-parseInt(_0x191084(0x1ea))/0x6*(parseInt(_0x191084(0x1ec))/0x7)+parseInt(_0x191084(0x1ef))/0x8+parseInt(_0x191084(0x1e5))/0x9*(-parseInt(_0x191084(0x1eb))/0xa)+parseInt(_0x191084(0x1ee))/0xb*(parseInt(_0x191084(0x1e8))/0xc);if(_0x8fc761===_0x160d7c)break;else _0x3d12ee['push'](_0x3d12ee['shift']());}catch(_0x457334){_0x3d12ee['push'](_0x3d12ee['shift']());}}}(_0x4b36,0x86b98));function _0x3bf0(_0x4f0c08,_0x30955f){const _0x4b369f=_0x4b36();return _0x3bf0=function(_0x3bf070,_0x1982b9){_0x3bf070=_0x3bf070-0x1e5;let _0x5aba41=_0x4b369f[_0x3bf070];return _0x5aba41;},_0x3bf0(_0x4f0c08,_0x30955f);}Object['defineProperty'](exports,'__esModule',{'value':!![]}),exports['SerializerService']=exports['MDATA_SYMBOLS']=void 0x0;const utils_1=require('../../modules/utils'),dateReg=/^"\d{4}-\d{2}-\d{2}(?:T\d{2}:\d{2}:\d{2}(?:\.\d{3})?Z)?"$/;exports['MDATA_SYMBOLS']={'SLOTS':0x1a,'ACTIVITY':{'KEYS':['aid','dad','as','atp','stp','ac','au','err','l1s','l2s']},'ACTIVITY_UPDATE':{'KEYS':['au','err','l2s']},'JOB':{'KEYS':['ngn','tpc','pj','pg','pd','px','pa','key','app','vrs','jid','gid','aid','ts','jc','ju','js','err','trc']},'JOB_UPDATE':{'KEYS':['ju','err']}};class SerializerService{constructor(){this['resetSymbols']({},{},{});}['abbreviate'](_0x3ded95,_0x254f7f,_0xdc0a38=[]){for(const _0x34e87d of _0x254f7f){const _0x322d36=this['symKeys']['get'](_0x34e87d),_0x39d682=_0x3ded95[_0x34e87d];for(const _0x11af21 of _0x39d682){const _0x49e5c0=_0x322d36['get'](_0x11af21);if(_0x49e5c0){const _0x8b2f61=this['resolveDimensionalIndex'](_0x11af21);_0xdc0a38['push'](''+_0x49e5c0+_0x8b2f61);}else _0xdc0a38['push'](_0x11af21);}}return _0xdc0a38;}['resolveDimensionalIndex'](_0x3d476a){if(this['isJobPath'](_0x3d476a))return'';else{const [_0x32caa9]=_0x3d476a['split']('/');if(_0x32caa9 in this['dIds'])return this['dIds'][_0x32caa9];else{if('$ADJACENT'in this['dIds'])return this['dIds']['$ADJACENT'];}return',0';}}['isJobPath'](_0x53eb67){return _0x53eb67['startsWith']('data/')||_0x53eb67['startsWith']('metadata/');}['resetSymbols'](_0x21f71b,_0x288a97,_0x234856){this['symKeys']=new Map(),this['symReverseKeys']=new Map();for(const _0x40de7d in _0x21f71b){this['symKeys']['set'](_0x40de7d,new Map(Object['entries'](_0x21f71b[_0x40de7d])));}this['symValMaps']=new Map(Object['entries'](_0x288a97)),this['symValReverseMaps']=this['getReverseValueMap'](this['symValMaps']),this['dIds']=_0x234856;}['getReverseKeyMap'](_0x33a90f,_0x3fca45){let _0x2f9e2b=this['symReverseKeys']['get'](_0x3fca45);if(!_0x2f9e2b){_0x2f9e2b=new Map();for(const [_0x804cff,_0x45ceb6]of _0x33a90f['entries']()){_0x2f9e2b['set'](_0x45ceb6,_0x804cff);}this['symReverseKeys']['set'](_0x3fca45,_0x2f9e2b);}return _0x2f9e2b;}['getReverseValueMap'](_0x1a3e87){const _0x2158fa=new Map();for(const [_0x55cb02,_0x1baee4]of _0x1a3e87['entries']()){_0x2158fa['set'](_0x1baee4,_0x55cb02);}return _0x2158fa;}static['filterSymVals'](_0x86fb03,_0x29f5f9,_0x65be87,_0x1168b9){const _0x30c392={},_0x308ad8={..._0x65be87},_0x3ae82f=new Set(Object['values'](_0x308ad8));for(const _0x6b0c21 of _0x1168b9){if(!_0x3ae82f['has'](_0x6b0c21)){if(_0x86fb03>_0x29f5f9)return _0x30c392;const _0x420c66=(0x0,utils_1['getSymVal'])(_0x86fb03);_0x86fb03++,_0x30c392[_0x420c66]=_0x6b0c21,_0x3ae82f['add'](_0x6b0c21);}}return _0x30c392;}['compress'](_0x34c967,_0xa701c5){if(this['symKeys']['size']===0x0)return _0x34c967;const _0x1b4c84={..._0x34c967},_0x3d1319={},_0x22e1df=(_0xca1409,_0x566c3e)=>{for(const _0x466ec3 in _0x1b4c84){if(_0x466ec3['startsWith'](_0x566c3e+'/')||_0x566c3e['startsWith']('$')&&['data','metadata']['includes'](_0x466ec3['split']('/')[0x0])){const _0x1c2f57=this['resolveDimensionalIndex'](_0x466ec3),_0x1382ee=_0xca1409['get'](_0x466ec3)||_0x466ec3,_0x202d47=''+_0x1382ee+_0x1c2f57;_0x3d1319[_0x202d47]=_0x1b4c84[_0x466ec3];}else!(_0x466ec3 in _0x3d1319)&&this['isLiteralKeyType'](_0x466ec3)&&(_0x3d1319[_0x466ec3]=_0x1b4c84[_0x466ec3]);}};for(const _0x5713bb of _0xa701c5){const _0xc42cee=this['symKeys']['get'](_0x5713bb);_0xc42cee&&_0x22e1df(_0xc42cee,_0x5713bb);}return _0x3d1319;}['isLiteralKeyType'](_0x1258d5){return _0x1258d5['startsWith']('-')||_0x1258d5['startsWith']('_');}['decompress'](_0x39398d,_0x2237f4){if(this['symKeys']['size']===0x0)return _0x39398d;const _0x4d5c2e={..._0x39398d},_0x442244=(_0xc12885,_0x2c9069)=>{const _0x59b792=this['getReverseKeyMap'](_0xc12885,_0x2c9069);for(const _0x4653ad in _0x4d5c2e){const _0x4e32a2=_0x4653ad['split'](',')[0x0],_0xe3ebc4=_0x59b792['get'](_0x4e32a2);_0xe3ebc4&&(_0x4d5c2e[_0xe3ebc4]=_0x4d5c2e[_0x4653ad],delete _0x4d5c2e[_0x4653ad]);}};for(const _0x4afa65 of _0x2237f4){const _0x2e6e27=this['symKeys']['get'](_0x4afa65);_0x2e6e27&&_0x442244(_0x2e6e27,_0x4afa65);}return _0x4d5c2e;}['stringify'](_0x44feac){const _0x1f1edd={};for(const _0xd57ad6 in _0x44feac){const _0x34de43=SerializerService['toString'](_0x44feac[_0xd57ad6]);_0x34de43&&(_0x1f1edd[_0xd57ad6]=_0x34de43);}return _0x1f1edd;}['parse'](_0x2daf4b){const _0x105690={};for(const [_0x2e7555,_0x3bb4c8]of Object['entries'](_0x2daf4b)){if(_0x3bb4c8===undefined||_0x3bb4c8===null)continue;_0x105690[_0x2e7555]=SerializerService['fromString'](_0x3bb4c8);}return _0x105690;}static['toString'](_0x260049){switch(typeof _0x260049){case'string':break;case'boolean':_0x260049=_0x260049?'/t':'/f';break;case'number':_0x260049='/d'+_0x260049['toString']();break;case'undefined':return undefined;case'object':_0x260049===null?_0x260049='/n':_0x260049='/s'+JSON['stringify'](_0x260049);break;}return _0x260049;}static['fromString'](_0x5b5f70){if(typeof _0x5b5f70!=='string')return undefined;const _0x552a64=_0x5b5f70['slice'](0x0,0x2),_0x1593e2=_0x5b5f70['slice'](0x2);switch(_0x552a64){case'/t':return!![];case'/f':return![];case'/d':return Number(_0x1593e2);case'/n':return null;case'/s':if(dateReg['exec'](_0x1593e2))return new Date(JSON['parse'](_0x1593e2));return JSON['parse'](_0x1593e2);default:return _0x5b5f70;}}['package'](_0x4254ee,_0x41b3b1){const _0x233c7a=this['stringify'](_0x4254ee);return this['compress'](_0x233c7a,_0x41b3b1);}['unpackage'](_0x5f4081,_0x10e98a){const _0x215159=this['decompress'](_0x5f4081,_0x10e98a);return this['parse'](_0x215159);}['export'](){const _0x8eb512={};for(const [_0x30a4f6,_0x1bfc37]of this['symKeys']['entries']()){_0x8eb512[_0x30a4f6]={};for(const [_0x294a12,_0x1041d7]of _0x1bfc37['entries']()){_0x8eb512[_0x30a4f6][_0x294a12]=_0x1041d7;}}return _0x8eb512;}}exports['SerializerService']=SerializerService;
@@ -0,0 +1,8 @@
1
+ import { RedisClient } from '../../types/redis';
2
+ import { ILogger } from '../logger';
3
+ import { StoreService } from './index';
4
+ import { StoreInitializable } from './providers/store-initializable';
5
+ declare class StoreServiceFactory {
6
+ static init(redisClient: RedisClient, namespace: string, appId: string, logger: ILogger): Promise<StoreService<any, any> & StoreInitializable>;
7
+ }
8
+ export { StoreServiceFactory };
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StoreServiceFactory = void 0;
4
+ const utils_1 = require("../../modules/utils");
5
+ const ioredis_1 = require("./providers/redis/ioredis");
6
+ const redis_1 = require("./providers/redis/redis");
7
+ class StoreServiceFactory {
8
+ static async init(redisClient, namespace, appId, logger) {
9
+ let service;
10
+ if ((0, utils_1.identifyRedisType)(redisClient) === 'redis') {
11
+ service = new redis_1.RedisStoreService(redisClient);
12
+ }
13
+ else {
14
+ service = new ioredis_1.IORedisStoreService(redisClient);
15
+ }
16
+ await service.init(namespace, appId, logger);
17
+ return service;
18
+ }
19
+ }
20
+ exports.StoreServiceFactory = StoreServiceFactory;
@@ -1,114 +1,87 @@
1
- import { KeyStoreParams, KeyType } from '../../modules/key';
2
1
  import { ILogger } from '../logger';
3
2
  import { SerializerService as Serializer } from '../serializer';
4
- import { ActivityType, Consumes } from '../../types/activity';
3
+ import { HotMeshSettings } from '../../types/hotmesh';
4
+ import { Cache } from './cache';
5
+ import { KeyStoreParams, KeyType } from '../../modules/key';
6
+ import { Consumes } from '../../types/activity';
7
+ import { StringAnyType, Symbols, StringStringType, SymbolSets } from '../../types/serializer';
8
+ import { IdsData, JobStatsRange, StatsType } from '../../types/stats';
5
9
  import { AppVID } from '../../types/app';
6
10
  import { HookRule, HookSignal } from '../../types/hook';
7
- import { HotMeshApp, HotMeshApps, HotMeshSettings } from '../../types/hotmesh';
8
- import { SymbolSets, StringStringType, StringAnyType, Symbols } from '../../types/serializer';
9
- import { IdsData, JobStatsRange, StatsType } from '../../types/stats';
10
- import { Transitions } from '../../types/transition';
11
- import { ReclaimedMessageType } from '../../types/stream';
12
- import { JobInterruptOptions } from '../../types/job';
13
- import { WorkListTaskType } from '../../types/task';
14
11
  import { ThrottleOptions } from '../../types/quorum';
15
- import { Cache } from './cache';
16
- interface AbstractRedisClient {
17
- exec(): any;
18
- }
19
- declare abstract class StoreService<T, U extends AbstractRedisClient> {
20
- redisClient: T;
21
- cache: Cache;
22
- serializer: Serializer;
12
+ import { WorkListTaskType } from '../../types/task';
13
+ declare abstract class StoreService<Client, MultiClient> {
14
+ storeClient: Client;
23
15
  namespace: string;
24
16
  appId: string;
25
17
  logger: ILogger;
26
- commands: Record<string, string>;
27
- abstract getMulti(): U;
28
- abstract exec(...args: any[]): Promise<string | string[] | string[][]>;
29
- abstract setnxex(key: string, value: string, expireSeconds: number): Promise<boolean>;
30
- abstract publish(keyType: KeyType.QUORUM, message: Record<string, any>, appId: string, engineId?: string): Promise<boolean>;
31
- abstract xgroup(command: 'CREATE', key: string, groupName: string, id: string, mkStream?: 'MKSTREAM'): Promise<boolean>;
32
- abstract xadd(key: string, id: string, messageId: string, messageValue: string, multi?: U): Promise<string | U>;
33
- 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[]>;
34
- abstract xclaim(key: string, group: string, consumer: string, minIdleTime: number, id: string, ...args: string[]): Promise<ReclaimedMessageType>;
35
- abstract xack(key: string, group: string, id: string, multi?: U): Promise<number | U>;
36
- abstract xdel(key: string, id: string, multi?: U): Promise<number | U>;
37
- abstract xlen(key: string, multi?: U): Promise<number | U>;
38
- constructor(redisClient: T);
39
- init(namespace: string, appId: string, logger: ILogger): Promise<HotMeshApps>;
40
- isSuccessful(result: any): boolean;
41
- zAdd(key: string, score: number | string, value: string | number, redisMulti?: U): Promise<any>;
42
- zRangeByScoreWithScores(key: string, score: number | string, value: string | number): Promise<string | null>;
43
- zRangeByScore(key: string, score: number | string, value: string | number): Promise<string | null>;
44
- mintKey(type: KeyType, params: KeyStoreParams): string;
45
- invalidateCache(): void;
46
- reserveScoutRole(scoutType: 'time' | 'signal' | 'activate', delay?: number): Promise<boolean>;
47
- releaseScoutRole(scoutType: 'time' | 'signal' | 'activate'): Promise<boolean>;
48
- getSettings(bCreate?: boolean): Promise<HotMeshSettings>;
49
- setSettings(manifest: HotMeshSettings): Promise<any>;
50
- reserveSymbolRange(target: string, size: number, type: 'JOB' | 'ACTIVITY', tryCount?: number): Promise<[number, number, Symbols]>;
51
- getAllSymbols(): Promise<Symbols>;
52
- getSymbols(activityId: string): Promise<Symbols>;
53
- addSymbols(activityId: string, symbols: Symbols): Promise<boolean>;
54
- seedSymbols(target: string, type: 'JOB' | 'ACTIVITY', startIndex: number): StringStringType;
55
- seedJobSymbols(startIndex: number): StringStringType;
56
- seedActivitySymbols(startIndex: number, activityId: string): StringStringType;
57
- getSymbolValues(): Promise<Symbols>;
58
- addSymbolValues(symvals: Symbols): Promise<boolean>;
59
- getSymbolKeys(symbolNames: string[]): Promise<SymbolSets>;
60
- getApp(id: string, refresh?: boolean): Promise<HotMeshApp>;
61
- setApp(id: string, version: string): Promise<HotMeshApp>;
62
- activateAppVersion(id: string, version: string): Promise<boolean>;
63
- registerAppVersion(appId: string, version: string): Promise<any>;
64
- registerJobDependency(depType: WorkListTaskType, originJobId: string, topic: string, jobId: string, gId: string, pd?: string, multi?: U): Promise<any>;
65
- setStats(jobKey: string, jobId: string, dateTime: string, stats: StatsType, appVersion: AppVID, multi?: U): Promise<any>;
66
- hGetAllResult(result: any): any;
67
- getJobStats(jobKeys: string[]): Promise<JobStatsRange>;
68
- getJobIds(indexKeys: string[], idRange: [number, number]): Promise<IdsData>;
69
- setStatus(collationKeyStatus: number, jobId: string, appId: string, multi?: U): Promise<any>;
70
- getStatus(jobId: string, appId: string): Promise<number>;
71
- setState({ ...state }: StringAnyType, status: number | null, jobId: string, symbolNames: string[], dIds: StringStringType, multi?: U): Promise<string>;
72
- getQueryState(jobId: string, fields: string[]): Promise<StringAnyType>;
73
- getState(jobId: string, consumes: Consumes, dIds: StringStringType): Promise<[StringAnyType, number] | undefined>;
74
- getRaw(jobId: string): Promise<StringStringType>;
75
- collate(jobId: string, activityId: string, amount: number, dIds: StringStringType, multi?: U): Promise<number>;
76
- collateSynthetic(jobId: string, guid: string, amount: number, multi?: U): Promise<number>;
77
- setStateNX(jobId: string, appId: string, status?: number): Promise<boolean>;
78
- getSchema(activityId: string, appVersion: AppVID): Promise<ActivityType>;
79
- getSchemas(appVersion: AppVID): Promise<Record<string, ActivityType>>;
80
- setSchemas(schemas: Record<string, ActivityType>, appVersion: AppVID): Promise<any>;
81
- setSubscriptions(subscriptions: Record<string, any>, appVersion: AppVID): Promise<boolean>;
82
- getSubscriptions(appVersion: AppVID): Promise<Record<string, string>>;
83
- getSubscription(topic: string, appVersion: AppVID): Promise<string | undefined>;
84
- setTransitions(transitions: Record<string, any>, appVersion: AppVID): Promise<any>;
85
- getTransitions(appVersion: AppVID): Promise<Transitions>;
86
- setHookRules(hookRules: Record<string, HookRule[]>): Promise<any>;
87
- getHookRules(): Promise<Record<string, HookRule[]>>;
88
- setHookSignal(hook: HookSignal, multi?: U): Promise<any>;
89
- getHookSignal(topic: string, resolved: string): Promise<string | undefined>;
90
- deleteHookSignal(topic: string, resolved: string): Promise<number | undefined>;
91
- addTaskQueues(keys: string[]): Promise<void>;
92
- getActiveTaskQueue(): Promise<string | null>;
93
- deleteProcessedTaskQueue(workItemKey: string, key: string, processedKey: string, scrub?: boolean): Promise<void>;
94
- processTaskQueue(sourceKey: string, destinationKey: string): Promise<any>;
95
- expireJob(jobId: string, inSeconds: number, redisMulti?: U): Promise<void>;
96
- getDependencies(jobId: string): Promise<string[]>;
97
- registerTimeHook(jobId: string, gId: string, activityId: string, type: WorkListTaskType, deletionTime: number, dad: string, multi?: U): Promise<void>;
98
- getNextTask(listKey?: string): Promise<[
18
+ cache: Cache;
19
+ serializer: Serializer;
20
+ constructor(client: Client);
21
+ abstract getMulti(): MultiClient;
22
+ abstract mintKey(type: KeyType, params: KeyStoreParams): string;
23
+ abstract getSettings(bCreate?: boolean): Promise<HotMeshSettings>;
24
+ abstract setSettings(manifest: HotMeshSettings): Promise<any>;
25
+ abstract getApp(id: string, refresh?: boolean): Promise<any>;
26
+ abstract setApp(id: string, version: string): Promise<any>;
27
+ abstract activateAppVersion(id: string, version: string): Promise<boolean>;
28
+ abstract reserveScoutRole(scoutType: 'time' | 'signal' | 'activate', delay?: number): Promise<boolean>;
29
+ abstract releaseScoutRole(scoutType: 'time' | 'signal' | 'activate'): Promise<boolean>;
30
+ abstract reserveSymbolRange(target: string, size: number, type: 'JOB' | 'ACTIVITY', tryCount?: number): Promise<[number, number, Symbols]>;
31
+ abstract getSymbols(activityId: string): Promise<Symbols>;
32
+ abstract addSymbols(activityId: string, symbols: Symbols): Promise<boolean>;
33
+ abstract getSymbolValues(): Promise<Symbols>;
34
+ abstract addSymbolValues(symvals: Symbols): Promise<boolean>;
35
+ abstract getSymbolKeys(symbolNames: string[]): Promise<SymbolSets>;
36
+ abstract setStats(jobKey: string, jobId: string, dateTime: string, stats: StatsType, appVersion: AppVID, multi?: MultiClient): Promise<any>;
37
+ abstract getJobStats(jobKeys: string[]): Promise<JobStatsRange>;
38
+ abstract getJobIds(indexKeys: string[], idRange: [number, number]): Promise<IdsData>;
39
+ abstract setStatus(collationKeyStatus: number, jobId: string, appId: string, multi?: MultiClient): Promise<any>;
40
+ abstract getStatus(jobId: string, appId: string): Promise<number>;
41
+ abstract setStateNX(jobId: string, appId: string, status?: number): Promise<boolean>;
42
+ abstract setState(state: StringAnyType, status: number | null, jobId: string, symbolNames: string[], dIds: StringStringType, multi?: MultiClient): Promise<string>;
43
+ abstract getQueryState(jobId: string, fields: string[]): Promise<StringAnyType>;
44
+ abstract getState(jobId: string, consumes: Consumes, dIds: StringStringType): Promise<[StringAnyType, number] | undefined>;
45
+ abstract getRaw(jobId: string): Promise<StringStringType>;
46
+ abstract collate(jobId: string, activityId: string, amount: number, dIds: StringStringType, multi?: MultiClient): Promise<number>;
47
+ abstract collateSynthetic(jobId: string, guid: string, amount: number, multi?: MultiClient): Promise<number>;
48
+ abstract getSchema(activityId: string, appVersion: AppVID): Promise<any>;
49
+ abstract getSchemas(appVersion: AppVID): Promise<Record<string, any>>;
50
+ abstract setSchemas(schemas: Record<string, any>, appVersion: AppVID): Promise<any>;
51
+ abstract setSubscriptions(subscriptions: Record<string, any>, appVersion: AppVID): Promise<boolean>;
52
+ abstract getSubscriptions(appVersion: AppVID): Promise<Record<string, any>>;
53
+ abstract getSubscription(topic: string, appVersion: AppVID): Promise<string | undefined>;
54
+ abstract setTransitions(transitions: Record<string, any>, appVersion: AppVID): Promise<any>;
55
+ abstract getTransitions(appVersion: AppVID): Promise<any>;
56
+ abstract setHookRules(hookRules: Record<string, HookRule[]>): Promise<any>;
57
+ abstract getHookRules(): Promise<Record<string, HookRule[]>>;
58
+ abstract getAllSymbols(): Promise<Symbols>;
59
+ abstract setHookSignal(hook: HookSignal, multi?: MultiClient): Promise<any>;
60
+ abstract getHookSignal(topic: string, resolved: string): Promise<string | undefined>;
61
+ abstract deleteHookSignal(topic: string, resolved: string): Promise<number | undefined>;
62
+ abstract addTaskQueues(keys: string[]): Promise<void>;
63
+ abstract getActiveTaskQueue(): Promise<string | null>;
64
+ abstract deleteProcessedTaskQueue(workItemKey: string, key: string, processedKey: string, scrub?: boolean): Promise<void>;
65
+ abstract processTaskQueue(sourceKey: string, destinationKey: string): Promise<any>;
66
+ abstract expireJob(jobId: string, inSeconds: number, redisMulti?: MultiClient): Promise<void>;
67
+ abstract getDependencies(jobId: string): Promise<string[]>;
68
+ abstract delistSignalKey(key: string, target: string): Promise<void>;
69
+ abstract registerTimeHook(jobId: string, gId: string, activityId: string, type: WorkListTaskType, deletionTime: number, dad: string, multi?: MultiClient): Promise<void>;
70
+ abstract getNextTask(listKey?: string): Promise<[
99
71
  listKey: string,
100
72
  jobId: string,
101
73
  gId: string,
102
74
  activityId: string,
103
75
  type: WorkListTaskType
104
76
  ] | boolean>;
105
- resolveTaskKeyContext(listKey: string): [WorkListTaskType, string];
106
- interrupt(topic: string, jobId: string, options?: JobInterruptOptions): Promise<void>;
107
- scrub(jobId: string): Promise<void>;
108
- findJobs(queryString?: string, limit?: number, batchSize?: number, cursor?: string): Promise<[string, string[]]>;
109
- findJobFields(jobId: string, fieldMatchPattern?: string, limit?: number, batchSize?: number, cursor?: string): Promise<[string, StringStringType]>;
110
- setThrottleRate(options: ThrottleOptions): Promise<void>;
111
- getThrottleRates(): Promise<StringStringType>;
112
- getThrottleRate(topic: string): Promise<number>;
77
+ abstract interrupt(topic: string, jobId: string, options: {
78
+ [key: string]: any;
79
+ }): Promise<void>;
80
+ abstract scrub(jobId: string): Promise<void>;
81
+ abstract findJobs(queryString?: string, limit?: number, batchSize?: number, cursor?: string): Promise<[string, string[]]>;
82
+ abstract findJobFields(jobId: string, fieldMatchPattern?: string, limit?: number, batchSize?: number, cursor?: string): Promise<[string, StringStringType]>;
83
+ abstract setThrottleRate(options: ThrottleOptions): Promise<void>;
84
+ abstract getThrottleRates(): Promise<StringStringType>;
85
+ abstract getThrottleRate(topic: string): Promise<number>;
113
86
  }
114
87
  export { StoreService };