@squiz/optimization-utils 1.1.1 → 1.3.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/CHANGELOG.md +12 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/logger/LoggerMessage.d.ts +13 -1
- package/dist/logger/LoggerMessage.js +18 -6
- package/dist/logger/LoggerMessage.js.map +1 -1
- package/dist/logger/LogsHandler.js +2 -2
- package/dist/logger/LogsHandler.js.map +1 -1
- package/dist/logger/LogsLambdaHandler.d.ts +1 -1
- package/dist/logger/LogsLambdaHandler.js +1 -1
- package/dist/logger/LogsLambdaHandler.js.map +1 -1
- package/dist/logger/SquizRemoteLogger.d.ts +1 -1
- package/dist/logger/SquizRemoteLogger.js +8 -8
- package/dist/logger/SquizRemoteLogger.js.map +1 -1
- package/dist/object/getProperty.d.ts +1 -0
- package/dist/object/getProperty.js +15 -0
- package/dist/object/getProperty.js.map +1 -0
- package/dist/scheduler/EventBridgeScheduler.d.ts +1 -1
- package/dist/scheduler/EventBridgeScheduler.js +2 -2
- package/dist/scheduler/EventBridgeScheduler.js.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +2 -0
- package/src/logger/LoggerMessage.ts +36 -15
- package/src/logger/LogsHandler.ts +4 -4
- package/src/logger/LogsLambdaHandler.ts +1 -1
- package/src/logger/SquizRemoteLogger.ts +9 -12
- package/src/logger/__tests__/LoggerMessage.spec.ts +14 -0
- package/src/object/__tests__/getProperty.spec.ts +17 -0
- package/src/object/getProperty.ts +21 -0
- package/src/scheduler/EventBridgeScheduler.ts +5 -9
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# @squiz/optimization-utils
|
|
2
2
|
|
|
3
|
+
## 1.3.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 24aaeac: Added get property function
|
|
8
|
+
|
|
9
|
+
## 1.2.0
|
|
10
|
+
|
|
11
|
+
### Minor Changes
|
|
12
|
+
|
|
13
|
+
- 0c347a0: Added remote function into the LogMessage, Updated FilterPattern
|
|
14
|
+
|
|
3
15
|
## 1.1.1
|
|
4
16
|
|
|
5
17
|
### Patch Changes
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -38,4 +38,5 @@ __exportStar(require("./event/EventHandler"), exports);
|
|
|
38
38
|
__exportStar(require("./config/ConfigurationLoader"), exports);
|
|
39
39
|
__exportStar(require("./cloudflare/ImplCloudflareKVHttpService"), exports);
|
|
40
40
|
__exportStar(require("./cloudflare/CloudflareKVHttpService"), exports);
|
|
41
|
+
__exportStar(require("./object/getProperty"), exports);
|
|
41
42
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yDAAuC;AAEvC,gEAA8C;AAE9C,yDAAuC;AACvC,wDAAsC;AAEtC,iDAA+B;AAE/B,wDAAsC;AACtC,mEAAiD;AAEjD,6DAA2C;AAC3C,wDAAsC;AACtC,yDAAuC;AACvC,kDAAgC;AAChC,6DAA2C;AAE3C,kEAAgD;AAChD,0DAAwC;AACxC,+DAA6C;AAE7C,8DAA4C;AAE5C,8DAA4C;AAC5C,sDAAoC;AACpC,wDAAsC;AAEtC,yDAAuC;AACvC,uDAAqC;AAErC,+DAA6C;AAE7C,2EAAyD;AACzD,uEAAqD"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yDAAuC;AAEvC,gEAA8C;AAE9C,yDAAuC;AACvC,wDAAsC;AAEtC,iDAA+B;AAE/B,wDAAsC;AACtC,mEAAiD;AAEjD,6DAA2C;AAC3C,wDAAsC;AACtC,yDAAuC;AACvC,kDAAgC;AAChC,6DAA2C;AAE3C,kEAAgD;AAChD,0DAAwC;AACxC,+DAA6C;AAE7C,8DAA4C;AAE5C,8DAA4C;AAC5C,sDAAoC;AACpC,wDAAsC;AAEtC,yDAAuC;AACvC,uDAAqC;AAErC,+DAA6C;AAE7C,2EAAyD;AACzD,uEAAqD;AAErD,uDAAqC"}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
|
+
import { TenantId } from '../valueObject/TenantId';
|
|
1
2
|
type ValueOf = {
|
|
2
3
|
valueOf(): string;
|
|
3
4
|
};
|
|
5
|
+
/**
|
|
6
|
+
* @deprecated
|
|
7
|
+
*/
|
|
4
8
|
export declare function createLogMessage<T extends abstract new (...args: any) => any>(...metadata: Array<string | InstanceType<T>>): (message?: string) => string;
|
|
5
9
|
export declare const TENANT_ID_METADATA: (tenantId: string | ValueOf) => {
|
|
6
10
|
tenantId: string;
|
|
@@ -11,7 +15,15 @@ export declare const PROCESSABLE_LOG_METADATA: {
|
|
|
11
15
|
export declare const REMOTE_LOG_METADATA: {
|
|
12
16
|
readonly remote: true;
|
|
13
17
|
};
|
|
14
|
-
export
|
|
18
|
+
export interface LogMessage {
|
|
19
|
+
(message: string | any): [string | any, ...Array<any>];
|
|
20
|
+
remote(message: string | any): [string | any, ...Array<any>];
|
|
21
|
+
remote(message: string | any,
|
|
22
|
+
/**
|
|
23
|
+
* The param is not needed if it is passed in the metadata
|
|
24
|
+
*/
|
|
25
|
+
tenantId: TenantId): [string | any, ...Array<any>];
|
|
26
|
+
}
|
|
15
27
|
export type CreateLog = {
|
|
16
28
|
attachMetadata: (metadata: Record<string, unknown>) => CreateLog;
|
|
17
29
|
attachEventName: (eventName: string) => CreateLog;
|
|
@@ -3,12 +3,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.REMOTE_LOG_METADATA = exports.PROCESSABLE_LOG_METADATA = exports.TENANT_ID_METADATA = void 0;
|
|
4
4
|
exports.createLogMessage = createLogMessage;
|
|
5
5
|
exports.createLog = createLog;
|
|
6
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
6
7
|
const crypto_1 = require("crypto");
|
|
7
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
8
8
|
const normalizeCaller = (stringOrClassInstance) => typeof stringOrClassInstance === 'string'
|
|
9
9
|
? stringOrClassInstance
|
|
10
10
|
: stringOrClassInstance.constructor.name;
|
|
11
|
-
|
|
11
|
+
/**
|
|
12
|
+
* @deprecated
|
|
13
|
+
*/
|
|
12
14
|
function createLogMessage(...metadata) {
|
|
13
15
|
const context = (0, crypto_1.randomUUID)();
|
|
14
16
|
const formattedMetadata = [...metadata, `Context: ${context}`]
|
|
@@ -66,13 +68,11 @@ function createLog(opts) {
|
|
|
66
68
|
const remote = () => {
|
|
67
69
|
return attachMetadata(exports.REMOTE_LOG_METADATA);
|
|
68
70
|
};
|
|
69
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
70
71
|
const attachCaller = (caller) => {
|
|
71
72
|
return attachMetadata({
|
|
72
73
|
caller: normalizeCaller(caller),
|
|
73
74
|
});
|
|
74
75
|
};
|
|
75
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
76
76
|
const create = (caller) => {
|
|
77
77
|
const metadata = {
|
|
78
78
|
...opts?.metadata,
|
|
@@ -80,8 +80,20 @@ function createLog(opts) {
|
|
|
80
80
|
caller: normalizeCaller(caller),
|
|
81
81
|
}),
|
|
82
82
|
};
|
|
83
|
-
|
|
84
|
-
|
|
83
|
+
function log(message) {
|
|
84
|
+
return [message, metadata];
|
|
85
|
+
}
|
|
86
|
+
log.remote = (message, tenantId) => {
|
|
87
|
+
return [
|
|
88
|
+
message,
|
|
89
|
+
{
|
|
90
|
+
...metadata,
|
|
91
|
+
...exports.REMOTE_LOG_METADATA,
|
|
92
|
+
...(tenantId && { ...(0, exports.TENANT_ID_METADATA)(tenantId) }),
|
|
93
|
+
},
|
|
94
|
+
];
|
|
95
|
+
};
|
|
96
|
+
return log;
|
|
85
97
|
};
|
|
86
98
|
return {
|
|
87
99
|
attachMetadata,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LoggerMessage.js","sourceRoot":"","sources":["../../src/logger/LoggerMessage.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"LoggerMessage.js","sourceRoot":"","sources":["../../src/logger/LoggerMessage.ts"],"names":[],"mappings":"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"}
|
|
@@ -30,8 +30,8 @@ let LogsHandler = class LogsHandler {
|
|
|
30
30
|
this.logger = logger;
|
|
31
31
|
}
|
|
32
32
|
async handle(event) {
|
|
33
|
-
const logMessage = (0, LoggerMessage_1.
|
|
34
|
-
this.logger.debug(logMessage(`started mapping CloudWatchLogsEvent`));
|
|
33
|
+
const logMessage = (0, LoggerMessage_1.createLog)().create(this);
|
|
34
|
+
this.logger.debug(...logMessage(`started mapping CloudWatchLogsEvent`));
|
|
35
35
|
const remoteLogs = this.mapLogs(event, logMessage);
|
|
36
36
|
this.logger.debug(logMessage(`finished mapping CloudWatchLogsEvent`));
|
|
37
37
|
this.logger.debug(logMessage(`started sending logs (count: ${remoteLogs.length}) into the RemoteLogger`));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LogsHandler.js","sourceRoot":"","sources":["../../src/logger/LogsHandler.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AACA,gDAAwB;AACxB,yCAA+C;AAC/C,+BAA+B;AAE/B,iDAA4E;AAC5E,qCAAkC;AAClC,
|
|
1
|
+
{"version":3,"file":"LogsHandler.js","sourceRoot":"","sources":["../../src/logger/LogsHandler.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AACA,gDAAwB;AACxB,yCAA+C;AAC/C,+BAA+B;AAE/B,iDAA4E;AAC5E,qCAAkC;AAClC,mDAAwD;AAGjD,IAAM,WAAW,GAAjB,MAAM,WAAW;IAGH;IAEA;IAJnB,YAEmB,YAA0B,EAE1B,MAAc;QAFd,iBAAY,GAAZ,YAAY,CAAc;QAE1B,WAAM,GAAN,MAAM,CAAQ;IAC9B,CAAC;IAEJ,KAAK,CAAC,MAAM,CAAC,KAA0B;QACrC,MAAM,UAAU,GAAG,IAAA,yBAAS,GAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAE5C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC,qCAAqC,CAAC,CAAC,CAAC;QACxE,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QAEnD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,sCAAsC,CAAC,CAAC,CAAC;QAEtE,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,UAAU,CACR,gCAAgC,UAAU,CAAC,MAAM,yBAAyB,CAC3E,CACF,CAAC;QACF,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACxC,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,UAAU,CAAC,6CAA6C,CAAC,CAC1D,CAAC;IACJ,CAAC;IAEO,OAAO,CACb,KAA0B,EAC1B,UAAsB;QAEtB,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAEpC,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,UAAU,CAAC,0BAA0B,IAAA,cAAO,EAAC,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CACpE,CAAC;QACF,MAAM,WAAW,GAAG,CAAC,GAA0B,EAAoB,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;QAE5E,OAAO,IAAI;aACR,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YACX,MAAM,MAAM,GAAG,gCAAiB,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;YAEpE,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QAClD,CAAC,CAAC;aACD,MAAM,CAAC,WAAW,CAAC,CAAC;IACzB,CAAC;IAEO,UAAU,CAChB,KAA0B;QAE1B,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC1D,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,cAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;QAE5D,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;CACF,CAAA;AAvDY,kCAAW;sBAAX,WAAW;IADvB,IAAA,sBAAU,GAAE;IAGR,WAAA,IAAA,kBAAM,EAAC,2BAAY,CAAC,CAAA;IAEpB,WAAA,IAAA,kBAAM,EAAC,eAAM,CAAC,CAAA;qCADgB,2BAAY;QAElB,eAAM;GALtB,WAAW,CAuDvB"}
|
|
@@ -2,7 +2,7 @@ import { CloudWatchLogsEvent } from 'aws-lambda';
|
|
|
2
2
|
import { LogsHandler } from './LogsHandler';
|
|
3
3
|
import { Logger } from './Logger';
|
|
4
4
|
import { Container } from 'inversify';
|
|
5
|
-
export declare const CLOUDWATCH_FILTER_PATTERN = "{ $.level = \"info\" || $.level = \"warn\" ||
|
|
5
|
+
export declare const CLOUDWATCH_FILTER_PATTERN = "{ ($.level = \"info\" || $.level = \"warn\" || $.level = \"error\") && ($.remote IS TRUE || $.processable IS TRUE) }";
|
|
6
6
|
export type LogsLambdaHandler = (event: CloudWatchLogsEvent) => Promise<{
|
|
7
7
|
status: string;
|
|
8
8
|
}>;
|
|
@@ -5,7 +5,7 @@ exports.createLogsLambdaHandler = createLogsLambdaHandler;
|
|
|
5
5
|
const LogsHandler_1 = require("./LogsHandler");
|
|
6
6
|
const Logger_1 = require("./Logger");
|
|
7
7
|
const inversify_1 = require("inversify");
|
|
8
|
-
exports.CLOUDWATCH_FILTER_PATTERN = `{ $.level = "info" || $.level = "warn" ||
|
|
8
|
+
exports.CLOUDWATCH_FILTER_PATTERN = `{ ($.level = "info" || $.level = "warn" || $.level = "error") && ($.remote IS TRUE || $.processable IS TRUE) }`;
|
|
9
9
|
function createLogsLambdaHandler(opts) {
|
|
10
10
|
let logsHandler;
|
|
11
11
|
let logger;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LogsLambdaHandler.js","sourceRoot":"","sources":["../../src/logger/LogsLambdaHandler.ts"],"names":[],"mappings":";;;AAkBA,0DAwBC;AAzCD,+CAA4C;AAC5C,qCAAkC;AAClC,yCAAsC;AAEzB,QAAA,yBAAyB,GAAG,
|
|
1
|
+
{"version":3,"file":"LogsLambdaHandler.js","sourceRoot":"","sources":["../../src/logger/LogsLambdaHandler.ts"],"names":[],"mappings":";;;AAkBA,0DAwBC;AAzCD,+CAA4C;AAC5C,qCAAkC;AAClC,yCAAsC;AAEzB,QAAA,yBAAyB,GAAG,gHAAgH,CAAC;AAa1J,SAAgB,uBAAuB,CACrC,IAA8D;IAE9D,IAAI,WAAwB,CAAC;IAC7B,IAAI,MAAc,CAAC;IAEnB,IAAI,IAAI,YAAY,qBAAS,EAAE,CAAC;QAC9B,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,yBAAW,CAAC,CAAC;QACpC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,eAAM,CAAC,CAAC;IAC5B,CAAC;SAAM,CAAC;QACN,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QAC/B,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;IAED,OAAO,KAAK,EAAE,KAA0B,EAAE,EAAE;QAC1C,IAAI,CAAC;YACH,MAAM,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAEhC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QAC1B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAChB,MAAM,CAAC,CAAC;QACV,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { RemoteLog, RemoteLogger } from './RemoteLogger';
|
|
3
3
|
import { Logger } from './Logger';
|
|
4
|
-
import { HttpRequestBuilderFactory } from '
|
|
4
|
+
import { HttpRequestBuilderFactory } from '../httpClient/HttpRequestBuilder';
|
|
5
5
|
export type SquizRemoteLoggerServiceConfig = {
|
|
6
6
|
loggerServiceUrl: URL;
|
|
7
7
|
createLogsPath: string;
|
|
@@ -12,12 +12,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
12
12
|
exports.SquizRemoteLogger = void 0;
|
|
13
13
|
const zod_1 = require("zod");
|
|
14
14
|
const RemoteLogger_1 = require("./RemoteLogger");
|
|
15
|
-
const TenantId_1 = require("
|
|
15
|
+
const TenantId_1 = require("../valueObject/TenantId");
|
|
16
16
|
const inversify_1 = require("inversify");
|
|
17
17
|
const Logger_1 = require("./Logger");
|
|
18
|
-
const HttpRequestBuilder_1 = require("
|
|
18
|
+
const HttpRequestBuilder_1 = require("../httpClient/HttpRequestBuilder");
|
|
19
|
+
const HttpClient_1 = require("../httpClient/HttpClient");
|
|
19
20
|
const LoggerMessage_1 = require("./LoggerMessage");
|
|
20
|
-
const HttpClient_1 = require("./../httpClient/HttpClient");
|
|
21
21
|
const CREATE_LOGS_REQUEST_BODY_DTO_SCHEMA = zod_1.z
|
|
22
22
|
.object({
|
|
23
23
|
level: zod_1.z.enum(['INFO', 'WARNING', 'ERROR']),
|
|
@@ -102,12 +102,12 @@ let SquizRemoteLogger = class SquizRemoteLogger {
|
|
|
102
102
|
if (!logs.length) {
|
|
103
103
|
return;
|
|
104
104
|
}
|
|
105
|
-
const logMessage = (0, LoggerMessage_1.
|
|
106
|
-
this.logger.debug(logMessage(`started receiving config`));
|
|
105
|
+
const logMessage = (0, LoggerMessage_1.createLog)().attachTenantId(tenantId).create(this);
|
|
106
|
+
this.logger.debug(...logMessage(`started receiving config`));
|
|
107
107
|
const config = await this.config();
|
|
108
|
-
this.logger.debug(logMessage(`finished receiving config`));
|
|
108
|
+
this.logger.debug(...logMessage(`finished receiving config`));
|
|
109
109
|
const url = new URL(config.createLogsPath + `/${tenantId.valueOf()}`, config.loggerServiceUrl);
|
|
110
|
-
this.logger.debug(logMessage(`started request to: ${url.toString()}`));
|
|
110
|
+
this.logger.debug(...logMessage(`started request to: ${url.toString()}`));
|
|
111
111
|
await this.httpRequestBuilderFactory
|
|
112
112
|
.create()
|
|
113
113
|
.url(url)
|
|
@@ -116,7 +116,7 @@ let SquizRemoteLogger = class SquizRemoteLogger {
|
|
|
116
116
|
.authorizationByXApiKey(config.apiKey)
|
|
117
117
|
.body(logs)
|
|
118
118
|
.sendRequest();
|
|
119
|
-
this.logger.debug(logMessage(`finished request to: ${url.toString()}`));
|
|
119
|
+
this.logger.debug(...logMessage(`finished request to: ${url.toString()}`));
|
|
120
120
|
}
|
|
121
121
|
};
|
|
122
122
|
exports.SquizRemoteLogger = SquizRemoteLogger;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SquizRemoteLogger.js","sourceRoot":"","sources":["../../src/logger/SquizRemoteLogger.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6BAAwB;AACxB,iDAAyE;AACzE,
|
|
1
|
+
{"version":3,"file":"SquizRemoteLogger.js","sourceRoot":"","sources":["../../src/logger/SquizRemoteLogger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const getProperty: (obj: Record<string | symbol | number, unknown>, path: string, defaultValue?: unknown) => unknown;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getProperty = void 0;
|
|
4
|
+
const getProperty = (obj, path, defaultValue = undefined) => {
|
|
5
|
+
const travel = (regexp) => path
|
|
6
|
+
.split(regexp)
|
|
7
|
+
.filter(Boolean)
|
|
8
|
+
.reduce((res, key) => res !== null && res !== undefined
|
|
9
|
+
? res[key]
|
|
10
|
+
: res, obj);
|
|
11
|
+
const result = travel(/[,[\]]+?/) || travel(/[,[\].]+?/);
|
|
12
|
+
return result === undefined || result === obj ? defaultValue : result;
|
|
13
|
+
};
|
|
14
|
+
exports.getProperty = getProperty;
|
|
15
|
+
//# sourceMappingURL=getProperty.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getProperty.js","sourceRoot":"","sources":["../../src/object/getProperty.ts"],"names":[],"mappings":";;;AAAO,MAAM,WAAW,GAAG,CACzB,GAA8C,EAC9C,IAAY,EACZ,eAAwB,SAAS,EACxB,EAAE;IACX,MAAM,MAAM,GAAG,CAAC,MAAc,EAAE,EAAE,CAChC,IAAI;SACD,KAAK,CAAC,MAAM,CAAC;SACb,MAAM,CAAC,OAAO,CAAC;SACf,MAAM,CACL,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CACX,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS;QAC/B,CAAC,CAAE,GAA+B,CAAC,GAAG,CAAC;QACvC,CAAC,CAAC,GAAG,EACT,GAAG,CACJ,CAAC;IAEN,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC;IAEzD,OAAO,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC;AACxE,CAAC,CAAC;AApBW,QAAA,WAAW,eAoBtB"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { SchedulerClient } from '@aws-sdk/client-scheduler';
|
|
2
2
|
import { DomainEvent } from '../event/DomainEvent';
|
|
3
|
-
import { ScheduleName, Scheduler, SchedulerOptions } from '
|
|
3
|
+
import { ScheduleName, Scheduler, SchedulerOptions } from './Scheduler';
|
|
4
4
|
import { Logger } from '../logger/Logger';
|
|
5
5
|
export type EventBridgeSchedulerConfig = {
|
|
6
6
|
region: string;
|
|
@@ -30,7 +30,7 @@ let EventBridgeScheduler = class EventBridgeScheduler {
|
|
|
30
30
|
const logMessage = (0, LoggerMessage_1.createLog)()
|
|
31
31
|
.attachEventName(domainEvent.name)
|
|
32
32
|
.create(this);
|
|
33
|
-
this.logger.debug(logMessage('started scheduling'));
|
|
33
|
+
this.logger.debug(...logMessage('started scheduling'));
|
|
34
34
|
// I putted here "the schedule attributes" because in that way we ensure that every PutItem command
|
|
35
35
|
// it will create always a new record in dynamoDB
|
|
36
36
|
const putItemCommand = {
|
|
@@ -104,7 +104,7 @@ let EventBridgeScheduler = class EventBridgeScheduler {
|
|
|
104
104
|
Name: trimmedScheduleName,
|
|
105
105
|
});
|
|
106
106
|
await this.client.send(getCommand);
|
|
107
|
-
this.logger.debug(logMessage(`finished getting schedule, scheduleName: ${trimmedScheduleName}`));
|
|
107
|
+
this.logger.debug(...logMessage(`finished getting schedule, scheduleName: ${trimmedScheduleName}`));
|
|
108
108
|
}
|
|
109
109
|
catch (e) {
|
|
110
110
|
if (e instanceof client_scheduler_1.ResourceNotFoundException) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EventBridgeScheduler.js","sourceRoot":"","sources":["../../src/scheduler/EventBridgeScheduler.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,yCAAuC;AACvC,gEAOmC;AAGnC,sEAA+D;AAC/D,mCAAoC;
|
|
1
|
+
{"version":3,"file":"EventBridgeScheduler.js","sourceRoot":"","sources":["../../src/scheduler/EventBridgeScheduler.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
1
2
|
import { randomUUID } from 'crypto';
|
|
3
|
+
import { TenantId } from '../valueObject/TenantId';
|
|
2
4
|
|
|
3
5
|
type ValueOf = {
|
|
4
6
|
valueOf(): string;
|
|
5
7
|
};
|
|
6
8
|
|
|
7
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
8
9
|
const normalizeCaller = <T extends abstract new (...args: any) => any>(
|
|
9
10
|
stringOrClassInstance: string | InstanceType<T>,
|
|
10
11
|
): string =>
|
|
@@ -12,7 +13,9 @@ const normalizeCaller = <T extends abstract new (...args: any) => any>(
|
|
|
12
13
|
? stringOrClassInstance
|
|
13
14
|
: stringOrClassInstance.constructor.name;
|
|
14
15
|
|
|
15
|
-
|
|
16
|
+
/**
|
|
17
|
+
* @deprecated
|
|
18
|
+
*/
|
|
16
19
|
export function createLogMessage<T extends abstract new (...args: any) => any>(
|
|
17
20
|
...metadata: Array<string | InstanceType<T>>
|
|
18
21
|
): (message?: string) => string {
|
|
@@ -37,25 +40,32 @@ export const TENANT_ID_METADATA = (
|
|
|
37
40
|
export const PROCESSABLE_LOG_METADATA = { processable: true } as const;
|
|
38
41
|
export const REMOTE_LOG_METADATA = { remote: true } as const;
|
|
39
42
|
|
|
40
|
-
export
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
43
|
+
export interface LogMessage {
|
|
44
|
+
(message: string | any): [string | any, ...Array<any>];
|
|
45
|
+
|
|
46
|
+
remote(message: string | any): [string | any, ...Array<any>];
|
|
47
|
+
|
|
48
|
+
remote(
|
|
49
|
+
message: string | any,
|
|
50
|
+
/**
|
|
51
|
+
* The param is not needed if it is passed in the metadata
|
|
52
|
+
*/
|
|
53
|
+
tenantId: TenantId,
|
|
54
|
+
): [string | any, ...Array<any>];
|
|
55
|
+
}
|
|
56
|
+
|
|
45
57
|
export type CreateLog = {
|
|
46
58
|
attachMetadata: (metadata: Record<string, unknown>) => CreateLog;
|
|
47
59
|
attachEventName: (eventName: string) => CreateLog;
|
|
48
60
|
attachCorrelationId: (id: string) => CreateLog;
|
|
49
61
|
attachTenantId: (tenantId: string | ValueOf) => CreateLog;
|
|
50
62
|
attachExperimentId: (experimentId: string | ValueOf) => CreateLog;
|
|
51
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
52
63
|
attachCaller: <T extends abstract new (...args: any) => any>(
|
|
53
64
|
caller: InstanceType<T> | string,
|
|
54
65
|
) => CreateLog;
|
|
55
66
|
isProcessable: () => CreateLog;
|
|
56
67
|
remote: () => CreateLog;
|
|
57
68
|
getMetadata: () => Record<string, unknown>;
|
|
58
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
59
69
|
create: <T extends abstract new (...args: any) => any>(
|
|
60
70
|
caller?: InstanceType<T> | string,
|
|
61
71
|
) => LogMessage;
|
|
@@ -118,7 +128,6 @@ export function createLog(opts?: {
|
|
|
118
128
|
return attachMetadata(REMOTE_LOG_METADATA);
|
|
119
129
|
};
|
|
120
130
|
|
|
121
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
122
131
|
const attachCaller = <T extends abstract new (...args: any) => any>(
|
|
123
132
|
caller: T | string,
|
|
124
133
|
): CreateLog => {
|
|
@@ -127,11 +136,9 @@ export function createLog(opts?: {
|
|
|
127
136
|
});
|
|
128
137
|
};
|
|
129
138
|
|
|
130
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
131
139
|
const create = <T extends abstract new (...args: any) => any>(
|
|
132
140
|
caller?: T | string,
|
|
133
|
-
|
|
134
|
-
): ((message: string | any) => [string | any, Record<string, unknown>]) => {
|
|
141
|
+
): LogMessage => {
|
|
135
142
|
const metadata = {
|
|
136
143
|
...opts?.metadata,
|
|
137
144
|
...(caller && {
|
|
@@ -139,8 +146,22 @@ export function createLog(opts?: {
|
|
|
139
146
|
}),
|
|
140
147
|
};
|
|
141
148
|
|
|
142
|
-
|
|
143
|
-
|
|
149
|
+
function log(message: string | any) {
|
|
150
|
+
return [message, metadata];
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
log.remote = (message: string | any, tenantId?: TenantId) => {
|
|
154
|
+
return [
|
|
155
|
+
message,
|
|
156
|
+
{
|
|
157
|
+
...metadata,
|
|
158
|
+
...REMOTE_LOG_METADATA,
|
|
159
|
+
...(tenantId && { ...TENANT_ID_METADATA(tenantId) }),
|
|
160
|
+
},
|
|
161
|
+
];
|
|
162
|
+
};
|
|
163
|
+
|
|
164
|
+
return log as LogMessage;
|
|
144
165
|
};
|
|
145
166
|
|
|
146
167
|
return {
|
|
@@ -5,7 +5,7 @@ import { inspect } from 'util';
|
|
|
5
5
|
import type { CloudWatchLogsLogEvent } from 'aws-lambda/trigger/cloudwatch-logs';
|
|
6
6
|
import { REMOTE_LOG_SCHEMA, RemoteLog, RemoteLogger } from './RemoteLogger';
|
|
7
7
|
import { Logger } from './Logger';
|
|
8
|
-
import {
|
|
8
|
+
import { createLog, LogMessage } from './LoggerMessage';
|
|
9
9
|
|
|
10
10
|
@injectable()
|
|
11
11
|
export class LogsHandler {
|
|
@@ -17,9 +17,9 @@ export class LogsHandler {
|
|
|
17
17
|
) {}
|
|
18
18
|
|
|
19
19
|
async handle(event: CloudWatchLogsEvent): Promise<void> {
|
|
20
|
-
const logMessage =
|
|
20
|
+
const logMessage = createLog().create(this);
|
|
21
21
|
|
|
22
|
-
this.logger.debug(logMessage(`started mapping CloudWatchLogsEvent`));
|
|
22
|
+
this.logger.debug(...logMessage(`started mapping CloudWatchLogsEvent`));
|
|
23
23
|
const remoteLogs = this.mapLogs(event, logMessage);
|
|
24
24
|
|
|
25
25
|
this.logger.debug(logMessage(`finished mapping CloudWatchLogsEvent`));
|
|
@@ -37,7 +37,7 @@ export class LogsHandler {
|
|
|
37
37
|
|
|
38
38
|
private mapLogs(
|
|
39
39
|
event: CloudWatchLogsEvent,
|
|
40
|
-
logMessage:
|
|
40
|
+
logMessage: LogMessage,
|
|
41
41
|
): Array<RemoteLog> {
|
|
42
42
|
const logs = this.decodeLogs(event);
|
|
43
43
|
|
|
@@ -3,7 +3,7 @@ import { LogsHandler } from './LogsHandler';
|
|
|
3
3
|
import { Logger } from './Logger';
|
|
4
4
|
import { Container } from 'inversify';
|
|
5
5
|
|
|
6
|
-
export const CLOUDWATCH_FILTER_PATTERN = `{ $.level = "info" || $.level = "warn" ||
|
|
6
|
+
export const CLOUDWATCH_FILTER_PATTERN = `{ ($.level = "info" || $.level = "warn" || $.level = "error") && ($.remote IS TRUE || $.processable IS TRUE) }`;
|
|
7
7
|
|
|
8
8
|
export type LogsLambdaHandler = (
|
|
9
9
|
event: CloudWatchLogsEvent,
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { RemoteLog, RemoteLogLevel, RemoteLogger } from './RemoteLogger';
|
|
3
|
-
import { TenantId } from '
|
|
3
|
+
import { TenantId } from '../valueObject/TenantId';
|
|
4
4
|
import { injectable } from 'inversify';
|
|
5
5
|
import { Logger } from './Logger';
|
|
6
|
-
import { HttpRequestBuilderFactory } from '
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
6
|
+
import { HttpRequestBuilderFactory } from '../httpClient/HttpRequestBuilder';
|
|
7
|
+
import { HttpMethod } from '../httpClient/HttpClient';
|
|
8
|
+
import { createLog } from './LoggerMessage';
|
|
9
9
|
|
|
10
10
|
export type SquizRemoteLoggerServiceConfig = {
|
|
11
11
|
loggerServiceUrl: URL;
|
|
@@ -128,22 +128,19 @@ export class SquizRemoteLogger implements RemoteLogger {
|
|
|
128
128
|
return;
|
|
129
129
|
}
|
|
130
130
|
|
|
131
|
-
const logMessage =
|
|
132
|
-
this,
|
|
133
|
-
`tenantId: ${tenantId.valueOf()}`,
|
|
134
|
-
);
|
|
131
|
+
const logMessage = createLog().attachTenantId(tenantId).create(this);
|
|
135
132
|
|
|
136
|
-
this.logger.debug(logMessage(`started receiving config`));
|
|
133
|
+
this.logger.debug(...logMessage(`started receiving config`));
|
|
137
134
|
const config = await this.config();
|
|
138
135
|
|
|
139
|
-
this.logger.debug(logMessage(`finished receiving config`));
|
|
136
|
+
this.logger.debug(...logMessage(`finished receiving config`));
|
|
140
137
|
|
|
141
138
|
const url = new URL(
|
|
142
139
|
config.createLogsPath + `/${tenantId.valueOf()}`,
|
|
143
140
|
config.loggerServiceUrl,
|
|
144
141
|
);
|
|
145
142
|
|
|
146
|
-
this.logger.debug(logMessage(`started request to: ${url.toString()}`));
|
|
143
|
+
this.logger.debug(...logMessage(`started request to: ${url.toString()}`));
|
|
147
144
|
await this.httpRequestBuilderFactory
|
|
148
145
|
.create()
|
|
149
146
|
.url(url)
|
|
@@ -152,6 +149,6 @@ export class SquizRemoteLogger implements RemoteLogger {
|
|
|
152
149
|
.authorizationByXApiKey(config.apiKey)
|
|
153
150
|
.body(logs)
|
|
154
151
|
.sendRequest();
|
|
155
|
-
this.logger.debug(logMessage(`finished request to: ${url.toString()}`));
|
|
152
|
+
this.logger.debug(...logMessage(`finished request to: ${url.toString()}`));
|
|
156
153
|
}
|
|
157
154
|
}
|
|
@@ -130,4 +130,18 @@ describe('createLog', () => {
|
|
|
130
130
|
context: '70c1d16a-c15f-462b-844b-c2cd379f425f',
|
|
131
131
|
});
|
|
132
132
|
});
|
|
133
|
+
|
|
134
|
+
it('should attach remote to the log', () => {
|
|
135
|
+
const logMessage = createLog().create();
|
|
136
|
+
|
|
137
|
+
const result = logMessage.remote(
|
|
138
|
+
'example message',
|
|
139
|
+
new TenantId('example-tenant'),
|
|
140
|
+
);
|
|
141
|
+
|
|
142
|
+
expect(result).toEqual([
|
|
143
|
+
'example message',
|
|
144
|
+
{ remote: true, tenantId: 'example-tenant' },
|
|
145
|
+
]);
|
|
146
|
+
});
|
|
133
147
|
});
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { getProperty } from '../getProperty';
|
|
2
|
+
|
|
3
|
+
it('should return a passed property', () => {
|
|
4
|
+
const object = { a: [{ b: { c: 3 } }] };
|
|
5
|
+
|
|
6
|
+
const result = getProperty(object, 'a[0].b.c');
|
|
7
|
+
|
|
8
|
+
expect(result).toBe(3);
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
it('should return undefined if property does not exist', () => {
|
|
12
|
+
const object = { a: [{ b: { c: 3 } }] };
|
|
13
|
+
|
|
14
|
+
const result = getProperty(object, 'a[0].z.c');
|
|
15
|
+
|
|
16
|
+
expect(result).toBeUndefined();
|
|
17
|
+
});
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export const getProperty = (
|
|
2
|
+
obj: Record<string | symbol | number, unknown>,
|
|
3
|
+
path: string,
|
|
4
|
+
defaultValue: unknown = undefined,
|
|
5
|
+
): unknown => {
|
|
6
|
+
const travel = (regexp: RegExp) =>
|
|
7
|
+
path
|
|
8
|
+
.split(regexp)
|
|
9
|
+
.filter(Boolean)
|
|
10
|
+
.reduce<unknown>(
|
|
11
|
+
(res, key) =>
|
|
12
|
+
res !== null && res !== undefined
|
|
13
|
+
? (res as Record<string, unknown>)[key]
|
|
14
|
+
: res,
|
|
15
|
+
obj,
|
|
16
|
+
);
|
|
17
|
+
|
|
18
|
+
const result = travel(/[,[\]]+?/) || travel(/[,[\].]+?/);
|
|
19
|
+
|
|
20
|
+
return result === undefined || result === obj ? defaultValue : result;
|
|
21
|
+
};
|
|
@@ -11,13 +11,9 @@ import { DomainEvent } from '../event/DomainEvent';
|
|
|
11
11
|
import { PutItemCommandInput } from '@aws-sdk/client-dynamodb';
|
|
12
12
|
import { eventToDynamoDB } from '../event/DynamoDBEventMapper';
|
|
13
13
|
import { randomUUID } from 'crypto';
|
|
14
|
-
import {
|
|
15
|
-
ScheduleName,
|
|
16
|
-
Scheduler,
|
|
17
|
-
SchedulerOptions,
|
|
18
|
-
} from '../scheduler/Scheduler';
|
|
14
|
+
import { ScheduleName, Scheduler, SchedulerOptions } from './Scheduler';
|
|
19
15
|
import { Logger } from '../logger/Logger';
|
|
20
|
-
import { createLog } from '../logger/LoggerMessage';
|
|
16
|
+
import { createLog, LogMessage } from '../logger/LoggerMessage';
|
|
21
17
|
import { marshall } from '@aws-sdk/util-dynamodb';
|
|
22
18
|
|
|
23
19
|
export type EventBridgeSchedulerConfig = {
|
|
@@ -43,7 +39,7 @@ export class EventBridgeScheduler implements Scheduler {
|
|
|
43
39
|
.attachEventName(domainEvent.name)
|
|
44
40
|
.create(this);
|
|
45
41
|
|
|
46
|
-
this.logger.debug(logMessage('started scheduling'));
|
|
42
|
+
this.logger.debug(...logMessage('started scheduling'));
|
|
47
43
|
// I putted here "the schedule attributes" because in that way we ensure that every PutItem command
|
|
48
44
|
// it will create always a new record in dynamoDB
|
|
49
45
|
const putItemCommand: PutItemCommandInput = {
|
|
@@ -127,7 +123,7 @@ export class EventBridgeScheduler implements Scheduler {
|
|
|
127
123
|
|
|
128
124
|
private async _deleteSchedule(
|
|
129
125
|
scheduleName: ScheduleName,
|
|
130
|
-
logMessage:
|
|
126
|
+
logMessage: LogMessage,
|
|
131
127
|
): Promise<void> {
|
|
132
128
|
const trimmedScheduleName = this.createScheduleName(scheduleName);
|
|
133
129
|
|
|
@@ -146,7 +142,7 @@ export class EventBridgeScheduler implements Scheduler {
|
|
|
146
142
|
await this.client.send(getCommand);
|
|
147
143
|
|
|
148
144
|
this.logger.debug(
|
|
149
|
-
logMessage(
|
|
145
|
+
...logMessage(
|
|
150
146
|
`finished getting schedule, scheduleName: ${trimmedScheduleName}`,
|
|
151
147
|
),
|
|
152
148
|
);
|