woonplan-packages-redishelper 2.1.1 → 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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "woonplan-packages-redishelper",
3
- "version": "2.1.01",
3
+ "version": "2.1.4",
4
4
  "description": "",
5
5
  "author": "Jasper Denk <jasper@e-trias.nl>",
6
6
  "repository": "https://github.com/e-trias/woonplan-packages-redishelper.git",
@@ -23,7 +23,7 @@
23
23
  "semver": "~7.5.2"
24
24
  },
25
25
  "dependencies": {
26
- "@e-trias/woonplan": "1.1.67",
26
+ "@e-trias/woonplan": "1.3.36",
27
27
  "@types/jest": "^29.2.6",
28
28
  "@types/node": "^18.11.18",
29
29
  "@types/pg": "^8.6.6",
package/build/types.d.ts DELETED
@@ -1,54 +0,0 @@
1
-
2
- import { Broker } from "./main";
3
- interface JsonStringifiedMap{
4
- dataType : 'Map',
5
- value : any[]
6
- }
7
-
8
- interface RedisMessage{
9
- [index: string]: any;
10
- }
11
- interface Struct{
12
- [index: string]: any;
13
- }
14
-
15
- interface RedisConfig{
16
- REDISURL: string | number | undefined
17
- REDISPW: string | undefined
18
- }
19
-
20
- interface RedisStreamEntry{
21
- id : string
22
- message:RedisMessage
23
- }
24
-
25
- type StreamMessage = [
26
- string, StreamMessageParameters
27
- ]
28
-
29
- type StreamMessageParameters = string[]
30
- type StreamResponse = [
31
- string, StreamMessage[]
32
- ]
33
-
34
- interface DecypheredParameters{
35
- [index:string] : string | number
36
- }
37
-
38
- interface DecypheredMessage{
39
- id : string
40
- parameters : DecypheredParameters
41
- }
42
-
43
- interface DecypheredResponse{
44
- stream : string,
45
- messages : DecypheredMessage[]
46
- }
47
-
48
- interface RollbarConfig{
49
- accessToken : string
50
- environment : string
51
- }
52
-
53
-
54
- export { RollbarConfig,DecypheredResponse,DecypheredMessage, DecypheredParameters, StreamMessage, StreamResponse, Struct, JsonStringifiedMap, RedisConfig, Broker }
@@ -1,63 +0,0 @@
1
- /// <reference types="node" />
2
- import IORedis, { Redis } from "ioredis";
3
- import Rollbar from "rollbar";
4
- import Listener from "./Listener";
5
- import { DecypheredMessage, DecypheredParameters, DecypheredResponse, RedisConfig, RollbarConfig, StreamMessage, StreamResponse, Struct } from "../types";
6
- type Rejector = (reason?: any) => void;
7
- type Resolver = (value?: any) => void;
8
- export default class Broker {
9
- redisConfig: RedisConfig;
10
- rollbar?: Rollbar;
11
- consumername: string;
12
- listeners: Map<string, Listener>;
13
- writer: Redis;
14
- reader: Redis;
15
- listprefix: string;
16
- service: string;
17
- subscriptions: string[];
18
- rejectors: Map<string, Rejector>;
19
- resolvers: Map<string, Resolver>;
20
- timeouts: Map<string, NodeJS.Timeout>;
21
- requestendpoint?: Function;
22
- constructor(redisConfig: RedisConfig, rollbarConfig: RollbarConfig, service: string, consumer: string);
23
- get requeststream(): string;
24
- getRequestStream(service: string): string;
25
- createClient(): IORedis;
26
- createSetWatcher(setname: string, callback: Function, finishedCallback?: Function, itemsPerCall?: number): void;
27
- setRequestEndpoint(callback: Function): this;
28
- getRequestCallback(callback: Function): (id: string, parameters: DecypheredParameters) => Promise<number | null>;
29
- publish(channel: string, result: string): Promise<number>;
30
- createGroup(stream: string, group: string): Promise<void>;
31
- addListener(stream: string, callback: Function, group?: string, deleteOnCompletion?: boolean): this;
32
- createListener(client: Redis, stream: string, callback: Function, group?: string, deleteOnCompletion?: boolean): Promise<void>;
33
- addListListener(event: string, callback: Function, finishedevent?: string, itemsPerCall?: number): this;
34
- getList(listname: string, start?: number, stop?: number): Promise<string[]>;
35
- getSet(listname: string): Promise<string[]>;
36
- throwError(error: Error): void;
37
- sendMessage(stream: string, data: Struct): Promise<string | null>;
38
- sendMessageAndSubscribeForResponse(channel: string, target: string, messagedata: Struct, n?: number): Promise<unknown>;
39
- getRequest(targetservice: string, key: string, data: Struct, timeout?: number): Promise<unknown>;
40
- getApiRequest(endpoint: string, method: "GET" | "POST" | "PUT" | "DELETE", data: {}, jwt?: string, timeout?: number): Promise<unknown>;
41
- requestMessageResponse(channel: string, resolver: Resolver, rejector: Rejector, timeout: NodeJS.Timeout): void;
42
- cleanupMessageReponse(channel: string): void;
43
- onMessage(channel: string, message: any): void;
44
- unsubscribe(channel: string): void;
45
- setupTimeout(resolve: (value?: any) => void, channel: string, n?: number): NodeJS.Timeout;
46
- subscribe(channel: string): Promise<unknown>;
47
- getRequestSubscriptionName(messageid: string): string;
48
- setKey(key: string, value: any): Promise<"OK" | undefined>;
49
- readKey(key: string): Promise<string | null>;
50
- deleteKey(key: string): Promise<number | undefined>;
51
- sendListEvent(event: string, listitems: any[], data?: Struct, listname?: string): Promise<string | null | undefined>;
52
- addToSet(listitems: any[], listname?: string): Promise<string>;
53
- addToList(listitems: any[], listname?: string): Promise<string>;
54
- getListChannel(event: string): string;
55
- getStreamMessages(stream: string): Promise<DecypheredMessage[]>;
56
- getStreamInfo(stream: string, count?: number): Promise<any[] | null>;
57
- filterStream(stream: string, key: string, value: any): Promise<DecypheredMessage[]>;
58
- decypherResponse(...responses: StreamResponse[]): DecypheredResponse[];
59
- decyperMessages(messages: StreamMessage[]): DecypheredMessage[];
60
- decypherParameters(parameters: string[]): DecypheredParameters;
61
- isSetPickedUp(setname: string): Promise<boolean>;
62
- }
63
- export {};
@@ -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":";;AAIA,MAA8B,YAAY;IAQxC,YAAa,MAAa,EAAE,MAAY,EAAE,QAAiB,EAAE,SAAuB,IAAI,EAAE,QAAuB,IAAI,EAAE,qBAA+B,KAAK;QAL3J,UAAK,GAAmB,IAAI,CAAA;QAC5B,WAAM,GAAmB,IAAI,CAAA;QAE7B,uBAAkB,GAAW,KAAK,CAAA;QAGhC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAA;QAE5C,IAAI,CAAC,cAAc,CAAC,IAAI,CAAE,IAAI,CAAE,CAAA;IAClC,CAAC;IAED,UAAU,CAAE,KAAS;QACnB,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAE,KAAK,CAAE,CAAA;IACxC,CAAC;IAED,gBAAgB,CAAE,GAAG,SAA0B;QAC7C,OAAO,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAE,GAAG,SAAS,CAAE,CAAA;IACrD,CAAC;IAED,KAAK,CAAC,gBAAgB;QACpB,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM;YAAG,OAAO,IAAI,CAAA;QAC7C,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAE,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,CAAuB,CAAA;IAChK,CAAC;IAED,KAAK,CAAC,WAAW,CAAE,MAAa;QAC9B,IAAI,CAAC,IAAI,CAAC,MAAM;YAAG,OAAO,IAAI,CAAA;QAC9B,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,CAAE,CAAA;IAC7E,CAAC;IAGD,KAAK,CAAC,cAAc,CAAE,SAAgB,GAAG;QACvC,MAAM,SAAS,GAAG,MAAM,CAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAE,IAAI,EAAE,MAAM,CAAE,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAE,IAAI,CAAE,CAAE,CAAA;QACpH,IAAI,CAAC,SAAS;YAAG,OAAO,IAAI,CAAA;QAE5B,MAAM,eAAe,GAAG,IAAI,CAAC,gBAAgB,CAAE,GAAG,SAAS,CAAE,CAAA;QAC7D,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAE,CAAA;QAE3D,MAAM,OAAO,CAAC,GAAG,CAAE,QAAQ,CAAC,GAAG,CAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YACjD,IAAG;gBACD,MAAM,IAAI,CAAC,cAAc,CAAE,OAAO,CAAE,CAAA;aACrC;YAAA,OAAO,CAAK,EAAE;gBACb,qBAAqB;gBACrB,IAAI,CAAC,MAAM,CAAC,UAAU,CAAE,CAAC,CAAE,CAAA;aAC5B;oBAAO;gBACN,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAE,IAAI,EAAE,OAAO,CAAC,EAAE,CAAE,CAAA;gBAE/C,IAAI,IAAI,CAAC,kBAAkB;oBACzB,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAE,IAAI,EAAE,OAAO,CAAC,EAAE,CAAE,CAAA;aAC7C;QACH,CAAC,CAAC,CAAE,CAAA;QAEJ,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAE,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAC,CAAC,CAAC,EAAE,EAAE,IAAE,GAAG,CAAE,CAAA;IAC/E,CAAC;IAED,WAAW,CAAE,EAAS;QACpB,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM;YAAG,OAAO,IAAI,CAAA;QAC7C,OAAO,CAAC,GAAG,CAAE,QAAQ,EAAE,EAAE,CAAC,CAAA;QAC1B,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,CAAG,CAAA;IACzD,CAAC;IAED,MAAM,CAAE,EAAS;QACf,IAAI,CAAC,IAAI,CAAC,MAAM;YAAG,OAAO,IAAI,CAAA;QAC9B,OAAO,CAAC,GAAG,CAAE,OAAO,EAAE,EAAE,CAAC,CAAA;QACzB,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAE,IAAI,CAAC,MAAM,EAAE,EAAE,CAAG,CAAA;IAC7C,CAAC;CAGF;AA3ED,+BA2EC"}
@@ -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"}
@@ -1,29 +0,0 @@
1
- /// <reference types="node" />
2
- import { Redis } from "ioredis";
3
- export default class SetWatcher {
4
- client: Redis;
5
- set: string;
6
- callback: Function;
7
- finishedCallback?: Function;
8
- itemsPerCall: number;
9
- atempts: number;
10
- itemsDone: number;
11
- timeout: NodeJS.Timeout | null;
12
- constructor(client: Redis, set: string, callback: Function, finishedCallback?: Function, itemsPerCall?: number);
13
- get inprogressSet(): string;
14
- get pickedUpName(): string;
15
- setup(): Promise<void>;
16
- setupTimeout(): void;
17
- cancelTimeout(): void;
18
- subscribeToSet(): Promise<unknown>;
19
- setupHandleEvent(): Redis;
20
- cleanup(): void;
21
- run(): Promise<Function | void>;
22
- removeItemsFromToDo(items: string[]): Promise<number>;
23
- removeItemsFromInProgress(items: string[]): Promise<number>;
24
- nextitems(): Promise<string[] | null>;
25
- sleep(ms: number): Promise<unknown>;
26
- addItemsToInProgress(items: string[]): Promise<string[]>;
27
- handleEvent(): Promise<void>;
28
- handleFinished(): Promise<void>;
29
- }
@@ -1,138 +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 SetWatcher {
6
- constructor(client, set, callback, finishedCallback, itemsPerCall = 1) {
7
- this.atempts = 0;
8
- this.itemsDone = 0;
9
- this.timeout = null;
10
- this.client = client;
11
- this.set = set;
12
- this.callback = callback;
13
- this.itemsPerCall = itemsPerCall;
14
- if (finishedCallback)
15
- this.finishedCallback = finishedCallback;
16
- if (this.itemsPerCall > 0 && this.set.length > 0)
17
- this.setup.call(this);
18
- }
19
- get inprogressSet() {
20
- return `${this.set}_inprogress`;
21
- }
22
- get pickedUpName() {
23
- return (0, utils_1.getSetPickedUpName)(this.set);
24
- }
25
- async setup() {
26
- console.log('setup setwatcher');
27
- const setAlreadyFilled = await this.client.scard(this.set);
28
- if (setAlreadyFilled > 0) {
29
- this.run.call(this);
30
- return;
31
- }
32
- // setup a timeout so we can cancel this client if it takes to long, we do not want to create never ending redis clients
33
- this.setupTimeout.call(this);
34
- this.subscribeToSet.call(this);
35
- this.setupHandleEvent.call(this);
36
- }
37
- setupTimeout() {
38
- this.timeout = setTimeout(() => this.cleanup.call(this), 5000);
39
- }
40
- cancelTimeout() {
41
- if (this.timeout)
42
- clearTimeout(this.timeout);
43
- }
44
- subscribeToSet() {
45
- return this.client.subscribe(`__keyspace@0__:${this.set}`);
46
- }
47
- setupHandleEvent() {
48
- return this.client.once('message', () => this.handleEvent.call(this));
49
- }
50
- cleanup() {
51
- return this.client.disconnect();
52
- }
53
- async run() {
54
- const items = await this.nextitems.call(this);
55
- if (items == null) {
56
- this.handleFinished.call(this);
57
- return;
58
- }
59
- try {
60
- await this.callback(items);
61
- }
62
- catch (e) {
63
- console.log(e);
64
- }
65
- finally {
66
- await this.removeItemsFromToDo.call(this, items);
67
- await this.removeItemsFromInProgress.call(this, items);
68
- this.itemsDone += items.length;
69
- return this.run.call(this);
70
- }
71
- }
72
- removeItemsFromToDo(items) {
73
- return this.client.srem(this.set, ...items);
74
- }
75
- removeItemsFromInProgress(items) {
76
- return this.client.srem(this.inprogressSet, ...items);
77
- }
78
- async nextitems() {
79
- if (this.atempts > 5)
80
- return null;
81
- const possibleItems = await this.client.srandmember(this.set, this.itemsPerCall);
82
- // add to in progress list
83
- const nextItems = await this.addItemsToInProgress.call(this, possibleItems);
84
- // if none were added, try again
85
- if (nextItems.length == 0) {
86
- this.atempts++;
87
- await this.sleep(50);
88
- return this.nextitems.call(this);
89
- }
90
- this.atempts = 0;
91
- return nextItems;
92
- }
93
- async sleep(ms) {
94
- return new Promise((resolve) => setTimeout(() => { resolve(); }, ms));
95
- }
96
- async addItemsToInProgress(items) {
97
- let itemsAdded = [];
98
- for (const n in items) {
99
- const item = items[n];
100
- // try to add to the set
101
- if (await this.client.sadd(this.inprogressSet, item)) {
102
- itemsAdded.push(item);
103
- }
104
- }
105
- return itemsAdded;
106
- }
107
- async handleEvent() {
108
- console.log('change detected');
109
- await this.client.unsubscribe();
110
- this.cancelTimeout.call(this);
111
- // register that this set has been picked up
112
- await this.client.setnx(this.pickedUpName, 1);
113
- this.run.call(this);
114
- }
115
- async handleFinished() {
116
- console.log(`finished with ${this.itemsDone} jobs`);
117
- let lock = await (0, lock_1.getLock)([`lock${this.inprogressSet}`], 2000);
118
- try {
119
- const inProgressCount = await this.client.scard(this.inprogressSet);
120
- if (inProgressCount > 0)
121
- return;
122
- const setAlreadyFinished = await this.client.setnx(`finished${this.inprogressSet}`, 1);
123
- if (!setAlreadyFinished)
124
- return;
125
- if (this.finishedCallback)
126
- this.finishedCallback();
127
- }
128
- catch (e) {
129
- throw e;
130
- }
131
- finally {
132
- this.cleanup.call(this);
133
- (0, lock_1.releaseLock)(lock);
134
- }
135
- }
136
- }
137
- exports.default = SetWatcher;
138
- //# sourceMappingURL=SetWatcher.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SetWatcher.js","sourceRoot":"","sources":["../../../src/classes/SetWatcher.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import Broker from "./classes/Broker";
2
- export { Broker };
package/dist/tsc/main.js DELETED
@@ -1,7 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Broker = void 0;
4
- const tslib_1 = require("tslib");
5
- const Broker_1 = tslib_1.__importDefault(require("./classes/Broker"));
6
- exports.Broker = Broker_1.default;
7
- //# sourceMappingURL=main.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":";;;;AAAA,sEAAqC;AAE5B,iBAFF,gBAAM,CAEE"}
@@ -1,5 +0,0 @@
1
- import { Lock, ExecutionResult } from "redlock";
2
- import { RedisConfig } from "../types";
3
- export declare const setupLock: (config: RedisConfig) => void;
4
- export declare const getLock: (resources: string[], duration: number) => Promise<Lock>;
5
- export declare const releaseLock: (lock: Lock) => Promise<ExecutionResult>;
@@ -1,36 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.releaseLock = exports.getLock = exports.setupLock = void 0;
4
- const tslib_1 = require("tslib");
5
- const ioredis_1 = tslib_1.__importDefault(require("ioredis"));
6
- const redlock_1 = tslib_1.__importDefault(require("redlock"));
7
- let redlock = null;
8
- const setupLock = (config) => {
9
- redlock = new redlock_1.default([new ioredis_1.default({ host: config.REDISURL, password: config.REDISPW })], {
10
- // The expected clock drift; for more details see:
11
- // http://redis.io/topics/distlock
12
- driftFactor: 0.01,
13
- // The max number of times Redlock will attempt to lock a resource
14
- // before erroring.
15
- retryCount: 10,
16
- // the time in ms between attempts
17
- retryDelay: 200,
18
- // the max time in ms randomly added to retries
19
- // to improve performance under high contention
20
- // see https://www.awsarchitectureblog.com/2015/03/backoff.html
21
- retryJitter: 200,
22
- // The minimum remaining time on a lock before an extension is automatically
23
- // attempted with the `using` API.
24
- automaticExtensionThreshold: 500, // time in ms
25
- });
26
- };
27
- exports.setupLock = setupLock;
28
- const getLock = async (resources, duration) => {
29
- if (!redlock)
30
- throw new Error('Lock not configured');
31
- return redlock.acquire(resources, duration);
32
- };
33
- exports.getLock = getLock;
34
- const releaseLock = async (lock) => lock.release();
35
- exports.releaseLock = releaseLock;
36
- //# sourceMappingURL=lock.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"lock.js","sourceRoot":"","sources":["../../../src/services/lock.ts"],"names":[],"mappings":";;;;AAEA,8DAA4B;AAC5B,8DAAwD;AAGxD,IAAI,OAAO,GAAkB,IAAI,CAAA;AAG1B,MAAM,SAAS,GAAG,CAAE,MAAkB,EAAE,EAAE;IAC/C,OAAO,GAAG,IAAI,iBAAO,CACnB,CAAE,IAAI,iBAAM,CAAC,EAAE,IAAI,EAAG,MAAM,CAAC,QAAkB,EAAE,QAAQ,EAAG,MAAM,CAAC,OAAO,EAAE,CAAC,CAAE,EAC/E;QACE,kDAAkD;QAClD,kCAAkC;QAClC,WAAW,EAAE,IAAI;QAEjB,kEAAkE;QAClE,mBAAmB;QACnB,UAAU,EAAE,EAAE;QAEd,kCAAkC;QAClC,UAAU,EAAE,GAAG;QAEf,+CAA+C;QAC/C,+CAA+C;QAC/C,+DAA+D;QAC/D,WAAW,EAAE,GAAG;QAEhB,4EAA4E;QAC5E,kCAAkC;QAClC,2BAA2B,EAAE,GAAG,EAAE,aAAa;KAChD,CACF,CAAA;AACH,CAAC,CAAA;AAzBY,QAAA,SAAS,aAyBrB;AAEM,MAAM,OAAO,GAAG,KAAK,EAAG,SAAoB,EAAE,QAAe,EAAiB,EAAE;IACrF,IAAI,CAAC,OAAO;QAAG,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAA;IACrD,OAAO,OAAO,CAAC,OAAO,CAAE,SAAS,EAAE,QAAQ,CAAE,CAAA;AAC/C,CAAC,CAAA;AAHY,QAAA,OAAO,WAGnB;AAEM,MAAM,WAAW,GAAG,KAAK,EAAG,IAAS,EAA4B,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAA;AAA5E,QAAA,WAAW,eAAiE"}
@@ -1,15 +0,0 @@
1
- import { JsonStringifiedMap, Struct } from "../types";
2
- declare const isJSON: (str: any) => boolean;
3
- interface ObjectToOmitFrom {
4
- [index: string]: any;
5
- }
6
- declare const omit: (objectToOmitFrom: ObjectToOmitFrom, keys: (keyof ObjectToOmitFrom)[]) => {};
7
- declare const mapJsonReplacer: (_key: any, value: Map<any, any> | any) => any;
8
- declare const mapJsonReviver: (_key: any, value: JsonStringifiedMap | any) => any;
9
- declare const stringifyMap: (map: Map<any, any>) => string;
10
- declare const parseMap: (json: string) => Map<any, any>;
11
- declare const capitalizeFirstLetter: (string: string) => string;
12
- declare const createRedisMessage: (struct: Struct) => string[];
13
- declare const sanitizeValue: (value: any) => any;
14
- export declare const getSetPickedUpName: (setname: string) => string;
15
- export { isJSON, omit, mapJsonReviver, stringifyMap, parseMap, createRedisMessage, sanitizeValue, mapJsonReplacer, capitalizeFirstLetter };
@@ -1,63 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.capitalizeFirstLetter = exports.mapJsonReplacer = exports.sanitizeValue = exports.createRedisMessage = exports.parseMap = exports.stringifyMap = exports.mapJsonReviver = exports.omit = exports.isJSON = exports.getSetPickedUpName = void 0;
4
- const class_validator_1 = require("class-validator");
5
- const types_1 = require("util/types");
6
- const isJSON = (str) => {
7
- if (typeof str == 'number')
8
- return false;
9
- try {
10
- JSON.parse(str);
11
- }
12
- catch (error) {
13
- return false;
14
- }
15
- return true;
16
- };
17
- exports.isJSON = isJSON;
18
- const omit = (objectToOmitFrom, keys) => Object.keys(objectToOmitFrom)
19
- .filter(key => keys.indexOf(key) == -1)
20
- .reduce((struct, key) => Object.assign(struct, { [key]: objectToOmitFrom[key] }), {});
21
- exports.omit = omit;
22
- const mapJsonReplacer = (_key, value) => {
23
- if (value instanceof Map) {
24
- return {
25
- dataType: 'Map',
26
- value: Array.from(value.entries()), // or with spread: value: [...value]
27
- };
28
- }
29
- else {
30
- return value;
31
- }
32
- };
33
- exports.mapJsonReplacer = mapJsonReplacer;
34
- const mapJsonReviver = (_key, value) => {
35
- if (typeof value === 'object' && value !== null) {
36
- if (value.dataType === 'Map') {
37
- return new Map(value.value);
38
- }
39
- }
40
- return value;
41
- };
42
- exports.mapJsonReviver = mapJsonReviver;
43
- const stringifyMap = (map) => JSON.stringify(map, exports.mapJsonReplacer);
44
- exports.stringifyMap = stringifyMap;
45
- const parseMap = (json) => JSON.parse(json, exports.mapJsonReviver);
46
- exports.parseMap = parseMap;
47
- const capitalizeFirstLetter = (string) => string.charAt(0).toUpperCase() + string.slice(1);
48
- exports.capitalizeFirstLetter = capitalizeFirstLetter;
49
- const createRedisMessage = (struct) => Object.keys(struct).reduce((arr, key) => [...arr, key, sanitizeValue(struct[key])], []);
50
- exports.createRedisMessage = createRedisMessage;
51
- const sanitizeValue = (value) => {
52
- if ((0, types_1.isMap)(value))
53
- return stringifyMap(value);
54
- if ((0, class_validator_1.isObject)(value))
55
- return JSON.stringify(value);
56
- if ((0, class_validator_1.isArray)(value))
57
- return JSON.stringify(value);
58
- return value;
59
- };
60
- exports.sanitizeValue = sanitizeValue;
61
- const getSetPickedUpName = (setname) => `${setname}_pickedup`;
62
- exports.getSetPickedUpName = getSetPickedUpName;
63
- //# sourceMappingURL=utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/services/utils.ts"],"names":[],"mappings":"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"}