@valkyriestudios/utils 12.34.0 → 12.36.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/LICENSE.md +6 -6
- package/README.md +199 -4
- package/array/index.d.ts +14 -14
- package/array/index.js +18 -20
- package/array/mapFn.d.ts +7 -2
- package/array/mapFn.js +4 -3
- package/array/mapFnAsMap.d.ts +7 -2
- package/array/mapFnAsMap.js +5 -3
- package/array/mapKey.d.ts +7 -2
- package/array/mapKey.js +5 -3
- package/array/mapKeyAsMap.d.ts +7 -2
- package/array/mapKeyAsMap.js +5 -3
- package/array/sort.js +76 -46
- package/boolean/index.d.ts +1 -2
- package/boolean/index.js +2 -3
- package/caching/index.d.ts +3 -3
- package/caching/index.js +6 -5
- package/date/format.js +4 -1
- package/date/index.d.ts +15 -15
- package/date/index.js +19 -19
- package/deep/index.d.ts +8 -5
- package/deep/index.js +12 -8
- package/formdata/index.d.ts +2 -3
- package/formdata/index.js +4 -5
- package/function/index.d.ts +9 -8
- package/function/index.js +14 -14
- package/hash/index.d.ts +2 -3
- package/hash/index.js +2 -2
- package/index.d.ts +199 -120
- package/modules/PubSub.js +1 -1
- package/modules/Scheduler.d.ts +139 -0
- package/modules/Scheduler.js +347 -0
- package/modules/index.d.ts +2 -0
- package/modules/index.js +7 -0
- package/number/index.d.ts +37 -18
- package/number/index.js +58 -38
- package/object/index.d.ts +7 -7
- package/object/index.js +11 -13
- package/object/omit.js +14 -16
- package/object/pick.js +7 -12
- package/package.json +30 -6
- package/regexp/index.d.ts +3 -3
- package/regexp/index.js +5 -5
- package/string/index.d.ts +7 -7
- package/string/index.js +10 -13
|
@@ -0,0 +1,347 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
3
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
4
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
5
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
6
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
7
|
+
};
|
|
8
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
9
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
10
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
11
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
12
|
+
};
|
|
13
|
+
var _Scheduler_jobs, _Scheduler_name, _Scheduler_log, _Scheduler_timeZone, _Scheduler_parallel, _Scheduler_timer;
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.default = exports.Scheduler = void 0;
|
|
16
|
+
const format_1 = require("../date/format");
|
|
17
|
+
const toUTC_1 = require("../date/toUTC");
|
|
18
|
+
const isNotEmpty_1 = require("../string/isNotEmpty");
|
|
19
|
+
const is_1 = require("../function/is");
|
|
20
|
+
const number_1 = require("../number");
|
|
21
|
+
const object_1 = require("../object");
|
|
22
|
+
const function_1 = require("../function");
|
|
23
|
+
const boolean_1 = require("../boolean");
|
|
24
|
+
const array_1 = require("../array");
|
|
25
|
+
const RGX_DIGITS = /^\d+$/;
|
|
26
|
+
const LIMITS = {
|
|
27
|
+
minute: [0, 59],
|
|
28
|
+
hour: [0, 23],
|
|
29
|
+
day_of_month: [1, 31],
|
|
30
|
+
month: [1, 12],
|
|
31
|
+
day_of_week: [0, 6],
|
|
32
|
+
};
|
|
33
|
+
function convertPart(part, min, max) {
|
|
34
|
+
if (part === '*')
|
|
35
|
+
return '*';
|
|
36
|
+
const set = new Set();
|
|
37
|
+
if (part.indexOf('/') > -1) {
|
|
38
|
+
const [base, raw_step] = part.split('/', 2);
|
|
39
|
+
const step = parseInt(raw_step, 10);
|
|
40
|
+
let start;
|
|
41
|
+
let end = max;
|
|
42
|
+
if (base === '*') {
|
|
43
|
+
start = min;
|
|
44
|
+
}
|
|
45
|
+
else if (base.indexOf('-') > -1) {
|
|
46
|
+
const chunks = base.split('-', 2);
|
|
47
|
+
start = parseInt(chunks[0], 10);
|
|
48
|
+
end = parseInt(chunks[1], 10);
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
start = parseInt(base, 10);
|
|
52
|
+
}
|
|
53
|
+
for (let i = start; i <= end; i += step)
|
|
54
|
+
set.add(i);
|
|
55
|
+
}
|
|
56
|
+
else if (part.indexOf('-') > -1) {
|
|
57
|
+
const chunks = part.split('-', 2);
|
|
58
|
+
const start = parseInt(chunks[0], 10);
|
|
59
|
+
const end = parseInt(chunks[1], 10);
|
|
60
|
+
for (let i = start; i <= end; i++)
|
|
61
|
+
set.add(i);
|
|
62
|
+
}
|
|
63
|
+
else if (part.indexOf(',') > -1) {
|
|
64
|
+
const chunks = part.split(',');
|
|
65
|
+
for (let i = 0; i < chunks.length; i++)
|
|
66
|
+
set.add(parseInt(chunks[i], 10));
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
set.add(parseInt(part, 10));
|
|
70
|
+
}
|
|
71
|
+
return set;
|
|
72
|
+
}
|
|
73
|
+
function isCronSubpart(part, min, max) {
|
|
74
|
+
if (!RGX_DIGITS.test(part))
|
|
75
|
+
return null;
|
|
76
|
+
const normalized = parseFloat(part);
|
|
77
|
+
if (!(0, number_1.isIntegerBetween)(normalized, min, max))
|
|
78
|
+
return null;
|
|
79
|
+
return normalized;
|
|
80
|
+
}
|
|
81
|
+
function isCronPart(part, min, max) {
|
|
82
|
+
if (part === '*') {
|
|
83
|
+
return true;
|
|
84
|
+
}
|
|
85
|
+
else if (part.indexOf('/') > -1) {
|
|
86
|
+
const [base, stepStr] = part.split('/', 2);
|
|
87
|
+
const step = parseFloat(stepStr);
|
|
88
|
+
if (!(0, number_1.isIntegerAbove)(step, 0) || !(0, number_1.isIntegerBetween)(step, min, max))
|
|
89
|
+
return false;
|
|
90
|
+
if (base === '*')
|
|
91
|
+
return true;
|
|
92
|
+
let start = min;
|
|
93
|
+
let end = max;
|
|
94
|
+
if (base.indexOf('-') > -1) {
|
|
95
|
+
const chunks = base.split('-');
|
|
96
|
+
if (chunks.length !== 2)
|
|
97
|
+
return false;
|
|
98
|
+
start = isCronSubpart(chunks[0], min, max);
|
|
99
|
+
end = isCronSubpart(chunks[1], min, max);
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
start = isCronSubpart(base, min, max);
|
|
103
|
+
}
|
|
104
|
+
if (start === null || end === null)
|
|
105
|
+
return false;
|
|
106
|
+
if (start > end)
|
|
107
|
+
return false;
|
|
108
|
+
if (step > (end - start))
|
|
109
|
+
return false;
|
|
110
|
+
return true;
|
|
111
|
+
}
|
|
112
|
+
else if (part.indexOf('-') > -1) {
|
|
113
|
+
const chunks = part.split('-');
|
|
114
|
+
if (chunks.length !== 2)
|
|
115
|
+
return false;
|
|
116
|
+
const start = isCronSubpart(chunks[0], min, max);
|
|
117
|
+
const end = isCronSubpart(chunks[1], min, max);
|
|
118
|
+
if (start === null || end === null)
|
|
119
|
+
return false;
|
|
120
|
+
return start < end;
|
|
121
|
+
}
|
|
122
|
+
else if (part.indexOf(',') > -1) {
|
|
123
|
+
const chunks = part.split(',');
|
|
124
|
+
for (let i = 0; i < chunks.length; i++) {
|
|
125
|
+
if (isCronSubpart(chunks[i], min, max) === null)
|
|
126
|
+
return false;
|
|
127
|
+
}
|
|
128
|
+
return true;
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
return isCronSubpart(part, min, max) !== null;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
class Scheduler {
|
|
135
|
+
constructor(options = {}) {
|
|
136
|
+
_Scheduler_jobs.set(this, []);
|
|
137
|
+
_Scheduler_name.set(this, 'Scheduler');
|
|
138
|
+
_Scheduler_log.set(this, function_1.noop);
|
|
139
|
+
_Scheduler_timeZone.set(this, null);
|
|
140
|
+
_Scheduler_parallel.set(this, true);
|
|
141
|
+
_Scheduler_timer.set(this, null);
|
|
142
|
+
if (!(0, object_1.isObject)(options))
|
|
143
|
+
throw new Error('Scheduler@ctor: options should be an object');
|
|
144
|
+
if ('logger' in options) {
|
|
145
|
+
if (!(0, is_1.isFunction)(options.logger))
|
|
146
|
+
throw new Error('Scheduler@ctor: logger should be a function');
|
|
147
|
+
__classPrivateFieldSet(this, _Scheduler_log, options.logger, "f");
|
|
148
|
+
}
|
|
149
|
+
if ('name' in options) {
|
|
150
|
+
if (!(0, isNotEmpty_1.isNotEmptyString)(options.name))
|
|
151
|
+
throw new Error('Scheduler@ctor: name should be a non-empty string');
|
|
152
|
+
__classPrivateFieldSet(this, _Scheduler_name, options.name.trim(), "f");
|
|
153
|
+
}
|
|
154
|
+
if ('timeZone' in options) {
|
|
155
|
+
if (options.timeZone !== null &&
|
|
156
|
+
!(0, isNotEmpty_1.isNotEmptyString)(options.timeZone))
|
|
157
|
+
throw new Error('Scheduler@ctor: timeZone should be null or a non-empty string');
|
|
158
|
+
__classPrivateFieldSet(this, _Scheduler_timeZone, options.timeZone, "f");
|
|
159
|
+
}
|
|
160
|
+
if ('parallel' in options) {
|
|
161
|
+
if (!(0, boolean_1.isBoolean)(options.parallel) &&
|
|
162
|
+
!(0, number_1.isIntegerAbove)(options.parallel, 0))
|
|
163
|
+
throw new Error('Scheduler@ctor: parallel should be passed as a boolean or int above 0');
|
|
164
|
+
__classPrivateFieldSet(this, _Scheduler_parallel, options.parallel, "f");
|
|
165
|
+
}
|
|
166
|
+
if (options.auto === true)
|
|
167
|
+
this.startAutomaticRun();
|
|
168
|
+
}
|
|
169
|
+
get name() {
|
|
170
|
+
return __classPrivateFieldGet(this, _Scheduler_name, "f");
|
|
171
|
+
}
|
|
172
|
+
get timeZone() {
|
|
173
|
+
return __classPrivateFieldGet(this, _Scheduler_timeZone, "f");
|
|
174
|
+
}
|
|
175
|
+
get parallel() {
|
|
176
|
+
return __classPrivateFieldGet(this, _Scheduler_parallel, "f");
|
|
177
|
+
}
|
|
178
|
+
get isAutomatic() {
|
|
179
|
+
return __classPrivateFieldGet(this, _Scheduler_timer, "f") !== null;
|
|
180
|
+
}
|
|
181
|
+
get jobs() {
|
|
182
|
+
const acc = [];
|
|
183
|
+
for (let i = 0; i < __classPrivateFieldGet(this, _Scheduler_jobs, "f").length; i++) {
|
|
184
|
+
const { name, schedule, timeZone, data = null } = __classPrivateFieldGet(this, _Scheduler_jobs, "f")[i];
|
|
185
|
+
acc.push({
|
|
186
|
+
name,
|
|
187
|
+
schedule,
|
|
188
|
+
timeZone,
|
|
189
|
+
...data !== null && { data: { ...data } },
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
return acc;
|
|
193
|
+
}
|
|
194
|
+
add(job) {
|
|
195
|
+
try {
|
|
196
|
+
if (!Scheduler.isCronSchedule(job?.schedule))
|
|
197
|
+
throw new Error(`${__classPrivateFieldGet(this, _Scheduler_name, "f")}@add: Invalid cron schedule`);
|
|
198
|
+
if (!(0, is_1.isFunction)(job.fn))
|
|
199
|
+
throw new Error(`${__classPrivateFieldGet(this, _Scheduler_name, "f")}@add: Invalid function for job`);
|
|
200
|
+
if (!(0, isNotEmpty_1.isNotEmptyString)(job.name))
|
|
201
|
+
throw new Error(`${__classPrivateFieldGet(this, _Scheduler_name, "f")}@add: Invalid name for job`);
|
|
202
|
+
if ('data' in job && !(0, object_1.isObject)(job.data))
|
|
203
|
+
throw new Error(`${__classPrivateFieldGet(this, _Scheduler_name, "f")}@add: Job data should be an object`);
|
|
204
|
+
__classPrivateFieldGet(this, _Scheduler_jobs, "f").push({
|
|
205
|
+
name: job.name,
|
|
206
|
+
schedule: job.schedule,
|
|
207
|
+
fn: job.fn,
|
|
208
|
+
timeZone: (0, isNotEmpty_1.isNotEmptyString)(job.timeZone) ? job.timeZone : __classPrivateFieldGet(this, _Scheduler_timeZone, "f"),
|
|
209
|
+
map: Scheduler.convertToMap(job.schedule),
|
|
210
|
+
...job.data ? { data: job.data } : {},
|
|
211
|
+
});
|
|
212
|
+
return true;
|
|
213
|
+
}
|
|
214
|
+
catch (err) {
|
|
215
|
+
__classPrivateFieldGet(this, _Scheduler_log, "f").call(this, {
|
|
216
|
+
name: __classPrivateFieldGet(this, _Scheduler_name, "f"),
|
|
217
|
+
msg: err.message,
|
|
218
|
+
on: new Date(),
|
|
219
|
+
data: job,
|
|
220
|
+
err: err,
|
|
221
|
+
});
|
|
222
|
+
return false;
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
remove(name) {
|
|
226
|
+
const names = new Set((0, isNotEmpty_1.isNotEmptyString)(name) ? [name] : Array.isArray(name) ? name : []);
|
|
227
|
+
const jobs = [];
|
|
228
|
+
for (let i = 0; i < __classPrivateFieldGet(this, _Scheduler_jobs, "f").length; i++) {
|
|
229
|
+
const el = __classPrivateFieldGet(this, _Scheduler_jobs, "f")[i];
|
|
230
|
+
if (!names.has(el.name))
|
|
231
|
+
jobs.push(el);
|
|
232
|
+
}
|
|
233
|
+
__classPrivateFieldSet(this, _Scheduler_jobs, jobs, "f");
|
|
234
|
+
}
|
|
235
|
+
async run() {
|
|
236
|
+
const promises = [];
|
|
237
|
+
for (let i = 0; i < __classPrivateFieldGet(this, _Scheduler_jobs, "f").length; i++) {
|
|
238
|
+
const job = __classPrivateFieldGet(this, _Scheduler_jobs, "f")[i];
|
|
239
|
+
const time = Scheduler.getTimeParts(new Date(), job.timeZone);
|
|
240
|
+
if (Scheduler.checkTimeAgainstMap(job.map, time)) {
|
|
241
|
+
try {
|
|
242
|
+
if (__classPrivateFieldGet(this, _Scheduler_parallel, "f")) {
|
|
243
|
+
promises.push(job);
|
|
244
|
+
}
|
|
245
|
+
else {
|
|
246
|
+
await job.fn(job.data);
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
catch (err) {
|
|
250
|
+
__classPrivateFieldGet(this, _Scheduler_log, "f").call(this, {
|
|
251
|
+
name: __classPrivateFieldGet(this, _Scheduler_name, "f"),
|
|
252
|
+
msg: `${job.name}: ${err.message}`,
|
|
253
|
+
on: new Date(),
|
|
254
|
+
data: (0, object_1.pick)(job, ['schedule', 'timeZone', 'name', 'data']),
|
|
255
|
+
err,
|
|
256
|
+
});
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
if (__classPrivateFieldGet(this, _Scheduler_parallel, "f") && promises.length) {
|
|
261
|
+
const batches = __classPrivateFieldGet(this, _Scheduler_parallel, "f") === true
|
|
262
|
+
? [promises]
|
|
263
|
+
: (0, array_1.split)(promises, __classPrivateFieldGet(this, _Scheduler_parallel, "f"));
|
|
264
|
+
for (const batch of batches) {
|
|
265
|
+
await Promise.allSettled(batch.map(el => (async () => {
|
|
266
|
+
try {
|
|
267
|
+
await el.fn(el.data);
|
|
268
|
+
}
|
|
269
|
+
catch (err) {
|
|
270
|
+
__classPrivateFieldGet(this, _Scheduler_log, "f").call(this, {
|
|
271
|
+
name: __classPrivateFieldGet(this, _Scheduler_name, "f"),
|
|
272
|
+
msg: `${el.name}: ${err.message}`,
|
|
273
|
+
on: new Date(),
|
|
274
|
+
data: (0, object_1.pick)(el, ['schedule', 'timeZone', 'name', 'data']),
|
|
275
|
+
err: err,
|
|
276
|
+
});
|
|
277
|
+
}
|
|
278
|
+
})()));
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
stopAutomaticRun() {
|
|
283
|
+
if (!__classPrivateFieldGet(this, _Scheduler_timer, "f"))
|
|
284
|
+
return;
|
|
285
|
+
clearInterval(__classPrivateFieldGet(this, _Scheduler_timer, "f"));
|
|
286
|
+
__classPrivateFieldSet(this, _Scheduler_timer, null, "f");
|
|
287
|
+
}
|
|
288
|
+
startAutomaticRun() {
|
|
289
|
+
this.stopAutomaticRun();
|
|
290
|
+
__classPrivateFieldSet(this, _Scheduler_timer, setInterval(this.run.bind(this), 60000), "f");
|
|
291
|
+
}
|
|
292
|
+
static convertToMap(schedule) {
|
|
293
|
+
const parts = schedule.split(' ');
|
|
294
|
+
return {
|
|
295
|
+
minute: convertPart(parts[0], LIMITS.minute[0], LIMITS.minute[1]),
|
|
296
|
+
hour: convertPart(parts[1], LIMITS.hour[0], LIMITS.hour[1]),
|
|
297
|
+
day_of_month: convertPart(parts[2], LIMITS.day_of_month[0], LIMITS.day_of_month[1]),
|
|
298
|
+
month: convertPart(parts[3], LIMITS.month[0], LIMITS.month[1]),
|
|
299
|
+
day_of_week: convertPart(parts[4], LIMITS.day_of_week[0], LIMITS.day_of_week[1]),
|
|
300
|
+
};
|
|
301
|
+
}
|
|
302
|
+
static getTimeParts(date, timeZone) {
|
|
303
|
+
const now = (0, toUTC_1.toUTC)(timeZone !== null
|
|
304
|
+
? new Date((0, format_1.format)(date, 'ISO', 'en-US', timeZone))
|
|
305
|
+
: date);
|
|
306
|
+
return {
|
|
307
|
+
minute: now.getUTCMinutes(),
|
|
308
|
+
hour: now.getUTCHours(),
|
|
309
|
+
day_of_month: now.getUTCDate(),
|
|
310
|
+
month: now.getUTCMonth() + 1,
|
|
311
|
+
day_of_week: now.getUTCDay(),
|
|
312
|
+
};
|
|
313
|
+
}
|
|
314
|
+
static checkTimeAgainstMap(map, time) {
|
|
315
|
+
const { minute, hour, day_of_month, month, day_of_week } = map;
|
|
316
|
+
if (minute !== '*' && !minute.has(time.minute))
|
|
317
|
+
return false;
|
|
318
|
+
if (hour !== '*' && !hour.has(time.hour))
|
|
319
|
+
return false;
|
|
320
|
+
if (day_of_month !== '*' && !day_of_month.has(time.day_of_month))
|
|
321
|
+
return false;
|
|
322
|
+
if (month !== '*' && !month.has(time.month))
|
|
323
|
+
return false;
|
|
324
|
+
if (day_of_week !== '*' && !day_of_week.has(time.day_of_week))
|
|
325
|
+
return false;
|
|
326
|
+
return true;
|
|
327
|
+
}
|
|
328
|
+
static isCronSchedule(raw) {
|
|
329
|
+
if (!(0, isNotEmpty_1.isNotEmptyString)(raw))
|
|
330
|
+
return false;
|
|
331
|
+
const parts = raw.split(' ');
|
|
332
|
+
return (parts.length === 5 &&
|
|
333
|
+
isCronPart(parts[0], LIMITS.minute[0], LIMITS.minute[1]) &&
|
|
334
|
+
isCronPart(parts[1], LIMITS.hour[0], LIMITS.hour[1]) &&
|
|
335
|
+
isCronPart(parts[2], LIMITS.day_of_month[0], LIMITS.day_of_month[1]) &&
|
|
336
|
+
isCronPart(parts[3], LIMITS.month[0], LIMITS.month[1]) &&
|
|
337
|
+
isCronPart(parts[4], LIMITS.day_of_week[0], LIMITS.day_of_week[1]));
|
|
338
|
+
}
|
|
339
|
+
static cronShouldRun(schedule, timeZone = null) {
|
|
340
|
+
if (!Scheduler.isCronSchedule(schedule))
|
|
341
|
+
return false;
|
|
342
|
+
return Scheduler.checkTimeAgainstMap(Scheduler.convertToMap(schedule), Scheduler.getTimeParts(new Date(), (0, isNotEmpty_1.isNotEmptyString)(timeZone) ? timeZone : null));
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
exports.Scheduler = Scheduler;
|
|
346
|
+
exports.default = Scheduler;
|
|
347
|
+
_Scheduler_jobs = new WeakMap(), _Scheduler_name = new WeakMap(), _Scheduler_log = new WeakMap(), _Scheduler_timeZone = new WeakMap(), _Scheduler_parallel = new WeakMap(), _Scheduler_timer = new WeakMap();
|
package/modules/index.js
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Scheduler = exports.PubSub = void 0;
|
|
4
|
+
var PubSub_1 = require("./PubSub");
|
|
5
|
+
Object.defineProperty(exports, "PubSub", { enumerable: true, get: function () { return PubSub_1.PubSub; } });
|
|
6
|
+
var Scheduler_1 = require("./Scheduler");
|
|
7
|
+
Object.defineProperty(exports, "Scheduler", { enumerable: true, get: function () { return Scheduler_1.Scheduler; } });
|
package/number/index.d.ts
CHANGED
|
@@ -1,18 +1,37 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
export {
|
|
1
|
+
export { isNumber } from './is';
|
|
2
|
+
export { isNumber as isNum } from './is';
|
|
3
|
+
export { isNumberAbove } from './isAbove';
|
|
4
|
+
export { isNumberAbove as isNumGt } from './isAbove';
|
|
5
|
+
export { isNumberAbove as isGt } from './isAbove';
|
|
6
|
+
export { isNumberAboveOrEqual } from './isAboveOrEqual';
|
|
7
|
+
export { isNumberAboveOrEqual as isNumGte } from './isAboveOrEqual';
|
|
8
|
+
export { isNumberAboveOrEqual as isGte } from './isAboveOrEqual';
|
|
9
|
+
export { isNumberBelow } from './isBelow';
|
|
10
|
+
export { isNumberBelow as isNumLt } from './isBelow';
|
|
11
|
+
export { isNumberBelow as isLt } from './isBelow';
|
|
12
|
+
export { isNumberBelowOrEqual } from './isBelowOrEqual';
|
|
13
|
+
export { isNumberBelowOrEqual as isNumLte } from './isBelowOrEqual';
|
|
14
|
+
export { isNumberBelowOrEqual as isLte } from './isBelowOrEqual';
|
|
15
|
+
export { isNumberBetween } from './isBetween';
|
|
16
|
+
export { isNumberBetween as isNumBetween } from './isBetween';
|
|
17
|
+
export { isNumberBetween as isBetween } from './isBetween';
|
|
18
|
+
export { isInteger } from './isInteger';
|
|
19
|
+
export { isInteger as isInt } from './isInteger';
|
|
20
|
+
export { isIntegerAbove } from './isIntegerAbove';
|
|
21
|
+
export { isIntegerAbove as isIntGt } from './isIntegerAbove';
|
|
22
|
+
export { isIntegerAboveOrEqual } from './isIntegerAboveOrEqual';
|
|
23
|
+
export { isIntegerAboveOrEqual as isIntGte } from './isIntegerAboveOrEqual';
|
|
24
|
+
export { isIntegerBelow } from './isIntegerBelow';
|
|
25
|
+
export { isIntegerBelow as isIntLt } from './isIntegerBelow';
|
|
26
|
+
export { isIntegerBelowOrEqual } from './isIntegerBelowOrEqual';
|
|
27
|
+
export { isIntegerBelowOrEqual as isIntLte } from './isIntegerBelowOrEqual';
|
|
28
|
+
export { isIntegerBetween } from './isIntegerBetween';
|
|
29
|
+
export { isIntegerBetween as isIntBetween } from './isIntegerBetween';
|
|
30
|
+
export { isNumericalNaN } from './isNumericalNaN';
|
|
31
|
+
export { randomBetween } from './randomBetween';
|
|
32
|
+
export { randomBetween as randBetween } from './randomBetween';
|
|
33
|
+
export { randomIntBetween } from './randomIntBetween';
|
|
34
|
+
export { randomIntBetween as randIntBetween } from './randomIntBetween';
|
|
35
|
+
export { round } from './round';
|
|
36
|
+
export { toPercentage } from './toPercentage';
|
|
37
|
+
export { toPercentage as toPct } from './toPercentage';
|
package/number/index.js
CHANGED
|
@@ -1,57 +1,77 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.toPct = exports.toPercentage = exports.round = exports.randIntBetween = exports.randomIntBetween = exports.randBetween = exports.randomBetween = exports.isNumericalNaN = exports.isIntBetween = exports.isIntegerBetween = exports.isIntLte = exports.isIntegerBelowOrEqual = exports.isIntLt = exports.isIntegerBelow = exports.isIntGte = exports.isIntegerAboveOrEqual = exports.isIntGt = exports.isIntegerAbove = exports.isInt = exports.isInteger = exports.isNumBetween = exports.isNumberBetween = exports.isLte = exports.isNumLte = exports.isNumberBelowOrEqual = exports.isLt = exports.isNumLt = exports.isNumberBelow = exports.isGte = exports.isNumGte = exports.isNumberAboveOrEqual = exports.isGt = exports.isNumGt = exports.isNumberAbove = exports.isNum = exports.
|
|
4
|
-
|
|
3
|
+
exports.toPct = exports.toPercentage = exports.round = exports.randIntBetween = exports.randomIntBetween = exports.randBetween = exports.randomBetween = exports.isNumericalNaN = exports.isIntBetween = exports.isIntegerBetween = exports.isIntLte = exports.isIntegerBelowOrEqual = exports.isIntLt = exports.isIntegerBelow = exports.isIntGte = exports.isIntegerAboveOrEqual = exports.isIntGt = exports.isIntegerAbove = exports.isInt = exports.isInteger = exports.isBetween = exports.isNumBetween = exports.isNumberBetween = exports.isLte = exports.isNumLte = exports.isNumberBelowOrEqual = exports.isLt = exports.isNumLt = exports.isNumberBelow = exports.isGte = exports.isNumGte = exports.isNumberAboveOrEqual = exports.isGt = exports.isNumGt = exports.isNumberAbove = exports.isNum = exports.isNumber = void 0;
|
|
4
|
+
var is_1 = require("./is");
|
|
5
5
|
Object.defineProperty(exports, "isNumber", { enumerable: true, get: function () { return is_1.isNumber; } });
|
|
6
|
-
|
|
7
|
-
Object.defineProperty(exports, "isNum", { enumerable: true, get: function () { return
|
|
8
|
-
|
|
6
|
+
var is_2 = require("./is");
|
|
7
|
+
Object.defineProperty(exports, "isNum", { enumerable: true, get: function () { return is_2.isNumber; } });
|
|
8
|
+
var isAbove_1 = require("./isAbove");
|
|
9
9
|
Object.defineProperty(exports, "isNumberAbove", { enumerable: true, get: function () { return isAbove_1.isNumberAbove; } });
|
|
10
|
-
|
|
11
|
-
Object.defineProperty(exports, "
|
|
12
|
-
|
|
10
|
+
var isAbove_2 = require("./isAbove");
|
|
11
|
+
Object.defineProperty(exports, "isNumGt", { enumerable: true, get: function () { return isAbove_2.isNumberAbove; } });
|
|
12
|
+
var isAbove_3 = require("./isAbove");
|
|
13
|
+
Object.defineProperty(exports, "isGt", { enumerable: true, get: function () { return isAbove_3.isNumberAbove; } });
|
|
14
|
+
var isAboveOrEqual_1 = require("./isAboveOrEqual");
|
|
13
15
|
Object.defineProperty(exports, "isNumberAboveOrEqual", { enumerable: true, get: function () { return isAboveOrEqual_1.isNumberAboveOrEqual; } });
|
|
14
|
-
|
|
15
|
-
Object.defineProperty(exports, "
|
|
16
|
-
|
|
16
|
+
var isAboveOrEqual_2 = require("./isAboveOrEqual");
|
|
17
|
+
Object.defineProperty(exports, "isNumGte", { enumerable: true, get: function () { return isAboveOrEqual_2.isNumberAboveOrEqual; } });
|
|
18
|
+
var isAboveOrEqual_3 = require("./isAboveOrEqual");
|
|
19
|
+
Object.defineProperty(exports, "isGte", { enumerable: true, get: function () { return isAboveOrEqual_3.isNumberAboveOrEqual; } });
|
|
20
|
+
var isBelow_1 = require("./isBelow");
|
|
17
21
|
Object.defineProperty(exports, "isNumberBelow", { enumerable: true, get: function () { return isBelow_1.isNumberBelow; } });
|
|
18
|
-
|
|
19
|
-
Object.defineProperty(exports, "
|
|
20
|
-
|
|
22
|
+
var isBelow_2 = require("./isBelow");
|
|
23
|
+
Object.defineProperty(exports, "isNumLt", { enumerable: true, get: function () { return isBelow_2.isNumberBelow; } });
|
|
24
|
+
var isBelow_3 = require("./isBelow");
|
|
25
|
+
Object.defineProperty(exports, "isLt", { enumerable: true, get: function () { return isBelow_3.isNumberBelow; } });
|
|
26
|
+
var isBelowOrEqual_1 = require("./isBelowOrEqual");
|
|
21
27
|
Object.defineProperty(exports, "isNumberBelowOrEqual", { enumerable: true, get: function () { return isBelowOrEqual_1.isNumberBelowOrEqual; } });
|
|
22
|
-
|
|
23
|
-
Object.defineProperty(exports, "
|
|
24
|
-
|
|
28
|
+
var isBelowOrEqual_2 = require("./isBelowOrEqual");
|
|
29
|
+
Object.defineProperty(exports, "isNumLte", { enumerable: true, get: function () { return isBelowOrEqual_2.isNumberBelowOrEqual; } });
|
|
30
|
+
var isBelowOrEqual_3 = require("./isBelowOrEqual");
|
|
31
|
+
Object.defineProperty(exports, "isLte", { enumerable: true, get: function () { return isBelowOrEqual_3.isNumberBelowOrEqual; } });
|
|
32
|
+
var isBetween_1 = require("./isBetween");
|
|
25
33
|
Object.defineProperty(exports, "isNumberBetween", { enumerable: true, get: function () { return isBetween_1.isNumberBetween; } });
|
|
26
|
-
|
|
27
|
-
|
|
34
|
+
var isBetween_2 = require("./isBetween");
|
|
35
|
+
Object.defineProperty(exports, "isNumBetween", { enumerable: true, get: function () { return isBetween_2.isNumberBetween; } });
|
|
36
|
+
var isBetween_3 = require("./isBetween");
|
|
37
|
+
Object.defineProperty(exports, "isBetween", { enumerable: true, get: function () { return isBetween_3.isNumberBetween; } });
|
|
38
|
+
var isInteger_1 = require("./isInteger");
|
|
28
39
|
Object.defineProperty(exports, "isInteger", { enumerable: true, get: function () { return isInteger_1.isInteger; } });
|
|
29
|
-
|
|
30
|
-
|
|
40
|
+
var isInteger_2 = require("./isInteger");
|
|
41
|
+
Object.defineProperty(exports, "isInt", { enumerable: true, get: function () { return isInteger_2.isInteger; } });
|
|
42
|
+
var isIntegerAbove_1 = require("./isIntegerAbove");
|
|
31
43
|
Object.defineProperty(exports, "isIntegerAbove", { enumerable: true, get: function () { return isIntegerAbove_1.isIntegerAbove; } });
|
|
32
|
-
|
|
33
|
-
|
|
44
|
+
var isIntegerAbove_2 = require("./isIntegerAbove");
|
|
45
|
+
Object.defineProperty(exports, "isIntGt", { enumerable: true, get: function () { return isIntegerAbove_2.isIntegerAbove; } });
|
|
46
|
+
var isIntegerAboveOrEqual_1 = require("./isIntegerAboveOrEqual");
|
|
34
47
|
Object.defineProperty(exports, "isIntegerAboveOrEqual", { enumerable: true, get: function () { return isIntegerAboveOrEqual_1.isIntegerAboveOrEqual; } });
|
|
35
|
-
|
|
36
|
-
|
|
48
|
+
var isIntegerAboveOrEqual_2 = require("./isIntegerAboveOrEqual");
|
|
49
|
+
Object.defineProperty(exports, "isIntGte", { enumerable: true, get: function () { return isIntegerAboveOrEqual_2.isIntegerAboveOrEqual; } });
|
|
50
|
+
var isIntegerBelow_1 = require("./isIntegerBelow");
|
|
37
51
|
Object.defineProperty(exports, "isIntegerBelow", { enumerable: true, get: function () { return isIntegerBelow_1.isIntegerBelow; } });
|
|
38
|
-
|
|
39
|
-
|
|
52
|
+
var isIntegerBelow_2 = require("./isIntegerBelow");
|
|
53
|
+
Object.defineProperty(exports, "isIntLt", { enumerable: true, get: function () { return isIntegerBelow_2.isIntegerBelow; } });
|
|
54
|
+
var isIntegerBelowOrEqual_1 = require("./isIntegerBelowOrEqual");
|
|
40
55
|
Object.defineProperty(exports, "isIntegerBelowOrEqual", { enumerable: true, get: function () { return isIntegerBelowOrEqual_1.isIntegerBelowOrEqual; } });
|
|
41
|
-
|
|
42
|
-
|
|
56
|
+
var isIntegerBelowOrEqual_2 = require("./isIntegerBelowOrEqual");
|
|
57
|
+
Object.defineProperty(exports, "isIntLte", { enumerable: true, get: function () { return isIntegerBelowOrEqual_2.isIntegerBelowOrEqual; } });
|
|
58
|
+
var isIntegerBetween_1 = require("./isIntegerBetween");
|
|
43
59
|
Object.defineProperty(exports, "isIntegerBetween", { enumerable: true, get: function () { return isIntegerBetween_1.isIntegerBetween; } });
|
|
44
|
-
|
|
45
|
-
|
|
60
|
+
var isIntegerBetween_2 = require("./isIntegerBetween");
|
|
61
|
+
Object.defineProperty(exports, "isIntBetween", { enumerable: true, get: function () { return isIntegerBetween_2.isIntegerBetween; } });
|
|
62
|
+
var isNumericalNaN_1 = require("./isNumericalNaN");
|
|
46
63
|
Object.defineProperty(exports, "isNumericalNaN", { enumerable: true, get: function () { return isNumericalNaN_1.isNumericalNaN; } });
|
|
47
|
-
|
|
64
|
+
var randomBetween_1 = require("./randomBetween");
|
|
48
65
|
Object.defineProperty(exports, "randomBetween", { enumerable: true, get: function () { return randomBetween_1.randomBetween; } });
|
|
49
|
-
|
|
50
|
-
|
|
66
|
+
var randomBetween_2 = require("./randomBetween");
|
|
67
|
+
Object.defineProperty(exports, "randBetween", { enumerable: true, get: function () { return randomBetween_2.randomBetween; } });
|
|
68
|
+
var randomIntBetween_1 = require("./randomIntBetween");
|
|
51
69
|
Object.defineProperty(exports, "randomIntBetween", { enumerable: true, get: function () { return randomIntBetween_1.randomIntBetween; } });
|
|
52
|
-
|
|
53
|
-
|
|
70
|
+
var randomIntBetween_2 = require("./randomIntBetween");
|
|
71
|
+
Object.defineProperty(exports, "randIntBetween", { enumerable: true, get: function () { return randomIntBetween_2.randomIntBetween; } });
|
|
72
|
+
var round_1 = require("./round");
|
|
54
73
|
Object.defineProperty(exports, "round", { enumerable: true, get: function () { return round_1.round; } });
|
|
55
|
-
|
|
74
|
+
var toPercentage_1 = require("./toPercentage");
|
|
56
75
|
Object.defineProperty(exports, "toPercentage", { enumerable: true, get: function () { return toPercentage_1.toPercentage; } });
|
|
57
|
-
|
|
76
|
+
var toPercentage_2 = require("./toPercentage");
|
|
77
|
+
Object.defineProperty(exports, "toPct", { enumerable: true, get: function () { return toPercentage_2.toPercentage; } });
|
package/object/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
export {
|
|
1
|
+
export { define } from './define';
|
|
2
|
+
export { merge } from './merge';
|
|
3
|
+
export { pick } from './pick';
|
|
4
|
+
export { omit } from './omit';
|
|
5
|
+
export { isObject } from './is';
|
|
6
|
+
export { isNotEmptyObject } from './isNotEmpty';
|
|
7
|
+
export { isNotEmptyObject as isNeObject } from './isNotEmpty';
|
package/object/index.js
CHANGED
|
@@ -1,19 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
|
|
3
|
+
exports.isNeObject = exports.isNotEmptyObject = exports.isObject = exports.omit = exports.pick = exports.merge = exports.define = void 0;
|
|
4
|
+
var define_1 = require("./define");
|
|
5
5
|
Object.defineProperty(exports, "define", { enumerable: true, get: function () { return define_1.define; } });
|
|
6
|
-
|
|
7
|
-
Object.defineProperty(exports, "isObject", { enumerable: true, get: function () { return is_1.isObject; } });
|
|
8
|
-
Object.defineProperty(exports, "is", { enumerable: true, get: function () { return is_1.isObject; } });
|
|
9
|
-
const isNotEmpty_1 = require("./isNotEmpty");
|
|
10
|
-
Object.defineProperty(exports, "isNotEmptyObject", { enumerable: true, get: function () { return isNotEmpty_1.isNotEmptyObject; } });
|
|
11
|
-
Object.defineProperty(exports, "isNotEmpty", { enumerable: true, get: function () { return isNotEmpty_1.isNotEmptyObject; } });
|
|
12
|
-
Object.defineProperty(exports, "isNeObject", { enumerable: true, get: function () { return isNotEmpty_1.isNotEmptyObject; } });
|
|
13
|
-
Object.defineProperty(exports, "isNe", { enumerable: true, get: function () { return isNotEmpty_1.isNotEmptyObject; } });
|
|
14
|
-
const merge_1 = require("./merge");
|
|
6
|
+
var merge_1 = require("./merge");
|
|
15
7
|
Object.defineProperty(exports, "merge", { enumerable: true, get: function () { return merge_1.merge; } });
|
|
16
|
-
|
|
8
|
+
var pick_1 = require("./pick");
|
|
17
9
|
Object.defineProperty(exports, "pick", { enumerable: true, get: function () { return pick_1.pick; } });
|
|
18
|
-
|
|
10
|
+
var omit_1 = require("./omit");
|
|
19
11
|
Object.defineProperty(exports, "omit", { enumerable: true, get: function () { return omit_1.omit; } });
|
|
12
|
+
var is_1 = require("./is");
|
|
13
|
+
Object.defineProperty(exports, "isObject", { enumerable: true, get: function () { return is_1.isObject; } });
|
|
14
|
+
var isNotEmpty_1 = require("./isNotEmpty");
|
|
15
|
+
Object.defineProperty(exports, "isNotEmptyObject", { enumerable: true, get: function () { return isNotEmpty_1.isNotEmptyObject; } });
|
|
16
|
+
var isNotEmpty_2 = require("./isNotEmpty");
|
|
17
|
+
Object.defineProperty(exports, "isNeObject", { enumerable: true, get: function () { return isNotEmpty_2.isNotEmptyObject; } });
|
package/object/omit.js
CHANGED
|
@@ -6,30 +6,28 @@ function innerOmit(obj, keys) {
|
|
|
6
6
|
const result = { ...obj };
|
|
7
7
|
const groups = {};
|
|
8
8
|
for (let i = 0; i < keys.length; i++) {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
delete result[root];
|
|
9
|
+
if (typeof keys[i] === 'string') {
|
|
10
|
+
const [root, ...rest] = keys[i].split('.');
|
|
11
|
+
if (rest.length) {
|
|
12
|
+
if (!groups[root])
|
|
13
|
+
groups[root] = [];
|
|
14
|
+
groups[root].push(rest.join('.'));
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
delete result[root];
|
|
18
|
+
}
|
|
20
19
|
}
|
|
21
20
|
}
|
|
22
21
|
for (const root in groups) {
|
|
23
|
-
if (typeof result[root]
|
|
24
|
-
|
|
25
|
-
|
|
22
|
+
if (typeof result[root] === 'object' &&
|
|
23
|
+
result[root] !== null)
|
|
24
|
+
result[root] = innerOmit(result[root], groups[root]);
|
|
26
25
|
}
|
|
27
26
|
return result;
|
|
28
27
|
}
|
|
29
28
|
function omit(obj, keys) {
|
|
30
29
|
if (Object.prototype.toString.call(obj) !== '[object Object]' ||
|
|
31
|
-
!Array.isArray(keys)
|
|
32
|
-
!keys.length)
|
|
30
|
+
!Array.isArray(keys))
|
|
33
31
|
throw new TypeError('Please pass an object to omit from and a keys array');
|
|
34
32
|
return innerOmit(obj, keys);
|
|
35
33
|
}
|