@terascope/core-utils 2.0.0-dev.7
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 -0
- package/README.md +17 -0
- package/dist/src/arrays.d.ts +59 -0
- package/dist/src/arrays.d.ts.map +1 -0
- package/dist/src/arrays.js +180 -0
- package/dist/src/arrays.js.map +1 -0
- package/dist/src/big-lru-map.d.ts +14 -0
- package/dist/src/big-lru-map.d.ts.map +1 -0
- package/dist/src/big-lru-map.js +20 -0
- package/dist/src/big-lru-map.js.map +1 -0
- package/dist/src/big-map.d.ts +28 -0
- package/dist/src/big-map.d.ts.map +1 -0
- package/dist/src/big-map.js +148 -0
- package/dist/src/big-map.js.map +1 -0
- package/dist/src/big-set.d.ts +20 -0
- package/dist/src/big-set.d.ts.map +1 -0
- package/dist/src/big-set.js +109 -0
- package/dist/src/big-set.js.map +1 -0
- package/dist/src/booleans.d.ts +44 -0
- package/dist/src/booleans.d.ts.map +1 -0
- package/dist/src/booleans.js +81 -0
- package/dist/src/booleans.js.map +1 -0
- package/dist/src/buffers.d.ts +9 -0
- package/dist/src/buffers.d.ts.map +1 -0
- package/dist/src/buffers.js +22 -0
- package/dist/src/buffers.js.map +1 -0
- package/dist/src/collector.d.ts +48 -0
- package/dist/src/collector.d.ts.map +1 -0
- package/dist/src/collector.js +74 -0
- package/dist/src/collector.js.map +1 -0
- package/dist/src/dates.d.ts +180 -0
- package/dist/src/dates.d.ts.map +1 -0
- package/dist/src/dates.js +744 -0
- package/dist/src/dates.js.map +1 -0
- package/dist/src/decorators.d.ts +7 -0
- package/dist/src/decorators.d.ts.map +1 -0
- package/dist/src/decorators.js +21 -0
- package/dist/src/decorators.js.map +1 -0
- package/dist/src/deps.d.ts +25 -0
- package/dist/src/deps.d.ts.map +1 -0
- package/dist/src/deps.js +96 -0
- package/dist/src/deps.js.map +1 -0
- package/dist/src/empty.d.ts +11 -0
- package/dist/src/empty.d.ts.map +1 -0
- package/dist/src/empty.js +32 -0
- package/dist/src/empty.js.map +1 -0
- package/dist/src/entities/data-entity.d.ts +153 -0
- package/dist/src/entities/data-entity.d.ts.map +1 -0
- package/dist/src/entities/data-entity.js +354 -0
- package/dist/src/entities/data-entity.js.map +1 -0
- package/dist/src/entities/index.d.ts +3 -0
- package/dist/src/entities/index.d.ts.map +1 -0
- package/dist/src/entities/index.js +3 -0
- package/dist/src/entities/index.js.map +1 -0
- package/dist/src/entities/interfaces.d.ts +52 -0
- package/dist/src/entities/interfaces.d.ts.map +1 -0
- package/dist/src/entities/interfaces.js +13 -0
- package/dist/src/entities/interfaces.js.map +1 -0
- package/dist/src/entities/utils.d.ts +9 -0
- package/dist/src/entities/utils.d.ts.map +1 -0
- package/dist/src/entities/utils.js +44 -0
- package/dist/src/entities/utils.js.map +1 -0
- package/dist/src/env.d.ts +6 -0
- package/dist/src/env.d.ts.map +1 -0
- package/dist/src/env.js +15 -0
- package/dist/src/env.js.map +1 -0
- package/dist/src/equality.d.ts +72 -0
- package/dist/src/equality.d.ts.map +1 -0
- package/dist/src/equality.js +128 -0
- package/dist/src/equality.js.map +1 -0
- package/dist/src/errors.d.ts +140 -0
- package/dist/src/errors.d.ts.map +1 -0
- package/dist/src/errors.js +372 -0
- package/dist/src/errors.js.map +1 -0
- package/dist/src/event-loop.d.ts +33 -0
- package/dist/src/event-loop.d.ts.map +1 -0
- package/dist/src/event-loop.js +74 -0
- package/dist/src/event-loop.js.map +1 -0
- package/dist/src/fp.d.ts +15 -0
- package/dist/src/fp.d.ts.map +1 -0
- package/dist/src/fp.js +25 -0
- package/dist/src/fp.js.map +1 -0
- package/dist/src/functions.d.ts +19 -0
- package/dist/src/functions.d.ts.map +1 -0
- package/dist/src/functions.js +58 -0
- package/dist/src/functions.js.map +1 -0
- package/dist/src/index.d.ts +32 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +32 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/iterators.d.ts +9 -0
- package/dist/src/iterators.d.ts.map +1 -0
- package/dist/src/iterators.js +13 -0
- package/dist/src/iterators.js.map +1 -0
- package/dist/src/json.d.ts +8 -0
- package/dist/src/json.d.ts.map +1 -0
- package/dist/src/json.js +46 -0
- package/dist/src/json.js.map +1 -0
- package/dist/src/logger.d.ts +18 -0
- package/dist/src/logger.d.ts.map +1 -0
- package/dist/src/logger.js +87 -0
- package/dist/src/logger.js.map +1 -0
- package/dist/src/numbers.d.ts +86 -0
- package/dist/src/numbers.d.ts.map +1 -0
- package/dist/src/numbers.js +354 -0
- package/dist/src/numbers.js.map +1 -0
- package/dist/src/objects.d.ts +66 -0
- package/dist/src/objects.d.ts.map +1 -0
- package/dist/src/objects.js +170 -0
- package/dist/src/objects.js.map +1 -0
- package/dist/src/phone-number.d.ts +4 -0
- package/dist/src/phone-number.d.ts.map +1 -0
- package/dist/src/phone-number.js +31 -0
- package/dist/src/phone-number.js.map +1 -0
- package/dist/src/promises.d.ts +102 -0
- package/dist/src/promises.d.ts.map +1 -0
- package/dist/src/promises.js +289 -0
- package/dist/src/promises.js.map +1 -0
- package/dist/src/queue/index.d.ts +27 -0
- package/dist/src/queue/index.d.ts.map +1 -0
- package/dist/src/queue/index.js +170 -0
- package/dist/src/queue/index.js.map +1 -0
- package/dist/src/queue/node.d.ts +7 -0
- package/dist/src/queue/node.d.ts.map +1 -0
- package/dist/src/queue/node.js +17 -0
- package/dist/src/queue/node.js.map +1 -0
- package/dist/src/regex.d.ts +19 -0
- package/dist/src/regex.d.ts.map +1 -0
- package/dist/src/regex.js +138 -0
- package/dist/src/regex.js.map +1 -0
- package/dist/src/status-codes.d.ts +67 -0
- package/dist/src/status-codes.d.ts.map +1 -0
- package/dist/src/status-codes.js +66 -0
- package/dist/src/status-codes.js.map +1 -0
- package/dist/src/strings.d.ts +279 -0
- package/dist/src/strings.d.ts.map +1 -0
- package/dist/src/strings.js +578 -0
- package/dist/src/strings.js.map +1 -0
- package/dist/src/vector.d.ts +2 -0
- package/dist/src/vector.d.ts.map +1 -0
- package/dist/src/vector.js +16 -0
- package/dist/src/vector.js.map +1 -0
- package/package.json +65 -0
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { Logger } from '@terascope/types';
|
|
2
|
+
/**
|
|
3
|
+
* A simple class for detecting when the event loop is blocked.
|
|
4
|
+
* The recommend use is to call `EventLoop.init(logger)` and then
|
|
5
|
+
* `await EventLoop.wait()` where you want to slow down potentially
|
|
6
|
+
* long running synchronous code
|
|
7
|
+
*/
|
|
8
|
+
export declare class EventLoop {
|
|
9
|
+
readonly logger: Logger;
|
|
10
|
+
static DEFAULT_HEARTBEAT: number;
|
|
11
|
+
/**
|
|
12
|
+
* Adds a setTimeout if the event loop is blocked
|
|
13
|
+
* and will the delay will get slower the longer the event loop
|
|
14
|
+
* is block (with an upper limit)
|
|
15
|
+
*/
|
|
16
|
+
static wait(): Promise<void> | void;
|
|
17
|
+
/**
|
|
18
|
+
* Creates or replaces an instead of a global
|
|
19
|
+
* EvenLoop
|
|
20
|
+
*/
|
|
21
|
+
static init(logger: Logger): EventLoop;
|
|
22
|
+
checkedInDiff: number;
|
|
23
|
+
private readonly heartbeat;
|
|
24
|
+
private checkedIn;
|
|
25
|
+
private interval;
|
|
26
|
+
constructor(logger: Logger);
|
|
27
|
+
get blocked(): boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Cancel the event loop checker
|
|
30
|
+
*/
|
|
31
|
+
cancel(): void;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=event-loop.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event-loop.d.ts","sourceRoot":"","sources":["../../src/event-loop.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAO/C;;;;;EAKE;AACF,qBAAa,SAAS;IAsCN,QAAQ,CAAC,MAAM,EAAE,MAAM;IArCnC,MAAM,CAAC,iBAAiB,SAAQ;IAEhC;;;;MAIE;IACF,MAAM,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAQnC;;;MAGE;IACF,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS;IAWtC,aAAa,EAAE,MAAM,CAAC;IAEtB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA+B;IAEzD,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,QAAQ,CAAiB;gBAEZ,MAAM,EAAE,MAAM;IAoBnC,IAAI,OAAO,IAAI,OAAO,CAErB;IAED;;MAEE;IACF,MAAM,IAAI,IAAI;CAGjB"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { toHumanTime } from './dates.js';
|
|
2
|
+
import { debugLogger } from './logger.js';
|
|
3
|
+
import { pImmediate } from './promises.js';
|
|
4
|
+
let _eventLoop;
|
|
5
|
+
/**
|
|
6
|
+
* A simple class for detecting when the event loop is blocked.
|
|
7
|
+
* The recommend use is to call `EventLoop.init(logger)` and then
|
|
8
|
+
* `await EventLoop.wait()` where you want to slow down potentially
|
|
9
|
+
* long running synchronous code
|
|
10
|
+
*/
|
|
11
|
+
export class EventLoop {
|
|
12
|
+
logger;
|
|
13
|
+
static DEFAULT_HEARTBEAT = 1000;
|
|
14
|
+
/**
|
|
15
|
+
* Adds a setTimeout if the event loop is blocked
|
|
16
|
+
* and will the delay will get slower the longer the event loop
|
|
17
|
+
* is block (with an upper limit)
|
|
18
|
+
*/
|
|
19
|
+
static wait() {
|
|
20
|
+
if (!_eventLoop) {
|
|
21
|
+
EventLoop.init(debugLogger('event-loop'));
|
|
22
|
+
}
|
|
23
|
+
if (!_eventLoop?.blocked)
|
|
24
|
+
return;
|
|
25
|
+
return pImmediate();
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Creates or replaces an instead of a global
|
|
29
|
+
* EvenLoop
|
|
30
|
+
*/
|
|
31
|
+
static init(logger) {
|
|
32
|
+
if (_eventLoop) {
|
|
33
|
+
// there is no need to create multiple
|
|
34
|
+
// instances if the logger doesn't change
|
|
35
|
+
if (_eventLoop.logger === logger)
|
|
36
|
+
return _eventLoop;
|
|
37
|
+
_eventLoop.cancel();
|
|
38
|
+
}
|
|
39
|
+
_eventLoop = new EventLoop(logger);
|
|
40
|
+
return _eventLoop;
|
|
41
|
+
}
|
|
42
|
+
checkedInDiff;
|
|
43
|
+
heartbeat = EventLoop.DEFAULT_HEARTBEAT;
|
|
44
|
+
checkedIn;
|
|
45
|
+
interval;
|
|
46
|
+
constructor(logger) {
|
|
47
|
+
this.logger = logger;
|
|
48
|
+
this.checkedIn = Date.now();
|
|
49
|
+
this.checkedInDiff = 0;
|
|
50
|
+
this.interval = setInterval(() => {
|
|
51
|
+
const now = Date.now();
|
|
52
|
+
this.checkedInDiff = now - this.checkedIn;
|
|
53
|
+
this.checkedIn = now;
|
|
54
|
+
if (this.blocked) {
|
|
55
|
+
this.logger?.warn(`* EVENT LOOP IS PROBABLY BLOCKED (${toHumanTime(this.checkedInDiff)} diff) *`);
|
|
56
|
+
}
|
|
57
|
+
}, this.heartbeat);
|
|
58
|
+
// this is only available in the node environment
|
|
59
|
+
if (typeof this.interval.unref === 'function') {
|
|
60
|
+
// don't keep the process open
|
|
61
|
+
this.interval.unref();
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
get blocked() {
|
|
65
|
+
return this.checkedInDiff > (this.heartbeat * 4);
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Cancel the event loop checker
|
|
69
|
+
*/
|
|
70
|
+
cancel() {
|
|
71
|
+
clearInterval(this.interval);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=event-loop.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event-loop.js","sourceRoot":"","sources":["../../src/event-loop.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,IAAI,UAAiC,CAAC;AAEtC;;;;;EAKE;AACF,MAAM,OAAO,SAAS;IAsCG;IArCrB,MAAM,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAEhC;;;;MAIE;IACF,MAAM,CAAC,IAAI;QACP,IAAI,CAAC,UAAU,EAAE,CAAC;YACd,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC;QAC9C,CAAC;QACD,IAAI,CAAC,UAAU,EAAE,OAAO;YAAE,OAAO;QACjC,OAAO,UAAU,EAAE,CAAC;IACxB,CAAC;IAED;;;MAGE;IACF,MAAM,CAAC,IAAI,CAAC,MAAc;QACtB,IAAI,UAAU,EAAE,CAAC;YACb,sCAAsC;YACtC,yCAAyC;YACzC,IAAI,UAAU,CAAC,MAAM,KAAK,MAAM;gBAAE,OAAO,UAAU,CAAC;YACpD,UAAU,CAAC,MAAM,EAAE,CAAC;QACxB,CAAC;QACD,UAAU,GAAG,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC;QACnC,OAAO,UAAU,CAAC;IACtB,CAAC;IAED,aAAa,CAAS;IAEL,SAAS,GAAG,SAAS,CAAC,iBAAiB,CAAC;IAEjD,SAAS,CAAS;IAClB,QAAQ,CAAiB;IAEjC,YAAqB,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;QAC/B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC5B,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;QAEvB,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE;YAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACvB,IAAI,CAAC,aAAa,GAAG,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;YAC1C,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;YACrB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACf,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,qCAAqC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;YACtG,CAAC;QACL,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAEnB,iDAAiD;QACjD,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;YAC5C,8BAA8B;YAC9B,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QAC1B,CAAC;IACL,CAAC;IAED,IAAI,OAAO;QACP,OAAO,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;IACrD,CAAC;IAED;;MAEE;IACF,MAAM;QACF,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC"}
|
package/dist/src/fp.d.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
type AnyFn = (...args: any[]) => any;
|
|
2
|
+
/**
|
|
3
|
+
* Curry one or more functions, where all must returned falsy values
|
|
4
|
+
*/
|
|
5
|
+
export declare function not<T extends AnyFn>(...fns: T[]): T;
|
|
6
|
+
/**
|
|
7
|
+
* Curry one or more functions, where all must returned truthy values
|
|
8
|
+
*/
|
|
9
|
+
export declare function and<T extends AnyFn>(...fns: T[]): T;
|
|
10
|
+
/**
|
|
11
|
+
* Curry one or more functions, where one must returned a truthy value
|
|
12
|
+
*/
|
|
13
|
+
export declare function or<T extends AnyFn>(...fns: T[]): T;
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=fp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fp.d.ts","sourceRoot":"","sources":["../../src/fp.ts"],"names":[],"mappings":"AAAA,KAAK,KAAK,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC;AAErC;;EAEE;AACF,wBAAgB,GAAG,CAAC,CAAC,SAAS,KAAK,EAAE,GAAG,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAInD;AAED;;EAEE;AACF,wBAAgB,GAAG,CAAC,CAAC,SAAS,KAAK,EAAE,GAAG,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAInD;AAED;;EAEE;AACF,wBAAgB,EAAE,CAAC,CAAC,SAAS,KAAK,EAAE,GAAG,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAIlD"}
|
package/dist/src/fp.js
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Curry one or more functions, where all must returned falsy values
|
|
3
|
+
*/
|
|
4
|
+
export function not(...fns) {
|
|
5
|
+
return function _not(...args) {
|
|
6
|
+
return fns.every((fn) => !fn(...args));
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Curry one or more functions, where all must returned truthy values
|
|
11
|
+
*/
|
|
12
|
+
export function and(...fns) {
|
|
13
|
+
return function _and(...args) {
|
|
14
|
+
return fns.every((fn) => fn(...args));
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Curry one or more functions, where one must returned a truthy value
|
|
19
|
+
*/
|
|
20
|
+
export function or(...fns) {
|
|
21
|
+
return function _or(...args) {
|
|
22
|
+
return fns.some((fn) => fn(...args));
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=fp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fp.js","sourceRoot":"","sources":["../../src/fp.ts"],"names":[],"mappings":"AAEA;;EAEE;AACF,MAAM,UAAU,GAAG,CAAkB,GAAG,GAAQ;IAC5C,OAAO,SAAS,IAAI,CAAC,GAAG,IAAI;QACxB,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IAC3C,CAAM,CAAC;AACX,CAAC;AAED;;EAEE;AACF,MAAM,UAAU,GAAG,CAAkB,GAAG,GAAQ;IAC5C,OAAO,SAAS,IAAI,CAAC,GAAG,IAAI;QACxB,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IAC1C,CAAM,CAAC;AACX,CAAC;AAED;;EAEE;AACF,MAAM,UAAU,EAAE,CAAkB,GAAG,GAAQ;IAC3C,OAAO,SAAS,GAAG,CAAC,GAAG,IAAI;QACvB,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IACzC,CAAM,CAAC;AACX,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
type ArgType<T> = T extends (...args: infer A) => any ? A : any;
|
|
2
|
+
/**
|
|
3
|
+
* Creates a function that is only invoked once
|
|
4
|
+
*/
|
|
5
|
+
export declare function once<T extends ((...args: any[]) => any)>(fn: T): (...args: ArgType<T>) => ReturnType<T> | undefined;
|
|
6
|
+
/**
|
|
7
|
+
* A simple function that does nothing but return the first
|
|
8
|
+
* argument
|
|
9
|
+
*/
|
|
10
|
+
export declare function noop(...args: any[]): any;
|
|
11
|
+
type MemoizeFn = (...args: any[]) => any;
|
|
12
|
+
/**
|
|
13
|
+
* A replacement for lodash memoize
|
|
14
|
+
*/
|
|
15
|
+
export declare function memoize<T extends MemoizeFn>(fn: T): T;
|
|
16
|
+
/** Verify an input is a function */
|
|
17
|
+
export declare function isFunction(input: unknown): input is Function;
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=functions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"functions.d.ts","sourceRoot":"","sources":["../../src/functions.ts"],"names":[],"mappings":"AAKA,KAAK,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;AAEhE;;EAEE;AACF,wBAAgB,IAAI,CAAC,CAAC,SAAQ,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAC7D,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,KAClB,UAAU,CAAC,CAAC,CAAC,GAAG,SAAS,CAU7B;AAED;;;EAGE;AACF,wBAAgB,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,GAAG,CAExC;AAcD,KAAK,SAAS,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC;AACzC;;EAEE;AACF,wBAAgB,OAAO,CAAC,CAAC,SAAS,SAAS,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAYrD;AAED,oCAAoC;AACpC,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,QAAQ,CAE5D"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-unsafe-function-type */
|
|
2
|
+
/* eslint-disable no-param-reassign */
|
|
3
|
+
import { toString } from './strings.js';
|
|
4
|
+
/**
|
|
5
|
+
* Creates a function that is only invoked once
|
|
6
|
+
*/
|
|
7
|
+
export function once(fn) {
|
|
8
|
+
let called = false;
|
|
9
|
+
return function _fn(...args) {
|
|
10
|
+
if (called) {
|
|
11
|
+
fn = undefined;
|
|
12
|
+
return undefined;
|
|
13
|
+
}
|
|
14
|
+
called = true;
|
|
15
|
+
return fn(...args);
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* A simple function that does nothing but return the first
|
|
20
|
+
* argument
|
|
21
|
+
*/
|
|
22
|
+
export function noop(...args) {
|
|
23
|
+
return args[0];
|
|
24
|
+
}
|
|
25
|
+
function _getArgCacheKey(args) {
|
|
26
|
+
const fixed = args.filter((a, i, arr) => {
|
|
27
|
+
if (a === undefined && arr.length === (i + 1))
|
|
28
|
+
return false;
|
|
29
|
+
return true;
|
|
30
|
+
});
|
|
31
|
+
try {
|
|
32
|
+
return JSON.stringify(fixed);
|
|
33
|
+
}
|
|
34
|
+
catch (_e) {
|
|
35
|
+
return toString(fixed);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* A replacement for lodash memoize
|
|
40
|
+
*/
|
|
41
|
+
export function memoize(fn) {
|
|
42
|
+
const _cache = new Map();
|
|
43
|
+
const _memoize = (...args) => {
|
|
44
|
+
const key = _getArgCacheKey(args);
|
|
45
|
+
const cached = _cache.get(key);
|
|
46
|
+
if (cached !== undefined)
|
|
47
|
+
return cached;
|
|
48
|
+
const result = fn(...args);
|
|
49
|
+
_cache.set(key, result);
|
|
50
|
+
return result;
|
|
51
|
+
};
|
|
52
|
+
return _memoize;
|
|
53
|
+
}
|
|
54
|
+
/** Verify an input is a function */
|
|
55
|
+
export function isFunction(input) {
|
|
56
|
+
return !!(input && typeof input === 'function');
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=functions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"functions.js","sourceRoot":"","sources":["../../src/functions.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,sCAAsC;AAEtC,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAIxC;;EAEE;AACF,MAAM,UAAU,IAAI,CAAqC,EAAK;IAG1D,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,OAAO,SAAS,GAAG,CAAC,GAAG,IAAgB;QACnC,IAAI,MAAM,EAAE,CAAC;YACT,EAAE,GAAG,SAAgB,CAAC;YACtB,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,MAAM,GAAG,IAAI,CAAC;QACd,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;IACvB,CAAC,CAAC;AACN,CAAC;AAED;;;EAGE;AACF,MAAM,UAAU,IAAI,CAAC,GAAG,IAAW;IAC/B,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;AACnB,CAAC;AAED,SAAS,eAAe,CAAC,IAAW;IAChC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE;QACpC,IAAI,CAAC,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;QAC5D,OAAO,IAAI,CAAC;IAChB,CAAC,CAAC,CAAC;IACH,IAAI,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAAC,OAAO,EAAE,EAAE,CAAC;QACV,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;AACL,CAAC;AAGD;;EAEE;AACF,MAAM,UAAU,OAAO,CAAsB,EAAK;IAC9C,MAAM,MAAM,GAAG,IAAI,GAAG,EAAe,CAAC;IAEtC,MAAM,QAAQ,GAAQ,CAAC,GAAG,IAAW,EAAO,EAAE;QAC1C,MAAM,GAAG,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,MAAM,CAAC;QACxC,MAAM,MAAM,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;QAC3B,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACxB,OAAO,MAAM,CAAC;IAClB,CAAC,CAAC;IACF,OAAO,QAAQ,CAAC;AACpB,CAAC;AAED,oCAAoC;AACpC,MAAM,UAAU,UAAU,CAAC,KAAc;IACrC,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC;AACpD,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import STATUS_CODES from './status-codes.js';
|
|
2
|
+
export * from './entities/index.js';
|
|
3
|
+
export * from './queue/index.js';
|
|
4
|
+
export * from './arrays.js';
|
|
5
|
+
export * from './big-lru-map.js';
|
|
6
|
+
export * from './big-map.js';
|
|
7
|
+
export * from './big-set.js';
|
|
8
|
+
export * from './booleans.js';
|
|
9
|
+
export * from './buffers.js';
|
|
10
|
+
export * from './collector.js';
|
|
11
|
+
export * from './dates.js';
|
|
12
|
+
export * from './decorators.js';
|
|
13
|
+
export * from './deps.js';
|
|
14
|
+
export * from './empty.js';
|
|
15
|
+
export * from './env.js';
|
|
16
|
+
export * from './equality.js';
|
|
17
|
+
export * from './errors.js';
|
|
18
|
+
export * from './event-loop.js';
|
|
19
|
+
export * from './fp.js';
|
|
20
|
+
export * from './functions.js';
|
|
21
|
+
export * from './json.js';
|
|
22
|
+
export * from './logger.js';
|
|
23
|
+
export * from './numbers.js';
|
|
24
|
+
export * from './objects.js';
|
|
25
|
+
export * from './phone-number.js';
|
|
26
|
+
export * from './promises.js';
|
|
27
|
+
export * from './regex.js';
|
|
28
|
+
export * from './strings.js';
|
|
29
|
+
export * from './iterators.js';
|
|
30
|
+
export * from './vector.js';
|
|
31
|
+
export { STATUS_CODES };
|
|
32
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,mBAAmB,CAAC;AAE7C,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAE5B,OAAO,EAAE,YAAY,EAAE,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import STATUS_CODES from './status-codes.js';
|
|
2
|
+
export * from './entities/index.js';
|
|
3
|
+
export * from './queue/index.js';
|
|
4
|
+
export * from './arrays.js';
|
|
5
|
+
export * from './big-lru-map.js';
|
|
6
|
+
export * from './big-map.js';
|
|
7
|
+
export * from './big-set.js';
|
|
8
|
+
export * from './booleans.js';
|
|
9
|
+
export * from './buffers.js';
|
|
10
|
+
export * from './collector.js';
|
|
11
|
+
export * from './dates.js';
|
|
12
|
+
export * from './decorators.js';
|
|
13
|
+
export * from './deps.js';
|
|
14
|
+
export * from './empty.js';
|
|
15
|
+
export * from './env.js';
|
|
16
|
+
export * from './equality.js';
|
|
17
|
+
export * from './errors.js';
|
|
18
|
+
export * from './event-loop.js';
|
|
19
|
+
export * from './fp.js';
|
|
20
|
+
export * from './functions.js';
|
|
21
|
+
export * from './json.js';
|
|
22
|
+
export * from './logger.js';
|
|
23
|
+
export * from './numbers.js';
|
|
24
|
+
export * from './objects.js';
|
|
25
|
+
export * from './phone-number.js';
|
|
26
|
+
export * from './promises.js';
|
|
27
|
+
export * from './regex.js';
|
|
28
|
+
export * from './strings.js';
|
|
29
|
+
export * from './iterators.js';
|
|
30
|
+
export * from './vector.js';
|
|
31
|
+
export { STATUS_CODES };
|
|
32
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,mBAAmB,CAAC;AAE7C,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAE5B,OAAO,EAAE,YAAY,EAAE,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Returns true if the input is an iterator
|
|
3
|
+
*/
|
|
4
|
+
export declare function isIterator<T>(input: unknown): input is Iterable<T>;
|
|
5
|
+
/**
|
|
6
|
+
* Returns true if the input is an async iterator
|
|
7
|
+
*/
|
|
8
|
+
export declare function isAsyncIterator<T>(input: unknown): input is AsyncIterable<T>;
|
|
9
|
+
//# sourceMappingURL=iterators.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"iterators.d.ts","sourceRoot":"","sources":["../../src/iterators.ts"],"names":[],"mappings":"AAAA;;EAEE;AACF,wBAAgB,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,QAAQ,CAAC,CAAC,CAAC,CAElE;AAED;;EAEE;AACF,wBAAgB,eAAe,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa,CAAC,CAAC,CAAC,CAE5E"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Returns true if the input is an iterator
|
|
3
|
+
*/
|
|
4
|
+
export function isIterator(input) {
|
|
5
|
+
return Symbol.iterator in Object(input);
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Returns true if the input is an async iterator
|
|
9
|
+
*/
|
|
10
|
+
export function isAsyncIterator(input) {
|
|
11
|
+
return Symbol.asyncIterator in Object(input);
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=iterators.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"iterators.js","sourceRoot":"","sources":["../../src/iterators.ts"],"names":[],"mappings":"AAAA;;EAEE;AACF,MAAM,UAAU,UAAU,CAAI,KAAc;IACxC,OAAO,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;AAC5C,CAAC;AAED;;EAEE;AACF,MAAM,UAAU,eAAe,CAAI,KAAc;IAC7C,OAAO,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;AACjD,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare function tryParseJSON<T = any>(input: unknown): T;
|
|
2
|
+
/** JSON encoded buffer into a json object */
|
|
3
|
+
export declare function parseJSON<T = Record<string, unknown>>(buf: Buffer | string): T;
|
|
4
|
+
/** This will try to convert any BigInt values to a value that is compatible with JSON,
|
|
5
|
+
* it will iterate through an array, and check all the keys of an object
|
|
6
|
+
*/
|
|
7
|
+
export declare function toJSONCompatibleValue(input: unknown): any;
|
|
8
|
+
//# sourceMappingURL=json.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../../src/json.ts"],"names":[],"mappings":"AAKA,wBAAgB,YAAY,CAAC,CAAC,GAAG,GAAG,EAAE,KAAK,EAAE,OAAO,GAAG,CAAC,CAMvD;AAED,6CAA6C;AAC7C,wBAAgB,SAAS,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,CAa9E;AAED;;IAEI;AACJ,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,GAAG,CAiBzD"}
|
package/dist/src/json.js
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { toString } from './strings.js';
|
|
2
|
+
import { getTypeOf } from './deps.js';
|
|
3
|
+
import { isBigInt, bigIntToJSON } from './numbers.js';
|
|
4
|
+
import { hasOwn, isKey } from './objects.js';
|
|
5
|
+
export function tryParseJSON(input) {
|
|
6
|
+
try {
|
|
7
|
+
return JSON.parse(input);
|
|
8
|
+
}
|
|
9
|
+
catch (err) {
|
|
10
|
+
return input;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
/** JSON encoded buffer into a json object */
|
|
14
|
+
export function parseJSON(buf) {
|
|
15
|
+
if (!buf || (!Buffer.isBuffer(buf) && typeof buf !== 'string')) {
|
|
16
|
+
throw new TypeError(`Failure to serialize non-buffer, got "${getTypeOf(buf)}"`);
|
|
17
|
+
}
|
|
18
|
+
try {
|
|
19
|
+
// remove null unicode/hex code characters before parsing
|
|
20
|
+
const removedNull = buf.toString().replace(/\0/g, '');
|
|
21
|
+
return JSON.parse(removedNull);
|
|
22
|
+
}
|
|
23
|
+
catch (err) {
|
|
24
|
+
throw new Error(`Failure to parse buffer, ${toString(err)}`);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
/** This will try to convert any BigInt values to a value that is compatible with JSON,
|
|
28
|
+
* it will iterate through an array, and check all the keys of an object
|
|
29
|
+
*/
|
|
30
|
+
export function toJSONCompatibleValue(input) {
|
|
31
|
+
if (isBigInt(input))
|
|
32
|
+
return bigIntToJSON(input);
|
|
33
|
+
if (input == null || typeof input !== 'object')
|
|
34
|
+
return input;
|
|
35
|
+
if (Array.isArray(input)) {
|
|
36
|
+
return input.map(toJSONCompatibleValue);
|
|
37
|
+
}
|
|
38
|
+
const obj = {};
|
|
39
|
+
for (const prop in input) {
|
|
40
|
+
if (hasOwn(input, prop) && isKey(input, prop)) {
|
|
41
|
+
obj[prop] = toJSONCompatibleValue(input[prop]);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return obj;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=json.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json.js","sourceRoot":"","sources":["../../src/json.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAE7C,MAAM,UAAU,YAAY,CAAU,KAAc;IAChD,IAAI,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,KAAe,CAAC,CAAC;IACvC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,OAAO,KAAY,CAAC;IACxB,CAAC;AACL,CAAC;AAED,6CAA6C;AAC7C,MAAM,UAAU,SAAS,CAA8B,GAAoB;IACvE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,OAAO,GAAG,KAAK,QAAQ,CAAC,EAAE,CAAC;QAC7D,MAAM,IAAI,SAAS,CAAC,yCAAyC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACpF,CAAC;IAED,IAAI,CAAC;QACD,yDAAyD;QACzD,MAAM,WAAW,GAAI,GAAc,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAElE,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACnC,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,4BAA4B,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACjE,CAAC;AACL,CAAC;AAED;;IAEI;AACJ,MAAM,UAAU,qBAAqB,CAAC,KAAc;IAChD,IAAI,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC;IAChD,IAAI,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAE7D,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,KAAK,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,GAAG,GAAwB,EAAE,CAAC;IAEpC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,IAAI,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC;YAC5C,GAAG,CAAC,IAAI,CAAC,GAAG,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QACnD,CAAC;IACL,CAAC;IAED,OAAO,GAAG,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { Logger } from '@terascope/types';
|
|
2
|
+
interface DebugParamObj {
|
|
3
|
+
module: string;
|
|
4
|
+
assignment?: string;
|
|
5
|
+
[name: string]: any;
|
|
6
|
+
}
|
|
7
|
+
type DebugParam = DebugParamObj | string;
|
|
8
|
+
export declare const logLevels: {
|
|
9
|
+
trace: number;
|
|
10
|
+
debug: number;
|
|
11
|
+
info: number;
|
|
12
|
+
warn: number;
|
|
13
|
+
error: number;
|
|
14
|
+
fatal: number;
|
|
15
|
+
};
|
|
16
|
+
export declare function debugLogger(testName: string, param?: DebugParam, otherName?: string): Logger;
|
|
17
|
+
export { Logger };
|
|
18
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/logger.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAO/C,UAAU,aAAa;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC;CACvB;AAED,KAAK,UAAU,GAAG,aAAa,GAAG,MAAM,CAAC;AACzC,eAAO,MAAM,SAAS;;;;;;;CAOrB,CAAC;AAMF,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CA+E5F;AAED,OAAO,EAAE,MAAM,EAAE,CAAC"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import debugFn from 'debug';
|
|
2
|
+
import { EventEmitter } from 'node:events';
|
|
3
|
+
import { isPlainObject } from './deps.js';
|
|
4
|
+
import { toString, isString, trimAndToLower } from './strings.js';
|
|
5
|
+
import { uniq } from './arrays.js';
|
|
6
|
+
import { isTest } from './env.js';
|
|
7
|
+
import { isKey } from './objects.js';
|
|
8
|
+
export const logLevels = {
|
|
9
|
+
trace: 10,
|
|
10
|
+
debug: 20,
|
|
11
|
+
info: 30,
|
|
12
|
+
warn: 40,
|
|
13
|
+
error: 50,
|
|
14
|
+
fatal: 60,
|
|
15
|
+
};
|
|
16
|
+
let logLevel = (process.env.DEBUG_LOG_LEVEL && isKey(logLevels, process.env.DEBUG_LOG_LEVEL))
|
|
17
|
+
? process.env.DEBUG_LOG_LEVEL
|
|
18
|
+
: 'debug';
|
|
19
|
+
export function debugLogger(testName, param, otherName) {
|
|
20
|
+
const logger = new EventEmitter();
|
|
21
|
+
let parts = testName ? testName.split(':') : [];
|
|
22
|
+
if (param) {
|
|
23
|
+
if (isString(param)) {
|
|
24
|
+
parts.push(param);
|
|
25
|
+
}
|
|
26
|
+
else if (typeof param === 'object') {
|
|
27
|
+
parts.push(param.module);
|
|
28
|
+
if (param.assignment) {
|
|
29
|
+
parts.push(param.assignment);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
if (otherName) {
|
|
34
|
+
parts.push(otherName);
|
|
35
|
+
}
|
|
36
|
+
parts = parts.map(toString).map(trimAndToLower);
|
|
37
|
+
parts = uniq(parts.filter((str) => !!str));
|
|
38
|
+
if (!parts.includes('teraslice')) {
|
|
39
|
+
parts.unshift('teraslice');
|
|
40
|
+
}
|
|
41
|
+
const name = parts.join(':');
|
|
42
|
+
logger.streams = [];
|
|
43
|
+
logger.addStream = () => { };
|
|
44
|
+
logger.child = (opts, _simple) => {
|
|
45
|
+
if (isString(opts)) {
|
|
46
|
+
return debugLogger(name, undefined, opts);
|
|
47
|
+
}
|
|
48
|
+
if (isPlainObject(opts)) {
|
|
49
|
+
return debugLogger(name, opts, opts.module);
|
|
50
|
+
}
|
|
51
|
+
return debugLogger(name, opts);
|
|
52
|
+
};
|
|
53
|
+
logger.flush = async () => true;
|
|
54
|
+
logger.reopenFileStreams = () => { };
|
|
55
|
+
logger.src = false;
|
|
56
|
+
// @ts-expect-error
|
|
57
|
+
logger.level = (value) => {
|
|
58
|
+
if (value) {
|
|
59
|
+
for (const [level, code] of Object.entries(logLevels)) {
|
|
60
|
+
if ((value === level || value === code) && isKey(logLevels, level)) {
|
|
61
|
+
logLevel = level;
|
|
62
|
+
return undefined;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return undefined;
|
|
66
|
+
}
|
|
67
|
+
return logLevels[logLevel] || 20;
|
|
68
|
+
};
|
|
69
|
+
// @ts-expect-error
|
|
70
|
+
logger.levels = () => logger.level();
|
|
71
|
+
for (const [level, code] of Object.entries(logLevels)) {
|
|
72
|
+
const fLevel = `[${level.toUpperCase()}]`;
|
|
73
|
+
const debug = debugFn(name);
|
|
74
|
+
logger[level] = (...args) => {
|
|
75
|
+
if (code < logger.level())
|
|
76
|
+
return false;
|
|
77
|
+
if (level === 'fatal' && !isTest) {
|
|
78
|
+
console.error(`${name} ${fLevel}`, ...args);
|
|
79
|
+
return true;
|
|
80
|
+
}
|
|
81
|
+
debug(fLevel, ...args);
|
|
82
|
+
return true;
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
return logger;
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/logger.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AASrC,MAAM,CAAC,MAAM,SAAS,GAAG;IACrB,KAAK,EAAE,EAAE;IACT,KAAK,EAAE,EAAE;IACT,IAAI,EAAE,EAAE;IACR,IAAI,EAAE,EAAE;IACR,KAAK,EAAE,EAAE;IACT,KAAK,EAAE,EAAE;CACZ,CAAC;AAEF,IAAI,QAAQ,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IACzF,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe;IAC7B,CAAC,CAAC,OAAO,CAAC;AAEd,MAAM,UAAU,WAAW,CAAC,QAAgB,EAAE,KAAkB,EAAE,SAAkB;IAChF,MAAM,MAAM,GAAW,IAAI,YAAY,EAAY,CAAC;IACpD,IAAI,KAAK,GAAa,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAE1D,IAAI,KAAK,EAAE,CAAC;QACR,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAClB,KAAK,CAAC,IAAI,CAAC,KAAe,CAAC,CAAC;QAChC,CAAC;aAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YACnC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACzB,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;gBACnB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YACjC,CAAC;QACL,CAAC;IACL,CAAC;IAED,IAAI,SAAS,EAAE,CAAC;QACZ,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC1B,CAAC;IACD,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChD,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAE3C,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QAC/B,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC/B,CAAC;IAED,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE7B,MAAM,CAAC,OAAO,GAAG,EAAE,CAAC;IAEpB,MAAM,CAAC,SAAS,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;IAE5B,MAAM,CAAC,KAAK,GAAG,CAAC,IAAyB,EAAE,OAAiB,EAAU,EAAE;QACpE,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACjB,OAAO,WAAW,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;QAC9C,CAAC;QACD,IAAI,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;YACtB,OAAO,WAAW,CAAC,IAAI,EAAE,IAAkB,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9D,CAAC;QACD,OAAO,WAAW,CAAC,IAAI,EAAE,IAAkB,CAAC,CAAC;IACjD,CAAC,CAAC;IAEF,MAAM,CAAC,KAAK,GAAG,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC;IAChC,MAAM,CAAC,iBAAiB,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;IACpC,MAAM,CAAC,GAAG,GAAG,KAAK,CAAC;IAEnB,mBAAmB;IACnB,MAAM,CAAC,KAAK,GAAG,CAAC,KAAsB,EAAsB,EAAE;QAC1D,IAAI,KAAK,EAAE,CAAC;YACR,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;gBACpD,IAAI,CAAC,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,IAAI,CAAC,IAAI,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC;oBACjE,QAAQ,GAAG,KAAK,CAAC;oBACjB,OAAO,SAAS,CAAC;gBACrB,CAAC;YACL,CAAC;YACD,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,OAAO,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IACrC,CAAC,CAAC;IACF,mBAAmB;IACnB,MAAM,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IAErC,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QACpD,MAAM,MAAM,GAAG,IAAI,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC;QAC1C,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAE5B,MAAM,CAAC,KAAqB,CAAC,GAAG,CAAC,GAAG,IAAW,EAAE,EAAE;YAC/C,IAAI,IAAI,GAAG,MAAM,CAAC,KAAK,EAAE;gBAAE,OAAO,KAAK,CAAC;YACxC,IAAI,KAAK,KAAK,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC/B,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,MAAM,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;gBAC5C,OAAO,IAAI,CAAC;YAChB,CAAC;YAED,KAAK,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;YACvB,OAAO,IAAI,CAAC;QAChB,CAAC,CAAC;IACN,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { FieldType } from '@terascope/types';
|
|
2
|
+
/** A native implementation of lodash random */
|
|
3
|
+
export declare function random(min: number, max: number): number;
|
|
4
|
+
/** Check if an input is a number */
|
|
5
|
+
export declare function isNumber(input: unknown): input is number;
|
|
6
|
+
/** Convert any input to a number, return Number.NaN if unable to convert input */
|
|
7
|
+
export declare function toNumber(input: unknown): number;
|
|
8
|
+
/** Will throw if converted number is NaN */
|
|
9
|
+
export declare function toNumberOrThrow(input: unknown): number;
|
|
10
|
+
/** Check if value is a bigint */
|
|
11
|
+
export declare function isBigInt(input: unknown): input is bigint;
|
|
12
|
+
/** Convert any input to a bigint */
|
|
13
|
+
export declare function toBigInt(input: unknown): bigint | false;
|
|
14
|
+
/** Convert any input to a bigint */
|
|
15
|
+
export declare function toBigIntOrThrow(input: unknown): bigint;
|
|
16
|
+
/**
|
|
17
|
+
* Convert a BigInt to either a number or a string
|
|
18
|
+
*/
|
|
19
|
+
export declare function bigIntToJSON(int: bigint): string | number;
|
|
20
|
+
/**
|
|
21
|
+
* A stricter check for verifying a number string
|
|
22
|
+
* @todo this needs to be smarter
|
|
23
|
+
*/
|
|
24
|
+
export declare function isNumberLike(input: unknown): boolean;
|
|
25
|
+
/** A simplified implementation of lodash isInteger */
|
|
26
|
+
export declare function isInteger(val: unknown): val is number;
|
|
27
|
+
/** Convert an input to a integer, return false if unable to convert input */
|
|
28
|
+
export declare function toInteger(input: unknown): number | false;
|
|
29
|
+
/** Convert an input to a integer or throw */
|
|
30
|
+
export declare function toIntegerOrThrow(input: unknown): number;
|
|
31
|
+
/** Verify the input is float */
|
|
32
|
+
export declare function isFloat(val: unknown): val is number;
|
|
33
|
+
/** Convert an input to a float, return false if unable to convert input */
|
|
34
|
+
export declare function toFloat(input: unknown): number | false;
|
|
35
|
+
/** Convert an input to a float or throw */
|
|
36
|
+
export declare function toFloatOrThrow(input: unknown): number;
|
|
37
|
+
/**
|
|
38
|
+
* Like parseList, except it returns numbers
|
|
39
|
+
*/
|
|
40
|
+
export declare function parseNumberList(input: unknown): number[];
|
|
41
|
+
export interface InNumberRangeArg {
|
|
42
|
+
min?: number;
|
|
43
|
+
max?: number;
|
|
44
|
+
inclusive?: boolean;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Returns true if number is between min or max value provided
|
|
48
|
+
*
|
|
49
|
+
* @example
|
|
50
|
+
* inNumberRange(42, { min: 0, max: 100}); // true
|
|
51
|
+
* inNumberRange(-42, { min:0 , max: 100 }); // false
|
|
52
|
+
* inNumberRange(42, { min: 0, max: 42 }); // false
|
|
53
|
+
* inNumberRange(42, { min: 0, max: 42, inclusive: true }) // true
|
|
54
|
+
*/
|
|
55
|
+
export declare function inNumberRange(input: unknown, args: InNumberRangeArg): input is number;
|
|
56
|
+
export declare function inNumberRangeFP(args: InNumberRangeArg): (input: unknown) => input is number;
|
|
57
|
+
/**
|
|
58
|
+
* Returns a truncated number to nth decimal places.
|
|
59
|
+
*
|
|
60
|
+
* @param fractionDigits The number of decimal points to round to.
|
|
61
|
+
* @param truncate If this is true the number will not be rounded
|
|
62
|
+
*/
|
|
63
|
+
export declare function setPrecision(input: unknown, fractionDigits: number, truncate?: boolean): number;
|
|
64
|
+
/**
|
|
65
|
+
* A functional programming version of setPrecision
|
|
66
|
+
*
|
|
67
|
+
* @param fractionDigits The number of decimal points to round to.
|
|
68
|
+
* @param truncate If this is true the number will not be rounded
|
|
69
|
+
*/
|
|
70
|
+
export declare function setPrecisionFP(fractionDigits: number, truncate?: boolean): (input: unknown) => number;
|
|
71
|
+
/**
|
|
72
|
+
* Convert a fahrenheit value to celsius, this will return a precision of
|
|
73
|
+
* 2 decimal points
|
|
74
|
+
*/
|
|
75
|
+
export declare function toCelsius(input: unknown): number;
|
|
76
|
+
/**
|
|
77
|
+
* Convert a celsius value to fahrenheit, this will return a precision of
|
|
78
|
+
* 2 decimal points
|
|
79
|
+
*/
|
|
80
|
+
export declare function toFahrenheit(input: unknown): number;
|
|
81
|
+
export declare function validateByteNumber(input: unknown): number;
|
|
82
|
+
export declare function validateShortNumber(input: unknown): number;
|
|
83
|
+
export declare function validateIntegerNumber(input: unknown): number;
|
|
84
|
+
export declare function validateNumberType(type: FieldType): (input: unknown) => number;
|
|
85
|
+
export declare function isValidateNumberType(type: FieldType): (input: unknown) => boolean;
|
|
86
|
+
//# sourceMappingURL=numbers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"numbers.d.ts","sourceRoot":"","sources":["../../src/numbers.ts"],"names":[],"mappings":"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"}
|