@nsshunt/stsappframework 3.1.123 → 3.1.124
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/redisMessageHandler.test.js +1 -1
- package/dist/redisMessageHandler.test.js.map +1 -1
- package/dist/testing/appredistest.js +239 -0
- package/dist/testing/appredistest.js.map +1 -0
- package/dist/testing/promiseTesting.js +50 -0
- package/dist/testing/promiseTesting.js.map +1 -0
- package/local-redis-stack.conf +2 -0
- package/package.json +14 -14
- package/runpromise.sh +5 -0
- package/runredis.sh +5 -0
- package/runredis1.sh +4 -0
- package/runredis2.sh +24 -0
- package/runredis3.sh +4 -0
- package/src/redisMessageHandler.test.ts +1 -1
- package/src/testing/appredistest.ts +303 -0
- package/src/testing/promiseTesting.ts +53 -0
- package/types/testing/appredistest.d.ts +4 -0
- package/types/testing/appredistest.d.ts.map +1 -0
- package/types/testing/promiseTesting.d.ts +4 -0
- package/types/testing/promiseTesting.d.ts.map +1 -0
|
@@ -10,7 +10,7 @@ const stsutils_1 = require("@nsshunt/stsutils");
|
|
|
10
10
|
const chalk_1 = __importDefault(require("chalk"));
|
|
11
11
|
const uuid_1 = require("uuid");
|
|
12
12
|
const testcontainers_1 = require("testcontainers");
|
|
13
|
-
|
|
13
|
+
vitest_1.describe.skip("Redis Message Handler Test", () => {
|
|
14
14
|
let ioRedisContainer;
|
|
15
15
|
let ioRedisMessageProcessorUrl = '';
|
|
16
16
|
(0, vitest_1.beforeAll)(async () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redisMessageHandler.test.js","sourceRoot":"","sources":["../src/redisMessageHandler.test.ts"],"names":[],"mappings":";;;;;AAAA,kDAAkD,CAAE,UAAU;AAC9D,mCAAqE;AAErE,+DAA2D;AAE3D,gDAAqE;AAErE,kDAA0B;AAE1B,+BAAoC;AAEpC,mDAAkD;AAElD,
|
|
1
|
+
{"version":3,"file":"redisMessageHandler.test.js","sourceRoot":"","sources":["../src/redisMessageHandler.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/* eslint @typescript-eslint/no-explicit-any: 0 */ // --> OFF
|
|
3
|
+
/* eslint @typescript-eslint/no-unused-vars: 0 */ // --> OFF
|
|
4
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
5
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
6
|
+
};
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
const redis_1 = require("redis");
|
|
9
|
+
const crypto_1 = __importDefault(require("crypto"));
|
|
10
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
11
|
+
const indexName = `redistestindex01`;
|
|
12
|
+
const maxPromArrayRecords = 500;
|
|
13
|
+
const maxQueryLoops = 10000;
|
|
14
|
+
let minRecords = 0;
|
|
15
|
+
let maxRecords = 1000;
|
|
16
|
+
let mode = 0;
|
|
17
|
+
function getRandomNumber(max) {
|
|
18
|
+
const array = new Uint32Array(1);
|
|
19
|
+
crypto_1.default.webcrypto.getRandomValues(array);
|
|
20
|
+
return array[0] % max; // The % operator ensures the value is between 0 and 1000
|
|
21
|
+
}
|
|
22
|
+
function getRandomString(min, max) {
|
|
23
|
+
const charset = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
|
|
24
|
+
let result = '';
|
|
25
|
+
const length = min + getRandomNumber(max - min);
|
|
26
|
+
const values = new Uint32Array(length);
|
|
27
|
+
crypto_1.default.webcrypto.getRandomValues(values);
|
|
28
|
+
for (let i = 0; i < length; i++) {
|
|
29
|
+
result += charset[values[i] % charset.length];
|
|
30
|
+
}
|
|
31
|
+
return result;
|
|
32
|
+
}
|
|
33
|
+
const CreateIndex = async (redis) => {
|
|
34
|
+
try {
|
|
35
|
+
const retVal = await redis.ft.dropIndex(indexName);
|
|
36
|
+
console.log(retVal);
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
console.log(chalk_1.default.red(error));
|
|
40
|
+
}
|
|
41
|
+
try {
|
|
42
|
+
const retVal = await redis.ft.create(indexName, {
|
|
43
|
+
'orderno': { type: redis_1.SchemaFieldTypes.NUMERIC, SORTABLE: true },
|
|
44
|
+
//'orderdate': { type: SchemaFieldTypes.NUMERIC , SORTABLE: true },
|
|
45
|
+
//'notes': { type: SchemaFieldTypes.TEXT, NOINDEX: true },
|
|
46
|
+
'notes': { type: redis_1.SchemaFieldTypes.TEXT },
|
|
47
|
+
'field1': { type: redis_1.SchemaFieldTypes.TEXT }, // The fields need to be sortable to be used in group by aggregations
|
|
48
|
+
'field2': { type: redis_1.SchemaFieldTypes.TEXT },
|
|
49
|
+
'field3': { type: redis_1.SchemaFieldTypes.TEXT },
|
|
50
|
+
'field4': { type: redis_1.SchemaFieldTypes.TEXT },
|
|
51
|
+
'field5': { type: redis_1.SchemaFieldTypes.TEXT },
|
|
52
|
+
'aggfield': { type: redis_1.SchemaFieldTypes.TEXT },
|
|
53
|
+
'field1num': { type: redis_1.SchemaFieldTypes.NUMERIC }, // The fields need to be sortable to be used in group by aggregations
|
|
54
|
+
'field2num': { type: redis_1.SchemaFieldTypes.NUMERIC },
|
|
55
|
+
'field3num': { type: redis_1.SchemaFieldTypes.NUMERIC },
|
|
56
|
+
'field4num': { type: redis_1.SchemaFieldTypes.NUMERIC },
|
|
57
|
+
'field5num': { type: redis_1.SchemaFieldTypes.NUMERIC },
|
|
58
|
+
'day': { type: redis_1.SchemaFieldTypes.NUMERIC, SORTABLE: true },
|
|
59
|
+
'week': { type: redis_1.SchemaFieldTypes.NUMERIC, SORTABLE: true },
|
|
60
|
+
'month': { type: redis_1.SchemaFieldTypes.NUMERIC, SORTABLE: true },
|
|
61
|
+
'count': { type: redis_1.SchemaFieldTypes.NUMERIC, NOINDEX: true }
|
|
62
|
+
}, {
|
|
63
|
+
ON: 'HASH',
|
|
64
|
+
PREFIX: 'orders:'
|
|
65
|
+
});
|
|
66
|
+
console.log(retVal);
|
|
67
|
+
}
|
|
68
|
+
catch (error) {
|
|
69
|
+
console.log(chalk_1.default.red(error));
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
const BuildData = async (redis) => {
|
|
73
|
+
let promArray = [];
|
|
74
|
+
for (let i = minRecords; i < maxRecords; i++) {
|
|
75
|
+
const record = {
|
|
76
|
+
orderno: i,
|
|
77
|
+
orderdate: new Date().getTime(),
|
|
78
|
+
notes: `Notes for index ${i}`,
|
|
79
|
+
rndtextsmall: `${getRandomString(5, 20)}`,
|
|
80
|
+
rndtextmedium: `${getRandomString(20, 40)}`,
|
|
81
|
+
rndtextlarge: `${getRandomString(40, 80)}`,
|
|
82
|
+
field1: `${i % 10}`,
|
|
83
|
+
field2: `${i % 100}`,
|
|
84
|
+
field3: `${i % 1000}`,
|
|
85
|
+
field4: `${i % 10000}`,
|
|
86
|
+
field5: `${i % 100000}`,
|
|
87
|
+
aggfield: `${i % 10}_${i % 100}_${i % 1000}_${i % 10000}_${i % 100000}`,
|
|
88
|
+
field1num: i % 10,
|
|
89
|
+
field2num: i % 100,
|
|
90
|
+
field3num: i % 1000,
|
|
91
|
+
field4num: i % 10000,
|
|
92
|
+
field5num: i % 100000,
|
|
93
|
+
count: i,
|
|
94
|
+
day: (i % 365),
|
|
95
|
+
month: (i % 12),
|
|
96
|
+
week: (i % 52)
|
|
97
|
+
};
|
|
98
|
+
promArray.push(redis.HSET(`orders:${i}`, record));
|
|
99
|
+
if (promArray.length === maxPromArrayRecords) {
|
|
100
|
+
await Promise.all(promArray);
|
|
101
|
+
promArray = [];
|
|
102
|
+
console.log(i);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
if (promArray.length > 0) {
|
|
106
|
+
await Promise.all(promArray);
|
|
107
|
+
promArray = [];
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
const SearchBy = async (redis, iterations, query, sort) => {
|
|
111
|
+
let getrandomstart;
|
|
112
|
+
let getrandomend;
|
|
113
|
+
let getrandomtotal = 0;
|
|
114
|
+
console.log(chalk_1.default.magenta(`Search By: [${query(0)}]`));
|
|
115
|
+
const start = performance.now();
|
|
116
|
+
for (let i = 0; i < iterations; i++) {
|
|
117
|
+
getrandomstart = performance.now();
|
|
118
|
+
const randomIndex = minRecords + getRandomNumber(maxRecords - minRecords);
|
|
119
|
+
getrandomend = performance.now();
|
|
120
|
+
getrandomtotal += (getrandomend - getrandomstart);
|
|
121
|
+
const queryOptions = {
|
|
122
|
+
RETURN: ['orderno', 'orderdate', 'notes', 'field1', 'field2', 'field3', 'field4', 'field5', 'aggfield'],
|
|
123
|
+
LIMIT: {
|
|
124
|
+
from: 0,
|
|
125
|
+
size: 100
|
|
126
|
+
}
|
|
127
|
+
};
|
|
128
|
+
if (sort) {
|
|
129
|
+
queryOptions.SORTBY = sort();
|
|
130
|
+
}
|
|
131
|
+
const retVal = await redis.ft.search(indexName, `${query(randomIndex)}`, queryOptions);
|
|
132
|
+
if (i % 1000 === 0) {
|
|
133
|
+
console.log(JSON.stringify(retVal));
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
const end = performance.now();
|
|
137
|
+
const diff = end - start;
|
|
138
|
+
console.log(chalk_1.default.green(`Total time to query: [${iterations}] times with [${maxRecords}] records total = [${diff}ms]`));
|
|
139
|
+
console.log(chalk_1.default.yellow(`Total time to generate random numbers: [${getrandomtotal}]`));
|
|
140
|
+
};
|
|
141
|
+
const Query = async (redis) => {
|
|
142
|
+
/*
|
|
143
|
+
await SearchBy(redis, maxQueryLoops, index => `@notes:index ${index}`);
|
|
144
|
+
|
|
145
|
+
await SearchBy(redis, maxQueryLoops, index => `@orderno:[${index} ${index + 5}]`, () => {
|
|
146
|
+
return {
|
|
147
|
+
BY: 'orderno',
|
|
148
|
+
DIRECTION: 'DESC'
|
|
149
|
+
}});
|
|
150
|
+
|
|
151
|
+
await SearchBy(redis, 1, index => `@notes:index 1900000*`, () => {
|
|
152
|
+
return {
|
|
153
|
+
BY: 'orderno',
|
|
154
|
+
DIRECTION: 'DESC'
|
|
155
|
+
}});
|
|
156
|
+
|
|
157
|
+
await SearchBy(redis, maxQueryLoops, index => `@field1:1 @field2:41 @field3:941 @field4:9941 @field5:19941 @orderno:[919941 919941]`);
|
|
158
|
+
//await SearchBy(redis, maxQueryLoops, index => `@orderno:919941`);
|
|
159
|
+
|
|
160
|
+
await SearchBy(redis, maxQueryLoops, index => `@aggfield:1_41_941_9941_19941 @orderno:[919941 919941]`);
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
*/
|
|
164
|
+
/*
|
|
165
|
+
for (let i=0; i < fieldList.length; i++) {
|
|
166
|
+
if (fieldList[i].dataType.localeCompare('JSON') === 0) {
|
|
167
|
+
aggregateList.push({ type: AggregateGroupByReducers.FIRST_VALUE, property: `@${fieldList[i].fieldName}`, AS: fieldList[i].fieldName });
|
|
168
|
+
} else {
|
|
169
|
+
aggregateList.push({ type: AggregateGroupByReducers.SUM, property: `@${fieldList[i].fieldName}`, AS: fieldList[i].fieldName });
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
*/
|
|
173
|
+
const retVal = await redis.ft.aggregate(indexName, "*", {
|
|
174
|
+
STEPS: [
|
|
175
|
+
{
|
|
176
|
+
type: redis_1.AggregateSteps.GROUPBY,
|
|
177
|
+
properties: [`@field1num`, `@field2num`],
|
|
178
|
+
REDUCE: [
|
|
179
|
+
{
|
|
180
|
+
type: redis_1.AggregateGroupByReducers.COUNT_DISTINCT,
|
|
181
|
+
property: '@count',
|
|
182
|
+
AS: 'My_Count'
|
|
183
|
+
},
|
|
184
|
+
]
|
|
185
|
+
},
|
|
186
|
+
{
|
|
187
|
+
type: redis_1.AggregateSteps.SORTBY,
|
|
188
|
+
BY: [
|
|
189
|
+
{
|
|
190
|
+
BY: '@field1num',
|
|
191
|
+
DIRECTION: 'ASC'
|
|
192
|
+
},
|
|
193
|
+
{
|
|
194
|
+
BY: '@field2num',
|
|
195
|
+
DIRECTION: 'ASC'
|
|
196
|
+
}
|
|
197
|
+
]
|
|
198
|
+
},
|
|
199
|
+
{
|
|
200
|
+
type: redis_1.AggregateSteps.LIMIT,
|
|
201
|
+
from: 0,
|
|
202
|
+
size: 5
|
|
203
|
+
}
|
|
204
|
+
]
|
|
205
|
+
});
|
|
206
|
+
console.log(retVal);
|
|
207
|
+
};
|
|
208
|
+
const RunThis = async () => {
|
|
209
|
+
//const redis = await createClient({url: goptions.imRedisMessageProcessorUrl })
|
|
210
|
+
const redis = await (0, redis_1.createClient)()
|
|
211
|
+
.on('error', error => console.log(chalk_1.default.red(error)))
|
|
212
|
+
.connect();
|
|
213
|
+
switch (mode) {
|
|
214
|
+
case 0:
|
|
215
|
+
await CreateIndex(redis);
|
|
216
|
+
break;
|
|
217
|
+
case 1:
|
|
218
|
+
await BuildData(redis);
|
|
219
|
+
break;
|
|
220
|
+
case 2:
|
|
221
|
+
await Query(redis);
|
|
222
|
+
break;
|
|
223
|
+
}
|
|
224
|
+
//redis.quit();
|
|
225
|
+
redis.disconnect();
|
|
226
|
+
console.log(`Done....`);
|
|
227
|
+
};
|
|
228
|
+
const args = process.argv.slice(2);
|
|
229
|
+
if (args.length !== 3) {
|
|
230
|
+
console.log('needs mode, min and max on command line. mode = 0 - create new index, 1 - build entries, 2 - query only');
|
|
231
|
+
console.log(args);
|
|
232
|
+
}
|
|
233
|
+
else {
|
|
234
|
+
mode = parseInt(args[0]);
|
|
235
|
+
minRecords = parseInt(args[1]);
|
|
236
|
+
maxRecords = parseInt(args[2]);
|
|
237
|
+
RunThis();
|
|
238
|
+
}
|
|
239
|
+
//# sourceMappingURL=appredistest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"appredistest.js","sourceRoot":"","sources":["../../src/testing/appredistest.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/* eslint @typescript-eslint/no-explicit-any: 0 */ // --> OFF
|
|
3
|
+
/* eslint @typescript-eslint/no-unused-vars: 0 */ // --> OFF
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
/*
|
|
6
|
+
const someFunc = (val: number, ecb: (message: any) => void): Promise<number> => {
|
|
7
|
+
return new Promise(async (resolve, reject) => {
|
|
8
|
+
const rannum = crypto.randomInt(5000);
|
|
9
|
+
console.log(`processing: [${val}] Waiting: [${rannum}]`)
|
|
10
|
+
await Sleep(rannum);
|
|
11
|
+
console.log(`processing: Completed ...`)
|
|
12
|
+
if (val === 3) {
|
|
13
|
+
//ecb(val);
|
|
14
|
+
//resolve(val);
|
|
15
|
+
reject(val);
|
|
16
|
+
} else {
|
|
17
|
+
resolve(val);
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
*/
|
|
22
|
+
/*
|
|
23
|
+
(async () => {
|
|
24
|
+
for (let i=0; i < 10; i++) {
|
|
25
|
+
promArray.push(someFunc(i));
|
|
26
|
+
}
|
|
27
|
+
const retVal = await Promise.all(promArray).catch((reason) => {
|
|
28
|
+
console.log(`catch error: [${reason}]`);
|
|
29
|
+
});
|
|
30
|
+
console.log(`Results: [${retVal}]`);
|
|
31
|
+
})();
|
|
32
|
+
*/
|
|
33
|
+
/*
|
|
34
|
+
(async () => {
|
|
35
|
+
const promArray: Promise<number>[] = [ ];
|
|
36
|
+
for (let i=0; i < 10; i++) {
|
|
37
|
+
promArray.push(someFunc(i, (error) => {
|
|
38
|
+
console.log(`ERROR CallBack: [${error}]`);
|
|
39
|
+
}));
|
|
40
|
+
}
|
|
41
|
+
try {
|
|
42
|
+
const retVal = await Promise.all(promArray);
|
|
43
|
+
console.log(`Results: [${retVal}]`);
|
|
44
|
+
console.log('Work Continues ...');
|
|
45
|
+
} catch (error) {
|
|
46
|
+
console.log(`ERROR: [${error}]`);
|
|
47
|
+
}
|
|
48
|
+
})();
|
|
49
|
+
*/
|
|
50
|
+
//# sourceMappingURL=promiseTesting.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"promiseTesting.js","sourceRoot":"","sources":["../../src/testing/promiseTesting.ts"],"names":[],"mappings":";AAAA,kDAAkD,CAAE,UAAU;AAC9D,iDAAiD,CAAE,UAAU;;AAK7D;;;;;;;;;;;;;;;;EAgBE;AAEF;;;;;;;;;;EAUE;AAEF;;;;;;;;;;;;;;;;EAgBE"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nsshunt/stsappframework",
|
|
3
|
-
"version": "3.1.
|
|
3
|
+
"version": "3.1.124",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "./types/index.d.ts",
|
|
@@ -25,8 +25,8 @@
|
|
|
25
25
|
},
|
|
26
26
|
"homepage": "https://github.com/nsshunt/stsappframework#readme",
|
|
27
27
|
"devDependencies": {
|
|
28
|
-
"@babel/preset-env": "^7.24.
|
|
29
|
-
"@babel/preset-typescript": "^7.24.
|
|
28
|
+
"@babel/preset-env": "^7.24.7",
|
|
29
|
+
"@babel/preset-typescript": "^7.24.7",
|
|
30
30
|
"@tsconfig/node20": "^20.1.4",
|
|
31
31
|
"@types/cookie-parser": "^1.4.7",
|
|
32
32
|
"@types/debug": "^4.1.12",
|
|
@@ -34,13 +34,13 @@
|
|
|
34
34
|
"@types/jest": "^29.5.12",
|
|
35
35
|
"@types/jsonwebtoken": "^9.0.6",
|
|
36
36
|
"@types/uuid": "^9.0.8",
|
|
37
|
-
"@typescript-eslint/eslint-plugin": "^7.
|
|
38
|
-
"@typescript-eslint/parser": "^7.
|
|
37
|
+
"@typescript-eslint/eslint-plugin": "^7.12.0",
|
|
38
|
+
"@typescript-eslint/parser": "^7.12.0",
|
|
39
39
|
"eslint": "^8.57.0",
|
|
40
40
|
"jest": "^29.7.0",
|
|
41
41
|
"testcontainers": "^10.9.0",
|
|
42
42
|
"typescript": "^5.4.5",
|
|
43
|
-
"vite": "^5.2.
|
|
43
|
+
"vite": "^5.2.13",
|
|
44
44
|
"vitest": "^1.6.0"
|
|
45
45
|
},
|
|
46
46
|
"dependencies": {
|
|
@@ -48,20 +48,20 @@
|
|
|
48
48
|
"@grpc/proto-loader": "^0.7.13",
|
|
49
49
|
"@influxdata/influxdb-client": "^1.33.2",
|
|
50
50
|
"@influxdata/influxdb-client-apis": "^1.33.2",
|
|
51
|
-
"@nsshunt/stsconfig": "^1.25.
|
|
52
|
-
"@nsshunt/stsdatamanagement": "^1.18.
|
|
53
|
-
"@nsshunt/stsobservability": "^1.0.
|
|
54
|
-
"@nsshunt/stsutils": "^1.16.
|
|
51
|
+
"@nsshunt/stsconfig": "^1.25.132",
|
|
52
|
+
"@nsshunt/stsdatamanagement": "^1.18.59",
|
|
53
|
+
"@nsshunt/stsobservability": "^1.0.30",
|
|
54
|
+
"@nsshunt/stsutils": "^1.16.61",
|
|
55
55
|
"@socket.io/cluster-adapter": "^0.2.2",
|
|
56
56
|
"@socket.io/redis-streams-adapter": "^0.2.2",
|
|
57
57
|
"@types/on-headers": "^1.0.3",
|
|
58
58
|
"@types/pidusage": "^2.0.5",
|
|
59
59
|
"@types/tough-cookie": "^4.0.5",
|
|
60
|
-
"axios": "^1.
|
|
60
|
+
"axios": "^1.7.2",
|
|
61
61
|
"chalk": "^4.1.2",
|
|
62
62
|
"cookie-parser": "^1.4.6",
|
|
63
63
|
"cors": "^2.8.5",
|
|
64
|
-
"debug": "^4.3.
|
|
64
|
+
"debug": "^4.3.5",
|
|
65
65
|
"express": "^4.19.1",
|
|
66
66
|
"http-status-codes": "^2.3.0",
|
|
67
67
|
"jayson": "^4.1.0",
|
|
@@ -72,11 +72,11 @@
|
|
|
72
72
|
"on-headers": "^1.0.2",
|
|
73
73
|
"pidusage": "^3.0.2",
|
|
74
74
|
"prom-client": "^15.1.2",
|
|
75
|
-
"redis": "^4.6.
|
|
75
|
+
"redis": "^4.6.14",
|
|
76
76
|
"socket.io": "^4.7.5",
|
|
77
77
|
"socket.io-client": "^4.7.5",
|
|
78
78
|
"supports-color": "^9.4.0",
|
|
79
|
-
"systeminformation": "^5.22.
|
|
79
|
+
"systeminformation": "^5.22.10",
|
|
80
80
|
"tiny-emitter": "^2.1.0",
|
|
81
81
|
"tough-cookie": "^4.1.4",
|
|
82
82
|
"uuid": "^9.0.1",
|
package/runpromise.sh
ADDED
package/runredis.sh
ADDED
package/runredis1.sh
ADDED
package/runredis2.sh
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# openssl req -nodes -new -x509 -keyout server.key -out server.cert
|
|
3
|
+
clear
|
|
4
|
+
node dist/testing/appredistest.js 1 0 1000000
|
|
5
|
+
#node dist/testing/appredistest.js 1 0 1000000 &
|
|
6
|
+
#node dist/testing/appredistest.js 1 1000000 2000000 &
|
|
7
|
+
#node dist/testing/appredistest.js 1 2000000 3000000 &
|
|
8
|
+
#node dist/testing/appredistest.js 1 3000000 4000000 &
|
|
9
|
+
#node dist/testing/appredistest.js 1 4000000 5000000 &
|
|
10
|
+
#node dist/testing/appredistest.js 1 5000000 6000000 &
|
|
11
|
+
#node dist/testing/appredistest.js 1 6000000 7000000 &
|
|
12
|
+
#node dist/testing/appredistest.js 1 7000000 8000000 &
|
|
13
|
+
#node dist/testing/appredistest.js 1 8000000 9000000 &
|
|
14
|
+
#node dist/testing/appredistest.js 1 9000000 10000000 &
|
|
15
|
+
#node dist/testing/appredistest.js 1 10000000 11000000 &
|
|
16
|
+
#node dist/testing/appredistest.js 1 11000000 12000000 &
|
|
17
|
+
#node dist/testing/appredistest.js 1 12000000 13000000 &
|
|
18
|
+
#node dist/testing/appredistest.js 1 13000000 14000000 &
|
|
19
|
+
#node dist/testing/appredistest.js 1 14000000 15000000 &
|
|
20
|
+
#node dist/testing/appredistest.js 1 15000000 16000000 &
|
|
21
|
+
#node dist/testing/appredistest.js 1 16000000 17000000 &
|
|
22
|
+
#node dist/testing/appredistest.js 1 17000000 18000000 &
|
|
23
|
+
#node dist/testing/appredistest.js 1 18000000 19000000 &
|
|
24
|
+
#node dist/testing/appredistest.js 1 19000000 20000000 &
|
package/runredis3.sh
ADDED
|
@@ -11,7 +11,7 @@ import { v4 as uuidv4 } from 'uuid';
|
|
|
11
11
|
|
|
12
12
|
import { GenericContainer } from "testcontainers";
|
|
13
13
|
|
|
14
|
-
describe("Redis Message Handler Test", () =>
|
|
14
|
+
describe.skip("Redis Message Handler Test", () =>
|
|
15
15
|
{
|
|
16
16
|
let ioRedisContainer: any;
|
|
17
17
|
let ioRedisMessageProcessorUrl = '';
|
|
@@ -0,0 +1,303 @@
|
|
|
1
|
+
/* eslint @typescript-eslint/no-explicit-any: 0 */ // --> OFF
|
|
2
|
+
/* eslint @typescript-eslint/no-unused-vars: 0 */ // --> OFF
|
|
3
|
+
|
|
4
|
+
// Start stack server w/out persistence
|
|
5
|
+
//
|
|
6
|
+
// docker stop redis-stack-server
|
|
7
|
+
// docker rm redis-stack-server
|
|
8
|
+
// docker run -d --name redis-stack-server -p 6379:6379 -e REDIS_ARGS="--save \"\"" -e REDIS_ARGS="--appendonly no" redis/redis-stack-server:latest
|
|
9
|
+
//
|
|
10
|
+
// docker stop redis-stack-server; docker rm redis-stack-server; docker run -d --name redis-stack-server -v `pwd`/local-redis-stack.conf:/redis-stack.conf -p 6379:6379 redis/redis-stack-server:latest
|
|
11
|
+
|
|
12
|
+
// get the config
|
|
13
|
+
|
|
14
|
+
// FT.SEARCH idx3 "@eventtime:[-inf 18288]" SORTBY eventtime LIMIT 0 3
|
|
15
|
+
// FT.AGGREGATE idx:rawDataHash "@duration:[-inf 10]" GROUPBY 1 @level2 REDUCE COUNT 0 AS 'B10'
|
|
16
|
+
// FT.AGGREGATE idx:rawDataHash "@duration:[-inf 10]" GROUPBY 1 @level4 REDUCE COUNT 0 AS 'B10' SORTBY 1 @level4 LIMIT 0 50
|
|
17
|
+
// For the normal counts and averages
|
|
18
|
+
// FT.AGGREGATE idx:rawDataHash2 "*" GROUPBY 1 @level2 REDUCE SUM 1 @coreCount REDUCE SUM 1 @duration REDUCE SUM 1 @latency REDUCE SUM 1 @cpu
|
|
19
|
+
// FT.AGGREGATE idx:rawDataHash2 '@level2:stsauth' GROUPBY 1 @level2 REDUCE SUM 1 @coreCount REDUCE SUM 1 @duration REDUCE SUM 1 @latency REDUCE SUM 1 @cpu
|
|
20
|
+
// FT.AGGREGATE idx:lambdaIndexInstant GROUPBY 1 @level2 REDUCE SUM 1 @coreCount REDUCE SUM 1 @duration REDUCE SUM 1 @latency REDUCE SUM 1 @cpu
|
|
21
|
+
// FT.SEARCH idx:lambdaIndexInstant LIMIT 0 3
|
|
22
|
+
|
|
23
|
+
// FT.SEARCH redistestindex01 "*"
|
|
24
|
+
// FT.AGGREGATE redistestindex01 "*" GROUPBY 0 REDUCE SUM 1 @count AS 'The_Count'
|
|
25
|
+
// FT.AGGREGATE redistestindex01 "*" GROUPBY 2 @month @week REDUCE SUM 1 @count AS 'The_Count' SORTBY 4 @month ASC @week ASC
|
|
26
|
+
// FT.SEARCH redistestindex01 "*"
|
|
27
|
+
// FT.AGGREGATE redistestindex01 "*" GROUPBY 3 @field1 @field2 @field3 REDUCE COUNT 0 AS 'The_Count' SORTBY 6 @field1 ASC @field2 ASC @field3 ASC
|
|
28
|
+
|
|
29
|
+
// FT.SEARCH redistestindex01 "@field1:1 @field2:1 @field3:1 @field4:1 @field5:1" LIMIT 1 1
|
|
30
|
+
// FT.AGGREGATE redistestindex01 "@field1:1" GROUPBY 3 @field1 @field2 @field3 REDUCE COUNT 0 AS 'The_Count' SORTBY 6 @field1 ASC @field2 ASC @field3 ASC
|
|
31
|
+
// FT.AGGREGATE redistestindex01 "@field1:1 @field2:1 @field3:1" GROUPBY 3 @field1 @field2 @field3 REDUCE COUNT 0 AS 'The_Count' SORTBY 6 @field1 ASC @field2 ASC @field3 ASC
|
|
32
|
+
|
|
33
|
+
// Settings
|
|
34
|
+
// --------
|
|
35
|
+
// Below appears to fix slow queries
|
|
36
|
+
// FT.CONFIG SET TIMEOUT 0
|
|
37
|
+
//
|
|
38
|
+
// FT.CONFIG SET MAXSEARCHRESULTS 1000000
|
|
39
|
+
// FT.CONFIG SET MAXAGGREGATERESULTS 1000000
|
|
40
|
+
|
|
41
|
+
import { } from 'redis';
|
|
42
|
+
import { SchemaFieldTypes, createClient, RedisClientType, AggregateSteps, AggregateGroupByReducers } from 'redis';
|
|
43
|
+
import crypto from 'crypto';
|
|
44
|
+
|
|
45
|
+
import chalk from 'chalk';
|
|
46
|
+
import { JSONObject } from '@nsshunt/stsutils';
|
|
47
|
+
|
|
48
|
+
const indexName = `redistestindex01`;
|
|
49
|
+
const maxPromArrayRecords = 500;
|
|
50
|
+
const maxQueryLoops = 10000;
|
|
51
|
+
|
|
52
|
+
let minRecords = 0;
|
|
53
|
+
let maxRecords = 1000;
|
|
54
|
+
let mode = 0;
|
|
55
|
+
|
|
56
|
+
function getRandomNumber(max: number) {
|
|
57
|
+
const array = new Uint32Array(1);
|
|
58
|
+
crypto.webcrypto.getRandomValues(array);
|
|
59
|
+
return array[0] % max; // The % operator ensures the value is between 0 and 1000
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
function getRandomString(min: number, max: number) {
|
|
63
|
+
const charset = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
|
|
64
|
+
let result = '';
|
|
65
|
+
const length = min + getRandomNumber(max-min);
|
|
66
|
+
const values = new Uint32Array(length);
|
|
67
|
+
crypto.webcrypto.getRandomValues(values);
|
|
68
|
+
for (let i = 0; i < length; i++) {
|
|
69
|
+
result += charset[values[i] % charset.length];
|
|
70
|
+
}
|
|
71
|
+
return result;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
const CreateIndex = async (redis: RedisClientType) => {
|
|
75
|
+
try {
|
|
76
|
+
const retVal = await redis.ft.dropIndex(indexName);
|
|
77
|
+
console.log(retVal);
|
|
78
|
+
} catch (error) {
|
|
79
|
+
console.log(chalk.red(error))
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
try {
|
|
83
|
+
const retVal = await redis.ft.create(indexName, { // serviceIndexInstant
|
|
84
|
+
'orderno': { type: SchemaFieldTypes.NUMERIC, SORTABLE: true },
|
|
85
|
+
//'orderdate': { type: SchemaFieldTypes.NUMERIC , SORTABLE: true },
|
|
86
|
+
//'notes': { type: SchemaFieldTypes.TEXT, NOINDEX: true },
|
|
87
|
+
'notes': { type: SchemaFieldTypes.TEXT },
|
|
88
|
+
'field1': { type: SchemaFieldTypes.TEXT }, // The fields need to be sortable to be used in group by aggregations
|
|
89
|
+
'field2': { type: SchemaFieldTypes.TEXT },
|
|
90
|
+
'field3': { type: SchemaFieldTypes.TEXT },
|
|
91
|
+
'field4': { type: SchemaFieldTypes.TEXT },
|
|
92
|
+
'field5': { type: SchemaFieldTypes.TEXT },
|
|
93
|
+
'aggfield': { type: SchemaFieldTypes.TEXT },
|
|
94
|
+
'field1num': { type: SchemaFieldTypes.NUMERIC }, // The fields need to be sortable to be used in group by aggregations
|
|
95
|
+
'field2num': { type: SchemaFieldTypes.NUMERIC },
|
|
96
|
+
'field3num': { type: SchemaFieldTypes.NUMERIC },
|
|
97
|
+
'field4num': { type: SchemaFieldTypes.NUMERIC },
|
|
98
|
+
'field5num': { type: SchemaFieldTypes.NUMERIC },
|
|
99
|
+
'day': { type: SchemaFieldTypes.NUMERIC, SORTABLE: true },
|
|
100
|
+
'week': { type: SchemaFieldTypes.NUMERIC, SORTABLE: true },
|
|
101
|
+
'month': { type: SchemaFieldTypes.NUMERIC, SORTABLE: true },
|
|
102
|
+
'count': { type: SchemaFieldTypes.NUMERIC, NOINDEX: true }
|
|
103
|
+
}, {
|
|
104
|
+
ON: 'HASH',
|
|
105
|
+
PREFIX: 'orders:'
|
|
106
|
+
});
|
|
107
|
+
console.log(retVal);
|
|
108
|
+
} catch (error) {
|
|
109
|
+
console.log(chalk.red(error))
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
const BuildData = async (redis: RedisClientType) => {
|
|
114
|
+
|
|
115
|
+
let promArray: Promise<any>[] = [ ];
|
|
116
|
+
|
|
117
|
+
for (let i=minRecords; i < maxRecords; i++) {
|
|
118
|
+
|
|
119
|
+
const record = {
|
|
120
|
+
orderno: i,
|
|
121
|
+
orderdate: new Date().getTime(),
|
|
122
|
+
notes: `Notes for index ${i}`,
|
|
123
|
+
rndtextsmall: `${getRandomString(5, 20)}`,
|
|
124
|
+
rndtextmedium: `${getRandomString(20, 40)}`,
|
|
125
|
+
rndtextlarge: `${getRandomString(40, 80)}`,
|
|
126
|
+
field1: `${i % 10}`,
|
|
127
|
+
field2: `${i % 100}`,
|
|
128
|
+
field3: `${i % 1000}`,
|
|
129
|
+
field4: `${i % 10000}`,
|
|
130
|
+
field5: `${i % 100000}`,
|
|
131
|
+
aggfield: `${i % 10}_${i % 100}_${i % 1000}_${i % 10000}_${i % 100000}`,
|
|
132
|
+
field1num: i % 10,
|
|
133
|
+
field2num: i % 100,
|
|
134
|
+
field3num: i % 1000,
|
|
135
|
+
field4num: i % 10000,
|
|
136
|
+
field5num: i % 100000,
|
|
137
|
+
count: i,
|
|
138
|
+
day: (i % 365),
|
|
139
|
+
month: (i % 12),
|
|
140
|
+
week: (i % 52)
|
|
141
|
+
} as any;
|
|
142
|
+
|
|
143
|
+
promArray.push(redis.HSET(`orders:${i}`, record));
|
|
144
|
+
|
|
145
|
+
if (promArray.length === maxPromArrayRecords) {
|
|
146
|
+
await Promise.all(promArray);
|
|
147
|
+
promArray = [ ];
|
|
148
|
+
console.log(i);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
if (promArray.length > 0) {
|
|
153
|
+
await Promise.all(promArray);
|
|
154
|
+
promArray = [ ];
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
const SearchBy = async (redis: RedisClientType, iterations: number, query: (index: number) => string, sort?: () => JSONObject) => {
|
|
159
|
+
let getrandomstart;
|
|
160
|
+
let getrandomend;
|
|
161
|
+
let getrandomtotal = 0;
|
|
162
|
+
|
|
163
|
+
console.log(chalk.magenta(`Search By: [${query(0)}]`));
|
|
164
|
+
|
|
165
|
+
const start = performance.now();
|
|
166
|
+
for (let i=0; i < iterations; i++) {
|
|
167
|
+
|
|
168
|
+
getrandomstart = performance.now();
|
|
169
|
+
const randomIndex = minRecords + getRandomNumber(maxRecords - minRecords);
|
|
170
|
+
getrandomend = performance.now();
|
|
171
|
+
getrandomtotal += (getrandomend - getrandomstart);
|
|
172
|
+
|
|
173
|
+
const queryOptions = {
|
|
174
|
+
RETURN: [ 'orderno', 'orderdate', 'notes', 'field1', 'field2', 'field3', 'field4', 'field5', 'aggfield' ],
|
|
175
|
+
LIMIT: {
|
|
176
|
+
from: 0,
|
|
177
|
+
size: 100
|
|
178
|
+
}
|
|
179
|
+
} as any;
|
|
180
|
+
|
|
181
|
+
if (sort) {
|
|
182
|
+
queryOptions.SORTBY = sort();
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
const retVal = await redis.ft.search(indexName, `${query(randomIndex)}`, queryOptions);
|
|
186
|
+
|
|
187
|
+
if (i % 1000 === 0) {
|
|
188
|
+
console.log(JSON.stringify(retVal));
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
const end = performance.now();
|
|
192
|
+
const diff = end - start;
|
|
193
|
+
console.log(chalk.green(`Total time to query: [${iterations}] times with [${maxRecords}] records total = [${diff}ms]`));
|
|
194
|
+
console.log(chalk.yellow(`Total time to generate random numbers: [${getrandomtotal}]`));
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
const Query = async (redis: RedisClientType) => {
|
|
198
|
+
/*
|
|
199
|
+
await SearchBy(redis, maxQueryLoops, index => `@notes:index ${index}`);
|
|
200
|
+
|
|
201
|
+
await SearchBy(redis, maxQueryLoops, index => `@orderno:[${index} ${index + 5}]`, () => {
|
|
202
|
+
return {
|
|
203
|
+
BY: 'orderno',
|
|
204
|
+
DIRECTION: 'DESC'
|
|
205
|
+
}});
|
|
206
|
+
|
|
207
|
+
await SearchBy(redis, 1, index => `@notes:index 1900000*`, () => {
|
|
208
|
+
return {
|
|
209
|
+
BY: 'orderno',
|
|
210
|
+
DIRECTION: 'DESC'
|
|
211
|
+
}});
|
|
212
|
+
|
|
213
|
+
await SearchBy(redis, maxQueryLoops, index => `@field1:1 @field2:41 @field3:941 @field4:9941 @field5:19941 @orderno:[919941 919941]`);
|
|
214
|
+
//await SearchBy(redis, maxQueryLoops, index => `@orderno:919941`);
|
|
215
|
+
|
|
216
|
+
await SearchBy(redis, maxQueryLoops, index => `@aggfield:1_41_941_9941_19941 @orderno:[919941 919941]`);
|
|
217
|
+
|
|
218
|
+
|
|
219
|
+
*/
|
|
220
|
+
|
|
221
|
+
|
|
222
|
+
/*
|
|
223
|
+
for (let i=0; i < fieldList.length; i++) {
|
|
224
|
+
if (fieldList[i].dataType.localeCompare('JSON') === 0) {
|
|
225
|
+
aggregateList.push({ type: AggregateGroupByReducers.FIRST_VALUE, property: `@${fieldList[i].fieldName}`, AS: fieldList[i].fieldName });
|
|
226
|
+
} else {
|
|
227
|
+
aggregateList.push({ type: AggregateGroupByReducers.SUM, property: `@${fieldList[i].fieldName}`, AS: fieldList[i].fieldName });
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
*/
|
|
231
|
+
|
|
232
|
+
const retVal = await redis.ft.aggregate(indexName, "*", {
|
|
233
|
+
STEPS: [
|
|
234
|
+
{
|
|
235
|
+
type: AggregateSteps.GROUPBY,
|
|
236
|
+
properties: [`@field1num`, `@field2num`],
|
|
237
|
+
REDUCE: [
|
|
238
|
+
{
|
|
239
|
+
type: AggregateGroupByReducers.COUNT_DISTINCT,
|
|
240
|
+
property: '@count',
|
|
241
|
+
AS: 'My_Count'
|
|
242
|
+
},
|
|
243
|
+
]
|
|
244
|
+
},
|
|
245
|
+
{
|
|
246
|
+
type: AggregateSteps.SORTBY,
|
|
247
|
+
BY: [
|
|
248
|
+
{
|
|
249
|
+
BY: '@field1num',
|
|
250
|
+
DIRECTION: 'ASC'
|
|
251
|
+
},
|
|
252
|
+
{
|
|
253
|
+
BY: '@field2num',
|
|
254
|
+
DIRECTION: 'ASC'
|
|
255
|
+
}
|
|
256
|
+
]
|
|
257
|
+
},
|
|
258
|
+
{
|
|
259
|
+
type: AggregateSteps.LIMIT,
|
|
260
|
+
from: 0,
|
|
261
|
+
size: 5
|
|
262
|
+
}
|
|
263
|
+
]
|
|
264
|
+
});
|
|
265
|
+
console.log(retVal);
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
const RunThis = async () => {
|
|
269
|
+
|
|
270
|
+
//const redis = await createClient({url: goptions.imRedisMessageProcessorUrl })
|
|
271
|
+
const redis: RedisClientType = await createClient()
|
|
272
|
+
.on('error', error => console.log(chalk.red(error)))
|
|
273
|
+
.connect() as any
|
|
274
|
+
|
|
275
|
+
switch (mode) {
|
|
276
|
+
case 0 :
|
|
277
|
+
await CreateIndex(redis);
|
|
278
|
+
break;
|
|
279
|
+
case 1 :
|
|
280
|
+
await BuildData(redis);
|
|
281
|
+
break;
|
|
282
|
+
case 2 :
|
|
283
|
+
await Query(redis);
|
|
284
|
+
break;
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
//redis.quit();
|
|
288
|
+
redis.disconnect();
|
|
289
|
+
|
|
290
|
+
console.log(`Done....`);
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
const args = process.argv.slice(2);
|
|
294
|
+
|
|
295
|
+
if (args.length !== 3) {
|
|
296
|
+
console.log('needs mode, min and max on command line. mode = 0 - create new index, 1 - build entries, 2 - query only')
|
|
297
|
+
console.log(args);
|
|
298
|
+
} else {
|
|
299
|
+
mode = parseInt(args[0]);
|
|
300
|
+
minRecords = parseInt(args[1]);
|
|
301
|
+
maxRecords = parseInt(args[2]);
|
|
302
|
+
RunThis();
|
|
303
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/* eslint @typescript-eslint/no-explicit-any: 0 */ // --> OFF
|
|
2
|
+
/* eslint @typescript-eslint/no-unused-vars: 0 */ // --> OFF
|
|
3
|
+
|
|
4
|
+
import { Sleep } from "@nsshunt/stsutils";
|
|
5
|
+
import crypto from 'crypto';
|
|
6
|
+
|
|
7
|
+
/*
|
|
8
|
+
const someFunc = (val: number, ecb: (message: any) => void): Promise<number> => {
|
|
9
|
+
return new Promise(async (resolve, reject) => {
|
|
10
|
+
const rannum = crypto.randomInt(5000);
|
|
11
|
+
console.log(`processing: [${val}] Waiting: [${rannum}]`)
|
|
12
|
+
await Sleep(rannum);
|
|
13
|
+
console.log(`processing: Completed ...`)
|
|
14
|
+
if (val === 3) {
|
|
15
|
+
//ecb(val);
|
|
16
|
+
//resolve(val);
|
|
17
|
+
reject(val);
|
|
18
|
+
} else {
|
|
19
|
+
resolve(val);
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
*/
|
|
24
|
+
|
|
25
|
+
/*
|
|
26
|
+
(async () => {
|
|
27
|
+
for (let i=0; i < 10; i++) {
|
|
28
|
+
promArray.push(someFunc(i));
|
|
29
|
+
}
|
|
30
|
+
const retVal = await Promise.all(promArray).catch((reason) => {
|
|
31
|
+
console.log(`catch error: [${reason}]`);
|
|
32
|
+
});
|
|
33
|
+
console.log(`Results: [${retVal}]`);
|
|
34
|
+
})();
|
|
35
|
+
*/
|
|
36
|
+
|
|
37
|
+
/*
|
|
38
|
+
(async () => {
|
|
39
|
+
const promArray: Promise<number>[] = [ ];
|
|
40
|
+
for (let i=0; i < 10; i++) {
|
|
41
|
+
promArray.push(someFunc(i, (error) => {
|
|
42
|
+
console.log(`ERROR CallBack: [${error}]`);
|
|
43
|
+
}));
|
|
44
|
+
}
|
|
45
|
+
try {
|
|
46
|
+
const retVal = await Promise.all(promArray);
|
|
47
|
+
console.log(`Results: [${retVal}]`);
|
|
48
|
+
console.log('Work Continues ...');
|
|
49
|
+
} catch (error) {
|
|
50
|
+
console.log(`ERROR: [${error}]`);
|
|
51
|
+
}
|
|
52
|
+
})();
|
|
53
|
+
*/
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"appredistest.d.ts","sourceRoot":"","sources":["../../src/testing/appredistest.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"promiseTesting.d.ts","sourceRoot":"","sources":["../../src/testing/promiseTesting.ts"],"names":[],"mappings":""}
|