@naturalcycles/js-lib 14.56.0 → 14.59.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/array/array.util.d.ts +4 -0
- package/dist/array/array.util.js +4 -0
- package/dist/error/app.error.js +2 -0
- package/dist/index.d.ts +4 -2
- package/dist/index.js +8 -1
- package/dist/lazy.d.ts +30 -0
- package/dist/lazy.js +63 -0
- package/dist/log/commonLogger.d.ts +49 -0
- package/dist/log/commonLogger.js +27 -0
- package/dist/promise/AggregatedError.js +1 -0
- package/dist-esm/array/array.util.js +4 -0
- package/dist-esm/error/app.error.js +2 -0
- package/dist-esm/index.js +3 -1
- package/dist-esm/lazy.js +57 -0
- package/dist-esm/log/commonLogger.js +23 -0
- package/dist-esm/promise/AggregatedError.js +1 -0
- package/package.json +1 -1
- package/src/array/array.util.ts +4 -0
- package/src/error/app.error.ts +2 -0
- package/src/index.ts +18 -0
- package/src/lazy.ts +73 -0
- package/src/log/commonLogger.ts +65 -0
- package/src/promise/AggregatedError.ts +1 -0
|
@@ -16,6 +16,8 @@ export declare function _chunk<T>(array: readonly T[], size?: number): T[][];
|
|
|
16
16
|
/**
|
|
17
17
|
* Polyfill to Array.flat() with depth=1.
|
|
18
18
|
* https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/flat
|
|
19
|
+
*
|
|
20
|
+
* @deprecated prefer native Array.flat(), it's supported since iOS 12
|
|
19
21
|
*/
|
|
20
22
|
export declare function _flatten<T>(arrays: T[][]): T[];
|
|
21
23
|
/**
|
|
@@ -25,6 +27,8 @@ export declare function _flatten<T>(arrays: T[][]): T[];
|
|
|
25
27
|
* @return Returns the new flattened array.
|
|
26
28
|
*
|
|
27
29
|
* Based on: https://github.com/you-dont-need/You-Dont-Need-Lodash-Underscore#_flattendeep
|
|
30
|
+
*
|
|
31
|
+
* @deprecated prefer native Array.flat(), it's supported since iOS 12
|
|
28
32
|
*/
|
|
29
33
|
export declare function _flattenDeep<T>(arr: RecursiveArray<T>): T[];
|
|
30
34
|
/**
|
package/dist/array/array.util.js
CHANGED
|
@@ -22,6 +22,8 @@ exports._chunk = _chunk;
|
|
|
22
22
|
/**
|
|
23
23
|
* Polyfill to Array.flat() with depth=1.
|
|
24
24
|
* https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/flat
|
|
25
|
+
*
|
|
26
|
+
* @deprecated prefer native Array.flat(), it's supported since iOS 12
|
|
25
27
|
*/
|
|
26
28
|
function _flatten(arrays) {
|
|
27
29
|
// to flat single level array
|
|
@@ -35,6 +37,8 @@ exports._flatten = _flatten;
|
|
|
35
37
|
* @return Returns the new flattened array.
|
|
36
38
|
*
|
|
37
39
|
* Based on: https://github.com/you-dont-need/You-Dont-Need-Lodash-Underscore#_flattendeep
|
|
40
|
+
*
|
|
41
|
+
* @deprecated prefer native Array.flat(), it's supported since iOS 12
|
|
38
42
|
*/
|
|
39
43
|
function _flattenDeep(arr) {
|
|
40
44
|
return Array.isArray(arr)
|
package/dist/error/app.error.js
CHANGED
|
@@ -19,6 +19,7 @@ class AppError extends Error {
|
|
|
19
19
|
});
|
|
20
20
|
Object.defineProperty(this, 'data', {
|
|
21
21
|
value: data,
|
|
22
|
+
writable: true,
|
|
22
23
|
configurable: true,
|
|
23
24
|
enumerable: false,
|
|
24
25
|
});
|
|
@@ -28,6 +29,7 @@ class AppError extends Error {
|
|
|
28
29
|
else {
|
|
29
30
|
Object.defineProperty(this, 'stack', {
|
|
30
31
|
value: new Error().stack,
|
|
32
|
+
writable: true,
|
|
31
33
|
configurable: true,
|
|
32
34
|
});
|
|
33
35
|
}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { _by, _chunk, _countBy, _difference, _dropRightWhile, _dropWhile, _findLast, _flatten, _flattenDeep, _groupBy, _intersection, _last, _mapToObject, _shuffle, _sortBy, _sum, _sumBy, _takeRightWhile, _takeWhile, _uniq, _uniqBy } from './array/array.util';
|
|
2
|
+
import { _defineLazyProperty, _defineLazyProps, _lazyValue } from './lazy';
|
|
2
3
|
import { _parseQueryString } from './string/url.util';
|
|
3
4
|
import { _range } from './array/range';
|
|
4
5
|
import { PromiseDecoratorCfg, PromiseDecoratorResp, _createPromiseDecorator } from './decorators/createPromiseDecorator';
|
|
@@ -53,5 +54,6 @@ import { Class, ConditionalExcept, ConditionalPick, Merge, Promisable, PromiseVa
|
|
|
53
54
|
import { AsyncMapper, AsyncPredicate, BaseDBEntity, CreatedUpdated, CreatedUpdatedId, ObjectWithId, AnyObjectWithId, Saved, Unsaved, BatchResult, InstanceId, IsoDate, IsoDateTime, KeyValueTuple, Mapper, ObjectMapper, ObjectPredicate, Predicate, PromiseMap, AnyObject, AnyFunction, Reviver, SavedDBEntity, StringMap, UnixTimestamp, ValueOf, ValuesOf, _noop, _objectKeys, _passNothingPredicate, _passthroughMapper, _passthroughPredicate, _passUndefinedMapper, _stringMapEntries, _stringMapValues } from './types';
|
|
54
55
|
import { _gb, _hb, _kb, _mb } from './unit/size.util';
|
|
55
56
|
import { is } from './vendor/is';
|
|
56
|
-
|
|
57
|
-
export {
|
|
57
|
+
import { CommonLogLevel, CommonLogFunction, CommonLogger, SimpleLogger, createSimpleLogger, noopLogger } from './log/commonLogger';
|
|
58
|
+
export type { MemoCache, PromiseDecoratorCfg, PromiseDecoratorResp, ErrorData, ErrorObject, HttpErrorData, HttpErrorResponse, Admin401ErrorData, Admin403ErrorData, StringMap, PromiseMap, AnyObject, AnyFunction, ValuesOf, ValueOf, KeyValueTuple, ObjectMapper, ObjectPredicate, InstanceId, IsoDate, IsoDateTime, Reviver, PMapOptions, Mapper, AsyncMapper, Predicate, AsyncPredicate, BatchResult, DeferredPromise, PRetryOptions, PTimeoutOptions, TryCatchOptions, StringifyAnyOptions, JsonStringifyFunction, Merge, ReadonlyDeep, Promisable, PromiseValue, Simplify, ConditionalPick, ConditionalExcept, Class, UnixTimestamp, BaseDBEntity, SavedDBEntity, Saved, Unsaved, CreatedUpdated, CreatedUpdatedId, ObjectWithId, AnyObjectWithId, JsonSchema, JsonSchemaAny, JsonSchemaOneOf, JsonSchemaAllOf, JsonSchemaAnyOf, JsonSchemaNot, JsonSchemaRef, JsonSchemaConst, JsonSchemaEnum, JsonSchemaString, JsonSchemaNumber, JsonSchemaBoolean, JsonSchemaNull, JsonSchemaRootObject, JsonSchemaObject, JsonSchemaArray, JsonSchemaTuple, JsonSchemaBuilder, CommonLogLevel, CommonLogFunction, CommonLogger, SimpleLogger, };
|
|
59
|
+
export { is, _Memo, _memoFn, _LogMethod, _getArgsSignature, _createPromiseDecorator, AppError, HttpError, AssertionError, _isErrorObject, _isHttpErrorObject, _isHttpErrorResponse, _assert, _assertEquals, _assertDeepEquals, _assertIsError, _assertIsString, _assertIsNumber, _assertTypeOf, _randomInt, _randomArrayItem, _createDeterministicRandom, _inRange, _stringMapValues, _stringMapEntries, _objectKeys, _capitalize, _upperFirst, _lowerFirst, _split, _removeWhitespace, _substringBefore, _substringBeforeLast, _substringAfter, _substringAfterLast, _substringBetweenLast, _replaceAll, _nl2br, _truncate, _truncateMiddle, _pick, _omit, _filterFalsyValues, _filterUndefinedValues, _filterNullishValues, _filterEmptyArrays, _filterEmptyValues, _filterObject, _undefinedIfEmpty, _isObject, _isPrimitive, _mapKeys, _mapValues, _mapObject, _objectNullValuesToUndefined, _deepEquals, _deepCopy, _isEmptyObject, _isEmpty, _merge, _deepTrim, _sortObjectDeep, _sortObject, _get, _set, _has, _unset, _mask, _invert, _invertMap, _by, _groupBy, _sortBy, _sortNumbers, _toFixed, _toPrecision, _round, _findLast, _takeWhile, _takeRightWhile, _dropWhile, _dropRightWhile, _countBy, _intersection, _difference, _shuffle, _mapToObject, _findKeyByValue, _anyToError, _anyToErrorObject, _errorToErrorObject, _errorObjectToAppError, _range, _uniq, _uniqBy, _flatten, _flattenDeep, _chunk, SimpleMovingAverage, _average, _averageWeighted, _percentile, _median, _debounce, _throttle, _Debounce, _Throttle, pMap, _passthroughMapper, _passUndefinedMapper, _passthroughPredicate, _passNothingPredicate, _noop, pBatch, ErrorMode, pFilter, pProps, pDelay, pDefer, pHang, pState, AggregatedError, pRetry, pTimeout, pTuple, _Retry, _Timeout, _tryCatch, _TryCatch, _try, pTry, _jsonParseIfPossible, _stringifyAny, _ms, _since, _hb, _gb, _mb, _kb, _snakeCase, _camelCase, _kebabCase, _sum, _sumBy, _clamp, _last, mergeJsonSchemaObjects, jsonSchema, JsonSchemaAnyBuilder, JSON_SCHEMA_ORDER, generateJsonSchemaFromData, _parseQueryString, _defineLazyProperty, _defineLazyProps, _lazyValue, createSimpleLogger, noopLogger, };
|
package/dist/index.js
CHANGED
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports._isObject = exports._undefinedIfEmpty = exports._filterObject = exports._filterEmptyValues = exports._filterEmptyArrays = exports._filterNullishValues = exports._filterUndefinedValues = exports._filterFalsyValues = exports._omit = exports._pick = exports._truncateMiddle = exports._truncate = exports._nl2br = exports._replaceAll = exports._substringBetweenLast = exports._substringAfterLast = exports._substringAfter = exports._substringBeforeLast = exports._substringBefore = exports._removeWhitespace = exports._split = exports._lowerFirst = exports._upperFirst = exports._capitalize = exports._objectKeys = exports._stringMapEntries = exports._stringMapValues = exports._inRange = exports._createDeterministicRandom = exports._randomArrayItem = exports._randomInt = exports._assertTypeOf = exports._assertIsNumber = exports._assertIsString = exports._assertIsError = exports._assertDeepEquals = exports._assertEquals = exports._assert = exports._isHttpErrorResponse = exports._isHttpErrorObject = exports._isErrorObject = exports.AssertionError = exports.HttpError = exports.AppError = exports._createPromiseDecorator = exports._getArgsSignature = exports._LogMethod = exports._memoFn = exports._Memo = exports.is = void 0;
|
|
4
4
|
exports._average = exports.SimpleMovingAverage = exports._chunk = exports._flattenDeep = exports._flatten = exports._uniqBy = exports._uniq = exports._range = exports._errorObjectToAppError = exports._errorToErrorObject = exports._anyToErrorObject = exports._anyToError = exports._findKeyByValue = exports._mapToObject = exports._shuffle = exports._difference = exports._intersection = exports._countBy = exports._dropRightWhile = exports._dropWhile = exports._takeRightWhile = exports._takeWhile = exports._findLast = exports._round = exports._toPrecision = exports._toFixed = exports._sortNumbers = exports._sortBy = exports._groupBy = exports._by = exports._invertMap = exports._invert = exports._mask = exports._unset = exports._has = exports._set = exports._get = exports._sortObject = exports._sortObjectDeep = exports._deepTrim = exports._merge = exports._isEmpty = exports._isEmptyObject = exports._deepCopy = exports._deepEquals = exports._objectNullValuesToUndefined = exports._mapObject = exports._mapValues = exports._mapKeys = exports._isPrimitive = void 0;
|
|
5
5
|
exports.JSON_SCHEMA_ORDER = exports.JsonSchemaAnyBuilder = exports.jsonSchema = exports.mergeJsonSchemaObjects = exports._last = exports._clamp = exports._sumBy = exports._sum = exports._kebabCase = exports._camelCase = exports._snakeCase = exports._kb = exports._mb = exports._gb = exports._hb = exports._since = exports._ms = exports._stringifyAny = exports._jsonParseIfPossible = exports.pTry = exports._try = exports._TryCatch = exports._tryCatch = exports._Timeout = exports._Retry = exports.pTuple = exports.pTimeout = exports.pRetry = exports.AggregatedError = exports.pState = exports.pHang = exports.pDefer = exports.pDelay = exports.pProps = exports.pFilter = exports.ErrorMode = exports.pBatch = exports._noop = exports._passNothingPredicate = exports._passthroughPredicate = exports._passUndefinedMapper = exports._passthroughMapper = exports.pMap = exports._Throttle = exports._Debounce = exports._throttle = exports._debounce = exports._median = exports._percentile = exports._averageWeighted = void 0;
|
|
6
|
-
exports._parseQueryString = exports.generateJsonSchemaFromData = void 0;
|
|
6
|
+
exports.noopLogger = exports.createSimpleLogger = exports._lazyValue = exports._defineLazyProps = exports._defineLazyProperty = exports._parseQueryString = exports.generateJsonSchemaFromData = void 0;
|
|
7
7
|
const array_util_1 = require("./array/array.util");
|
|
8
8
|
Object.defineProperty(exports, "_by", { enumerable: true, get: function () { return array_util_1._by; } });
|
|
9
9
|
Object.defineProperty(exports, "_chunk", { enumerable: true, get: function () { return array_util_1._chunk; } });
|
|
@@ -26,6 +26,10 @@ Object.defineProperty(exports, "_takeRightWhile", { enumerable: true, get: funct
|
|
|
26
26
|
Object.defineProperty(exports, "_takeWhile", { enumerable: true, get: function () { return array_util_1._takeWhile; } });
|
|
27
27
|
Object.defineProperty(exports, "_uniq", { enumerable: true, get: function () { return array_util_1._uniq; } });
|
|
28
28
|
Object.defineProperty(exports, "_uniqBy", { enumerable: true, get: function () { return array_util_1._uniqBy; } });
|
|
29
|
+
const lazy_1 = require("./lazy");
|
|
30
|
+
Object.defineProperty(exports, "_defineLazyProperty", { enumerable: true, get: function () { return lazy_1._defineLazyProperty; } });
|
|
31
|
+
Object.defineProperty(exports, "_defineLazyProps", { enumerable: true, get: function () { return lazy_1._defineLazyProps; } });
|
|
32
|
+
Object.defineProperty(exports, "_lazyValue", { enumerable: true, get: function () { return lazy_1._lazyValue; } });
|
|
29
33
|
const url_util_1 = require("./string/url.util");
|
|
30
34
|
Object.defineProperty(exports, "_parseQueryString", { enumerable: true, get: function () { return url_util_1._parseQueryString; } });
|
|
31
35
|
const range_1 = require("./array/range");
|
|
@@ -207,3 +211,6 @@ Object.defineProperty(exports, "_kb", { enumerable: true, get: function () { ret
|
|
|
207
211
|
Object.defineProperty(exports, "_mb", { enumerable: true, get: function () { return size_util_1._mb; } });
|
|
208
212
|
const is_1 = require("./vendor/is");
|
|
209
213
|
Object.defineProperty(exports, "is", { enumerable: true, get: function () { return is_1.is; } });
|
|
214
|
+
const commonLogger_1 = require("./log/commonLogger");
|
|
215
|
+
Object.defineProperty(exports, "createSimpleLogger", { enumerable: true, get: function () { return commonLogger_1.createSimpleLogger; } });
|
|
216
|
+
Object.defineProperty(exports, "noopLogger", { enumerable: true, get: function () { return commonLogger_1.noopLogger; } });
|
package/dist/lazy.d.ts
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { AnyFunction, AnyObject } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* const value = lazyValue(() => expensiveComputation())
|
|
4
|
+
*
|
|
5
|
+
* value() // calls expensiveComputation() once
|
|
6
|
+
* value() // returns cached result
|
|
7
|
+
* value() // returns cached result
|
|
8
|
+
*
|
|
9
|
+
* Based on: https://github.com/sindresorhus/lazy-value
|
|
10
|
+
*/
|
|
11
|
+
export declare function _lazyValue<T extends AnyFunction>(fn: T): T;
|
|
12
|
+
/**
|
|
13
|
+
* interface Obj {
|
|
14
|
+
* v: number
|
|
15
|
+
* }
|
|
16
|
+
*
|
|
17
|
+
* const obj = {} as Obj
|
|
18
|
+
*
|
|
19
|
+
* _defineLazyProperty(obj, 'v', () => expensiveComputation())
|
|
20
|
+
* obj.v // runs expensiveComputation() once
|
|
21
|
+
* obj.v // cached value
|
|
22
|
+
* obj.v // cached value
|
|
23
|
+
*
|
|
24
|
+
* Based on: https://github.com/sindresorhus/define-lazy-prop
|
|
25
|
+
*/
|
|
26
|
+
export declare function _defineLazyProperty<OBJ extends AnyObject>(obj: OBJ, propertyName: keyof OBJ, fn: AnyFunction): OBJ;
|
|
27
|
+
/**
|
|
28
|
+
* Like _defineLazyProperty, but allows to define multiple props at once.
|
|
29
|
+
*/
|
|
30
|
+
export declare function _defineLazyProps<OBJ extends AnyObject>(obj: OBJ, props: Partial<Record<keyof OBJ, AnyFunction>>): OBJ;
|
package/dist/lazy.js
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports._defineLazyProps = exports._defineLazyProperty = exports._lazyValue = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* const value = lazyValue(() => expensiveComputation())
|
|
6
|
+
*
|
|
7
|
+
* value() // calls expensiveComputation() once
|
|
8
|
+
* value() // returns cached result
|
|
9
|
+
* value() // returns cached result
|
|
10
|
+
*
|
|
11
|
+
* Based on: https://github.com/sindresorhus/lazy-value
|
|
12
|
+
*/
|
|
13
|
+
function _lazyValue(fn) {
|
|
14
|
+
let isCalled = false;
|
|
15
|
+
let result;
|
|
16
|
+
return (() => {
|
|
17
|
+
if (!isCalled) {
|
|
18
|
+
isCalled = true;
|
|
19
|
+
result = fn();
|
|
20
|
+
}
|
|
21
|
+
return result;
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
exports._lazyValue = _lazyValue;
|
|
25
|
+
/**
|
|
26
|
+
* interface Obj {
|
|
27
|
+
* v: number
|
|
28
|
+
* }
|
|
29
|
+
*
|
|
30
|
+
* const obj = {} as Obj
|
|
31
|
+
*
|
|
32
|
+
* _defineLazyProperty(obj, 'v', () => expensiveComputation())
|
|
33
|
+
* obj.v // runs expensiveComputation() once
|
|
34
|
+
* obj.v // cached value
|
|
35
|
+
* obj.v // cached value
|
|
36
|
+
*
|
|
37
|
+
* Based on: https://github.com/sindresorhus/define-lazy-prop
|
|
38
|
+
*/
|
|
39
|
+
function _defineLazyProperty(obj, propertyName, fn) {
|
|
40
|
+
const define = (value) => Object.defineProperty(obj, propertyName, { value, enumerable: true, writable: true });
|
|
41
|
+
Object.defineProperty(obj, propertyName, {
|
|
42
|
+
configurable: true,
|
|
43
|
+
enumerable: true,
|
|
44
|
+
get() {
|
|
45
|
+
const result = fn();
|
|
46
|
+
define(result);
|
|
47
|
+
return result;
|
|
48
|
+
},
|
|
49
|
+
set(value) {
|
|
50
|
+
define(value);
|
|
51
|
+
},
|
|
52
|
+
});
|
|
53
|
+
return obj;
|
|
54
|
+
}
|
|
55
|
+
exports._defineLazyProperty = _defineLazyProperty;
|
|
56
|
+
/**
|
|
57
|
+
* Like _defineLazyProperty, but allows to define multiple props at once.
|
|
58
|
+
*/
|
|
59
|
+
function _defineLazyProps(obj, props) {
|
|
60
|
+
Object.entries(props).forEach(([k, fn]) => _defineLazyProperty(obj, k, fn));
|
|
61
|
+
return obj;
|
|
62
|
+
}
|
|
63
|
+
exports._defineLazyProps = _defineLazyProps;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* These levels follow console.* naming,
|
|
3
|
+
* so you can use console[level] safely.
|
|
4
|
+
*
|
|
5
|
+
* `log` is considered default level.
|
|
6
|
+
*
|
|
7
|
+
* For simplicity - only these 3 levels are kept.
|
|
8
|
+
*
|
|
9
|
+
* @experimental
|
|
10
|
+
*/
|
|
11
|
+
export declare type CommonLogLevel = 'log' | 'warn' | 'error';
|
|
12
|
+
/**
|
|
13
|
+
* Function that takes any number of arguments and logs them all.
|
|
14
|
+
* It is expected that logged arguments are separated by "space", like console.log does.
|
|
15
|
+
*
|
|
16
|
+
* @experimental
|
|
17
|
+
*/
|
|
18
|
+
export declare type CommonLogFunction = (...args: any[]) => void;
|
|
19
|
+
/**
|
|
20
|
+
* Interface is inspired/compatible with `console.*`
|
|
21
|
+
* So, `console` is a valid CommonLogger implementation as-is.
|
|
22
|
+
*
|
|
23
|
+
* @experimental
|
|
24
|
+
*/
|
|
25
|
+
export interface CommonLogger {
|
|
26
|
+
log: CommonLogFunction;
|
|
27
|
+
warn: CommonLogFunction;
|
|
28
|
+
error: CommonLogFunction;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Same as CommonLogger, but also is a "convenience function" itself.
|
|
32
|
+
* So you can do `logger('hey')` which is the same as `logger.log('hey')`
|
|
33
|
+
*
|
|
34
|
+
* @experimental
|
|
35
|
+
*/
|
|
36
|
+
export interface SimpleLogger extends CommonLogFunction, CommonLogger {
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Creates a SimpleLogger from CommonLogger.
|
|
40
|
+
*
|
|
41
|
+
* @experimental
|
|
42
|
+
*/
|
|
43
|
+
export declare function createSimpleLogger(logger: CommonLogger): SimpleLogger;
|
|
44
|
+
/**
|
|
45
|
+
* SimpleLogger that does nothing (noop).
|
|
46
|
+
*
|
|
47
|
+
* @experimental
|
|
48
|
+
*/
|
|
49
|
+
export declare const noopLogger: SimpleLogger;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.noopLogger = exports.createSimpleLogger = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Creates a SimpleLogger from CommonLogger.
|
|
6
|
+
*
|
|
7
|
+
* @experimental
|
|
8
|
+
*/
|
|
9
|
+
function createSimpleLogger(logger) {
|
|
10
|
+
return Object.assign(((...args) => logger.log(...args)), {
|
|
11
|
+
log: (...args) => logger.log(...args),
|
|
12
|
+
warn: (...args) => logger.warn(...args),
|
|
13
|
+
error: (...args) => logger.error(...args),
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
exports.createSimpleLogger = createSimpleLogger;
|
|
17
|
+
const noop = () => { };
|
|
18
|
+
/**
|
|
19
|
+
* SimpleLogger that does nothing (noop).
|
|
20
|
+
*
|
|
21
|
+
* @experimental
|
|
22
|
+
*/
|
|
23
|
+
exports.noopLogger = createSimpleLogger({
|
|
24
|
+
log: noop,
|
|
25
|
+
warn: noop,
|
|
26
|
+
error: noop,
|
|
27
|
+
});
|
|
@@ -18,6 +18,8 @@ export function _chunk(array, size = 1) {
|
|
|
18
18
|
/**
|
|
19
19
|
* Polyfill to Array.flat() with depth=1.
|
|
20
20
|
* https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/flat
|
|
21
|
+
*
|
|
22
|
+
* @deprecated prefer native Array.flat(), it's supported since iOS 12
|
|
21
23
|
*/
|
|
22
24
|
export function _flatten(arrays) {
|
|
23
25
|
// to flat single level array
|
|
@@ -30,6 +32,8 @@ export function _flatten(arrays) {
|
|
|
30
32
|
* @return Returns the new flattened array.
|
|
31
33
|
*
|
|
32
34
|
* Based on: https://github.com/you-dont-need/You-Dont-Need-Lodash-Underscore#_flattendeep
|
|
35
|
+
*
|
|
36
|
+
* @deprecated prefer native Array.flat(), it's supported since iOS 12
|
|
33
37
|
*/
|
|
34
38
|
export function _flattenDeep(arr) {
|
|
35
39
|
return Array.isArray(arr)
|
|
@@ -16,6 +16,7 @@ export class AppError extends Error {
|
|
|
16
16
|
});
|
|
17
17
|
Object.defineProperty(this, 'data', {
|
|
18
18
|
value: data,
|
|
19
|
+
writable: true,
|
|
19
20
|
configurable: true,
|
|
20
21
|
enumerable: false,
|
|
21
22
|
});
|
|
@@ -25,6 +26,7 @@ export class AppError extends Error {
|
|
|
25
26
|
else {
|
|
26
27
|
Object.defineProperty(this, 'stack', {
|
|
27
28
|
value: new Error().stack,
|
|
29
|
+
writable: true,
|
|
28
30
|
configurable: true,
|
|
29
31
|
});
|
|
30
32
|
}
|
package/dist-esm/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { _by, _chunk, _countBy, _difference, _dropRightWhile, _dropWhile, _findLast, _flatten, _flattenDeep, _groupBy, _intersection, _last, _mapToObject, _shuffle, _sortBy, _sum, _sumBy, _takeRightWhile, _takeWhile, _uniq, _uniqBy, } from './array/array.util';
|
|
2
|
+
import { _defineLazyProperty, _defineLazyProps, _lazyValue } from './lazy';
|
|
2
3
|
import { _parseQueryString } from './string/url.util';
|
|
3
4
|
import { _range } from './array/range';
|
|
4
5
|
import { _createPromiseDecorator, } from './decorators/createPromiseDecorator';
|
|
@@ -49,4 +50,5 @@ import { _ms, _since } from './time/time.util';
|
|
|
49
50
|
import { _noop, _objectKeys, _passNothingPredicate, _passthroughMapper, _passthroughPredicate, _passUndefinedMapper, _stringMapEntries, _stringMapValues, } from './types';
|
|
50
51
|
import { _gb, _hb, _kb, _mb } from './unit/size.util';
|
|
51
52
|
import { is } from './vendor/is';
|
|
52
|
-
|
|
53
|
+
import { createSimpleLogger, noopLogger, } from './log/commonLogger';
|
|
54
|
+
export { is, _Memo, _memoFn, _LogMethod, _getArgsSignature, _createPromiseDecorator, AppError, HttpError, AssertionError, _isErrorObject, _isHttpErrorObject, _isHttpErrorResponse, _assert, _assertEquals, _assertDeepEquals, _assertIsError, _assertIsString, _assertIsNumber, _assertTypeOf, _randomInt, _randomArrayItem, _createDeterministicRandom, _inRange, _stringMapValues, _stringMapEntries, _objectKeys, _capitalize, _upperFirst, _lowerFirst, _split, _removeWhitespace, _substringBefore, _substringBeforeLast, _substringAfter, _substringAfterLast, _substringBetweenLast, _replaceAll, _nl2br, _truncate, _truncateMiddle, _pick, _omit, _filterFalsyValues, _filterUndefinedValues, _filterNullishValues, _filterEmptyArrays, _filterEmptyValues, _filterObject, _undefinedIfEmpty, _isObject, _isPrimitive, _mapKeys, _mapValues, _mapObject, _objectNullValuesToUndefined, _deepEquals, _deepCopy, _isEmptyObject, _isEmpty, _merge, _deepTrim, _sortObjectDeep, _sortObject, _get, _set, _has, _unset, _mask, _invert, _invertMap, _by, _groupBy, _sortBy, _sortNumbers, _toFixed, _toPrecision, _round, _findLast, _takeWhile, _takeRightWhile, _dropWhile, _dropRightWhile, _countBy, _intersection, _difference, _shuffle, _mapToObject, _findKeyByValue, _anyToError, _anyToErrorObject, _errorToErrorObject, _errorObjectToAppError, _range, _uniq, _uniqBy, _flatten, _flattenDeep, _chunk, SimpleMovingAverage, _average, _averageWeighted, _percentile, _median, _debounce, _throttle, _Debounce, _Throttle, pMap, _passthroughMapper, _passUndefinedMapper, _passthroughPredicate, _passNothingPredicate, _noop, pBatch, ErrorMode, pFilter, pProps, pDelay, pDefer, pHang, pState, AggregatedError, pRetry, pTimeout, pTuple, _Retry, _Timeout, _tryCatch, _TryCatch, _try, pTry, _jsonParseIfPossible, _stringifyAny, _ms, _since, _hb, _gb, _mb, _kb, _snakeCase, _camelCase, _kebabCase, _sum, _sumBy, _clamp, _last, mergeJsonSchemaObjects, jsonSchema, JsonSchemaAnyBuilder, JSON_SCHEMA_ORDER, generateJsonSchemaFromData, _parseQueryString, _defineLazyProperty, _defineLazyProps, _lazyValue, createSimpleLogger, noopLogger, };
|
package/dist-esm/lazy.js
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* const value = lazyValue(() => expensiveComputation())
|
|
3
|
+
*
|
|
4
|
+
* value() // calls expensiveComputation() once
|
|
5
|
+
* value() // returns cached result
|
|
6
|
+
* value() // returns cached result
|
|
7
|
+
*
|
|
8
|
+
* Based on: https://github.com/sindresorhus/lazy-value
|
|
9
|
+
*/
|
|
10
|
+
export function _lazyValue(fn) {
|
|
11
|
+
let isCalled = false;
|
|
12
|
+
let result;
|
|
13
|
+
return (() => {
|
|
14
|
+
if (!isCalled) {
|
|
15
|
+
isCalled = true;
|
|
16
|
+
result = fn();
|
|
17
|
+
}
|
|
18
|
+
return result;
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* interface Obj {
|
|
23
|
+
* v: number
|
|
24
|
+
* }
|
|
25
|
+
*
|
|
26
|
+
* const obj = {} as Obj
|
|
27
|
+
*
|
|
28
|
+
* _defineLazyProperty(obj, 'v', () => expensiveComputation())
|
|
29
|
+
* obj.v // runs expensiveComputation() once
|
|
30
|
+
* obj.v // cached value
|
|
31
|
+
* obj.v // cached value
|
|
32
|
+
*
|
|
33
|
+
* Based on: https://github.com/sindresorhus/define-lazy-prop
|
|
34
|
+
*/
|
|
35
|
+
export function _defineLazyProperty(obj, propertyName, fn) {
|
|
36
|
+
const define = (value) => Object.defineProperty(obj, propertyName, { value, enumerable: true, writable: true });
|
|
37
|
+
Object.defineProperty(obj, propertyName, {
|
|
38
|
+
configurable: true,
|
|
39
|
+
enumerable: true,
|
|
40
|
+
get() {
|
|
41
|
+
const result = fn();
|
|
42
|
+
define(result);
|
|
43
|
+
return result;
|
|
44
|
+
},
|
|
45
|
+
set(value) {
|
|
46
|
+
define(value);
|
|
47
|
+
},
|
|
48
|
+
});
|
|
49
|
+
return obj;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Like _defineLazyProperty, but allows to define multiple props at once.
|
|
53
|
+
*/
|
|
54
|
+
export function _defineLazyProps(obj, props) {
|
|
55
|
+
Object.entries(props).forEach(([k, fn]) => _defineLazyProperty(obj, k, fn));
|
|
56
|
+
return obj;
|
|
57
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Creates a SimpleLogger from CommonLogger.
|
|
3
|
+
*
|
|
4
|
+
* @experimental
|
|
5
|
+
*/
|
|
6
|
+
export function createSimpleLogger(logger) {
|
|
7
|
+
return Object.assign(((...args) => logger.log(...args)), {
|
|
8
|
+
log: (...args) => logger.log(...args),
|
|
9
|
+
warn: (...args) => logger.warn(...args),
|
|
10
|
+
error: (...args) => logger.error(...args),
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
const noop = () => { };
|
|
14
|
+
/**
|
|
15
|
+
* SimpleLogger that does nothing (noop).
|
|
16
|
+
*
|
|
17
|
+
* @experimental
|
|
18
|
+
*/
|
|
19
|
+
export const noopLogger = createSimpleLogger({
|
|
20
|
+
log: noop,
|
|
21
|
+
warn: noop,
|
|
22
|
+
error: noop,
|
|
23
|
+
});
|
package/package.json
CHANGED
package/src/array/array.util.ts
CHANGED
|
@@ -22,6 +22,8 @@ export function _chunk<T>(array: readonly T[], size = 1): T[][] {
|
|
|
22
22
|
/**
|
|
23
23
|
* Polyfill to Array.flat() with depth=1.
|
|
24
24
|
* https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/flat
|
|
25
|
+
*
|
|
26
|
+
* @deprecated prefer native Array.flat(), it's supported since iOS 12
|
|
25
27
|
*/
|
|
26
28
|
export function _flatten<T>(arrays: T[][]): T[] {
|
|
27
29
|
// to flat single level array
|
|
@@ -35,6 +37,8 @@ export function _flatten<T>(arrays: T[][]): T[] {
|
|
|
35
37
|
* @return Returns the new flattened array.
|
|
36
38
|
*
|
|
37
39
|
* Based on: https://github.com/you-dont-need/You-Dont-Need-Lodash-Underscore#_flattendeep
|
|
40
|
+
*
|
|
41
|
+
* @deprecated prefer native Array.flat(), it's supported since iOS 12
|
|
38
42
|
*/
|
|
39
43
|
export function _flattenDeep<T>(arr: RecursiveArray<T>): T[] {
|
|
40
44
|
return Array.isArray(arr)
|
package/src/error/app.error.ts
CHANGED
|
@@ -22,6 +22,7 @@ export class AppError<DATA_TYPE extends ErrorData = ErrorData> extends Error {
|
|
|
22
22
|
|
|
23
23
|
Object.defineProperty(this, 'data', {
|
|
24
24
|
value: data,
|
|
25
|
+
writable: true,
|
|
25
26
|
configurable: true,
|
|
26
27
|
enumerable: false,
|
|
27
28
|
})
|
|
@@ -31,6 +32,7 @@ export class AppError<DATA_TYPE extends ErrorData = ErrorData> extends Error {
|
|
|
31
32
|
} else {
|
|
32
33
|
Object.defineProperty(this, 'stack', {
|
|
33
34
|
value: new Error().stack, // eslint-disable-line unicorn/error-message
|
|
35
|
+
writable: true,
|
|
34
36
|
configurable: true,
|
|
35
37
|
})
|
|
36
38
|
}
|
package/src/index.ts
CHANGED
|
@@ -21,6 +21,7 @@ import {
|
|
|
21
21
|
_uniq,
|
|
22
22
|
_uniqBy,
|
|
23
23
|
} from './array/array.util'
|
|
24
|
+
import { _defineLazyProperty, _defineLazyProps, _lazyValue } from './lazy'
|
|
24
25
|
import { _parseQueryString } from './string/url.util'
|
|
25
26
|
import { _range } from './array/range'
|
|
26
27
|
import {
|
|
@@ -223,6 +224,14 @@ import {
|
|
|
223
224
|
} from './types'
|
|
224
225
|
import { _gb, _hb, _kb, _mb } from './unit/size.util'
|
|
225
226
|
import { is } from './vendor/is'
|
|
227
|
+
import {
|
|
228
|
+
CommonLogLevel,
|
|
229
|
+
CommonLogFunction,
|
|
230
|
+
CommonLogger,
|
|
231
|
+
SimpleLogger,
|
|
232
|
+
createSimpleLogger,
|
|
233
|
+
noopLogger,
|
|
234
|
+
} from './log/commonLogger'
|
|
226
235
|
|
|
227
236
|
export type {
|
|
228
237
|
MemoCache,
|
|
@@ -294,6 +303,10 @@ export type {
|
|
|
294
303
|
JsonSchemaArray,
|
|
295
304
|
JsonSchemaTuple,
|
|
296
305
|
JsonSchemaBuilder,
|
|
306
|
+
CommonLogLevel,
|
|
307
|
+
CommonLogFunction,
|
|
308
|
+
CommonLogger,
|
|
309
|
+
SimpleLogger,
|
|
297
310
|
}
|
|
298
311
|
|
|
299
312
|
export {
|
|
@@ -449,4 +462,9 @@ export {
|
|
|
449
462
|
JSON_SCHEMA_ORDER,
|
|
450
463
|
generateJsonSchemaFromData,
|
|
451
464
|
_parseQueryString,
|
|
465
|
+
_defineLazyProperty,
|
|
466
|
+
_defineLazyProps,
|
|
467
|
+
_lazyValue,
|
|
468
|
+
createSimpleLogger,
|
|
469
|
+
noopLogger,
|
|
452
470
|
}
|
package/src/lazy.ts
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { AnyFunction, AnyObject } from './types'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* const value = lazyValue(() => expensiveComputation())
|
|
5
|
+
*
|
|
6
|
+
* value() // calls expensiveComputation() once
|
|
7
|
+
* value() // returns cached result
|
|
8
|
+
* value() // returns cached result
|
|
9
|
+
*
|
|
10
|
+
* Based on: https://github.com/sindresorhus/lazy-value
|
|
11
|
+
*/
|
|
12
|
+
export function _lazyValue<T extends AnyFunction>(fn: T): T {
|
|
13
|
+
let isCalled = false
|
|
14
|
+
let result: any
|
|
15
|
+
|
|
16
|
+
return (() => {
|
|
17
|
+
if (!isCalled) {
|
|
18
|
+
isCalled = true
|
|
19
|
+
result = fn()
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
return result
|
|
23
|
+
}) as any
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* interface Obj {
|
|
28
|
+
* v: number
|
|
29
|
+
* }
|
|
30
|
+
*
|
|
31
|
+
* const obj = {} as Obj
|
|
32
|
+
*
|
|
33
|
+
* _defineLazyProperty(obj, 'v', () => expensiveComputation())
|
|
34
|
+
* obj.v // runs expensiveComputation() once
|
|
35
|
+
* obj.v // cached value
|
|
36
|
+
* obj.v // cached value
|
|
37
|
+
*
|
|
38
|
+
* Based on: https://github.com/sindresorhus/define-lazy-prop
|
|
39
|
+
*/
|
|
40
|
+
export function _defineLazyProperty<OBJ extends AnyObject>(
|
|
41
|
+
obj: OBJ,
|
|
42
|
+
propertyName: keyof OBJ,
|
|
43
|
+
fn: AnyFunction,
|
|
44
|
+
): OBJ {
|
|
45
|
+
const define = (value: any) =>
|
|
46
|
+
Object.defineProperty(obj, propertyName, { value, enumerable: true, writable: true })
|
|
47
|
+
|
|
48
|
+
Object.defineProperty(obj, propertyName, {
|
|
49
|
+
configurable: true,
|
|
50
|
+
enumerable: true,
|
|
51
|
+
get() {
|
|
52
|
+
const result = fn()
|
|
53
|
+
define(result)
|
|
54
|
+
return result
|
|
55
|
+
},
|
|
56
|
+
set(value) {
|
|
57
|
+
define(value)
|
|
58
|
+
},
|
|
59
|
+
})
|
|
60
|
+
|
|
61
|
+
return obj
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Like _defineLazyProperty, but allows to define multiple props at once.
|
|
66
|
+
*/
|
|
67
|
+
export function _defineLazyProps<OBJ extends AnyObject>(
|
|
68
|
+
obj: OBJ,
|
|
69
|
+
props: Partial<Record<keyof OBJ, AnyFunction>>,
|
|
70
|
+
): OBJ {
|
|
71
|
+
Object.entries(props).forEach(([k, fn]) => _defineLazyProperty(obj, k, fn!))
|
|
72
|
+
return obj
|
|
73
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* These levels follow console.* naming,
|
|
3
|
+
* so you can use console[level] safely.
|
|
4
|
+
*
|
|
5
|
+
* `log` is considered default level.
|
|
6
|
+
*
|
|
7
|
+
* For simplicity - only these 3 levels are kept.
|
|
8
|
+
*
|
|
9
|
+
* @experimental
|
|
10
|
+
*/
|
|
11
|
+
export type CommonLogLevel = 'log' | 'warn' | 'error'
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Function that takes any number of arguments and logs them all.
|
|
15
|
+
* It is expected that logged arguments are separated by "space", like console.log does.
|
|
16
|
+
*
|
|
17
|
+
* @experimental
|
|
18
|
+
*/
|
|
19
|
+
export type CommonLogFunction = (...args: any[]) => void
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Interface is inspired/compatible with `console.*`
|
|
23
|
+
* So, `console` is a valid CommonLogger implementation as-is.
|
|
24
|
+
*
|
|
25
|
+
* @experimental
|
|
26
|
+
*/
|
|
27
|
+
export interface CommonLogger {
|
|
28
|
+
log: CommonLogFunction
|
|
29
|
+
warn: CommonLogFunction
|
|
30
|
+
error: CommonLogFunction
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Same as CommonLogger, but also is a "convenience function" itself.
|
|
35
|
+
* So you can do `logger('hey')` which is the same as `logger.log('hey')`
|
|
36
|
+
*
|
|
37
|
+
* @experimental
|
|
38
|
+
*/
|
|
39
|
+
export interface SimpleLogger extends CommonLogFunction, CommonLogger {}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Creates a SimpleLogger from CommonLogger.
|
|
43
|
+
*
|
|
44
|
+
* @experimental
|
|
45
|
+
*/
|
|
46
|
+
export function createSimpleLogger(logger: CommonLogger): SimpleLogger {
|
|
47
|
+
return Object.assign(((...args: any[]) => logger.log(...args)) as any, {
|
|
48
|
+
log: (...args: any[]) => logger.log(...args),
|
|
49
|
+
warn: (...args: any[]) => logger.warn(...args),
|
|
50
|
+
error: (...args: any[]) => logger.error(...args),
|
|
51
|
+
})
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
const noop = () => {}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* SimpleLogger that does nothing (noop).
|
|
58
|
+
*
|
|
59
|
+
* @experimental
|
|
60
|
+
*/
|
|
61
|
+
export const noopLogger: SimpleLogger = createSimpleLogger({
|
|
62
|
+
log: noop,
|
|
63
|
+
warn: noop,
|
|
64
|
+
error: noop,
|
|
65
|
+
})
|