woonplan-packages-redishelper 2.0.79 → 2.0.81
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/.vscode/settings.json +3 -0
- package/package.json +39 -39
- package/tsconfig.json +38 -38
- package/dist/tsc/classes/Broker.d.ts +0 -63
- package/dist/tsc/classes/Broker.js +0 -322
- package/dist/tsc/classes/Broker.js.map +0 -1
- package/dist/tsc/classes/BrokerClient.d.ts +0 -20
- package/dist/tsc/classes/BrokerClient.js +0 -68
- package/dist/tsc/classes/BrokerClient.js.map +0 -1
- package/dist/tsc/classes/ListListener.d.ts +0 -10
- package/dist/tsc/classes/ListListener.js +0 -22
- package/dist/tsc/classes/ListListener.js.map +0 -1
- package/dist/tsc/classes/ListRunner.d.ts +0 -19
- package/dist/tsc/classes/ListRunner.js +0 -90
- package/dist/tsc/classes/ListRunner.js.map +0 -1
- package/dist/tsc/classes/Listener.d.ts +0 -8
- package/dist/tsc/classes/Listener.js +0 -14
- package/dist/tsc/classes/Listener.js.map +0 -1
- package/dist/tsc/classes/SetWatcher.d.ts +0 -29
- package/dist/tsc/classes/SetWatcher.js +0 -138
- package/dist/tsc/classes/SetWatcher.js.map +0 -1
- package/dist/tsc/main.d.ts +0 -2
- package/dist/tsc/main.js +0 -7
- package/dist/tsc/main.js.map +0 -1
- package/dist/tsc/services/lock.d.ts +0 -5
- package/dist/tsc/services/lock.js +0 -36
- package/dist/tsc/services/lock.js.map +0 -1
- package/dist/tsc/services/utils.d.ts +0 -15
- package/dist/tsc/services/utils.js +0 -63
- package/dist/tsc/services/utils.js.map +0 -1
- package/dist/tsc/types.d.ts +0 -54
package/package.json
CHANGED
|
@@ -1,39 +1,39 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "woonplan-packages-redishelper",
|
|
3
|
-
"version": "2.0.
|
|
4
|
-
"description": "",
|
|
5
|
-
"author": "Jasper Denk <jasper@e-trias.nl>",
|
|
6
|
-
"repository": "https://github.com/e-
|
|
7
|
-
"license": "MIT",
|
|
8
|
-
"keywords": [],
|
|
9
|
-
"main": "./dist/tsc/main.js",
|
|
10
|
-
"types": "./dist/tsc/types.d.ts",
|
|
11
|
-
"scripts": {
|
|
12
|
-
"dev": "ts-node --esm src/main.ts",
|
|
13
|
-
"lint": "eslint src/ --ext .js,.jsx,.ts,.tsx",
|
|
14
|
-
"test": "jest",
|
|
15
|
-
"clean": "rm -rf dist build package node_modules package-lock.json && npm i && jest",
|
|
16
|
-
"ts-node": "ts-node",
|
|
17
|
-
"docs": "typedoc --entryPoints src/main.ts",
|
|
18
|
-
"build": "tsc -p tsconfig.json",
|
|
19
|
-
"start": "npm run build && node dist/tsc/main.js"
|
|
20
|
-
},
|
|
21
|
-
"dependencies": {
|
|
22
|
-
"@e-trias/woonplan": "1.
|
|
23
|
-
"@types/jest": "^
|
|
24
|
-
"@types/node": "^
|
|
25
|
-
"@types/pg": "^8.6.
|
|
26
|
-
"@typescript-eslint/eslint-plugin": "^5.
|
|
27
|
-
"@typescript-eslint/parser": "^5.
|
|
28
|
-
"class-validator": "^0.
|
|
29
|
-
"dotenv": "^16.0.
|
|
30
|
-
"ioredis": "^5.2.
|
|
31
|
-
"ioredis-mock": "^8.2.2",
|
|
32
|
-
"jest": "^
|
|
33
|
-
"redlock": "^5.0.0-beta.2",
|
|
34
|
-
"rollbar": "^2.
|
|
35
|
-
"ts-jest": "^
|
|
36
|
-
"ts-node": "^10.
|
|
37
|
-
"typescript": "^4.
|
|
38
|
-
}
|
|
39
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "woonplan-packages-redishelper",
|
|
3
|
+
"version": "2.0.81",
|
|
4
|
+
"description": "",
|
|
5
|
+
"author": "Jasper Denk <jasper@e-trias.nl>",
|
|
6
|
+
"repository": "https://github.com/e-trias/woonplan-micro-energyio",
|
|
7
|
+
"license": "MIT",
|
|
8
|
+
"keywords": [],
|
|
9
|
+
"main": "./dist/tsc/main.js",
|
|
10
|
+
"types": "./dist/tsc/types.d.ts",
|
|
11
|
+
"scripts": {
|
|
12
|
+
"dev": "ts-node --esm src/main.ts",
|
|
13
|
+
"lint": "eslint src/ --ext .js,.jsx,.ts,.tsx",
|
|
14
|
+
"test": "jest",
|
|
15
|
+
"clean": "rm -rf dist build package node_modules package-lock.json && npm i && jest",
|
|
16
|
+
"ts-node": "ts-node",
|
|
17
|
+
"docs": "typedoc --entryPoints src/main.ts",
|
|
18
|
+
"build": "tsc -p tsconfig.json",
|
|
19
|
+
"start": "npm run build && node dist/tsc/main.js"
|
|
20
|
+
},
|
|
21
|
+
"dependencies": {
|
|
22
|
+
"@e-trias/woonplan": "1.1.67",
|
|
23
|
+
"@types/jest": "^29.2.6",
|
|
24
|
+
"@types/node": "^18.11.18",
|
|
25
|
+
"@types/pg": "^8.6.6",
|
|
26
|
+
"@typescript-eslint/eslint-plugin": "^5.49.0",
|
|
27
|
+
"@typescript-eslint/parser": "^5.49.0",
|
|
28
|
+
"class-validator": "^0.14.0",
|
|
29
|
+
"dotenv": "^16.0.3",
|
|
30
|
+
"ioredis": "^5.2.5",
|
|
31
|
+
"ioredis-mock": "^8.2.2",
|
|
32
|
+
"jest": "^29.3.1",
|
|
33
|
+
"redlock": "^5.0.0-beta.2",
|
|
34
|
+
"rollbar": "^2.26.1",
|
|
35
|
+
"ts-jest": "^29.0.5",
|
|
36
|
+
"ts-node": "^10.9.1",
|
|
37
|
+
"typescript": "^4.9.4"
|
|
38
|
+
}
|
|
39
|
+
}
|
package/tsconfig.json
CHANGED
|
@@ -1,38 +1,38 @@
|
|
|
1
|
-
{
|
|
2
|
-
"compilerOptions": {
|
|
3
|
-
"target": "es2021",
|
|
4
|
-
"module": "commonjs",
|
|
5
|
-
"moduleResolution": "node",
|
|
6
|
-
"declaration": true,
|
|
7
|
-
"strict": true,
|
|
8
|
-
"noImplicitAny": true /* Raise error on expressions and declarations with an implied 'any' type. */,
|
|
9
|
-
"strictNullChecks": true /* Enable strict null checks. */,
|
|
10
|
-
"strictFunctionTypes": true /* Enable strict checking of function types. */,
|
|
11
|
-
"noUnusedLocals": true /* Report errors on unused locals. */,
|
|
12
|
-
"noUnusedParameters": true /* Report errors on unused parameters. */,
|
|
13
|
-
"noImplicitReturns": true /* Report error when not all code paths in function return a value. */,
|
|
14
|
-
"noFallthroughCasesInSwitch": true /* Report errors for fallthrough cases in switch statement. */,
|
|
15
|
-
"importHelpers": true,
|
|
16
|
-
"skipLibCheck": true,
|
|
17
|
-
"esModuleInterop": true,
|
|
18
|
-
"allowSyntheticDefaultImports": true,
|
|
19
|
-
"experimentalDecorators": true,
|
|
20
|
-
"sourceMap": true,
|
|
21
|
-
"outDir": "./dist/tsc/",
|
|
22
|
-
"types": [
|
|
23
|
-
"node",
|
|
24
|
-
"jest"
|
|
25
|
-
],
|
|
26
|
-
"lib": [
|
|
27
|
-
"ES6",
|
|
28
|
-
"DOM"
|
|
29
|
-
],
|
|
30
|
-
},
|
|
31
|
-
"include": [
|
|
32
|
-
"src/**/*.ts"
|
|
33
|
-
],
|
|
34
|
-
"exclude": [
|
|
35
|
-
"node_modules",
|
|
36
|
-
"**/*.test.ts"
|
|
37
|
-
]
|
|
38
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"target": "es2021",
|
|
4
|
+
"module": "commonjs",
|
|
5
|
+
"moduleResolution": "node",
|
|
6
|
+
"declaration": true,
|
|
7
|
+
"strict": true,
|
|
8
|
+
"noImplicitAny": true /* Raise error on expressions and declarations with an implied 'any' type. */,
|
|
9
|
+
"strictNullChecks": true /* Enable strict null checks. */,
|
|
10
|
+
"strictFunctionTypes": true /* Enable strict checking of function types. */,
|
|
11
|
+
"noUnusedLocals": true /* Report errors on unused locals. */,
|
|
12
|
+
"noUnusedParameters": true /* Report errors on unused parameters. */,
|
|
13
|
+
"noImplicitReturns": true /* Report error when not all code paths in function return a value. */,
|
|
14
|
+
"noFallthroughCasesInSwitch": true /* Report errors for fallthrough cases in switch statement. */,
|
|
15
|
+
"importHelpers": true,
|
|
16
|
+
"skipLibCheck": true,
|
|
17
|
+
"esModuleInterop": true,
|
|
18
|
+
"allowSyntheticDefaultImports": true,
|
|
19
|
+
"experimentalDecorators": true,
|
|
20
|
+
"sourceMap": true,
|
|
21
|
+
"outDir": "./dist/tsc/",
|
|
22
|
+
"types": [
|
|
23
|
+
"node",
|
|
24
|
+
"jest"
|
|
25
|
+
],
|
|
26
|
+
"lib": [
|
|
27
|
+
"ES6",
|
|
28
|
+
"DOM"
|
|
29
|
+
],
|
|
30
|
+
},
|
|
31
|
+
"include": [
|
|
32
|
+
"src/**/*.ts"
|
|
33
|
+
],
|
|
34
|
+
"exclude": [
|
|
35
|
+
"node_modules",
|
|
36
|
+
"**/*.test.ts"
|
|
37
|
+
]
|
|
38
|
+
}
|
|
@@ -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
|
-
declare type Rejector = (reason?: any) => void;
|
|
7
|
-
declare 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", data: {}, jwt?: string): 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,322 +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 uuid_1 = require("uuid");
|
|
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
|
-
return this.addListener(this.requeststream, this.getRequestCallback(callback), this.service);
|
|
57
|
-
}
|
|
58
|
-
getRequestCallback(callback) {
|
|
59
|
-
return async (id, parameters) => {
|
|
60
|
-
let result = null;
|
|
61
|
-
try {
|
|
62
|
-
result = await callback(id, parameters);
|
|
63
|
-
}
|
|
64
|
-
catch (error) {
|
|
65
|
-
this.throwError(error);
|
|
66
|
-
result = JSON.stringify({
|
|
67
|
-
rejected: true,
|
|
68
|
-
error: {
|
|
69
|
-
title: error?.message ?? ''
|
|
70
|
-
}
|
|
71
|
-
});
|
|
72
|
-
}
|
|
73
|
-
finally {
|
|
74
|
-
if (!parameters.messageid)
|
|
75
|
-
return null;
|
|
76
|
-
const channel = this.getRequestSubscriptionName(parameters.messageid);
|
|
77
|
-
return this.publish(channel, result);
|
|
78
|
-
}
|
|
79
|
-
};
|
|
80
|
-
}
|
|
81
|
-
publish(channel, result) {
|
|
82
|
-
return this.writer.publish(channel, result);
|
|
83
|
-
}
|
|
84
|
-
async createGroup(stream, group) {
|
|
85
|
-
try {
|
|
86
|
-
await this.writer.xgroup('CREATE', stream, group, '$', 'MKSTREAM');
|
|
87
|
-
return;
|
|
88
|
-
}
|
|
89
|
-
catch {
|
|
90
|
-
return;
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
addListener(stream, callback, group, deleteOnCompletion = false) {
|
|
94
|
-
const client = new ioredis_1.default({
|
|
95
|
-
host: this.redisConfig.REDISURL,
|
|
96
|
-
password: this.redisConfig.REDISPW ?? ''
|
|
97
|
-
});
|
|
98
|
-
this.createListener.call(this, client, stream, callback, group, deleteOnCompletion);
|
|
99
|
-
// dont wait for the result of create listener, just return this so we can chain
|
|
100
|
-
return this;
|
|
101
|
-
}
|
|
102
|
-
async createListener(client, stream, callback, group, deleteOnCompletion = false) {
|
|
103
|
-
if (group)
|
|
104
|
-
await this.createGroup.call(this, stream, group);
|
|
105
|
-
this.listeners.set(stream, new Listener_1.default(this, client, stream, callback, group, deleteOnCompletion));
|
|
106
|
-
console.log(`redishelper : listener added for ${stream}`);
|
|
107
|
-
}
|
|
108
|
-
addListListener(event, callback, finishedevent = '', itemsPerCall = 1) {
|
|
109
|
-
const client = new ioredis_1.default({
|
|
110
|
-
host: this.redisConfig.REDISURL,
|
|
111
|
-
password: this.redisConfig.REDISPW ?? ''
|
|
112
|
-
});
|
|
113
|
-
const channel = this.getListChannel(event);
|
|
114
|
-
this.listeners.set(channel, new ListListener_1.default(this, client, channel, callback, finishedevent, itemsPerCall));
|
|
115
|
-
console.log(`redishelper : listlistener added for ${channel}`);
|
|
116
|
-
return this;
|
|
117
|
-
}
|
|
118
|
-
async getList(listname, start = 0, stop = -1) {
|
|
119
|
-
const list = await this.reader.lrange(listname, start, stop);
|
|
120
|
-
return list;
|
|
121
|
-
}
|
|
122
|
-
async getSet(listname) {
|
|
123
|
-
const set = await this.reader.smembers(listname);
|
|
124
|
-
return set;
|
|
125
|
-
}
|
|
126
|
-
throwError(error) {
|
|
127
|
-
if (!this.rollbar)
|
|
128
|
-
throw new Error('Rollbar not initialized');
|
|
129
|
-
this.rollbar.error(error);
|
|
130
|
-
}
|
|
131
|
-
sendMessage(stream, data) {
|
|
132
|
-
console.log(`sending message to ${stream}`);
|
|
133
|
-
return this.writer.xadd(stream, '*', ...(0, utils_1.createRedisMessage)(data));
|
|
134
|
-
}
|
|
135
|
-
async sendMessageAndSubscribeForResponse(channel, target, messagedata, n = 2000) {
|
|
136
|
-
await this.subscribe(channel);
|
|
137
|
-
// send the message to the correct service
|
|
138
|
-
this.sendMessage(target, messagedata);
|
|
139
|
-
let resolver;
|
|
140
|
-
let rejecter;
|
|
141
|
-
// create a promise to be able to pass on to resolve later
|
|
142
|
-
const promise = new Promise((r, rj) => {
|
|
143
|
-
resolver = r;
|
|
144
|
-
rejecter = rj;
|
|
145
|
-
});
|
|
146
|
-
if (!resolver || !rejecter)
|
|
147
|
-
return null;
|
|
148
|
-
//setup a timeout
|
|
149
|
-
const timeout = this.setupTimeout(resolver, channel, n);
|
|
150
|
-
//setup a response
|
|
151
|
-
this.requestMessageResponse(channel, resolver, rejecter, timeout);
|
|
152
|
-
// return a promise that will resolve when the message returns or times out
|
|
153
|
-
return promise;
|
|
154
|
-
}
|
|
155
|
-
async getRequest(targetservice, key, data, timeout = 2000) {
|
|
156
|
-
// create a message id to subscribe to
|
|
157
|
-
const messageid = (0, uuid_1.v4)();
|
|
158
|
-
//subscribe to message response
|
|
159
|
-
const channel = this.getRequestSubscriptionName(messageid);
|
|
160
|
-
return this.sendMessageAndSubscribeForResponse.call(this, channel, this.getRequestStream(targetservice), {
|
|
161
|
-
request: key,
|
|
162
|
-
messageid: messageid,
|
|
163
|
-
data: (0, utils_1.sanitizeValue)(data)
|
|
164
|
-
}, timeout);
|
|
165
|
-
}
|
|
166
|
-
async getApiRequest(endpoint, method, data, jwt = '') {
|
|
167
|
-
// create a message id to subscribe to
|
|
168
|
-
const messageid = (0, uuid_1.v4)();
|
|
169
|
-
//subscribe to message response
|
|
170
|
-
const channel = this.getRequestSubscriptionName(messageid);
|
|
171
|
-
return this.sendMessageAndSubscribeForResponse.call(this, channel, this.getRequestStream('api'), {
|
|
172
|
-
endpoint: endpoint,
|
|
173
|
-
method: method,
|
|
174
|
-
messageid: messageid,
|
|
175
|
-
data: data,
|
|
176
|
-
jwt: jwt
|
|
177
|
-
});
|
|
178
|
-
}
|
|
179
|
-
requestMessageResponse(channel, resolver, rejector, timeout) {
|
|
180
|
-
this.resolvers.set(channel, resolver);
|
|
181
|
-
this.rejectors.set(channel, rejector);
|
|
182
|
-
this.timeouts.set(channel, timeout);
|
|
183
|
-
}
|
|
184
|
-
cleanupMessageReponse(channel) {
|
|
185
|
-
this.resolvers.delete(channel);
|
|
186
|
-
this.rejectors.delete(channel);
|
|
187
|
-
this.timeouts.delete(channel);
|
|
188
|
-
}
|
|
189
|
-
onMessage(channel, message) {
|
|
190
|
-
const rejector = this.rejectors.get(channel);
|
|
191
|
-
const resolver = this.resolvers.get(channel);
|
|
192
|
-
const timeout = this.timeouts.get(channel);
|
|
193
|
-
if (!rejector || !resolver || !timeout) {
|
|
194
|
-
this.cleanupMessageReponse.call(this, channel);
|
|
195
|
-
return;
|
|
196
|
-
}
|
|
197
|
-
// check if the request has been rejected
|
|
198
|
-
if ((0, class_validator_1.isJSON)(message)) {
|
|
199
|
-
const resolvemessage = JSON.parse(message);
|
|
200
|
-
if (resolvemessage.rejected && resolvemessage.error && resolvemessage.error?.title) {
|
|
201
|
-
rejector(new Error(resolvemessage.error.title));
|
|
202
|
-
clearTimeout(timeout);
|
|
203
|
-
return;
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
if (message.length)
|
|
207
|
-
resolver(message);
|
|
208
|
-
else
|
|
209
|
-
resolver(null);
|
|
210
|
-
this.unsubscribe(channel);
|
|
211
|
-
clearTimeout(timeout);
|
|
212
|
-
}
|
|
213
|
-
unsubscribe(channel) {
|
|
214
|
-
this.reader.unsubscribe(channel);
|
|
215
|
-
this.subscriptions = this.subscriptions.filter(s => s != channel);
|
|
216
|
-
}
|
|
217
|
-
setupTimeout(resolve, channel, n = 2000) {
|
|
218
|
-
return setTimeout(() => {
|
|
219
|
-
if (!this.subscriptions.includes(channel))
|
|
220
|
-
return;
|
|
221
|
-
console.log(`sub timedout: ${channel}`);
|
|
222
|
-
resolve(null);
|
|
223
|
-
this.unsubscribe(channel);
|
|
224
|
-
}, n);
|
|
225
|
-
}
|
|
226
|
-
subscribe(channel) {
|
|
227
|
-
this.subscriptions.push(channel);
|
|
228
|
-
return this.reader.subscribe(channel);
|
|
229
|
-
}
|
|
230
|
-
getRequestSubscriptionName(messageid) {
|
|
231
|
-
return `messageresponse${messageid}`;
|
|
232
|
-
}
|
|
233
|
-
async setKey(key, value) {
|
|
234
|
-
try {
|
|
235
|
-
return await this.writer.set(key, (0, utils_1.sanitizeValue)(value));
|
|
236
|
-
}
|
|
237
|
-
catch { }
|
|
238
|
-
return;
|
|
239
|
-
}
|
|
240
|
-
async readKey(key) {
|
|
241
|
-
try {
|
|
242
|
-
return await this.writer.get(key);
|
|
243
|
-
}
|
|
244
|
-
catch { }
|
|
245
|
-
return null;
|
|
246
|
-
}
|
|
247
|
-
async deleteKey(key) {
|
|
248
|
-
try {
|
|
249
|
-
return await this.writer.del(key);
|
|
250
|
-
}
|
|
251
|
-
catch { }
|
|
252
|
-
return;
|
|
253
|
-
}
|
|
254
|
-
async sendListEvent(event, listitems, data = {}, listname = "") {
|
|
255
|
-
if (listitems.length == 0)
|
|
256
|
-
return;
|
|
257
|
-
// if a listname exist, we first empty it
|
|
258
|
-
if (listname.length > 0)
|
|
259
|
-
await this.deleteKey.call(this, listname);
|
|
260
|
-
const list = await this.addToSet.call(this, listitems, listname.length > 0 ? listname : undefined);
|
|
261
|
-
return this.sendMessage(this.getListChannel(event), {
|
|
262
|
-
...data,
|
|
263
|
-
listname: list
|
|
264
|
-
});
|
|
265
|
-
}
|
|
266
|
-
async addToSet(listitems, listname) {
|
|
267
|
-
const list = listname ?? (0, uuid_1.v4)();
|
|
268
|
-
await this.writer.sadd(list, ...listitems.map(utils_1.sanitizeValue));
|
|
269
|
-
return list;
|
|
270
|
-
}
|
|
271
|
-
async addToList(listitems, listname) {
|
|
272
|
-
const list = listname ?? (0, uuid_1.v4)();
|
|
273
|
-
await this.writer.lpush(list, ...listitems.map(utils_1.sanitizeValue));
|
|
274
|
-
return list;
|
|
275
|
-
}
|
|
276
|
-
getListChannel(event) {
|
|
277
|
-
return `${this.listprefix}${event}`;
|
|
278
|
-
}
|
|
279
|
-
async getStreamMessages(stream) {
|
|
280
|
-
const streaminfo = await this.getStreamInfo.call(this, stream);
|
|
281
|
-
if (!streaminfo || !(0, class_validator_1.isArray)(streaminfo) || streaminfo.length < 10)
|
|
282
|
-
return [];
|
|
283
|
-
const params = this.decypherParameters(streaminfo);
|
|
284
|
-
if (!params.entries)
|
|
285
|
-
return [];
|
|
286
|
-
return this.decyperMessages(params.entries);
|
|
287
|
-
}
|
|
288
|
-
getStreamInfo(stream, count = 0) {
|
|
289
|
-
return this.reader.xinfo('STREAM', stream, 'FULL', 'COUNT', count);
|
|
290
|
-
}
|
|
291
|
-
async filterStream(stream, key, value) {
|
|
292
|
-
const messages = await this.getStreamMessages.call(this, stream);
|
|
293
|
-
return messages.filter(message => message.parameters?.[key] != null && message.parameters[key] == value);
|
|
294
|
-
}
|
|
295
|
-
decypherResponse(...responses) {
|
|
296
|
-
return responses.reduce((resp, response) => [
|
|
297
|
-
...resp,
|
|
298
|
-
{
|
|
299
|
-
stream: response[0],
|
|
300
|
-
messages: this.decyperMessages(response[1])
|
|
301
|
-
}
|
|
302
|
-
], []);
|
|
303
|
-
}
|
|
304
|
-
decyperMessages(messages) {
|
|
305
|
-
return messages.map((message) => ({
|
|
306
|
-
id: message[0],
|
|
307
|
-
parameters: this.decypherParameters(message[1])
|
|
308
|
-
}));
|
|
309
|
-
}
|
|
310
|
-
decypherParameters(parameters) {
|
|
311
|
-
return parameters.reduce((params, v, n) => (n == 0 || (n % 2 == 0)) && parameters.length >= n + 1 ? ({
|
|
312
|
-
...params,
|
|
313
|
-
[v]: parameters[n + 1]
|
|
314
|
-
}) : params, {});
|
|
315
|
-
}
|
|
316
|
-
async isSetPickedUp(setname) {
|
|
317
|
-
const pickedup = await this.reader.get((0, utils_1.getSetPickedUpName)(setname));
|
|
318
|
-
return pickedup !== null;
|
|
319
|
-
}
|
|
320
|
-
}
|
|
321
|
-
exports.default = Broker;
|
|
322
|
-
//# 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<Function | 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"}
|
|
@@ -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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"}
|
package/dist/tsc/main.d.ts
DELETED
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
|
package/dist/tsc/main.js.map
DELETED
|
@@ -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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"}
|
package/dist/tsc/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 }
|