woonplan-packages-redishelper 1.0.48 → 1.0.52
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/dist/getters.d.ts +3 -4
- package/dist/getters.js +31 -55
- package/dist/index.d.ts +2 -2
- package/dist/index.js +1 -2
- package/dist/memdb.d.ts +4 -0
- package/dist/memdb.js +6 -0
- package/dist/setters.js +4 -1
- package/dist/types.d.ts +3 -0
- package/getters.ts +40 -82
- package/index.ts +2 -2
- package/memdb.ts +7 -0
- package/package.json +5 -2
- package/setters.ts +4 -1
- package/types.ts +3 -0
package/dist/getters.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { Redis } from "ioredis";
|
|
2
|
-
import {
|
|
3
|
-
declare const getOrRequestKey: (
|
|
4
|
-
declare const requestAndWaitForData: (client: Redis, data: Struct, service: string) => Promise<unknown>;
|
|
2
|
+
import { RedisConfig } from "./types";
|
|
3
|
+
declare const getOrRequestKey: (config: RedisConfig, key: string, service: string) => Promise<unknown>;
|
|
5
4
|
declare const subscribeToMessageResponse: (client: Redis, messageid: string) => Promise<number>;
|
|
6
5
|
declare const requestAndWaitForList: (client: Redis, service: string, listname: string, listsubject: string, props: {} | undefined, {}: {}) => Promise<unknown>;
|
|
7
|
-
export { getOrRequestKey, requestAndWaitForList, subscribeToMessageResponse
|
|
6
|
+
export { getOrRequestKey, requestAndWaitForList, subscribeToMessageResponse };
|
package/dist/getters.js
CHANGED
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.subscribeToMessageResponse = exports.requestAndWaitForList = exports.getOrRequestKey = void 0;
|
|
4
4
|
var utils_1 = require("./utils");
|
|
5
|
-
var
|
|
6
|
-
|
|
5
|
+
var memdb_1 = require("./memdb");
|
|
6
|
+
var uuid_1 = require("uuid");
|
|
7
|
+
var timeout = 250;
|
|
8
|
+
var getOrRequestKey = function (config, key, service) { return new Promise(function (resolve, reject) {
|
|
9
|
+
var getterclient = (0, memdb_1.getRedisClient)(config);
|
|
10
|
+
getterclient.get(key)
|
|
7
11
|
.then(function (result) {
|
|
8
12
|
if (result)
|
|
9
13
|
resolve(result);
|
|
10
14
|
if (!result) {
|
|
11
|
-
return requestAndWaitForKey(
|
|
15
|
+
return requestAndWaitForKey(getterclient, config, key, service);
|
|
12
16
|
}
|
|
13
17
|
})
|
|
14
18
|
.then(function (result) { return resolve(result); })
|
|
@@ -18,71 +22,43 @@ var getOrRequestKey = function (client, key, service) { return new Promise(funct
|
|
|
18
22
|
});
|
|
19
23
|
}); };
|
|
20
24
|
exports.getOrRequestKey = getOrRequestKey;
|
|
21
|
-
var requestAndWaitForKey = function (
|
|
25
|
+
var requestAndWaitForKey = function (getterclient, config, key, service) { return new Promise(function (resolve) {
|
|
22
26
|
service = capitalizeFirstLetter(service);
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
27
|
+
var messageid = (0, uuid_1.v4)();
|
|
28
|
+
// create a listener
|
|
29
|
+
var listenerclient = (0, memdb_1.getRedisClient)(config);
|
|
30
|
+
subscribeToMessageResponse(listenerclient, messageid).
|
|
31
|
+
then(function () {
|
|
32
|
+
console.log("subscribed to ".concat(messageid, " at ").concat(new Date().toISOString()));
|
|
28
33
|
// we are subscribed
|
|
29
34
|
// setting up a one time event listener
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
resolve(message);
|
|
35
|
-
else
|
|
36
|
-
resolve(null);
|
|
37
|
-
}).catch(function (error) {
|
|
38
|
-
console.log(error);
|
|
39
|
-
});
|
|
40
|
-
});
|
|
41
|
-
// setup timeout
|
|
42
|
-
setTimeout(function () {
|
|
43
|
-
if (client.status != "end") {
|
|
44
|
-
console.log("sub timedout");
|
|
45
|
-
client.unsubscribe();
|
|
35
|
+
listenerclient.once("message", function (channel, message) {
|
|
36
|
+
if (message.length)
|
|
37
|
+
resolve(message);
|
|
38
|
+
else
|
|
46
39
|
resolve(null);
|
|
47
|
-
}
|
|
48
|
-
}, 250);
|
|
49
|
-
}).catch(function (e) {
|
|
50
|
-
console.log(e);
|
|
51
|
-
resolve(null);
|
|
52
|
-
});
|
|
53
|
-
}); };
|
|
54
|
-
var requestAndWaitForData = function (client, data, service) { return new Promise(function (resolve) {
|
|
55
|
-
service = capitalizeFirstLetter(service);
|
|
56
|
-
client.xadd("dataRequestedFrom".concat(service, "Service"), '*', 'data', JSON.stringify(data))
|
|
57
|
-
.then(function (messageid) {
|
|
58
|
-
// create a key to listen to, the key contains the message we just created;
|
|
59
|
-
return subscribeToMessageResponse(client, messageid);
|
|
60
|
-
}).then(function () {
|
|
61
|
-
// we are subscribed
|
|
62
|
-
// setting up a one time event listener
|
|
63
|
-
client.once("message", function (channel, message) {
|
|
64
40
|
console.log("unsubscribing from ".concat(channel));
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
resolve(message);
|
|
68
|
-
else
|
|
69
|
-
resolve(null);
|
|
70
|
-
});
|
|
41
|
+
listenerclient.unsubscribe();
|
|
42
|
+
listenerclient.disconnect();
|
|
71
43
|
});
|
|
72
44
|
// setup timeout
|
|
73
45
|
setTimeout(function () {
|
|
74
|
-
if (
|
|
46
|
+
if (listenerclient.status != "end") {
|
|
75
47
|
console.log("sub timedout");
|
|
76
|
-
client.unsubscribe();
|
|
77
48
|
resolve(null);
|
|
49
|
+
listenerclient.unsubscribe();
|
|
50
|
+
listenerclient.disconnect();
|
|
78
51
|
}
|
|
79
|
-
},
|
|
80
|
-
})
|
|
52
|
+
}, timeout);
|
|
53
|
+
});
|
|
54
|
+
// send out the request
|
|
55
|
+
getterclient.xadd("keyRequestedFrom".concat(service, "Service"), '*', 'key', key)
|
|
56
|
+
.catch(function (e) {
|
|
81
57
|
console.log(e);
|
|
82
58
|
resolve(null);
|
|
83
|
-
})
|
|
59
|
+
})
|
|
60
|
+
.finally(function () { return getterclient.disconnect(); });
|
|
84
61
|
}); };
|
|
85
|
-
exports.requestAndWaitForData = requestAndWaitForData;
|
|
86
62
|
var subscribeToMessageResponse = function (client, messageid) { return client.subscribe((0, utils_1.getMessageReponseKey)(messageid)); };
|
|
87
63
|
exports.subscribeToMessageResponse = subscribeToMessageResponse;
|
|
88
64
|
var requestAndWaitForList = function (client, service, listname, listsubject, props, _a) {
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Redis } from "ioredis";
|
|
2
2
|
import { RedisMessage } from "./types";
|
|
3
3
|
import { sendMessageToStream, publishMessageResponse } from "./setters";
|
|
4
|
-
import { getOrRequestKey, subscribeToMessageResponse, requestAndWaitForList
|
|
4
|
+
import { getOrRequestKey, subscribeToMessageResponse, requestAndWaitForList } from "./getters";
|
|
5
5
|
declare const listenToStream: (client: Redis, groupname: string, channelname: string, consumername: string, callback: Function) => Promise<boolean>;
|
|
6
|
-
export { listenToStream, RedisMessage, sendMessageToStream, publishMessageResponse,
|
|
6
|
+
export { listenToStream, RedisMessage, sendMessageToStream, publishMessageResponse, getOrRequestKey, subscribeToMessageResponse, requestAndWaitForList };
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.requestAndWaitForList = exports.subscribeToMessageResponse = exports.getOrRequestKey = exports.
|
|
3
|
+
exports.requestAndWaitForList = exports.subscribeToMessageResponse = exports.getOrRequestKey = exports.publishMessageResponse = exports.sendMessageToStream = exports.listenToStream = void 0;
|
|
4
4
|
var setters_1 = require("./setters");
|
|
5
5
|
Object.defineProperty(exports, "sendMessageToStream", { enumerable: true, get: function () { return setters_1.sendMessageToStream; } });
|
|
6
6
|
Object.defineProperty(exports, "publishMessageResponse", { enumerable: true, get: function () { return setters_1.publishMessageResponse; } });
|
|
@@ -8,7 +8,6 @@ var getters_1 = require("./getters");
|
|
|
8
8
|
Object.defineProperty(exports, "getOrRequestKey", { enumerable: true, get: function () { return getters_1.getOrRequestKey; } });
|
|
9
9
|
Object.defineProperty(exports, "subscribeToMessageResponse", { enumerable: true, get: function () { return getters_1.subscribeToMessageResponse; } });
|
|
10
10
|
Object.defineProperty(exports, "requestAndWaitForList", { enumerable: true, get: function () { return getters_1.requestAndWaitForList; } });
|
|
11
|
-
Object.defineProperty(exports, "requestAndWaitForData", { enumerable: true, get: function () { return getters_1.requestAndWaitForData; } });
|
|
12
11
|
var listenToStream = function (client, groupname, channelname, consumername, callback) { return new Promise(function (resolve, reject) {
|
|
13
12
|
createGroup(client, groupname, channelname).then(function () {
|
|
14
13
|
listenForMessage(client, groupname, channelname, consumername, callback);
|
package/dist/memdb.d.ts
ADDED
package/dist/memdb.js
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getRedisClient = void 0;
|
|
4
|
+
var IORedis = require("ioredis");
|
|
5
|
+
var getRedisClient = function (config) { return new IORedis(config.REDISURL); };
|
|
6
|
+
exports.getRedisClient = getRedisClient;
|
package/dist/setters.js
CHANGED
|
@@ -11,7 +11,10 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.sendMessageToStream = exports.publishMessageResponse = void 0;
|
|
13
13
|
var utils_1 = require("./utils");
|
|
14
|
-
var publishMessageResponse = function (client, messageid, message) {
|
|
14
|
+
var publishMessageResponse = function (client, messageid, message) {
|
|
15
|
+
console.log("publishing to ".concat(messageid, " at ").concat(new Date().toISOString()));
|
|
16
|
+
return client.publish((0, utils_1.getMessageReponseKey)(messageid), message);
|
|
17
|
+
};
|
|
15
18
|
exports.publishMessageResponse = publishMessageResponse;
|
|
16
19
|
var sendMessageToStream = function (client, channelname, message) {
|
|
17
20
|
var arrayOfKeysAndValues = (0, utils_1.redisMessageToArrayOfKeysAndValues)(message).reduce(utils_1.reduceArraysToArray, []);
|
package/dist/types.d.ts
CHANGED
package/getters.ts
CHANGED
|
@@ -1,13 +1,19 @@
|
|
|
1
1
|
import { Redis } from "ioredis"
|
|
2
2
|
import { getMessageReponseKey } from "./utils"
|
|
3
|
-
import { Struct } from "./types"
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
import { Struct, RedisConfig } from "./types"
|
|
4
|
+
import { getRedisClient } from "./memdb"
|
|
5
|
+
import { v4 as uuidv4 } from 'uuid';
|
|
6
|
+
|
|
7
|
+
const timeout = 250;
|
|
8
|
+
|
|
9
|
+
const getOrRequestKey = ( config:RedisConfig, key:string, service:string ) => new Promise((resolve, reject) => {
|
|
10
|
+
const getterclient = getRedisClient( config )
|
|
11
|
+
getterclient.get( key )
|
|
6
12
|
.then(
|
|
7
13
|
( result ) => {
|
|
8
14
|
if( result ) resolve( result );
|
|
9
15
|
if( !result ){
|
|
10
|
-
return requestAndWaitForKey(
|
|
16
|
+
return requestAndWaitForKey( getterclient, config, key, service )
|
|
11
17
|
}
|
|
12
18
|
}
|
|
13
19
|
)
|
|
@@ -22,106 +28,58 @@ const getOrRequestKey = ( client:Redis, key:string, service:string ) => new Prom
|
|
|
22
28
|
)
|
|
23
29
|
})
|
|
24
30
|
|
|
31
|
+
|
|
25
32
|
const requestAndWaitForKey = (
|
|
26
|
-
|
|
33
|
+
getterclient:Redis,
|
|
34
|
+
config:RedisConfig,
|
|
27
35
|
key:string,
|
|
28
36
|
service:string,
|
|
29
37
|
) => new Promise((resolve) => {
|
|
30
38
|
service = capitalizeFirstLetter( service );
|
|
31
39
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
+
const messageid = uuidv4()
|
|
41
|
+
|
|
42
|
+
// create a listener
|
|
43
|
+
const listenerclient = getRedisClient( config )
|
|
44
|
+
subscribeToMessageResponse( listenerclient, messageid ).
|
|
45
|
+
then(
|
|
46
|
+
() => {
|
|
47
|
+
console.log( `subscribed to ${messageid} at ${new Date().toISOString()}` )
|
|
40
48
|
// we are subscribed
|
|
41
49
|
// setting up a one time event listener
|
|
42
|
-
|
|
43
|
-
|
|
50
|
+
listenerclient.once( "message", ( channel, message ) => {
|
|
51
|
+
if( message.length ) resolve( message );
|
|
52
|
+
else resolve( null )
|
|
44
53
|
|
|
45
|
-
|
|
46
|
-
() => {
|
|
47
|
-
if( message.length ) resolve( message );
|
|
48
|
-
else resolve( null )
|
|
49
|
-
}
|
|
50
|
-
).catch(
|
|
51
|
-
(error) => {
|
|
52
|
-
console.log( error )
|
|
53
|
-
}
|
|
54
|
-
);
|
|
54
|
+
console.log( `unsubscribing from ${channel}` )
|
|
55
55
|
|
|
56
|
-
|
|
56
|
+
listenerclient.unsubscribe()
|
|
57
|
+
listenerclient.disconnect()
|
|
58
|
+
})
|
|
57
59
|
|
|
58
60
|
// setup timeout
|
|
59
61
|
setTimeout( () => {
|
|
60
|
-
if(
|
|
62
|
+
if( listenerclient.status != "end" ){
|
|
61
63
|
console.log( `sub timedout`)
|
|
62
|
-
client.unsubscribe();
|
|
63
64
|
resolve( null )
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
).catch(
|
|
69
|
-
(e) => {
|
|
70
|
-
console.log( e )
|
|
71
|
-
resolve( null )
|
|
65
|
+
listenerclient.unsubscribe()
|
|
66
|
+
listenerclient.disconnect()
|
|
67
|
+
}
|
|
68
|
+
}, timeout )
|
|
72
69
|
}
|
|
73
70
|
)
|
|
74
|
-
})
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
const requestAndWaitForData = (
|
|
78
|
-
client:Redis,
|
|
79
|
-
data:Struct,
|
|
80
|
-
service:string,
|
|
81
|
-
) => new Promise((resolve) => {
|
|
82
|
-
service = capitalizeFirstLetter( service );
|
|
83
|
-
|
|
84
|
-
client.xadd( `dataRequestedFrom${service}Service`, '*', 'data', JSON.stringify( data ) )
|
|
85
|
-
.then(
|
|
86
|
-
(messageid:string) => {
|
|
87
|
-
// create a key to listen to, the key contains the message we just created;
|
|
88
|
-
return subscribeToMessageResponse( client, messageid )
|
|
89
|
-
}
|
|
90
|
-
).then(
|
|
91
|
-
() => {
|
|
92
|
-
// we are subscribed
|
|
93
|
-
// setting up a one time event listener
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
client.once( "message", ( channel, message ) => {
|
|
98
|
-
console.log( `unsubscribing from ${channel}` )
|
|
99
71
|
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
else resolve( null )
|
|
104
|
-
}
|
|
105
|
-
);
|
|
106
|
-
})
|
|
107
|
-
|
|
108
|
-
// setup timeout
|
|
109
|
-
setTimeout( () => {
|
|
110
|
-
if( client.status != "end" ){
|
|
111
|
-
console.log( `sub timedout`)
|
|
112
|
-
client.unsubscribe();
|
|
113
|
-
resolve( null )
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
}, 250 )
|
|
117
|
-
|
|
118
|
-
}
|
|
119
|
-
).catch(
|
|
72
|
+
// send out the request
|
|
73
|
+
getterclient.xadd( `keyRequestedFrom${service}Service`, '*', 'key', key )
|
|
74
|
+
.catch(
|
|
120
75
|
(e) => {
|
|
121
76
|
console.log( e )
|
|
122
77
|
resolve( null )
|
|
123
78
|
}
|
|
124
79
|
)
|
|
80
|
+
.finally(
|
|
81
|
+
() => getterclient.disconnect()
|
|
82
|
+
)
|
|
125
83
|
})
|
|
126
84
|
|
|
127
85
|
const subscribeToMessageResponse = ( client:Redis, messageid:string ) => client.subscribe( getMessageReponseKey( messageid ) )
|
|
@@ -149,4 +107,4 @@ const requestAndWaitForList = (
|
|
|
149
107
|
const capitalizeFirstLetter = (string:string) => string.charAt(0).toUpperCase() + string.slice(1)
|
|
150
108
|
|
|
151
109
|
|
|
152
|
-
export { getOrRequestKey, requestAndWaitForList, subscribeToMessageResponse
|
|
110
|
+
export { getOrRequestKey, requestAndWaitForList, subscribeToMessageResponse }
|
package/index.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Redis } from "ioredis"
|
|
2
2
|
import { RedisMessage } from "./types"
|
|
3
3
|
import { sendMessageToStream, publishMessageResponse } from "./setters"
|
|
4
|
-
import { getOrRequestKey, subscribeToMessageResponse, requestAndWaitForList
|
|
4
|
+
import { getOrRequestKey, subscribeToMessageResponse, requestAndWaitForList } from "./getters"
|
|
5
5
|
|
|
6
6
|
const listenToStream = ( client:Redis, groupname:string, channelname:string, consumername:string, callback:Function ):Promise<boolean> => new Promise((resolve,reject) => {
|
|
7
7
|
createGroup( client, groupname, channelname ).then(
|
|
@@ -81,4 +81,4 @@ const listenForMessage = ( client:Redis, groupname:string, channelname:string, c
|
|
|
81
81
|
})
|
|
82
82
|
}
|
|
83
83
|
|
|
84
|
-
export { listenToStream, RedisMessage, sendMessageToStream, publishMessageResponse,
|
|
84
|
+
export { listenToStream, RedisMessage, sendMessageToStream, publishMessageResponse, getOrRequestKey, subscribeToMessageResponse, requestAndWaitForList }
|
package/memdb.ts
ADDED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "woonplan-packages-redishelper",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.52",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -15,9 +15,12 @@
|
|
|
15
15
|
"devDependencies": {
|
|
16
16
|
"@types/ioredis": "^4.28.4",
|
|
17
17
|
"@types/node": "^16.11.13",
|
|
18
|
+
"@types/uuid": "^8.3.4",
|
|
18
19
|
"typescript": "^4.2.3"
|
|
19
20
|
},
|
|
20
21
|
"dependencies": {
|
|
21
|
-
"@types/ioredis": "^4.28.5"
|
|
22
|
+
"@types/ioredis": "^4.28.5",
|
|
23
|
+
"ioredis": "^4.28.2",
|
|
24
|
+
"uuid": "^8.3.2"
|
|
22
25
|
}
|
|
23
26
|
}
|
package/setters.ts
CHANGED
|
@@ -3,7 +3,10 @@ import { Redis } from "ioredis"
|
|
|
3
3
|
import { RedisMessage } from "./types"
|
|
4
4
|
import { getMessageReponseKey, redisMessageToArrayOfKeysAndValues, reduceArraysToArray } from "./utils"
|
|
5
5
|
|
|
6
|
-
const publishMessageResponse = ( client:Redis, messageid:string, message:string ) =>
|
|
6
|
+
const publishMessageResponse = ( client:Redis, messageid:string, message:string ) => {
|
|
7
|
+
console.log( `publishing to ${messageid} at ${new Date().toISOString()}` )
|
|
8
|
+
return client.publish( getMessageReponseKey( messageid ), message )
|
|
9
|
+
}
|
|
7
10
|
|
|
8
11
|
|
|
9
12
|
const sendMessageToStream = ( client:Redis, channelname:string, message:RedisMessage) => {
|