@nestia/e2e 10.0.2 → 11.0.0-dev.20260312
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/LICENSE +21 -21
- package/README.md +93 -93
- package/lib/ArrayUtil.js +34 -148
- package/lib/ArrayUtil.js.map +1 -1
- package/lib/DynamicExecutor.js +79 -276
- package/lib/DynamicExecutor.js.map +1 -1
- package/lib/GaffComparator.js +18 -26
- package/lib/GaffComparator.js.map +1 -1
- package/lib/MapUtil.js +1 -1
- package/lib/MapUtil.js.map +1 -1
- package/lib/RandomGenerator.js +34 -50
- package/lib/RandomGenerator.js.map +1 -1
- package/lib/TestValidator.js +70 -218
- package/lib/TestValidator.js.map +1 -1
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/internal/json_equal_to.js +26 -44
- package/lib/internal/json_equal_to.js.map +1 -1
- package/package.json +19 -21
- package/src/ArrayUtil.ts +320 -320
- package/src/GaffComparator.ts +287 -287
- package/src/MapUtil.ts +86 -86
- package/src/RandomGenerator.ts +490 -490
- package/src/TestValidator.ts +635 -635
- package/src/module.ts +7 -7
package/lib/DynamicExecutor.js
CHANGED
|
@@ -41,76 +41,13 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
41
41
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
42
42
|
});
|
|
43
43
|
};
|
|
44
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
45
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
46
|
-
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
47
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
48
|
-
function step(op) {
|
|
49
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
50
|
-
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
51
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
52
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
53
|
-
switch (op[0]) {
|
|
54
|
-
case 0: case 1: t = op; break;
|
|
55
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
56
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
57
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
58
|
-
default:
|
|
59
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
60
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
61
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
62
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
63
|
-
if (t[2]) _.ops.pop();
|
|
64
|
-
_.trys.pop(); continue;
|
|
65
|
-
}
|
|
66
|
-
op = body.call(thisArg, _);
|
|
67
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
68
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
69
|
-
}
|
|
70
|
-
};
|
|
71
|
-
var __values = (this && this.__values) || function(o) {
|
|
72
|
-
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
|
73
|
-
if (m) return m.call(o);
|
|
74
|
-
if (o && typeof o.length === "number") return {
|
|
75
|
-
next: function () {
|
|
76
|
-
if (o && i >= o.length) o = void 0;
|
|
77
|
-
return { value: o && o[i++], done: !o };
|
|
78
|
-
}
|
|
79
|
-
};
|
|
80
|
-
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
81
|
-
};
|
|
82
|
-
var __read = (this && this.__read) || function (o, n) {
|
|
83
|
-
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
84
|
-
if (!m) return o;
|
|
85
|
-
var i = m.call(o), r, ar = [], e;
|
|
86
|
-
try {
|
|
87
|
-
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
88
|
-
}
|
|
89
|
-
catch (error) { e = { error: error }; }
|
|
90
|
-
finally {
|
|
91
|
-
try {
|
|
92
|
-
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
93
|
-
}
|
|
94
|
-
finally { if (e) throw e.error; }
|
|
95
|
-
}
|
|
96
|
-
return ar;
|
|
97
|
-
};
|
|
98
|
-
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
99
|
-
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
100
|
-
if (ar || !(i in from)) {
|
|
101
|
-
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
102
|
-
ar[i] = from[i];
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
return to.concat(ar || Array.prototype.slice.call(from));
|
|
106
|
-
};
|
|
107
44
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
108
45
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
109
46
|
};
|
|
110
47
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
111
48
|
exports.DynamicExecutor = void 0;
|
|
112
|
-
|
|
113
|
-
|
|
49
|
+
const fs_1 = __importDefault(require("fs"));
|
|
50
|
+
const path_1 = __importDefault(require("path"));
|
|
114
51
|
/**
|
|
115
52
|
* Dynamic Executor running prefixed functions.
|
|
116
53
|
*
|
|
@@ -134,7 +71,6 @@ var path_1 = __importDefault(require("path"));
|
|
|
134
71
|
*/
|
|
135
72
|
var DynamicExecutor;
|
|
136
73
|
(function (DynamicExecutor) {
|
|
137
|
-
var _this = this;
|
|
138
74
|
/**
|
|
139
75
|
* Prepare dynamic executor in strict mode.
|
|
140
76
|
*
|
|
@@ -145,7 +81,7 @@ var DynamicExecutor;
|
|
|
145
81
|
* @param props Properties of dynamic execution
|
|
146
82
|
* @returns Report of dynamic test functions execution
|
|
147
83
|
*/
|
|
148
|
-
DynamicExecutor.assert =
|
|
84
|
+
DynamicExecutor.assert = (props) => main(true)(props);
|
|
149
85
|
/**
|
|
150
86
|
* Prepare dynamic executor in loose mode.
|
|
151
87
|
*
|
|
@@ -156,218 +92,85 @@ var DynamicExecutor;
|
|
|
156
92
|
* @param props Properties of dynamic executor
|
|
157
93
|
* @returns Report of dynamic test functions execution
|
|
158
94
|
*/
|
|
159
|
-
DynamicExecutor.validate =
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
case 2: return [2 /*return*/];
|
|
193
|
-
}
|
|
194
|
-
});
|
|
195
|
-
}); }))];
|
|
196
|
-
case 2:
|
|
197
|
-
_c.sent();
|
|
198
|
-
report.time = Date.now() - report.time;
|
|
199
|
-
return [2 /*return*/, report];
|
|
95
|
+
DynamicExecutor.validate = (props) => main(false)(props);
|
|
96
|
+
const main = (assert) => (props) => __awaiter(this, void 0, void 0, function* () {
|
|
97
|
+
var _a, _b;
|
|
98
|
+
const report = {
|
|
99
|
+
location: props.location,
|
|
100
|
+
time: Date.now(),
|
|
101
|
+
executions: [],
|
|
102
|
+
};
|
|
103
|
+
const executor = execute(props)(report)(assert);
|
|
104
|
+
const processes = yield iterate({
|
|
105
|
+
extension: (_a = props.extension) !== null && _a !== void 0 ? _a : "js",
|
|
106
|
+
location: props.location,
|
|
107
|
+
executor,
|
|
108
|
+
});
|
|
109
|
+
yield Promise.all(new Array((_b = props.simultaneous) !== null && _b !== void 0 ? _b : 1).fill(0).map(() => __awaiter(this, void 0, void 0, function* () {
|
|
110
|
+
while (processes.length !== 0) {
|
|
111
|
+
const task = processes.shift();
|
|
112
|
+
yield (task === null || task === void 0 ? void 0 : task());
|
|
113
|
+
}
|
|
114
|
+
})));
|
|
115
|
+
report.time = Date.now() - report.time;
|
|
116
|
+
return report;
|
|
117
|
+
});
|
|
118
|
+
const iterate = (props) => __awaiter(this, void 0, void 0, function* () {
|
|
119
|
+
const container = [];
|
|
120
|
+
const visitor = (path) => __awaiter(this, void 0, void 0, function* () {
|
|
121
|
+
const directory = yield fs_1.default.promises.readdir(path);
|
|
122
|
+
for (const file of directory) {
|
|
123
|
+
const location = path_1.default.resolve(`${path}/${file}`);
|
|
124
|
+
const stats = yield fs_1.default.promises.lstat(location);
|
|
125
|
+
if (stats.isDirectory() === true) {
|
|
126
|
+
yield visitor(location);
|
|
127
|
+
continue;
|
|
200
128
|
}
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
var container, visitor;
|
|
206
|
-
var _this = this;
|
|
207
|
-
return __generator(this, function (_a) {
|
|
208
|
-
switch (_a.label) {
|
|
209
|
-
case 0:
|
|
210
|
-
container = [];
|
|
211
|
-
visitor = function (path) { return __awaiter(_this, void 0, void 0, function () {
|
|
212
|
-
var directory, _loop_1, directory_1, directory_1_1, file, e_1_1;
|
|
213
|
-
var e_1, _a;
|
|
214
|
-
return __generator(this, function (_b) {
|
|
215
|
-
switch (_b.label) {
|
|
216
|
-
case 0: return [4 /*yield*/, fs_1.default.promises.readdir(path)];
|
|
217
|
-
case 1:
|
|
218
|
-
directory = _b.sent();
|
|
219
|
-
_loop_1 = function (file) {
|
|
220
|
-
var location_1, stats, modulo;
|
|
221
|
-
return __generator(this, function (_c) {
|
|
222
|
-
switch (_c.label) {
|
|
223
|
-
case 0:
|
|
224
|
-
location_1 = path_1.default.resolve("".concat(path, "/").concat(file));
|
|
225
|
-
return [4 /*yield*/, fs_1.default.promises.lstat(location_1)];
|
|
226
|
-
case 1:
|
|
227
|
-
stats = _c.sent();
|
|
228
|
-
if (!(stats.isDirectory() === true)) return [3 /*break*/, 3];
|
|
229
|
-
return [4 /*yield*/, visitor(location_1)];
|
|
230
|
-
case 2:
|
|
231
|
-
_c.sent();
|
|
232
|
-
return [2 /*return*/, "continue"];
|
|
233
|
-
case 3:
|
|
234
|
-
if (file.substr(-3) !== ".".concat(props.extension))
|
|
235
|
-
return [2 /*return*/, "continue"];
|
|
236
|
-
_c.label = 4;
|
|
237
|
-
case 4: return [4 /*yield*/, Promise.resolve("".concat(location_1)).then(function (s) { return __importStar(require(s)); })];
|
|
238
|
-
case 5:
|
|
239
|
-
modulo = _c.sent();
|
|
240
|
-
container.push(function () { return props.executor(location_1, modulo); });
|
|
241
|
-
return [2 /*return*/];
|
|
242
|
-
}
|
|
243
|
-
});
|
|
244
|
-
};
|
|
245
|
-
_b.label = 2;
|
|
246
|
-
case 2:
|
|
247
|
-
_b.trys.push([2, 7, 8, 9]);
|
|
248
|
-
directory_1 = __values(directory), directory_1_1 = directory_1.next();
|
|
249
|
-
_b.label = 3;
|
|
250
|
-
case 3:
|
|
251
|
-
if (!!directory_1_1.done) return [3 /*break*/, 6];
|
|
252
|
-
file = directory_1_1.value;
|
|
253
|
-
return [5 /*yield**/, _loop_1(file)];
|
|
254
|
-
case 4:
|
|
255
|
-
_b.sent();
|
|
256
|
-
_b.label = 5;
|
|
257
|
-
case 5:
|
|
258
|
-
directory_1_1 = directory_1.next();
|
|
259
|
-
return [3 /*break*/, 3];
|
|
260
|
-
case 6: return [3 /*break*/, 9];
|
|
261
|
-
case 7:
|
|
262
|
-
e_1_1 = _b.sent();
|
|
263
|
-
e_1 = { error: e_1_1 };
|
|
264
|
-
return [3 /*break*/, 9];
|
|
265
|
-
case 8:
|
|
266
|
-
try {
|
|
267
|
-
if (directory_1_1 && !directory_1_1.done && (_a = directory_1.return)) _a.call(directory_1);
|
|
268
|
-
}
|
|
269
|
-
finally { if (e_1) throw e_1.error; }
|
|
270
|
-
return [7 /*endfinally*/];
|
|
271
|
-
case 9: return [2 /*return*/];
|
|
272
|
-
}
|
|
273
|
-
});
|
|
274
|
-
}); };
|
|
275
|
-
return [4 /*yield*/, visitor(props.location)];
|
|
276
|
-
case 1:
|
|
277
|
-
_a.sent();
|
|
278
|
-
return [2 /*return*/, container];
|
|
129
|
+
else if (file.substr(-3) !== `.${props.extension}`)
|
|
130
|
+
continue;
|
|
131
|
+
const modulo = yield Promise.resolve(`${location}`).then(s => __importStar(require(s)));
|
|
132
|
+
container.push(() => props.executor(location, modulo));
|
|
279
133
|
}
|
|
280
134
|
});
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
case 0:
|
|
296
|
-
if (key.substring(0, props.prefix.length) !== props.prefix ||
|
|
297
|
-
typeof closure !== "function" ||
|
|
298
|
-
(props.filter && props.filter(key) === false))
|
|
299
|
-
return [2 /*return*/, "continue"];
|
|
300
|
-
func = function () {
|
|
301
|
-
if (props.wrapper !== undefined)
|
|
302
|
-
return props.wrapper(key, closure, props.parameters(key));
|
|
303
|
-
else
|
|
304
|
-
return closure.apply(void 0, __spreadArray([], __read(props.parameters(key)), false));
|
|
305
|
-
};
|
|
306
|
-
result = {
|
|
307
|
-
name: key,
|
|
308
|
-
location: location,
|
|
309
|
-
value: undefined,
|
|
310
|
-
error: null,
|
|
311
|
-
started_at: new Date().toISOString(),
|
|
312
|
-
completed_at: new Date().toISOString(),
|
|
313
|
-
};
|
|
314
|
-
report.executions.push(result);
|
|
315
|
-
_g.label = 1;
|
|
316
|
-
case 1:
|
|
317
|
-
_g.trys.push([1, 3, 4, 5]);
|
|
318
|
-
_f = result;
|
|
319
|
-
return [4 /*yield*/, func()];
|
|
320
|
-
case 2:
|
|
321
|
-
_f.value = _g.sent();
|
|
322
|
-
result.completed_at = new Date().toISOString();
|
|
323
|
-
return [3 /*break*/, 5];
|
|
324
|
-
case 3:
|
|
325
|
-
exp_1 = _g.sent();
|
|
326
|
-
result.error = exp_1;
|
|
327
|
-
if (assert === true)
|
|
328
|
-
throw exp_1;
|
|
329
|
-
return [3 /*break*/, 5];
|
|
330
|
-
case 4:
|
|
331
|
-
result.completed_at = new Date().toISOString();
|
|
332
|
-
if (props.onComplete)
|
|
333
|
-
props.onComplete(result);
|
|
334
|
-
return [7 /*endfinally*/];
|
|
335
|
-
case 5: return [2 /*return*/];
|
|
336
|
-
}
|
|
337
|
-
});
|
|
338
|
-
};
|
|
339
|
-
_e.label = 1;
|
|
340
|
-
case 1:
|
|
341
|
-
_e.trys.push([1, 6, 7, 8]);
|
|
342
|
-
_a = __values(Object.entries(modulo)), _b = _a.next();
|
|
343
|
-
_e.label = 2;
|
|
344
|
-
case 2:
|
|
345
|
-
if (!!_b.done) return [3 /*break*/, 5];
|
|
346
|
-
_c = __read(_b.value, 2), key = _c[0], closure = _c[1];
|
|
347
|
-
return [5 /*yield**/, _loop_2(key, closure)];
|
|
348
|
-
case 3:
|
|
349
|
-
_e.sent();
|
|
350
|
-
_e.label = 4;
|
|
351
|
-
case 4:
|
|
352
|
-
_b = _a.next();
|
|
353
|
-
return [3 /*break*/, 2];
|
|
354
|
-
case 5: return [3 /*break*/, 8];
|
|
355
|
-
case 6:
|
|
356
|
-
e_2_1 = _e.sent();
|
|
357
|
-
e_2 = { error: e_2_1 };
|
|
358
|
-
return [3 /*break*/, 8];
|
|
359
|
-
case 7:
|
|
360
|
-
try {
|
|
361
|
-
if (_b && !_b.done && (_d = _a.return)) _d.call(_a);
|
|
362
|
-
}
|
|
363
|
-
finally { if (e_2) throw e_2.error; }
|
|
364
|
-
return [7 /*endfinally*/];
|
|
365
|
-
case 8: return [2 /*return*/];
|
|
366
|
-
}
|
|
367
|
-
});
|
|
368
|
-
}); };
|
|
135
|
+
yield visitor(props.location);
|
|
136
|
+
return container;
|
|
137
|
+
});
|
|
138
|
+
const execute = (props) => (report) => (assert) => (location, modulo) => __awaiter(this, void 0, void 0, function* () {
|
|
139
|
+
for (const [key, closure] of Object.entries(modulo)) {
|
|
140
|
+
if (key.substring(0, props.prefix.length) !== props.prefix ||
|
|
141
|
+
typeof closure !== "function" ||
|
|
142
|
+
(props.filter && props.filter(key) === false))
|
|
143
|
+
continue;
|
|
144
|
+
const func = () => {
|
|
145
|
+
if (props.wrapper !== undefined)
|
|
146
|
+
return props.wrapper(key, closure, props.parameters(key));
|
|
147
|
+
else
|
|
148
|
+
return closure(...props.parameters(key));
|
|
369
149
|
};
|
|
370
|
-
|
|
371
|
-
|
|
150
|
+
const result = {
|
|
151
|
+
name: key,
|
|
152
|
+
location,
|
|
153
|
+
value: undefined,
|
|
154
|
+
error: null,
|
|
155
|
+
started_at: new Date().toISOString(),
|
|
156
|
+
completed_at: new Date().toISOString(),
|
|
157
|
+
};
|
|
158
|
+
report.executions.push(result);
|
|
159
|
+
try {
|
|
160
|
+
result.value = yield func();
|
|
161
|
+
result.completed_at = new Date().toISOString();
|
|
162
|
+
}
|
|
163
|
+
catch (exp) {
|
|
164
|
+
result.error = exp;
|
|
165
|
+
if (assert === true)
|
|
166
|
+
throw exp;
|
|
167
|
+
}
|
|
168
|
+
finally {
|
|
169
|
+
result.completed_at = new Date().toISOString();
|
|
170
|
+
if (props.onComplete)
|
|
171
|
+
props.onComplete(result);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
});
|
|
372
175
|
})(DynamicExecutor || (exports.DynamicExecutor = DynamicExecutor = {}));
|
|
373
176
|
//# sourceMappingURL=DynamicExecutor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DynamicExecutor.js","sourceRoot":"","sources":["../src/DynamicExecutor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"DynamicExecutor.js","sourceRoot":"","sources":["../src/DynamicExecutor.ts"],"names":[],"mappings":"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"}
|
package/lib/GaffComparator.js
CHANGED
|
@@ -107,13 +107,11 @@ var GaffComparator;
|
|
|
107
107
|
* @param getter - Function that extracts string value(s) from input objects
|
|
108
108
|
* @returns A comparator function suitable for Array.sort()
|
|
109
109
|
*/
|
|
110
|
-
GaffComparator.strings =
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
return idx !== -1 ? compare(a[idx], b[idx]) : 0;
|
|
116
|
-
};
|
|
110
|
+
GaffComparator.strings = (getter) => (x, y) => {
|
|
111
|
+
const a = wrap(getter(x));
|
|
112
|
+
const b = wrap(getter(y));
|
|
113
|
+
const idx = a.findIndex((v, i) => v !== b[i]);
|
|
114
|
+
return idx !== -1 ? compare(a[idx], b[idx]) : 0;
|
|
117
115
|
};
|
|
118
116
|
/**
|
|
119
117
|
* Creates a comparator function for date-based sorting with automatic string
|
|
@@ -190,16 +188,12 @@ var GaffComparator;
|
|
|
190
188
|
* @param getter - Function that extracts date string(s) from input objects
|
|
191
189
|
* @returns A comparator function suitable for Array.sort()
|
|
192
190
|
*/
|
|
193
|
-
GaffComparator.dates =
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
var b = take(y);
|
|
200
|
-
var idx = a.findIndex(function (v, i) { return v !== b[i]; });
|
|
201
|
-
return idx !== -1 ? a[idx] - b[idx] : 0;
|
|
202
|
-
};
|
|
191
|
+
GaffComparator.dates = (getter) => (x, y) => {
|
|
192
|
+
const take = (v) => wrap(getter(v)).map((str) => new Date(str).getTime());
|
|
193
|
+
const a = take(x);
|
|
194
|
+
const b = take(y);
|
|
195
|
+
const idx = a.findIndex((v, i) => v !== b[i]);
|
|
196
|
+
return idx !== -1 ? a[idx] - b[idx] : 0;
|
|
203
197
|
};
|
|
204
198
|
/**
|
|
205
199
|
* Creates a comparator function for numerical sorting with multi-value
|
|
@@ -272,15 +266,13 @@ var GaffComparator;
|
|
|
272
266
|
* @param closure - Function that extracts number value(s) from input objects
|
|
273
267
|
* @returns A comparator function suitable for Array.sort()
|
|
274
268
|
*/
|
|
275
|
-
GaffComparator.numbers =
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
return idx !== -1 ? a[idx] - b[idx] : 0;
|
|
281
|
-
};
|
|
269
|
+
GaffComparator.numbers = (closure) => (x, y) => {
|
|
270
|
+
const a = wrap(closure(x));
|
|
271
|
+
const b = wrap(closure(y));
|
|
272
|
+
const idx = a.findIndex((v, i) => v !== b[i]);
|
|
273
|
+
return idx !== -1 ? a[idx] - b[idx] : 0;
|
|
282
274
|
};
|
|
283
|
-
|
|
284
|
-
|
|
275
|
+
const compare = (x, y) => x.localeCompare(y);
|
|
276
|
+
const wrap = (elem) => (Array.isArray(elem) ? elem : [elem]);
|
|
285
277
|
})(GaffComparator || (exports.GaffComparator = GaffComparator = {}));
|
|
286
278
|
//# sourceMappingURL=GaffComparator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GaffComparator.js","sourceRoot":"","sources":["../src/GaffComparator.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,IAAiB,cAAc,CAgP9B;AAhPD,WAAiB,cAAc;IAC7B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAyDG;IACU,sBAAO,GAClB,
|
|
1
|
+
{"version":3,"file":"GaffComparator.js","sourceRoot":"","sources":["../src/GaffComparator.ts"],"names":[],"mappings":"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"}
|
package/lib/MapUtil.js
CHANGED
package/lib/MapUtil.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MapUtil.js","sourceRoot":"","sources":["../src/MapUtil.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,IAAiB,OAAO,CA8DvB;AA9DD,WAAiB,OAAO;IACtB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAoDG;IACH,SAAgB,IAAI,CAAO,GAAc,EAAE,GAAM,EAAE,KAAc;QAC/D,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACjB,OAAO,GAAG,CAAC,GAAG,CAAC,GAAG,CAAM,CAAC;QAC3B,CAAC;QACD,
|
|
1
|
+
{"version":3,"file":"MapUtil.js","sourceRoot":"","sources":["../src/MapUtil.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,IAAiB,OAAO,CA8DvB;AA9DD,WAAiB,OAAO;IACtB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAoDG;IACH,SAAgB,IAAI,CAAO,GAAc,EAAE,GAAM,EAAE,KAAc;QAC/D,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACjB,OAAO,GAAG,CAAC,GAAG,CAAC,GAAG,CAAM,CAAC;QAC3B,CAAC;QACD,MAAM,QAAQ,GAAG,KAAK,EAAE,CAAC;QACzB,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACvB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAPe,YAAI,OAOnB,CAAA;AACH,CAAC,EA9DgB,OAAO,uBAAP,OAAO,QA8DvB"}
|