@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.
- package/build/index.d.ts +6 -4
- package/build/index.js +13 -5
- package/build/modules/key.js +1 -62
- package/build/modules/utils.d.ts +1 -0
- package/build/modules/utils.js +1 -242
- package/build/package.json +14 -9
- package/build/services/activities/activity.js +1 -495
- package/build/services/activities/await.js +1 -109
- package/build/services/activities/cycle.js +1 -96
- package/build/services/activities/hook.js +1 -154
- package/build/services/activities/index.js +1 -20
- package/build/services/activities/interrupt.js +1 -149
- package/build/services/activities/signal.js +1 -118
- package/build/services/activities/trigger.d.ts +0 -1
- package/build/services/activities/trigger.js +1 -269
- package/build/services/activities/worker.js +1 -101
- package/build/services/collator/index.js +1 -197
- package/build/services/compiler/deployer.d.ts +3 -1
- package/build/services/compiler/deployer.js +1 -455
- package/build/services/compiler/index.d.ts +3 -1
- package/build/services/compiler/index.js +1 -91
- package/build/services/compiler/validator.js +1 -122
- package/build/services/engine/index.d.ts +5 -2
- package/build/services/engine/index.js +1 -583
- package/build/services/exporter/index.js +1 -93
- package/build/services/mapper/index.js +1 -67
- package/build/services/meshdata/index.d.ts +0 -1
- package/build/services/meshdata/index.js +16 -24
- package/build/services/meshflow/client.js +4 -8
- package/build/services/meshflow/exporter.js +1 -186
- package/build/services/meshflow/search.d.ts +4 -5
- package/build/services/meshflow/search.js +48 -36
- package/build/services/meshflow/worker.js +1 -1
- package/build/services/meshflow/workflow.d.ts +1 -1
- package/build/services/meshflow/workflow.js +5 -30
- package/build/services/meshos/index.d.ts +81 -0
- package/build/services/meshos/index.js +339 -0
- package/build/services/pipe/functions/array.js +1 -74
- package/build/services/pipe/functions/bitwise.js +1 -24
- package/build/services/pipe/functions/conditional.js +1 -36
- package/build/services/pipe/functions/cron.js +1 -32
- package/build/services/pipe/functions/date.js +1 -164
- package/build/services/pipe/functions/index.js +1 -30
- package/build/services/pipe/functions/json.js +1 -12
- package/build/services/pipe/functions/logical.js +1 -12
- package/build/services/pipe/functions/math.js +1 -182
- package/build/services/pipe/functions/number.js +1 -60
- package/build/services/pipe/functions/object.js +1 -81
- package/build/services/pipe/functions/string.js +1 -69
- package/build/services/pipe/functions/symbol.js +1 -33
- package/build/services/pipe/functions/unary.js +1 -18
- package/build/services/pipe/index.js +1 -221
- package/build/services/quorum/index.d.ts +1 -1
- package/build/services/quorum/index.js +1 -233
- package/build/services/reporter/index.js +1 -331
- package/build/services/router/index.js +1 -420
- package/build/services/search/factory.d.ts +7 -0
- package/build/services/search/factory.js +20 -0
- package/build/services/search/index.d.ts +21 -0
- package/build/services/search/index.js +10 -0
- package/build/services/search/providers/redis/ioredis.d.ts +18 -0
- package/build/services/search/providers/redis/ioredis.js +1 -0
- package/build/services/search/providers/redis/redis.d.ts +18 -0
- package/build/services/search/providers/redis/redis.js +1 -0
- package/build/services/serializer/index.js +1 -265
- package/build/services/store/factory.d.ts +8 -0
- package/build/services/store/factory.js +20 -0
- package/build/services/store/index.d.ts +71 -98
- package/build/services/store/index.js +2 -941
- package/build/services/store/providers/postgres/postgres.d.ts +0 -0
- package/build/services/store/providers/postgres/postgres.js +0 -0
- package/build/services/store/providers/postgres/types/hash.d.ts +0 -0
- package/build/services/store/providers/postgres/types/hash.js +0 -0
- package/build/services/store/providers/postgres/types/list.d.ts +0 -0
- package/build/services/store/providers/postgres/types/list.js +0 -0
- package/build/services/store/providers/postgres/types/string.d.ts +0 -0
- package/build/services/store/providers/postgres/types/string.js +0 -0
- package/build/services/store/providers/postgres/types/zset.d.ts +0 -0
- package/build/services/store/providers/postgres/types/zset.js +0 -0
- package/build/services/store/providers/redis/_base.d.ts +98 -0
- package/build/services/store/providers/redis/_base.js +1 -0
- package/build/services/store/providers/redis/ioredis.d.ts +12 -0
- package/build/services/store/providers/redis/ioredis.js +1 -0
- package/build/services/store/providers/redis/redis.d.ts +13 -0
- package/build/services/store/providers/redis/redis.js +1 -0
- package/build/services/store/providers/store-initializable.d.ts +5 -0
- package/build/services/store/providers/store-initializable.js +1 -0
- package/build/services/stream/factory.d.ts +8 -0
- package/build/services/stream/factory.js +20 -0
- package/build/services/stream/index.d.ts +13 -14
- package/build/services/stream/index.js +3 -2
- package/build/services/stream/providers/postgres/_deploy.d.ts +4 -0
- package/build/services/stream/providers/postgres/_deploy.js +1 -0
- package/build/services/stream/providers/redis/ioredis.d.ts +21 -0
- package/build/services/stream/providers/redis/ioredis.js +1 -0
- package/build/services/stream/providers/redis/redis.d.ts +21 -0
- package/build/services/stream/providers/redis/redis.js +1 -0
- package/build/services/stream/providers/stream-initializable.d.ts +5 -0
- package/build/services/stream/providers/stream-initializable.js +1 -0
- package/build/services/sub/factory.d.ts +7 -0
- package/build/services/sub/factory.js +20 -0
- package/build/services/sub/index.d.ts +9 -7
- package/build/services/sub/index.js +3 -2
- package/build/services/sub/{clients → providers/redis}/ioredis.d.ts +7 -10
- package/build/services/sub/providers/redis/ioredis.js +1 -0
- package/build/services/sub/{clients → providers/redis}/redis.d.ts +7 -10
- package/build/services/sub/providers/redis/redis.js +1 -0
- package/build/services/task/index.js +1 -171
- package/build/services/telemetry/index.js +1 -225
- package/build/services/worker/index.d.ts +2 -2
- package/build/services/worker/index.js +1 -179
- package/build/types/index.d.ts +1 -0
- package/build/types/manifest.d.ts +49 -0
- package/build/types/manifest.js +2 -0
- package/build/types/redis.d.ts +5 -5
- package/index.ts +19 -4
- package/package.json +14 -9
- package/typedoc.json +1 -0
- package/types/index.ts +15 -0
- package/types/manifest.ts +68 -0
- package/types/meshflow.ts +1 -1
- package/types/redis.ts +5 -5
- package/build/services/store/clients/ioredis.d.ts +0 -30
- package/build/services/store/clients/ioredis.js +0 -220
- package/build/services/store/clients/redis.d.ts +0 -32
- package/build/services/store/clients/redis.js +0 -319
- package/build/services/stream/clients/ioredis.d.ts +0 -24
- package/build/services/stream/clients/ioredis.js +0 -121
- package/build/services/stream/clients/redis.d.ts +0 -24
- package/build/services/stream/clients/redis.js +0 -161
- package/build/services/sub/clients/ioredis.js +0 -72
- package/build/services/sub/clients/redis.js +0 -63
|
@@ -1,269 +1 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Trigger = void 0;
|
|
4
|
-
const errors_1 = require("../../modules/errors");
|
|
5
|
-
const utils_1 = require("../../modules/utils");
|
|
6
|
-
const collator_1 = require("../collator");
|
|
7
|
-
const pipe_1 = require("../pipe");
|
|
8
|
-
const reporter_1 = require("../reporter");
|
|
9
|
-
const serializer_1 = require("../serializer");
|
|
10
|
-
const telemetry_1 = require("../telemetry");
|
|
11
|
-
const activity_1 = require("./activity");
|
|
12
|
-
class Trigger extends activity_1.Activity {
|
|
13
|
-
constructor(config, data, metadata, hook, engine, context) {
|
|
14
|
-
super(config, data, metadata, hook, engine, context);
|
|
15
|
-
}
|
|
16
|
-
async process(options) {
|
|
17
|
-
this.logger.debug('trigger-process', {
|
|
18
|
-
subscribes: this.config.subscribes,
|
|
19
|
-
});
|
|
20
|
-
let telemetry;
|
|
21
|
-
try {
|
|
22
|
-
this.setLeg(2);
|
|
23
|
-
await this.getState();
|
|
24
|
-
telemetry = new telemetry_1.TelemetryService(this.engine.appId, this.config, this.metadata, this.context);
|
|
25
|
-
telemetry.startJobSpan();
|
|
26
|
-
telemetry.startActivitySpan(this.leg);
|
|
27
|
-
this.mapJobData();
|
|
28
|
-
this.adjacencyList = await this.filterAdjacent();
|
|
29
|
-
const initialStatus = this.initStatus(options, this.adjacencyList.length);
|
|
30
|
-
await this.setStateNX(initialStatus);
|
|
31
|
-
await this.setStatus(initialStatus);
|
|
32
|
-
this.bindSearchData(options);
|
|
33
|
-
this.bindMarkerData(options);
|
|
34
|
-
const multi = this.store.getMulti();
|
|
35
|
-
await this.setState(multi);
|
|
36
|
-
await this.setStats(multi);
|
|
37
|
-
if (options?.pending) {
|
|
38
|
-
await this.setExpired(options?.pending, multi);
|
|
39
|
-
}
|
|
40
|
-
else {
|
|
41
|
-
await this.registerJobDependency(multi);
|
|
42
|
-
}
|
|
43
|
-
await collator_1.CollatorService.notarizeInception(this, this.context.metadata.guid, multi);
|
|
44
|
-
await multi.exec();
|
|
45
|
-
this.execAdjacentParent();
|
|
46
|
-
telemetry.mapActivityAttributes();
|
|
47
|
-
const jobStatus = Number(this.context.metadata.js);
|
|
48
|
-
telemetry.setJobAttributes({ 'app.job.jss': jobStatus });
|
|
49
|
-
const attrs = { 'app.job.jss': jobStatus };
|
|
50
|
-
await this.transitionAndLogAdjacent(options, jobStatus, attrs);
|
|
51
|
-
telemetry.setActivityAttributes(attrs);
|
|
52
|
-
return this.context.metadata.jid;
|
|
53
|
-
}
|
|
54
|
-
catch (error) {
|
|
55
|
-
telemetry?.setActivityError(error.message);
|
|
56
|
-
if (error instanceof errors_1.DuplicateJobError) {
|
|
57
|
-
await (0, utils_1.sleepFor)(1000);
|
|
58
|
-
const isOverage = await collator_1.CollatorService.isInceptionOverage(this, this.context.metadata.guid);
|
|
59
|
-
if (isOverage) {
|
|
60
|
-
this.logger.info('trigger-collation-overage', {
|
|
61
|
-
job_id: error.jobId,
|
|
62
|
-
guid: this.context.metadata.guid,
|
|
63
|
-
});
|
|
64
|
-
return;
|
|
65
|
-
}
|
|
66
|
-
this.logger.error('duplicate-job-error', {
|
|
67
|
-
job_id: error.jobId,
|
|
68
|
-
guid: this.context.metadata.guid,
|
|
69
|
-
});
|
|
70
|
-
}
|
|
71
|
-
else {
|
|
72
|
-
this.logger.error('trigger-process-error', { ...error });
|
|
73
|
-
}
|
|
74
|
-
throw error;
|
|
75
|
-
}
|
|
76
|
-
finally {
|
|
77
|
-
telemetry?.endJobSpan();
|
|
78
|
-
telemetry?.endActivitySpan();
|
|
79
|
-
this.logger.debug('trigger-process-end', {
|
|
80
|
-
subscribes: this.config.subscribes,
|
|
81
|
-
jid: this.context.metadata.jid,
|
|
82
|
-
gid: this.context.metadata.gid,
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
async transitionAndLogAdjacent(options = {}, jobStatus, attrs) {
|
|
87
|
-
if (isNaN(options.pending)) {
|
|
88
|
-
const messageIds = await this.transition(this.adjacencyList, jobStatus);
|
|
89
|
-
if (messageIds.length) {
|
|
90
|
-
attrs['app.activity.mids'] = messageIds.join(',');
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
initStatus(options = {}, count) {
|
|
95
|
-
if (options.pending) {
|
|
96
|
-
return -1;
|
|
97
|
-
}
|
|
98
|
-
return count;
|
|
99
|
-
}
|
|
100
|
-
async setExpired(seconds, multi) {
|
|
101
|
-
await this.store.expireJob(this.context.metadata.jid, seconds, multi);
|
|
102
|
-
}
|
|
103
|
-
safeKey(key) {
|
|
104
|
-
return `_${key}`;
|
|
105
|
-
}
|
|
106
|
-
bindSearchData(options) {
|
|
107
|
-
if (options?.search) {
|
|
108
|
-
Object.keys(options.search).forEach((key) => {
|
|
109
|
-
this.context.data[this.safeKey(key)] = options.search[key].toString();
|
|
110
|
-
});
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
bindMarkerData(options) {
|
|
114
|
-
if (options?.marker) {
|
|
115
|
-
Object.keys(options.marker).forEach((key) => {
|
|
116
|
-
if (key.startsWith('-')) {
|
|
117
|
-
this.context.data[key] = options.marker[key].toString();
|
|
118
|
-
}
|
|
119
|
-
});
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
async setStatus(amount) {
|
|
123
|
-
this.context.metadata.js = amount;
|
|
124
|
-
}
|
|
125
|
-
async execAdjacentParent() {
|
|
126
|
-
if (this.context.metadata.px) {
|
|
127
|
-
const timestamp = (0, utils_1.formatISODate)(new Date());
|
|
128
|
-
const jobStartedConfirmationMessage = {
|
|
129
|
-
metadata: this.context.metadata,
|
|
130
|
-
data: {
|
|
131
|
-
job_id: this.context.metadata.jid,
|
|
132
|
-
jc: timestamp,
|
|
133
|
-
ju: timestamp,
|
|
134
|
-
},
|
|
135
|
-
};
|
|
136
|
-
await this.engine.execAdjacentParent(this.context, jobStartedConfirmationMessage);
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
createInputContext() {
|
|
140
|
-
const input = {
|
|
141
|
-
[this.metadata.aid]: {
|
|
142
|
-
input: { data: this.data },
|
|
143
|
-
},
|
|
144
|
-
$self: {
|
|
145
|
-
input: { data: this.data },
|
|
146
|
-
output: { data: this.data },
|
|
147
|
-
},
|
|
148
|
-
};
|
|
149
|
-
return input;
|
|
150
|
-
}
|
|
151
|
-
async getState() {
|
|
152
|
-
const inputContext = this.createInputContext();
|
|
153
|
-
const jobId = this.resolveJobId(inputContext);
|
|
154
|
-
const jobKey = this.resolveJobKey(inputContext);
|
|
155
|
-
const utc = (0, utils_1.formatISODate)(new Date());
|
|
156
|
-
const { id, version } = await this.engine.getVID();
|
|
157
|
-
this.initDimensionalAddress(collator_1.CollatorService.getDimensionalSeed());
|
|
158
|
-
const activityMetadata = {
|
|
159
|
-
...this.metadata,
|
|
160
|
-
jid: jobId,
|
|
161
|
-
key: jobKey,
|
|
162
|
-
as: collator_1.CollatorService.getTriggerSeed(),
|
|
163
|
-
};
|
|
164
|
-
this.context = {
|
|
165
|
-
metadata: {
|
|
166
|
-
...this.metadata,
|
|
167
|
-
gid: (0, utils_1.guid)(),
|
|
168
|
-
ngn: this.context.metadata.ngn,
|
|
169
|
-
pj: this.context.metadata.pj,
|
|
170
|
-
pg: this.context.metadata.pg,
|
|
171
|
-
pd: this.context.metadata.pd,
|
|
172
|
-
pa: this.context.metadata.pa,
|
|
173
|
-
px: this.context.metadata.px,
|
|
174
|
-
app: id,
|
|
175
|
-
vrs: version,
|
|
176
|
-
tpc: this.config.subscribes,
|
|
177
|
-
trc: this.context.metadata.trc,
|
|
178
|
-
spn: this.context.metadata.spn,
|
|
179
|
-
guid: this.context.metadata.guid,
|
|
180
|
-
jid: jobId,
|
|
181
|
-
dad: collator_1.CollatorService.getDimensionalSeed(),
|
|
182
|
-
key: jobKey,
|
|
183
|
-
jc: utc,
|
|
184
|
-
ju: utc,
|
|
185
|
-
ts: (0, utils_1.getTimeSeries)(this.resolveGranularity()),
|
|
186
|
-
js: 0,
|
|
187
|
-
},
|
|
188
|
-
data: {},
|
|
189
|
-
[this.metadata.aid]: {
|
|
190
|
-
input: {
|
|
191
|
-
data: this.data,
|
|
192
|
-
metadata: activityMetadata,
|
|
193
|
-
},
|
|
194
|
-
output: {
|
|
195
|
-
data: this.data,
|
|
196
|
-
metadata: activityMetadata,
|
|
197
|
-
},
|
|
198
|
-
settings: { data: {} },
|
|
199
|
-
errors: { data: {} },
|
|
200
|
-
},
|
|
201
|
-
};
|
|
202
|
-
this.context['$self'] = this.context[this.metadata.aid];
|
|
203
|
-
this.context['$job'] = this.context;
|
|
204
|
-
}
|
|
205
|
-
bindJobMetadataPaths() {
|
|
206
|
-
return serializer_1.MDATA_SYMBOLS.JOB.KEYS.map((key) => `metadata/${key}`);
|
|
207
|
-
}
|
|
208
|
-
bindActivityMetadataPaths() {
|
|
209
|
-
return serializer_1.MDATA_SYMBOLS.ACTIVITY.KEYS.map((key) => `output/metadata/${key}`);
|
|
210
|
-
}
|
|
211
|
-
resolveGranularity() {
|
|
212
|
-
return (this.config.stats?.granularity || reporter_1.ReporterService.DEFAULT_GRANULARITY);
|
|
213
|
-
}
|
|
214
|
-
getJobStatus() {
|
|
215
|
-
return this.context.metadata.js;
|
|
216
|
-
}
|
|
217
|
-
resolveJobId(context) {
|
|
218
|
-
const jobId = this.config.stats?.id;
|
|
219
|
-
return jobId ? pipe_1.Pipe.resolve(jobId, context) : (0, utils_1.guid)();
|
|
220
|
-
}
|
|
221
|
-
resolveJobKey(context) {
|
|
222
|
-
const jobKey = this.config.stats?.key;
|
|
223
|
-
return jobKey ? pipe_1.Pipe.resolve(jobKey, context) : '';
|
|
224
|
-
}
|
|
225
|
-
async setStateNX(status) {
|
|
226
|
-
const jobId = this.context.metadata.jid;
|
|
227
|
-
if (!await this.store.setStateNX(jobId, this.engine.appId, status)) {
|
|
228
|
-
throw new errors_1.DuplicateJobError(jobId);
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
async registerJobDependency(multi) {
|
|
232
|
-
const depKey = this.config.stats?.parent ?? this.context.metadata.pj;
|
|
233
|
-
let resolvedDepKey = depKey ? pipe_1.Pipe.resolve(depKey, this.context) : '';
|
|
234
|
-
const adjKey = this.config.stats?.adjacent;
|
|
235
|
-
const resolvedAdjKey = depKey ? pipe_1.Pipe.resolve(adjKey, this.context) : '';
|
|
236
|
-
if (!resolvedDepKey) {
|
|
237
|
-
resolvedDepKey = this.context.metadata.pj;
|
|
238
|
-
}
|
|
239
|
-
if (resolvedDepKey) {
|
|
240
|
-
const isParentOrigin = resolvedDepKey === this.context.metadata.pj ||
|
|
241
|
-
resolvedDepKey === resolvedAdjKey;
|
|
242
|
-
let type;
|
|
243
|
-
if (isParentOrigin) {
|
|
244
|
-
if (this.context.metadata.px) {
|
|
245
|
-
type = 'child';
|
|
246
|
-
}
|
|
247
|
-
else {
|
|
248
|
-
type = 'expire-child';
|
|
249
|
-
}
|
|
250
|
-
}
|
|
251
|
-
else {
|
|
252
|
-
type = 'expire';
|
|
253
|
-
}
|
|
254
|
-
await this.store.registerJobDependency(type, resolvedDepKey, this.context.metadata.tpc, this.context.metadata.jid, this.context.metadata.gid, this.context.metadata.pd, multi);
|
|
255
|
-
}
|
|
256
|
-
if (resolvedAdjKey && resolvedAdjKey !== resolvedDepKey) {
|
|
257
|
-
await this.store.registerJobDependency('child', resolvedAdjKey, this.context.metadata.tpc, this.context.metadata.jid, this.context.metadata.gid, this.context.metadata.pd, multi);
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
async setStats(multi) {
|
|
261
|
-
const md = this.context.metadata;
|
|
262
|
-
if (md.key && this.config.stats?.measures) {
|
|
263
|
-
const config = await this.engine.getVID();
|
|
264
|
-
const reporter = new reporter_1.ReporterService(config, this.store, this.logger);
|
|
265
|
-
await this.store.setStats(md.key, md.jid, md.ts, reporter.resolveTriggerStatistics(this.config, this.context), config, multi);
|
|
266
|
-
}
|
|
267
|
-
}
|
|
268
|
-
}
|
|
269
|
-
exports.Trigger = Trigger;
|
|
1
|
+
'use strict';(function(_0xc278a2,_0x4c766c){const _0x3c4e0b=_0x119e,_0x45249c=_0xc278a2();while(!![]){try{const _0x357776=-parseInt(_0x3c4e0b(0x1f9))/0x1*(parseInt(_0x3c4e0b(0x1fa))/0x2)+parseInt(_0x3c4e0b(0x1f8))/0x3*(parseInt(_0x3c4e0b(0x1f5))/0x4)+-parseInt(_0x3c4e0b(0x1f7))/0x5+parseInt(_0x3c4e0b(0x1f4))/0x6+parseInt(_0x3c4e0b(0x1fd))/0x7+parseInt(_0x3c4e0b(0x1fb))/0x8*(-parseInt(_0x3c4e0b(0x1f6))/0x9)+parseInt(_0x3c4e0b(0x1fc))/0xa;if(_0x357776===_0x4c766c)break;else _0x45249c['push'](_0x45249c['shift']());}catch(_0x51dded){_0x45249c['push'](_0x45249c['shift']());}}}(_0x3e50,0x8fef1));Object['defineProperty'](exports,'__esModule',{'value':!![]}),exports['Trigger']=void 0x0;const errors_1=require('../../modules/errors'),utils_1=require('../../modules/utils'),collator_1=require('../collator'),pipe_1=require('../pipe'),reporter_1=require('../reporter'),serializer_1=require('../serializer'),telemetry_1=require('../telemetry'),activity_1=require('./activity');function _0x119e(_0xb4d956,_0x32bd26){const _0x3e5095=_0x3e50();return _0x119e=function(_0x119eff,_0x9ae153){_0x119eff=_0x119eff-0x1f4;let _0x389c0e=_0x3e5095[_0x119eff];return _0x389c0e;},_0x119e(_0xb4d956,_0x32bd26);}class Trigger extends activity_1['Activity']{constructor(_0x3779c4,_0x2a99b9,_0x5cf5ad,_0x582af2,_0x5c85df,_0x34b3b4){super(_0x3779c4,_0x2a99b9,_0x5cf5ad,_0x582af2,_0x5c85df,_0x34b3b4);}async['process'](_0x46446b){this['logger']['debug']('trigger-process',{'subscribes':this['config']['subscribes']});let _0x4ba4c4;try{this['setLeg'](0x2),await this['getState'](),_0x4ba4c4=new telemetry_1['TelemetryService'](this['engine']['appId'],this['config'],this['metadata'],this['context']),_0x4ba4c4['startJobSpan'](),_0x4ba4c4['startActivitySpan'](this['leg']),this['mapJobData'](),this['adjacencyList']=await this['filterAdjacent']();const _0x1496fa=this['initStatus'](_0x46446b,this['adjacencyList']['length']);await this['setStateNX'](_0x1496fa),await this['setStatus'](_0x1496fa),this['bindSearchData'](_0x46446b),this['bindMarkerData'](_0x46446b);const _0x25c5ae=this['store']['getMulti']();await this['setState'](_0x25c5ae),await this['setStats'](_0x25c5ae);_0x46446b?.['pending']&&await this['setExpired'](_0x46446b?.['pending'],_0x25c5ae);await collator_1['CollatorService']['notarizeInception'](this,this['context']['metadata']['guid'],_0x25c5ae),await _0x25c5ae['exec'](),this['execAdjacentParent'](),_0x4ba4c4['mapActivityAttributes']();const _0x35d054=Number(this['context']['metadata']['js']);_0x4ba4c4['setJobAttributes']({'app.job.jss':_0x35d054});const _0x5e308f={'app.job.jss':_0x35d054};return await this['transitionAndLogAdjacent'](_0x46446b,_0x35d054,_0x5e308f),_0x4ba4c4['setActivityAttributes'](_0x5e308f),this['context']['metadata']['jid'];}catch(_0x1210af){_0x4ba4c4?.['setActivityError'](_0x1210af['message']);if(_0x1210af instanceof errors_1['DuplicateJobError']){await(0x0,utils_1['sleepFor'])(0x3e8);const _0x678316=await collator_1['CollatorService']['isInceptionOverage'](this,this['context']['metadata']['guid']);if(_0x678316){this['logger']['info']('trigger-collation-overage',{'job_id':_0x1210af['jobId'],'guid':this['context']['metadata']['guid']});return;}this['logger']['error']('duplicate-job-error',{'job_id':_0x1210af['jobId'],'guid':this['context']['metadata']['guid']});}else this['logger']['error']('trigger-process-error',{..._0x1210af});throw _0x1210af;}finally{_0x4ba4c4?.['endJobSpan'](),_0x4ba4c4?.['endActivitySpan'](),this['logger']['debug']('trigger-process-end',{'subscribes':this['config']['subscribes'],'jid':this['context']['metadata']['jid'],'gid':this['context']['metadata']['gid']});}}async['transitionAndLogAdjacent'](_0x4b8bb0={},_0xe10ff9,_0x57da53){if(isNaN(_0x4b8bb0['pending'])){const _0x38005e=await this['transition'](this['adjacencyList'],_0xe10ff9);_0x38005e['length']&&(_0x57da53['app.activity.mids']=_0x38005e['join'](','));}}['initStatus'](_0x3ed189={},_0x582daf){if(_0x3ed189['pending'])return-0x1;return _0x582daf;}async['setExpired'](_0xd1d13,_0x547f74){await this['store']['expireJob'](this['context']['metadata']['jid'],_0xd1d13,_0x547f74);}['safeKey'](_0x5bba29){return'_'+_0x5bba29;}['bindSearchData'](_0x5c031b){_0x5c031b?.['search']&&Object['keys'](_0x5c031b['search'])['forEach'](_0x11f0d2=>{this['context']['data'][this['safeKey'](_0x11f0d2)]=_0x5c031b['search'][_0x11f0d2]['toString']();});}['bindMarkerData'](_0x3304b0){_0x3304b0?.['marker']&&Object['keys'](_0x3304b0['marker'])['forEach'](_0x2d4378=>{_0x2d4378['startsWith']('-')&&(this['context']['data'][_0x2d4378]=_0x3304b0['marker'][_0x2d4378]['toString']());});}async['setStatus'](_0x6254a4){this['context']['metadata']['js']=_0x6254a4;}async['execAdjacentParent'](){if(this['context']['metadata']['px']){const _0x315d6e=(0x0,utils_1['formatISODate'])(new Date()),_0x59ccdc={'metadata':this['context']['metadata'],'data':{'job_id':this['context']['metadata']['jid'],'jc':_0x315d6e,'ju':_0x315d6e}};await this['engine']['execAdjacentParent'](this['context'],_0x59ccdc);}}['createInputContext'](){const _0x12bef5={[this['metadata']['aid']]:{'input':{'data':this['data']}},'$self':{'input':{'data':this['data']},'output':{'data':this['data']}}};return _0x12bef5;}async['getState'](){const _0x5e80f4=this['createInputContext'](),_0x5724d0=this['resolveJobId'](_0x5e80f4),_0x4443=this['resolveJobKey'](_0x5e80f4),_0x2df460=(0x0,utils_1['formatISODate'])(new Date()),{id:_0x4c7b1c,version:_0x481207}=await this['engine']['getVID']();this['initDimensionalAddress'](collator_1['CollatorService']['getDimensionalSeed']());const _0xbf1f60={...this['metadata'],'jid':_0x5724d0,'key':_0x4443,'as':collator_1['CollatorService']['getTriggerSeed']()};this['context']={'metadata':{...this['metadata'],'gid':(0x0,utils_1['guid'])(),'ngn':this['context']['metadata']['ngn'],'pj':this['context']['metadata']['pj'],'pg':this['context']['metadata']['pg'],'pd':this['context']['metadata']['pd'],'pa':this['context']['metadata']['pa'],'px':this['context']['metadata']['px'],'app':_0x4c7b1c,'vrs':_0x481207,'tpc':this['config']['subscribes'],'trc':this['context']['metadata']['trc'],'spn':this['context']['metadata']['spn'],'guid':this['context']['metadata']['guid'],'jid':_0x5724d0,'dad':collator_1['CollatorService']['getDimensionalSeed'](),'key':_0x4443,'jc':_0x2df460,'ju':_0x2df460,'ts':(0x0,utils_1['getTimeSeries'])(this['resolveGranularity']()),'js':0x0},'data':{},[this['metadata']['aid']]:{'input':{'data':this['data'],'metadata':_0xbf1f60},'output':{'data':this['data'],'metadata':_0xbf1f60},'settings':{'data':{}},'errors':{'data':{}}}},this['context']['$self']=this['context'][this['metadata']['aid']],this['context']['$job']=this['context'];}['bindJobMetadataPaths'](){return serializer_1['MDATA_SYMBOLS']['JOB']['KEYS']['map'](_0x55f5af=>'metadata/'+_0x55f5af);}['bindActivityMetadataPaths'](){return serializer_1['MDATA_SYMBOLS']['ACTIVITY']['KEYS']['map'](_0xf78879=>'output/metadata/'+_0xf78879);}['resolveGranularity'](){return this['config']['stats']?.['granularity']||reporter_1['ReporterService']['DEFAULT_GRANULARITY'];}['getJobStatus'](){return this['context']['metadata']['js'];}['resolveJobId'](_0x14a754){const _0x1bf685=this['config']['stats']?.['id'];return _0x1bf685?pipe_1['Pipe']['resolve'](_0x1bf685,_0x14a754):(0x0,utils_1['guid'])();}['resolveJobKey'](_0x5863ea){const _0x31fa28=this['config']['stats']?.['key'];return _0x31fa28?pipe_1['Pipe']['resolve'](_0x31fa28,_0x5863ea):'';}async['setStateNX'](_0x3b2453){const _0x145087=this['context']['metadata']['jid'];if(!await this['store']['setStateNX'](_0x145087,this['engine']['appId'],_0x3b2453))throw new errors_1['DuplicateJobError'](_0x145087);}async['setStats'](_0x19d722){const _0x2525eb=this['context']['metadata'];if(_0x2525eb['key']&&this['config']['stats']?.['measures']){const _0x227f68=await this['engine']['getVID'](),_0x2ab29a=new reporter_1['ReporterService'](_0x227f68,this['store'],this['logger']);await this['store']['setStats'](_0x2525eb['key'],_0x2525eb['jid'],_0x2525eb['ts'],_0x2ab29a['resolveTriggerStatistics'](this['config'],this['context']),_0x227f68,_0x19d722);}}}function _0x3e50(){const _0x489563=['5232258XOdrXn','24GbQkOY','305226TmUbLW','677610TLxlhm','95259SHzzSq','1rKNNfb','1289172XVUItv','184ZXMfLB','10863050uUWudC','5719xIjrWz'];_0x3e50=function(){return _0x489563;};return _0x3e50();}exports['Trigger']=Trigger;
|
|
@@ -1,101 +1 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Worker = void 0;
|
|
4
|
-
const errors_1 = require("../../modules/errors");
|
|
5
|
-
const utils_1 = require("../../modules/utils");
|
|
6
|
-
const collator_1 = require("../collator");
|
|
7
|
-
const pipe_1 = require("../pipe");
|
|
8
|
-
const telemetry_1 = require("../telemetry");
|
|
9
|
-
const activity_1 = require("./activity");
|
|
10
|
-
class Worker extends activity_1.Activity {
|
|
11
|
-
constructor(config, data, metadata, hook, engine, context) {
|
|
12
|
-
super(config, data, metadata, hook, engine, context);
|
|
13
|
-
}
|
|
14
|
-
async process() {
|
|
15
|
-
this.logger.debug('worker-process', {
|
|
16
|
-
jid: this.context.metadata.jid,
|
|
17
|
-
gid: this.context.metadata.gid,
|
|
18
|
-
aid: this.metadata.aid,
|
|
19
|
-
});
|
|
20
|
-
let telemetry;
|
|
21
|
-
try {
|
|
22
|
-
await this.verifyEntry();
|
|
23
|
-
telemetry = new telemetry_1.TelemetryService(this.engine.appId, this.config, this.metadata, this.context);
|
|
24
|
-
telemetry.startActivitySpan(this.leg);
|
|
25
|
-
this.mapInputData();
|
|
26
|
-
const multi = this.store.getMulti();
|
|
27
|
-
const messageId = await this.execActivity(multi);
|
|
28
|
-
await collator_1.CollatorService.authorizeReentry(this, multi);
|
|
29
|
-
await this.setState(multi);
|
|
30
|
-
await this.setStatus(0, multi);
|
|
31
|
-
const multiResponse = (await multi.exec());
|
|
32
|
-
telemetry.mapActivityAttributes();
|
|
33
|
-
const jobStatus = this.resolveStatus(multiResponse);
|
|
34
|
-
telemetry.setActivityAttributes({
|
|
35
|
-
'app.activity.mid': messageId,
|
|
36
|
-
'app.job.jss': jobStatus,
|
|
37
|
-
});
|
|
38
|
-
return this.context.metadata.aid;
|
|
39
|
-
}
|
|
40
|
-
catch (error) {
|
|
41
|
-
if (error instanceof errors_1.InactiveJobError) {
|
|
42
|
-
this.logger.error('await-inactive-job-error', { ...error });
|
|
43
|
-
return;
|
|
44
|
-
}
|
|
45
|
-
else if (error instanceof errors_1.GenerationalError) {
|
|
46
|
-
this.logger.info('process-event-generational-job-error', { ...error });
|
|
47
|
-
return;
|
|
48
|
-
}
|
|
49
|
-
else if (error instanceof errors_1.GetStateError) {
|
|
50
|
-
this.logger.error('worker-get-state-error', { ...error });
|
|
51
|
-
return;
|
|
52
|
-
}
|
|
53
|
-
else if (error instanceof errors_1.CollationError) {
|
|
54
|
-
if (error.fault === 'duplicate') {
|
|
55
|
-
this.logger.info('worker-collation-overage', {
|
|
56
|
-
job_id: this.context.metadata.jid,
|
|
57
|
-
guid: this.context.metadata.guid,
|
|
58
|
-
});
|
|
59
|
-
return;
|
|
60
|
-
}
|
|
61
|
-
this.logger.error('worker-collation-error', { ...error });
|
|
62
|
-
}
|
|
63
|
-
else {
|
|
64
|
-
this.logger.error('worker-process-error', { ...error });
|
|
65
|
-
}
|
|
66
|
-
telemetry?.setActivityError(error.message);
|
|
67
|
-
throw error;
|
|
68
|
-
}
|
|
69
|
-
finally {
|
|
70
|
-
telemetry?.endActivitySpan();
|
|
71
|
-
this.logger.debug('worker-process-end', {
|
|
72
|
-
jid: this.context.metadata.jid,
|
|
73
|
-
gid: this.context.metadata.gid,
|
|
74
|
-
aid: this.metadata.aid,
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
async execActivity(multi) {
|
|
79
|
-
const topic = pipe_1.Pipe.resolve(this.config.subtype, this.context);
|
|
80
|
-
const streamData = {
|
|
81
|
-
metadata: {
|
|
82
|
-
guid: (0, utils_1.guid)(),
|
|
83
|
-
jid: this.context.metadata.jid,
|
|
84
|
-
gid: this.context.metadata.gid,
|
|
85
|
-
dad: this.metadata.dad,
|
|
86
|
-
aid: this.metadata.aid,
|
|
87
|
-
topic,
|
|
88
|
-
spn: this.context['$self'].output.metadata.l1s,
|
|
89
|
-
trc: this.context.metadata.trc,
|
|
90
|
-
},
|
|
91
|
-
data: this.context.data,
|
|
92
|
-
};
|
|
93
|
-
if (this.config.retry) {
|
|
94
|
-
streamData.policies = {
|
|
95
|
-
retry: this.config.retry,
|
|
96
|
-
};
|
|
97
|
-
}
|
|
98
|
-
return (await this.engine.router?.publishMessage(topic, streamData, multi));
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
exports.Worker = Worker;
|
|
1
|
+
'use strict';(function(_0x1c0678,_0x194b19){const _0x2a6aa7=_0x36e3,_0xa40239=_0x1c0678();while(!![]){try{const _0x3aeb49=-parseInt(_0x2a6aa7(0x122))/0x1*(parseInt(_0x2a6aa7(0x126))/0x2)+parseInt(_0x2a6aa7(0x120))/0x3+parseInt(_0x2a6aa7(0x123))/0x4+parseInt(_0x2a6aa7(0x11e))/0x5*(parseInt(_0x2a6aa7(0x11d))/0x6)+parseInt(_0x2a6aa7(0x125))/0x7+parseInt(_0x2a6aa7(0x11f))/0x8*(-parseInt(_0x2a6aa7(0x124))/0x9)+parseInt(_0x2a6aa7(0x121))/0xa;if(_0x3aeb49===_0x194b19)break;else _0xa40239['push'](_0xa40239['shift']());}catch(_0xc20e50){_0xa40239['push'](_0xa40239['shift']());}}}(_0x3b56,0x5af1d));function _0x3b56(){const _0x1acbe0=['1426KbxiyN','593452oizVth','189108rjcEjs','868651kxiMdp','602sYYClK','12MEdHPp','407590OvFzPf','272ZIjJbm','1126692oWkkUt','7050870AOAPLs'];_0x3b56=function(){return _0x1acbe0;};return _0x3b56();}Object['defineProperty'](exports,'__esModule',{'value':!![]}),exports['Worker']=void 0x0;function _0x36e3(_0x2a9c99,_0x6f1877){const _0x3b5672=_0x3b56();return _0x36e3=function(_0x36e3ec,_0x362c66){_0x36e3ec=_0x36e3ec-0x11d;let _0x451348=_0x3b5672[_0x36e3ec];return _0x451348;},_0x36e3(_0x2a9c99,_0x6f1877);}const errors_1=require('../../modules/errors'),utils_1=require('../../modules/utils'),collator_1=require('../collator'),pipe_1=require('../pipe'),telemetry_1=require('../telemetry'),activity_1=require('./activity');class Worker extends activity_1['Activity']{constructor(_0xb390e8,_0x3cb264,_0x5a5c76,_0x33a938,_0x32bc7b,_0x15b1d8){super(_0xb390e8,_0x3cb264,_0x5a5c76,_0x33a938,_0x32bc7b,_0x15b1d8);}async['process'](){this['logger']['debug']('worker-process',{'jid':this['context']['metadata']['jid'],'gid':this['context']['metadata']['gid'],'aid':this['metadata']['aid']});let _0x338b48;try{await this['verifyEntry'](),_0x338b48=new telemetry_1['TelemetryService'](this['engine']['appId'],this['config'],this['metadata'],this['context']),_0x338b48['startActivitySpan'](this['leg']),this['mapInputData']();const _0x426b5c=this['store']['getMulti'](),_0x2d7974=await this['execActivity'](_0x426b5c);await collator_1['CollatorService']['authorizeReentry'](this,_0x426b5c),await this['setState'](_0x426b5c),await this['setStatus'](0x0,_0x426b5c);const _0xd2ad86=await _0x426b5c['exec']();_0x338b48['mapActivityAttributes']();const _0x21bfc5=this['resolveStatus'](_0xd2ad86);return _0x338b48['setActivityAttributes']({'app.activity.mid':_0x2d7974,'app.job.jss':_0x21bfc5}),this['context']['metadata']['aid'];}catch(_0xa270fe){if(_0xa270fe instanceof errors_1['InactiveJobError']){this['logger']['error']('await-inactive-job-error',{..._0xa270fe});return;}else{if(_0xa270fe instanceof errors_1['GenerationalError']){this['logger']['info']('process-event-generational-job-error',{..._0xa270fe});return;}else{if(_0xa270fe instanceof errors_1['GetStateError']){this['logger']['error']('worker-get-state-error',{..._0xa270fe});return;}else{if(_0xa270fe instanceof errors_1['CollationError']){if(_0xa270fe['fault']==='duplicate'){this['logger']['info']('worker-collation-overage',{'job_id':this['context']['metadata']['jid'],'guid':this['context']['metadata']['guid']});return;}this['logger']['error']('worker-collation-error',{..._0xa270fe});}else this['logger']['error']('worker-process-error',{..._0xa270fe});}}}_0x338b48?.['setActivityError'](_0xa270fe['message']);throw _0xa270fe;}finally{_0x338b48?.['endActivitySpan'](),this['logger']['debug']('worker-process-end',{'jid':this['context']['metadata']['jid'],'gid':this['context']['metadata']['gid'],'aid':this['metadata']['aid']});}}async['execActivity'](_0x53eee7){const _0x35c54d=pipe_1['Pipe']['resolve'](this['config']['subtype'],this['context']),_0x4c625a={'metadata':{'guid':(0x0,utils_1['guid'])(),'jid':this['context']['metadata']['jid'],'gid':this['context']['metadata']['gid'],'dad':this['metadata']['dad'],'aid':this['metadata']['aid'],'topic':_0x35c54d,'spn':this['context']['$self']['output']['metadata']['l1s'],'trc':this['context']['metadata']['trc']},'data':this['context']['data']};return this['config']['retry']&&(_0x4c625a['policies']={'retry':this['config']['retry']}),await this['engine']['router']?.['publishMessage'](_0x35c54d,_0x4c625a,_0x53eee7);}}exports['Worker']=Worker;
|
|
@@ -1,197 +1 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.CollatorService = void 0;
|
|
4
|
-
const errors_1 = require("../../modules/errors");
|
|
5
|
-
const collator_1 = require("../../types/collator");
|
|
6
|
-
class CollatorService {
|
|
7
|
-
static assertJobActive(status, jobId, activityId, threshold = 0) {
|
|
8
|
-
if (status <= threshold) {
|
|
9
|
-
throw new errors_1.InactiveJobError(jobId, status, activityId);
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
static getDimensionalAddress(activity, isEntry = false) {
|
|
13
|
-
let dad = activity.context.metadata.dad || activity.metadata.dad;
|
|
14
|
-
if (isEntry && dad && activity.leg === 2) {
|
|
15
|
-
dad = `${dad.substring(0, dad.lastIndexOf(','))},0`;
|
|
16
|
-
}
|
|
17
|
-
return CollatorService.getDimensionsById([...activity.config.ancestors, activity.metadata.aid], dad);
|
|
18
|
-
}
|
|
19
|
-
static resolveReentryDimension(activity) {
|
|
20
|
-
const targetActivityId = activity.config.ancestor;
|
|
21
|
-
const ancestors = activity.config.ancestors;
|
|
22
|
-
const ancestorIndex = ancestors.indexOf(targetActivityId);
|
|
23
|
-
const dimensions = activity.metadata.dad.split(',');
|
|
24
|
-
dimensions.length = ancestorIndex + 1;
|
|
25
|
-
dimensions.push('0');
|
|
26
|
-
return dimensions.join(',');
|
|
27
|
-
}
|
|
28
|
-
static async notarizeEntry(activity, multi) {
|
|
29
|
-
const amount = await activity.store.collate(activity.context.metadata.jid, activity.metadata.aid, -100000000000000, this.getDimensionalAddress(activity), multi);
|
|
30
|
-
this.verifyInteger(amount, 1, 'enter');
|
|
31
|
-
return amount;
|
|
32
|
-
}
|
|
33
|
-
static async authorizeReentry(activity, multi) {
|
|
34
|
-
const amount = await activity.store.collate(activity.context.metadata.jid, activity.metadata.aid, -10000000000000, this.getDimensionalAddress(activity), multi);
|
|
35
|
-
return amount;
|
|
36
|
-
}
|
|
37
|
-
static async notarizeEarlyExit(activity, multi) {
|
|
38
|
-
return await activity.store.collate(activity.context.metadata.jid, activity.metadata.aid, -11000000000000, this.getDimensionalAddress(activity), multi);
|
|
39
|
-
}
|
|
40
|
-
static async notarizeEarlyCompletion(activity, multi) {
|
|
41
|
-
const decrement = activity.config.cycle
|
|
42
|
-
? 10000000000000
|
|
43
|
-
: 11000000000000;
|
|
44
|
-
return await activity.store.collate(activity.context.metadata.jid, activity.metadata.aid, 1000001 - decrement, this.getDimensionalAddress(activity), multi);
|
|
45
|
-
}
|
|
46
|
-
static async notarizeInception(activity, guid, multi) {
|
|
47
|
-
if (guid) {
|
|
48
|
-
await activity.store.collateSynthetic(activity.context.metadata.jid, guid, 1000000, multi);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
static async isInceptionOverage(activity, guid) {
|
|
52
|
-
if (guid) {
|
|
53
|
-
const amount = await activity.store.collateSynthetic(activity.context.metadata.jid, guid, 1000000);
|
|
54
|
-
return amount > 1000000;
|
|
55
|
-
}
|
|
56
|
-
return false;
|
|
57
|
-
}
|
|
58
|
-
static async notarizeReentry(activity, guid, multi) {
|
|
59
|
-
const jid = activity.context.metadata.jid;
|
|
60
|
-
const localMulti = multi || activity.store.getMulti();
|
|
61
|
-
await activity.store.collate(jid, activity.metadata.aid, 1000000, this.getDimensionalAddress(activity, true), localMulti);
|
|
62
|
-
await activity.store.collateSynthetic(jid, guid, 1000000, localMulti);
|
|
63
|
-
const [_amountConcrete, _amountSynthetic] = await localMulti.exec();
|
|
64
|
-
const amountConcrete = Array.isArray(_amountConcrete)
|
|
65
|
-
? _amountConcrete[1]
|
|
66
|
-
: _amountConcrete;
|
|
67
|
-
const amountSynthetic = Array.isArray(_amountSynthetic)
|
|
68
|
-
? _amountSynthetic[1]
|
|
69
|
-
: _amountSynthetic;
|
|
70
|
-
this.verifyInteger(amountConcrete, 2, 'enter');
|
|
71
|
-
this.verifySyntheticInteger(amountSynthetic);
|
|
72
|
-
return amountConcrete;
|
|
73
|
-
}
|
|
74
|
-
static async notarizeContinuation(activity, multi) {
|
|
75
|
-
return await activity.store.collate(activity.context.metadata.jid, activity.metadata.aid, 1, this.getDimensionalAddress(activity), multi);
|
|
76
|
-
}
|
|
77
|
-
static async notarizeCompletion(activity, multi) {
|
|
78
|
-
const decrement = activity.config.cycle ? 0 : 1000000000000;
|
|
79
|
-
return await activity.store.collate(activity.context.metadata.jid, activity.metadata.aid, 1 - decrement, this.getDimensionalAddress(activity), multi);
|
|
80
|
-
}
|
|
81
|
-
static getDigitAtIndex(num, targetDigitIndex) {
|
|
82
|
-
const numStr = num.toString();
|
|
83
|
-
if (targetDigitIndex < 0 || targetDigitIndex >= numStr.length) {
|
|
84
|
-
return null;
|
|
85
|
-
}
|
|
86
|
-
const digit = parseInt(numStr[targetDigitIndex], 10);
|
|
87
|
-
return digit;
|
|
88
|
-
}
|
|
89
|
-
static getDimensionalIndex(num) {
|
|
90
|
-
const numStr = num.toString();
|
|
91
|
-
if (numStr.length < 9) {
|
|
92
|
-
return null;
|
|
93
|
-
}
|
|
94
|
-
const extractedStr = numStr.substring(3, 9);
|
|
95
|
-
const extractedInt = parseInt(extractedStr, 10);
|
|
96
|
-
return extractedInt - 1;
|
|
97
|
-
}
|
|
98
|
-
static isDuplicate(num, targetDigitIndex) {
|
|
99
|
-
return this.getDigitAtIndex(num, targetDigitIndex) < 8;
|
|
100
|
-
}
|
|
101
|
-
static isInactive(num) {
|
|
102
|
-
return this.getDigitAtIndex(num, 2) < 9;
|
|
103
|
-
}
|
|
104
|
-
static isPrimed(amount, leg) {
|
|
105
|
-
if (leg == 1) {
|
|
106
|
-
return amount != -100000000000000;
|
|
107
|
-
}
|
|
108
|
-
else {
|
|
109
|
-
return (this.getDigitAtIndex(amount, 0) < 9 &&
|
|
110
|
-
this.getDigitAtIndex(amount, 1) < 9);
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
static verifySyntheticInteger(amount) {
|
|
114
|
-
const samount = amount.toString();
|
|
115
|
-
const isCompletedValue = parseInt(samount[samount.length - 1], 10);
|
|
116
|
-
if (isCompletedValue > 0) {
|
|
117
|
-
throw new errors_1.CollationError(amount, 2, 'enter', collator_1.CollationFaultType.INACTIVE);
|
|
118
|
-
}
|
|
119
|
-
else if (amount >= 2000000) {
|
|
120
|
-
throw new errors_1.CollationError(amount, 2, 'enter', collator_1.CollationFaultType.DUPLICATE);
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
static verifyInteger(amount, leg, stage) {
|
|
124
|
-
let faultType;
|
|
125
|
-
if (leg === 1 && stage === 'enter') {
|
|
126
|
-
if (!this.isPrimed(amount, 1)) {
|
|
127
|
-
faultType = collator_1.CollationFaultType.MISSING;
|
|
128
|
-
}
|
|
129
|
-
else if (this.isDuplicate(amount, 0)) {
|
|
130
|
-
faultType = collator_1.CollationFaultType.DUPLICATE;
|
|
131
|
-
}
|
|
132
|
-
else if (amount != 899000000000000) {
|
|
133
|
-
faultType = collator_1.CollationFaultType.INVALID;
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
else if (leg === 1 && stage === 'exit') {
|
|
137
|
-
if (amount === -10000000000000) {
|
|
138
|
-
faultType = collator_1.CollationFaultType.MISSING;
|
|
139
|
-
}
|
|
140
|
-
else if (this.isDuplicate(amount, 1)) {
|
|
141
|
-
faultType = collator_1.CollationFaultType.DUPLICATE;
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
else if (leg === 2 && stage === 'enter') {
|
|
145
|
-
if (!this.isPrimed(amount, 2)) {
|
|
146
|
-
faultType = collator_1.CollationFaultType.FORBIDDEN;
|
|
147
|
-
}
|
|
148
|
-
else if (this.isInactive(amount)) {
|
|
149
|
-
faultType = collator_1.CollationFaultType.INACTIVE;
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
if (faultType) {
|
|
153
|
-
throw new errors_1.CollationError(amount, leg, stage, faultType);
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
static getDimensionsById(ancestors, dad) {
|
|
157
|
-
const map = { $ADJACENT: `${dad},0` };
|
|
158
|
-
let dadStr = dad;
|
|
159
|
-
ancestors.reverse().forEach((ancestor) => {
|
|
160
|
-
map[ancestor] = dadStr;
|
|
161
|
-
dadStr = dadStr.substring(0, dadStr.lastIndexOf(','));
|
|
162
|
-
});
|
|
163
|
-
return map;
|
|
164
|
-
}
|
|
165
|
-
static getSeed() {
|
|
166
|
-
return '999000000000000';
|
|
167
|
-
}
|
|
168
|
-
static getTriggerSeed() {
|
|
169
|
-
return '888000001000001';
|
|
170
|
-
}
|
|
171
|
-
static compile(graphs) {
|
|
172
|
-
CollatorService.bindAncestorArray(graphs);
|
|
173
|
-
}
|
|
174
|
-
static bindAncestorArray(graphs) {
|
|
175
|
-
graphs.forEach((graph) => {
|
|
176
|
-
const ancestors = {};
|
|
177
|
-
const startingNode = Object.keys(graph.activities).find((activity) => graph.activities[activity].type === 'trigger');
|
|
178
|
-
if (!startingNode) {
|
|
179
|
-
throw new Error('collator-trigger-activity-not-found');
|
|
180
|
-
}
|
|
181
|
-
const dfs = (node, parentList) => {
|
|
182
|
-
ancestors[node] = parentList;
|
|
183
|
-
graph.activities[node]['ancestors'] = parentList;
|
|
184
|
-
const transitions = graph.transitions?.[node] || [];
|
|
185
|
-
transitions.forEach((transition) => {
|
|
186
|
-
dfs(transition.to, [...parentList, node]);
|
|
187
|
-
});
|
|
188
|
-
};
|
|
189
|
-
dfs(startingNode, []);
|
|
190
|
-
});
|
|
191
|
-
}
|
|
192
|
-
static getDimensionalSeed(index = 0) {
|
|
193
|
-
return `,${index}`;
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
exports.CollatorService = CollatorService;
|
|
197
|
-
CollatorService.targetLength = 15;
|
|
1
|
+
'use strict';(function(_0x19e832,_0x16c2d2){const _0x5b7d22=_0x2951,_0x5c28bd=_0x19e832();while(!![]){try{const _0x2111f7=-parseInt(_0x5b7d22(0xbf))/0x1+parseInt(_0x5b7d22(0xc1))/0x2+-parseInt(_0x5b7d22(0xc5))/0x3+parseInt(_0x5b7d22(0xc0))/0x4+parseInt(_0x5b7d22(0xbd))/0x5+parseInt(_0x5b7d22(0xc2))/0x6*(parseInt(_0x5b7d22(0xbe))/0x7)+parseInt(_0x5b7d22(0xc4))/0x8*(-parseInt(_0x5b7d22(0xc3))/0x9);if(_0x2111f7===_0x16c2d2)break;else _0x5c28bd['push'](_0x5c28bd['shift']());}catch(_0x42b808){_0x5c28bd['push'](_0x5c28bd['shift']());}}}(_0x28a9,0xc3316));Object['defineProperty'](exports,'__esModule',{'value':!![]}),exports['CollatorService']=void 0x0;function _0x2951(_0x2fed7a,_0x13b5a9){const _0x28a995=_0x28a9();return _0x2951=function(_0x29517e,_0x54b0df){_0x29517e=_0x29517e-0xbd;let _0x4baf9c=_0x28a995[_0x29517e];return _0x4baf9c;},_0x2951(_0x2fed7a,_0x13b5a9);}const errors_1=require('../../modules/errors'),collator_1=require('../../types/collator');class CollatorService{static['assertJobActive'](_0x1b4832,_0x59315d,_0x843173,_0x24abe9=0x0){if(_0x1b4832<=_0x24abe9)throw new errors_1['InactiveJobError'](_0x59315d,_0x1b4832,_0x843173);}static['getDimensionalAddress'](_0x57ab34,_0x25bb62=![]){let _0x3a38a3=_0x57ab34['context']['metadata']['dad']||_0x57ab34['metadata']['dad'];return _0x25bb62&&_0x3a38a3&&_0x57ab34['leg']===0x2&&(_0x3a38a3=_0x3a38a3['substring'](0x0,_0x3a38a3['lastIndexOf'](','))+',0'),CollatorService['getDimensionsById']([..._0x57ab34['config']['ancestors'],_0x57ab34['metadata']['aid']],_0x3a38a3);}static['resolveReentryDimension'](_0x1c36b0){const _0x26f9e4=_0x1c36b0['config']['ancestor'],_0x5626a3=_0x1c36b0['config']['ancestors'],_0x210378=_0x5626a3['indexOf'](_0x26f9e4),_0x449d14=_0x1c36b0['metadata']['dad']['split'](',');return _0x449d14['length']=_0x210378+0x1,_0x449d14['push']('0'),_0x449d14['join'](',');}static async['notarizeEntry'](_0x55dd0b,_0x508317){const _0x4172cc=await _0x55dd0b['store']['collate'](_0x55dd0b['context']['metadata']['jid'],_0x55dd0b['metadata']['aid'],-0x5af3107a4000,this['getDimensionalAddress'](_0x55dd0b),_0x508317);return this['verifyInteger'](_0x4172cc,0x1,'enter'),_0x4172cc;}static async['authorizeReentry'](_0x4f301e,_0x3648d6){const _0x1ba200=await _0x4f301e['store']['collate'](_0x4f301e['context']['metadata']['jid'],_0x4f301e['metadata']['aid'],-0x9184e72a000,this['getDimensionalAddress'](_0x4f301e),_0x3648d6);return _0x1ba200;}static async['notarizeEarlyExit'](_0x27187e,_0x4c996d){return await _0x27187e['store']['collate'](_0x27187e['context']['metadata']['jid'],_0x27187e['metadata']['aid'],-0xa012317b000,this['getDimensionalAddress'](_0x27187e),_0x4c996d);}static async['notarizeEarlyCompletion'](_0x27c1e0,_0x1cb5e4){const _0x4b98a4=_0x27c1e0['config']['cycle']?0x9184e72a000:0xa012317b000;return await _0x27c1e0['store']['collate'](_0x27c1e0['context']['metadata']['jid'],_0x27c1e0['metadata']['aid'],0xf4241-_0x4b98a4,this['getDimensionalAddress'](_0x27c1e0),_0x1cb5e4);}static async['notarizeInception'](_0x3f81ac,_0x411807,_0x357a9d){_0x411807&&await _0x3f81ac['store']['collateSynthetic'](_0x3f81ac['context']['metadata']['jid'],_0x411807,0xf4240,_0x357a9d);}static async['isInceptionOverage'](_0x446cf2,_0x251179){if(_0x251179){const _0x34202d=await _0x446cf2['store']['collateSynthetic'](_0x446cf2['context']['metadata']['jid'],_0x251179,0xf4240);return _0x34202d>0xf4240;}return![];}static async['notarizeReentry'](_0x565639,_0xff0fd9,_0x34a493){const _0x7f2d4d=_0x565639['context']['metadata']['jid'],_0x45582d=_0x34a493||_0x565639['store']['getMulti']();await _0x565639['store']['collate'](_0x7f2d4d,_0x565639['metadata']['aid'],0xf4240,this['getDimensionalAddress'](_0x565639,!![]),_0x45582d),await _0x565639['store']['collateSynthetic'](_0x7f2d4d,_0xff0fd9,0xf4240,_0x45582d);const [_0x1351fc,_0x57a207]=await _0x45582d['exec'](),_0x1882af=Array['isArray'](_0x1351fc)?_0x1351fc[0x1]:_0x1351fc,_0x4a993c=Array['isArray'](_0x57a207)?_0x57a207[0x1]:_0x57a207;return this['verifyInteger'](_0x1882af,0x2,'enter'),this['verifySyntheticInteger'](_0x4a993c),_0x1882af;}static async['notarizeContinuation'](_0x13d2f3,_0x27e49d){return await _0x13d2f3['store']['collate'](_0x13d2f3['context']['metadata']['jid'],_0x13d2f3['metadata']['aid'],0x1,this['getDimensionalAddress'](_0x13d2f3),_0x27e49d);}static async['notarizeCompletion'](_0x4ec5e3,_0x24b241){const _0x4a078f=_0x4ec5e3['config']['cycle']?0x0:0xe8d4a51000;return await _0x4ec5e3['store']['collate'](_0x4ec5e3['context']['metadata']['jid'],_0x4ec5e3['metadata']['aid'],0x1-_0x4a078f,this['getDimensionalAddress'](_0x4ec5e3),_0x24b241);}static['getDigitAtIndex'](_0x9aac95,_0x590582){const _0x39ecf6=_0x9aac95['toString']();if(_0x590582<0x0||_0x590582>=_0x39ecf6['length'])return null;const _0x59cced=parseInt(_0x39ecf6[_0x590582],0xa);return _0x59cced;}static['getDimensionalIndex'](_0x9d0bc){const _0x3572b6=_0x9d0bc['toString']();if(_0x3572b6['length']<0x9)return null;const _0x46f3af=_0x3572b6['substring'](0x3,0x9),_0x310dab=parseInt(_0x46f3af,0xa);return _0x310dab-0x1;}static['isDuplicate'](_0xdbe646,_0x5e6fdc){return this['getDigitAtIndex'](_0xdbe646,_0x5e6fdc)<0x8;}static['isInactive'](_0x5ab053){return this['getDigitAtIndex'](_0x5ab053,0x2)<0x9;}static['isPrimed'](_0x113411,_0x19291b){return _0x19291b==0x1?_0x113411!=-0x5af3107a4000:this['getDigitAtIndex'](_0x113411,0x0)<0x9&&this['getDigitAtIndex'](_0x113411,0x1)<0x9;}static['verifySyntheticInteger'](_0x414689){const _0x56235a=_0x414689['toString'](),_0x4991e5=parseInt(_0x56235a[_0x56235a['length']-0x1],0xa);if(_0x4991e5>0x0)throw new errors_1['CollationError'](_0x414689,0x2,'enter',collator_1['CollationFaultType']['INACTIVE']);else{if(_0x414689>=0x1e8480)throw new errors_1['CollationError'](_0x414689,0x2,'enter',collator_1['CollationFaultType']['DUPLICATE']);}}static['verifyInteger'](_0x5a613a,_0x8403cd,_0x57e3ee){let _0x569ac0;if(_0x8403cd===0x1&&_0x57e3ee==='enter'){if(!this['isPrimed'](_0x5a613a,0x1))_0x569ac0=collator_1['CollationFaultType']['MISSING'];else{if(this['isDuplicate'](_0x5a613a,0x0))_0x569ac0=collator_1['CollationFaultType']['DUPLICATE'];else _0x5a613a!=0x331a2bfa73000&&(_0x569ac0=collator_1['CollationFaultType']['INVALID']);}}else{if(_0x8403cd===0x1&&_0x57e3ee==='exit'){if(_0x5a613a===-0x9184e72a000)_0x569ac0=collator_1['CollationFaultType']['MISSING'];else this['isDuplicate'](_0x5a613a,0x1)&&(_0x569ac0=collator_1['CollationFaultType']['DUPLICATE']);}else{if(_0x8403cd===0x2&&_0x57e3ee==='enter'){if(!this['isPrimed'](_0x5a613a,0x2))_0x569ac0=collator_1['CollationFaultType']['FORBIDDEN'];else this['isInactive'](_0x5a613a)&&(_0x569ac0=collator_1['CollationFaultType']['INACTIVE']);}}}if(_0x569ac0)throw new errors_1['CollationError'](_0x5a613a,_0x8403cd,_0x57e3ee,_0x569ac0);}static['getDimensionsById'](_0x490889,_0x1eab5c){const _0x41beb1={'$ADJACENT':_0x1eab5c+',0'};let _0x39d6f4=_0x1eab5c;return _0x490889['reverse']()['forEach'](_0x46fd73=>{_0x41beb1[_0x46fd73]=_0x39d6f4,_0x39d6f4=_0x39d6f4['substring'](0x0,_0x39d6f4['lastIndexOf'](','));}),_0x41beb1;}static['getSeed'](){return'999000000000000';}static['getTriggerSeed'](){return'888000001000001';}static['compile'](_0x27fafd){CollatorService['bindAncestorArray'](_0x27fafd);}static['bindAncestorArray'](_0x132b32){_0x132b32['forEach'](_0x18cb21=>{const _0x3e88da={},_0x438bdc=Object['keys'](_0x18cb21['activities'])['find'](_0x6d6c33=>_0x18cb21['activities'][_0x6d6c33]['type']==='trigger');if(!_0x438bdc)throw new Error('collator-trigger-activity-not-found');const _0x3959e3=(_0x302685,_0x3917e8)=>{_0x3e88da[_0x302685]=_0x3917e8,_0x18cb21['activities'][_0x302685]['ancestors']=_0x3917e8;const _0x1a8d82=_0x18cb21['transitions']?.[_0x302685]||[];_0x1a8d82['forEach'](_0x384d0b=>{_0x3959e3(_0x384d0b['to'],[..._0x3917e8,_0x302685]);});};_0x3959e3(_0x438bdc,[]);});}static['getDimensionalSeed'](_0x40ea5f=0x0){return','+_0x40ea5f;}}function _0x28a9(){const _0x22ffb9=['692320WZBLrK','2278902eUCUcY','45dmzOlt','437848hHmnaL','4741077rhSCYS','1778135XCaSjb','14luvisN','194368dhfNvL','5545884CxQvYj'];_0x28a9=function(){return _0x22ffb9;};return _0x28a9();}exports['CollatorService']=CollatorService,CollatorService['targetLength']=0xf;
|
|
@@ -2,11 +2,13 @@ import { StoreService } from '../store';
|
|
|
2
2
|
import { HotMeshGraph, HotMeshManifest } from '../../types/hotmesh';
|
|
3
3
|
import { RedisClient, RedisMulti } from '../../types/redis';
|
|
4
4
|
import { Symbols } from '../../types/serializer';
|
|
5
|
+
import { StreamService } from '../stream';
|
|
5
6
|
declare class Deployer {
|
|
6
7
|
manifest: HotMeshManifest | null;
|
|
7
8
|
store: StoreService<RedisClient, RedisMulti> | null;
|
|
9
|
+
stream: StreamService<RedisClient, RedisMulti> | null;
|
|
8
10
|
constructor(manifest: HotMeshManifest);
|
|
9
|
-
deploy(store: StoreService<RedisClient, RedisMulti>): Promise<void>;
|
|
11
|
+
deploy(store: StoreService<RedisClient, RedisMulti>, stream: StreamService<RedisClient, RedisMulti>): Promise<void>;
|
|
10
12
|
getVID(): {
|
|
11
13
|
id: string;
|
|
12
14
|
version: string;
|