@nestia/e2e 0.1.7 → 0.2.0

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/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  [![npm version](https://img.shields.io/npm/v/@nestia/e2e.svg)](https://www.npmjs.com/package/@nestia/e2e)
4
4
  [![Downloads](https://img.shields.io/npm/dm/@nestia/e2e.svg)](https://www.npmjs.com/package/@nestia/e2e)
5
5
  [![Build Status](https://github.com/samchon/typia/workflows/build/badge.svg)](https://github.com/samchon/nestia/actions?query=workflow%3Abuild)
6
- [![Guide Documents](https://img.shields.io/badge/wiki-documentation-forestgreen)](https://github.com/samchon/nestia/wiki)
6
+ [![Guide Documents](https://img.shields.io/badge/wiki-documentation-forestgreen)](https://typia.io/docs/)
7
7
 
8
8
  Helper library for E2E testing in NestJS.
9
9
 
@@ -4,13 +4,12 @@
4
4
  * @author Jeongho Nam - https://github.com/samchon
5
5
  */
6
6
  export declare namespace ArrayUtil {
7
- function asyncFilter<Input>(elements: readonly Input[], pred: (elem: Input, index: number, array: readonly Input[]) => Promise<boolean>): Promise<Input[]>;
8
- function asyncForEach<Input>(elements: readonly Input[], closure: (elem: Input, index: number, array: readonly Input[]) => Promise<any>): Promise<void>;
9
- function asyncMap<Input, Output>(elements: readonly Input[], closure: (elem: Input, index: number, array: readonly Input[]) => Promise<Output>): Promise<Output[]>;
10
- function asyncRepeat<T>(count: number, closure: (index: number) => Promise<T>): Promise<T[]>;
11
- function has<T>(elements: readonly T[], pred: (elem: T) => boolean): boolean;
12
- function repeat<T>(count: number, closure: (index: number) => T): T[];
13
- function last<T>(array: T[]): T;
14
- function flat<T>(matrix: T[][]): T[];
15
- function subsets<T>(array: T[]): T[][];
7
+ const asyncFilter: <Input>(elements: readonly Input[]) => (pred: (elem: Input, index: number, array: readonly Input[]) => Promise<boolean>) => Promise<Input[]>;
8
+ const asyncForEach: <Input>(elements: readonly Input[]) => (closure: (elem: Input, index: number, array: readonly Input[]) => Promise<any>) => Promise<void>;
9
+ const asyncMap: <Input>(elements: readonly Input[]) => <Output>(closure: (elem: Input, index: number, array: readonly Input[]) => Promise<Output>) => Promise<Output[]>;
10
+ const asyncRepeat: (count: number) => <T>(closure: (index: number) => Promise<T>) => Promise<T[]>;
11
+ const has: <T>(elements: readonly T[]) => (pred: (elem: T) => boolean) => boolean;
12
+ const repeat: (count: number) => <T>(closure: (index: number) => T) => T[];
13
+ const flat: <T>(matrix: T[][]) => T[];
14
+ const subsets: <T>(array: T[]) => T[][];
16
15
  }
package/lib/ArrayUtil.js CHANGED
@@ -80,15 +80,16 @@ exports.ArrayUtil = void 0;
80
80
  */
81
81
  var ArrayUtil;
82
82
  (function (ArrayUtil) {
83
- function asyncFilter(elements, pred) {
84
- return __awaiter(this, void 0, void 0, function () {
83
+ var _this = this;
84
+ ArrayUtil.asyncFilter = function (elements) {
85
+ return function (pred) { return __awaiter(_this, void 0, void 0, function () {
85
86
  var ret;
86
87
  var _this = this;
87
88
  return __generator(this, function (_a) {
88
89
  switch (_a.label) {
89
90
  case 0:
90
91
  ret = [];
91
- return [4 /*yield*/, asyncForEach(elements, function (elem, index, array) { return __awaiter(_this, void 0, void 0, function () {
92
+ return [4 /*yield*/, ArrayUtil.asyncForEach(elements)(function (elem, index, array) { return __awaiter(_this, void 0, void 0, function () {
92
93
  var flag;
93
94
  return __generator(this, function (_a) {
94
95
  switch (_a.label) {
@@ -106,14 +107,13 @@ var ArrayUtil;
106
107
  return [2 /*return*/, ret];
107
108
  }
108
109
  });
109
- });
110
- }
111
- ArrayUtil.asyncFilter = asyncFilter;
112
- function asyncForEach(elements, closure) {
113
- return __awaiter(this, void 0, void 0, function () {
110
+ }); };
111
+ };
112
+ ArrayUtil.asyncForEach = function (elements) {
113
+ return function (closure) { return __awaiter(_this, void 0, void 0, function () {
114
114
  return __generator(this, function (_a) {
115
115
  switch (_a.label) {
116
- case 0: return [4 /*yield*/, asyncRepeat(elements.length, function (index) {
116
+ case 0: return [4 /*yield*/, ArrayUtil.asyncRepeat(elements.length)(function (index) {
117
117
  return closure(elements[index], index, elements);
118
118
  })];
119
119
  case 1:
@@ -121,18 +121,17 @@ var ArrayUtil;
121
121
  return [2 /*return*/];
122
122
  }
123
123
  });
124
- });
125
- }
126
- ArrayUtil.asyncForEach = asyncForEach;
127
- function asyncMap(elements, closure) {
128
- return __awaiter(this, void 0, void 0, function () {
124
+ }); };
125
+ };
126
+ ArrayUtil.asyncMap = function (elements) {
127
+ return function (closure) { return __awaiter(_this, void 0, void 0, function () {
129
128
  var ret;
130
129
  var _this = this;
131
130
  return __generator(this, function (_a) {
132
131
  switch (_a.label) {
133
132
  case 0:
134
133
  ret = [];
135
- return [4 /*yield*/, asyncForEach(elements, function (elem, index, array) { return __awaiter(_this, void 0, void 0, function () {
134
+ return [4 /*yield*/, ArrayUtil.asyncForEach(elements)(function (elem, index, array) { return __awaiter(_this, void 0, void 0, function () {
136
135
  var output;
137
136
  return __generator(this, function (_a) {
138
137
  switch (_a.label) {
@@ -149,11 +148,10 @@ var ArrayUtil;
149
148
  return [2 /*return*/, ret];
150
149
  }
151
150
  });
152
- });
153
- }
154
- ArrayUtil.asyncMap = asyncMap;
155
- function asyncRepeat(count, closure) {
156
- return __awaiter(this, void 0, void 0, function () {
151
+ }); };
152
+ };
153
+ ArrayUtil.asyncRepeat = function (count) {
154
+ return function (closure) { return __awaiter(_this, void 0, void 0, function () {
157
155
  var indexes, output, indexes_1, indexes_1_1, index, _a, _b, e_1_1;
158
156
  var e_1, _c;
159
157
  return __generator(this, function (_d) {
@@ -193,27 +191,23 @@ var ArrayUtil;
193
191
  case 8: return [2 /*return*/, output];
194
192
  }
195
193
  });
196
- });
197
- }
198
- ArrayUtil.asyncRepeat = asyncRepeat;
199
- function has(elements, pred) {
200
- return elements.find(pred) !== undefined;
201
- }
202
- ArrayUtil.has = has;
203
- function repeat(count, closure) {
204
- return new Array(count).fill("").map(function (_, index) { return closure(index); });
205
- }
206
- ArrayUtil.repeat = repeat;
207
- function last(array) {
208
- return array[array.length - 1];
209
- }
210
- ArrayUtil.last = last;
211
- function flat(matrix) {
194
+ }); };
195
+ };
196
+ ArrayUtil.has = function (elements) {
197
+ return function (pred) {
198
+ return elements.find(pred) !== undefined;
199
+ };
200
+ };
201
+ ArrayUtil.repeat = function (count) {
202
+ return function (closure) {
203
+ return new Array(count).fill("").map(function (_, index) { return closure(index); });
204
+ };
205
+ };
206
+ ArrayUtil.flat = function (matrix) {
212
207
  var _a;
213
208
  return (_a = []).concat.apply(_a, __spreadArray([], __read(matrix), false));
214
- }
215
- ArrayUtil.flat = flat;
216
- function subsets(array) {
209
+ };
210
+ ArrayUtil.subsets = function (array) {
217
211
  var check = new Array(array.length).fill(false);
218
212
  var output = [];
219
213
  var dfs = function (depth) {
@@ -228,7 +222,6 @@ var ArrayUtil;
228
222
  };
229
223
  dfs(0);
230
224
  return output;
231
- }
232
- ArrayUtil.subsets = subsets;
225
+ };
233
226
  })(ArrayUtil = exports.ArrayUtil || (exports.ArrayUtil = {}));
234
227
  //# sourceMappingURL=ArrayUtil.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ArrayUtil.js","sourceRoot":"","sources":["../src/ArrayUtil.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ArrayUtil.js","sourceRoot":"","sources":["../src/ArrayUtil.ts"],"names":[],"mappings":"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"}
@@ -10,7 +10,7 @@ export declare namespace RandomGenerator {
10
10
  * @param length Length of alphabets
11
11
  * @returns Generated alphabets
12
12
  */
13
- function alphabets(length: number): string;
13
+ const alphabets: (length: number) => string;
14
14
  /**
15
15
  * Generate random alpha-numeric characters.
16
16
  *
@@ -19,14 +19,14 @@ export declare namespace RandomGenerator {
19
19
  * @param length Length of characters
20
20
  * @returns Generated string
21
21
  */
22
- function alphaNumeric(length: number): string;
22
+ const alphaNumeric: (length: number) => string;
23
23
  /**
24
24
  * Generate random name.
25
25
  *
26
26
  * @param length Length of paragraph, default is 2 or 3
27
27
  * @returns Generated name
28
28
  */
29
- function name(length?: number): string;
29
+ const name: (length?: number) => string;
30
30
  /**
31
31
  * Generate random paragraph.
32
32
  *
@@ -47,25 +47,15 @@ export declare namespace RandomGenerator {
47
47
  * @param content Target content
48
48
  * @returns Random substring
49
49
  */
50
- function substring(content: string): string;
50
+ const substring: (content: string) => string;
51
51
  /**
52
52
  * Generate random mobile number.
53
53
  *
54
54
  * @param prefix Prefix string, default is "010"
55
55
  * @returns Random mobile number
56
+ * @example 010-334-0067
56
57
  */
57
- function mobile(prefix?: string): string;
58
- /**
59
- * Generate random digit.
60
- *
61
- * Generate random digit that filling front with zero characters
62
- * when value is less than maximum cipher.
63
- *
64
- * @param minC Minimum cipher
65
- * @param maxC Maximum cipher
66
- * @returns
67
- */
68
- function digit(minC: number, maxC: number): string;
58
+ const mobile: (prefix?: string) => string;
69
59
  /**
70
60
  * Generate random date.
71
61
  *
@@ -73,7 +63,7 @@ export declare namespace RandomGenerator {
73
63
  * @param range Range of random milliseconds
74
64
  * @returns Random date
75
65
  */
76
- function date(from: Date, range: number): Date;
66
+ const date: (from: Date) => (range: number) => Date;
77
67
  /**
78
68
  * Pick random elements from an array.
79
69
  *
@@ -81,12 +71,12 @@ export declare namespace RandomGenerator {
81
71
  * @param count Number of count to pick
82
72
  * @returns Sampled array
83
73
  */
84
- function sample<T>(array: T[], count: number): T[];
74
+ const sample: <T>(array: T[]) => (count: number) => T[];
85
75
  /**
86
76
  * Pick random element from an array.
87
77
  *
88
78
  * @param array Target array
89
79
  * @returns picked element
90
80
  */
91
- function pick<T>(array: T[]): T;
81
+ const pick: <T>(array: T[]) => T;
92
82
  }
@@ -21,13 +21,12 @@ var RandomGenerator;
21
21
  * @param length Length of alphabets
22
22
  * @returns Generated alphabets
23
23
  */
24
- function alphabets(length) {
24
+ RandomGenerator.alphabets = function (length) {
25
25
  return new Array(length)
26
26
  .fill("")
27
27
  .map(function () { return CHARACTERS[(0, tstl_1.randint)(0, CHARACTERS.length - 1)]; })
28
28
  .join("");
29
- }
30
- RandomGenerator.alphabets = alphabets;
29
+ };
31
30
  /**
32
31
  * Generate random alpha-numeric characters.
33
32
  *
@@ -36,24 +35,22 @@ var RandomGenerator;
36
35
  * @param length Length of characters
37
36
  * @returns Generated string
38
37
  */
39
- function alphaNumeric(length) {
38
+ RandomGenerator.alphaNumeric = function (length) {
40
39
  return new Array(length)
41
40
  .fill("")
42
41
  .map(function () { return LETTERS[(0, tstl_1.randint)(0, LETTERS.length - 1)]; })
43
42
  .join("");
44
- }
45
- RandomGenerator.alphaNumeric = alphaNumeric;
43
+ };
46
44
  /**
47
45
  * Generate random name.
48
46
  *
49
47
  * @param length Length of paragraph, default is 2 or 3
50
48
  * @returns Generated name
51
49
  */
52
- function name(length) {
50
+ RandomGenerator.name = function (length) {
53
51
  if (length === void 0) { length = (0, tstl_1.randint)(2, 3); }
54
52
  return RandomGenerator.paragraph(length)();
55
- }
56
- RandomGenerator.name = name;
53
+ };
57
54
  /**
58
55
  * Generate random paragraph.
59
56
  *
@@ -72,7 +69,7 @@ var RandomGenerator;
72
69
  if (wordMax === void 0) { wordMax = 7; }
73
70
  return new Array(sentences)
74
71
  .fill("")
75
- .map(function () { return alphabets((0, tstl_1.randint)(wordMin, wordMax)); })
72
+ .map(function () { return RandomGenerator.alphabets((0, tstl_1.randint)(wordMin, wordMax)); })
76
73
  .join(" ");
77
74
  };
78
75
  };
@@ -115,40 +112,29 @@ var RandomGenerator;
115
112
  * @param content Target content
116
113
  * @returns Random substring
117
114
  */
118
- function substring(content) {
115
+ RandomGenerator.substring = function (content) {
119
116
  var first = (0, tstl_1.randint)(0, content.length - 1);
120
117
  var last = (0, tstl_1.randint)(first + 1, content.length);
121
118
  return content.substring(first, last).trim();
122
- }
123
- RandomGenerator.substring = substring;
119
+ };
124
120
  /**
125
121
  * Generate random mobile number.
126
122
  *
127
123
  * @param prefix Prefix string, default is "010"
128
124
  * @returns Random mobile number
125
+ * @example 010-334-0067
129
126
  */
130
- function mobile(prefix) {
127
+ RandomGenerator.mobile = function (prefix) {
131
128
  if (prefix === void 0) { prefix = "010"; }
132
- return "".concat(prefix).concat(digit(3, 4)).concat(digit(4, 4));
133
- }
134
- RandomGenerator.mobile = mobile;
135
- /**
136
- * Generate random digit.
137
- *
138
- * Generate random digit that filling front with zero characters
139
- * when value is less than maximum cipher.
140
- *
141
- * @param minC Minimum cipher
142
- * @param maxC Maximum cipher
143
- * @returns
144
- */
145
- function digit(minC, maxC) {
146
- var val = (0, tstl_1.randint)(0, Math.pow(10.0, maxC) - 1);
147
- var log10 = val ? Math.floor(Math.log10(val)) + 1 : 0;
148
- var prefix = "0".repeat(Math.max(0, minC - log10));
149
- return prefix + val.toString();
150
- }
151
- RandomGenerator.digit = digit;
129
+ return [
130
+ prefix,
131
+ (function () {
132
+ var value = (0, tstl_1.randint)(0, 9999);
133
+ return value.toString().padStart(value < 1000 ? 3 : 4, "0");
134
+ })(),
135
+ (0, tstl_1.randint)(0, 9999).toString().padStart(4, "0"),
136
+ ].join("-");
137
+ };
152
138
  /**
153
139
  * Generate random date.
154
140
  *
@@ -156,11 +142,11 @@ var RandomGenerator;
156
142
  * @param range Range of random milliseconds
157
143
  * @returns Random date
158
144
  */
159
- function date(from, range) {
160
- var time = from.getTime() + (0, tstl_1.randint)(0, range);
161
- return new Date(time);
162
- }
163
- RandomGenerator.date = date;
145
+ RandomGenerator.date = function (from) {
146
+ return function (range) {
147
+ return new Date(from.getTime() + (0, tstl_1.randint)(0, range));
148
+ };
149
+ };
164
150
  /**
165
151
  * Pick random elements from an array.
166
152
  *
@@ -168,21 +154,21 @@ var RandomGenerator;
168
154
  * @param count Number of count to pick
169
155
  * @returns Sampled array
170
156
  */
171
- function sample(array, count) {
172
- var ret = [];
173
- (0, ranges_1.sample)(array, (0, tstl_1.back_inserter)(ret), count);
174
- return ret;
175
- }
176
- RandomGenerator.sample = sample;
157
+ RandomGenerator.sample = function (array) {
158
+ return function (count) {
159
+ var ret = [];
160
+ (0, ranges_1.sample)(array, (0, tstl_1.back_inserter)(ret), count);
161
+ return ret;
162
+ };
163
+ };
177
164
  /**
178
165
  * Pick random element from an array.
179
166
  *
180
167
  * @param array Target array
181
168
  * @returns picked element
182
169
  */
183
- function pick(array) {
170
+ RandomGenerator.pick = function (array) {
184
171
  return array[(0, tstl_1.randint)(0, array.length - 1)];
185
- }
186
- RandomGenerator.pick = pick;
172
+ };
187
173
  })(RandomGenerator = exports.RandomGenerator || (exports.RandomGenerator = {}));
188
174
  //# sourceMappingURL=RandomGenerator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RandomGenerator.js","sourceRoot":"","sources":["../src/RandomGenerator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RandomGenerator.js","sourceRoot":"","sources":["../src/RandomGenerator.ts"],"names":[],"mappings":"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"}
@@ -13,12 +13,12 @@ export declare namespace StopWatch {
13
13
  * @param task
14
14
  * @returns
15
15
  */
16
- function measure(task: Task): Promise<number>;
16
+ const measure: (task: Task) => Promise<number>;
17
17
  /**
18
18
  *
19
19
  * @param title
20
20
  * @param task
21
21
  * @returns
22
22
  */
23
- function trace(title: string, task: Task): Promise<number>;
23
+ const trace: (title: string) => (task: Task) => Promise<number>;
24
24
  }
package/lib/StopWatch.js CHANGED
@@ -44,49 +44,46 @@ exports.StopWatch = void 0;
44
44
  */
45
45
  var StopWatch;
46
46
  (function (StopWatch) {
47
+ var _this = this;
47
48
  /**
48
49
  *
49
50
  * @param task
50
51
  * @returns
51
52
  */
52
- function measure(task) {
53
- return __awaiter(this, void 0, void 0, function () {
54
- var time;
55
- return __generator(this, function (_a) {
56
- switch (_a.label) {
57
- case 0:
58
- time = Date.now();
59
- return [4 /*yield*/, task()];
60
- case 1:
61
- _a.sent();
62
- return [2 /*return*/, Date.now() - time];
63
- }
64
- });
53
+ StopWatch.measure = function (task) { return __awaiter(_this, void 0, void 0, function () {
54
+ var time;
55
+ return __generator(this, function (_a) {
56
+ switch (_a.label) {
57
+ case 0:
58
+ time = Date.now();
59
+ return [4 /*yield*/, task()];
60
+ case 1:
61
+ _a.sent();
62
+ return [2 /*return*/, Date.now() - time];
63
+ }
65
64
  });
66
- }
67
- StopWatch.measure = measure;
65
+ }); };
68
66
  /**
69
67
  *
70
68
  * @param title
71
69
  * @param task
72
70
  * @returns
73
71
  */
74
- function trace(title, task) {
75
- return __awaiter(this, void 0, void 0, function () {
72
+ StopWatch.trace = function (title) {
73
+ return function (task) { return __awaiter(_this, void 0, void 0, function () {
76
74
  var time;
77
75
  return __generator(this, function (_a) {
78
76
  switch (_a.label) {
79
77
  case 0:
80
78
  process.stdout.write(" - ".concat(title, ": "));
81
- return [4 /*yield*/, measure(task)];
79
+ return [4 /*yield*/, StopWatch.measure(task)];
82
80
  case 1:
83
81
  time = _a.sent();
84
82
  console.log("".concat(time.toLocaleString(), " ms"));
85
83
  return [2 /*return*/, time];
86
84
  }
87
85
  });
88
- });
89
- }
90
- StopWatch.trace = trace;
86
+ }); };
87
+ };
91
88
  })(StopWatch = exports.StopWatch || (exports.StopWatch = {}));
92
89
  //# sourceMappingURL=StopWatch.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"StopWatch.js","sourceRoot":"","sources":["../src/StopWatch.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;GAIG;AACH,IAAiB,SAAS,CA8BzB;AA9BD,WAAiB,SAAS;IAMtB;;;;OAIG;IACH,SAAsB,OAAO,CAAC,IAAU;;;;;;wBAC9B,IAAI,GAAW,IAAI,CAAC,GAAG,EAAE,CAAC;wBAChC,qBAAM,IAAI,EAAE,EAAA;;wBAAZ,SAAY,CAAC;wBACb,sBAAO,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,EAAC;;;;KAC5B;IAJqB,iBAAO,UAI5B,CAAA;IAED;;;;;OAKG;IACH,SAAsB,KAAK,CAAC,KAAa,EAAE,IAAU;;;;;;wBACjD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,cAAO,KAAK,OAAI,CAAC,CAAC;wBAClB,qBAAM,OAAO,CAAC,IAAI,CAAC,EAAA;;wBAAlC,IAAI,GAAW,SAAmB;wBAExC,OAAO,CAAC,GAAG,CAAC,UAAG,IAAI,CAAC,cAAc,EAAE,QAAK,CAAC,CAAC;wBAC3C,sBAAO,IAAI,EAAC;;;;KACf;IANqB,eAAK,QAM1B,CAAA;AACL,CAAC,EA9BgB,SAAS,GAAT,iBAAS,KAAT,iBAAS,QA8BzB"}
1
+ {"version":3,"file":"StopWatch.js","sourceRoot":"","sources":["../src/StopWatch.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;GAIG;AACH,IAAiB,SAAS,CAgCzB;AAhCD,WAAiB,SAAS;;IAMtB;;;;OAIG;IACU,iBAAO,GAAG,UAAO,IAAU;;;;;oBAC9B,IAAI,GAAW,IAAI,CAAC,GAAG,EAAE,CAAC;oBAChC,qBAAM,IAAI,EAAE,EAAA;;oBAAZ,SAAY,CAAC;oBACb,sBAAO,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,EAAC;;;SAC5B,CAAC;IAEF;;;;;OAKG;IACU,eAAK,GACd,UAAC,KAAa;QACd,OAAA,UAAO,IAAU;;;;;wBACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,cAAO,KAAK,OAAI,CAAC,CAAC;wBAClB,qBAAM,UAAA,OAAO,CAAC,IAAI,CAAC,EAAA;;wBAAlC,IAAI,GAAW,SAAmB;wBAExC,OAAO,CAAC,GAAG,CAAC,UAAG,IAAI,CAAC,cAAc,EAAE,QAAK,CAAC,CAAC;wBAC3C,sBAAO,IAAI,EAAC;;;aACf;IAND,CAMC,CAAC;AACV,CAAC,EAhCgB,SAAS,GAAT,iBAAS,KAAT,iBAAS,QAgCzB"}
@@ -12,7 +12,7 @@ export declare namespace TestValidator {
12
12
  * @param title Title of error message when condition is not satisfied
13
13
  * @return Currying function
14
14
  */
15
- const predicate: (title: string) => (condition: () => boolean) => void;
15
+ const predicate: (title: string) => <T extends boolean | (() => boolean) | (() => Promise<boolean>)>(condition: T) => T extends () => Promise<boolean> ? Promise<void> : void;
16
16
  /**
17
17
  * Test whether two values are equal.
18
18
  *
@@ -34,7 +34,7 @@ export declare namespace TestValidator {
34
34
  *
35
35
  * @param title Title of exception because of no error exists
36
36
  */
37
- const error: (title: string) => (task: () => any | Promise<any>) => Promise<void>;
37
+ const error: (title: string) => <T>(task: () => T) => T extends Promise<any> ? Promise<void> : void;
38
38
  /**
39
39
  * Validate index API.
40
40
  *
@@ -67,10 +67,37 @@ var TestValidator;
67
67
  * @param title Title of error message when condition is not satisfied
68
68
  * @return Currying function
69
69
  */
70
- TestValidator.predicate = function (title) { return function (condition) {
71
- if (condition() !== true)
72
- throw new Error("Bug on ".concat(title, ": expected condition is not satisfied."));
73
- }; };
70
+ TestValidator.predicate = function (title) {
71
+ return function (condition) {
72
+ var message = function () {
73
+ return "Bug on ".concat(title, ": expected condition is not satisfied.");
74
+ };
75
+ // SCALAR
76
+ if (typeof condition === "boolean") {
77
+ if (condition !== true)
78
+ throw new Error(message());
79
+ return undefined;
80
+ }
81
+ // CLOSURE
82
+ var output = condition();
83
+ if (typeof output === "boolean") {
84
+ if (output !== true)
85
+ throw new Error(message());
86
+ return undefined;
87
+ }
88
+ // ASYNCHRONOUS
89
+ return new Promise(function (resolve, reject) {
90
+ output
91
+ .then(function (flag) {
92
+ if (flag === true)
93
+ resolve();
94
+ else
95
+ reject(message());
96
+ })
97
+ .catch(reject);
98
+ });
99
+ };
100
+ };
74
101
  /**
75
102
  * Test whether two values are equal.
76
103
  *
@@ -101,23 +128,23 @@ var TestValidator;
101
128
  * @param title Title of exception because of no error exists
102
129
  */
103
130
  TestValidator.error = function (title) {
104
- return function (task) { return __awaiter(_this, void 0, void 0, function () {
105
- var _a;
106
- return __generator(this, function (_b) {
107
- switch (_b.label) {
108
- case 0:
109
- _b.trys.push([0, 2, , 3]);
110
- return [4 /*yield*/, task()];
111
- case 1:
112
- _b.sent();
113
- return [3 /*break*/, 3];
114
- case 2:
115
- _a = _b.sent();
116
- return [2 /*return*/];
117
- case 3: throw new Error("Bug on ".concat(title, ": exception must be thrown."));
118
- }
119
- });
120
- }); };
131
+ return function (task) {
132
+ var message = function () { return "Bug on ".concat(title, ": exception must be thrown."); };
133
+ try {
134
+ var output_1 = task();
135
+ if (is_promise(output_1))
136
+ return new Promise(function (resolve, reject) {
137
+ return output_1
138
+ .catch(function () { return resolve(); })
139
+ .then(function () { return reject(message()); });
140
+ });
141
+ else
142
+ throw new Error(message());
143
+ }
144
+ catch (_a) {
145
+ return undefined;
146
+ }
147
+ };
121
148
  };
122
149
  /**
123
150
  * Validate index API.
@@ -184,7 +211,7 @@ var TestValidator;
184
211
  return __generator(this, function (_b) {
185
212
  switch (_b.label) {
186
213
  case 0:
187
- samples = RandomGenerator_1.RandomGenerator.sample(total, sampleCount);
214
+ samples = RandomGenerator_1.RandomGenerator.sample(total)(sampleCount);
188
215
  _loop_1 = function (s) {
189
216
  var values, filtered, gotten;
190
217
  return __generator(this, function (_c) {
@@ -301,4 +328,10 @@ var TestValidator;
301
328
  function get_ids(entities) {
302
329
  return entities.map(function (entity) { return entity.id; }).sort(function (x, y) { return (x < y ? -1 : 1); });
303
330
  }
331
+ function is_promise(input) {
332
+ return (typeof input === "object" &&
333
+ input !== null &&
334
+ typeof input.then === "function" &&
335
+ typeof input.catch === "function");
336
+ }
304
337
  //# sourceMappingURL=TestValidator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TestValidator.js","sourceRoot":"","sources":["../src/TestValidator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TestValidator.js","sourceRoot":"","sources":["../src/TestValidator.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,56 +1,59 @@
1
- {
2
- "name": "@nestia/e2e",
3
- "version": "0.1.7",
4
- "description": "E2E test utilify functions",
5
- "main": "lib/index.js",
6
- "scripts": {
7
- "build": "rimraf lib && tsc",
8
- "dev": "npm run build -- --watch",
9
- "prettier": "prettier --write ./src/**/*.ts",
10
- "test": "node lib/test",
11
- "prepare": "ts-patch install"
12
- },
13
- "repository": {
14
- "type": "git",
15
- "url": "https://github.com/samchon/nestia"
16
- },
17
- "keywords": [
18
- "e2e",
19
- "nestia",
20
- "nestjs",
21
- "test",
22
- "tdd",
23
- "utility"
24
- ],
25
- "author": "Jeongho Nam",
26
- "license": "MIT",
27
- "bugs": {
28
- "url": "https://github.com/samchon/nestia/issues"
29
- },
30
- "homepage": "https://github.com/samchon/nestia#readme",
31
- "devDependencies": {
32
- "@trivago/prettier-plugin-sort-imports": "^4.0.0",
33
- "@types/cli": "^0.11.21",
34
- "@types/node": "^18.11.18",
35
- "prettier": "^2.8.3",
36
- "rimraf": "^4.1.2",
37
- "ts-node": "^10.9.1",
38
- "ts-patch": "^2.1.0",
39
- "typescript": "^4.9.5",
40
- "typia": "^3.6.9"
41
- },
42
- "dependencies": {
43
- "chalk": "^4.1.2",
44
- "cli": "^1.0.1",
45
- "tstl": "^2.5.13"
46
- },
47
- "files": [
48
- "lib",
49
- "src",
50
- "!lib/test",
51
- "!src/test",
52
- "README.md",
53
- "LICENSE",
54
- "package.json"
55
- ]
56
- }
1
+ {
2
+ "name": "@nestia/e2e",
3
+ "version": "0.2.0",
4
+ "description": "E2E test utilify functions",
5
+ "main": "lib/index.js",
6
+ "scripts": {
7
+ "build": "rimraf lib && tsc",
8
+ "dev": "npm run build -- --watch",
9
+ "eslint": "eslint src",
10
+ "prettier": "prettier --write ./src/**/*.ts",
11
+ "prepare": "ts-patch install",
12
+ "test": "node lib/test"
13
+ },
14
+ "repository": {
15
+ "type": "git",
16
+ "url": "https://github.com/samchon/nestia"
17
+ },
18
+ "keywords": [
19
+ "e2e",
20
+ "nestia",
21
+ "nestjs",
22
+ "test",
23
+ "tdd",
24
+ "utility"
25
+ ],
26
+ "author": "Jeongho Nam",
27
+ "license": "MIT",
28
+ "bugs": {
29
+ "url": "https://github.com/samchon/nestia/issues"
30
+ },
31
+ "homepage": "https://github.com/samchon/nestia#readme",
32
+ "devDependencies": {
33
+ "@trivago/prettier-plugin-sort-imports": "^4.0.0",
34
+ "@types/cli": "^0.11.21",
35
+ "@types/node": "^18.11.18",
36
+ "@typescript-eslint/eslint-plugin": "^5.57.0",
37
+ "@typescript-eslint/parser": "^5.57.0",
38
+ "prettier": "^2.8.3",
39
+ "rimraf": "^4.1.2",
40
+ "ts-node": "^10.9.1",
41
+ "ts-patch": "^2.1.0",
42
+ "typescript": "^4.9.5",
43
+ "typia": "^3.6.9"
44
+ },
45
+ "dependencies": {
46
+ "chalk": "^4.1.2",
47
+ "cli": "^1.0.1",
48
+ "tstl": "^2.5.13"
49
+ },
50
+ "files": [
51
+ "lib",
52
+ "src",
53
+ "!lib/test",
54
+ "!src/test",
55
+ "README.md",
56
+ "LICENSE",
57
+ "package.json"
58
+ ]
59
+ }
package/src/ArrayUtil.ts CHANGED
@@ -1,106 +1,99 @@
1
1
  /**
2
2
  * Utility functions for arrays.
3
- *
3
+ *
4
4
  * @author Jeongho Nam - https://github.com/samchon
5
5
  */
6
6
  export namespace ArrayUtil {
7
- export async function asyncFilter<Input>(
8
- elements: readonly Input[],
9
- pred: (
10
- elem: Input,
11
- index: number,
12
- array: readonly Input[],
13
- ) => Promise<boolean>,
14
- ): Promise<Input[]> {
15
- const ret: Input[] = [];
16
- await asyncForEach(elements, async (elem, index, array) => {
17
- const flag: boolean = await pred(elem, index, array);
18
- if (flag === true) ret.push(elem);
19
- });
20
- return ret;
21
- }
22
-
23
- export async function asyncForEach<Input>(
24
- elements: readonly Input[],
25
- closure: (
26
- elem: Input,
27
- index: number,
28
- array: readonly Input[],
29
- ) => Promise<any>,
30
- ): Promise<void> {
31
- await asyncRepeat(elements.length, (index) =>
32
- closure(elements[index], index, elements),
33
- );
34
- }
7
+ export const asyncFilter =
8
+ <Input>(elements: readonly Input[]) =>
9
+ async (
10
+ pred: (
11
+ elem: Input,
12
+ index: number,
13
+ array: readonly Input[],
14
+ ) => Promise<boolean>,
15
+ ): Promise<Input[]> => {
16
+ const ret: Input[] = [];
17
+ await asyncForEach(elements)(async (elem, index, array) => {
18
+ const flag: boolean = await pred(elem, index, array);
19
+ if (flag === true) ret.push(elem);
20
+ });
21
+ return ret;
22
+ };
35
23
 
36
- export async function asyncMap<Input, Output>(
37
- elements: readonly Input[],
38
- closure: (
39
- elem: Input,
40
- index: number,
41
- array: readonly Input[],
42
- ) => Promise<Output>,
43
- ): Promise<Output[]> {
44
- const ret: Output[] = [];
45
- await asyncForEach(elements, async (elem, index, array) => {
46
- const output: Output = await closure(elem, index, array);
47
- ret.push(output);
48
- });
49
- return ret;
50
- }
24
+ export const asyncForEach =
25
+ <Input>(elements: readonly Input[]) =>
26
+ async (
27
+ closure: (
28
+ elem: Input,
29
+ index: number,
30
+ array: readonly Input[],
31
+ ) => Promise<any>,
32
+ ): Promise<void> => {
33
+ await asyncRepeat(elements.length)((index) =>
34
+ closure(elements[index], index, elements),
35
+ );
36
+ };
51
37
 
52
- export async function asyncRepeat<T>(
53
- count: number,
54
- closure: (index: number) => Promise<T>,
55
- ): Promise<T[]> {
56
- const indexes: number[] = new Array(count)
57
- .fill(1)
58
- .map((_, index) => index);
38
+ export const asyncMap =
39
+ <Input>(elements: readonly Input[]) =>
40
+ async <Output>(
41
+ closure: (
42
+ elem: Input,
43
+ index: number,
44
+ array: readonly Input[],
45
+ ) => Promise<Output>,
46
+ ): Promise<Output[]> => {
47
+ const ret: Output[] = [];
48
+ await asyncForEach(elements)(async (elem, index, array) => {
49
+ const output: Output = await closure(elem, index, array);
50
+ ret.push(output);
51
+ });
52
+ return ret;
53
+ };
59
54
 
60
- const output: T[] = [];
61
- for (const index of indexes) output.push(await closure(index));
55
+ export const asyncRepeat =
56
+ (count: number) =>
57
+ async <T>(closure: (index: number) => Promise<T>): Promise<T[]> => {
58
+ const indexes: number[] = new Array(count)
59
+ .fill(1)
60
+ .map((_, index) => index);
62
61
 
63
- return output;
64
- }
62
+ const output: T[] = [];
63
+ for (const index of indexes) output.push(await closure(index));
65
64
 
66
- export function has<T>(
67
- elements: readonly T[],
68
- pred: (elem: T) => boolean,
69
- ): boolean {
70
- return elements.find(pred) !== undefined;
71
- }
65
+ return output;
66
+ };
72
67
 
73
- export function repeat<T>(
74
- count: number,
75
- closure: (index: number) => T,
76
- ): T[] {
77
- return new Array(count).fill("").map((_, index) => closure(index));
78
- }
68
+ export const has =
69
+ <T>(elements: readonly T[]) =>
70
+ (pred: (elem: T) => boolean): boolean =>
71
+ elements.find(pred) !== undefined;
79
72
 
80
- export function last<T>(array: T[]): T {
81
- return array[array.length - 1];
82
- }
73
+ export const repeat =
74
+ (count: number) =>
75
+ <T>(closure: (index: number) => T): T[] =>
76
+ new Array(count).fill("").map((_, index) => closure(index));
83
77
 
84
- export function flat<T>(matrix: T[][]): T[] {
85
- return ([] as T[]).concat(...matrix);
86
- }
78
+ export const flat = <T>(matrix: T[][]): T[] =>
79
+ ([] as T[]).concat(...matrix);
87
80
 
88
- export function subsets<T>(array: T[]): T[][] {
81
+ export const subsets = <T>(array: T[]): T[][] => {
89
82
  const check: boolean[] = new Array(array.length).fill(false);
90
83
  const output: T[][] = [];
91
-
92
- const dfs = (depth: number) => {
84
+
85
+ const dfs = (depth: number): void => {
93
86
  if (depth === check.length)
94
87
  output.push(array.filter((_v, idx) => check[idx]));
95
88
  else {
96
89
  check[depth] = true;
97
90
  dfs(depth + 1);
98
-
91
+
99
92
  check[depth] = false;
100
93
  dfs(depth + 1);
101
94
  }
102
95
  };
103
96
  dfs(0);
104
97
  return output;
105
- }
98
+ };
106
99
  }
@@ -19,12 +19,11 @@ export namespace RandomGenerator {
19
19
  * @param length Length of alphabets
20
20
  * @returns Generated alphabets
21
21
  */
22
- export function alphabets(length: number): string {
23
- return new Array(length)
22
+ export const alphabets = (length: number): string =>
23
+ new Array(length)
24
24
  .fill("")
25
25
  .map(() => CHARACTERS[randint(0, CHARACTERS.length - 1)])
26
26
  .join("");
27
- }
28
27
 
29
28
  /**
30
29
  * Generate random alpha-numeric characters.
@@ -34,12 +33,11 @@ export namespace RandomGenerator {
34
33
  * @param length Length of characters
35
34
  * @returns Generated string
36
35
  */
37
- export function alphaNumeric(length: number): string {
38
- return new Array(length)
36
+ export const alphaNumeric = (length: number): string =>
37
+ new Array(length)
39
38
  .fill("")
40
39
  .map(() => LETTERS[randint(0, LETTERS.length - 1)])
41
40
  .join("");
42
- }
43
41
 
44
42
  /**
45
43
  * Generate random name.
@@ -47,9 +45,8 @@ export namespace RandomGenerator {
47
45
  * @param length Length of paragraph, default is 2 or 3
48
46
  * @returns Generated name
49
47
  */
50
- export function name(length: number = randint(2, 3)): string {
51
- return paragraph(length)();
52
- }
48
+ export const name = (length: number = randint(2, 3)): string =>
49
+ paragraph(length)();
53
50
 
54
51
  /**
55
52
  * Generate random paragraph.
@@ -106,40 +103,29 @@ export namespace RandomGenerator {
106
103
  * @param content Target content
107
104
  * @returns Random substring
108
105
  */
109
- export function substring(content: string): string {
106
+ export const substring = (content: string): string => {
110
107
  const first: number = randint(0, content.length - 1);
111
108
  const last: number = randint(first + 1, content.length);
112
109
 
113
110
  return content.substring(first, last).trim();
114
- }
111
+ };
115
112
 
116
113
  /**
117
114
  * Generate random mobile number.
118
115
  *
119
116
  * @param prefix Prefix string, default is "010"
120
117
  * @returns Random mobile number
118
+ * @example 010-334-0067
121
119
  */
122
- export function mobile(prefix: string = "010"): string {
123
- return `${prefix}${digit(3, 4)}${digit(4, 4)}`;
124
- }
125
-
126
- /**
127
- * Generate random digit.
128
- *
129
- * Generate random digit that filling front with zero characters
130
- * when value is less than maximum cipher.
131
- *
132
- * @param minC Minimum cipher
133
- * @param maxC Maximum cipher
134
- * @returns
135
- */
136
- export function digit(minC: number, maxC: number): string {
137
- const val: number = randint(0, Math.pow(10.0, maxC) - 1);
138
- const log10: number = val ? Math.floor(Math.log10(val)) + 1 : 0;
139
- const prefix: string = "0".repeat(Math.max(0, minC - log10));
140
-
141
- return prefix + val.toString();
142
- }
120
+ export const mobile = (prefix: string = "010"): string =>
121
+ [
122
+ prefix,
123
+ (() => {
124
+ const value = randint(0, 9999);
125
+ return value.toString().padStart(value < 1_000 ? 3 : 4, "0");
126
+ })(),
127
+ randint(0, 9999).toString().padStart(4, "0"),
128
+ ].join("-");
143
129
 
144
130
  /**
145
131
  * Generate random date.
@@ -148,10 +134,10 @@ export namespace RandomGenerator {
148
134
  * @param range Range of random milliseconds
149
135
  * @returns Random date
150
136
  */
151
- export function date(from: Date, range: number): Date {
152
- const time: number = from.getTime() + randint(0, range);
153
- return new Date(time);
154
- }
137
+ export const date =
138
+ (from: Date) =>
139
+ (range: number): Date =>
140
+ new Date(from.getTime() + randint(0, range));
155
141
 
156
142
  /**
157
143
  * Pick random elements from an array.
@@ -160,11 +146,13 @@ export namespace RandomGenerator {
160
146
  * @param count Number of count to pick
161
147
  * @returns Sampled array
162
148
  */
163
- export function sample<T>(array: T[], count: number): T[] {
164
- const ret: T[] = [];
165
- _Sample(array, back_inserter(ret), count);
166
- return ret;
167
- }
149
+ export const sample =
150
+ <T>(array: T[]) =>
151
+ (count: number): T[] => {
152
+ const ret: T[] = [];
153
+ _Sample(array, back_inserter(ret), count);
154
+ return ret;
155
+ };
168
156
 
169
157
  /**
170
158
  * Pick random element from an array.
@@ -172,7 +160,6 @@ export namespace RandomGenerator {
172
160
  * @param array Target array
173
161
  * @returns picked element
174
162
  */
175
- export function pick<T>(array: T[]): T {
176
- return array[randint(0, array.length - 1)];
177
- }
163
+ export const pick = <T>(array: T[]): T =>
164
+ array[randint(0, array.length - 1)];
178
165
  }
package/src/StopWatch.ts CHANGED
@@ -14,11 +14,11 @@ export namespace StopWatch {
14
14
  * @param task
15
15
  * @returns
16
16
  */
17
- export async function measure(task: Task): Promise<number> {
17
+ export const measure = async (task: Task): Promise<number> => {
18
18
  const time: number = Date.now();
19
19
  await task();
20
20
  return Date.now() - time;
21
- }
21
+ };
22
22
 
23
23
  /**
24
24
  *
@@ -26,11 +26,13 @@ export namespace StopWatch {
26
26
  * @param task
27
27
  * @returns
28
28
  */
29
- export async function trace(title: string, task: Task): Promise<number> {
30
- process.stdout.write(` - ${title}: `);
31
- const time: number = await measure(task);
29
+ export const trace =
30
+ (title: string) =>
31
+ async (task: Task): Promise<number> => {
32
+ process.stdout.write(` - ${title}: `);
33
+ const time: number = await measure(task);
32
34
 
33
- console.log(`${time.toLocaleString()} ms`);
34
- return time;
35
- }
35
+ console.log(`${time.toLocaleString()} ms`);
36
+ return time;
37
+ };
36
38
  }
@@ -17,12 +17,37 @@ export namespace TestValidator {
17
17
  * @param title Title of error message when condition is not satisfied
18
18
  * @return Currying function
19
19
  */
20
- export const predicate = (title: string) => (condition: () => boolean) => {
21
- if (condition() !== true)
22
- throw new Error(
23
- `Bug on ${title}: expected condition is not satisfied.`,
24
- );
25
- };
20
+ export const predicate =
21
+ (title: string) =>
22
+ <T extends boolean | (() => boolean) | (() => Promise<boolean>)>(
23
+ condition: T,
24
+ ): T extends () => Promise<boolean> ? Promise<void> : void => {
25
+ const message = () =>
26
+ `Bug on ${title}: expected condition is not satisfied.`;
27
+
28
+ // SCALAR
29
+ if (typeof condition === "boolean") {
30
+ if (condition !== true) throw new Error(message());
31
+ return undefined as any;
32
+ }
33
+
34
+ // CLOSURE
35
+ const output: boolean | Promise<boolean> = condition();
36
+ if (typeof output === "boolean") {
37
+ if (output !== true) throw new Error(message());
38
+ return undefined as any;
39
+ }
40
+
41
+ // ASYNCHRONOUS
42
+ return new Promise<void>((resolve, reject) => {
43
+ output
44
+ .then((flag) => {
45
+ if (flag === true) resolve();
46
+ else reject(message());
47
+ })
48
+ .catch(reject);
49
+ }) as any;
50
+ };
26
51
 
27
52
  /**
28
53
  * Test whether two values are equal.
@@ -59,13 +84,20 @@ export namespace TestValidator {
59
84
  */
60
85
  export const error =
61
86
  (title: string) =>
62
- async (task: () => any | Promise<any>): Promise<void> => {
87
+ <T>(task: () => T): T extends Promise<any> ? Promise<void> : void => {
88
+ const message = () => `Bug on ${title}: exception must be thrown.`;
63
89
  try {
64
- await task();
90
+ const output: T = task();
91
+ if (is_promise(output))
92
+ return new Promise<void>((resolve, reject) =>
93
+ output
94
+ .catch(() => resolve())
95
+ .then(() => reject(message())),
96
+ ) as any;
97
+ else throw new Error(message());
65
98
  } catch {
66
- return;
99
+ return undefined as any;
67
100
  }
68
- throw new Error(`Bug on ${title}: exception must be thrown.`);
69
101
  };
70
102
 
71
103
  /**
@@ -137,10 +169,8 @@ export namespace TestValidator {
137
169
  async <Values extends any[]>(
138
170
  props: ISearchProps<Entity, Values, Request>,
139
171
  ): Promise<void> => {
140
- const samples: Entity[] = RandomGenerator.sample(
141
- total,
142
- sampleCount,
143
- );
172
+ const samples: Entity[] =
173
+ RandomGenerator.sample(total)(sampleCount);
144
174
  for (const s of samples) {
145
175
  const values: Values = props.values(s);
146
176
  const filtered: Entity[] = total.filter((entity) =>
@@ -239,3 +269,12 @@ interface IEntity<Type extends string | number | bigint> {
239
269
  function get_ids<Entity extends IEntity<any>>(entities: Entity[]): string[] {
240
270
  return entities.map((entity) => entity.id).sort((x, y) => (x < y ? -1 : 1));
241
271
  }
272
+
273
+ function is_promise(input: any): input is Promise<any> {
274
+ return (
275
+ typeof input === "object" &&
276
+ input !== null &&
277
+ typeof (input as any).then === "function" &&
278
+ typeof (input as any).catch === "function"
279
+ );
280
+ }