@gennext/lb-infra 0.0.12 → 0.1.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/README.md +63 -89
- package/dist/base/base.helper.d.ts +4 -2
- package/dist/base/base.helper.d.ts.map +1 -1
- package/dist/base/base.helper.js +8 -2
- package/dist/base/base.helper.js.map +1 -1
- package/dist/base/datasources/base.datasource.d.ts +2 -2
- package/dist/base/datasources/base.datasource.d.ts.map +1 -1
- package/dist/base/datasources/base.datasource.js.map +1 -1
- package/dist/base/models/base.model.d.ts +10 -0
- package/dist/base/models/base.model.d.ts.map +1 -1
- package/dist/base/models/base.model.js +10 -3
- package/dist/base/models/base.model.js.map +1 -1
- package/dist/datasources/redis/connector.d.ts +1 -1
- package/dist/datasources/redis/connector.d.ts.map +1 -1
- package/dist/datasources/redis/connector.js +8 -4
- package/dist/datasources/redis/connector.js.map +1 -1
- package/dist/datasources/redis/types.d.ts +1 -1
- package/dist/datasources/redis/types.d.ts.map +1 -1
- package/dist/helpers/logger/application-logger.d.ts +0 -3
- package/dist/helpers/logger/application-logger.d.ts.map +1 -1
- package/dist/helpers/logger/application-logger.js +7 -31
- package/dist/helpers/logger/application-logger.js.map +1 -1
- package/dist/helpers/logger/common/types.d.ts +0 -7
- package/dist/helpers/logger/common/types.d.ts.map +1 -1
- package/dist/helpers/logger/common/types.js +1 -10
- package/dist/helpers/logger/common/types.js.map +1 -1
- package/dist/helpers/logger/config-merger.d.ts +27 -0
- package/dist/helpers/logger/config-merger.d.ts.map +1 -0
- package/dist/helpers/logger/config-merger.js +55 -0
- package/dist/helpers/logger/config-merger.js.map +1 -0
- package/dist/helpers/logger/config.d.ts +9 -11
- package/dist/helpers/logger/config.d.ts.map +1 -1
- package/dist/helpers/logger/config.js +18 -30
- package/dist/helpers/logger/config.js.map +1 -1
- package/dist/helpers/logger/default-logger.d.ts.map +1 -1
- package/dist/helpers/logger/default-logger.js +3 -5
- package/dist/helpers/logger/default-logger.js.map +1 -1
- package/dist/helpers/logger/enhanced-factory.d.ts +3 -3
- package/dist/helpers/logger/enhanced-factory.d.ts.map +1 -1
- package/dist/helpers/logger/enhanced-factory.js +10 -7
- package/dist/helpers/logger/enhanced-factory.js.map +1 -1
- package/dist/helpers/logger/factory.d.ts +1 -37
- package/dist/helpers/logger/factory.d.ts.map +1 -1
- package/dist/helpers/logger/factory.js +11 -86
- package/dist/helpers/logger/factory.js.map +1 -1
- package/dist/helpers/logger/http/access-logger.d.ts +14 -5
- package/dist/helpers/logger/http/access-logger.d.ts.map +1 -1
- package/dist/helpers/logger/http/access-logger.js +186 -157
- package/dist/helpers/logger/http/access-logger.js.map +1 -1
- package/dist/helpers/logger/http/index.d.ts +1 -1
- package/dist/helpers/logger/http/index.d.ts.map +1 -1
- package/dist/helpers/logger/http/index.js +1 -1
- package/dist/helpers/logger/http/index.js.map +1 -1
- package/dist/helpers/logger/http/request-context.d.ts +10 -6
- package/dist/helpers/logger/http/request-context.d.ts.map +1 -1
- package/dist/helpers/logger/http/request-context.js +32 -22
- package/dist/helpers/logger/http/request-context.js.map +1 -1
- package/dist/helpers/logger/http/request-id-manager.d.ts +13 -8
- package/dist/helpers/logger/http/request-id-manager.d.ts.map +1 -1
- package/dist/helpers/logger/http/request-id-manager.js +24 -70
- package/dist/helpers/logger/http/request-id-manager.js.map +1 -1
- package/dist/helpers/logger/http/types.d.ts +3 -3
- package/dist/helpers/logger/http/types.d.ts.map +1 -1
- package/dist/helpers/logger/index.d.ts +4 -3
- package/dist/helpers/logger/index.d.ts.map +1 -1
- package/dist/helpers/logger/index.js +4 -3
- package/dist/helpers/logger/index.js.map +1 -1
- package/dist/helpers/logger/transports/dgram.transport.d.ts +0 -1
- package/dist/helpers/logger/transports/dgram.transport.d.ts.map +1 -1
- package/dist/helpers/logger/transports/dgram.transport.js +2 -2
- package/dist/helpers/logger/transports/dgram.transport.js.map +1 -1
- package/dist/helpers/redis/default.helper.d.ts.map +1 -1
- package/dist/helpers/redis/default.helper.js +19 -17
- package/dist/helpers/redis/default.helper.js.map +1 -1
- package/dist/helpers/redis/index.d.ts.map +1 -1
- package/dist/helpers/redis/index.js.map +1 -1
- package/dist/helpers/redis/redis-cluster.helper.js +2 -2
- package/dist/helpers/redis/redis-cluster.helper.js.map +1 -1
- package/dist/helpers/redis/redis.helper.d.ts +34 -0
- package/dist/helpers/redis/redis.helper.d.ts.map +1 -1
- package/dist/helpers/redis/redis.helper.js +34 -0
- package/dist/helpers/redis/redis.helper.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/utilities/crypto.utility.d.ts +28 -0
- package/dist/utilities/crypto.utility.d.ts.map +1 -1
- package/dist/utilities/crypto.utility.js +28 -0
- package/dist/utilities/crypto.utility.js.map +1 -1
- package/dist/utilities/date.utility.d.ts +57 -0
- package/dist/utilities/date.utility.d.ts.map +1 -1
- package/dist/utilities/date.utility.js +58 -16
- package/dist/utilities/date.utility.js.map +1 -1
- package/dist/utilities/error.utility.d.ts +63 -0
- package/dist/utilities/error.utility.d.ts.map +1 -1
- package/dist/utilities/error.utility.js +82 -4
- package/dist/utilities/error.utility.js.map +1 -1
- package/dist/utilities/lodash.utility.d.ts +1 -0
- package/dist/utilities/lodash.utility.d.ts.map +1 -1
- package/dist/utilities/lodash.utility.js +3 -1
- package/dist/utilities/lodash.utility.js.map +1 -1
- package/dist/utilities/model.utility.d.ts +15 -0
- package/dist/utilities/model.utility.d.ts.map +1 -1
- package/dist/utilities/model.utility.js +15 -2
- package/dist/utilities/model.utility.js.map +1 -1
- package/dist/utilities/module.utility.d.ts +8 -0
- package/dist/utilities/module.utility.d.ts.map +1 -1
- package/dist/utilities/module.utility.js +10 -2
- package/dist/utilities/module.utility.js.map +1 -1
- package/dist/utilities/parse.utility.d.ts +59 -0
- package/dist/utilities/parse.utility.d.ts.map +1 -1
- package/dist/utilities/parse.utility.js +76 -15
- package/dist/utilities/parse.utility.js.map +1 -1
- package/dist/utilities/performance.utility.d.ts +13 -0
- package/dist/utilities/performance.utility.d.ts.map +1 -1
- package/dist/utilities/performance.utility.js +15 -2
- package/dist/utilities/performance.utility.js.map +1 -1
- package/dist/utilities/promise.utility.d.ts +18 -18
- package/dist/utilities/promise.utility.d.ts.map +1 -1
- package/dist/utilities/promise.utility.js +16 -17
- package/dist/utilities/promise.utility.js.map +1 -1
- package/dist/utilities/query.utility.d.ts +24 -3
- package/dist/utilities/query.utility.d.ts.map +1 -1
- package/dist/utilities/query.utility.js +29 -7
- package/dist/utilities/query.utility.js.map +1 -1
- package/dist/utilities/request.utility.d.ts +36 -3
- package/dist/utilities/request.utility.d.ts.map +1 -1
- package/dist/utilities/request.utility.js +38 -8
- package/dist/utilities/request.utility.js.map +1 -1
- package/dist/utilities/url.utility.d.ts +16 -0
- package/dist/utilities/url.utility.d.ts.map +1 -1
- package/dist/utilities/url.utility.js +16 -0
- package/dist/utilities/url.utility.js.map +1 -1
- package/package.json +2 -1
|
@@ -3,14 +3,27 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.getIdType = exports.getIdSchema = void 0;
|
|
4
4
|
const metadata_1 = require("@loopback/metadata");
|
|
5
5
|
const rest_1 = require("@loopback/rest");
|
|
6
|
-
|
|
6
|
+
/**
|
|
7
|
+
* Extracts the JSON schema of the ID property from a LoopBack entity
|
|
8
|
+
* @param entity - The LoopBack entity class (must extend BaseEntity)
|
|
9
|
+
* @returns The SchemaObject representing the ID property
|
|
10
|
+
* @example
|
|
11
|
+
* const schema = getIdSchema(User);
|
|
12
|
+
* // { type: 'number', minimum: 1 }
|
|
13
|
+
*/
|
|
7
14
|
const getIdSchema = (entity) => {
|
|
8
15
|
const idProp = entity.getIdProperties()[0];
|
|
9
16
|
const modelSchema = (0, rest_1.jsonToSchemaObject)((0, rest_1.getJsonSchema)(entity));
|
|
10
17
|
return modelSchema.properties?.[idProp];
|
|
11
18
|
};
|
|
12
19
|
exports.getIdSchema = getIdSchema;
|
|
13
|
-
|
|
20
|
+
/**
|
|
21
|
+
* Inspects the metadata of a LoopBack entity to determine the ID type
|
|
22
|
+
* @param entity - The LoopBack entity class
|
|
23
|
+
* @returns 'string' or 'number' (default: 'number')
|
|
24
|
+
* @example
|
|
25
|
+
* const type = getIdType(User); // 'number'
|
|
26
|
+
*/
|
|
14
27
|
const getIdType = (entity) => {
|
|
15
28
|
let idType = 'number';
|
|
16
29
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.utility.js","sourceRoot":"","sources":["../../src/utilities/model.utility.ts"],"names":[],"mappings":";;;AAAA,iDAAuD;AACvD,yCAAiF;AAIjF
|
|
1
|
+
{"version":3,"file":"model.utility.js","sourceRoot":"","sources":["../../src/utilities/model.utility.ts"],"names":[],"mappings":";;;AAAA,iDAAuD;AACvD,yCAAiF;AAIjF;;;;;;;GAOG;AACI,MAAM,WAAW,GAAG,CACzB,MAA4C,EAC9B,EAAE;IAChB,MAAM,MAAM,GAAG,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC;IAC3C,MAAM,WAAW,GAAG,IAAA,yBAAkB,EAAC,IAAA,oBAAa,EAAC,MAAM,CAAC,CAAiB,CAAC;IAC9E,OAAO,WAAW,CAAC,UAAU,EAAE,CAAC,MAAM,CAAiB,CAAC;AAC1D,CAAC,CAAC;AANW,QAAA,WAAW,eAMtB;AAEF;;;;;;GAMG;AACI,MAAM,SAAS,GAAG,CACvB,MAA8C,EACzB,EAAE;IACvB,IAAI,MAAM,GAAwB,QAAQ,CAAC;IAE3C,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,4BAAiB,CAAC,mBAAmB,CAErD,2BAA2B,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAE9C,MAAM,GAAG,UAAU,EAAE,IAAI,IAAI,QAAQ,CAAC;IACxC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CACX,iFAAiF,EACjF,CAAC,CACF,CAAC;QAEF,MAAM,GAAG,QAAQ,CAAC;QAClB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAtBW,QAAA,SAAS,aAsBpB"}
|
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validates the existence of required external modules
|
|
3
|
+
* Throws an error and logs a message if any module is missing
|
|
4
|
+
* @param opts - Configuration with scope and list of modules to check
|
|
5
|
+
* @throws ApplicationError if any module cannot be resolved
|
|
6
|
+
* @example
|
|
7
|
+
* validateModule({ scope: 'Redis', modules: ['ioredis'] });
|
|
8
|
+
*/
|
|
1
9
|
export declare const validateModule: (opts: {
|
|
2
10
|
scope?: string;
|
|
3
11
|
modules: Array<string>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.utility.d.ts","sourceRoot":"","sources":["../../src/utilities/module.utility.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,cAAc,GAAI,MAAM;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;CAAE,SAgB9E,CAAC"}
|
|
1
|
+
{"version":3,"file":"module.utility.d.ts","sourceRoot":"","sources":["../../src/utilities/module.utility.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,GAAI,MAAM;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;CAAE,SAgB9E,CAAC"}
|
|
@@ -1,8 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.validateModule = void 0;
|
|
4
|
-
const
|
|
4
|
+
const logger_1 = require("../helpers/logger");
|
|
5
5
|
const error_utility_1 = require("./error.utility");
|
|
6
|
+
/**
|
|
7
|
+
* Validates the existence of required external modules
|
|
8
|
+
* Throws an error and logs a message if any module is missing
|
|
9
|
+
* @param opts - Configuration with scope and list of modules to check
|
|
10
|
+
* @throws ApplicationError if any module cannot be resolved
|
|
11
|
+
* @example
|
|
12
|
+
* validateModule({ scope: 'Redis', modules: ['ioredis'] });
|
|
13
|
+
*/
|
|
6
14
|
const validateModule = (opts) => {
|
|
7
15
|
const { scope = '', modules = [] } = opts;
|
|
8
16
|
for (const module of modules) {
|
|
@@ -10,7 +18,7 @@ const validateModule = (opts) => {
|
|
|
10
18
|
require.resolve(module);
|
|
11
19
|
}
|
|
12
20
|
catch (error) {
|
|
13
|
-
|
|
21
|
+
logger_1.LoggerFactory.getLogger([scope]).error("[validateModule] Failed to import '%s' | Error: %s", module, error);
|
|
14
22
|
throw (0, error_utility_1.getError)({
|
|
15
23
|
message: `[validateModule] ${module} is required${scope ? ` for ${scope}` : ''}. Please install '${module}'`,
|
|
16
24
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.utility.js","sourceRoot":"","sources":["../../src/utilities/module.utility.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"module.utility.js","sourceRoot":"","sources":["../../src/utilities/module.utility.ts"],"names":[],"mappings":";;;AAAA,6CAAiD;AACjD,mDAA2C;AAE3C;;;;;;;GAOG;AACI,MAAM,cAAc,GAAG,CAAC,IAAgD,EAAE,EAAE;IACjF,MAAM,EAAE,KAAK,GAAG,EAAE,EAAE,OAAO,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC;IAC1C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC1B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,sBAAa,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CACpC,oDAAoD,EACpD,MAAM,EACN,KAAK,CACN,CAAC;YACF,MAAM,IAAA,wBAAQ,EAAC;gBACb,OAAO,EAAE,oBAAoB,MAAM,eAAe,KAAK,CAAC,CAAC,CAAC,QAAQ,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,qBAAqB,MAAM,GAAG;aAC7G,CAAC,CAAC;QACL,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AAhBW,QAAA,cAAc,kBAgBzB"}
|
|
@@ -1,9 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generates a unique identifier string
|
|
3
|
+
* @returns Random uppercase alphanumeric string
|
|
4
|
+
* @example
|
|
5
|
+
* const uid = getUID(); // "ABC123XYZ"
|
|
6
|
+
*/
|
|
1
7
|
export declare const getUID: () => string;
|
|
8
|
+
/**
|
|
9
|
+
* Converts hyphenated or snake_case strings to camelCase
|
|
10
|
+
* @param s - Input string to convert
|
|
11
|
+
* @returns CamelCase version of the string
|
|
12
|
+
* @example
|
|
13
|
+
* toCamel('my-property') // "myProperty"
|
|
14
|
+
* toCamel('my_property') // "myProperty"
|
|
15
|
+
*/
|
|
2
16
|
export declare const toCamel: (s: string) => string;
|
|
17
|
+
/**
|
|
18
|
+
* Recursively converts all object keys to camelCase
|
|
19
|
+
* Handles nested objects and dates
|
|
20
|
+
* @param object - Object to transform
|
|
21
|
+
* @returns New object with camelCase keys
|
|
22
|
+
* @example
|
|
23
|
+
* keysToCamel({ user_name: 'john', user_profile: { first_name: 'John' } })
|
|
24
|
+
* // { userName: 'john', userProfile: { firstName: 'John' } }
|
|
25
|
+
*/
|
|
3
26
|
export declare const keysToCamel: (object: object) => any;
|
|
27
|
+
/**
|
|
28
|
+
* Checks if a value is an integer
|
|
29
|
+
* @param n - Value to check
|
|
30
|
+
* @returns True if the value is an integer
|
|
31
|
+
* @example
|
|
32
|
+
* isInt(42) // true
|
|
33
|
+
* isInt(42.5) // false
|
|
34
|
+
*/
|
|
4
35
|
export declare const isInt: (n: any) => boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Checks if a value is a floating-point number
|
|
38
|
+
* @param input - Value to check
|
|
39
|
+
* @returns True if the value is a float
|
|
40
|
+
* @example
|
|
41
|
+
* isFloat(42.5) // true
|
|
42
|
+
* isFloat(42) // false
|
|
43
|
+
*/
|
|
5
44
|
export declare const isFloat: (input: any) => boolean;
|
|
45
|
+
/**
|
|
46
|
+
* Safely parses a value to integer
|
|
47
|
+
* Handles string numbers with commas and null/NaN values
|
|
48
|
+
* @param input - Value to parse
|
|
49
|
+
* @returns Parsed integer or 0 if invalid
|
|
50
|
+
* @example
|
|
51
|
+
* int('1000') // 1000
|
|
52
|
+
* int('1,000') // 1000
|
|
53
|
+
* int(null) // 0
|
|
54
|
+
*/
|
|
6
55
|
export declare const int: (input: any) => number;
|
|
56
|
+
/**
|
|
57
|
+
* Safely parses a value to float with specified decimal places
|
|
58
|
+
* Handles string numbers with commas and null/NaN values
|
|
59
|
+
* @param input - Value to parse
|
|
60
|
+
* @param digit - Number of decimal places (default: 2)
|
|
61
|
+
* @returns Parsed float rounded to specified digits or 0 if invalid
|
|
62
|
+
* @example
|
|
63
|
+
* float('3.14159', 2) // 3.14
|
|
64
|
+
* float('1,234.56', 1) // 1234.6
|
|
65
|
+
*/
|
|
7
66
|
export declare const float: (input: any, digit?: number) => number;
|
|
8
67
|
export declare const toBoolean: (input: any) => boolean;
|
|
9
68
|
export declare const toStringDecimal: (input: any, digit?: number, options?: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse.utility.d.ts","sourceRoot":"","sources":["../../src/utilities/parse.utility.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"parse.utility.d.ts","sourceRoot":"","sources":["../../src/utilities/parse.utility.ts"],"names":[],"mappings":"AAsBA;;;;;GAKG;AACH,eAAO,MAAM,MAAM,cAA0D,CAAC;AAE9E;;;;;;;GAOG;AACH,eAAO,MAAM,OAAO,GAAI,GAAG,MAAM,WAIhC,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,WAAW,GAAI,QAAQ,MAAM,QAgCzC,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,KAAK,GAAI,GAAG,GAAG,YAM3B,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,OAAO,GAAI,OAAO,GAAG,YAMjC,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,GAAG,GAAI,OAAO,GAAG,WAW7B,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,KAAK,GAAI,OAAO,GAAG,EAAE,cAAS,WAW1C,CAAC;AAGF,eAAO,MAAM,SAAS,GAAI,OAAO,GAAG,YAUnC,CAAC;AAGF,eAAO,MAAM,eAAe,GAAI,OAAO,GAAG,EAAE,cAAS,EAAE;;CAAmC,eA8BzF,CAAC;AAGF,eAAO,MAAM,cAAc,GAAI,OAAO,MAAM,EAAE,SAAQ,KAAK,GAAG,OAAe,WA0B5E,CAAC;AAGF;;;;;;;GAOG;AACH,eAAO,MAAM,yBAAyB,GACpC,CAAC,SAAS,MAAM,CAAC,CAAC,EAAE,WAAW,CAAC,EAChC,CAAC,SAAS,MAAM,CAAC,EACjB,MAAM;IACN,GAAG,EAAE,CAAC,EAAE,CAAC;IACT,MAAM,EAAE,CAAC,CAAC;CACX,KAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAmBjB,CAAC;AAGF;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,GAAI,CAAC,SAAS,MAAM,CAAC,CAAC,EAAE,WAAW,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,EACxF,KAAK,CAAC,EAAE,EACR,QAAQ,CAAC,KACR,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAiBb,CAAC"}
|
|
@@ -7,26 +7,53 @@ exports.parseArrayToMapWithKey = exports.parseArrayToRecordWithKey = exports.get
|
|
|
7
7
|
const get_1 = __importDefault(require("lodash/get"));
|
|
8
8
|
const round_1 = __importDefault(require("lodash/round"));
|
|
9
9
|
const error_utility_1 = require("./error.utility");
|
|
10
|
-
|
|
10
|
+
/**
|
|
11
|
+
* Number formatter: 0 decimal places
|
|
12
|
+
* @internal
|
|
13
|
+
*/
|
|
11
14
|
const INTL_0_DIGITS_FORMATER = new Intl.NumberFormat('en-US', {
|
|
12
15
|
maximumFractionDigits: 0,
|
|
13
16
|
minimumFractionDigits: 0,
|
|
14
17
|
});
|
|
18
|
+
/**
|
|
19
|
+
* Number formatter: 2 decimal places
|
|
20
|
+
* @internal
|
|
21
|
+
*/
|
|
15
22
|
const INTL_2_DIGITS_FORMATER = new Intl.NumberFormat('en-US', {
|
|
16
23
|
maximumFractionDigits: 2,
|
|
17
24
|
minimumFractionDigits: 2,
|
|
18
25
|
});
|
|
19
|
-
|
|
26
|
+
/**
|
|
27
|
+
* Generates a unique identifier string
|
|
28
|
+
* @returns Random uppercase alphanumeric string
|
|
29
|
+
* @example
|
|
30
|
+
* const uid = getUID(); // "ABC123XYZ"
|
|
31
|
+
*/
|
|
20
32
|
const getUID = () => Math.random().toString(36).slice(2).toUpperCase();
|
|
21
33
|
exports.getUID = getUID;
|
|
22
|
-
|
|
34
|
+
/**
|
|
35
|
+
* Converts hyphenated or snake_case strings to camelCase
|
|
36
|
+
* @param s - Input string to convert
|
|
37
|
+
* @returns CamelCase version of the string
|
|
38
|
+
* @example
|
|
39
|
+
* toCamel('my-property') // "myProperty"
|
|
40
|
+
* toCamel('my_property') // "myProperty"
|
|
41
|
+
*/
|
|
23
42
|
const toCamel = (s) => {
|
|
24
|
-
return s.replace(/([-_][a-
|
|
43
|
+
return s.replace(/([-_][a-z0-9])/gi, (sub) => {
|
|
25
44
|
return sub.toUpperCase().replace('-', '').replace('_', '');
|
|
26
45
|
});
|
|
27
46
|
};
|
|
28
47
|
exports.toCamel = toCamel;
|
|
29
|
-
|
|
48
|
+
/**
|
|
49
|
+
* Recursively converts all object keys to camelCase
|
|
50
|
+
* Handles nested objects and dates
|
|
51
|
+
* @param object - Object to transform
|
|
52
|
+
* @returns New object with camelCase keys
|
|
53
|
+
* @example
|
|
54
|
+
* keysToCamel({ user_name: 'john', user_profile: { first_name: 'John' } })
|
|
55
|
+
* // { userName: 'john', userProfile: { firstName: 'John' } }
|
|
56
|
+
*/
|
|
30
57
|
const keysToCamel = (object) => {
|
|
31
58
|
const n = {};
|
|
32
59
|
const keys = Object.keys(object);
|
|
@@ -48,10 +75,6 @@ const keysToCamel = (object) => {
|
|
|
48
75
|
n[(0, exports.toCamel)(key)] = (0, exports.keysToCamel)(value);
|
|
49
76
|
break;
|
|
50
77
|
}
|
|
51
|
-
/* case 'array': {
|
|
52
|
-
n[toCamel(key)] = value;
|
|
53
|
-
break;
|
|
54
|
-
} */
|
|
55
78
|
default: {
|
|
56
79
|
n[(0, exports.toCamel)(key)] = value;
|
|
57
80
|
break;
|
|
@@ -61,7 +84,14 @@ const keysToCamel = (object) => {
|
|
|
61
84
|
return n;
|
|
62
85
|
};
|
|
63
86
|
exports.keysToCamel = keysToCamel;
|
|
64
|
-
|
|
87
|
+
/**
|
|
88
|
+
* Checks if a value is an integer
|
|
89
|
+
* @param n - Value to check
|
|
90
|
+
* @returns True if the value is an integer
|
|
91
|
+
* @example
|
|
92
|
+
* isInt(42) // true
|
|
93
|
+
* isInt(42.5) // false
|
|
94
|
+
*/
|
|
65
95
|
const isInt = (n) => {
|
|
66
96
|
if (isNaN(n)) {
|
|
67
97
|
return false;
|
|
@@ -69,7 +99,14 @@ const isInt = (n) => {
|
|
|
69
99
|
return Number.isInteger(n) || Math.floor(Number(n)) === n || Number(n) % 1 === 0;
|
|
70
100
|
};
|
|
71
101
|
exports.isInt = isInt;
|
|
72
|
-
|
|
102
|
+
/**
|
|
103
|
+
* Checks if a value is a floating-point number
|
|
104
|
+
* @param input - Value to check
|
|
105
|
+
* @returns True if the value is a float
|
|
106
|
+
* @example
|
|
107
|
+
* isFloat(42.5) // true
|
|
108
|
+
* isFloat(42) // false
|
|
109
|
+
*/
|
|
73
110
|
const isFloat = (input) => {
|
|
74
111
|
if (isNaN(input)) {
|
|
75
112
|
return false;
|
|
@@ -77,21 +114,45 @@ const isFloat = (input) => {
|
|
|
77
114
|
return Number(input) === input || Number(input) % 1 !== 0;
|
|
78
115
|
};
|
|
79
116
|
exports.isFloat = isFloat;
|
|
80
|
-
|
|
117
|
+
/**
|
|
118
|
+
* Safely parses a value to integer
|
|
119
|
+
* Handles string numbers with commas and null/NaN values
|
|
120
|
+
* @param input - Value to parse
|
|
121
|
+
* @returns Parsed integer or 0 if invalid
|
|
122
|
+
* @example
|
|
123
|
+
* int('1000') // 1000
|
|
124
|
+
* int('1,000') // 1000
|
|
125
|
+
* int(null) // 0
|
|
126
|
+
*/
|
|
81
127
|
const int = (input) => {
|
|
82
|
-
if (!input
|
|
128
|
+
if (!input) {
|
|
83
129
|
return 0;
|
|
84
130
|
}
|
|
85
131
|
const normalized = input?.toString()?.replace(/,/g, '');
|
|
132
|
+
if (isNaN(Number(normalized))) {
|
|
133
|
+
return 0;
|
|
134
|
+
}
|
|
86
135
|
return Number.parseInt(normalized, 10) ?? 0;
|
|
87
136
|
};
|
|
88
137
|
exports.int = int;
|
|
89
|
-
|
|
138
|
+
/**
|
|
139
|
+
* Safely parses a value to float with specified decimal places
|
|
140
|
+
* Handles string numbers with commas and null/NaN values
|
|
141
|
+
* @param input - Value to parse
|
|
142
|
+
* @param digit - Number of decimal places (default: 2)
|
|
143
|
+
* @returns Parsed float rounded to specified digits or 0 if invalid
|
|
144
|
+
* @example
|
|
145
|
+
* float('3.14159', 2) // 3.14
|
|
146
|
+
* float('1,234.56', 1) // 1234.6
|
|
147
|
+
*/
|
|
90
148
|
const float = (input, digit = 2) => {
|
|
91
|
-
if (!input
|
|
149
|
+
if (!input) {
|
|
92
150
|
return 0;
|
|
93
151
|
}
|
|
94
152
|
const normalized = input?.toString()?.replace(/,/g, '');
|
|
153
|
+
if (isNaN(Number(normalized))) {
|
|
154
|
+
return 0;
|
|
155
|
+
}
|
|
95
156
|
return (0, round_1.default)(Number.parseFloat(normalized), digit);
|
|
96
157
|
};
|
|
97
158
|
exports.float = float;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse.utility.js","sourceRoot":"","sources":["../../src/utilities/parse.utility.ts"],"names":[],"mappings":";;;;;;AAAA,qDAA6B;AAC7B,yDAAiC;AACjC,mDAA2C;AAE3C
|
|
1
|
+
{"version":3,"file":"parse.utility.js","sourceRoot":"","sources":["../../src/utilities/parse.utility.ts"],"names":[],"mappings":";;;;;;AAAA,qDAA6B;AAC7B,yDAAiC;AACjC,mDAA2C;AAE3C;;;GAGG;AACH,MAAM,sBAAsB,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;IAC5D,qBAAqB,EAAE,CAAC;IACxB,qBAAqB,EAAE,CAAC;CACzB,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,sBAAsB,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;IAC5D,qBAAqB,EAAE,CAAC;IACxB,qBAAqB,EAAE,CAAC;CACzB,CAAC,CAAC;AAEH;;;;;GAKG;AACI,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;AAAjE,QAAA,MAAM,UAA2D;AAE9E;;;;;;;GAOG;AACI,MAAM,OAAO,GAAG,CAAC,CAAS,EAAE,EAAE;IACnC,OAAO,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC,GAAW,EAAE,EAAE;QACnD,OAAO,GAAG,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAJW,QAAA,OAAO,WAIlB;AAEF;;;;;;;;GAQG;AACI,MAAM,WAAW,GAAG,CAAC,MAAc,EAAE,EAAE;IAC5C,MAAM,CAAC,GAAQ,EAAE,CAAC;IAClB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAEjC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,IAAA,aAAG,EAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAE/B,IAAI,SAAS,GAAW,OAAO,KAAK,CAAC;QACrC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,SAAS,GAAG,OAAO,CAAC;QACtB,CAAC;aAAM,IAAI,KAAK,YAAY,IAAI,EAAE,CAAC;YACjC,SAAS,GAAG,MAAM,CAAC;QACrB,CAAC;QAED,QAAQ,SAAS,EAAE,CAAC;YAClB,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,IAAI,CAAC,KAAK,EAAE,CAAC;oBACX,CAAC,CAAC,IAAA,eAAO,EAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;oBACxB,MAAM;gBACR,CAAC;gBAED,CAAC,CAAC,IAAA,eAAO,EAAC,GAAG,CAAC,CAAC,GAAG,IAAA,mBAAW,EAAC,KAAK,CAAC,CAAC;gBACrC,MAAM;YACR,CAAC;YACD,OAAO,CAAC,CAAC,CAAC;gBACR,CAAC,CAAC,IAAA,eAAO,EAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;gBACxB,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,CAAC,CAAC;AACX,CAAC,CAAC;AAhCW,QAAA,WAAW,eAgCtB;AAEF;;;;;;;GAOG;AACI,MAAM,KAAK,GAAG,CAAC,CAAM,EAAE,EAAE;IAC9B,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACb,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACnF,CAAC,CAAC;AANW,QAAA,KAAK,SAMhB;AAEF;;;;;;;GAOG;AACI,MAAM,OAAO,GAAG,CAAC,KAAU,EAAE,EAAE;IACpC,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;QACjB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC5D,CAAC,CAAC;AANW,QAAA,OAAO,WAMlB;AAEF;;;;;;;;;GASG;AACI,MAAM,GAAG,GAAG,CAAC,KAAU,EAAE,EAAE;IAChC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,UAAU,GAAG,KAAK,EAAE,QAAQ,EAAE,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACxD,IAAI,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,CAAC;IACX,CAAC;IAED,OAAO,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;AAC9C,CAAC,CAAC;AAXW,QAAA,GAAG,OAWd;AAEF;;;;;;;;;GASG;AACI,MAAM,KAAK,GAAG,CAAC,KAAU,EAAE,KAAK,GAAG,CAAC,EAAE,EAAE;IAC7C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,UAAU,GAAG,KAAK,EAAE,QAAQ,EAAE,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACxD,IAAI,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,CAAC;IACX,CAAC;IAED,OAAO,IAAA,eAAK,EAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,CAAC;AACrD,CAAC,CAAC;AAXW,QAAA,KAAK,SAWhB;AAEF,4EAA4E;AACrE,MAAM,SAAS,GAAG,CAAC,KAAU,EAAE,EAAE;IACtC,OAAO,CACL,CAAC,KAAK,KAAK,OAAO;QAChB,KAAK,KAAK,GAAG;QACb,KAAK,KAAK,KAAK;QACf,KAAK,KAAK,CAAC;QACX,KAAK,KAAK,IAAI;QACd,KAAK,KAAK,SAAS,CAAC;QACtB,OAAO,CAAC,KAAK,CAAC,CACf,CAAC;AACJ,CAAC,CAAC;AAVW,QAAA,SAAS,aAUpB;AAEF,4EAA4E;AACrE,MAAM,eAAe,GAAG,CAAC,KAAU,EAAE,KAAK,GAAG,CAAC,EAAE,OAAO,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,EAAE,EAAE;IAC5F,MAAM,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC;IACpC,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;QACjB,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,IAAA,aAAK,EAAC,KAAK,CAAC,EAAE,CAAC;QACjB,MAAM,GAAG,IAAA,WAAG,EAAC,KAAK,CAAC,CAAC;IACtB,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,IAAA,aAAK,EAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC/B,CAAC;IAED,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAED,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7B,OAAO,sBAAsB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;IAED,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;QAChB,OAAO,sBAAsB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;QAC9C,qBAAqB,EAAE,KAAK;QAC5B,qBAAqB,EAAE,KAAK;KAC7B,CAAC,CAAC;IACH,OAAO,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACjC,CAAC,CAAC;AA9BW,QAAA,eAAe,mBA8B1B;AAEF,4EAA4E;AACrE,MAAM,cAAc,GAAG,CAAC,KAAa,EAAE,SAA0B,KAAK,EAAE,EAAE;IAC/E,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,GAAQ,CAAC;IAEb,QAAQ,OAAO,KAAK,EAAE,CAAC;QACrB,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YAClC,MAAM;QACR,CAAC;QACD,OAAO,CAAC,CAAC,CAAC;YACR,GAAG,GAAG,KAAK,CAAC;YACZ,MAAM;QACR,CAAC;IACH,CAAC;IAED,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,OAAO,IAAA,WAAG,EAAC,GAAG,CAAC,CAAC;QAClB,CAAC;QACD,OAAO,CAAC,CAAC,CAAC;YACR,OAAO,IAAA,aAAK,EAAC,GAAG,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AA1BW,QAAA,cAAc,kBA0BzB;AAEF,4DAA4D;AAC5D;;;;;;;GAOG;AACI,MAAM,yBAAyB,GAAG,CAGvC,IAGD,EAAmB,EAAE;IACpB,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAE7B,MAAM,YAAY,GAAoB,EAAqB,CAAC;IAE5D,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QAChB,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;QACpB,IAAI,CAAC,CAAC,MAAM,IAAI,OAAO,CAAC,EAAE,CAAC;YACzB,MAAM,IAAA,wBAAQ,EAAC;gBACb,OAAO,EAAE,gBAAgB;aAC1B,CAAC,CAAC;QACL,CAAC;QACD,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC;AAzBW,QAAA,yBAAyB,6BAyBpC;AAEF,4DAA4D;AAC5D;;;;;;;GAOG;AACI,MAAM,sBAAsB,GAAG,CACpC,GAAQ,EACR,MAAS,EACK,EAAE;IAChB,MAAM,SAAS,GAAG,IAAI,GAAG,EAAW,CAAC;IAErC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QAChB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;QACpB,IAAI,CAAC,CAAC,MAAM,IAAI,OAAO,CAAC,EAAE,CAAC;YACzB,MAAM,IAAA,wBAAQ,EAAC;gBACb,OAAO,EAAE,gBAAgB;aAC1B,CAAC,CAAC;QACL,CAAC;QACD,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AApBW,QAAA,sBAAsB,0BAoBjC"}
|
|
@@ -1,4 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Gets a high-resolution timestamp for performance tracking
|
|
3
|
+
* @returns Current performance.now() value
|
|
4
|
+
*/
|
|
1
5
|
export declare const getPerformanceCheckpoint: () => number;
|
|
6
|
+
/**
|
|
7
|
+
* Calculates elapsed time from a given checkpoint with precision
|
|
8
|
+
* @param opts - Options with starting checkpoint and decimal digits
|
|
9
|
+
* @returns Formatted float of elapsed time in milliseconds
|
|
10
|
+
* @example
|
|
11
|
+
* const start = getPerformanceCheckpoint();
|
|
12
|
+
* // ... do work ...
|
|
13
|
+
* const elapsed = getExecutedPerformance({ from: start, digit: 2 });
|
|
14
|
+
*/
|
|
2
15
|
export declare const getExecutedPerformance: (opts: {
|
|
3
16
|
from: number;
|
|
4
17
|
digit?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"performance.utility.d.ts","sourceRoot":"","sources":["../../src/utilities/performance.utility.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,wBAAwB,cAEpC,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAAI,MAAM;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,WAE5E,CAAC"}
|
|
1
|
+
{"version":3,"file":"performance.utility.d.ts","sourceRoot":"","sources":["../../src/utilities/performance.utility.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,eAAO,MAAM,wBAAwB,cAEpC,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,sBAAsB,GAAI,MAAM;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,WAE5E,CAAC"}
|
|
@@ -1,14 +1,27 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getExecutedPerformance = exports.getPerformanceCheckpoint = void 0;
|
|
4
|
-
const
|
|
4
|
+
const parse_utility_1 = require("./parse.utility");
|
|
5
5
|
const DEFAULT_PERFORMANCE_DECIMAL = 6;
|
|
6
|
+
/**
|
|
7
|
+
* Gets a high-resolution timestamp for performance tracking
|
|
8
|
+
* @returns Current performance.now() value
|
|
9
|
+
*/
|
|
6
10
|
const getPerformanceCheckpoint = () => {
|
|
7
11
|
return performance.now();
|
|
8
12
|
};
|
|
9
13
|
exports.getPerformanceCheckpoint = getPerformanceCheckpoint;
|
|
14
|
+
/**
|
|
15
|
+
* Calculates elapsed time from a given checkpoint with precision
|
|
16
|
+
* @param opts - Options with starting checkpoint and decimal digits
|
|
17
|
+
* @returns Formatted float of elapsed time in milliseconds
|
|
18
|
+
* @example
|
|
19
|
+
* const start = getPerformanceCheckpoint();
|
|
20
|
+
* // ... do work ...
|
|
21
|
+
* const elapsed = getExecutedPerformance({ from: start, digit: 2 });
|
|
22
|
+
*/
|
|
10
23
|
const getExecutedPerformance = (opts) => {
|
|
11
|
-
return (0,
|
|
24
|
+
return (0, parse_utility_1.float)(performance.now() - opts.from, opts.digit ?? DEFAULT_PERFORMANCE_DECIMAL);
|
|
12
25
|
};
|
|
13
26
|
exports.getExecutedPerformance = getExecutedPerformance;
|
|
14
27
|
//# sourceMappingURL=performance.utility.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"performance.utility.js","sourceRoot":"","sources":["../../src/utilities/performance.utility.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"performance.utility.js","sourceRoot":"","sources":["../../src/utilities/performance.utility.ts"],"names":[],"mappings":";;;AAAA,mDAAwC;AAExC,MAAM,2BAA2B,GAAG,CAAC,CAAC;AAEtC;;;GAGG;AACI,MAAM,wBAAwB,GAAG,GAAG,EAAE;IAC3C,OAAO,WAAW,CAAC,GAAG,EAAE,CAAC;AAC3B,CAAC,CAAC;AAFW,QAAA,wBAAwB,4BAEnC;AAEF;;;;;;;;GAQG;AACI,MAAM,sBAAsB,GAAG,CAAC,IAAsC,EAAE,EAAE;IAC/E,OAAO,IAAA,qBAAK,EAAC,WAAW,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,IAAI,2BAA2B,CAAC,CAAC;AACzF,CAAC,CAAC;AAFW,QAAA,sBAAsB,0BAEjC"}
|
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
import { ValueOrPromise } from '../common';
|
|
1
|
+
import { ValueOrPromise } from '../common/types';
|
|
2
|
+
/**
|
|
3
|
+
* Task generator function that returns a Promise
|
|
4
|
+
*/
|
|
2
5
|
type TTask<T> = () => Promise<T>;
|
|
3
6
|
/**
|
|
4
|
-
*
|
|
5
|
-
*
|
|
7
|
+
* Execute all tasks with a concurrency limit.
|
|
8
|
+
* Whenever a task is resolved, the next task in the queue is executed immediately.
|
|
6
9
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
},
|
|
17
|
-
* })
|
|
18
|
-
* ```
|
|
10
|
+
* @param opts - Execution options including tasks, limit, and callback
|
|
11
|
+
* @returns A promise that resolves to an array of all task results
|
|
12
|
+
* @example
|
|
13
|
+
* const tasks = [() => fetch('url1'), () => fetch('url2'), ...];
|
|
14
|
+
* const results = await executePromiseWithLimit({
|
|
15
|
+
* tasks,
|
|
16
|
+
* limit: 5,
|
|
17
|
+
* onTaskDone: ({ result }) => console.log('Task finished:', result)
|
|
18
|
+
* });
|
|
19
19
|
*/
|
|
20
20
|
export declare const executePromiseWithLimit: <T>(opts: {
|
|
21
21
|
tasks: Array<TTask<T>>;
|
|
22
22
|
limit: number;
|
|
23
|
-
onTaskDone?:
|
|
24
|
-
result:
|
|
23
|
+
onTaskDone?: (opts: {
|
|
24
|
+
result: T;
|
|
25
25
|
}) => ValueOrPromise<void>;
|
|
26
|
-
}) => Promise<
|
|
26
|
+
}) => Promise<T[]>;
|
|
27
27
|
export {};
|
|
28
28
|
//# sourceMappingURL=promise.utility.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"promise.utility.d.ts","sourceRoot":"","sources":["../../src/utilities/promise.utility.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"promise.utility.d.ts","sourceRoot":"","sources":["../../src/utilities/promise.utility.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD;;GAEG;AACH,KAAK,KAAK,CAAC,CAAC,IAAI,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC;AAEjC;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,uBAAuB,GAAU,CAAC,EAAE,MAAM;IACrD,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,CAAC,CAAA;KAAE,KAAK,cAAc,CAAC,IAAI,CAAC,CAAC;CAC5D,KAAG,OAAO,CAAC,CAAC,EAAE,CAyBd,CAAC"}
|
|
@@ -2,36 +2,35 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.executePromiseWithLimit = void 0;
|
|
4
4
|
/**
|
|
5
|
-
*
|
|
6
|
-
*
|
|
5
|
+
* Execute all tasks with a concurrency limit.
|
|
6
|
+
* Whenever a task is resolved, the next task in the queue is executed immediately.
|
|
7
7
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
},
|
|
18
|
-
* })
|
|
19
|
-
* ```
|
|
8
|
+
* @param opts - Execution options including tasks, limit, and callback
|
|
9
|
+
* @returns A promise that resolves to an array of all task results
|
|
10
|
+
* @example
|
|
11
|
+
* const tasks = [() => fetch('url1'), () => fetch('url2'), ...];
|
|
12
|
+
* const results = await executePromiseWithLimit({
|
|
13
|
+
* tasks,
|
|
14
|
+
* limit: 5,
|
|
15
|
+
* onTaskDone: ({ result }) => console.log('Task finished:', result)
|
|
16
|
+
* });
|
|
20
17
|
*/
|
|
21
18
|
const executePromiseWithLimit = async (opts) => {
|
|
22
19
|
const { tasks, limit, onTaskDone } = opts;
|
|
23
20
|
const results = [];
|
|
24
21
|
const executing = new Set();
|
|
25
22
|
for (const task of tasks) {
|
|
26
|
-
const promise = task().then(result => {
|
|
23
|
+
const promise = task().then(async (result) => {
|
|
27
24
|
executing.delete(promise);
|
|
25
|
+
if (onTaskDone) {
|
|
26
|
+
await onTaskDone({ result });
|
|
27
|
+
}
|
|
28
28
|
return result;
|
|
29
29
|
});
|
|
30
30
|
executing.add(promise);
|
|
31
31
|
results.push(promise);
|
|
32
32
|
if (executing.size >= limit) {
|
|
33
|
-
|
|
34
|
-
onTaskDone?.({ result: done });
|
|
33
|
+
await Promise.race(executing);
|
|
35
34
|
}
|
|
36
35
|
}
|
|
37
36
|
await Promise.all(executing);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"promise.utility.js","sourceRoot":"","sources":["../../src/utilities/promise.utility.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"promise.utility.js","sourceRoot":"","sources":["../../src/utilities/promise.utility.ts"],"names":[],"mappings":";;;AAOA;;;;;;;;;;;;;GAaG;AACI,MAAM,uBAAuB,GAAG,KAAK,EAAK,IAIhD,EAAgB,EAAE;IACjB,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;IAE1C,MAAM,OAAO,GAAiB,EAAE,CAAC;IACjC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAc,CAAC;IAExC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK,EAAC,MAAM,EAAC,EAAE;YACzC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC1B,IAAI,UAAU,EAAE,CAAC;gBACf,MAAM,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;YAC/B,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC,CAAC;QAEH,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACvB,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEtB,IAAI,SAAS,CAAC,IAAI,IAAI,KAAK,EAAE,CAAC;YAC5B,MAAM,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAED,MAAM,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC7B,OAAO,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAC9B,CAAC,CAAC;AA7BW,QAAA,uBAAuB,2BA6BlC"}
|
|
@@ -1,5 +1,13 @@
|
|
|
1
|
-
import { AnyType, EntityClassType } from '../common';
|
|
2
|
-
import { BaseEntity } from '../base/models';
|
|
1
|
+
import { AnyType, EntityClassType } from '../common/types';
|
|
2
|
+
import { BaseEntity } from '../base/models/base.model';
|
|
3
|
+
/**
|
|
4
|
+
* Generates table and column definitions for SQL queries based on LoopBack models
|
|
5
|
+
* @param opts - Configuration with model class and optional alias
|
|
6
|
+
* @returns Object containing table name, alias, and column mapping
|
|
7
|
+
* @example
|
|
8
|
+
* const def = getTableDefinition({ model: User, alias: 'u' });
|
|
9
|
+
* // { table: { name: 'User', alias: 'u', ... }, columns: { id: 'u.id', ... } }
|
|
10
|
+
*/
|
|
3
11
|
export declare const getTableDefinition: <T extends BaseEntity>(opts: {
|
|
4
12
|
model: EntityClassType<T>;
|
|
5
13
|
alias?: string;
|
|
@@ -13,7 +21,20 @@ export declare const getTableDefinition: <T extends BaseEntity>(opts: {
|
|
|
13
21
|
columns: { [key in keyof T]: string; };
|
|
14
22
|
columnsNoAlias: { [key in keyof T]: string; };
|
|
15
23
|
};
|
|
16
|
-
|
|
24
|
+
/**
|
|
25
|
+
* Safely formats a value for use in a SQL query string
|
|
26
|
+
* @param value - The value to format
|
|
27
|
+
* @returns Formatted SQL string value
|
|
28
|
+
* @example
|
|
29
|
+
* getValue('O\'Reilly') // "'O''Reilly'"
|
|
30
|
+
* getValue(123) // "123"
|
|
31
|
+
*/
|
|
32
|
+
export declare const getValue: (value: AnyType) => string;
|
|
33
|
+
/**
|
|
34
|
+
* Builds a PostgreSQL-compatible batch update query using WITH and VALUES
|
|
35
|
+
* @param opts - Configuration for batch update
|
|
36
|
+
* @returns SQL UPDATE query string
|
|
37
|
+
*/
|
|
17
38
|
export declare const buildBatchUpdateQuery: <E>(opts: {
|
|
18
39
|
tableName: string;
|
|
19
40
|
keys: (keyof E)[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.utility.d.ts","sourceRoot":"","sources":["../../src/utilities/query.utility.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"query.utility.d.ts","sourceRoot":"","sources":["../../src/utilities/query.utility.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAM1D,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtD;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,GAAI,CAAC,SAAS,UAAU,EAAE,MAAM;IAC7D,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,KAsCM;IACH,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,iBAAiB,EAAE,MAAM,CAAA;KAAE,CAAC;IAClE,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,GAAG,GAAG,IAAI,MAAM,CAAC,GAAG,MAAM,GAAE,CAAC;IACtC,cAAc,EAAE,GAAG,GAAG,IAAI,MAAM,CAAC,GAAG,MAAM,GAAE,CAAC;CAEhD,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,QAAQ,GAAI,OAAO,OAAO,WAwBtC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,GAAI,CAAC,EAAE,MAAM;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;IAClB,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,OAAO,EAAE,CAAC,MAAM,CAAC,GAAG;QAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC,EAAE,CAAC;IAClE,SAAS,EAAE,CAAC,MAAM,CAAC,GAAG;QAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC,EAAE,CAAC;IACpE,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB,KAAG,MAwFH,CAAC"}
|