@spinajs/util 2.0.184 → 2.0.186

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.
Files changed (43) hide show
  1. package/lib/cjs/args.d.ts +52 -0
  2. package/lib/cjs/args.d.ts.map +1 -0
  3. package/lib/cjs/args.js +354 -0
  4. package/lib/cjs/args.js.map +1 -0
  5. package/lib/cjs/fp.d.ts +47 -0
  6. package/lib/cjs/fp.d.ts.map +1 -0
  7. package/lib/cjs/fp.js +106 -0
  8. package/lib/cjs/fp.js.map +1 -0
  9. package/lib/cjs/index.d.ts +3 -0
  10. package/lib/cjs/index.d.ts.map +1 -1
  11. package/lib/cjs/index.js +3 -0
  12. package/lib/cjs/index.js.map +1 -1
  13. package/lib/cjs/string.d.ts +2 -0
  14. package/lib/cjs/string.d.ts.map +1 -0
  15. package/lib/cjs/string.js +14 -0
  16. package/lib/cjs/string.js.map +1 -0
  17. package/lib/cjs/thread.d.ts +4 -0
  18. package/lib/cjs/thread.d.ts.map +1 -1
  19. package/lib/cjs/thread.js +22 -1
  20. package/lib/cjs/thread.js.map +1 -1
  21. package/lib/mjs/args.d.ts +52 -0
  22. package/lib/mjs/args.d.ts.map +1 -0
  23. package/lib/mjs/args.js +315 -0
  24. package/lib/mjs/args.js.map +1 -0
  25. package/lib/mjs/fp.d.ts +47 -0
  26. package/lib/mjs/fp.d.ts.map +1 -0
  27. package/lib/mjs/fp.js +93 -0
  28. package/lib/mjs/fp.js.map +1 -0
  29. package/lib/mjs/index.d.ts +3 -0
  30. package/lib/mjs/index.d.ts.map +1 -1
  31. package/lib/mjs/index.js +3 -0
  32. package/lib/mjs/index.js.map +1 -1
  33. package/lib/mjs/string.d.ts +2 -0
  34. package/lib/mjs/string.d.ts.map +1 -0
  35. package/lib/mjs/string.js +10 -0
  36. package/lib/mjs/string.js.map +1 -0
  37. package/lib/mjs/thread.d.ts +4 -0
  38. package/lib/mjs/thread.d.ts.map +1 -1
  39. package/lib/mjs/thread.js +20 -0
  40. package/lib/mjs/thread.js.map +1 -1
  41. package/lib/tsconfig.cjs.tsbuildinfo +1 -1
  42. package/lib/tsconfig.mjs.tsbuildinfo +1 -1
  43. package/package.json +5 -1
@@ -1 +1 @@
1
- {"version":3,"file":"thread.d.ts","sourceRoot":"","sources":["../../src/thread.ts"],"names":[],"mappings":"AACA;;;;;;GAMG;AACH,eAAO,MAAM,KAAK,aAAc,MAAM,kBAMrC,CAAC"}
1
+ {"version":3,"file":"thread.d.ts","sourceRoot":"","sources":["../../src/thread.ts"],"names":[],"mappings":"AACA;;;;;;GAMG;AACH,eAAO,MAAM,KAAK,aAAc,MAAM,kBAMrC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,KAAK,gBAAiB,MAAM,kCAkBxC,CAAA"}
package/lib/cjs/thread.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.sleep = void 0;
3
+ exports.delay = exports.sleep = void 0;
4
4
  /**
5
5
  *
6
6
  * Sleep for a given duration in ms
@@ -16,4 +16,25 @@ const sleep = (duration) => {
16
16
  });
17
17
  };
18
18
  exports.sleep = sleep;
19
+ /**
20
+ * Delay execution of a function for a given duration
21
+ */
22
+ const delay = (duration, callback) => {
23
+ return new Promise((resolve, reject) => {
24
+ setTimeout(() => {
25
+ try {
26
+ const result = callback();
27
+ if (result instanceof Promise) {
28
+ result.then(resolve).catch(reject);
29
+ return;
30
+ }
31
+ resolve(result);
32
+ }
33
+ catch (e) {
34
+ reject(e);
35
+ }
36
+ }, duration);
37
+ });
38
+ };
39
+ exports.delay = delay;
19
40
  //# sourceMappingURL=thread.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"thread.js","sourceRoot":"","sources":["../../src/thread.ts"],"names":[],"mappings":";;;AACA;;;;;;GAMG;AACI,MAAM,KAAK,GAAG,CAAC,QAAgB,EAAE,EAAE;IACxC,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;QACnC,UAAU,CAAC,GAAG,EAAE;YACd,OAAO,EAAE,CAAC;QACZ,CAAC,EAAE,QAAQ,CAAC,CAAC;IACf,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AANW,QAAA,KAAK,SAMhB"}
1
+ {"version":3,"file":"thread.js","sourceRoot":"","sources":["../../src/thread.ts"],"names":[],"mappings":";;;AACA;;;;;;GAMG;AACI,MAAM,KAAK,GAAG,CAAC,QAAgB,EAAE,EAAE;IACxC,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;QACnC,UAAU,CAAC,GAAG,EAAE;YACd,OAAO,EAAE,CAAC;QACZ,CAAC,EAAE,QAAQ,CAAC,CAAC;IACf,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AANW,QAAA,KAAK,SAMhB;AAEF;;GAEG;AACI,MAAM,KAAK,GAAG,CAAI,QAAgB,EAAE,QAAiB,EAAE,EAAE;IAC9D,OAAO,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACxC,UAAU,CAAC,GAAG,EAAE;YACd,IAAI;gBACF,MAAM,MAAM,GAAG,QAAQ,EAAE,CAAC;gBAE1B,IAAI,MAAM,YAAY,OAAO,EAAE;oBAC7B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;oBACnC,OAAO;iBACR;gBAED,OAAO,CAAC,MAAM,CAAC,CAAC;aACjB;YAAC,OAAO,CAAC,EAAE;gBACV,MAAM,CAAC,CAAC,CAAC,CAAC;aACX;QACH,CAAC,EAAE,QAAQ,CAAC,CAAC;IACf,CAAC,CAAC,CAAC;AAEL,CAAC,CAAA;AAlBY,QAAA,KAAK,SAkBjB"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Helper function to validate arguments
3
+ *
4
+ * @param checks
5
+ * @returns validated argument
6
+ */
7
+ export declare function _check_arg(...checks: ((arg: any, name: string) => any)[]): (arg: any, name: string) => any;
8
+ /**
9
+ * Validate number, if not number throws InvalidArgument
10
+ *
11
+ * @param checks
12
+ * @returns validated number
13
+ */
14
+ export declare function _is_number(...checks: ((arg: number, name: string) => unknown)[]): (arg: unknown, name: string) => any;
15
+ export declare function _is_map<K, V>(...checks: ((arg: unknown, name: string) => unknown)[]): (arg: Map<K, V>, name: string) => Map<K, V>;
16
+ export declare function _contains_key<K, V>(key: K): (arg: unknown, name: string) => Map<K, V> | object;
17
+ export declare function _is_boolean(...checks: ((arg: unknown, name: string) => boolean)[]): (arg: unknown, name: string) => any;
18
+ /**
19
+ * Check if argument is string, if not throws InvalidArgument
20
+ *
21
+ * @param checks
22
+ * @returns
23
+ */
24
+ export declare function _is_string(...checks: ((arg: string, name: string) => unknown)[]): (arg: unknown, name: string) => any;
25
+ export declare function _is_array(...checks: ((arg: any[], name: string) => any[])[]): (arg: any[], name: string) => any;
26
+ export declare function _is_object(...checks: ((arg: object, name: string) => object)[]): (arg: object, name: string) => any;
27
+ export declare function _or(...checks: ((arg: any, name: string) => any)[]): (arg: any, name: string) => any;
28
+ export declare function _to_upper(): (arg: unknown, _name: string) => unknown;
29
+ export declare function _to_array(): (arg: unknown) => any[];
30
+ export declare function _to_lower(): (arg: unknown, _name: string) => unknown;
31
+ export declare function _trim(char?: string): (arg: unknown, _name: string) => unknown;
32
+ export declare function _between(min: number, max: number, error?: Error): (arg: string | number | any[], name: string) => string | number | any[];
33
+ export declare function _min_length(length: number, error?: Error): (arg: string, name: string) => string;
34
+ export declare function _max_length(length: number, error?: Error): (arg: string, name: string) => string;
35
+ export declare function _min(value: number, error?: Error): (arg: number, name: string) => number;
36
+ export declare function _max(value: number, error?: Error): (arg: number, name: string) => number;
37
+ export declare function _non_null(error?: Error): (arg: any, name: string) => any;
38
+ export declare function _non_undefined(error?: Error): (arg: any, name: string) => any;
39
+ export declare function _non_NaN(error?: Error): (arg: any, name: string) => any;
40
+ export declare function _non_nil(error?: Error): (arg: any, name: string) => any;
41
+ export declare function _non_empty(error?: Error): (arg: string | any[], name: string) => string | any[];
42
+ export declare function _default<T>(value: T | (() => T)): (arg: T, name: string) => T;
43
+ export declare function _contains<T>(values: unknown, error?: Error): (arg: T, name: string) => T;
44
+ export declare function _lt(value: number, error?: Error): (arg: unknown, name: string) => unknown;
45
+ export declare function _gt(value: number, error?: Error): (arg: unknown, name: string) => unknown;
46
+ export declare function _reg_match(reg: RegExp, error?: Error): (arg: unknown, name: string) => unknown;
47
+ export declare function _glob_match(glob: string, error?: Error): (arg: unknown, name: string) => unknown;
48
+ export declare function _is_email(): (arg: unknown, name: string) => unknown;
49
+ export declare function _is_uuid(): (arg: unknown, name: string) => unknown;
50
+ export declare function _to_int(error?: Error): (arg: string, name: string) => number;
51
+ export declare function _to_float(error?: Error): (arg: string, name: string) => number;
52
+ //# sourceMappingURL=args.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../src/args.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,315 @@
1
+ import { InvalidArgument } from '@spinajs/exceptions';
2
+ import GlobToRegExp from 'glob-to-regexp';
3
+ import { trimChar } from './string.js';
4
+ /**
5
+ * Helper function to validate arguments
6
+ *
7
+ * @param checks
8
+ * @returns validated argument
9
+ */
10
+ export function _check_arg(...checks) {
11
+ return function (arg, name) {
12
+ for (const check of checks) {
13
+ arg = check(arg, name);
14
+ }
15
+ return arg;
16
+ };
17
+ }
18
+ /**
19
+ * Validate number, if not number throws InvalidArgument
20
+ *
21
+ * @param checks
22
+ * @returns validated number
23
+ */
24
+ export function _is_number(...checks) {
25
+ return function (arg, name) {
26
+ if (typeof arg !== 'number') {
27
+ throw new InvalidArgument(`${name} should be number`);
28
+ }
29
+ return _check_arg(...checks)(arg, name);
30
+ };
31
+ }
32
+ export function _is_map(...checks) {
33
+ return function (arg, name) {
34
+ if (!(arg instanceof Map)) {
35
+ throw new InvalidArgument(`${name} should be Map`);
36
+ }
37
+ return _check_arg(...checks)(arg, name);
38
+ };
39
+ }
40
+ export function _contains_key(key) {
41
+ return function (arg, name) {
42
+ if (arg instanceof Map) {
43
+ if (!arg.has(key)) {
44
+ throw new InvalidArgument(`${name} should contain key ${key}`);
45
+ }
46
+ }
47
+ else if (typeof arg === 'object' && !Object.keys(arg).includes(key.toString())) {
48
+ throw new InvalidArgument(`${name} should contain key ${key}`);
49
+ }
50
+ return arg;
51
+ };
52
+ }
53
+ export function _is_boolean(...checks) {
54
+ return function (arg, name) {
55
+ if (typeof arg === 'number') {
56
+ if (arg !== 1 && arg !== 0) {
57
+ throw new InvalidArgument(`${name} should be boolean`);
58
+ }
59
+ }
60
+ else if (typeof arg !== 'boolean') {
61
+ throw new InvalidArgument(`${name} should be boolean`);
62
+ }
63
+ return _check_arg(...checks)(arg, name);
64
+ };
65
+ }
66
+ /**
67
+ * Check if argument is string, if not throws InvalidArgument
68
+ *
69
+ * @param checks
70
+ * @returns
71
+ */
72
+ export function _is_string(...checks) {
73
+ return function (arg, name) {
74
+ if (typeof arg !== 'string') {
75
+ throw new InvalidArgument(`${name} should be string`);
76
+ }
77
+ return _check_arg(...checks)(arg, name);
78
+ };
79
+ }
80
+ export function _is_array(...checks) {
81
+ return function (arg, name) {
82
+ if (!Array.isArray(arg)) {
83
+ throw new InvalidArgument(`${name} should be array`);
84
+ }
85
+ return _check_arg(...checks)(arg, name);
86
+ };
87
+ }
88
+ export function _is_object(...checks) {
89
+ return function (arg, name) {
90
+ if (typeof arg !== 'object' || arg === null || arg === undefined || Array.isArray(arg)) {
91
+ throw new InvalidArgument(`${name} should be plain old object`);
92
+ }
93
+ return _check_arg(...checks)(arg, name);
94
+ };
95
+ }
96
+ export function _or(...checks) {
97
+ return function (arg, name) {
98
+ for (const check of checks) {
99
+ try {
100
+ return check(arg, name);
101
+ }
102
+ catch (e) {
103
+ // ignore
104
+ }
105
+ }
106
+ throw new InvalidArgument(`${name} should pass at least one check: ${checks.map((c) => c.name).join(', ')}`);
107
+ };
108
+ }
109
+ export function _to_upper() {
110
+ return function (arg, _name) {
111
+ if (typeof arg !== 'string') {
112
+ return arg;
113
+ }
114
+ return arg.toUpperCase();
115
+ };
116
+ }
117
+ export function _to_array() {
118
+ return function (arg) {
119
+ if (Array.isArray(arg)) {
120
+ return arg;
121
+ }
122
+ return [arg];
123
+ };
124
+ }
125
+ export function _to_lower() {
126
+ return function (arg, _name) {
127
+ if (typeof arg !== 'string') {
128
+ return arg;
129
+ }
130
+ return arg.toLowerCase();
131
+ };
132
+ }
133
+ export function _trim(char) {
134
+ return function (arg, _name) {
135
+ if (typeof arg === 'string') {
136
+ return char ? trimChar(arg, char) : arg.trim();
137
+ }
138
+ return arg;
139
+ };
140
+ }
141
+ export function _between(min, max, error) {
142
+ return function (arg, name) {
143
+ if (Array.isArray(arg) || typeof arg === 'string') {
144
+ if (arg.length < min || arg.length > max) {
145
+ throw error ?? new InvalidArgument(`${name} should be between ${min} and ${max}`);
146
+ }
147
+ }
148
+ else if (typeof arg === 'number') {
149
+ if (arg < min || arg > max) {
150
+ throw error ?? new InvalidArgument(`${name} should be between ${min} and ${max}`);
151
+ }
152
+ }
153
+ return arg;
154
+ };
155
+ }
156
+ export function _min_length(length, error) {
157
+ return function (arg, name) {
158
+ if (arg.length < length) {
159
+ throw error ?? new InvalidArgument(`${name} should be at least ${length} characters`);
160
+ }
161
+ return arg;
162
+ };
163
+ }
164
+ export function _max_length(length, error) {
165
+ return function (arg, name) {
166
+ if (arg.length > length) {
167
+ throw error ?? new InvalidArgument(`${name} should be at most ${length} characters`);
168
+ }
169
+ return arg;
170
+ };
171
+ }
172
+ export function _min(value, error) {
173
+ return function (arg, name) {
174
+ if (arg < value) {
175
+ throw error ?? new InvalidArgument(`${name} should be at least ${value}`);
176
+ }
177
+ return arg;
178
+ };
179
+ }
180
+ export function _max(value, error) {
181
+ return function (arg, name) {
182
+ if (arg > value) {
183
+ throw error ?? new InvalidArgument(`${name} should be at most ${value}`);
184
+ }
185
+ return arg;
186
+ };
187
+ }
188
+ export function _non_null(error) {
189
+ return function (arg, name) {
190
+ if (arg === null) {
191
+ throw error ?? new InvalidArgument(`${name} should not be null`);
192
+ }
193
+ return arg;
194
+ };
195
+ }
196
+ export function _non_undefined(error) {
197
+ return function (arg, name) {
198
+ if (arg === undefined) {
199
+ throw error ?? new InvalidArgument(`${name} should not be undefined`);
200
+ }
201
+ return arg;
202
+ };
203
+ }
204
+ export function _non_NaN(error) {
205
+ return function (arg, name) {
206
+ if (isNaN(arg)) {
207
+ throw error ?? new InvalidArgument(`${name} is NaN`);
208
+ }
209
+ return arg;
210
+ };
211
+ }
212
+ export function _non_nil(error) {
213
+ return function (arg, name) {
214
+ if (arg === null || arg === undefined || arg === '' || (Array.isArray(arg) && arg.length === 0) || (typeof arg === 'object' && Object.keys(arg).length === 0)) {
215
+ throw error ?? new InvalidArgument(`${name} should not be null, undefined or empty`);
216
+ }
217
+ return arg;
218
+ };
219
+ }
220
+ export function _non_empty(error) {
221
+ return function (arg, name) {
222
+ if (arg.length === 0) {
223
+ throw error ?? new InvalidArgument(`${name} should not be empty`);
224
+ }
225
+ return arg;
226
+ };
227
+ }
228
+ export function _default(value) {
229
+ return function (arg, _name) {
230
+ if (arg === null || arg === undefined || arg === '' || (Array.isArray(arg) && arg.length === 0) || (typeof arg === 'object' && Object.keys(arg).length === 0)) {
231
+ if (value instanceof Function) {
232
+ return value();
233
+ }
234
+ return value;
235
+ }
236
+ return arg;
237
+ };
238
+ }
239
+ export function _contains(values, error) {
240
+ return function (arg, name) {
241
+ if (!Array.isArray(values)) {
242
+ throw new InvalidArgument(`${name} should be an array`);
243
+ }
244
+ if (!values.includes(arg)) {
245
+ throw error ?? new InvalidArgument(`${name} should be one of ${values.join(', ')}`);
246
+ }
247
+ return arg;
248
+ };
249
+ }
250
+ export function _lt(value, error) {
251
+ return function (arg, name) {
252
+ if (typeof arg !== 'number') {
253
+ return arg;
254
+ }
255
+ if (arg >= value) {
256
+ throw error ?? new InvalidArgument(`${name} should be less than ${value}`);
257
+ }
258
+ return arg;
259
+ };
260
+ }
261
+ export function _gt(value, error) {
262
+ return function (arg, name) {
263
+ if (typeof arg !== 'number') {
264
+ return arg;
265
+ }
266
+ if (arg <= value) {
267
+ throw error ?? new InvalidArgument(`${name} should be greater than ${value}`);
268
+ }
269
+ return arg;
270
+ };
271
+ }
272
+ export function _reg_match(reg, error) {
273
+ return function (arg, name) {
274
+ if (typeof arg !== 'string') {
275
+ return arg;
276
+ }
277
+ if (!reg.test(arg)) {
278
+ throw error ?? new InvalidArgument(`${name} should match ${reg}`);
279
+ }
280
+ return arg;
281
+ };
282
+ }
283
+ export function _glob_match(glob, error) {
284
+ return function (arg, name) {
285
+ if (typeof arg !== 'string') {
286
+ return arg;
287
+ }
288
+ return _reg_match(GlobToRegExp(glob), error)(arg, name);
289
+ };
290
+ }
291
+ export function _is_email() {
292
+ return _reg_match(/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/);
293
+ }
294
+ export function _is_uuid() {
295
+ return _reg_match(/^[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89ab][a-f0-9]{3}-[a-f0-9]{12}$/);
296
+ }
297
+ export function _to_int(error) {
298
+ return function (arg, name) {
299
+ const res = parseInt(arg);
300
+ if (isNaN(res)) {
301
+ throw error ?? new InvalidArgument(`${name} should be integer`);
302
+ }
303
+ return res;
304
+ };
305
+ }
306
+ export function _to_float(error) {
307
+ return function (arg, name) {
308
+ const res = parseFloat(arg);
309
+ if (isNaN(res)) {
310
+ throw error ?? new InvalidArgument(`${name} should be float`);
311
+ }
312
+ return res;
313
+ };
314
+ }
315
+ //# sourceMappingURL=args.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"args.js","sourceRoot":"","sources":["../../src/args.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ export type Constructor<T> = new (...args: any[]) => T;
2
+ /**
3
+ * Chains a list of functions together, passing the result of each function to the next.
4
+ *
5
+ * @param fns
6
+ * @returns
7
+ */
8
+ export declare function _chain<T>(...fns: (((arg?: any) => Promise<any>) | any | Promise<any>)[]): Promise<T>;
9
+ export declare function _zip(...fns: ((arg?: any) => Promise<any>)[]): (val: unknown) => Promise<any[]>;
10
+ export declare function _use(value: () => Promise<unknown>, name: string): (arg?: unknown) => Promise<{
11
+ [x: string]: unknown;
12
+ }>;
13
+ /**
14
+ *
15
+ * Catches errors from a promise and calls the provided error handler.
16
+ * If error occures, chained promise will be rejected with the error.
17
+ *
18
+ * It acts also like circuit breaker, if error occures, it will not call next promise in chain.
19
+ *
20
+ * @param promise
21
+ * @param onError
22
+ * @returns
23
+ */
24
+ export declare function _catch(promise: (...arg: unknown[]) => Promise<unknown>, onError: (err: Error, ...arg: unknown[]) => Promise<void>): (...arg: unknown[]) => Promise<unknown>;
25
+ /**
26
+ * Catch errors from a promise and call the provided error handler if the error matches the filter.
27
+ *
28
+ * @param promise
29
+ * @param onError
30
+ * @param filter
31
+ * @returns
32
+ */
33
+ export declare function _catchFilter(promise: (arg: unknown) => Promise<unknown>, onError: (err: Error) => void, filter: (err: Error) => boolean): (arg?: unknown) => Promise<unknown>;
34
+ export declare function _catchValue(promise: (arg: unknown) => Promise<unknown>, onError: (err: Error) => unknown, value: unknown): (arg?: unknown) => Promise<unknown>;
35
+ /**
36
+ * Cactches exception of specific type and calls provided error handler.
37
+ *
38
+ * @param promise
39
+ * @param onError
40
+ * @param exception
41
+ * @returns
42
+ */
43
+ export declare function _catchException(promise: (arg: unknown) => Promise<unknown>, onError: (err: Error) => void, exception: Constructor<Error>): (arg?: unknown) => Promise<unknown>;
44
+ export declare function _fallback(promise: (arg: unknown) => Promise<unknown>, fallback: (err: Error) => unknown): (arg?: unknown) => Promise<unknown>;
45
+ export declare function _tap(promise: ((arg: unknown) => Promise<unknown>) | Promise<unknown>): (arg?: unknown) => Promise<unknown>;
46
+ export declare function _either(cond: (arg: unknown) => Promise<unknown>, onFulfilled: () => Promise<unknown>, onRejected: () => Promise<unknown>): (arg?: unknown) => Promise<unknown>;
47
+ //# sourceMappingURL=fp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fp.d.ts","sourceRoot":"","sources":["../../src/fp.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAGvD;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAUpG;AAED,wBAAgB,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,SAC7C,OAAO,oBACrB;AAED,wBAAgB,IAAI,CAAC,KAAK,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,UAC1C,OAAO;;GAC5B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,CAAC,GAAG,GAAG,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,YAChH,OAAO,EAAE,sBAC1B;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,OAAO,UACxH,OAAO,sBAQtB;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,OAAO,EAAE,KAAK,EAAE,OAAO,UACzG,OAAO,sBACtB;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,EAAE,SAAS,EAAE,WAAW,CAAC,KAAK,CAAC,UACzH,OAAO,sBAQtB;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,OAAO,UACxF,OAAO,sBACtB;AAED,wBAAgB,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,UACrE,OAAO,sBAOtB;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,UACzH,OAAO,sBACtB"}
package/lib/mjs/fp.js ADDED
@@ -0,0 +1,93 @@
1
+ /**
2
+ * Chains a list of functions together, passing the result of each function to the next.
3
+ *
4
+ * @param fns
5
+ * @returns
6
+ */
7
+ export function _chain(...fns) {
8
+ return fns.reduce((prev, curr) => {
9
+ if (curr instanceof Promise) {
10
+ return prev.then(() => curr);
11
+ }
12
+ else if (typeof curr === 'function') {
13
+ return prev.then((res) => curr(res));
14
+ }
15
+ else {
16
+ return prev.then(() => Promise.resolve(curr));
17
+ }
18
+ }, Promise.resolve(null));
19
+ }
20
+ export function _zip(...fns) {
21
+ return (val) => Promise.all(fns.map((fn) => fn(val)));
22
+ }
23
+ export function _use(value, name) {
24
+ return async (arg) => Object.assign({}, arg, { [name]: await value() });
25
+ }
26
+ /**
27
+ *
28
+ * Catches errors from a promise and calls the provided error handler.
29
+ * If error occures, chained promise will be rejected with the error.
30
+ *
31
+ * It acts also like circuit breaker, if error occures, it will not call next promise in chain.
32
+ *
33
+ * @param promise
34
+ * @param onError
35
+ * @returns
36
+ */
37
+ export function _catch(promise, onError) {
38
+ return (...arg) => Promise.resolve(promise(...arg)).catch(async (err) => await onError(err, ...arg));
39
+ }
40
+ /**
41
+ * Catch errors from a promise and call the provided error handler if the error matches the filter.
42
+ *
43
+ * @param promise
44
+ * @param onError
45
+ * @param filter
46
+ * @returns
47
+ */
48
+ export function _catchFilter(promise, onError, filter) {
49
+ return (arg) => Promise.resolve(promise(arg)).catch((err) => {
50
+ if (filter(err)) {
51
+ return onError(err);
52
+ }
53
+ else {
54
+ throw err;
55
+ }
56
+ });
57
+ }
58
+ export function _catchValue(promise, onError, value) {
59
+ return (arg) => Promise.resolve(promise(arg)).catch((err) => (err === value ? onError(err) : Promise.reject(err)));
60
+ }
61
+ /**
62
+ * Cactches exception of specific type and calls provided error handler.
63
+ *
64
+ * @param promise
65
+ * @param onError
66
+ * @param exception
67
+ * @returns
68
+ */
69
+ export function _catchException(promise, onError, exception) {
70
+ return (arg) => Promise.resolve(promise(arg)).catch((err) => {
71
+ if (typeof err === 'object' && err instanceof exception) {
72
+ return onError(err);
73
+ }
74
+ else {
75
+ throw err;
76
+ }
77
+ });
78
+ }
79
+ export function _fallback(promise, fallback) {
80
+ return (arg) => promise(arg).catch(fallback);
81
+ }
82
+ export function _tap(promise) {
83
+ return (arg) => {
84
+ if (promise instanceof Promise) {
85
+ return promise.then(() => arg);
86
+ }
87
+ return promise(arg).then(() => arg);
88
+ };
89
+ }
90
+ export function _either(cond, onFulfilled, onRejected) {
91
+ return (arg) => cond(arg).then((res) => (res ? onFulfilled() : onRejected()));
92
+ }
93
+ //# sourceMappingURL=fp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fp.js","sourceRoot":"","sources":["../../src/fp.ts"],"names":[],"mappings":"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"}
@@ -2,4 +2,7 @@ export * from "./array.js";
2
2
  export * from "./hash.js";
3
3
  export * from "./json.js";
4
4
  export * from "./thread.js";
5
+ export * from "./args.js";
6
+ export * from "./fp.js";
7
+ export * from "./string.js";
5
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC"}
package/lib/mjs/index.js CHANGED
@@ -2,4 +2,7 @@ export * from "./array.js";
2
2
  export * from "./hash.js";
3
3
  export * from "./json.js";
4
4
  export * from "./thread.js";
5
+ export * from "./args.js";
6
+ export * from "./fp.js";
7
+ export * from "./string.js";
5
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function trimChar(s: string, char: string): string;
2
+ //# sourceMappingURL=string.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string.d.ts","sourceRoot":"","sources":["../../src/string.ts"],"names":[],"mappings":"AAAA,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,UAS/C"}
@@ -0,0 +1,10 @@
1
+ export function trimChar(s, char) {
2
+ var start = 0, end = s.length;
3
+ while (start < end && s[start] === char)
4
+ ++start;
5
+ while (end > start && s[end - 1] === char)
6
+ --end;
7
+ return start > 0 || end < s.length ? s.substring(start, end) : s;
8
+ }
9
+ ;
10
+ //# sourceMappingURL=string.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string.js","sourceRoot":"","sources":["../../src/string.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,QAAQ,CAAC,CAAS,EAAE,IAAY;IAC9C,IAAI,KAAK,GAAG,CAAC,EACX,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC;IAEjB,OAAO,KAAK,GAAG,GAAG,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI;QAAE,EAAE,KAAK,CAAC;IAEjD,OAAO,GAAG,GAAG,KAAK,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,IAAI;QAAE,EAAE,GAAG,CAAC;IAEjD,OAAO,KAAK,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnE,CAAC;AAAA,CAAC"}
@@ -6,4 +6,8 @@
6
6
  * @returns
7
7
  */
8
8
  export declare const sleep: (duration: number) => Promise<void>;
9
+ /**
10
+ * Delay execution of a function for a given duration
11
+ */
12
+ export declare const delay: <T>(duration: number, callback: () => T) => Promise<T>;
9
13
  //# sourceMappingURL=thread.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"thread.d.ts","sourceRoot":"","sources":["../../src/thread.ts"],"names":[],"mappings":"AACA;;;;;;GAMG;AACH,eAAO,MAAM,KAAK,aAAc,MAAM,kBAMrC,CAAC"}
1
+ {"version":3,"file":"thread.d.ts","sourceRoot":"","sources":["../../src/thread.ts"],"names":[],"mappings":"AACA;;;;;;GAMG;AACH,eAAO,MAAM,KAAK,aAAc,MAAM,kBAMrC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,KAAK,gBAAiB,MAAM,kCAkBxC,CAAA"}