woonplan-packages-redishelper 1.0.81 → 1.0.87

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.
@@ -0,0 +1,3 @@
1
+ import { RedisConfig, RedisStreamEntry } from "./types";
2
+ declare const filterStream: (config: RedisConfig, streamname: string, key: string, value: string) => Promise<RedisStreamEntry[]>;
3
+ export { filterStream };
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.filterStream = void 0;
15
+ var memdb_1 = require("./memdb");
16
+ var getStreamInfo = function (config, streamname, count) { return (0, memdb_1.getRedisClient)(config).xinfo('stream', streamname, 'FULL', 'COUNT', count); };
17
+ var getEntriesFromStream = function (config, streamname) {
18
+ return getStreamInfo(config, streamname, 0)
19
+ .then(function (result) {
20
+ return result[9].map(function (entry) {
21
+ var keysandvalues = entry[1];
22
+ return {
23
+ id: entry[0],
24
+ message: keysandvalues.reduce(function (prevValue, currentValue, n) {
25
+ if (n % 2)
26
+ return __assign({}, prevValue);
27
+ var newStruct = __assign({}, prevValue);
28
+ newStruct[currentValue] = keysandvalues[n + 1];
29
+ return newStruct;
30
+ }, {})
31
+ };
32
+ });
33
+ });
34
+ };
35
+ var filterStream = function (config, streamname, key, value) {
36
+ return getEntriesFromStream(config, streamname)
37
+ .then(function (entries) { return entries.filter(function (entry) {
38
+ return Object.keys(entry.message).indexOf(key) > -1 && entry.message[key] == value;
39
+ }); });
40
+ };
41
+ exports.filterStream = filterStream;
package/dist/getters.js CHANGED
@@ -48,7 +48,7 @@ var requestAndWaitForData = function (getterclient, config, request, service, da
48
48
  // setup timeout
49
49
  setTimeout(function () {
50
50
  if (listenerclient.status != "end") {
51
- console.log("sub timedout");
51
+ console.log("sub timedout: ".concat(request));
52
52
  resolve(null);
53
53
  listenerclient.unsubscribe();
54
54
  listenerclient.disconnect();
package/dist/index.d.ts CHANGED
@@ -1,7 +1,8 @@
1
1
  import { RedisConfig, RedisMessage } from "./types";
2
2
  import { sendMessageToStream, publishMessageResponse, toApiRequest } from "./setters";
3
3
  import { getOrRequestData, subscribeToMessageResponse, requestAndWaitForList } from "./getters";
4
+ import { filterStream } from "./eventsource";
4
5
  declare const listenToStream: (config: RedisConfig, groupname: string, channelname: string, consumername: string, callback: Function) => Promise<boolean>;
5
6
  declare const dataRequester: (config: RedisConfig, groupname: string, service: string, consumername: string, callback: Function) => void;
6
7
  declare const toApiListener: (config: RedisConfig, groupname: string, channelname: string, consumername: string, callback: Function) => void;
7
- export { listenToStream, RedisMessage, sendMessageToStream, toApiRequest, publishMessageResponse, getOrRequestData, toApiListener, dataRequester, subscribeToMessageResponse, requestAndWaitForList };
8
+ export { listenToStream, RedisMessage, sendMessageToStream, toApiRequest, publishMessageResponse, filterStream, getOrRequestData, toApiListener, dataRequester, 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.dataRequester = exports.toApiListener = exports.getOrRequestData = exports.publishMessageResponse = exports.toApiRequest = exports.sendMessageToStream = exports.listenToStream = void 0;
3
+ exports.requestAndWaitForList = exports.subscribeToMessageResponse = exports.dataRequester = exports.toApiListener = exports.getOrRequestData = exports.filterStream = exports.publishMessageResponse = exports.toApiRequest = 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; } });
@@ -11,6 +11,8 @@ Object.defineProperty(exports, "subscribeToMessageResponse", { enumerable: true,
11
11
  Object.defineProperty(exports, "requestAndWaitForList", { enumerable: true, get: function () { return getters_1.requestAndWaitForList; } });
12
12
  var memdb_1 = require("./memdb");
13
13
  var utils_1 = require("./utils");
14
+ var eventsource_1 = require("./eventsource");
15
+ Object.defineProperty(exports, "filterStream", { enumerable: true, get: function () { return eventsource_1.filterStream; } });
14
16
  var listenToStream = function (config, groupname, channelname, consumername, callback) { return new Promise(function (resolve, reject) {
15
17
  var client = (0, memdb_1.getRedisClient)(config);
16
18
  createGroup(client, groupname, channelname).then(function () {
package/dist/setters.js CHANGED
@@ -37,7 +37,7 @@ var sendMessageToStream = function (config, channelname, message) {
37
37
  return client.xadd.apply(client, __spreadArray([channelname, '*'], arrayOfKeysAndValues, false));
38
38
  };
39
39
  exports.sendMessageToStream = sendMessageToStream;
40
- var timeout = 1500;
40
+ var timeout = 2500;
41
41
  // send a message from socket to api, creating a message id to publish the response on
42
42
  var toApiRequest = function (config, options) {
43
43
  if (options === void 0) { options = { endpoint: '', method: 'GET', data: {}, }; }
@@ -49,17 +49,15 @@ var toApiRequest = function (config, options) {
49
49
  if (message.length && isJson(message)) {
50
50
  var messagedata = JSON.parse(message);
51
51
  if (messagedata.rejected && messagedata.error)
52
- reject(messagedata.error);
53
- }
54
- else {
55
- resolve(message.length ? message : null);
52
+ return reject(messagedata.error);
56
53
  }
54
+ resolve(message.length ? message : null);
57
55
  callbackclient.disconnect();
58
56
  });
59
57
  // setup timeout
60
58
  setTimeout(function () {
61
59
  if (callbackclient.status != "end") {
62
- console.log("sub timedout");
60
+ console.log("sub timedout ".concat(options.endpoint));
63
61
  reject('timeout');
64
62
  callbackclient.disconnect();
65
63
  }
package/dist/types.d.ts CHANGED
@@ -7,3 +7,7 @@ export interface Struct {
7
7
  export interface RedisConfig {
8
8
  REDISURL: string | number | undefined;
9
9
  }
10
+ export interface RedisStreamEntry {
11
+ id: string;
12
+ message: RedisMessage;
13
+ }
package/eventsource.ts ADDED
@@ -0,0 +1,33 @@
1
+ import { getRedisClient } from "./memdb"
2
+ import { RedisConfig, RedisStreamEntry, RedisMessage } from "./types"
3
+
4
+ const getStreamInfo = ( config:RedisConfig, streamname:string, count:number ) => getRedisClient( config ).xinfo('stream', streamname,'FULL', 'COUNT', count )
5
+
6
+ const getEntriesFromStream = ( config:RedisConfig, streamname:string ) =>
7
+ getStreamInfo( config, streamname, 0 )
8
+ .then(( result:any ) =>
9
+ result[9].map( (entry:[string,string[]]) => {
10
+ const keysandvalues = entry[1]
11
+ return {
12
+ id : entry[0],
13
+ message : keysandvalues.reduce( (prevValue:RedisMessage, currentValue:string, n:number) => {
14
+ if( n%2 ) return {
15
+ ...prevValue
16
+ }
17
+ const newStruct:RedisMessage = { ...prevValue }
18
+ newStruct[currentValue] = keysandvalues[n+1]
19
+ return newStruct
20
+ }, {} as RedisMessage )
21
+ } as RedisStreamEntry
22
+ })
23
+ )
24
+
25
+
26
+ const filterStream = ( config:RedisConfig, streamname:string, key:string, value:string ) =>
27
+ getEntriesFromStream( config, streamname )
28
+ .then((entries:RedisStreamEntry[]) => entries.filter( entry => {
29
+ return Object.keys( entry.message ).indexOf( key ) > -1 && entry.message[key] == value
30
+ }))
31
+
32
+ export { filterStream }
33
+
package/getters.ts CHANGED
@@ -65,7 +65,7 @@ const requestAndWaitForData = (
65
65
  // setup timeout
66
66
  setTimeout( () => {
67
67
  if( listenerclient.status != "end" ){
68
- console.log( `sub timedout`)
68
+ console.log( `sub timedout: ${request}`)
69
69
  resolve( null )
70
70
  listenerclient.unsubscribe()
71
71
  listenerclient.disconnect()
package/index.ts CHANGED
@@ -4,6 +4,7 @@ import { sendMessageToStream, publishMessageResponse, toApiRequest } from "./set
4
4
  import { getOrRequestData, subscribeToMessageResponse, requestAndWaitForList } from "./getters"
5
5
  import { getRedisClient } from "./memdb"
6
6
  import { getKeyRequestedChannelName } from "./utils"
7
+ import { filterStream } from "./eventsource"
7
8
 
8
9
  const listenToStream = ( config:RedisConfig, groupname:string, channelname:string, consumername:string, callback:Function ):Promise<boolean> => new Promise((resolve,reject) => {
9
10
  const client = getRedisClient( config )
@@ -207,4 +208,4 @@ const listenForMessage = ( client:Redis, groupname:string, channelname:string, c
207
208
  })
208
209
  }
209
210
 
210
- export { listenToStream, RedisMessage, sendMessageToStream, toApiRequest, publishMessageResponse, getOrRequestData, toApiListener, dataRequester, subscribeToMessageResponse, requestAndWaitForList }
211
+ export { listenToStream, RedisMessage, sendMessageToStream, toApiRequest, publishMessageResponse, filterStream, getOrRequestData, toApiListener, dataRequester, subscribeToMessageResponse, requestAndWaitForList }
package/package.json CHANGED
@@ -1,26 +1,26 @@
1
- {
2
- "name": "woonplan-packages-redishelper",
3
- "version": "1.0.81",
4
- "description": "",
5
- "main": "dist/index.js",
6
- "types": "dist/index.d.ts",
7
- "scripts": {
8
- "prepublish": "npm run build",
9
- "build": "tsc",
10
- "test": "echo \"Error: no test specified\" && exit 1"
11
- },
12
- "keywords": [],
13
- "author": "Jasper Denk",
14
- "license": "ISC",
15
- "devDependencies": {
16
- "@types/ioredis": "^4.28.4",
17
- "@types/node": "^16.11.13",
18
- "@types/uuid": "^8.3.4",
19
- "typescript": "^4.2.3"
20
- },
21
- "dependencies": {
22
- "@types/ioredis": "^4.28.5",
23
- "ioredis": "^4.28.2",
24
- "uuid": "^8.3.2"
25
- }
26
- }
1
+ {
2
+ "name": "woonplan-packages-redishelper",
3
+ "version": "1.0.87",
4
+ "description": "",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "scripts": {
8
+ "prepublish": "npm run build",
9
+ "build": "tsc",
10
+ "test": "echo \"Error: no test specified\" && exit 1"
11
+ },
12
+ "keywords": [],
13
+ "author": "Jasper Denk",
14
+ "license": "ISC",
15
+ "devDependencies": {
16
+ "@types/ioredis": "^4.28.4",
17
+ "@types/node": "^16.11.13",
18
+ "@types/uuid": "^8.3.4",
19
+ "typescript": "^4.2.3"
20
+ },
21
+ "dependencies": {
22
+ "@types/ioredis": "^4.28.5",
23
+ "ioredis": "^4.28.2",
24
+ "uuid": "^8.3.2"
25
+ }
26
+ }
package/setters.ts CHANGED
@@ -26,7 +26,7 @@ export interface toApiRequestOptions{
26
26
  jwt? :string
27
27
  }
28
28
 
29
- const timeout = 1500
29
+ const timeout = 2500
30
30
 
31
31
  // send a message from socket to api, creating a message id to publish the response on
32
32
  const toApiRequest = ( config:RedisConfig, options:toApiRequestOptions = { endpoint : '', method: 'GET', data : {}, } ) => new Promise((resolve, reject) => {
@@ -34,16 +34,19 @@ const toApiRequest = ( config:RedisConfig, options:toApiRequestOptions = { endpo
34
34
  callbackclient = getRedisClient( config ),
35
35
  messageid = uuidv4()
36
36
 
37
+
38
+
37
39
  subscribeToMessageResponse( callbackclient, messageid )
38
40
  .then(() => {
39
41
  callbackclient.once( "message", ( _channel, message ) => {
40
42
 
41
43
  if( message.length && isJson( message )){
42
44
  const messagedata = JSON.parse( message )
43
- if( messagedata.rejected && messagedata.error ) reject( messagedata.error )
44
- }else{
45
- resolve( message.length ? message : null )
45
+ if( messagedata.rejected && messagedata.error ) return reject( messagedata.error )
46
46
  }
47
+
48
+ resolve( message.length ? message : null )
49
+
47
50
 
48
51
  callbackclient.disconnect()
49
52
  })
@@ -51,7 +54,7 @@ const toApiRequest = ( config:RedisConfig, options:toApiRequestOptions = { endpo
51
54
  // setup timeout
52
55
  setTimeout( () => {
53
56
  if( callbackclient.status != "end" ){
54
- console.log( `sub timedout`)
57
+ console.log( `sub timedout ${options.endpoint}`)
55
58
  reject( 'timeout' )
56
59
  callbackclient.disconnect()
57
60
  }
package/types.ts CHANGED
@@ -7,4 +7,9 @@ export interface Struct{
7
7
 
8
8
  export interface RedisConfig{
9
9
  REDISURL: string | number | undefined;
10
- }
10
+ }
11
+
12
+ export interface RedisStreamEntry{
13
+ id : string
14
+ message:RedisMessage
15
+ }