@squiz/optimization-utils 4.7.0 → 4.8.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/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/logging/Log.d.ts +18 -0
- package/dist/logging/Log.js +98 -0
- package/dist/logging/Log.js.map +1 -0
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ export * from './retries/Retries';
|
|
|
3
3
|
export * from './object/getProperty';
|
|
4
4
|
export * from './metadata/CopyReflection';
|
|
5
5
|
export * from './measurement/performance';
|
|
6
|
+
export * from './logging/Log';
|
|
6
7
|
export * from './data-structures/Result';
|
|
7
8
|
export * from './change-tracker/ChangeTracker';
|
|
8
9
|
export * from './array/chunkify';
|
package/dist/index.js
CHANGED
|
@@ -19,6 +19,7 @@ __exportStar(require("./retries/Retries"), exports);
|
|
|
19
19
|
__exportStar(require("./object/getProperty"), exports);
|
|
20
20
|
__exportStar(require("./metadata/CopyReflection"), exports);
|
|
21
21
|
__exportStar(require("./measurement/performance"), exports);
|
|
22
|
+
__exportStar(require("./logging/Log"), exports);
|
|
22
23
|
__exportStar(require("./data-structures/Result"), exports);
|
|
23
24
|
__exportStar(require("./change-tracker/ChangeTracker"), exports);
|
|
24
25
|
__exportStar(require("./array/chunkify"), exports);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gEAA8C;AAC9C,oDAAkC;AAClC,uDAAqC;AACrC,4DAA0C;AAC1C,4DAA0C;AAC1C,2DAAyC;AACzC,iEAA+C;AAC/C,mDAAiC;AACjC,iDAA+B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gEAA8C;AAC9C,oDAAkC;AAClC,uDAAqC;AACrC,4DAA0C;AAC1C,4DAA0C;AAC1C,gDAA8B;AAC9B,2DAAyC;AACzC,iEAA+C;AAC/C,mDAAiC;AACjC,iDAA+B"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Logger } from '@squiz/optimization-logger';
|
|
2
|
+
type MetadataCallback = (...args: Array<any>) => Record<string, unknown>;
|
|
3
|
+
type ErrorCallback = (error: unknown) => Record<string, unknown>;
|
|
4
|
+
type SuccessCallback = (result: any, ...args: Array<any>) => Record<string, unknown>;
|
|
5
|
+
export type LogOptions = {
|
|
6
|
+
before?: string;
|
|
7
|
+
success?: string;
|
|
8
|
+
error?: string;
|
|
9
|
+
metadata?: MetadataCallback;
|
|
10
|
+
errorMetadata?: ErrorCallback;
|
|
11
|
+
successMetadata?: SuccessCallback;
|
|
12
|
+
loggingLevel?: keyof Logger;
|
|
13
|
+
loggingSuccessLevel?: keyof Logger;
|
|
14
|
+
loggingErrorLevel?: keyof Logger;
|
|
15
|
+
loggingResultFailureAsError?: boolean;
|
|
16
|
+
};
|
|
17
|
+
export declare function Log(options: LogOptions): MethodDecorator;
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.Log = Log;
|
|
7
|
+
const node_util_1 = __importDefault(require("node:util"));
|
|
8
|
+
const inversify_1 = require("inversify");
|
|
9
|
+
const optimization_logger_1 = require("@squiz/optimization-logger");
|
|
10
|
+
const data_structures_1 = require("../data-structures");
|
|
11
|
+
const CopyReflection_1 = require("../metadata/CopyReflection");
|
|
12
|
+
function _log(callback, { args, logOptions, propertyKey, }, logger) {
|
|
13
|
+
const defaultError = 'Error while executing the method';
|
|
14
|
+
const metadata = logOptions.metadata?.(...args);
|
|
15
|
+
const loggingLevel = logOptions.loggingLevel ?? 'debug';
|
|
16
|
+
const successLoggingLevel = logOptions.loggingSuccessLevel ?? 'debug';
|
|
17
|
+
const errorLoggingLevel = logOptions.loggingErrorLevel ?? 'error';
|
|
18
|
+
const method = propertyKey;
|
|
19
|
+
const logError = (resultOrError) => {
|
|
20
|
+
const isResultFailure = resultOrError instanceof data_structures_1.Result && resultOrError.isFailure();
|
|
21
|
+
if (isResultFailure && !logOptions.loggingResultFailureAsError) {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
const error = isResultFailure ? resultOrError.error : resultOrError;
|
|
25
|
+
const errorMetadata = logOptions.errorMetadata?.(error);
|
|
26
|
+
logger[errorLoggingLevel]({
|
|
27
|
+
message: logOptions.error ?? defaultError,
|
|
28
|
+
error,
|
|
29
|
+
method,
|
|
30
|
+
...metadata,
|
|
31
|
+
...errorMetadata,
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
const logAfter = (v) => {
|
|
35
|
+
if (v instanceof data_structures_1.Result && v.isFailure()) {
|
|
36
|
+
logError(v);
|
|
37
|
+
}
|
|
38
|
+
else if (logOptions.success) {
|
|
39
|
+
const successMetadata = logOptions.successMetadata?.(v, ...args);
|
|
40
|
+
logger[successLoggingLevel]({
|
|
41
|
+
message: logOptions.success,
|
|
42
|
+
method,
|
|
43
|
+
...metadata,
|
|
44
|
+
...successMetadata,
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
if (logOptions.before) {
|
|
49
|
+
logger[loggingLevel]({
|
|
50
|
+
message: logOptions.before,
|
|
51
|
+
method,
|
|
52
|
+
...metadata,
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
let result;
|
|
56
|
+
try {
|
|
57
|
+
result = callback();
|
|
58
|
+
if (!node_util_1.default.types.isPromise(result)) {
|
|
59
|
+
logAfter(result);
|
|
60
|
+
return result;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
catch (e) {
|
|
64
|
+
logError(e);
|
|
65
|
+
throw e;
|
|
66
|
+
}
|
|
67
|
+
return result
|
|
68
|
+
.catch((e) => {
|
|
69
|
+
logError(e);
|
|
70
|
+
throw e;
|
|
71
|
+
})
|
|
72
|
+
.then((v) => {
|
|
73
|
+
logAfter(v);
|
|
74
|
+
return v;
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
function Log(options) {
|
|
78
|
+
return function (target, propertyKey, descriptor) {
|
|
79
|
+
const originalMethod = descriptor.value;
|
|
80
|
+
const injection = (0, inversify_1.inject)(optimization_logger_1.Logger);
|
|
81
|
+
const loggerSymbol = Symbol('logger');
|
|
82
|
+
if (!Reflect.has(target, loggerSymbol)) {
|
|
83
|
+
injection(target, loggerSymbol);
|
|
84
|
+
}
|
|
85
|
+
descriptor.value = function (...args) {
|
|
86
|
+
const logger = this[loggerSymbol] || (0, optimization_logger_1.createLogger)();
|
|
87
|
+
return _log(() => {
|
|
88
|
+
return originalMethod.apply(this, args);
|
|
89
|
+
}, {
|
|
90
|
+
logOptions: options,
|
|
91
|
+
propertyKey,
|
|
92
|
+
args,
|
|
93
|
+
}, logger);
|
|
94
|
+
};
|
|
95
|
+
CopyReflection_1.CopyReflection.copyPropertyMetadata(originalMethod, descriptor.value, propertyKey);
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=Log.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Log.js","sourceRoot":"","sources":["../../src/logging/Log.ts"],"names":[],"mappings":";;;;;AA0HA,kBAkCC;AA5JD,0DAA6B;AAC7B,yCAAmC;AACnC,oEAAkE;AAClE,wDAA4C;AAC5C,+DAA4D;AAY5D,SAAS,IAAI,CACX,QAA8B,EAC9B,EACE,IAAI,EACJ,UAAU,EACV,WAAW,GAKZ,EACD,MAAc;IAEd,MAAM,YAAY,GAAG,kCAAkC,CAAC;IACxD,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;IAChD,MAAM,YAAY,GAAG,UAAU,CAAC,YAAY,IAAI,OAAO,CAAC;IACxD,MAAM,mBAAmB,GAAG,UAAU,CAAC,mBAAmB,IAAI,OAAO,CAAC;IACtE,MAAM,iBAAiB,GAAG,UAAU,CAAC,iBAAiB,IAAI,OAAO,CAAC;IAElE,MAAM,MAAM,GAAG,WAAW,CAAC;IAE3B,MAAM,QAAQ,GAAG,CAAC,aAAuB,EAAQ,EAAE;QACjD,MAAM,eAAe,GACnB,aAAa,YAAY,wBAAM,IAAI,aAAa,CAAC,SAAS,EAAE,CAAC;QAE/D,IAAI,eAAe,IAAI,CAAC,UAAU,CAAC,2BAA2B,EAAE,CAAC;YAC/D,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAG,eAAe,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC;QAEpE,MAAM,aAAa,GAAG,UAAU,CAAC,aAAa,EAAE,CAAC,KAAK,CAAC,CAAC;QAExD,MAAM,CAAC,iBAAiB,CAAC,CAAC;YACxB,OAAO,EAAE,UAAU,CAAC,KAAK,IAAI,YAAY;YACzC,KAAK;YACL,MAAM;YACN,GAAG,QAAQ;YACX,GAAG,aAAa;SACjB,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAG,CAAC,CAAU,EAAQ,EAAE;QACpC,IAAI,CAAC,YAAY,wBAAM,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC;YACzC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACd,CAAC;aAAM,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;YAC9B,MAAM,eAAe,GAAG,UAAU,CAAC,eAAe,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;YAEjE,MAAM,CAAC,mBAAmB,CAAC,CAAC;gBAC1B,OAAO,EAAE,UAAU,CAAC,OAAO;gBAC3B,MAAM;gBACN,GAAG,QAAQ;gBACX,GAAG,eAAe;aACnB,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC;IAEF,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;QACtB,MAAM,CAAC,YAAY,CAAC,CAAC;YACnB,OAAO,EAAE,UAAU,CAAC,MAAM;YAC1B,MAAM;YACN,GAAG,QAAQ;SACZ,CAAC,CAAC;IACL,CAAC;IAED,IAAI,MAAsB,CAAC;IAE3B,IAAI,CAAC;QACH,MAAM,GAAG,QAAQ,EAAE,CAAC;QAEpB,IAAI,CAAC,mBAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YAClC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAEjB,OAAO,MAAM,CAAC;QAChB,CAAC;IACH,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,QAAQ,CAAC,CAAC,CAAC,CAAC;QAEZ,MAAM,CAAC,CAAC;IACV,CAAC;IAED,OAAO,MAAM;SACV,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;QACX,QAAQ,CAAC,CAAC,CAAC,CAAC;QAEZ,MAAM,CAAC,CAAC;IACV,CAAC,CAAC;SACD,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;QACV,QAAQ,CAAC,CAAC,CAAC,CAAC;QACZ,OAAO,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;AACP,CAAC;AAeD,SAAgB,GAAG,CAAC,OAAmB;IACrC,OAAO,UAAU,MAAM,EAAE,WAAW,EAAE,UAA8B;QAClE,MAAM,cAAc,GAAG,UAAU,CAAC,KAAK,CAAC;QAExC,MAAM,SAAS,GAAG,IAAA,kBAAM,EAAC,4BAAM,CAAC,CAAC;QACjC,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;QAEtC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,CAAC;YACvC,SAAS,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QAClC,CAAC;QAED,UAAU,CAAC,KAAK,GAAG,UAAU,GAAG,IAAoB;YAClD,MAAM,MAAM,GACT,IAAmC,CAAC,YAAY,CAAC,IAAI,IAAA,kCAAY,GAAE,CAAC;YAEvE,OAAO,IAAI,CACT,GAAG,EAAE;gBACH,OAAO,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC1C,CAAC,EACD;gBACE,UAAU,EAAE,OAAO;gBACnB,WAAW;gBACX,IAAI;aACL,EACD,MAAM,CACP,CAAC;QACJ,CAAC,CAAC;QAEF,+BAAc,CAAC,oBAAoB,CACjC,cAAc,EACd,UAAU,CAAC,KAAK,EAChB,WAAW,CACZ,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
|