woonplan-packages-redishelper 1.0.83 → 1.0.88

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: {}, }; }
@@ -57,7 +57,7 @@ var toApiRequest = function (config, options) {
57
57
  // setup timeout
58
58
  setTimeout(function () {
59
59
  if (callbackclient.status != "end") {
60
- console.log("sub timedout");
60
+ console.log("sub timedout ".concat(options.endpoint));
61
61
  reject('timeout');
62
62
  callbackclient.disconnect();
63
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,25 @@
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
+ id : entry[0],
11
+ message : entry[1].reduce( (prevValue:RedisMessage, currentValue:string, n:number) => (n%2 ? {...prevValue} : { ...prevValue, [currentValue] : entry[1][n+1] }) as RedisMessage, {} as RedisMessage )
12
+ }
13
+ )
14
+ ) as RedisStreamEntry[]
15
+ )
16
+
17
+
18
+ const filterStream = ( config:RedisConfig, streamname:string, key:string, value:string ) =>
19
+ getEntriesFromStream( config, streamname )
20
+ .then((entries:RedisStreamEntry[]) => entries.filter( entry => {
21
+ return Object.keys( entry.message ).indexOf( key ) > -1 && entry.message[key] == value
22
+ }))
23
+
24
+ export { filterStream }
25
+
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/memdb.ts CHANGED
@@ -2,6 +2,9 @@ import { RedisConfig } from "./types"
2
2
  import { Redis } from "ioredis"
3
3
  const IORedis = require("ioredis");
4
4
 
5
- const getRedisClient = ( config:RedisConfig ):Redis => new IORedis( config.REDISURL );
5
+ const getRedisClient = ( config:RedisConfig ):Redis => new IORedis({
6
+ host : config.REDISURL,
7
+ password : config.REDISPW
8
+ })
6
9
 
7
10
  export { getRedisClient }
package/package.json CHANGED
@@ -1,26 +1,26 @@
1
- {
2
- "name": "woonplan-packages-redishelper",
3
- "version": "1.0.83",
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.88",
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,6 +34,8 @@ 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 ) => {
@@ -52,7 +54,7 @@ const toApiRequest = ( config:RedisConfig, options:toApiRequestOptions = { endpo
52
54
  // setup timeout
53
55
  setTimeout( () => {
54
56
  if( callbackclient.status != "end" ){
55
- console.log( `sub timedout`)
57
+ console.log( `sub timedout ${options.endpoint}`)
56
58
  reject( 'timeout' )
57
59
  callbackclient.disconnect()
58
60
  }
package/types.ts CHANGED
@@ -7,4 +7,10 @@ export interface Struct{
7
7
 
8
8
  export interface RedisConfig{
9
9
  REDISURL: string | number | undefined;
10
- }
10
+ REDISPW: string | undefined
11
+ }
12
+
13
+ export interface RedisStreamEntry{
14
+ id : string
15
+ message:RedisMessage
16
+ }