@spytecgps/lambda-utils 2.3.2 → 2.3.3
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/package.json +1 -1
- package/dist/errors/BadRequestError.js +0 -28
- package/dist/errors/BaseError.js +0 -24
- package/dist/errors/HttpError.js +0 -32
- package/dist/errors/NotFoundError.js +0 -28
- package/dist/errors/UnauthorizedError.js +0 -28
- package/dist/errors/index.js +0 -12
- package/dist/logger/logger.d.ts +0 -3
- package/dist/logger/logger.js +0 -57
- package/dist/middleware/contextualLogger.js +0 -87
- package/dist/middleware/index.js +0 -62
- package/dist/middleware/ioLogger.js +0 -14
- package/dist/middleware/middleware.test.js +0 -167
- package/dist/middleware/responseWrapper.js +0 -12
- package/dist/middleware/types.js +0 -2
- package/dist/middleware/validation.js +0 -27
- package/dist/types.js +0 -2
- package/dist/validation/custom.js +0 -122
- package/dist/validation/index.js +0 -20
- package/dist/validation/requestContext.js +0 -54
- package/dist/validation/validateEvent.js +0 -25
- package/dist/wrappers/apiGatewayEventWrapper.js +0 -82
- package/dist/wrappers/index.js +0 -21
- package/dist/wrappers/response.js +0 -35
- package/dist/wrappers/sqsEventWrapper.js +0 -116
package/package.json
CHANGED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __extends = (this && this.__extends) || (function () {
|
|
3
|
-
var extendStatics = function (d, b) {
|
|
4
|
-
extendStatics = Object.setPrototypeOf ||
|
|
5
|
-
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
6
|
-
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
|
|
7
|
-
return extendStatics(d, b);
|
|
8
|
-
};
|
|
9
|
-
return function (d, b) {
|
|
10
|
-
extendStatics(d, b);
|
|
11
|
-
function __() { this.constructor = d; }
|
|
12
|
-
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
13
|
-
};
|
|
14
|
-
})();
|
|
15
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
-
var HttpError_1 = require("./HttpError");
|
|
17
|
-
var BadRequestError = /** @class */ (function (_super) {
|
|
18
|
-
__extends(BadRequestError, _super);
|
|
19
|
-
function BadRequestError() {
|
|
20
|
-
var _this = _super !== null && _super.apply(this, arguments) || this;
|
|
21
|
-
_this.code = 400;
|
|
22
|
-
_this.statusCode = 400;
|
|
23
|
-
_this.name = 'BadRequestError';
|
|
24
|
-
return _this;
|
|
25
|
-
}
|
|
26
|
-
return BadRequestError;
|
|
27
|
-
}(HttpError_1.HttpError));
|
|
28
|
-
exports.default = BadRequestError;
|
package/dist/errors/BaseError.js
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __extends = (this && this.__extends) || (function () {
|
|
3
|
-
var extendStatics = function (d, b) {
|
|
4
|
-
extendStatics = Object.setPrototypeOf ||
|
|
5
|
-
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
6
|
-
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
|
|
7
|
-
return extendStatics(d, b);
|
|
8
|
-
};
|
|
9
|
-
return function (d, b) {
|
|
10
|
-
extendStatics(d, b);
|
|
11
|
-
function __() { this.constructor = d; }
|
|
12
|
-
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
13
|
-
};
|
|
14
|
-
})();
|
|
15
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
-
exports.BaseError = void 0;
|
|
17
|
-
var BaseError = /** @class */ (function (_super) {
|
|
18
|
-
__extends(BaseError, _super);
|
|
19
|
-
function BaseError() {
|
|
20
|
-
return _super !== null && _super.apply(this, arguments) || this;
|
|
21
|
-
}
|
|
22
|
-
return BaseError;
|
|
23
|
-
}(Error));
|
|
24
|
-
exports.BaseError = BaseError;
|
package/dist/errors/HttpError.js
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __extends = (this && this.__extends) || (function () {
|
|
3
|
-
var extendStatics = function (d, b) {
|
|
4
|
-
extendStatics = Object.setPrototypeOf ||
|
|
5
|
-
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
6
|
-
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
|
|
7
|
-
return extendStatics(d, b);
|
|
8
|
-
};
|
|
9
|
-
return function (d, b) {
|
|
10
|
-
extendStatics(d, b);
|
|
11
|
-
function __() { this.constructor = d; }
|
|
12
|
-
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
13
|
-
};
|
|
14
|
-
})();
|
|
15
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
-
exports.BaseError = exports.HttpError = void 0;
|
|
17
|
-
var HttpError = /** @class */ (function (_super) {
|
|
18
|
-
__extends(HttpError, _super);
|
|
19
|
-
function HttpError() {
|
|
20
|
-
return _super !== null && _super.apply(this, arguments) || this;
|
|
21
|
-
}
|
|
22
|
-
return HttpError;
|
|
23
|
-
}(Error));
|
|
24
|
-
exports.HttpError = HttpError;
|
|
25
|
-
var BaseError = /** @class */ (function (_super) {
|
|
26
|
-
__extends(BaseError, _super);
|
|
27
|
-
function BaseError() {
|
|
28
|
-
return _super !== null && _super.apply(this, arguments) || this;
|
|
29
|
-
}
|
|
30
|
-
return BaseError;
|
|
31
|
-
}(Error));
|
|
32
|
-
exports.BaseError = BaseError;
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __extends = (this && this.__extends) || (function () {
|
|
3
|
-
var extendStatics = function (d, b) {
|
|
4
|
-
extendStatics = Object.setPrototypeOf ||
|
|
5
|
-
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
6
|
-
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
|
|
7
|
-
return extendStatics(d, b);
|
|
8
|
-
};
|
|
9
|
-
return function (d, b) {
|
|
10
|
-
extendStatics(d, b);
|
|
11
|
-
function __() { this.constructor = d; }
|
|
12
|
-
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
13
|
-
};
|
|
14
|
-
})();
|
|
15
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
-
var HttpError_1 = require("./HttpError");
|
|
17
|
-
var NotFoundError = /** @class */ (function (_super) {
|
|
18
|
-
__extends(NotFoundError, _super);
|
|
19
|
-
function NotFoundError() {
|
|
20
|
-
var _this = _super !== null && _super.apply(this, arguments) || this;
|
|
21
|
-
_this.code = 404;
|
|
22
|
-
_this.statusCode = 404;
|
|
23
|
-
_this.name = 'NotFoundError';
|
|
24
|
-
return _this;
|
|
25
|
-
}
|
|
26
|
-
return NotFoundError;
|
|
27
|
-
}(HttpError_1.HttpError));
|
|
28
|
-
exports.default = NotFoundError;
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __extends = (this && this.__extends) || (function () {
|
|
3
|
-
var extendStatics = function (d, b) {
|
|
4
|
-
extendStatics = Object.setPrototypeOf ||
|
|
5
|
-
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
6
|
-
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
|
|
7
|
-
return extendStatics(d, b);
|
|
8
|
-
};
|
|
9
|
-
return function (d, b) {
|
|
10
|
-
extendStatics(d, b);
|
|
11
|
-
function __() { this.constructor = d; }
|
|
12
|
-
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
13
|
-
};
|
|
14
|
-
})();
|
|
15
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
-
var HttpError_1 = require("./HttpError");
|
|
17
|
-
var UnauthorizedError = /** @class */ (function (_super) {
|
|
18
|
-
__extends(UnauthorizedError, _super);
|
|
19
|
-
function UnauthorizedError() {
|
|
20
|
-
var _this = _super !== null && _super.apply(this, arguments) || this;
|
|
21
|
-
_this.code = 401;
|
|
22
|
-
_this.statusCode = 401;
|
|
23
|
-
_this.name = 'UnauthorizedError';
|
|
24
|
-
return _this;
|
|
25
|
-
}
|
|
26
|
-
return UnauthorizedError;
|
|
27
|
-
}(HttpError_1.HttpError));
|
|
28
|
-
exports.default = UnauthorizedError;
|
package/dist/errors/index.js
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
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.UnauthorizedError = exports.NotFoundError = exports.BadRequestError = void 0;
|
|
7
|
-
var BadRequestError_1 = __importDefault(require("./BadRequestError"));
|
|
8
|
-
exports.BadRequestError = BadRequestError_1.default;
|
|
9
|
-
var NotFoundError_1 = __importDefault(require("./NotFoundError"));
|
|
10
|
-
exports.NotFoundError = NotFoundError_1.default;
|
|
11
|
-
var UnauthorizedError_1 = __importDefault(require("./UnauthorizedError"));
|
|
12
|
-
exports.UnauthorizedError = UnauthorizedError_1.default;
|
package/dist/logger/logger.d.ts
DELETED
package/dist/logger/logger.js
DELETED
|
@@ -1,57 +0,0 @@
|
|
|
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
|
-
});
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
13
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
-
function step(op) {
|
|
16
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
-
while (_) try {
|
|
18
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
-
switch (op[0]) {
|
|
21
|
-
case 0: case 1: t = op; break;
|
|
22
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
-
default:
|
|
26
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
-
if (t[2]) _.ops.pop();
|
|
31
|
-
_.trys.pop(); continue;
|
|
32
|
-
}
|
|
33
|
-
op = body.call(thisArg, _);
|
|
34
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.contextualLoggerMiddleware = exports.contextualLogger = void 0;
|
|
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
|
-
*/
|
|
48
|
-
exports.contextualLogger = function () {
|
|
49
|
-
var ctx = logger_1.logger.defaultMeta;
|
|
50
|
-
var before = function (_a) {
|
|
51
|
-
var event = _a.event, context = _a.context;
|
|
52
|
-
return __awaiter(void 0, void 0, void 0, function () {
|
|
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;
|
|
79
|
-
return [2 /*return*/];
|
|
80
|
-
});
|
|
81
|
-
});
|
|
82
|
-
};
|
|
83
|
-
return {
|
|
84
|
-
before: before,
|
|
85
|
-
};
|
|
86
|
-
};
|
|
87
|
-
exports.contextualLoggerMiddleware = exports.contextualLogger();
|
package/dist/middleware/index.js
DELETED
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __spreadArrays = (this && this.__spreadArrays) || function () {
|
|
3
|
-
for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
|
|
4
|
-
for (var r = Array(s), k = 0, i = 0; i < il; i++)
|
|
5
|
-
for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
|
|
6
|
-
r[k] = a[j];
|
|
7
|
-
return r;
|
|
8
|
-
};
|
|
9
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
10
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
11
|
-
};
|
|
12
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
-
exports.apiGatewayMiddlewares = exports.validatorMiddleware = exports.httpResponseSerializer = exports.httpErrorHandler = exports.apiGatewayMiddy = exports.middy = void 0;
|
|
14
|
-
var core_1 = __importDefault(require("@middy/core"));
|
|
15
|
-
var http_error_handler_1 = __importDefault(require("@middy/http-error-handler"));
|
|
16
|
-
exports.httpErrorHandler = http_error_handler_1.default;
|
|
17
|
-
var http_response_serializer_1 = __importDefault(require("@middy/http-response-serializer"));
|
|
18
|
-
exports.httpResponseSerializer = http_response_serializer_1.default;
|
|
19
|
-
var contextualLogger_1 = require("./contextualLogger");
|
|
20
|
-
var ioLogger_1 = require("./ioLogger");
|
|
21
|
-
var validation_1 = require("./validation");
|
|
22
|
-
Object.defineProperty(exports, "validatorMiddleware", { enumerable: true, get: function () { return validation_1.validatorMiddleware; } });
|
|
23
|
-
var responseWrapper_1 = require("./responseWrapper");
|
|
24
|
-
var logger_1 = require("../logger/logger");
|
|
25
|
-
var baseMiddlewares = [contextualLogger_1.contextualLoggerMiddleware, ioLogger_1.ioLoggerMiddleware];
|
|
26
|
-
var apiGatewayMiddlewares = [
|
|
27
|
-
http_response_serializer_1.default({
|
|
28
|
-
serializers: [
|
|
29
|
-
{
|
|
30
|
-
regex: /^application\/xml$/,
|
|
31
|
-
serializer: function (_a) {
|
|
32
|
-
var body = _a.body;
|
|
33
|
-
return "<message>" + body + "</message>";
|
|
34
|
-
},
|
|
35
|
-
},
|
|
36
|
-
{
|
|
37
|
-
regex: /^application\/json$/,
|
|
38
|
-
serializer: function (_a) {
|
|
39
|
-
var body = _a.body;
|
|
40
|
-
return JSON.stringify(body);
|
|
41
|
-
},
|
|
42
|
-
},
|
|
43
|
-
{
|
|
44
|
-
regex: /^text\/plain$/,
|
|
45
|
-
serializer: function (_a) {
|
|
46
|
-
var body = _a.body;
|
|
47
|
-
return body;
|
|
48
|
-
},
|
|
49
|
-
},
|
|
50
|
-
],
|
|
51
|
-
default: 'application/json',
|
|
52
|
-
}),
|
|
53
|
-
http_error_handler_1.default({
|
|
54
|
-
logger: function (error) { return logger_1.logger.error(error); },
|
|
55
|
-
}),
|
|
56
|
-
responseWrapper_1.responseWrapperMiddleware(),
|
|
57
|
-
];
|
|
58
|
-
exports.apiGatewayMiddlewares = apiGatewayMiddlewares;
|
|
59
|
-
var middy = function (handler) { return core_1.default(handler).use(__spreadArrays(baseMiddlewares)); };
|
|
60
|
-
exports.middy = middy;
|
|
61
|
-
var apiGatewayMiddy = function (handler) { return core_1.default(handler).use(__spreadArrays(baseMiddlewares, apiGatewayMiddlewares)); };
|
|
62
|
-
exports.apiGatewayMiddy = apiGatewayMiddy;
|
|
@@ -1,14 +0,0 @@
|
|
|
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.ioLoggerMiddleware = void 0;
|
|
7
|
-
var input_output_logger_1 = __importDefault(require("@middy/input-output-logger"));
|
|
8
|
-
var logger_1 = require("../logger/logger");
|
|
9
|
-
exports.ioLoggerMiddleware = input_output_logger_1.default({
|
|
10
|
-
logger: function (req) {
|
|
11
|
-
var message = (req === null || req === void 0 ? void 0 : req.event) ? 'event' : 'response';
|
|
12
|
-
logger_1.logger.info(message, req);
|
|
13
|
-
},
|
|
14
|
-
});
|
|
@@ -1,167 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
13
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
-
function step(op) {
|
|
16
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
-
while (_) try {
|
|
18
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
-
switch (op[0]) {
|
|
21
|
-
case 0: case 1: t = op; break;
|
|
22
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
-
default:
|
|
26
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
-
if (t[2]) _.ops.pop();
|
|
31
|
-
_.trys.pop(); continue;
|
|
32
|
-
}
|
|
33
|
-
op = body.call(thisArg, _);
|
|
34
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
39
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
40
|
-
};
|
|
41
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
-
var index_1 = require("./index");
|
|
43
|
-
var joi_1 = __importDefault(require("joi"));
|
|
44
|
-
var validation_1 = require("./validation");
|
|
45
|
-
var errors_1 = require("../errors");
|
|
46
|
-
var responseWrapper_1 = require("./responseWrapper");
|
|
47
|
-
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
48
|
-
var webEvent = require('./mocks/webEvent.json');
|
|
49
|
-
var context = {};
|
|
50
|
-
var callback = jest.fn();
|
|
51
|
-
var clone = function (obj) { return JSON.parse(JSON.stringify(obj)); };
|
|
52
|
-
describe('Middleware', function () {
|
|
53
|
-
var schema = joi_1.default.object({
|
|
54
|
-
queryStringParameters: joi_1.default.object({
|
|
55
|
-
startDate: joi_1.default.date().required(),
|
|
56
|
-
endDate: joi_1.default.date()
|
|
57
|
-
.default(function () { return new Date(); })
|
|
58
|
-
.greater(joi_1.default.ref('startDate')),
|
|
59
|
-
}),
|
|
60
|
-
});
|
|
61
|
-
describe('APIGatewayProxyHandler', function () {
|
|
62
|
-
var handler = function (event) { return __awaiter(void 0, void 0, void 0, function () {
|
|
63
|
-
return __generator(this, function (_a) {
|
|
64
|
-
console.log('ok done');
|
|
65
|
-
return [2 /*return*/, {
|
|
66
|
-
statusCode: 200,
|
|
67
|
-
body: {
|
|
68
|
-
year: event.queryStringParameters.startDate.getFullYear(),
|
|
69
|
-
yes: ['a', 'b', 'c'],
|
|
70
|
-
},
|
|
71
|
-
}];
|
|
72
|
-
});
|
|
73
|
-
}); };
|
|
74
|
-
var handlerWithError = function (_event) { return __awaiter(void 0, void 0, void 0, function () {
|
|
75
|
-
return __generator(this, function (_a) {
|
|
76
|
-
console.log('here i am');
|
|
77
|
-
throw new errors_1.UnauthorizedError('oh no');
|
|
78
|
-
});
|
|
79
|
-
}); };
|
|
80
|
-
var middifiedHandler = index_1.apiGatewayMiddy(handler).use(validation_1.validatorMiddleware({ schema: schema }));
|
|
81
|
-
var middifiedHandlerWithError = index_1.apiGatewayMiddy(handlerWithError).use(validation_1.validatorMiddleware({ schema: schema }));
|
|
82
|
-
it('should work', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
83
|
-
var result;
|
|
84
|
-
return __generator(this, function (_a) {
|
|
85
|
-
switch (_a.label) {
|
|
86
|
-
case 0: return [4 /*yield*/, middifiedHandler(webEvent, context, callback)];
|
|
87
|
-
case 1:
|
|
88
|
-
result = _a.sent();
|
|
89
|
-
console.log(result);
|
|
90
|
-
return [2 /*return*/];
|
|
91
|
-
}
|
|
92
|
-
});
|
|
93
|
-
}); });
|
|
94
|
-
it('should throw', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
95
|
-
var invalidEvent, result;
|
|
96
|
-
return __generator(this, function (_a) {
|
|
97
|
-
switch (_a.label) {
|
|
98
|
-
case 0:
|
|
99
|
-
invalidEvent = clone(webEvent);
|
|
100
|
-
invalidEvent.queryStringParameters.startDate = 'asdf';
|
|
101
|
-
return [4 /*yield*/, middifiedHandler(invalidEvent, context, callback)];
|
|
102
|
-
case 1:
|
|
103
|
-
result = _a.sent();
|
|
104
|
-
console.log(result);
|
|
105
|
-
return [2 /*return*/];
|
|
106
|
-
}
|
|
107
|
-
});
|
|
108
|
-
}); });
|
|
109
|
-
it('should error', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
110
|
-
var result;
|
|
111
|
-
return __generator(this, function (_a) {
|
|
112
|
-
switch (_a.label) {
|
|
113
|
-
case 0: return [4 /*yield*/, middifiedHandlerWithError(webEvent, context, callback)];
|
|
114
|
-
case 1:
|
|
115
|
-
result = _a.sent();
|
|
116
|
-
console.log(result);
|
|
117
|
-
return [2 /*return*/];
|
|
118
|
-
}
|
|
119
|
-
});
|
|
120
|
-
}); });
|
|
121
|
-
});
|
|
122
|
-
describe('responseWrapperMiddleware', function () {
|
|
123
|
-
var handler = function (_event) { return __awaiter(void 0, void 0, void 0, function () {
|
|
124
|
-
return __generator(this, function (_a) {
|
|
125
|
-
console.log('ok done');
|
|
126
|
-
return [2 /*return*/, {
|
|
127
|
-
data: {
|
|
128
|
-
abc: 123,
|
|
129
|
-
},
|
|
130
|
-
}];
|
|
131
|
-
});
|
|
132
|
-
}); };
|
|
133
|
-
var middifiedHandler = index_1.apiGatewayMiddy(handler).use(responseWrapper_1.responseWrapperMiddleware());
|
|
134
|
-
it('should work', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
135
|
-
var result;
|
|
136
|
-
return __generator(this, function (_a) {
|
|
137
|
-
switch (_a.label) {
|
|
138
|
-
case 0: return [4 /*yield*/, middifiedHandler(webEvent, context, callback)];
|
|
139
|
-
case 1:
|
|
140
|
-
result = _a.sent();
|
|
141
|
-
console.log(result);
|
|
142
|
-
return [2 /*return*/];
|
|
143
|
-
}
|
|
144
|
-
});
|
|
145
|
-
}); });
|
|
146
|
-
});
|
|
147
|
-
describe('responseWrapperMiddleware error', function () {
|
|
148
|
-
var handler = function (_event) { return __awaiter(void 0, void 0, void 0, function () {
|
|
149
|
-
return __generator(this, function (_a) {
|
|
150
|
-
throw new errors_1.NotFoundError();
|
|
151
|
-
});
|
|
152
|
-
}); };
|
|
153
|
-
var middifiedHandler = index_1.apiGatewayMiddy(handler).use(responseWrapper_1.responseWrapperMiddleware());
|
|
154
|
-
it('should work', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
155
|
-
var result;
|
|
156
|
-
return __generator(this, function (_a) {
|
|
157
|
-
switch (_a.label) {
|
|
158
|
-
case 0: return [4 /*yield*/, middifiedHandler(webEvent, context, callback)];
|
|
159
|
-
case 1:
|
|
160
|
-
result = _a.sent();
|
|
161
|
-
console.log(result);
|
|
162
|
-
return [2 /*return*/];
|
|
163
|
-
}
|
|
164
|
-
});
|
|
165
|
-
}); });
|
|
166
|
-
});
|
|
167
|
-
});
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.responseWrapperMiddleware = void 0;
|
|
4
|
-
var wrappers_1 = require("../wrappers");
|
|
5
|
-
exports.responseWrapperMiddleware = function () {
|
|
6
|
-
var responseWrapperMiddlewareAfter = function (req) {
|
|
7
|
-
req.response = wrappers_1.buildProxyResult(req.response);
|
|
8
|
-
};
|
|
9
|
-
return {
|
|
10
|
-
after: responseWrapperMiddlewareAfter,
|
|
11
|
-
};
|
|
12
|
-
};
|
package/dist/middleware/types.js
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.validatorMiddleware = void 0;
|
|
4
|
-
var errors_1 = require("../errors");
|
|
5
|
-
var logger_1 = require("../logger/logger");
|
|
6
|
-
exports.validatorMiddleware = function (_a) {
|
|
7
|
-
var schema = _a.schema, _b = _a.allowUnknown, allowUnknown = _b === void 0 ? true : _b;
|
|
8
|
-
var validatorMiddlewareBefore = function (request) {
|
|
9
|
-
var _a = schema.validate(request.event, {
|
|
10
|
-
allowUnknown: allowUnknown,
|
|
11
|
-
errors: {
|
|
12
|
-
label: 'key',
|
|
13
|
-
wrap: {
|
|
14
|
-
label: false,
|
|
15
|
-
},
|
|
16
|
-
},
|
|
17
|
-
}), error = _a.error, value = _a.value;
|
|
18
|
-
if (error) {
|
|
19
|
-
logger_1.logger.error('Validation error', { error: error });
|
|
20
|
-
throw error.isJoi ? new errors_1.BadRequestError(error.message) : error;
|
|
21
|
-
}
|
|
22
|
-
request.event = value;
|
|
23
|
-
};
|
|
24
|
-
return {
|
|
25
|
-
before: validatorMiddlewareBefore,
|
|
26
|
-
};
|
|
27
|
-
};
|
package/dist/types.js
DELETED
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
-
}) : (function(o, m, k, k2) {
|
|
6
|
-
if (k2 === undefined) k2 = k;
|
|
7
|
-
o[k2] = m[k];
|
|
8
|
-
}));
|
|
9
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
-
}) : function(o, v) {
|
|
12
|
-
o["default"] = v;
|
|
13
|
-
});
|
|
14
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
-
if (mod && mod.__esModule) return mod;
|
|
16
|
-
var result = {};
|
|
17
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
-
__setModuleDefault(result, mod);
|
|
19
|
-
return result;
|
|
20
|
-
};
|
|
21
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
-
exports.SpytecJoi = exports.iccidSchema = exports.imeiSchema = exports.urlEncoded = exports.json = void 0;
|
|
23
|
-
var Joi = __importStar(require("joi"));
|
|
24
|
-
var qs = __importStar(require("qs"));
|
|
25
|
-
var moment = __importStar(require("moment-timezone"));
|
|
26
|
-
exports.json = Joi.extend(function (joi) {
|
|
27
|
-
return {
|
|
28
|
-
type: 'object',
|
|
29
|
-
base: joi.object(),
|
|
30
|
-
messages: {
|
|
31
|
-
'json.valid': 'must be valid JSON',
|
|
32
|
-
},
|
|
33
|
-
coerce: function (value) {
|
|
34
|
-
try {
|
|
35
|
-
return { value: JSON.parse(value) };
|
|
36
|
-
}
|
|
37
|
-
catch (err) {
|
|
38
|
-
return null;
|
|
39
|
-
}
|
|
40
|
-
},
|
|
41
|
-
validate: function (value, helpers) {
|
|
42
|
-
if (!value) {
|
|
43
|
-
return { value: value, errors: helpers.error('json.valid') };
|
|
44
|
-
}
|
|
45
|
-
return { value: value };
|
|
46
|
-
},
|
|
47
|
-
};
|
|
48
|
-
});
|
|
49
|
-
exports.urlEncoded = Joi.extend(function (joi) {
|
|
50
|
-
return {
|
|
51
|
-
type: 'object',
|
|
52
|
-
base: joi.object(),
|
|
53
|
-
coerce: function (value) {
|
|
54
|
-
return { value: qs.parse(value) };
|
|
55
|
-
},
|
|
56
|
-
};
|
|
57
|
-
});
|
|
58
|
-
exports.imeiSchema = Joi.string()
|
|
59
|
-
.regex(/^\d{15,16}$/)
|
|
60
|
-
.error(new Error('Invalid IMEI'));
|
|
61
|
-
exports.iccidSchema = Joi.string()
|
|
62
|
-
.regex(/^[0-9A-Za-z]{18,22}$/)
|
|
63
|
-
.error(new Error('Invalid ICCID'));
|
|
64
|
-
exports.SpytecJoi = Joi.extend(function (joi) { return ({
|
|
65
|
-
type: 'imei',
|
|
66
|
-
base: joi
|
|
67
|
-
.string()
|
|
68
|
-
.regex(/^\d{15,16}$/)
|
|
69
|
-
.error(new Error('Invalid IMEI')),
|
|
70
|
-
}); }, function (joi) { return ({
|
|
71
|
-
type: 'iccid',
|
|
72
|
-
base: joi
|
|
73
|
-
.string()
|
|
74
|
-
.regex(/^[0-9A-Za-z]{18,22}$/)
|
|
75
|
-
.error(new Error('Invalid ICCID')),
|
|
76
|
-
}); }, function (joi) { return ({
|
|
77
|
-
type: 'urlEncodedObject',
|
|
78
|
-
base: joi.object(),
|
|
79
|
-
coerce: function (value) {
|
|
80
|
-
return { value: qs.parse(value) };
|
|
81
|
-
},
|
|
82
|
-
}); }, function (joi) { return ({
|
|
83
|
-
type: 'jsonObject',
|
|
84
|
-
base: joi.object(),
|
|
85
|
-
messages: {
|
|
86
|
-
'json.valid': 'must be valid JSON',
|
|
87
|
-
},
|
|
88
|
-
coerce: function (value) {
|
|
89
|
-
try {
|
|
90
|
-
return { value: JSON.parse(value) };
|
|
91
|
-
}
|
|
92
|
-
catch (err) {
|
|
93
|
-
return null;
|
|
94
|
-
}
|
|
95
|
-
},
|
|
96
|
-
validate: function (value, helpers) {
|
|
97
|
-
if (!value) {
|
|
98
|
-
return { value: value, errors: helpers.error('json.valid') };
|
|
99
|
-
}
|
|
100
|
-
return { value: value };
|
|
101
|
-
},
|
|
102
|
-
}); }, function (joi) { return ({
|
|
103
|
-
type: 'delimitedArray',
|
|
104
|
-
base: joi.array().default([]),
|
|
105
|
-
coerce: function (value) { return ({
|
|
106
|
-
value: value.split ? value.split(',') : value,
|
|
107
|
-
}); },
|
|
108
|
-
}); }, function (joi) { return ({
|
|
109
|
-
type: 'queryStringParameters',
|
|
110
|
-
base: joi
|
|
111
|
-
.object()
|
|
112
|
-
.required()
|
|
113
|
-
.error(new Error('Missing query parameters')),
|
|
114
|
-
}); }, function (joi) { return ({
|
|
115
|
-
type: 'date',
|
|
116
|
-
base: joi.date(),
|
|
117
|
-
prepare: function (value) {
|
|
118
|
-
return {
|
|
119
|
-
value: moment.tz(value, 'UTC').toDate(),
|
|
120
|
-
};
|
|
121
|
-
},
|
|
122
|
-
}); });
|
package/dist/validation/index.js
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
-
}) : (function(o, m, k, k2) {
|
|
6
|
-
if (k2 === undefined) k2 = k;
|
|
7
|
-
o[k2] = m[k];
|
|
8
|
-
}));
|
|
9
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
10
|
-
for (var p in m) if (p !== "default" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);
|
|
11
|
-
};
|
|
12
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
13
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
14
|
-
};
|
|
15
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
-
exports.validateEvent = void 0;
|
|
17
|
-
var validateEvent_1 = __importDefault(require("./validateEvent"));
|
|
18
|
-
exports.validateEvent = validateEvent_1.default;
|
|
19
|
-
__exportStar(require("./custom"), exports);
|
|
20
|
-
__exportStar(require("./requestContext"), exports);
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
-
}) : (function(o, m, k, k2) {
|
|
6
|
-
if (k2 === undefined) k2 = k;
|
|
7
|
-
o[k2] = m[k];
|
|
8
|
-
}));
|
|
9
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
-
}) : function(o, v) {
|
|
12
|
-
o["default"] = v;
|
|
13
|
-
});
|
|
14
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
-
if (mod && mod.__esModule) return mod;
|
|
16
|
-
var result = {};
|
|
17
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
-
__setModuleDefault(result, mod);
|
|
19
|
-
return result;
|
|
20
|
-
};
|
|
21
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
-
exports.getRequestContextValidator = exports.requestContextValidator = exports.getAuthorizerValidator = void 0;
|
|
23
|
-
var Joi = __importStar(require("joi"));
|
|
24
|
-
var errors_1 = require("../errors");
|
|
25
|
-
var custom_1 = require("./custom");
|
|
26
|
-
exports.getAuthorizerValidator = function (_a) {
|
|
27
|
-
var _b = _a === void 0 ? {} : _a, scope = _b.scope, type = _b.type;
|
|
28
|
-
return Joi.object({
|
|
29
|
-
clientId: Joi.number(),
|
|
30
|
-
resources: custom_1.json.object({}),
|
|
31
|
-
scope: scope
|
|
32
|
-
? Joi.string()
|
|
33
|
-
.pattern(new RegExp("" + scope))
|
|
34
|
-
.error(function () { return new errors_1.UnauthorizedError("missing scope " + scope); })
|
|
35
|
-
: Joi.optional(),
|
|
36
|
-
type: type
|
|
37
|
-
? Joi.any()
|
|
38
|
-
.valid(type)
|
|
39
|
-
.error(function () { return new errors_1.UnauthorizedError("missing user type " + type); })
|
|
40
|
-
: Joi.optional(),
|
|
41
|
-
});
|
|
42
|
-
};
|
|
43
|
-
/**
|
|
44
|
-
* @deprecated
|
|
45
|
-
*/
|
|
46
|
-
exports.requestContextValidator = Joi.object({
|
|
47
|
-
authorizer: exports.getAuthorizerValidator(),
|
|
48
|
-
});
|
|
49
|
-
exports.getRequestContextValidator = function (params) {
|
|
50
|
-
if (params === void 0) { params = {}; }
|
|
51
|
-
return Joi.object({
|
|
52
|
-
authorizer: exports.getAuthorizerValidator(params),
|
|
53
|
-
});
|
|
54
|
-
};
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
var errors_1 = require("../errors");
|
|
4
|
-
var sdk_1 = require("@spytecgps/sdk");
|
|
5
|
-
var validateEvent = function (event, schema, validateOptions) {
|
|
6
|
-
if (!schema) {
|
|
7
|
-
sdk_1.logger.warn("skipping validation");
|
|
8
|
-
return event;
|
|
9
|
-
}
|
|
10
|
-
var _a = schema.validate(event, {
|
|
11
|
-
allowUnknown: (validateOptions === null || validateOptions === void 0 ? void 0 : validateOptions.allowUnknown) || true,
|
|
12
|
-
errors: {
|
|
13
|
-
label: 'key',
|
|
14
|
-
wrap: {
|
|
15
|
-
label: false,
|
|
16
|
-
},
|
|
17
|
-
},
|
|
18
|
-
}), error = _a.error, value = _a.value;
|
|
19
|
-
if (error) {
|
|
20
|
-
sdk_1.logger.error({ error: error }, 'Validation error');
|
|
21
|
-
throw error.isJoi ? new errors_1.BadRequestError(error.message) : error;
|
|
22
|
-
}
|
|
23
|
-
return value;
|
|
24
|
-
};
|
|
25
|
-
exports.default = validateEvent;
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
13
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
-
function step(op) {
|
|
16
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
-
while (_) try {
|
|
18
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
-
switch (op[0]) {
|
|
21
|
-
case 0: case 1: t = op; break;
|
|
22
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
-
default:
|
|
26
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
-
if (t[2]) _.ops.pop();
|
|
31
|
-
_.trys.pop(); continue;
|
|
32
|
-
}
|
|
33
|
-
op = body.call(thisArg, _);
|
|
34
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
var validation_1 = require("../validation");
|
|
40
|
-
var response_1 = require("./response");
|
|
41
|
-
var sdk_1 = require("@spytecgps/sdk");
|
|
42
|
-
var logEvent = function (e) { return ({
|
|
43
|
-
resource: e.resource,
|
|
44
|
-
httpMethod: e.httpMethod,
|
|
45
|
-
queryStringParameters: e.queryStringParameters,
|
|
46
|
-
pathParameters: e.pathParameters,
|
|
47
|
-
body: e.body,
|
|
48
|
-
}); };
|
|
49
|
-
var apiGatewayEventWrapper = function (_a) {
|
|
50
|
-
var event = _a.event, context = _a.context, schema = _a.schema, handler = _a.handler;
|
|
51
|
-
return __awaiter(void 0, void 0, void 0, function () {
|
|
52
|
-
var start, validatedEvent, result, err_1;
|
|
53
|
-
return __generator(this, function (_b) {
|
|
54
|
-
switch (_b.label) {
|
|
55
|
-
case 0:
|
|
56
|
-
start = new Date().getTime();
|
|
57
|
-
if (event && context) {
|
|
58
|
-
sdk_1.logger.withRequest(event, context);
|
|
59
|
-
}
|
|
60
|
-
sdk_1.logger.info(logEvent(event), "apiGatewayWrapper - got event");
|
|
61
|
-
_b.label = 1;
|
|
62
|
-
case 1:
|
|
63
|
-
_b.trys.push([1, 3, , 4]);
|
|
64
|
-
validatedEvent = validation_1.validateEvent(event, schema);
|
|
65
|
-
return [4 /*yield*/, handler(validatedEvent)];
|
|
66
|
-
case 2:
|
|
67
|
-
result = _b.sent();
|
|
68
|
-
sdk_1.logger.info({ result: result, requestTime: new Date().getTime() - start }, "apiGatewayWrapper - finished");
|
|
69
|
-
return [2 /*return*/, response_1.buildProxyResult(result)];
|
|
70
|
-
case 3:
|
|
71
|
-
err_1 = _b.sent();
|
|
72
|
-
sdk_1.logger.error({ err: err_1 }, "apiGatewayWrapper - caught error");
|
|
73
|
-
return [2 /*return*/, response_1.buildProxyResult({
|
|
74
|
-
statusCode: err_1.code || 500,
|
|
75
|
-
message: err_1.message || 'Error',
|
|
76
|
-
})];
|
|
77
|
-
case 4: return [2 /*return*/];
|
|
78
|
-
}
|
|
79
|
-
});
|
|
80
|
-
});
|
|
81
|
-
};
|
|
82
|
-
exports.default = apiGatewayEventWrapper;
|
package/dist/wrappers/index.js
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
-
}) : (function(o, m, k, k2) {
|
|
6
|
-
if (k2 === undefined) k2 = k;
|
|
7
|
-
o[k2] = m[k];
|
|
8
|
-
}));
|
|
9
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
10
|
-
for (var p in m) if (p !== "default" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);
|
|
11
|
-
};
|
|
12
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
13
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
14
|
-
};
|
|
15
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
-
exports.sqsEventWrapper = exports.apiGatewayEventWrapper = void 0;
|
|
17
|
-
var apiGatewayEventWrapper_1 = __importDefault(require("./apiGatewayEventWrapper"));
|
|
18
|
-
exports.apiGatewayEventWrapper = apiGatewayEventWrapper_1.default;
|
|
19
|
-
var sqsEventWrapper_1 = __importDefault(require("./sqsEventWrapper"));
|
|
20
|
-
exports.sqsEventWrapper = sqsEventWrapper_1.default;
|
|
21
|
-
__exportStar(require("./response"), exports);
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __assign = (this && this.__assign) || function () {
|
|
3
|
-
__assign = Object.assign || function(t) {
|
|
4
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
-
s = arguments[i];
|
|
6
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
-
t[p] = s[p];
|
|
8
|
-
}
|
|
9
|
-
return t;
|
|
10
|
-
};
|
|
11
|
-
return __assign.apply(this, arguments);
|
|
12
|
-
};
|
|
13
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
-
exports.buildProxyResult = exports.buildResponseBody = void 0;
|
|
15
|
-
var baseHeaders = {
|
|
16
|
-
'Content-Type': 'application/json',
|
|
17
|
-
'Access-Control-Allow-Origin': '*',
|
|
18
|
-
'Access-Control-Allow-Credentials': true,
|
|
19
|
-
};
|
|
20
|
-
exports.buildResponseBody = function (statusCode, message, data) {
|
|
21
|
-
return {
|
|
22
|
-
success: statusCode < 400,
|
|
23
|
-
message: message,
|
|
24
|
-
result: data ? data : undefined,
|
|
25
|
-
};
|
|
26
|
-
};
|
|
27
|
-
exports.buildProxyResult = function (_a) {
|
|
28
|
-
var _b = _a.statusCode, statusCode = _b === void 0 ? 200 : _b, _c = _a.message, message = _c === void 0 ? 'ok' : _c, data = _a.data, _d = _a.headers, headers = _d === void 0 ? {} : _d, _e = _a.rawResult, rawResult = _e === void 0 ? false : _e;
|
|
29
|
-
var resp = rawResult ? data : exports.buildResponseBody(statusCode, message, data);
|
|
30
|
-
return {
|
|
31
|
-
headers: __assign(__assign({}, baseHeaders), headers),
|
|
32
|
-
statusCode: statusCode,
|
|
33
|
-
body: resp && JSON.stringify(resp),
|
|
34
|
-
};
|
|
35
|
-
};
|
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
13
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
-
function step(op) {
|
|
16
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
-
while (_) try {
|
|
18
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
-
switch (op[0]) {
|
|
21
|
-
case 0: case 1: t = op; break;
|
|
22
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
-
default:
|
|
26
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
-
if (t[2]) _.ops.pop();
|
|
31
|
-
_.trys.pop(); continue;
|
|
32
|
-
}
|
|
33
|
-
op = body.call(thisArg, _);
|
|
34
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
39
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
40
|
-
};
|
|
41
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
-
var validateEvent_1 = __importDefault(require("../validation/validateEvent"));
|
|
43
|
-
var sdk_1 = require("@spytecgps/sdk");
|
|
44
|
-
function processEvent(validatedEvent, handler, singleHandler, mode) {
|
|
45
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
46
|
-
var records, _i, records_1, record;
|
|
47
|
-
return __generator(this, function (_a) {
|
|
48
|
-
switch (_a.label) {
|
|
49
|
-
case 0:
|
|
50
|
-
if (!(handler || singleHandler)) {
|
|
51
|
-
throw new Error("handler or singleHandler not defined");
|
|
52
|
-
}
|
|
53
|
-
if (!handler) return [3 /*break*/, 2];
|
|
54
|
-
return [4 /*yield*/, handler(validatedEvent)];
|
|
55
|
-
case 1:
|
|
56
|
-
_a.sent();
|
|
57
|
-
return [3 /*break*/, 9];
|
|
58
|
-
case 2:
|
|
59
|
-
if (!singleHandler) return [3 /*break*/, 9];
|
|
60
|
-
records = validatedEvent.Records;
|
|
61
|
-
if (!(mode === 'serial')) return [3 /*break*/, 7];
|
|
62
|
-
_i = 0, records_1 = records;
|
|
63
|
-
_a.label = 3;
|
|
64
|
-
case 3:
|
|
65
|
-
if (!(_i < records_1.length)) return [3 /*break*/, 6];
|
|
66
|
-
record = records_1[_i];
|
|
67
|
-
return [4 /*yield*/, singleHandler(record)];
|
|
68
|
-
case 4:
|
|
69
|
-
_a.sent();
|
|
70
|
-
_a.label = 5;
|
|
71
|
-
case 5:
|
|
72
|
-
_i++;
|
|
73
|
-
return [3 /*break*/, 3];
|
|
74
|
-
case 6: return [3 /*break*/, 9];
|
|
75
|
-
case 7:
|
|
76
|
-
if (!(mode === 'parallel')) return [3 /*break*/, 9];
|
|
77
|
-
return [4 /*yield*/, Promise.all(records.map(function (record) { return singleHandler(record); }))];
|
|
78
|
-
case 8:
|
|
79
|
-
_a.sent();
|
|
80
|
-
_a.label = 9;
|
|
81
|
-
case 9: return [2 /*return*/];
|
|
82
|
-
}
|
|
83
|
-
});
|
|
84
|
-
});
|
|
85
|
-
}
|
|
86
|
-
var sqsEventWrapper = function (_a) {
|
|
87
|
-
var event = _a.event, context = _a.context, schema = _a.schema, handler = _a.handler, singleHandler = _a.singleHandler, _b = _a.mode, mode = _b === void 0 ? 'serial' : _b;
|
|
88
|
-
return __awaiter(void 0, void 0, void 0, function () {
|
|
89
|
-
var start, validatedEvent, err_1;
|
|
90
|
-
return __generator(this, function (_c) {
|
|
91
|
-
switch (_c.label) {
|
|
92
|
-
case 0:
|
|
93
|
-
start = new Date().getTime();
|
|
94
|
-
if (event && context) {
|
|
95
|
-
sdk_1.logger.withRequest(event, context);
|
|
96
|
-
}
|
|
97
|
-
sdk_1.logger.info(event, "sqsEventWrapper - got event");
|
|
98
|
-
_c.label = 1;
|
|
99
|
-
case 1:
|
|
100
|
-
_c.trys.push([1, 3, , 4]);
|
|
101
|
-
validatedEvent = validateEvent_1.default(event, schema);
|
|
102
|
-
return [4 /*yield*/, processEvent(validatedEvent, handler, singleHandler, mode)];
|
|
103
|
-
case 2:
|
|
104
|
-
_c.sent();
|
|
105
|
-
sdk_1.logger.info({ requestTime: new Date().getTime() - start }, "sqsEventWrapper - finished");
|
|
106
|
-
return [3 /*break*/, 4];
|
|
107
|
-
case 3:
|
|
108
|
-
err_1 = _c.sent();
|
|
109
|
-
sdk_1.logger.error({ err: err_1 }, "sqsEventWrapper - caught error");
|
|
110
|
-
throw err_1;
|
|
111
|
-
case 4: return [2 /*return*/];
|
|
112
|
-
}
|
|
113
|
-
});
|
|
114
|
-
});
|
|
115
|
-
};
|
|
116
|
-
exports.default = sqsEventWrapper;
|