@varius.io/framework 12.3.4 → 12.3.6
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/build/integrations/http/auth.js +8 -17
- package/build/integrations/http/auth.js.map +1 -1
- package/build/integrations/http/express.js +8 -18
- package/build/integrations/http/express.js.map +1 -1
- package/build/integrations/http/lambda.js +7 -16
- package/build/integrations/http/lambda.js.map +1 -1
- package/build/integrations/http/responses.d.ts +1 -0
- package/build/integrations/http/responses.d.ts.map +1 -1
- package/build/integrations/http/responses.js +22 -5
- package/build/integrations/http/responses.js.map +1 -1
- package/build/integrations/http/validate.js +59 -76
- package/build/integrations/http/validate.js.map +1 -1
- package/build/integrations/sqs/lambda.js +7 -18
- package/build/integrations/sqs/lambda.js.map +1 -1
- package/build/integrations/sqs/sqs-lambda.js +49 -62
- package/build/integrations/sqs/sqs-lambda.js.map +1 -1
- package/build/integrations/sqs/validate-param.js +22 -35
- package/build/integrations/sqs/validate-param.js.map +1 -1
- package/build/services/analytics.js +19 -34
- package/build/services/analytics.js.map +1 -1
- package/build/services/api.js +75 -90
- package/build/services/api.js.map +1 -1
- package/build/services/atomic-counter.js +68 -85
- package/build/services/atomic-counter.js.map +1 -1
- package/build/services/billing.js +50 -75
- package/build/services/billing.js.map +1 -1
- package/build/services/blockv/actions.js +26 -41
- package/build/services/blockv/actions.js.map +1 -1
- package/build/services/blockv/apps.js +5 -16
- package/build/services/blockv/apps.js.map +1 -1
- package/build/services/blockv/auth.js +14 -25
- package/build/services/blockv/auth.js.map +1 -1
- package/build/services/blockv/captcha.js +5 -16
- package/build/services/blockv/captcha.js.map +1 -1
- package/build/services/blockv/faces.js +13 -28
- package/build/services/blockv/faces.js.map +1 -1
- package/build/services/blockv/index.js +17 -28
- package/build/services/blockv/index.js.map +1 -1
- package/build/services/blockv/user.js +15 -30
- package/build/services/blockv/user.js.map +1 -1
- package/build/services/blockv/variations.js +9 -22
- package/build/services/blockv/variations.js.map +1 -1
- package/build/services/blockv/vatoms.js +239 -278
- package/build/services/blockv/vatoms.js.map +1 -1
- package/build/services/businesses.js +39 -62
- package/build/services/businesses.js.map +1 -1
- package/build/services/distribution.js +6 -19
- package/build/services/distribution.js.map +1 -1
- package/build/services/events.js +29 -35
- package/build/services/events.js.map +1 -1
- package/build/services/iot.js +31 -42
- package/build/services/iot.js.map +1 -1
- package/build/services/kinesis.js +8 -19
- package/build/services/kinesis.js.map +1 -1
- package/build/services/kong.js +159 -184
- package/build/services/kong.js.map +1 -1
- package/build/services/loyalty.js +14 -27
- package/build/services/loyalty.js.map +1 -1
- package/build/services/merchants.js +14 -26
- package/build/services/merchants.js.map +1 -1
- package/build/services/nonce.js +24 -39
- package/build/services/nonce.js.map +1 -1
- package/build/services/old_blockv.js +129 -166
- package/build/services/old_blockv.js.map +1 -1
- package/build/services/points.js +113 -147
- package/build/services/points.js.map +1 -1
- package/build/services/postgres.d.ts +1 -1
- package/build/services/postgres.d.ts.map +1 -1
- package/build/services/postgres.js +127 -161
- package/build/services/postgres.js.map +1 -1
- package/build/services/prizes.js +12 -27
- package/build/services/prizes.js.map +1 -1
- package/build/services/providers.js +33 -48
- package/build/services/providers.js.map +1 -1
- package/build/services/resources.js +21 -32
- package/build/services/resources.js.map +1 -1
- package/build/services/scheduler.js +14 -33
- package/build/services/scheduler.js.map +1 -1
- package/build/services/secret.js +12 -23
- package/build/services/secret.js.map +1 -1
- package/build/services/studio.js +95 -134
- package/build/services/studio.js.map +1 -1
- package/build/services/user.js +136 -156
- package/build/services/user.js.map +1 -1
- package/build/services/viewers.js +23 -36
- package/build/services/viewers.js.map +1 -1
- package/build/services/workers.js +54 -71
- package/build/services/workers.js.map +1 -1
- package/build/services/ws.js +8 -19
- package/build/services/ws.js.map +1 -1
- package/build/utils/analytics.js +15 -26
- package/build/utils/analytics.js.map +1 -1
- package/build/utils/emitter.js +9 -20
- package/build/utils/emitter.js.map +1 -1
- package/build/utils/logger.js +6 -7
- package/build/utils/logger.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,13 +1,4 @@
|
|
|
1
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
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
3
|
exports.clearAuthorizerCache = exports.getAudience = exports.getUserId = exports.getAuthToken = void 0;
|
|
13
4
|
const AWS = require("aws-sdk");
|
|
@@ -82,15 +73,15 @@ function clearAuthorizerCache(event, businessId) {
|
|
|
82
73
|
stageName: stage,
|
|
83
74
|
};
|
|
84
75
|
logger.debug("Clearing Az Cache", params);
|
|
85
|
-
apigateway.flushStageAuthorizersCache(params, (err, data) =>
|
|
76
|
+
apigateway.flushStageAuthorizersCache(params, async (err, data) => {
|
|
86
77
|
if (err) {
|
|
87
78
|
reject(err);
|
|
88
79
|
}
|
|
89
80
|
else {
|
|
90
|
-
|
|
81
|
+
await verifyAuthorizerCache(event, businessId);
|
|
91
82
|
resolve(data);
|
|
92
83
|
}
|
|
93
|
-
})
|
|
84
|
+
});
|
|
94
85
|
}
|
|
95
86
|
catch (err) {
|
|
96
87
|
reject(err);
|
|
@@ -102,7 +93,7 @@ function sleep(ms) {
|
|
|
102
93
|
return new Promise(resolve => setTimeout(resolve, ms));
|
|
103
94
|
}
|
|
104
95
|
function verifyAuthorizerCache(event, businessId) {
|
|
105
|
-
return new Promise((resolve, reject) =>
|
|
96
|
+
return new Promise(async (resolve, reject) => {
|
|
106
97
|
logger.debug("verifying");
|
|
107
98
|
try {
|
|
108
99
|
const apiBase = process.env.API_BASE;
|
|
@@ -114,13 +105,13 @@ function verifyAuthorizerCache(event, businessId) {
|
|
|
114
105
|
while (count < 60) {
|
|
115
106
|
// Invoke the getBUsiness API until it no longer returns 403
|
|
116
107
|
logger.debug("Calling", `${apiBase}/b/${businessId}`, count);
|
|
117
|
-
const res =
|
|
108
|
+
const res = await (0, node_fetch_1.default)(`${apiBase}/b/${businessId}`, { method: "GET", headers });
|
|
118
109
|
logger.debug("res", res.status);
|
|
119
110
|
if (res.status >= 500) {
|
|
120
|
-
reject(
|
|
111
|
+
reject(await res.json());
|
|
121
112
|
}
|
|
122
113
|
else if (res.status >= 400) {
|
|
123
|
-
|
|
114
|
+
await sleep(1000);
|
|
124
115
|
}
|
|
125
116
|
else {
|
|
126
117
|
resolve();
|
|
@@ -133,6 +124,6 @@ function verifyAuthorizerCache(event, businessId) {
|
|
|
133
124
|
catch (err) {
|
|
134
125
|
reject(err);
|
|
135
126
|
}
|
|
136
|
-
})
|
|
127
|
+
});
|
|
137
128
|
}
|
|
138
129
|
//# sourceMappingURL=auth.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/integrations/http/auth.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/integrations/http/auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,4 @@
|
|
|
1
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
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
3
|
exports.wrap = void 0;
|
|
13
4
|
const responses_1 = require("./responses");
|
|
@@ -29,8 +20,7 @@ function respond(res, exRes) {
|
|
|
29
20
|
*/
|
|
30
21
|
function wrap(handler, options = {}) {
|
|
31
22
|
// return a new express route
|
|
32
|
-
return (exReq, exRes) =>
|
|
33
|
-
var _a;
|
|
23
|
+
return async (exReq, exRes) => {
|
|
34
24
|
const emitter = new emitter_1.default();
|
|
35
25
|
let success = true;
|
|
36
26
|
try {
|
|
@@ -38,7 +28,7 @@ function wrap(handler, options = {}) {
|
|
|
38
28
|
const event = {
|
|
39
29
|
headers: headers || {},
|
|
40
30
|
pathParameters: exReq.params,
|
|
41
|
-
bodyString:
|
|
31
|
+
bodyString: exReq.rawBody ?? JSON.stringify(body),
|
|
42
32
|
queryParameters: exReq.query || {},
|
|
43
33
|
body,
|
|
44
34
|
isBase64Encoded: false,
|
|
@@ -50,8 +40,8 @@ function wrap(handler, options = {}) {
|
|
|
50
40
|
pathParameters: event.pathParameters,
|
|
51
41
|
queryParameters: event.queryParameters,
|
|
52
42
|
})}`);
|
|
53
|
-
|
|
54
|
-
const res =
|
|
43
|
+
await (0, validate_1.assertValid)(event, options);
|
|
44
|
+
const res = await handler(event, null);
|
|
55
45
|
// errors can also be returned... if we got an error back, then we'll throw it here
|
|
56
46
|
if (res instanceof responses_1.HttpError) {
|
|
57
47
|
throw res;
|
|
@@ -71,13 +61,13 @@ function wrap(handler, options = {}) {
|
|
|
71
61
|
logger.debug(`Handler error response: ${JSON.stringify(res)}`);
|
|
72
62
|
}
|
|
73
63
|
if (success) {
|
|
74
|
-
|
|
75
|
-
|
|
64
|
+
await emitter.emit(lambda_1.EmitterEventType.PostResponse);
|
|
65
|
+
await emitter.emit(lambda_1.EmitterEventType.PostResponseCleanup);
|
|
76
66
|
}
|
|
77
67
|
else {
|
|
78
|
-
|
|
68
|
+
await emitter.emit(lambda_1.EmitterEventType.UncaughtHandlerError);
|
|
79
69
|
}
|
|
80
|
-
}
|
|
70
|
+
};
|
|
81
71
|
}
|
|
82
72
|
exports.wrap = wrap;
|
|
83
73
|
//# sourceMappingURL=express.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"express.js","sourceRoot":"","sources":["../../../src/integrations/http/express.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"express.js","sourceRoot":"","sources":["../../../src/integrations/http/express.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,4 @@
|
|
|
1
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
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
3
|
exports.wrap = void 0;
|
|
13
4
|
const responses_1 = require("./responses");
|
|
@@ -60,7 +51,7 @@ function parseBody(rawBody, headers) {
|
|
|
60
51
|
*/
|
|
61
52
|
function wrap(handler, options = {}) {
|
|
62
53
|
// return a new serverless handler
|
|
63
|
-
return (rawEvent, context) =>
|
|
54
|
+
return async (rawEvent, context) => {
|
|
64
55
|
// logger.debug("Received event:", JSON.stringify(rawEvent));
|
|
65
56
|
// Set this to false to support db connection pooling
|
|
66
57
|
context.callbackWaitsForEmptyEventLoop = options.async || false;
|
|
@@ -92,8 +83,8 @@ function wrap(handler, options = {}) {
|
|
|
92
83
|
pathParameters: event.pathParameters,
|
|
93
84
|
queryParameters: event.queryParameters,
|
|
94
85
|
})}`);
|
|
95
|
-
|
|
96
|
-
res =
|
|
86
|
+
await (0, validate_1.assertValid)(event, options);
|
|
87
|
+
res = await handler(event, context);
|
|
97
88
|
// if the data was an HttpError but was returned and not thrown (back-compat) then throw it here
|
|
98
89
|
if (res instanceof responses_1.HttpError) {
|
|
99
90
|
throw res;
|
|
@@ -112,14 +103,14 @@ function wrap(handler, options = {}) {
|
|
|
112
103
|
logger.debug(`Handler error response: ${JSON.stringify(res)}`);
|
|
113
104
|
}
|
|
114
105
|
if (success) {
|
|
115
|
-
|
|
116
|
-
|
|
106
|
+
await emitter.emit(lambda_1.EmitterEventType.PostResponse);
|
|
107
|
+
await emitter.emit(lambda_1.EmitterEventType.PostResponseCleanup);
|
|
117
108
|
}
|
|
118
109
|
else {
|
|
119
|
-
|
|
110
|
+
await emitter.emit(lambda_1.EmitterEventType.UncaughtHandlerError);
|
|
120
111
|
}
|
|
121
112
|
return res;
|
|
122
|
-
}
|
|
113
|
+
};
|
|
123
114
|
}
|
|
124
115
|
exports.wrap = wrap;
|
|
125
116
|
//# sourceMappingURL=lambda.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lambda.js","sourceRoot":"","sources":["../../../src/integrations/http/lambda.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"lambda.js","sourceRoot":"","sources":["../../../src/integrations/http/lambda.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,6 +13,7 @@ export declare const created: (body?: any) => HttpResponse;
|
|
|
13
13
|
export declare const redirect: (location: string) => HttpResponse;
|
|
14
14
|
export declare const operationOk: () => HttpResponse;
|
|
15
15
|
export declare const notFound: (entityName?: string, entityId?: string) => HttpResponse;
|
|
16
|
+
export declare const notAuthorized: (code: string, message: string) => HttpResponse;
|
|
16
17
|
export declare class HttpError extends Error implements HttpResponse {
|
|
17
18
|
statusCode: number;
|
|
18
19
|
body: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"responses.d.ts","sourceRoot":"","sources":["../../../src/integrations/http/responses.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AASnC,MAAM,WAAW,YAAY;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC1B;AAqCD,eAAO,MAAM,EAAE,UAAW,GAAG,iBAA8C,CAAC;AAC5E,eAAO,MAAM,OAAO,iCAElB,CAAC;AACH,eAAO,MAAM,QAAQ,UAAW,GAAG,iBAAmB,CAAC;AACvD,eAAO,MAAM,OAAO,UAAW,GAAG,iBAAmB,CAAC;AACtD,eAAO,MAAM,QAAQ,aAAc,MAAM,iBAEvC,CAAC;AAEH,eAAO,MAAM,WAAW,oBAAyB,CAAC;AAClD,eAAO,MAAM,QAAQ,mCAAsC,MAAM,
|
|
1
|
+
{"version":3,"file":"responses.d.ts","sourceRoot":"","sources":["../../../src/integrations/http/responses.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AASnC,MAAM,WAAW,YAAY;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC1B;AAqCD,eAAO,MAAM,EAAE,UAAW,GAAG,iBAA8C,CAAC;AAC5E,eAAO,MAAM,OAAO,iCAElB,CAAC;AACH,eAAO,MAAM,QAAQ,UAAW,GAAG,iBAAmB,CAAC;AACvD,eAAO,MAAM,OAAO,UAAW,GAAG,iBAAmB,CAAC;AACtD,eAAO,MAAM,QAAQ,aAAc,MAAM,iBAEvC,CAAC;AAEH,eAAO,MAAM,WAAW,oBAAyB,CAAC;AAClD,eAAO,MAAM,QAAQ,mCAAsC,MAAM,iBAK/D,CAAC;AACH,eAAO,MAAM,aAAa,SAAU,MAAM,WAAW,MAAM,iBAKzD,CAAC;AAIH,qBAAa,SAAU,SAAQ,KAAM,YAAW,YAAY;IAIxC,UAAU,EAAE,MAAM;IAH9B,IAAI,EAAE,MAAM,CAAM;IAClB,OAAO,EAAE,OAAO,CAAC;gBAEL,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,GAAE,OAAY;CAY1E;AAED,qBAAa,kBAAmB,SAAQ,SAAS;gBACpC,KAAK,EAAE,QAAQ;CAQ3B;AAED,qBAAa,aAAc,SAAQ,SAAS;gBAC/B,UAAU,SAAW,EAAE,QAAQ,CAAC,EAAE,MAAM;CAQpD;AAED,qBAAa,cAAe,SAAQ,SAAS;gBAChC,OAAO,CAAC,EAAE,MAAM;CAQ5B;AACD,qBAAa,qBAAsB,SAAQ,SAAS;;CASnD;AAED,MAAM,WAAW,QAAQ;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,GAAG,CAAC;CACX;AAED,qBAAa,WAAY,SAAQ,SAAS;gBAC7B,KAAK,CAAC,EAAE,QAAQ,GAAG,KAAK;CAgCpC;AAED,qBAAa,WAAY,SAAQ,SAAS;gBAC7B,KAAK,EAAE,QAAQ;CAS3B"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ClientError = exports.ServerError = exports.ResourceConflictError = exports.MalformedError = exports.NotFoundError = exports.NotAuthorizedError = exports.HttpError = exports.notFound = exports.operationOk = exports.redirect = exports.created = exports.accepted = exports.okItems = exports.ok = void 0;
|
|
3
|
+
exports.ClientError = exports.ServerError = exports.ResourceConflictError = exports.MalformedError = exports.NotFoundError = exports.NotAuthorizedError = exports.HttpError = exports.notAuthorized = exports.notFound = exports.operationOk = exports.redirect = exports.created = exports.accepted = exports.okItems = exports.ok = void 0;
|
|
4
4
|
const CORS_HEADERS = {
|
|
5
5
|
"Access-Control-Allow-Origin": "*",
|
|
6
6
|
"Access-Control-Allow-Credentials": true,
|
|
@@ -24,7 +24,11 @@ const res = (statusCode, bodyObj = undefined, headers) => {
|
|
|
24
24
|
const { body, contentType } = stringifyBody(bodyObj);
|
|
25
25
|
return {
|
|
26
26
|
statusCode,
|
|
27
|
-
headers:
|
|
27
|
+
headers: {
|
|
28
|
+
...CORS_HEADERS,
|
|
29
|
+
"content-type": contentType,
|
|
30
|
+
...headers,
|
|
31
|
+
},
|
|
28
32
|
body,
|
|
29
33
|
isBase64Encoded: Buffer.isBuffer(body),
|
|
30
34
|
};
|
|
@@ -46,10 +50,19 @@ exports.redirect = redirect;
|
|
|
46
50
|
const operationOk = () => (0, exports.ok)({ ok: true });
|
|
47
51
|
exports.operationOk = operationOk;
|
|
48
52
|
const notFound = (entityName = "entity", entityId) => res(404, {
|
|
49
|
-
|
|
50
|
-
|
|
53
|
+
error: {
|
|
54
|
+
code: `no_${entityName}_found`,
|
|
55
|
+
message: `The specified ${entityName} ${entityId} was not found.`
|
|
56
|
+
}
|
|
51
57
|
});
|
|
52
58
|
exports.notFound = notFound;
|
|
59
|
+
const notAuthorized = (code, message) => res(403, {
|
|
60
|
+
error: {
|
|
61
|
+
code,
|
|
62
|
+
message
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
exports.notAuthorized = notAuthorized;
|
|
53
66
|
// errors
|
|
54
67
|
class HttpError extends Error {
|
|
55
68
|
constructor(statusCode, bodyObj, headers = {}) {
|
|
@@ -58,7 +71,11 @@ class HttpError extends Error {
|
|
|
58
71
|
this.body = "";
|
|
59
72
|
const { body, contentType } = stringifyBody(bodyObj);
|
|
60
73
|
this.body = body;
|
|
61
|
-
this.headers =
|
|
74
|
+
this.headers = {
|
|
75
|
+
...CORS_HEADERS,
|
|
76
|
+
"content-type": contentType,
|
|
77
|
+
...headers,
|
|
78
|
+
};
|
|
62
79
|
}
|
|
63
80
|
}
|
|
64
81
|
exports.HttpError = HttpError;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"responses.js","sourceRoot":"","sources":["../../../src/integrations/http/responses.ts"],"names":[],"mappings":";;;AAEA,MAAM,YAAY,GAAY;IAC7B,6BAA6B,EAAE,GAAG;IAClC,kCAAkC,EAAE,IAAI;CACxC,CAAC;AAWF,SAAS,aAAa,CAAC,KAAW;IACjC,IAAI,KAAK,KAAK,SAAS,EAAE;QACxB,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC;KAC5C;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC9B,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC;KAClD;IAED,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;QAC3B,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC;KAClE;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC9B,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,WAAW,EAAE,kBAAkB,EAAE,CAAC;KACxE;IAED,OAAO,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC;AACrD,CAAC;AAED,MAAM,GAAG,GAAG,CAAC,UAAkB,EAAE,UAAe,SAAS,EAAE,OAAiB,EAAgB,EAAE;IAC7F,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IAErD,OAAO;QACN,UAAU;QACV,OAAO,
|
|
1
|
+
{"version":3,"file":"responses.js","sourceRoot":"","sources":["../../../src/integrations/http/responses.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,4 @@
|
|
|
1
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
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
3
|
exports.assertValid = void 0;
|
|
13
4
|
const Ajv = require("ajv");
|
|
@@ -18,86 +9,78 @@ const ajv = new Ajv({
|
|
|
18
9
|
loadSchema,
|
|
19
10
|
});
|
|
20
11
|
const cachedSchemas = {};
|
|
21
|
-
function loadSchema(url) {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
return data;
|
|
29
|
-
});
|
|
12
|
+
async function loadSchema(url) {
|
|
13
|
+
const cachedSchema = cachedSchemas[url];
|
|
14
|
+
if (cachedSchema)
|
|
15
|
+
return cachedSchema;
|
|
16
|
+
const { data } = await axios_1.default.get(url);
|
|
17
|
+
cachedSchemas[url] = data;
|
|
18
|
+
return data;
|
|
30
19
|
}
|
|
31
20
|
/**
|
|
32
21
|
* Validate the event query params against a JSON Schema.
|
|
33
22
|
* @param event The lambda event.
|
|
34
23
|
* @param bodySchema The JSON Schema.
|
|
35
24
|
*/
|
|
36
|
-
function assertQueryParamsValid(event, queryParamsSchema) {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
}
|
|
61
|
-
});
|
|
25
|
+
async function assertQueryParamsValid(event, queryParamsSchema) {
|
|
26
|
+
if (queryParamsSchema === undefined) {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
if (typeof event.queryParameters !== "object") {
|
|
30
|
+
throw new responses_1.ClientError({
|
|
31
|
+
code: "unparsable_query_params",
|
|
32
|
+
message: "The provided request query params could not be parsed.",
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
const validate = await ajv.compileAsync(queryParamsSchema);
|
|
36
|
+
const isValid = await validate(event.queryParameters);
|
|
37
|
+
if (isValid === false) {
|
|
38
|
+
throw new responses_1.ClientError({
|
|
39
|
+
code: `invalid_query_params`,
|
|
40
|
+
message: "The request query params did not properly validate.",
|
|
41
|
+
data: {
|
|
42
|
+
fields: validate.errors.map(e => ({
|
|
43
|
+
path: e.dataPath,
|
|
44
|
+
reason: e.message,
|
|
45
|
+
})),
|
|
46
|
+
},
|
|
47
|
+
});
|
|
48
|
+
}
|
|
62
49
|
}
|
|
63
50
|
/**
|
|
64
51
|
* Validate the event body payload against a JSON Schema.
|
|
65
52
|
* @param event The lambda event.
|
|
66
53
|
* @param bodySchema The JSON Schema.
|
|
67
54
|
*/
|
|
68
|
-
function assertBodyValid(event, bodySchema) {
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
}
|
|
93
|
-
});
|
|
55
|
+
async function assertBodyValid(event, bodySchema) {
|
|
56
|
+
if (bodySchema === undefined) {
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
if (typeof event.body !== "object") {
|
|
60
|
+
throw new responses_1.ClientError({
|
|
61
|
+
code: "unparsable_body",
|
|
62
|
+
message: "The provided request body could not be parsed.",
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
const validate = await ajv.compileAsync(bodySchema);
|
|
66
|
+
const isValid = await validate(event.body);
|
|
67
|
+
if (isValid === false) {
|
|
68
|
+
throw new responses_1.ClientError({
|
|
69
|
+
code: `invalid_body`,
|
|
70
|
+
message: "The request body did not properly validate.",
|
|
71
|
+
data: {
|
|
72
|
+
fields: validate.errors.map(e => ({
|
|
73
|
+
path: e.dataPath,
|
|
74
|
+
reason: e.message,
|
|
75
|
+
})),
|
|
76
|
+
},
|
|
77
|
+
});
|
|
78
|
+
}
|
|
94
79
|
}
|
|
95
|
-
function assertValid(event, opt) {
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
yield assertBodyValid(event, requestBodySchema);
|
|
100
|
-
});
|
|
80
|
+
async function assertValid(event, opt) {
|
|
81
|
+
const { queryParamsSchema, requestBodySchema, } = opt;
|
|
82
|
+
await assertQueryParamsValid(event, queryParamsSchema);
|
|
83
|
+
await assertBodyValid(event, requestBodySchema);
|
|
101
84
|
}
|
|
102
85
|
exports.assertValid = assertValid;
|
|
103
86
|
//# sourceMappingURL=validate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../src/integrations/http/validate.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../src/integrations/http/validate.ts"],"names":[],"mappings":";;;AAAA,2BAA2B;AAC3B,iCAA0B;AAE1B,2CAA0C;AAG1C,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC;IACnB,WAAW,EAAE,IAAI;IACjB,UAAU;CACV,CAAC,CAAC;AAEH,MAAM,aAAa,GAA8B,EAAE,CAAC;AAEpD,KAAK,UAAU,UAAU,CAAC,GAAW;IACpC,MAAM,YAAY,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IACxC,IAAI,YAAY;QAAE,OAAO,YAAY,CAAC;IAEtC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,eAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACtC,aAAa,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IAC1B,OAAO,IAAI,CAAC;AACb,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,sBAAsB,CACpC,KAA8B,EAC9B,iBAAsB;IAEtB,IAAI,iBAAiB,KAAK,SAAS,EAAE;QACpC,OAAO;KACP;IAED,IAAI,OAAO,KAAK,CAAC,eAAe,KAAK,QAAQ,EAAE;QAC9C,MAAM,IAAI,uBAAW,CAAC;YACrB,IAAI,EAAE,yBAAyB;YAC/B,OAAO,EAAE,wDAAwD;SACjE,CAAC,CAAC;KACH;IAED,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC;IAC3D,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAEtD,IAAI,OAAO,KAAK,KAAK,EAAE;QACtB,MAAM,IAAI,uBAAW,CAAC;YACrB,IAAI,EAAE,sBAAsB;YAC5B,OAAO,EAAE,qDAAqD;YAC9D,IAAI,EAAE;gBACL,MAAM,EAAE,QAAQ,CAAC,MAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBAClC,IAAI,EAAE,CAAC,CAAC,QAAQ;oBAChB,MAAM,EAAE,CAAC,CAAC,OAAO;iBACjB,CAAC,CAAC;aACH;SACD,CAAC,CAAC;KACH;AACF,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,eAAe,CAC7B,KAAkB,EAClB,UAAe;IAEf,IAAI,UAAU,KAAK,SAAS,EAAE;QAC7B,OAAO;KACP;IAED,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE;QACnC,MAAM,IAAI,uBAAW,CAAC;YACrB,IAAI,EAAE,iBAAiB;YACvB,OAAO,EAAE,gDAAgD;SACzD,CAAC,CAAC;KACH;IAED,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;IACpD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAE3C,IAAI,OAAO,KAAK,KAAK,EAAE;QACtB,MAAM,IAAI,uBAAW,CAAC;YACrB,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE,6CAA6C;YACtD,IAAI,EAAE;gBACL,MAAM,EAAE,QAAQ,CAAC,MAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBAClC,IAAI,EAAE,CAAC,CAAC,QAAQ;oBAChB,MAAM,EAAE,CAAC,CAAC,OAAO;iBACjB,CAAC,CAAC;aACH;SACD,CAAC,CAAC;KACH;AACF,CAAC;AAEM,KAAK,UAAU,WAAW,CAAC,KAAkB,EAAE,GAAkB;IACvE,MAAM,EACL,iBAAiB,EACjB,iBAAiB,GACjB,GAAG,GAAG,CAAC;IAER,MAAM,sBAAsB,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;IACvD,MAAM,eAAe,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;AACjD,CAAC;AARD,kCAQC"}
|
|
@@ -1,29 +1,18 @@
|
|
|
1
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
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
3
|
exports.wrap = exports.startHandler = void 0;
|
|
13
4
|
const sqs_lambda_1 = require("./sqs-lambda");
|
|
14
5
|
const validate_param_1 = require("./validate-param");
|
|
15
6
|
const utils_1 = require("../../utils");
|
|
16
7
|
const DEFAULT_LAMBDA_OPTIONS = {};
|
|
17
|
-
function startHandler(event, options, handler) {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
throw new Error(`sqs message body did not validate against schema: ${JSON.stringify(event.body)} ${JSON.stringify(options.requestBodySchema)} ${JSON.stringify(bodyValidationResult.errorResponse)}`);
|
|
23
|
-
}
|
|
8
|
+
async function startHandler(event, options, handler) {
|
|
9
|
+
if (options.requestBodySchema !== undefined) {
|
|
10
|
+
const bodyValidationResult = await (0, validate_param_1.default)(event, options.requestBodySchema);
|
|
11
|
+
if (bodyValidationResult.isValid === false) {
|
|
12
|
+
throw new Error(`sqs message body did not validate against schema: ${JSON.stringify(event.body)} ${JSON.stringify(options.requestBodySchema)} ${JSON.stringify(bodyValidationResult.errorResponse)}`);
|
|
24
13
|
}
|
|
25
|
-
|
|
26
|
-
|
|
14
|
+
}
|
|
15
|
+
return handler(event);
|
|
27
16
|
}
|
|
28
17
|
exports.startHandler = startHandler;
|
|
29
18
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lambda.js","sourceRoot":"","sources":["../../../src/integrations/sqs/lambda.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"lambda.js","sourceRoot":"","sources":["../../../src/integrations/sqs/lambda.ts"],"names":[],"mappings":";;;AAAA,6CAAoC;AACpC,qDAA4C;AAE5C,uCAAqC;AAarC,MAAM,sBAAsB,GAAG,EAAE,CAAC;AAE3B,KAAK,UAAU,YAAY,CACjC,KAA+B,EAC/B,OAAsB,EACtB,OAAkC;IAElC,IAAI,OAAO,CAAC,iBAAiB,KAAK,SAAS,EAAE;QAC5C,MAAM,oBAAoB,GAAG,MAAM,IAAA,wBAAY,EAAC,KAAK,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;QAElF,IAAI,oBAAoB,CAAC,OAAO,KAAK,KAAK,EAAE;YAC3C,MAAM,IAAI,KAAK,CAAC,qDAAqD,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;SACtM;KACD;IAED,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAdD,oCAcC;AAED;;;;;;;;;;;GAWG;AACH,SAAgB,IAAI,CACnB,OAAkC,EAClC,UAAyB,sBAAsB;IAE/C,kCAAkC;IAClC,OAAO,CAAC,QAAa,EAAE,OAAY,EAAE,QAAa,EAAE,EAAE;QACrD,cAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;QAE1D,IAAA,oBAAS,EAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YACzD,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YACd,cAAM,CAAC,KAAK,CAAC,sCAAsC,GAAG,CAAC,OAAO,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;YAEjF,iCAAiC;YACjC,IAAI,GAAG,CAAC,UAAU,IAAI,OAAO,GAAG,CAAC,UAAU,KAAK,QAAQ,EAAE;gBACzD,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;aACpB;iBAAM;gBACN,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;aACxB;QACF,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC;AACH,CAAC;AArBD,oBAqBC"}
|