@bitbeater/ecma-utils 2.7.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.
Files changed (90) hide show
  1. package/README.md +23 -0
  2. package/dist/bytes.d.ts +65 -0
  3. package/dist/bytes.d.ts.map +1 -0
  4. package/dist/bytes.js +68 -0
  5. package/dist/bytes.js.map +1 -0
  6. package/dist/collection/CircularArray.d.ts +98 -0
  7. package/dist/collection/CircularArray.d.ts.map +1 -0
  8. package/dist/collection/CircularArray.js +134 -0
  9. package/dist/collection/CircularArray.js.map +1 -0
  10. package/dist/collection/EvictingDequeue.d.ts +22 -0
  11. package/dist/collection/EvictingDequeue.d.ts.map +1 -0
  12. package/dist/collection/EvictingDequeue.js +57 -0
  13. package/dist/collection/EvictingDequeue.js.map +1 -0
  14. package/dist/collection/collection.d.ts +4 -0
  15. package/dist/collection/collection.d.ts.map +1 -0
  16. package/dist/collection/collection.js +23 -0
  17. package/dist/collection/collection.js.map +1 -0
  18. package/dist/collection/collectionOperations.d.ts +125 -0
  19. package/dist/collection/collectionOperations.d.ts.map +1 -0
  20. package/dist/collection/collectionOperations.js +193 -0
  21. package/dist/collection/collectionOperations.js.map +1 -0
  22. package/dist/cons.d.ts +34 -0
  23. package/dist/cons.d.ts.map +1 -0
  24. package/dist/cons.js +49 -0
  25. package/dist/cons.js.map +1 -0
  26. package/dist/consts.d.ts +2 -0
  27. package/dist/consts.d.ts.map +1 -0
  28. package/dist/consts.js +5 -0
  29. package/dist/consts.js.map +1 -0
  30. package/dist/index.d.ts +13 -0
  31. package/dist/index.d.ts.map +1 -0
  32. package/dist/index.js +49 -0
  33. package/dist/index.js.map +1 -0
  34. package/dist/logger.d.ts +95 -0
  35. package/dist/logger.d.ts.map +1 -0
  36. package/dist/logger.js +172 -0
  37. package/dist/logger.js.map +1 -0
  38. package/dist/math.d.ts +183 -0
  39. package/dist/math.d.ts.map +1 -0
  40. package/dist/math.js +263 -0
  41. package/dist/math.js.map +1 -0
  42. package/dist/net/http.d.ts +22 -0
  43. package/dist/net/http.d.ts.map +1 -0
  44. package/dist/net/http.js +74 -0
  45. package/dist/net/http.js.map +1 -0
  46. package/dist/object.d.ts +98 -0
  47. package/dist/object.d.ts.map +1 -0
  48. package/dist/object.js +127 -0
  49. package/dist/object.js.map +1 -0
  50. package/dist/path/path.d.ts +2 -0
  51. package/dist/path/path.d.ts.map +1 -0
  52. package/dist/path/path.js +8 -0
  53. package/dist/path/path.js.map +1 -0
  54. package/dist/promises.d.ts +3 -0
  55. package/dist/promises.d.ts.map +1 -0
  56. package/dist/promises.js +13 -0
  57. package/dist/promises.js.map +1 -0
  58. package/dist/random.d.ts +46 -0
  59. package/dist/random.d.ts.map +1 -0
  60. package/dist/random.js +76 -0
  61. package/dist/random.js.map +1 -0
  62. package/dist/revivers.d.ts +25 -0
  63. package/dist/revivers.d.ts.map +1 -0
  64. package/dist/revivers.js +34 -0
  65. package/dist/revivers.js.map +1 -0
  66. package/dist/strings.d.ts +16 -0
  67. package/dist/strings.d.ts.map +1 -0
  68. package/dist/strings.js +34 -0
  69. package/dist/strings.js.map +1 -0
  70. package/dist/time/time.d.ts +189 -0
  71. package/dist/time/time.d.ts.map +1 -0
  72. package/dist/time/time.js +315 -0
  73. package/dist/time/time.js.map +1 -0
  74. package/dist/time/timer.d.ts +93 -0
  75. package/dist/time/timer.d.ts.map +1 -0
  76. package/dist/time/timer.js +182 -0
  77. package/dist/time/timer.js.map +1 -0
  78. package/dist/time.d.ts +189 -0
  79. package/dist/time.d.ts.map +1 -0
  80. package/dist/time.js +308 -0
  81. package/dist/time.js.map +1 -0
  82. package/dist/utils/task_duration_tracker.d.ts +102 -0
  83. package/dist/utils/task_duration_tracker.d.ts.map +1 -0
  84. package/dist/utils/task_duration_tracker.js +144 -0
  85. package/dist/utils/task_duration_tracker.js.map +1 -0
  86. package/dist/utils/utils.d.ts +24 -0
  87. package/dist/utils/utils.d.ts.map +1 -0
  88. package/dist/utils/utils.js +47 -0
  89. package/dist/utils/utils.js.map +1 -0
  90. package/package.json +68 -0
@@ -0,0 +1,193 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.arrayDifferences = arrayDifferences;
4
+ exports.forEachConsPairs = forEachConsPairs;
5
+ exports.isSorted = isSorted;
6
+ exports.lastEl = lastEl;
7
+ exports.takeRight = takeRight;
8
+ exports.pickRandomElement = pickRandomElement;
9
+ exports.pickRandomElements = pickRandomElements;
10
+ exports.takeRandomElement = takeRandomElement;
11
+ exports.takeRandomElements = takeRandomElements;
12
+ const utils_1 = require("../utils/utils");
13
+ /**
14
+ *
15
+ * Compute the element-wise absolute differences between two arrays of numbers.
16
+ * @example
17
+ * ```ts
18
+ * arrayDifferences([1,2,3],[3,2,1]); // [2,0,2]
19
+ * ```
20
+ * @param a1 array to compare
21
+ * @param a2 array to compare
22
+ * @returns return the array difference a1-a2
23
+ */
24
+ function arrayDifferences(a1 = [], a2 = []) {
25
+ const retVal = [];
26
+ for (let i = 0; i < a1.length; i++)
27
+ retVal.push(Math.abs((a1[i] || 0) - (a2[i] || 0)));
28
+ return retVal;
29
+ }
30
+ /**
31
+ * executes the provided function fn once for each pair of consecutive elements of the provided array.
32
+ *
33
+ * @example
34
+ * ```ts
35
+ * const array=[1,2,3,4];
36
+ *
37
+ * forEachConsPairs(array,console.log);
38
+ *
39
+ * // prints
40
+ * // 1 2
41
+ * // 2 3
42
+ * // 3 4
43
+ * ```
44
+ *
45
+ */
46
+ function forEachConsPairs(array, fn) {
47
+ if (!array?.length || typeof fn !== 'function')
48
+ return;
49
+ for (let i = 1; i < array.length; i++) {
50
+ const item1 = array[i - 1];
51
+ const item2 = array[i];
52
+ fn(item1, item2);
53
+ }
54
+ }
55
+ /**
56
+ * check if the givven array is sorted or not.
57
+ *
58
+ * @example check array of numbers
59
+ * ```ts
60
+ * isSorted([1,2,3]) //true
61
+ * isSorted([1,3,2]) //false
62
+ * ```
63
+ *
64
+ * @example check array of strings
65
+ *```ts
66
+ * isSorted(['a','b','c']) //true
67
+ * isSorted(['a','c','b']) //false
68
+ * ```
69
+ *
70
+ * @example check array of objects, with compareFn
71
+ * ```ts
72
+ * isSorted([{ x:1}, { x:2}, { x:3}], (o1,o2)=> o1.x-o2.x) // true
73
+ * isSorted([{ x:1}, { x:3}, { x:2}], (o1,o2)=> o1.x-o2.x) // false
74
+ * ```
75
+ *
76
+ * @param array array to check if is sorted
77
+ * @param compareFn function to use for comparison operation
78
+ */
79
+ function isSorted(array, compareFn = genericSortFunction) {
80
+ if (!array?.length)
81
+ return;
82
+ for (let i = 1; i < array.length; i++) {
83
+ const item1 = array[i - 1];
84
+ const item2 = array[i];
85
+ if (compareFn(item1, item2) > 0)
86
+ return false;
87
+ }
88
+ return true;
89
+ }
90
+ const genericSortFunction = (item1, item2) => {
91
+ try {
92
+ return item1 === item2 ? 0 : item1 > item2 ? 1 : -1;
93
+ }
94
+ catch (error) {
95
+ return 0;
96
+ }
97
+ };
98
+ /**
99
+ * get the last element of an aray.
100
+ *
101
+ * @example simply does:
102
+ * ```ts
103
+ * array[array.length - 1];
104
+ * ```
105
+ */
106
+ function lastEl(array) {
107
+ return array?.[array?.length - 1];
108
+ }
109
+ // /**
110
+ // * generate an array, of specified length using the generate function
111
+ // *
112
+ // * @example Generate an array with numbers from 0 to 9
113
+ // * ```ts
114
+ // * gen(10, i => i); // [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
115
+ // * ```
116
+ // */
117
+ // export function gen<T>(length: number, genFn: (index: number) => T): T[] {
118
+ // const retVal = new Array<T>(length);
119
+ // for (var i = 0; i < length; i++) retVal[i] = genFn(i);
120
+ // return retVal;
121
+ // }
122
+ /**
123
+ *
124
+ * like {@link https://lodash.com/docs/4.17.15#takeRight lodash's takeRight}, but also with offset.
125
+ *
126
+ *
127
+ *
128
+ *
129
+ ** * *
130
+ * simply does
131
+ * ```ts
132
+ * array?.slice(array.length - n - offset , array.length - offset);
133
+ * ```
134
+ * * * *
135
+ *
136
+ *
137
+ * @example
138
+ * ```ts
139
+ * takeRight([0, 1, 2, 3]) //=> [3]
140
+ * takeRight([0, 1, 2, 3], 2) //=> [2, 3]
141
+ * takeRight([0, 1, 2, 3], 2, 1) //=> [1, 2]
142
+ * ```
143
+ *
144
+ * @param array The array to query.
145
+ * @param n The number of elements to take.
146
+ * @param offset The offset to apply for elements to take.
147
+ * @returns Returns the slice of array.
148
+ */
149
+ function takeRight(array, n = 1, offset = 0) {
150
+ return array?.slice(array.length - offset - n, array.length - offset);
151
+ }
152
+ /**
153
+ *
154
+ * Returns a random element from the provided array.
155
+ *
156
+ * @param array
157
+ * @returns a random element from the provided array.
158
+ */
159
+ function pickRandomElement(array) {
160
+ return array[Math.floor(Math.random() * array.length)];
161
+ }
162
+ /** *
163
+ * Returns an array of random elements from the provided array.
164
+ *
165
+ * @param array
166
+ * @param legth number of elements to pick
167
+ * @returns an array of random elements from the provided array.
168
+ */
169
+ function pickRandomElements(array, legth) {
170
+ return takeRandomElements([...array], legth);
171
+ }
172
+ /**
173
+ * Returns a random element from the provided array,
174
+ * and **removes** the element from the array.
175
+ *
176
+ * @param array
177
+ * @returns a random element from the provided array.
178
+ */
179
+ function takeRandomElement(array) {
180
+ return array.splice(Math.floor(Math.random() * array.length), 1)[0];
181
+ }
182
+ /** *
183
+ * Returns an array of random elements from the provided array,
184
+ * and **removes** the elements from the array.
185
+ *
186
+ * @param array
187
+ * @param legth number of elements to pick
188
+ * @returns an array of random elements from the provided array.
189
+ */
190
+ function takeRandomElements(array, legth) {
191
+ return (0, utils_1.forEach)(legth, () => takeRandomElement(array));
192
+ }
193
+ //# sourceMappingURL=collectionOperations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collectionOperations.js","sourceRoot":"","sources":["../../src/collection/collectionOperations.ts"],"names":[],"mappings":"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"}
package/dist/cons.d.ts ADDED
@@ -0,0 +1,34 @@
1
+ export declare function printNl(n?: number): void;
2
+ export declare const logColors: {
3
+ reset: string;
4
+ bright: string;
5
+ dim: string;
6
+ underscore: string;
7
+ blink: string;
8
+ reverse: string;
9
+ hidden: string;
10
+ fg: {
11
+ black: string;
12
+ red: string;
13
+ green: string;
14
+ yellow: string;
15
+ blue: string;
16
+ magenta: string;
17
+ cyan: string;
18
+ white: string;
19
+ crimson: string;
20
+ };
21
+ bg: {
22
+ black: string;
23
+ red: string;
24
+ green: string;
25
+ yellow: string;
26
+ blue: string;
27
+ magenta: string;
28
+ cyan: string;
29
+ white: string;
30
+ crimson: string;
31
+ };
32
+ };
33
+ export declare function printObj(obj: any): void;
34
+ //# sourceMappingURL=cons.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cons.d.ts","sourceRoot":"","sources":["../src/cons.ts"],"names":[],"mappings":"AAAA,wBAAgB,OAAO,CAAC,CAAC,GAAE,MAAU,QAIpC;AAED,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgCrB,CAAC;AAEF,wBAAgB,QAAQ,CAAC,GAAG,EAAE,GAAG,QAIhC"}
package/dist/cons.js ADDED
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.logColors = void 0;
4
+ exports.printNl = printNl;
5
+ exports.printObj = printObj;
6
+ function printNl(n = 5) {
7
+ for (let i = 0; i < n; i++) {
8
+ console.log();
9
+ }
10
+ }
11
+ exports.logColors = {
12
+ reset: '\x1b[0m',
13
+ bright: '\x1b[1m',
14
+ dim: '\x1b[2m',
15
+ underscore: '\x1b[4m',
16
+ blink: '\x1b[5m',
17
+ reverse: '\x1b[7m',
18
+ hidden: '\x1b[8m',
19
+ // Foreground (text) colors
20
+ fg: {
21
+ black: '\x1b[30m',
22
+ red: '\x1b[31m',
23
+ green: '\x1b[32m',
24
+ yellow: '\x1b[33m',
25
+ blue: '\x1b[34m',
26
+ magenta: '\x1b[35m',
27
+ cyan: '\x1b[36m',
28
+ white: '\x1b[37m',
29
+ crimson: '\x1b[38m',
30
+ },
31
+ // Background colors
32
+ bg: {
33
+ black: '\x1b[40m',
34
+ red: '\x1b[41m',
35
+ green: '\x1b[42m',
36
+ yellow: '\x1b[43m',
37
+ blue: '\x1b[44m',
38
+ magenta: '\x1b[45m',
39
+ cyan: '\x1b[46m',
40
+ white: '\x1b[47m',
41
+ crimson: '\x1b[48m',
42
+ },
43
+ };
44
+ function printObj(obj) {
45
+ for (const key of Object.keys(obj)) {
46
+ console.log(key, ' : ', obj[key]);
47
+ }
48
+ }
49
+ //# sourceMappingURL=cons.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cons.js","sourceRoot":"","sources":["../src/cons.ts"],"names":[],"mappings":";;;AAAA,0BAIC;AAoCD,4BAIC;AA5CD,SAAgB,OAAO,CAAC,IAAY,CAAC;IACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,EAAE,CAAC;IACf,CAAC;AACF,CAAC;AAEY,QAAA,SAAS,GAAG;IACxB,KAAK,EAAE,SAAS;IAChB,MAAM,EAAE,SAAS;IACjB,GAAG,EAAE,SAAS;IACd,UAAU,EAAE,SAAS;IACrB,KAAK,EAAE,SAAS;IAChB,OAAO,EAAE,SAAS;IAClB,MAAM,EAAE,SAAS;IACjB,2BAA2B;IAC3B,EAAE,EAAE;QACH,KAAK,EAAE,UAAU;QACjB,GAAG,EAAE,UAAU;QACf,KAAK,EAAE,UAAU;QACjB,MAAM,EAAE,UAAU;QAClB,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,UAAU;QACnB,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,UAAU;QACjB,OAAO,EAAE,UAAU;KACnB;IACD,oBAAoB;IACpB,EAAE,EAAE;QACH,KAAK,EAAE,UAAU;QACjB,GAAG,EAAE,UAAU;QACf,KAAK,EAAE,UAAU;QACjB,MAAM,EAAE,UAAU;QAClB,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,UAAU;QACnB,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,UAAU;QACjB,OAAO,EAAE,UAAU;KACnB;CACD,CAAC;AAEF,SAAgB,QAAQ,CAAC,GAAQ;IAChC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACnC,CAAC;AACF,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const ISO_8601_DATE_FORMAT_REX: RegExp;
2
+ //# sourceMappingURL=consts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,wBAAwB,QAAgJ,CAAC"}
package/dist/consts.js ADDED
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ISO_8601_DATE_FORMAT_REX = void 0;
4
+ exports.ISO_8601_DATE_FORMAT_REX = /^(\d{4})-(0[1-9]|1[0-2])-(0[1-9]|1\d|2\d|3[0-1])T([0-1][0-9]|2[0-3]):([0-5]\d):([0-5]\d(\.\d*)?)(([-|+]([0-1][0-9]|2[0-3]):?([0-5]\d)|Z)?)$/;
5
+ //# sourceMappingURL=consts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consts.js","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":";;;AAAa,QAAA,wBAAwB,GAAG,6IAA6I,CAAC"}
@@ -0,0 +1,13 @@
1
+ export * as bytes from './bytes';
2
+ export * as collection from './collection/collection';
3
+ export * as cons from './cons';
4
+ export * as utils from './utils/utils';
5
+ export * as log from './logger';
6
+ export * as math from './math';
7
+ export * as net from './net/http';
8
+ export * as object from './object';
9
+ export * as promises from './promises';
10
+ export * as reviver from './revivers';
11
+ export * as strings from './strings';
12
+ export * as time from './time/time';
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,UAAU,MAAM,yBAAyB,CAAC;AACtD,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,KAAK,MAAM,eAAe,CAAC;AACvC,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,GAAG,MAAM,YAAY,CAAC;AAClC,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,OAAO,MAAM,YAAY,CAAC;AACtC,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,IAAI,MAAM,aAAa,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.time = exports.strings = exports.reviver = exports.promises = exports.object = exports.net = exports.math = exports.log = exports.utils = exports.cons = exports.collection = exports.bytes = void 0;
37
+ exports.bytes = __importStar(require("./bytes"));
38
+ exports.collection = __importStar(require("./collection/collection"));
39
+ exports.cons = __importStar(require("./cons"));
40
+ exports.utils = __importStar(require("./utils/utils"));
41
+ exports.log = __importStar(require("./logger"));
42
+ exports.math = __importStar(require("./math"));
43
+ exports.net = __importStar(require("./net/http"));
44
+ exports.object = __importStar(require("./object"));
45
+ exports.promises = __importStar(require("./promises"));
46
+ exports.reviver = __importStar(require("./revivers"));
47
+ exports.strings = __importStar(require("./strings"));
48
+ exports.time = __importStar(require("./time/time"));
49
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAAiC;AACjC,sEAAsD;AACtD,+CAA+B;AAC/B,uDAAuC;AACvC,gDAAgC;AAChC,+CAA+B;AAC/B,kDAAkC;AAClC,mDAAmC;AACnC,uDAAuC;AACvC,sDAAsC;AACtC,qDAAqC;AACrC,oDAAoC"}
@@ -0,0 +1,95 @@
1
+ export declare enum LogLevel {
2
+ TRACE = 0,
3
+ DEBUG = 1,
4
+ INFO = 2,
5
+ WARN = 3,
6
+ ERROR = 4,
7
+ FATAL = 5,
8
+ OFF = 6
9
+ }
10
+ export type Loggable = string | number | boolean | object | undefined | null | Error | Loggable[];
11
+ export interface LogWriter {
12
+ /**
13
+ * Designates fine-grained informational events that are most useful to debug an application.
14
+ */
15
+ debug: (...msg: Loggable[]) => void;
16
+ /**
17
+ * Designates informational messages that highlight the progress of the application at coarse-grained level.
18
+ */
19
+ info: (...msg: Loggable[]) => void;
20
+ /**
21
+ * Designates potentially harmful situations.
22
+ */
23
+ warn: (...msg: Loggable[]) => void;
24
+ /**
25
+ * Designates error events that might still allow the application to continue running.
26
+ */
27
+ error: (...msg: Loggable[]) => void;
28
+ /**
29
+ * Designates very severe error events that will presumably lead the application to abort.
30
+ */
31
+ fatal: (...msg: Loggable[]) => void;
32
+ /**
33
+ * Designates finer-grained informational events than the DEBUG.
34
+ */
35
+ trace: (...msg: Loggable[]) => void;
36
+ }
37
+ export interface LoggerConfig {
38
+ logWriter?: LogWriter;
39
+ logLevel?: LogLevel;
40
+ prefix?: string;
41
+ }
42
+ export declare class Logger implements LogWriter {
43
+ logLevel: LogLevel;
44
+ logWriter: LogWriter;
45
+ prefix: string;
46
+ constructor(conf?: LoggerConfig | string);
47
+ trace(...data: Loggable[]): void;
48
+ debug(...data: Loggable[]): void;
49
+ info(...data: Loggable[]): void;
50
+ warn(...data: Loggable[]): void;
51
+ error(...data: Loggable[]): void;
52
+ fatal(...data: Loggable[]): void;
53
+ /**
54
+ * @unstable
55
+ * @todo needs testing
56
+ *
57
+ * Creates a new StepLogger with the given name.
58
+ * @example
59
+ * ```ts
60
+ * const logger = new Logger('[main]');
61
+ *
62
+ * logger.info('creating a step logger');
63
+ *
64
+ * const step = logger.step('[step]');
65
+ * step.info('doing something...');
66
+ * step.finish();
67
+ *
68
+ *
69
+ * logger.info('after step logger has finished');
70
+ *
71
+ * // Output:
72
+ * // [2021-08-31T14:00:00.000Z] INFO: [main] creating a step logger
73
+ * // [2021-08-31T14:00:00.000Z] INFO: [main]:[step] started
74
+ * // [2021-08-31T14:00:00.000Z] INFO: [main]:[step] doing something...
75
+ * // [2021-08-31T14:00:00.000Z] INFO: [main]:[step] finished in 0ms
76
+ * // [2021-08-31T14:00:00.000Z] INFO: [main] after step logger has finished
77
+ * ```
78
+ *
79
+ * @param name
80
+ * @returns a new StepLogger wrapping this logger.
81
+ *
82
+ */
83
+ step(name: string): StepLogger;
84
+ }
85
+ /**
86
+ * Wrapper Logger that logs the start and end of a step.
87
+ * When it is created, it logs the start of the step.
88
+ * When the finish method is called, it logs the end of the step, and the logWriter is set to null to prevent further logging.
89
+ */
90
+ export declare class StepLogger extends Logger {
91
+ readonly startTime: number;
92
+ constructor(logger: Logger, stepName: string);
93
+ finish(): void;
94
+ }
95
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA,oBAAY,QAAQ;IACnB,KAAK,IAAA;IACL,KAAK,IAAA;IACL,IAAI,IAAA;IACJ,IAAI,IAAA;IACJ,KAAK,IAAA;IACL,KAAK,IAAA;IACL,GAAG,IAAA;CACH;AAED,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,KAAK,GAAG,QAAQ,EAAE,CAAC;AAElG,MAAM,WAAW,SAAS;IACzB;;OAEG;IACH,KAAK,EAAE,CAAC,GAAG,GAAG,EAAE,QAAQ,EAAE,KAAK,IAAI,CAAC;IACpC;;OAEG;IACH,IAAI,EAAE,CAAC,GAAG,GAAG,EAAE,QAAQ,EAAE,KAAK,IAAI,CAAC;IACnC;;OAEG;IACH,IAAI,EAAE,CAAC,GAAG,GAAG,EAAE,QAAQ,EAAE,KAAK,IAAI,CAAC;IACnC;;OAEG;IACH,KAAK,EAAE,CAAC,GAAG,GAAG,EAAE,QAAQ,EAAE,KAAK,IAAI,CAAC;IACpC;;OAEG;IACH,KAAK,EAAE,CAAC,GAAG,GAAG,EAAE,QAAQ,EAAE,KAAK,IAAI,CAAC;IACpC;;OAEG;IACH,KAAK,EAAE,CAAC,GAAG,GAAG,EAAE,QAAQ,EAAE,KAAK,IAAI,CAAC;CACpC;AAuED,MAAM,WAAW,YAAY;IAC5B,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,MAAO,YAAW,SAAS;IACvC,QAAQ,WAAiB;IACzB,SAAS,YAAoB;IAC7B,MAAM,SAAM;gBACA,IAAI,CAAC,EAAE,YAAY,GAAG,MAAM;IAWxC,KAAK,CAAC,GAAG,IAAI,EAAE,QAAQ,EAAE;IAIzB,KAAK,CAAC,GAAG,IAAI,EAAE,QAAQ,EAAE;IAIzB,IAAI,CAAC,GAAG,IAAI,EAAE,QAAQ,EAAE;IAGxB,IAAI,CAAC,GAAG,IAAI,EAAE,QAAQ,EAAE;IAGxB,KAAK,CAAC,GAAG,IAAI,EAAE,QAAQ,EAAE;IAGzB,KAAK,CAAC,GAAG,IAAI,EAAE,QAAQ,EAAE;IAIzB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU;CAG9B;AAED;;;;GAIG;AACH,qBAAa,UAAW,SAAQ,MAAM;IACrC,QAAQ,CAAC,SAAS,SAAc;gBACpB,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAM5C,MAAM;CAKN"}
package/dist/logger.js ADDED
@@ -0,0 +1,172 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StepLogger = exports.Logger = exports.LogLevel = void 0;
4
+ var LogLevel;
5
+ (function (LogLevel) {
6
+ LogLevel[LogLevel["TRACE"] = 0] = "TRACE";
7
+ LogLevel[LogLevel["DEBUG"] = 1] = "DEBUG";
8
+ LogLevel[LogLevel["INFO"] = 2] = "INFO";
9
+ LogLevel[LogLevel["WARN"] = 3] = "WARN";
10
+ LogLevel[LogLevel["ERROR"] = 4] = "ERROR";
11
+ LogLevel[LogLevel["FATAL"] = 5] = "FATAL";
12
+ LogLevel[LogLevel["OFF"] = 6] = "OFF";
13
+ })(LogLevel || (exports.LogLevel = LogLevel = {}));
14
+ const defaultLogWriter = {
15
+ debug: (...data) => console.debug(`[${new Date().toJSON()}] DEBUG:`, ...data),
16
+ info: (...data) => console.info(`[${new Date().toJSON()}] INFO:`, ...data),
17
+ warn: (...data) => console.warn(`[${new Date().toJSON()}] WARN:`, ...data),
18
+ error: (...data) => {
19
+ (console.error(`[${new Date().toJSON()}] ERROR:`, ...data), printStack(data));
20
+ },
21
+ fatal: (...data) => {
22
+ (console.error(`[${new Date().toJSON()}] FATAL:`, ...data), printStack(data));
23
+ },
24
+ trace: (...data) => console.info(`[${new Date().toJSON()}] TRACE:`, ...data),
25
+ };
26
+ let actualLogWriter = { ...defaultLogWriter };
27
+ let _logLevel = LogLevel.OFF;
28
+ const _logger = {
29
+ trace: (...data) => {
30
+ if (_logLevel <= LogLevel.TRACE)
31
+ actualLogWriter?.trace(...data);
32
+ },
33
+ debug: (...data) => {
34
+ if (_logLevel <= LogLevel.DEBUG)
35
+ actualLogWriter?.debug(...data);
36
+ },
37
+ info: (...data) => {
38
+ if (_logLevel <= LogLevel.INFO)
39
+ actualLogWriter?.info(...data);
40
+ },
41
+ warn: (...data) => {
42
+ if (_logLevel <= LogLevel.WARN)
43
+ actualLogWriter?.warn(...data);
44
+ },
45
+ error: (...data) => {
46
+ if (_logLevel <= LogLevel.ERROR)
47
+ actualLogWriter?.error(...data);
48
+ },
49
+ fatal: (...data) => {
50
+ if (_logLevel <= LogLevel.FATAL)
51
+ actualLogWriter?.error(...data);
52
+ },
53
+ };
54
+ // /** @deprecated */
55
+ // export const debug = (...data: Loggable[]) => _logger.debug(...data);
56
+ // /** @deprecated */
57
+ // export const info = (...data: Loggable[]) => _logger.info(...data);
58
+ // /** @deprecated */
59
+ // export const warn = (...data: Loggable[]) => _logger.warn(...data);
60
+ // /** @deprecated */
61
+ // export const error = (...data: Loggable[]) => _logger.error(...data);
62
+ // /** @deprecated */
63
+ // export const fatal = (...data: Loggable[]) => _logger.fatal(...data);
64
+ // /** @deprecated */
65
+ // export const trace = (...data: Loggable[]) => _logger.trace(...data);
66
+ // /** @deprecated */
67
+ // export const getLogger = () => ({ ..._logger });
68
+ // /** @deprecated */
69
+ // export const setLogger = (logger: LogWriter) => {
70
+ // if (!logger) console.warn('[LOGGER]', 'setting undefined logger');
71
+ // actualLogWriter = logger;
72
+ // };
73
+ // /** @deprecated */
74
+ // export const setLogLevel = (logLevel: LogLevel) => {
75
+ // if (_logLevel == null) console.warn('[LOGGER]', 'setting undefined log level');
76
+ // _logLevel = logLevel;
77
+ // };
78
+ function printStack(errors) {
79
+ errors?.filter(e => e?.stack)?.forEach(e => console.error(e?.stack));
80
+ }
81
+ class Logger {
82
+ constructor(conf) {
83
+ this.logLevel = LogLevel.WARN;
84
+ this.logWriter = defaultLogWriter;
85
+ this.prefix = '';
86
+ if (typeof conf === 'string') {
87
+ this.prefix = conf;
88
+ return;
89
+ }
90
+ this.logLevel = conf?.logLevel ?? this.logLevel;
91
+ this.logWriter = conf?.logWriter ?? this.logWriter;
92
+ this.prefix = conf?.prefix ?? this.prefix;
93
+ }
94
+ trace(...data) {
95
+ if (this.logLevel <= LogLevel.TRACE)
96
+ this.logWriter?.trace(this.prefix, ...data);
97
+ }
98
+ debug(...data) {
99
+ if (this.logLevel <= LogLevel.DEBUG)
100
+ this.logWriter?.debug(this.prefix, ...data);
101
+ }
102
+ info(...data) {
103
+ if (this.logLevel <= LogLevel.INFO)
104
+ this.logWriter?.info(this.prefix, ...data);
105
+ }
106
+ warn(...data) {
107
+ if (this.logLevel <= LogLevel.WARN)
108
+ this.logWriter?.warn(this.prefix, ...data);
109
+ }
110
+ error(...data) {
111
+ if (this.logLevel <= LogLevel.ERROR)
112
+ this.logWriter?.error(this.prefix, ...data);
113
+ }
114
+ fatal(...data) {
115
+ if (this.logLevel <= LogLevel.FATAL)
116
+ this.logWriter?.error(this.prefix, ...data);
117
+ }
118
+ /**
119
+ * @unstable
120
+ * @todo needs testing
121
+ *
122
+ * Creates a new StepLogger with the given name.
123
+ * @example
124
+ * ```ts
125
+ * const logger = new Logger('[main]');
126
+ *
127
+ * logger.info('creating a step logger');
128
+ *
129
+ * const step = logger.step('[step]');
130
+ * step.info('doing something...');
131
+ * step.finish();
132
+ *
133
+ *
134
+ * logger.info('after step logger has finished');
135
+ *
136
+ * // Output:
137
+ * // [2021-08-31T14:00:00.000Z] INFO: [main] creating a step logger
138
+ * // [2021-08-31T14:00:00.000Z] INFO: [main]:[step] started
139
+ * // [2021-08-31T14:00:00.000Z] INFO: [main]:[step] doing something...
140
+ * // [2021-08-31T14:00:00.000Z] INFO: [main]:[step] finished in 0ms
141
+ * // [2021-08-31T14:00:00.000Z] INFO: [main] after step logger has finished
142
+ * ```
143
+ *
144
+ * @param name
145
+ * @returns a new StepLogger wrapping this logger.
146
+ *
147
+ */
148
+ step(name) {
149
+ return new StepLogger(this, name);
150
+ }
151
+ }
152
+ exports.Logger = Logger;
153
+ /**
154
+ * Wrapper Logger that logs the start and end of a step.
155
+ * When it is created, it logs the start of the step.
156
+ * When the finish method is called, it logs the end of the step, and the logWriter is set to null to prevent further logging.
157
+ */
158
+ class StepLogger extends Logger {
159
+ constructor(logger, stepName) {
160
+ super(logger);
161
+ this.startTime = Date.now();
162
+ this.prefix = (logger.prefix ? logger.prefix + ':' : '') + stepName;
163
+ this.info(`started`);
164
+ }
165
+ finish() {
166
+ const duration = Date.now() - this.startTime;
167
+ this.info(`finished in ${duration}ms`);
168
+ this.logWriter = null;
169
+ }
170
+ }
171
+ exports.StepLogger = StepLogger;
172
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"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"}