woonplan-packages-redishelper 1.0.51 → 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,74 +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
- var createdMessageId = '';
24
- client.xadd("keyRequestedFrom".concat(service, "Service"), '*', 'key', key)
25
- .then(function (messageid) {
26
- createdMessageId = messageid;
27
- // create a key to listen to, the key contains the message we just created;
28
- return subscribeToMessageResponse(client, messageid);
29
- }).then(function () {
30
- console.log("subscribed to ".concat(createdMessageId, " at ").concat(new Date().toISOString()));
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()));
31
33
  // we are subscribed
32
34
  // setting up a one time event listener
33
- client.once("message", function (channel, message) {
34
- console.log("unsubscribing from ".concat(channel));
35
- client.unsubscribe().then(function () {
36
- if (message.length)
37
- resolve(message);
38
- else
39
- resolve(null);
40
- }).catch(function (error) {
41
- console.log(error);
42
- });
43
- });
44
- // setup timeout
45
- setTimeout(function () {
46
- if (client.status != "end") {
47
- console.log("sub timedout");
48
- client.unsubscribe();
35
+ listenerclient.once("message", function (channel, message) {
36
+ if (message.length)
37
+ resolve(message);
38
+ else
49
39
  resolve(null);
50
- }
51
- }, 250);
52
- }).catch(function (e) {
53
- console.log(e);
54
- resolve(null);
55
- });
56
- }); };
57
- var requestAndWaitForData = function (client, data, service) { return new Promise(function (resolve) {
58
- service = capitalizeFirstLetter(service);
59
- client.xadd("dataRequestedFrom".concat(service, "Service"), '*', 'data', JSON.stringify(data))
60
- .then(function (messageid) {
61
- // create a key to listen to, the key contains the message we just created;
62
- return subscribeToMessageResponse(client, messageid);
63
- }).then(function () {
64
- // we are subscribed
65
- // setting up a one time event listener
66
- client.once("message", function (channel, message) {
67
40
  console.log("unsubscribing from ".concat(channel));
68
- client.unsubscribe().then(function () {
69
- if (message.length)
70
- resolve(message);
71
- else
72
- resolve(null);
73
- });
41
+ listenerclient.unsubscribe();
42
+ listenerclient.disconnect();
74
43
  });
75
44
  // setup timeout
76
45
  setTimeout(function () {
77
- if (client.status != "end") {
46
+ if (listenerclient.status != "end") {
78
47
  console.log("sub timedout");
79
- client.unsubscribe();
80
48
  resolve(null);
49
+ listenerclient.unsubscribe();
50
+ listenerclient.disconnect();
81
51
  }
82
- }, 250);
83
- }).catch(function (e) {
52
+ }, timeout);
53
+ });
54
+ // send out the request
55
+ getterclient.xadd("keyRequestedFrom".concat(service, "Service"), '*', 'key', key)
56
+ .catch(function (e) {
84
57
  console.log(e);
85
58
  resolve(null);
86
- });
59
+ })
60
+ .finally(function () { return getterclient.disconnect(); });
87
61
  }); };
88
- exports.requestAndWaitForData = requestAndWaitForData;
89
62
  var subscribeToMessageResponse = function (client, messageid) { return client.subscribe((0, utils_1.getMessageReponseKey)(messageid)); };
90
63
  exports.subscribeToMessageResponse = subscribeToMessageResponse;
91
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/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,113 +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
- let createdMessageId = '';
33
-
34
- client.xadd( `keyRequestedFrom${service}Service`, '*', 'key', key )
35
- .then(
36
- (messageid:string) => {
37
- createdMessageId = messageid;
38
- // create a key to listen to, the key contains the message we just created;
39
- return subscribeToMessageResponse( client, messageid )
40
- }
41
- ).then(
42
- () => {
43
-
44
-
45
- console.log( `subscribed to ${createdMessageId} at ${new Date().toISOString()}` )
46
-
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()}` )
47
48
  // we are subscribed
48
49
  // setting up a one time event listener
49
- client.once( "message", ( channel, message ) => {
50
- console.log( `unsubscribing from ${channel}` )
50
+ listenerclient.once( "message", ( channel, message ) => {
51
+ if( message.length ) resolve( message );
52
+ else resolve( null )
51
53
 
52
- client.unsubscribe().then(
53
- () => {
54
- if( message.length ) resolve( message );
55
- else resolve( null )
56
- }
57
- ).catch(
58
- (error) => {
59
- console.log( error )
60
- }
61
- );
54
+ console.log( `unsubscribing from ${channel}` )
62
55
 
63
- })
56
+ listenerclient.unsubscribe()
57
+ listenerclient.disconnect()
58
+ })
64
59
 
65
60
  // setup timeout
66
61
  setTimeout( () => {
67
- if( client.status != "end" ){
62
+ if( listenerclient.status != "end" ){
68
63
  console.log( `sub timedout`)
69
- client.unsubscribe();
70
64
  resolve( null )
71
- }
72
-
73
- }, 250 )
74
- }
75
- ).catch(
76
- (e) => {
77
- console.log( e )
78
- resolve( null )
65
+ listenerclient.unsubscribe()
66
+ listenerclient.disconnect()
67
+ }
68
+ }, timeout )
79
69
  }
80
70
  )
81
- })
82
-
83
71
 
84
- const requestAndWaitForData = (
85
- client:Redis,
86
- data:Struct,
87
- service:string,
88
- ) => new Promise((resolve) => {
89
- service = capitalizeFirstLetter( service );
90
-
91
- client.xadd( `dataRequestedFrom${service}Service`, '*', 'data', JSON.stringify( data ) )
92
- .then(
93
- (messageid:string) => {
94
- // create a key to listen to, the key contains the message we just created;
95
- return subscribeToMessageResponse( client, messageid )
96
- }
97
- ).then(
98
- () => {
99
- // we are subscribed
100
- // setting up a one time event listener
101
-
102
-
103
-
104
- client.once( "message", ( channel, message ) => {
105
- console.log( `unsubscribing from ${channel}` )
106
-
107
- client.unsubscribe().then(
108
- () => {
109
- if( message.length ) resolve( message );
110
- else resolve( null )
111
- }
112
- );
113
- })
114
-
115
- // setup timeout
116
- setTimeout( () => {
117
- if( client.status != "end" ){
118
- console.log( `sub timedout`)
119
- client.unsubscribe();
120
- resolve( null )
121
- }
122
-
123
- }, 250 )
124
-
125
- }
126
- ).catch(
72
+ // send out the request
73
+ getterclient.xadd( `keyRequestedFrom${service}Service`, '*', 'key', key )
74
+ .catch(
127
75
  (e) => {
128
76
  console.log( e )
129
77
  resolve( null )
130
78
  }
131
79
  )
80
+ .finally(
81
+ () => getterclient.disconnect()
82
+ )
132
83
  })
133
84
 
134
85
  const subscribeToMessageResponse = ( client:Redis, messageid:string ) => client.subscribe( getMessageReponseKey( messageid ) )
@@ -156,4 +107,4 @@ const requestAndWaitForList = (
156
107
  const capitalizeFirstLetter = (string:string) => string.charAt(0).toUpperCase() + string.slice(1)
157
108
 
158
109
 
159
- 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.51",
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/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
+ }