@spytecgps/lambda-utils 1.0.0-rc4 → 1.0.0-rc7
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/logger/logger.d.ts +3 -0
- package/dist/logger/logger.js +57 -0
- package/dist/middleware/contextualLogger.d.ts +3 -0
- package/dist/middleware/contextualLogger.js +35 -3
- package/dist/middleware/index.js +2 -2
- package/dist/middleware/ioLogger.js +2 -2
- package/dist/middleware/responseWrapper.js +0 -1
- package/dist/middleware/validation.js +2 -2
- package/dist/types.d.ts +2 -0
- package/package.json +5 -2
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.logger = exports.isTest = exports.isLocal = void 0;
|
|
4
|
+
var winston_1 = require("winston");
|
|
5
|
+
var winston_console_format_1 = require("winston-console-format");
|
|
6
|
+
var combine = winston_1.format.combine, errors = winston_1.format.errors, json = winston_1.format.json, timestamp = winston_1.format.timestamp, colorize = winston_1.format.colorize, padLevels = winston_1.format.padLevels;
|
|
7
|
+
exports.isLocal = function () { return !!process.env.IS_OFFLINE; };
|
|
8
|
+
exports.isTest = function () { return process.env.NODE_ENV == 'test'; };
|
|
9
|
+
var replaceError = function (_a) {
|
|
10
|
+
var label = _a.label, level = _a.level, message = _a.message, stack = _a.stack;
|
|
11
|
+
return ({
|
|
12
|
+
label: label,
|
|
13
|
+
level: level,
|
|
14
|
+
message: message,
|
|
15
|
+
stack: stack,
|
|
16
|
+
});
|
|
17
|
+
};
|
|
18
|
+
var replacer = function (_key, value) {
|
|
19
|
+
// @ts-ignore
|
|
20
|
+
return value instanceof Error ? replaceError(value) : value;
|
|
21
|
+
};
|
|
22
|
+
function getDevFormat() {
|
|
23
|
+
return combine(timestamp(), colorize({ all: true }), padLevels(), winston_console_format_1.consoleFormat({
|
|
24
|
+
showMeta: true,
|
|
25
|
+
metaStrip: [
|
|
26
|
+
'timestamp',
|
|
27
|
+
'service',
|
|
28
|
+
'requestId',
|
|
29
|
+
'x-correlation-id',
|
|
30
|
+
'function',
|
|
31
|
+
'contextUserId',
|
|
32
|
+
'contextUserEmail',
|
|
33
|
+
],
|
|
34
|
+
inspectOptions: {
|
|
35
|
+
depth: Infinity,
|
|
36
|
+
colors: true,
|
|
37
|
+
maxArrayLength: Infinity,
|
|
38
|
+
breakLength: 120,
|
|
39
|
+
compact: Infinity,
|
|
40
|
+
},
|
|
41
|
+
}));
|
|
42
|
+
}
|
|
43
|
+
function getProductionFormat() {
|
|
44
|
+
return combine(errors({ stack: true }), timestamp(), json({ replacer: replacer }));
|
|
45
|
+
}
|
|
46
|
+
function getFormat() {
|
|
47
|
+
if (exports.isTest() || exports.isLocal()) {
|
|
48
|
+
return getDevFormat();
|
|
49
|
+
}
|
|
50
|
+
return getProductionFormat();
|
|
51
|
+
}
|
|
52
|
+
exports.logger = winston_1.createLogger({
|
|
53
|
+
level: exports.isTest() || exports.isLocal() ? 'info' : 'verbose',
|
|
54
|
+
defaultMeta: {},
|
|
55
|
+
format: getFormat(),
|
|
56
|
+
transports: [new winston_1.transports.Console()],
|
|
57
|
+
});
|
|
@@ -37,13 +37,45 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
37
37
|
};
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
39
|
exports.contextualLoggerMiddleware = exports.contextualLogger = void 0;
|
|
40
|
-
var
|
|
40
|
+
var logger_1 = require("../logger/logger");
|
|
41
|
+
var AMAZON_TRACE_ID = '_X_AMZN_TRACE_ID';
|
|
42
|
+
var CORRELATION_HEADER = 'x-correlation-';
|
|
43
|
+
var CORRELATION_ID = CORRELATION_HEADER + "id";
|
|
44
|
+
var CORRELATION_TRACE_ID = CORRELATION_HEADER + "trace-id";
|
|
45
|
+
/**
|
|
46
|
+
* Adapted from https://github.com/FormidableLabs/pino-lambda/blob/master/src/request.ts
|
|
47
|
+
*/
|
|
41
48
|
exports.contextualLogger = function () {
|
|
49
|
+
var ctx = logger_1.logger.defaultMeta;
|
|
42
50
|
var before = function (_a) {
|
|
43
51
|
var event = _a.event, context = _a.context;
|
|
44
52
|
return __awaiter(void 0, void 0, void 0, function () {
|
|
45
|
-
|
|
46
|
-
|
|
53
|
+
var apiEvent_1;
|
|
54
|
+
var _b, _c, _d, _e, _f, _g, _h;
|
|
55
|
+
return __generator(this, function (_j) {
|
|
56
|
+
if (context) {
|
|
57
|
+
ctx.requestId = context === null || context === void 0 ? void 0 : context.awsRequestId;
|
|
58
|
+
ctx.function = context.functionName;
|
|
59
|
+
}
|
|
60
|
+
if (!ctx.requestId) {
|
|
61
|
+
ctx.requestId = (_b = event === null || event === void 0 ? void 0 : event.requestContext) === null || _b === void 0 ? void 0 : _b.requestId;
|
|
62
|
+
}
|
|
63
|
+
if (Object(event).hasOwnProperty('headers')) {
|
|
64
|
+
apiEvent_1 = event;
|
|
65
|
+
Object.keys(apiEvent_1).forEach(function (header) {
|
|
66
|
+
if (header.toLowerCase().startsWith(CORRELATION_HEADER)) {
|
|
67
|
+
ctx[header] = apiEvent_1[header];
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
if (process.env[AMAZON_TRACE_ID]) {
|
|
72
|
+
ctx[CORRELATION_TRACE_ID] = process.env[AMAZON_TRACE_ID];
|
|
73
|
+
}
|
|
74
|
+
if (!ctx[CORRELATION_ID]) {
|
|
75
|
+
ctx[CORRELATION_ID] = context === null || context === void 0 ? void 0 : context.awsRequestId;
|
|
76
|
+
}
|
|
77
|
+
ctx.contextUserId = (_e = (_d = (_c = event === null || event === void 0 ? void 0 : event.requestContext) === null || _c === void 0 ? void 0 : _c.authorizer) === null || _d === void 0 ? void 0 : _d.claims) === null || _e === void 0 ? void 0 : _e.userId;
|
|
78
|
+
ctx.contextUserEmail = (_h = (_g = (_f = event === null || event === void 0 ? void 0 : event.requestContext) === null || _f === void 0 ? void 0 : _f.authorizer) === null || _g === void 0 ? void 0 : _g.claims) === null || _h === void 0 ? void 0 : _h.email;
|
|
47
79
|
return [2 /*return*/];
|
|
48
80
|
});
|
|
49
81
|
});
|
package/dist/middleware/index.js
CHANGED
|
@@ -20,8 +20,8 @@ var contextualLogger_1 = require("./contextualLogger");
|
|
|
20
20
|
var ioLogger_1 = require("./ioLogger");
|
|
21
21
|
var validation_1 = require("./validation");
|
|
22
22
|
Object.defineProperty(exports, "validatorMiddleware", { enumerable: true, get: function () { return validation_1.validatorMiddleware; } });
|
|
23
|
-
var sdk_1 = require("@spytecgps/sdk");
|
|
24
23
|
var responseWrapper_1 = require("./responseWrapper");
|
|
24
|
+
var logger_1 = require("../logger/logger");
|
|
25
25
|
var baseMiddlewares = [contextualLogger_1.contextualLoggerMiddleware, ioLogger_1.ioLoggerMiddleware];
|
|
26
26
|
var apiGatewayMiddlewares = [
|
|
27
27
|
http_response_serializer_1.default({
|
|
@@ -51,7 +51,7 @@ var apiGatewayMiddlewares = [
|
|
|
51
51
|
default: 'application/json',
|
|
52
52
|
}),
|
|
53
53
|
http_error_handler_1.default({
|
|
54
|
-
logger: function (error) { return
|
|
54
|
+
logger: function (error) { return logger_1.logger.error(error); },
|
|
55
55
|
}),
|
|
56
56
|
responseWrapper_1.responseWrapperMiddleware(),
|
|
57
57
|
];
|
|
@@ -5,10 +5,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.ioLoggerMiddleware = void 0;
|
|
7
7
|
var input_output_logger_1 = __importDefault(require("@middy/input-output-logger"));
|
|
8
|
-
var
|
|
8
|
+
var logger_1 = require("../logger/logger");
|
|
9
9
|
exports.ioLoggerMiddleware = input_output_logger_1.default({
|
|
10
10
|
logger: function (req) {
|
|
11
11
|
var message = (req === null || req === void 0 ? void 0 : req.event) ? 'event' : 'response';
|
|
12
|
-
|
|
12
|
+
logger_1.logger.info(message, req);
|
|
13
13
|
},
|
|
14
14
|
});
|
|
@@ -4,7 +4,6 @@ exports.responseWrapperMiddleware = void 0;
|
|
|
4
4
|
var wrappers_1 = require("../wrappers");
|
|
5
5
|
exports.responseWrapperMiddleware = function () {
|
|
6
6
|
var responseWrapperMiddlewareAfter = function (req) {
|
|
7
|
-
console.log(req);
|
|
8
7
|
req.response = wrappers_1.buildProxyResult(req.response);
|
|
9
8
|
};
|
|
10
9
|
return {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.validatorMiddleware = void 0;
|
|
4
|
-
var sdk_1 = require("@spytecgps/sdk");
|
|
5
4
|
var errors_1 = require("../errors");
|
|
5
|
+
var logger_1 = require("../logger/logger");
|
|
6
6
|
exports.validatorMiddleware = function (_a) {
|
|
7
7
|
var schema = _a.schema, _b = _a.allowUnknown, allowUnknown = _b === void 0 ? true : _b;
|
|
8
8
|
var validatorMiddlewareBefore = function (request) {
|
|
@@ -16,7 +16,7 @@ exports.validatorMiddleware = function (_a) {
|
|
|
16
16
|
},
|
|
17
17
|
}), error = _a.error, value = _a.value;
|
|
18
18
|
if (error) {
|
|
19
|
-
|
|
19
|
+
logger_1.logger.error('Validation error', { error: error });
|
|
20
20
|
throw error.isJoi ? new errors_1.BadRequestError(error.message) : error;
|
|
21
21
|
}
|
|
22
22
|
request.event = value;
|
package/dist/types.d.ts
CHANGED
|
@@ -7,10 +7,12 @@ export interface SpytecAuthorizedResources {
|
|
|
7
7
|
devices: string[];
|
|
8
8
|
}
|
|
9
9
|
export declare type AuthClass = 'user' | 'client' | 'system';
|
|
10
|
+
export declare type DevicesAccess = 'full' | 'limited';
|
|
10
11
|
export interface SpytecAuthContext {
|
|
11
12
|
type: AuthClass;
|
|
12
13
|
userId?: string;
|
|
13
14
|
clientId: number;
|
|
15
|
+
devicesAccess: DevicesAccess;
|
|
14
16
|
resources: SpytecAuthorizedResources;
|
|
15
17
|
principalId: string;
|
|
16
18
|
scope?: string;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@spytecgps/lambda-utils",
|
|
3
|
-
"version": "1.0.0-
|
|
3
|
+
"version": "1.0.0-rc7",
|
|
4
4
|
"description": "Lambda Utils",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -32,9 +32,12 @@
|
|
|
32
32
|
"@middy/input-output-logger": "^2.5.7",
|
|
33
33
|
"@spytecgps/sdk": "0.5.34",
|
|
34
34
|
"joi": "^17.4.0",
|
|
35
|
+
"logform": "^2.4.0",
|
|
35
36
|
"moment": "2.29.1",
|
|
36
37
|
"moment-timezone": "0.5.33",
|
|
37
|
-
"qs": "^6.10.1"
|
|
38
|
+
"qs": "^6.10.1",
|
|
39
|
+
"winston": "^3.7.2",
|
|
40
|
+
"winston-console-format": "^1.0.8"
|
|
38
41
|
},
|
|
39
42
|
"devDependencies": {
|
|
40
43
|
"@types/aws-lambda": "^8.10.76",
|