woonplan-packages-redishelper 2.1.3 → 2.1.4

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 (36) hide show
  1. package/package.json +2 -2
  2. package/build/types.d.ts +0 -54
  3. package/dist/tsc/__tests__/Broker.test.d.ts +0 -1
  4. package/dist/tsc/__tests__/Broker.test.js +0 -172
  5. package/dist/tsc/__tests__/Broker.test.js.map +0 -1
  6. package/dist/tsc/__tests__/Listener.test.d.ts +0 -1
  7. package/dist/tsc/__tests__/Listener.test.js +0 -58
  8. package/dist/tsc/__tests__/Listener.test.js.map +0 -1
  9. package/dist/tsc/classes/Broker.d.ts +0 -63
  10. package/dist/tsc/classes/Broker.js +0 -343
  11. package/dist/tsc/classes/Broker.js.map +0 -1
  12. package/dist/tsc/classes/BrokerClient.d.ts +0 -20
  13. package/dist/tsc/classes/BrokerClient.js +0 -68
  14. package/dist/tsc/classes/BrokerClient.js.map +0 -1
  15. package/dist/tsc/classes/ListListener.d.ts +0 -10
  16. package/dist/tsc/classes/ListListener.js +0 -22
  17. package/dist/tsc/classes/ListListener.js.map +0 -1
  18. package/dist/tsc/classes/ListRunner.d.ts +0 -19
  19. package/dist/tsc/classes/ListRunner.js +0 -90
  20. package/dist/tsc/classes/ListRunner.js.map +0 -1
  21. package/dist/tsc/classes/Listener.d.ts +0 -8
  22. package/dist/tsc/classes/Listener.js +0 -14
  23. package/dist/tsc/classes/Listener.js.map +0 -1
  24. package/dist/tsc/classes/SetWatcher.d.ts +0 -29
  25. package/dist/tsc/classes/SetWatcher.js +0 -138
  26. package/dist/tsc/classes/SetWatcher.js.map +0 -1
  27. package/dist/tsc/main.d.ts +0 -2
  28. package/dist/tsc/main.js +0 -7
  29. package/dist/tsc/main.js.map +0 -1
  30. package/dist/tsc/services/lock.d.ts +0 -5
  31. package/dist/tsc/services/lock.js +0 -36
  32. package/dist/tsc/services/lock.js.map +0 -1
  33. package/dist/tsc/services/utils.d.ts +0 -15
  34. package/dist/tsc/services/utils.js +0 -63
  35. package/dist/tsc/services/utils.js.map +0 -1
  36. package/dist/tsc/types.d.ts +0 -54
@@ -1,343 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const tslib_1 = require("tslib");
4
- const class_validator_1 = require("class-validator");
5
- const ioredis_1 = tslib_1.__importDefault(require("ioredis"));
6
- const rollbar_1 = tslib_1.__importDefault(require("rollbar"));
7
- const utils_1 = require("../services/utils");
8
- const Listener_1 = tslib_1.__importDefault(require("./Listener"));
9
- const ListListener_1 = tslib_1.__importDefault(require("./ListListener"));
10
- const crypto_1 = require("crypto");
11
- const lock_1 = require("../services/lock");
12
- const SetWatcher_1 = tslib_1.__importDefault(require("./SetWatcher"));
13
- class Broker {
14
- constructor(redisConfig, rollbarConfig, service, consumer) {
15
- this.consumername = '';
16
- this.listeners = new Map();
17
- this.listprefix = 'listUpdated';
18
- this.subscriptions = [];
19
- this.rejectors = new Map;
20
- this.resolvers = new Map;
21
- this.timeouts = new Map;
22
- this.redisConfig = redisConfig;
23
- this.rollbar = new rollbar_1.default({
24
- accessToken: rollbarConfig.accessToken,
25
- environment: rollbarConfig.environment,
26
- });
27
- this.writer = new ioredis_1.default({
28
- host: redisConfig.REDISURL,
29
- password: redisConfig.REDISPW ?? ''
30
- });
31
- this.reader = new ioredis_1.default({
32
- host: redisConfig.REDISURL,
33
- password: redisConfig.REDISPW ?? ''
34
- });
35
- (0, lock_1.setupLock)(redisConfig);
36
- this.reader.on('message', (channel, message) => this.onMessage.call(this, channel, message));
37
- this.consumername = consumer;
38
- this.service = service;
39
- }
40
- get requeststream() {
41
- return this.getRequestStream(this.service);
42
- }
43
- getRequestStream(service) {
44
- return `keyRequestedFrom${(0, utils_1.capitalizeFirstLetter)(service)}Service`;
45
- }
46
- createClient() {
47
- return new ioredis_1.default({
48
- host: this.redisConfig.REDISURL,
49
- password: this.redisConfig.REDISPW ?? ''
50
- });
51
- }
52
- createSetWatcher(setname, callback, finishedCallback, itemsPerCall = 1) {
53
- new SetWatcher_1.default(this.createClient.call(this), setname, callback, finishedCallback, itemsPerCall);
54
- }
55
- setRequestEndpoint(callback) {
56
- this.addListener(this.requeststream, this.getRequestCallback(callback), this.service);
57
- this.addListener(this.requeststream, this.getRequestCallback(callback), this.service);
58
- this.addListener(this.requeststream, this.getRequestCallback(callback), this.service);
59
- this.addListener(this.requeststream, this.getRequestCallback(callback), this.service);
60
- this.addListener(this.requeststream, this.getRequestCallback(callback), this.service);
61
- return this;
62
- }
63
- getRequestCallback(callback) {
64
- return async (id, parameters) => {
65
- let result = null;
66
- try {
67
- result = await callback(id, parameters);
68
- }
69
- catch (error) {
70
- this.throwError(error);
71
- result = JSON.stringify({
72
- rejected: true,
73
- error: {
74
- title: error?.message ?? ''
75
- }
76
- });
77
- }
78
- finally {
79
- if (!parameters.messageid)
80
- return null;
81
- const channel = this.getRequestSubscriptionName(parameters.messageid);
82
- return this.publish(channel, result);
83
- }
84
- };
85
- }
86
- publish(channel, result) {
87
- return this.writer.publish(channel, result);
88
- }
89
- async createGroup(stream, group) {
90
- try {
91
- await this.writer.xgroup('CREATE', stream, group, '$', 'MKSTREAM');
92
- return;
93
- }
94
- catch {
95
- return;
96
- }
97
- }
98
- addListener(stream, callback, group, deleteOnCompletion = false) {
99
- const client = new ioredis_1.default({
100
- host: this.redisConfig.REDISURL,
101
- password: this.redisConfig.REDISPW ?? ''
102
- });
103
- this.createListener.call(this, client, stream, callback, group, deleteOnCompletion);
104
- // dont wait for the result of create listener, just return this so we can chain
105
- return this;
106
- }
107
- async createListener(client, stream, callback, group, deleteOnCompletion = false) {
108
- if (group)
109
- await this.createGroup.call(this, stream, group);
110
- this.listeners.set(stream, new Listener_1.default(this, client, stream, callback, group, deleteOnCompletion));
111
- console.log(`redishelper : listener added for ${stream}`);
112
- }
113
- addListListener(event, callback, finishedevent = '', itemsPerCall = 1) {
114
- const client = new ioredis_1.default({
115
- host: this.redisConfig.REDISURL,
116
- password: this.redisConfig.REDISPW ?? ''
117
- });
118
- const channel = this.getListChannel(event);
119
- this.listeners.set(channel, new ListListener_1.default(this, client, channel, callback, finishedevent, itemsPerCall));
120
- console.log(`redishelper : listlistener added for ${channel}`);
121
- return this;
122
- }
123
- async getList(listname, start = 0, stop = -1) {
124
- const list = await this.reader.lrange(listname, start, stop);
125
- return list;
126
- }
127
- async getSet(listname) {
128
- const set = await this.reader.smembers(listname);
129
- return set;
130
- }
131
- throwError(error) {
132
- if (!this.rollbar)
133
- throw new Error('Rollbar not initialized');
134
- this.rollbar.error(error);
135
- }
136
- sendMessage(stream, data) {
137
- let msg = '';
138
- if (data.request)
139
- msg = data.request;
140
- if (data.endpoint)
141
- msg = data.endpoint;
142
- console.log(`sending message : ${msg} to ${stream}`);
143
- return this.writer.xadd(stream, '*', ...(0, utils_1.createRedisMessage)(data));
144
- }
145
- async sendMessageAndSubscribeForResponse(channel, target, messagedata, n = 2000) {
146
- await this.subscribe(channel);
147
- // send the message to the correct service
148
- this.sendMessage(target, messagedata);
149
- let resolver;
150
- let rejecter;
151
- // create a promise to be able to pass on to resolve later
152
- const promise = new Promise((r, rj) => {
153
- resolver = r;
154
- rejecter = rj;
155
- });
156
- if (!resolver || !rejecter)
157
- return null;
158
- //setup a timeout
159
- const timeout = this.setupTimeout(resolver, channel, n);
160
- //setup a response
161
- this.requestMessageResponse(channel, resolver, rejecter, timeout);
162
- // return a promise that will resolve when the message returns or times out
163
- return promise;
164
- }
165
- async getRequest(targetservice, key, data, timeout = 2000) {
166
- // create a message id to subscribe to
167
- const messageid = (0, crypto_1.randomUUID)();
168
- //subscribe to message response
169
- const channel = this.getRequestSubscriptionName(messageid);
170
- return this.sendMessageAndSubscribeForResponse.call(this, channel, this.getRequestStream(targetservice), {
171
- request: key,
172
- messageid: messageid,
173
- data: (0, utils_1.sanitizeValue)(data)
174
- }, timeout);
175
- }
176
- async getApiRequest(endpoint, method, data, jwt = '', timeout = 2000) {
177
- // create a message id to subscribe to
178
- const messageid = (0, crypto_1.randomUUID)();
179
- //subscribe to message response
180
- const channel = this.getRequestSubscriptionName(messageid);
181
- return this.sendMessageAndSubscribeForResponse.call(this, channel, this.getRequestStream('api'), {
182
- endpoint: endpoint,
183
- method: method,
184
- messageid: messageid,
185
- data: data,
186
- jwt: jwt
187
- }, timeout);
188
- }
189
- requestMessageResponse(channel, resolver, rejector, timeout) {
190
- this.resolvers.set(channel, resolver);
191
- this.rejectors.set(channel, rejector);
192
- this.timeouts.set(channel, timeout);
193
- }
194
- cleanupMessageReponse(channel) {
195
- this.resolvers.delete(channel);
196
- this.rejectors.delete(channel);
197
- this.timeouts.delete(channel);
198
- }
199
- onMessage(channel, message) {
200
- const rejector = this.rejectors.get(channel);
201
- const resolver = this.resolvers.get(channel);
202
- const timeout = this.timeouts.get(channel);
203
- if (!rejector || !resolver || !timeout) {
204
- this.cleanupMessageReponse.call(this, channel);
205
- return;
206
- }
207
- // check if the request has been rejected
208
- if ((0, class_validator_1.isJSON)(message)) {
209
- const resolvemessage = JSON.parse(message);
210
- if (typeof resolvemessage == 'object' &&
211
- resolvemessage.rejected !== undefined &&
212
- (0, class_validator_1.isBoolean)(resolvemessage.rejected) &&
213
- resolvemessage.rejected === true) {
214
- console.log(resolvemessage);
215
- if (resolvemessage.error !== undefined &&
216
- typeof resolvemessage.error == 'object' &&
217
- resolvemessage.error.title !== undefined && (0, class_validator_1.isString)(resolvemessage.error.title)) {
218
- rejector(resolvemessage.error.title);
219
- }
220
- else {
221
- rejector('unknown-reason');
222
- }
223
- clearTimeout(timeout);
224
- return;
225
- }
226
- }
227
- if (message.length)
228
- resolver(message);
229
- else
230
- resolver(null);
231
- this.unsubscribe(channel);
232
- clearTimeout(timeout);
233
- }
234
- unsubscribe(channel) {
235
- this.reader.unsubscribe(channel);
236
- this.subscriptions = this.subscriptions.filter(s => s != channel);
237
- }
238
- setupTimeout(resolve, channel, n = 2000) {
239
- return setTimeout(() => {
240
- if (!this.subscriptions.includes(channel))
241
- return;
242
- console.log(`sub timedout: ${channel}`);
243
- resolve(null);
244
- this.unsubscribe(channel);
245
- }, n);
246
- }
247
- subscribe(channel) {
248
- this.subscriptions.push(channel);
249
- return this.reader.subscribe(channel);
250
- }
251
- getRequestSubscriptionName(messageid) {
252
- return `messageresponse${messageid}`;
253
- }
254
- async setKey(key, value) {
255
- try {
256
- return await this.writer.set(key, (0, utils_1.sanitizeValue)(value));
257
- }
258
- catch { }
259
- return;
260
- }
261
- async readKey(key) {
262
- try {
263
- return await this.writer.get(key);
264
- }
265
- catch { }
266
- return null;
267
- }
268
- async deleteKey(key) {
269
- try {
270
- return await this.writer.del(key);
271
- }
272
- catch { }
273
- return;
274
- }
275
- async sendListEvent(event, listitems, data = {}, listname = "") {
276
- if (listitems.length == 0)
277
- return;
278
- // if a listname exist, we first empty it
279
- if (listname.length > 0)
280
- await this.deleteKey.call(this, listname);
281
- const list = await this.addToSet.call(this, listitems, listname.length > 0 ? listname : undefined);
282
- return this.sendMessage(this.getListChannel(event), {
283
- ...data,
284
- listname: list
285
- });
286
- }
287
- async addToSet(listitems, listname) {
288
- const list = listname ?? (0, crypto_1.randomUUID)();
289
- await this.writer.sadd(list, ...listitems.map(utils_1.sanitizeValue));
290
- return list;
291
- }
292
- async addToList(listitems, listname) {
293
- const list = listname ?? (0, crypto_1.randomUUID)();
294
- await this.writer.lpush(list, ...listitems.map(utils_1.sanitizeValue));
295
- return list;
296
- }
297
- getListChannel(event) {
298
- return `${this.listprefix}${event}`;
299
- }
300
- async getStreamMessages(stream) {
301
- const streaminfo = await this.getStreamInfo.call(this, stream);
302
- if (!streaminfo || !(0, class_validator_1.isArray)(streaminfo) || streaminfo.length < 10)
303
- return [];
304
- const params = this.decypherParameters(streaminfo);
305
- if (!params.entries)
306
- return [];
307
- return this.decyperMessages(params.entries);
308
- }
309
- getStreamInfo(stream, count = 0) {
310
- return this.reader.xinfo('STREAM', stream, 'FULL', 'COUNT', count);
311
- }
312
- async filterStream(stream, key, value) {
313
- const messages = await this.getStreamMessages.call(this, stream);
314
- return messages.filter(message => message.parameters?.[key] != null && message.parameters[key] == value);
315
- }
316
- decypherResponse(...responses) {
317
- return responses.reduce((resp, response) => [
318
- ...resp,
319
- {
320
- stream: response[0],
321
- messages: this.decyperMessages(response[1])
322
- }
323
- ], []);
324
- }
325
- decyperMessages(messages) {
326
- return messages.map((message) => ({
327
- id: message[0],
328
- parameters: this.decypherParameters(message[1])
329
- }));
330
- }
331
- decypherParameters(parameters) {
332
- return parameters.reduce((params, v, n) => (n == 0 || (n % 2 == 0)) && parameters.length >= n + 1 ? ({
333
- ...params,
334
- [v]: parameters[n + 1]
335
- }) : params, {});
336
- }
337
- async isSetPickedUp(setname) {
338
- const pickedup = await this.reader.get((0, utils_1.getSetPickedUpName)(setname));
339
- return pickedup !== null;
340
- }
341
- }
342
- exports.default = Broker;
343
- //# sourceMappingURL=Broker.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Broker.js","sourceRoot":"","sources":["../../../src/classes/Broker.ts"],"names":[],"mappings":"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"}
@@ -1,20 +0,0 @@
1
- import { Redis } from "ioredis";
2
- import { DecypheredMessage, DecypheredResponse, StreamResponse } from "../types";
3
- import Broker from "./Broker";
4
- export default abstract class BrokerClient {
5
- broker: Broker;
6
- client: Redis;
7
- group: string | null;
8
- stream: string | null;
9
- callback: Function;
10
- deleteOnCompletion: boolean;
11
- constructor(broker: Broker, client: Redis, callback: Function, stream?: string | null, group?: string | null, deleteOnCompletion?: boolean);
12
- throwError(error: any): void;
13
- decypherResponse(...responses: StreamResponse[]): DecypheredResponse[];
14
- getGroupResponse(): Promise<StreamResponse[] | null>;
15
- getResponse(lastid: string): Promise<StreamResponse[] | null>;
16
- listenToStream(lastid?: string): Promise<Broker | null>;
17
- acknowledge(id: string): Promise<number> | null;
18
- delete(id: string): Promise<number> | null;
19
- abstract streamCallback(message: DecypheredMessage): Promise<any | null>;
20
- }
@@ -1,68 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- class BrokerClient {
4
- constructor(broker, client, callback, stream = null, group = null, deleteOnCompletion = false) {
5
- this.group = null;
6
- this.stream = null;
7
- this.deleteOnCompletion = false;
8
- this.broker = broker;
9
- this.client = client;
10
- this.stream = stream;
11
- this.group = group;
12
- this.callback = callback;
13
- this.deleteOnCompletion = deleteOnCompletion;
14
- this.listenToStream.call(this);
15
- }
16
- throwError(error) {
17
- return this.broker.throwError(error);
18
- }
19
- decypherResponse(...responses) {
20
- return this.broker.decypherResponse(...responses);
21
- }
22
- async getGroupResponse() {
23
- if (!this.group || !this.stream)
24
- return null;
25
- return await this.client.xreadgroup('GROUP', this.group, this.broker.consumername, 'COUNT', 1, 'BLOCK', 0, 'STREAMS', this.stream, '>');
26
- }
27
- async getResponse(lastid) {
28
- if (!this.stream)
29
- return null;
30
- return await this.client.xread("BLOCK", 0, "STREAMS", this.stream, lastid);
31
- }
32
- async listenToStream(lastid = '$') {
33
- const responses = await (!this.group ? this.getResponse.call(this, lastid) : this.getGroupResponse.call(this));
34
- if (!responses)
35
- return null;
36
- const streamResponses = this.decypherResponse(...responses);
37
- const messages = streamResponses.flatMap(r => r.messages);
38
- await Promise.all(messages.map(async (message) => {
39
- try {
40
- await this.streamCallback(message);
41
- }
42
- catch (e) {
43
- // report to rollbarr
44
- this.broker.throwError(e);
45
- }
46
- finally {
47
- await this.acknowledge.call(this, message.id);
48
- if (this.deleteOnCompletion)
49
- await this.delete.call(this, message.id);
50
- }
51
- }));
52
- return this.listenToStream.call(this, messages[messages.length - 1]?.id ?? '$');
53
- }
54
- acknowledge(id) {
55
- if (!this.group || !this.stream)
56
- return null;
57
- console.log(`xack ${id}`);
58
- return this.client.xack(this.stream, this.group, id);
59
- }
60
- delete(id) {
61
- if (!this.stream)
62
- return null;
63
- console.log(`del ${id}`);
64
- return this.client.xdel(this.stream, id);
65
- }
66
- }
67
- exports.default = BrokerClient;
68
- //# sourceMappingURL=BrokerClient.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BrokerClient.js","sourceRoot":"","sources":["../../../src/classes/BrokerClient.ts"],"names":[],"mappings":"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"}
@@ -1,10 +0,0 @@
1
- import { Redis } from "ioredis";
2
- import { DecypheredMessage } from "../types";
3
- import Broker from "./Broker";
4
- import BrokerClient from "./BrokerClient";
5
- export default class ListListener extends BrokerClient {
6
- finishedevent: string;
7
- itemsPerCall: number;
8
- constructor(broker: Broker, client: Redis, stream: string, callback: Function, finishedevent: string | undefined, itemsPerCall: number);
9
- streamCallback(message: DecypheredMessage): Promise<void | Function | null>;
10
- }
@@ -1,22 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const tslib_1 = require("tslib");
4
- const BrokerClient_1 = tslib_1.__importDefault(require("./BrokerClient"));
5
- const ListRunner_1 = tslib_1.__importDefault(require("./ListRunner"));
6
- class ListListener extends BrokerClient_1.default {
7
- constructor(broker, client, stream, callback, finishedevent = '', itemsPerCall) {
8
- super(broker, client, callback, stream);
9
- this.finishedevent = finishedevent;
10
- this.itemsPerCall = itemsPerCall;
11
- }
12
- async streamCallback(message) {
13
- const listrunnercallback = await this.callback(message.id, message.parameters);
14
- if (message.parameters.listname) {
15
- const runner = new ListRunner_1.default(this.client, message.parameters.listname, listrunnercallback, message.parameters, this.finishedevent, this.itemsPerCall);
16
- return await runner.run();
17
- }
18
- return null;
19
- }
20
- }
21
- exports.default = ListListener;
22
- //# sourceMappingURL=ListListener.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ListListener.js","sourceRoot":"","sources":["../../../src/classes/ListListener.ts"],"names":[],"mappings":";;;AAGA,0EAAyC;AACzC,sEAAqC;AAErC,MAAqB,YAAa,SAAQ,sBAAY;IAGpD,YAAa,MAAa,EAAE,MAAY,EAAE,MAAa,EAAE,QAAiB,EAAE,gBAAuB,EAAE,EAAE,YAAmB;QACxH,KAAK,CAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAE,CAAA;QACzC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAA;QAClC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAA;IAClC,CAAC;IAED,KAAK,CAAC,cAAc,CAAE,OAAyB;QAC7C,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAE,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,UAAU,CAAE,CAAA;QAEhF,IAAI,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE;YAC/B,MAAM,MAAM,GAAG,IAAI,oBAAU,CAAE,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,QAAkB,EAAE,kBAAkB,EAAE,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,YAAY,CAAE,CAAA;YAClK,OAAO,MAAM,MAAM,CAAC,GAAG,EAAE,CAAA;SAC1B;QAED,OAAO,IAAI,CAAA;IACb,CAAC;CACF;AAnBD,+BAmBC"}
@@ -1,19 +0,0 @@
1
- import { Redis } from "ioredis";
2
- import { DecypheredParameters } from "../types";
3
- export default class ListRunner {
4
- listname: string;
5
- itemsDone: number;
6
- itemsPerCall: number;
7
- callback: Function;
8
- client: Redis;
9
- params: DecypheredParameters;
10
- finishedevent: string;
11
- constructor(client: Redis, listname: string, callback: Function, params: DecypheredParameters, finishedevent?: string, itemsPerCall?: number);
12
- run(): Promise<Function | void>;
13
- nextitems(listname: string): Promise<string[] | null>;
14
- addItemsToInProgress(items: string[]): Promise<string[]>;
15
- get inProgressSetName(): string;
16
- handleFinished(): Promise<void>;
17
- removeItemsFromToDo(items: string[]): Promise<number>;
18
- removeItemsFromInProgress(items: string[]): Promise<number>;
19
- }
@@ -1,90 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const lock_1 = require("../services/lock");
4
- const utils_1 = require("../services/utils");
5
- class ListRunner {
6
- constructor(client, listname, callback, params, finishedevent = '', itemsPerCall = 1) {
7
- this.itemsDone = 0;
8
- this.client = client;
9
- this.callback = callback;
10
- this.listname = listname;
11
- this.itemsPerCall = itemsPerCall;
12
- this.params = params;
13
- this.finishedevent = finishedevent;
14
- }
15
- async run() {
16
- const items = await this.nextitems.call(this, this.listname);
17
- if (items == null) {
18
- await this.handleFinished.call(this);
19
- return;
20
- }
21
- try {
22
- await this.callback(items);
23
- }
24
- catch (e) {
25
- console.log(e);
26
- }
27
- finally {
28
- await this.removeItemsFromToDo.call(this, items);
29
- await this.removeItemsFromInProgress.call(this, items);
30
- this.itemsDone += items.length;
31
- return this.run.call(this);
32
- }
33
- }
34
- async nextitems(listname) {
35
- const length = await this.client.scard(listname);
36
- if (length == undefined || length == 0)
37
- return null;
38
- const possibleItems = await this.client.srandmember(listname, this.itemsPerCall);
39
- // add to in progress list
40
- const nextItems = await this.addItemsToInProgress.call(this, possibleItems);
41
- // if none were added, try again
42
- if (nextItems.length == 0)
43
- return this.nextitems.call(this, listname);
44
- return nextItems;
45
- }
46
- async addItemsToInProgress(items) {
47
- let itemsAdded = [];
48
- for (const n in items) {
49
- const item = items[n];
50
- // try to add to the set
51
- if (await this.client.sadd(this.inProgressSetName, item)) {
52
- itemsAdded.push(item);
53
- }
54
- }
55
- return itemsAdded;
56
- }
57
- get inProgressSetName() {
58
- return `${this.listname}-inprogress`;
59
- }
60
- async handleFinished() {
61
- console.log(`finished with ${this.itemsDone} jobs`);
62
- let lock = await (0, lock_1.getLock)([`lock${this.inProgressSetName}`], 2000);
63
- try {
64
- const inProgressCount = await this.client.scard(this.inProgressSetName);
65
- if (inProgressCount > 0)
66
- return;
67
- const setAlreadyFinished = await this.client.setnx(`finished${this.inProgressSetName}`, 1);
68
- if (!setAlreadyFinished)
69
- return;
70
- if (this.finishedevent && this.finishedevent.length > 0) {
71
- console.log(`sending message to ${this.finishedevent}`);
72
- await this.client.xadd(this.finishedevent, '*', ...(0, utils_1.createRedisMessage)(this.params));
73
- }
74
- }
75
- catch (e) {
76
- throw e;
77
- }
78
- finally {
79
- (0, lock_1.releaseLock)(lock);
80
- }
81
- }
82
- removeItemsFromToDo(items) {
83
- return this.client.srem(this.listname, ...items);
84
- }
85
- removeItemsFromInProgress(items) {
86
- return this.client.srem(this.inProgressSetName, ...items);
87
- }
88
- }
89
- exports.default = ListRunner;
90
- //# sourceMappingURL=ListRunner.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ListRunner.js","sourceRoot":"","sources":["../../../src/classes/ListRunner.ts"],"names":[],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- import { Redis } from "ioredis";
2
- import { DecypheredMessage } from "../types";
3
- import Broker from "./Broker";
4
- import BrokerClient from "./BrokerClient";
5
- export default class Listener extends BrokerClient {
6
- constructor(broker: Broker, client: Redis, stream: string, callback: Function, group?: string, deleteOnCompletion?: boolean);
7
- streamCallback(message: DecypheredMessage): Promise<any>;
8
- }
@@ -1,14 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const tslib_1 = require("tslib");
4
- const BrokerClient_1 = tslib_1.__importDefault(require("./BrokerClient"));
5
- class Listener extends BrokerClient_1.default {
6
- constructor(broker, client, stream, callback, group, deleteOnCompletion = false) {
7
- super(broker, client, callback, stream, group, deleteOnCompletion);
8
- }
9
- streamCallback(message) {
10
- return this.callback(message.id, message.parameters);
11
- }
12
- }
13
- exports.default = Listener;
14
- //# sourceMappingURL=Listener.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Listener.js","sourceRoot":"","sources":["../../../src/classes/Listener.ts"],"names":[],"mappings":";;;AAGA,0EAAyC;AAEzC,MAAqB,QAAS,SAAQ,sBAAY;IAChD,YAAa,MAAa,EAAE,MAAY,EAAE,MAAa,EAAE,QAAiB,EAAE,KAAe,EAAE,qBAA6B,KAAK;QAC7H,KAAK,CAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,CAAE,CAAA;IACtE,CAAC;IAED,cAAc,CAAC,OAA0B;QACvC,OAAO,IAAI,CAAC,QAAQ,CAAE,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,UAAU,CAAE,CAAA;IACxD,CAAC;CACF;AARD,2BAQC"}