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 CHANGED
@@ -1,7 +1,6 @@
1
1
  import { Redis } from "ioredis";
2
- import { Struct } from "./types";
3
- declare const getOrRequestKey: (client: Redis, key: string, service: string) => Promise<unknown>;
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, requestAndWaitForData };
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.requestAndWaitForData = exports.subscribeToMessageResponse = exports.requestAndWaitForList = exports.getOrRequestKey = void 0;
3
+ exports.subscribeToMessageResponse = exports.requestAndWaitForList = exports.getOrRequestKey = void 0;
4
4
  var utils_1 = require("./utils");
5
- var getOrRequestKey = function (client, key, service) { return new Promise(function (resolve, reject) {
6
- client.get(key)
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(client, key, service);
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 (client, key, service) { return new Promise(function (resolve) {
25
+ var requestAndWaitForKey = function (getterclient, config, key, service) { return new Promise(function (resolve) {
22
26
  service = capitalizeFirstLetter(service);
23
- client.xadd("keyRequestedFrom".concat(service, "Service"), '*', 'key', key)
24
- .then(function (messageid) {
25
- // create a key to listen to, the key contains the message we just created;
26
- return subscribeToMessageResponse(client, messageid);
27
- }).then(function () {
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
- client.once("message", function (channel, message) {
31
- console.log("unsubscribing from ".concat(channel));
32
- client.unsubscribe().then(function () {
33
- if (message.length)
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
- client.unsubscribe().then(function () {
66
- if (message.length)
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 (client.status != "end") {
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
- }, 250);
80
- }).catch(function (e) {
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, requestAndWaitForData } from "./getters";
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, requestAndWaitForData, getOrRequestKey, subscribeToMessageResponse, requestAndWaitForList };
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.requestAndWaitForData = exports.publishMessageResponse = exports.sendMessageToStream = exports.listenToStream = void 0;
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);
@@ -0,0 +1,4 @@
1
+ import { RedisConfig } from "./types";
2
+ import { Redis } from "ioredis";
3
+ declare const getRedisClient: (config: RedisConfig) => Redis;
4
+ export { getRedisClient };
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) { return client.publish((0, utils_1.getMessageReponseKey)(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
@@ -4,3 +4,6 @@ export interface RedisMessage {
4
4
  export interface Struct {
5
5
  [index: string]: any;
6
6
  }
7
+ export interface RedisConfig {
8
+ REDISURL: string | number | undefined;
9
+ }
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
- const getOrRequestKey = ( client:Redis, key:string, service:string ) => new Promise((resolve, reject) => {
5
- client.get( key )
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( client, key, service )
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
- client:Redis,
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
- client.xadd( `keyRequestedFrom${service}Service`, '*', 'key', key )
33
- .then(
34
- (messageid:string) => {
35
- // create a key to listen to, the key contains the message we just created;
36
- return subscribeToMessageResponse( client, messageid )
37
- }
38
- ).then(
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
- client.once( "message", ( channel, message ) => {
43
- console.log( `unsubscribing from ${channel}` )
50
+ listenerclient.once( "message", ( channel, message ) => {
51
+ if( message.length ) resolve( message );
52
+ else resolve( null )
44
53
 
45
- client.unsubscribe().then(
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( client.status != "end" ){
62
+ if( listenerclient.status != "end" ){
61
63
  console.log( `sub timedout`)
62
- client.unsubscribe();
63
64
  resolve( null )
64
- }
65
-
66
- }, 250 )
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
- client.unsubscribe().then(
101
- () => {
102
- if( message.length ) resolve( message );
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, requestAndWaitForData }
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, requestAndWaitForData } from "./getters"
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, requestAndWaitForData, getOrRequestKey, subscribeToMessageResponse, requestAndWaitForList }
84
+ export { listenToStream, RedisMessage, sendMessageToStream, publishMessageResponse, getOrRequestKey, subscribeToMessageResponse, requestAndWaitForList }
package/memdb.ts ADDED
@@ -0,0 +1,7 @@
1
+ import { RedisConfig } from "./types"
2
+ import { Redis } from "ioredis"
3
+ const IORedis = require("ioredis");
4
+
5
+ const getRedisClient = ( config:RedisConfig ):Redis => new IORedis( config.REDISURL );
6
+
7
+ export { getRedisClient }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "woonplan-packages-redishelper",
3
- "version": "1.0.48",
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 ) => client.publish( getMessageReponseKey( messageid ), message )
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) => {
package/types.ts CHANGED
@@ -5,3 +5,6 @@ export interface Struct{
5
5
  [index: string]: any;
6
6
  }
7
7
 
8
+ export interface RedisConfig{
9
+ REDISURL: string | number | undefined;
10
+ }