lemon-core 4.1.14 → 4.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/common/test-helper.d.ts +2 -2
- package/dist/common/test-helper.js +24 -26
- package/dist/common/test-helper.js.map +1 -1
- package/dist/controllers/dummy-controller.js +39 -46
- package/dist/controllers/dummy-controller.js.map +1 -1
- package/dist/controllers/general-api-controller.js +95 -100
- package/dist/controllers/general-api-controller.js.map +1 -1
- package/dist/controllers/general-controller.js +81 -82
- package/dist/controllers/general-controller.js.map +1 -1
- package/dist/cores/api/api-service.d.ts +1 -1
- package/dist/cores/api/api-service.js +228 -269
- package/dist/cores/api/api-service.js.map +1 -1
- package/dist/cores/aws/aws-kms-service.d.ts +1 -2
- package/dist/cores/aws/aws-kms-service.js +143 -153
- package/dist/cores/aws/aws-kms-service.js.map +1 -1
- package/dist/cores/aws/aws-s3-service.d.ts +2 -4
- package/dist/cores/aws/aws-s3-service.js +306 -330
- package/dist/cores/aws/aws-s3-service.js.map +1 -1
- package/dist/cores/aws/aws-sns-service.js +147 -153
- package/dist/cores/aws/aws-sns-service.js.map +1 -1
- package/dist/cores/aws/aws-sqs-service.js +149 -170
- package/dist/cores/aws/aws-sqs-service.js.map +1 -1
- package/dist/cores/aws/index.js +10 -20
- package/dist/cores/aws/index.js.map +1 -1
- package/dist/cores/cache/cache-service.d.ts +2 -2
- package/dist/cores/cache/cache-service.js +435 -499
- package/dist/cores/cache/cache-service.js.map +1 -1
- package/dist/cores/config/config-service.d.ts +1 -1
- package/dist/cores/config/config-service.js +56 -63
- package/dist/cores/config/config-service.js.map +1 -1
- package/dist/cores/config/index.js +14 -24
- package/dist/cores/config/index.js.map +1 -1
- package/dist/cores/core-services.d.ts +1 -1
- package/dist/cores/dynamo/dynamo-query-service.js +37 -51
- package/dist/cores/dynamo/dynamo-query-service.js.map +1 -1
- package/dist/cores/dynamo/dynamo-scan-service.d.ts +2 -2
- package/dist/cores/dynamo/dynamo-scan-service.js +29 -40
- package/dist/cores/dynamo/dynamo-scan-service.js.map +1 -1
- package/dist/cores/dynamo/dynamo-service.d.ts +2 -2
- package/dist/cores/dynamo/dynamo-service.js +528 -601
- package/dist/cores/dynamo/dynamo-service.js.map +1 -1
- package/dist/cores/dynamo/tools/expressions.js +17 -7
- package/dist/cores/dynamo/tools/expressions.js.map +1 -1
- package/dist/cores/dynamo/tools/query.js +142 -127
- package/dist/cores/dynamo/tools/query.js.map +1 -1
- package/dist/cores/dynamo/tools/scan.js +111 -97
- package/dist/cores/dynamo/tools/scan.js.map +1 -1
- package/dist/cores/dynamo/tools/serializer.js +17 -7
- package/dist/cores/dynamo/tools/serializer.js.map +1 -1
- package/dist/cores/dynamo/tools/utils.d.ts +0 -2
- package/dist/cores/dynamo/tools/utils.js.map +1 -1
- package/dist/cores/elastic/elastic6-query-service.js +307 -324
- package/dist/cores/elastic/elastic6-query-service.js.map +1 -1
- package/dist/cores/elastic/elastic6-service.d.ts +3 -3
- package/dist/cores/elastic/elastic6-service.js +568 -647
- package/dist/cores/elastic/elastic6-service.js.map +1 -1
- package/dist/cores/elastic/hangul-service.js +52 -54
- package/dist/cores/elastic/hangul-service.js.map +1 -1
- package/dist/cores/lambda/index.js +42 -36
- package/dist/cores/lambda/index.js.map +1 -1
- package/dist/cores/lambda/lambda-alb-handler.d.ts +2 -2
- package/dist/cores/lambda/lambda-alb-handler.js +59 -72
- package/dist/cores/lambda/lambda-alb-handler.js.map +1 -1
- package/dist/cores/lambda/lambda-cognito-handler.js +10 -19
- package/dist/cores/lambda/lambda-cognito-handler.js.map +1 -1
- package/dist/cores/lambda/lambda-cron-handler.d.ts +1 -1
- package/dist/cores/lambda/lambda-cron-handler.js +14 -23
- package/dist/cores/lambda/lambda-cron-handler.js.map +1 -1
- package/dist/cores/lambda/lambda-dynamo-stream-handler.d.ts +2 -2
- package/dist/cores/lambda/lambda-dynamo-stream-handler.js +57 -67
- package/dist/cores/lambda/lambda-dynamo-stream-handler.js.map +1 -1
- package/dist/cores/lambda/lambda-handler.d.ts +22 -22
- package/dist/cores/lambda/lambda-handler.js +93 -106
- package/dist/cores/lambda/lambda-handler.js.map +1 -1
- package/dist/cores/lambda/lambda-notification-handler.d.ts +1 -1
- package/dist/cores/lambda/lambda-notification-handler.js +39 -50
- package/dist/cores/lambda/lambda-notification-handler.js.map +1 -1
- package/dist/cores/lambda/lambda-sns-handler.js +79 -88
- package/dist/cores/lambda/lambda-sns-handler.js.map +1 -1
- package/dist/cores/lambda/lambda-sqs-handler.js +79 -88
- package/dist/cores/lambda/lambda-sqs-handler.js.map +1 -1
- package/dist/cores/lambda/lambda-web-handler.d.ts +21 -43
- package/dist/cores/lambda/lambda-web-handler.js +392 -482
- package/dist/cores/lambda/lambda-web-handler.js.map +1 -1
- package/dist/cores/lambda/lambda-wss-handler.js +23 -32
- package/dist/cores/lambda/lambda-wss-handler.js.map +1 -1
- package/dist/cores/protocol/index.js +10 -20
- package/dist/cores/protocol/index.js.map +1 -1
- package/dist/cores/protocol/protocol-service.d.ts +3 -3
- package/dist/cores/protocol/protocol-service.js +235 -227
- package/dist/cores/protocol/protocol-service.js.map +1 -1
- package/dist/cores/storage/http-storage-service.js +65 -85
- package/dist/cores/storage/http-storage-service.js.map +1 -1
- package/dist/cores/storage/model-manager.js +66 -85
- package/dist/cores/storage/model-manager.js.map +1 -1
- package/dist/cores/storage/proxy-storage-service.d.ts +2 -2
- package/dist/cores/storage/proxy-storage-service.js +562 -599
- package/dist/cores/storage/proxy-storage-service.js.map +1 -1
- package/dist/cores/storage/redis-storage-service.js +163 -177
- package/dist/cores/storage/redis-storage-service.js.map +1 -1
- package/dist/cores/storage/storage-service.js +281 -322
- package/dist/cores/storage/storage-service.js.map +1 -1
- package/dist/engine/builder.d.ts +1 -1
- package/dist/engine/builder.js +59 -63
- package/dist/engine/builder.js.map +1 -1
- package/dist/engine/engine.d.ts +4 -4
- package/dist/engine/engine.js +9 -18
- package/dist/engine/engine.js.map +1 -1
- package/dist/engine/types.d.ts +1 -1
- package/dist/engine/utilities.d.ts +14 -10
- package/dist/engine/utilities.js +301 -280
- package/dist/engine/utilities.js.map +1 -1
- package/dist/environ.js +4 -6
- package/dist/environ.js.map +1 -1
- package/dist/extended/abstract-service.js +595 -645
- package/dist/extended/abstract-service.js.map +1 -1
- package/dist/extended/libs/sig-v4.js.map +1 -1
- package/dist/generated/field-registry.d.ts +10 -0
- package/dist/generated/field-registry.js +17 -0
- package/dist/generated/field-registry.js.map +1 -0
- package/dist/helpers/helpers.d.ts +17 -9
- package/dist/helpers/helpers.js +88 -78
- package/dist/helpers/helpers.js.map +1 -1
- package/dist/index.js +17 -7
- package/dist/index.js.map +1 -1
- package/dist/lib/dynamodb-value.js +2 -3
- package/dist/lib/dynamodb-value.js.map +1 -1
- package/dist/tools/express.js +4 -5
- package/dist/tools/express.js.map +1 -1
- package/dist/tools/tools.d.ts +3 -1
- package/dist/tools/tools.js +14 -21
- package/dist/tools/tools.js.map +1 -1
- package/package.json +19 -18
- package/dist/exec-cli.d.ts +0 -2
- package/dist/exec-cli.js +0 -211
- package/dist/exec-cli.js.map +0 -1
- package/dist/lib/dynamo/expressions.d.ts +0 -14
- package/dist/lib/dynamo/expressions.js +0 -212
- package/dist/lib/dynamo/expressions.js.map +0 -1
- package/dist/lib/dynamo/query.d.ts +0 -43
- package/dist/lib/dynamo/query.js +0 -246
- package/dist/lib/dynamo/query.js.map +0 -1
- package/dist/lib/dynamo/scan.d.ts +0 -33
- package/dist/lib/dynamo/scan.js +0 -172
- package/dist/lib/dynamo/scan.js.map +0 -1
- package/dist/lib/dynamo/serializer.d.ts +0 -12
- package/dist/lib/dynamo/serializer.js +0 -243
- package/dist/lib/dynamo/serializer.js.map +0 -1
- package/dist/lib/dynamo/utils.d.ts +0 -15
- package/dist/lib/dynamo/utils.js +0 -129
- package/dist/lib/dynamo/utils.js.map +0 -1
- package/dist/tools/shared.d.ts +0 -37
- package/dist/tools/shared.js +0 -130
- package/dist/tools/shared.js.map +0 -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
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
4
|
};
|
|
@@ -33,95 +24,95 @@ const NS = engine_1.$U.NS('HSNS', 'yellow'); // NAMESPACE TO BE PRINTED.
|
|
|
33
24
|
* - default SNS Handler w/ event-listeners.
|
|
34
25
|
*/
|
|
35
26
|
class LambdaSNSHandler extends lambda_handler_1.LambdaSubHandler {
|
|
27
|
+
//* shared config.
|
|
28
|
+
static REPORT_ERROR = lambda_handler_1.LambdaHandler.REPORT_ERROR;
|
|
36
29
|
/**
|
|
37
30
|
* default constructor w/ registering self.
|
|
38
31
|
*/
|
|
39
32
|
constructor(lambda, register) {
|
|
40
33
|
super(lambda, register ? 'sns' : undefined);
|
|
41
|
-
this.listeners = [];
|
|
42
|
-
//* for debugging. save last result
|
|
43
|
-
this.$lastResult = null;
|
|
44
|
-
/**
|
|
45
|
-
* Default SNS Handler.
|
|
46
|
-
*/
|
|
47
|
-
this.handle = (event) => __awaiter(this, void 0, void 0, function* () {
|
|
48
|
-
//* for each records.
|
|
49
|
-
const records = event.Records || [];
|
|
50
|
-
(0, engine_1._log)(NS, `handle(len=${records.length})...`);
|
|
51
|
-
// _log(NS, '> event =', $U.json(event));
|
|
52
|
-
const $doReportError = (0, lambda_handler_1.buildReportError)(LambdaSNSHandler.REPORT_ERROR);
|
|
53
|
-
//* handle sqs record data.
|
|
54
|
-
const onSNSRecord = (record, index) => __awaiter(this, void 0, void 0, function* () {
|
|
55
|
-
(0, engine_1._log)(NS, `onSNSRecord(${(record && record.EventSource) || ''}, ${index})...`);
|
|
56
|
-
//* check if via protocol-service.
|
|
57
|
-
const $msg = record.Sns;
|
|
58
|
-
const { Subject } = $msg;
|
|
59
|
-
if (Subject == 'x-protocol-service') {
|
|
60
|
-
const param = protocol_1.default.service.asTransformer('sns').transformToParam($msg);
|
|
61
|
-
const context = param.context;
|
|
62
|
-
const callback = param.callback || '';
|
|
63
|
-
const result = yield this.lambda
|
|
64
|
-
.handleProtocol(param)
|
|
65
|
-
.then(body => {
|
|
66
|
-
// _log(NS, `! res[${index}] =`, $U.json(body));
|
|
67
|
-
callback && (0, engine_1._log)(NS, `> callback[${index}] =`, callback); // ex) api://lemon-queue-api-dev/batch/test11/callback#2.2.1
|
|
68
|
-
context && (0, engine_1._log)(NS, `> context[${index}] =`, engine_1.$U.json(context)); // ex) {"source":"express","domain":"localhost"}
|
|
69
|
-
//* report call back.
|
|
70
|
-
const proto = callback ? protocol_1.default.service.fromURL(context, callback, null, body || {}) : null;
|
|
71
|
-
proto && (0, engine_1._log)(NS, `> protocol[${index}] =`, engine_1.$U.json(proto));
|
|
72
|
-
(0, engine_1._log)(NS, `> config.service =`, this.lambda.config && this.lambda.config.getService());
|
|
73
|
-
//* check if service is in same..
|
|
74
|
-
if (proto && this.lambda.config && proto.service == this.lambda.config.getService()) {
|
|
75
|
-
proto.context.depth = engine_1.$U.N(proto.context.depth, 1) + 1;
|
|
76
|
-
proto.body = body;
|
|
77
|
-
(0, engine_1._log)(NS, `! body[${index}] =`, engine_1.$U.json(body));
|
|
78
|
-
return this.lambda.handleProtocol(proto).then(body => {
|
|
79
|
-
(0, engine_1._log)(NS, `>> body[${index}].callback =`, engine_1.$U.json(body));
|
|
80
|
-
return body;
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
//* call the remote service if callback.
|
|
84
|
-
return proto ? protocol_1.default.service.execute(proto) : body;
|
|
85
|
-
})
|
|
86
|
-
.catch(e => $doReportError(e, param.context, null, { protocol: param }));
|
|
87
|
-
(0, engine_1._log)(NS, `> sns[${index}].res =`, engine_1.$U.json(result));
|
|
88
|
-
return typeof result == 'string' ? result : engine_1.$U.json(result);
|
|
89
|
-
}
|
|
90
|
-
else {
|
|
91
|
-
//* retrieve message-attributes as `param`
|
|
92
|
-
const param = Object.keys($msg.MessageAttributes || {}).reduce((O, key) => {
|
|
93
|
-
const V = $msg.MessageAttributes[key];
|
|
94
|
-
if (!V)
|
|
95
|
-
return O;
|
|
96
|
-
O[key] = V.Type == 'Number' ? Number(V.Value) : V.Value;
|
|
97
|
-
return O;
|
|
98
|
-
}, { subject: Subject });
|
|
99
|
-
//* load data as `body`
|
|
100
|
-
const body = typeof $msg.Message == 'string' && $msg.Message.startsWith('{') && $msg.Message.endsWith('}')
|
|
101
|
-
? JSON.parse($msg.Message)
|
|
102
|
-
: { data: $msg.Message };
|
|
103
|
-
(0, engine_1._log)(NS, `> sns[${index}].param =`, engine_1.$U.json(param));
|
|
104
|
-
(0, engine_1._log)(NS, `> sns[${index}].body =`, engine_1.$U.json(body));
|
|
105
|
-
//* call all listeners in parrallel.
|
|
106
|
-
const asyncNext = (fn, j) => new Promise(resolve => {
|
|
107
|
-
resolve(fn('SNS', param, body, null));
|
|
108
|
-
}).catch(e => $doReportError(e, null, null, { param, body, i: index, j }));
|
|
109
|
-
const res = yield Promise.all(this.listeners.map(asyncNext));
|
|
110
|
-
return res.join(',');
|
|
111
|
-
}
|
|
112
|
-
});
|
|
113
|
-
//* serialize each records.
|
|
114
|
-
this.$lastResult = yield (0, engine_1.do_parrallel)(records, (record, i) => onSNSRecord(record, i).catch(e => $doReportError(e, null, null, { record, i })), 5);
|
|
115
|
-
//* returns.
|
|
116
|
-
return;
|
|
117
|
-
});
|
|
118
34
|
// _log(NS, `LambdaSNSHandler()..`);
|
|
119
35
|
}
|
|
36
|
+
listeners = [];
|
|
120
37
|
addListener(handler) {
|
|
121
38
|
this.listeners.push(handler);
|
|
122
39
|
}
|
|
40
|
+
//* for debugging. save last result
|
|
41
|
+
$lastResult = null;
|
|
42
|
+
/**
|
|
43
|
+
* Default SNS Handler.
|
|
44
|
+
*/
|
|
45
|
+
handle = async (event) => {
|
|
46
|
+
//* for each records.
|
|
47
|
+
const records = event.Records || [];
|
|
48
|
+
(0, engine_1._log)(NS, `handle(len=${records.length})...`);
|
|
49
|
+
// _log(NS, '> event =', $U.json(event));
|
|
50
|
+
const $doReportError = (0, lambda_handler_1.buildReportError)(LambdaSNSHandler.REPORT_ERROR);
|
|
51
|
+
//* handle sqs record data.
|
|
52
|
+
const onSNSRecord = async (record, index) => {
|
|
53
|
+
(0, engine_1._log)(NS, `onSNSRecord(${(record && record.EventSource) || ''}, ${index})...`);
|
|
54
|
+
//* check if via protocol-service.
|
|
55
|
+
const $msg = record.Sns;
|
|
56
|
+
const { Subject } = $msg;
|
|
57
|
+
if (Subject == 'x-protocol-service') {
|
|
58
|
+
const param = protocol_1.default.service.asTransformer('sns').transformToParam($msg);
|
|
59
|
+
const context = param.context;
|
|
60
|
+
const callback = param.callback || '';
|
|
61
|
+
const result = await this.lambda
|
|
62
|
+
.handleProtocol(param)
|
|
63
|
+
.then(body => {
|
|
64
|
+
// _log(NS, `! res[${index}] =`, $U.json(body));
|
|
65
|
+
callback && (0, engine_1._log)(NS, `> callback[${index}] =`, callback); // ex) api://lemon-queue-api-dev/batch/test11/callback#2.2.1
|
|
66
|
+
context && (0, engine_1._log)(NS, `> context[${index}] =`, engine_1.$U.json(context)); // ex) {"source":"express","domain":"localhost"}
|
|
67
|
+
//* report call back.
|
|
68
|
+
const proto = callback ? protocol_1.default.service.fromURL(context, callback, null, body || {}) : null;
|
|
69
|
+
proto && (0, engine_1._log)(NS, `> protocol[${index}] =`, engine_1.$U.json(proto));
|
|
70
|
+
(0, engine_1._log)(NS, `> config.service =`, this.lambda.config && this.lambda.config.getService());
|
|
71
|
+
//* check if service is in same..
|
|
72
|
+
if (proto && this.lambda.config && proto.service == this.lambda.config.getService()) {
|
|
73
|
+
proto.context.depth = engine_1.$U.N(proto.context.depth, 1) + 1;
|
|
74
|
+
proto.body = body;
|
|
75
|
+
(0, engine_1._log)(NS, `! body[${index}] =`, engine_1.$U.json(body));
|
|
76
|
+
return this.lambda.handleProtocol(proto).then(body => {
|
|
77
|
+
(0, engine_1._log)(NS, `>> body[${index}].callback =`, engine_1.$U.json(body));
|
|
78
|
+
return body;
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
//* call the remote service if callback.
|
|
82
|
+
return proto ? protocol_1.default.service.execute(proto) : body;
|
|
83
|
+
})
|
|
84
|
+
.catch(e => $doReportError(e, param.context, null, { protocol: param }));
|
|
85
|
+
(0, engine_1._log)(NS, `> sns[${index}].res =`, engine_1.$U.json(result));
|
|
86
|
+
return typeof result == 'string' ? result : engine_1.$U.json(result);
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
//* retrieve message-attributes as `param`
|
|
90
|
+
const param = Object.keys($msg.MessageAttributes || {}).reduce((O, key) => {
|
|
91
|
+
const V = $msg.MessageAttributes[key];
|
|
92
|
+
if (!V)
|
|
93
|
+
return O;
|
|
94
|
+
O[key] = V.Type == 'Number' ? Number(V.Value) : V.Value;
|
|
95
|
+
return O;
|
|
96
|
+
}, { subject: Subject });
|
|
97
|
+
//* load data as `body`
|
|
98
|
+
const body = typeof $msg.Message == 'string' && $msg.Message.startsWith('{') && $msg.Message.endsWith('}')
|
|
99
|
+
? JSON.parse($msg.Message)
|
|
100
|
+
: { data: $msg.Message };
|
|
101
|
+
(0, engine_1._log)(NS, `> sns[${index}].param =`, engine_1.$U.json(param));
|
|
102
|
+
(0, engine_1._log)(NS, `> sns[${index}].body =`, engine_1.$U.json(body));
|
|
103
|
+
//* call all listeners in parrallel.
|
|
104
|
+
const asyncNext = (fn, j) => new Promise(resolve => {
|
|
105
|
+
resolve(fn('SNS', param, body, null));
|
|
106
|
+
}).catch(e => $doReportError(e, null, null, { param, body, i: index, j }));
|
|
107
|
+
const res = await Promise.all(this.listeners.map(asyncNext));
|
|
108
|
+
return res.join(',');
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
//* serialize each records.
|
|
112
|
+
this.$lastResult = await (0, engine_1.do_parrallel)(records, (record, i) => onSNSRecord(record, i).catch(e => $doReportError(e, null, null, { record, i })), 5);
|
|
113
|
+
//* returns.
|
|
114
|
+
return;
|
|
115
|
+
};
|
|
123
116
|
}
|
|
124
117
|
exports.LambdaSNSHandler = LambdaSNSHandler;
|
|
125
|
-
//* shared config.
|
|
126
|
-
LambdaSNSHandler.REPORT_ERROR = lambda_handler_1.LambdaHandler.REPORT_ERROR;
|
|
127
118
|
//# sourceMappingURL=lambda-sns-handler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lambda-sns-handler.js","sourceRoot":"","sources":["../../../src/cores/lambda/lambda-sns-handler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"lambda-sns-handler.js","sourceRoot":"","sources":["../../../src/cores/lambda/lambda-sns-handler.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
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
4
|
};
|
|
@@ -33,95 +24,95 @@ const NS = engine_1.$U.NS('HSQS', 'yellow'); // NAMESPACE TO BE PRINTED.
|
|
|
33
24
|
* - default SQS Handler w/ event-listeners.
|
|
34
25
|
*/
|
|
35
26
|
class LambdaSQSHandler extends lambda_handler_1.LambdaSubHandler {
|
|
27
|
+
//* shared config.
|
|
28
|
+
static REPORT_ERROR = lambda_handler_1.LambdaHandler.REPORT_ERROR;
|
|
36
29
|
/**
|
|
37
30
|
* default constructor w/ registering self.
|
|
38
31
|
*/
|
|
39
32
|
constructor(lambda, register) {
|
|
40
33
|
super(lambda, register ? 'sqs' : undefined);
|
|
41
|
-
this.listeners = [];
|
|
42
|
-
//* for debugging. save last result
|
|
43
|
-
this.$lastResult = null;
|
|
44
|
-
/**
|
|
45
|
-
* Default SQS Handler.
|
|
46
|
-
*/
|
|
47
|
-
this.handle = (event) => __awaiter(this, void 0, void 0, function* () {
|
|
48
|
-
//* for each records.
|
|
49
|
-
const records = event.Records || [];
|
|
50
|
-
(0, engine_1._log)(NS, `handle(len=${records.length})...`);
|
|
51
|
-
// _log(NS, '> event =', $U.json(event));
|
|
52
|
-
const $doReportError = (0, lambda_handler_1.buildReportError)(LambdaSQSHandler.REPORT_ERROR);
|
|
53
|
-
//* handle sqs record data.
|
|
54
|
-
const onSQSRecord = (record, index) => __awaiter(this, void 0, void 0, function* () {
|
|
55
|
-
(0, engine_1._log)(NS, `onSQSRecord(${(record && record.messageId) || ''}, ${index})...`);
|
|
56
|
-
//* retrieve message-attributes as `param`
|
|
57
|
-
const param = Object.keys(record.messageAttributes || {}).reduce((O, key) => {
|
|
58
|
-
const V = record.messageAttributes[key];
|
|
59
|
-
if (!V)
|
|
60
|
-
return O;
|
|
61
|
-
const type = V.dataType || '';
|
|
62
|
-
const val = V.stringValue || '';
|
|
63
|
-
O[key] = type == 'Number' ? Number(val) : val;
|
|
64
|
-
return O;
|
|
65
|
-
}, {});
|
|
66
|
-
//* check if via protocol-service.
|
|
67
|
-
if (param['Subject'] && param['Subject'] == 'x-protocol-service') {
|
|
68
|
-
const param = protocol_1.default.service.asTransformer('sqs').transformToParam(record);
|
|
69
|
-
const context = param.context;
|
|
70
|
-
const callback = param.callback || '';
|
|
71
|
-
const result = yield this.lambda
|
|
72
|
-
.handleProtocol(param)
|
|
73
|
-
.then(body => {
|
|
74
|
-
// _log(NS, `! res[${index}] =`, $U.json(body));
|
|
75
|
-
callback && (0, engine_1._log)(NS, `> callback[${index}] =`, callback); // ex) api://lemon-queue-api-dev/batch/test11/callback#2.2.1
|
|
76
|
-
context && (0, engine_1._log)(NS, `> context[${index}] =`, engine_1.$U.json(context)); // ex) {"source":"express","domain":"localhost"}
|
|
77
|
-
//* report call back.
|
|
78
|
-
const proto = callback ? protocol_1.default.service.fromURL(context, callback, null, body || {}) : null;
|
|
79
|
-
proto && (0, engine_1._log)(NS, `> protocol[${index}] =`, engine_1.$U.json(proto));
|
|
80
|
-
(0, engine_1._log)(NS, `> config.service =`, this.lambda.config && this.lambda.config.getService());
|
|
81
|
-
//* check if service is in same..
|
|
82
|
-
if (proto && this.lambda.config && proto.service == this.lambda.config.getService()) {
|
|
83
|
-
proto.context.depth = engine_1.$U.N(proto.context.depth, 1) + 1;
|
|
84
|
-
proto.body = body;
|
|
85
|
-
(0, engine_1._log)(NS, `! body[${index}] =`, engine_1.$U.json(body));
|
|
86
|
-
return this.lambda.handleProtocol(proto).then(body => {
|
|
87
|
-
(0, engine_1._log)(NS, `>> body[${index}].callback =`, engine_1.$U.json(body));
|
|
88
|
-
return body;
|
|
89
|
-
});
|
|
90
|
-
}
|
|
91
|
-
//* call the remote service if callback.
|
|
92
|
-
return proto ? protocol_1.default.service.execute(proto) : body;
|
|
93
|
-
})
|
|
94
|
-
.catch(e => $doReportError(e, param.context, null, { protocol: param }));
|
|
95
|
-
(0, engine_1._log)(NS, `> sqs[${index}].res =`, engine_1.$U.json(result));
|
|
96
|
-
return typeof result == 'string' ? result : engine_1.$U.json(result);
|
|
97
|
-
}
|
|
98
|
-
else {
|
|
99
|
-
//* load data as `body`
|
|
100
|
-
const body = typeof record.body == 'string' && record.body.startsWith('{') && record.body.endsWith('}')
|
|
101
|
-
? JSON.parse(record.body)
|
|
102
|
-
: { data: record.body };
|
|
103
|
-
(0, engine_1._log)(NS, `> sqs[${index}].param =`, engine_1.$U.json(param));
|
|
104
|
-
(0, engine_1._log)(NS, `> sqs[${index}].body =`, engine_1.$U.json(body));
|
|
105
|
-
//* call all listeners in parrallel.
|
|
106
|
-
const asyncNext = (fn, j) => new Promise(resolve => {
|
|
107
|
-
resolve(fn('SQS', param, body, null));
|
|
108
|
-
}).catch(e => $doReportError(e, null, null, { param, body, i: index, j }));
|
|
109
|
-
const res = yield Promise.all(this.listeners.map(asyncNext));
|
|
110
|
-
return res.join(',');
|
|
111
|
-
}
|
|
112
|
-
});
|
|
113
|
-
//* serialize each records.
|
|
114
|
-
this.$lastResult = yield (0, engine_1.do_parrallel)(records, (record, i) => onSQSRecord(record, i).catch(e => $doReportError(e, null, null, { record, i })), 1);
|
|
115
|
-
//* returns void.
|
|
116
|
-
return;
|
|
117
|
-
});
|
|
118
34
|
// _log(NS, `LambdaSQSHandler()..`);
|
|
119
35
|
}
|
|
36
|
+
listeners = [];
|
|
120
37
|
addListener(handler) {
|
|
121
38
|
this.listeners.push(handler);
|
|
122
39
|
}
|
|
40
|
+
//* for debugging. save last result
|
|
41
|
+
$lastResult = null;
|
|
42
|
+
/**
|
|
43
|
+
* Default SQS Handler.
|
|
44
|
+
*/
|
|
45
|
+
handle = async (event) => {
|
|
46
|
+
//* for each records.
|
|
47
|
+
const records = event.Records || [];
|
|
48
|
+
(0, engine_1._log)(NS, `handle(len=${records.length})...`);
|
|
49
|
+
// _log(NS, '> event =', $U.json(event));
|
|
50
|
+
const $doReportError = (0, lambda_handler_1.buildReportError)(LambdaSQSHandler.REPORT_ERROR);
|
|
51
|
+
//* handle sqs record data.
|
|
52
|
+
const onSQSRecord = async (record, index) => {
|
|
53
|
+
(0, engine_1._log)(NS, `onSQSRecord(${(record && record.messageId) || ''}, ${index})...`);
|
|
54
|
+
//* retrieve message-attributes as `param`
|
|
55
|
+
const param = Object.keys(record.messageAttributes || {}).reduce((O, key) => {
|
|
56
|
+
const V = record.messageAttributes[key];
|
|
57
|
+
if (!V)
|
|
58
|
+
return O;
|
|
59
|
+
const type = V.dataType || '';
|
|
60
|
+
const val = V.stringValue || '';
|
|
61
|
+
O[key] = type == 'Number' ? Number(val) : val;
|
|
62
|
+
return O;
|
|
63
|
+
}, {});
|
|
64
|
+
//* check if via protocol-service.
|
|
65
|
+
if (param['Subject'] && param['Subject'] == 'x-protocol-service') {
|
|
66
|
+
const param = protocol_1.default.service.asTransformer('sqs').transformToParam(record);
|
|
67
|
+
const context = param.context;
|
|
68
|
+
const callback = param.callback || '';
|
|
69
|
+
const result = await this.lambda
|
|
70
|
+
.handleProtocol(param)
|
|
71
|
+
.then(body => {
|
|
72
|
+
// _log(NS, `! res[${index}] =`, $U.json(body));
|
|
73
|
+
callback && (0, engine_1._log)(NS, `> callback[${index}] =`, callback); // ex) api://lemon-queue-api-dev/batch/test11/callback#2.2.1
|
|
74
|
+
context && (0, engine_1._log)(NS, `> context[${index}] =`, engine_1.$U.json(context)); // ex) {"source":"express","domain":"localhost"}
|
|
75
|
+
//* report call back.
|
|
76
|
+
const proto = callback ? protocol_1.default.service.fromURL(context, callback, null, body || {}) : null;
|
|
77
|
+
proto && (0, engine_1._log)(NS, `> protocol[${index}] =`, engine_1.$U.json(proto));
|
|
78
|
+
(0, engine_1._log)(NS, `> config.service =`, this.lambda.config && this.lambda.config.getService());
|
|
79
|
+
//* check if service is in same..
|
|
80
|
+
if (proto && this.lambda.config && proto.service == this.lambda.config.getService()) {
|
|
81
|
+
proto.context.depth = engine_1.$U.N(proto.context.depth, 1) + 1;
|
|
82
|
+
proto.body = body;
|
|
83
|
+
(0, engine_1._log)(NS, `! body[${index}] =`, engine_1.$U.json(body));
|
|
84
|
+
return this.lambda.handleProtocol(proto).then(body => {
|
|
85
|
+
(0, engine_1._log)(NS, `>> body[${index}].callback =`, engine_1.$U.json(body));
|
|
86
|
+
return body;
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
//* call the remote service if callback.
|
|
90
|
+
return proto ? protocol_1.default.service.execute(proto) : body;
|
|
91
|
+
})
|
|
92
|
+
.catch(e => $doReportError(e, param.context, null, { protocol: param }));
|
|
93
|
+
(0, engine_1._log)(NS, `> sqs[${index}].res =`, engine_1.$U.json(result));
|
|
94
|
+
return typeof result == 'string' ? result : engine_1.$U.json(result);
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
//* load data as `body`
|
|
98
|
+
const body = typeof record.body == 'string' && record.body.startsWith('{') && record.body.endsWith('}')
|
|
99
|
+
? JSON.parse(record.body)
|
|
100
|
+
: { data: record.body };
|
|
101
|
+
(0, engine_1._log)(NS, `> sqs[${index}].param =`, engine_1.$U.json(param));
|
|
102
|
+
(0, engine_1._log)(NS, `> sqs[${index}].body =`, engine_1.$U.json(body));
|
|
103
|
+
//* call all listeners in parrallel.
|
|
104
|
+
const asyncNext = (fn, j) => new Promise(resolve => {
|
|
105
|
+
resolve(fn('SQS', param, body, null));
|
|
106
|
+
}).catch(e => $doReportError(e, null, null, { param, body, i: index, j }));
|
|
107
|
+
const res = await Promise.all(this.listeners.map(asyncNext));
|
|
108
|
+
return res.join(',');
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
//* serialize each records.
|
|
112
|
+
this.$lastResult = await (0, engine_1.do_parrallel)(records, (record, i) => onSQSRecord(record, i).catch(e => $doReportError(e, null, null, { record, i })), 1);
|
|
113
|
+
//* returns void.
|
|
114
|
+
return;
|
|
115
|
+
};
|
|
123
116
|
}
|
|
124
117
|
exports.LambdaSQSHandler = LambdaSQSHandler;
|
|
125
|
-
//* shared config.
|
|
126
|
-
LambdaSQSHandler.REPORT_ERROR = lambda_handler_1.LambdaHandler.REPORT_ERROR;
|
|
127
118
|
//# sourceMappingURL=lambda-sqs-handler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lambda-sqs-handler.js","sourceRoot":"","sources":["../../../src/cores/lambda/lambda-sqs-handler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"lambda-sqs-handler.js","sourceRoot":"","sources":["../../../src/cores/lambda/lambda-sqs-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,9 +24,9 @@ interface ProxyParams<T = any> {
|
|
|
24
24
|
/** protocol parameters */
|
|
25
25
|
$ctx: NextContext<T>;
|
|
26
26
|
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
27
|
+
type ProxyResult = APIGatewayProxyResult;
|
|
28
|
+
type ProxyResponser = () => ProxyResult;
|
|
29
|
+
type ProxyChain = ProxyParams | ProxyResponser;
|
|
30
30
|
/**
|
|
31
31
|
* build http response body
|
|
32
32
|
* - if body is string type, then content-type would be text/<some>.
|
|
@@ -52,7 +52,7 @@ export declare const redirect: (location: any, status?: number) => APIGatewayPro
|
|
|
52
52
|
* @param event event
|
|
53
53
|
* @param $ctx context
|
|
54
54
|
*/
|
|
55
|
-
export declare const promised: (event:
|
|
55
|
+
export declare const promised: (event: WEBEvent, $ctx: NextContext) => Promise<ProxyChain>;
|
|
56
56
|
/**
|
|
57
57
|
* builder for default handler
|
|
58
58
|
*/
|
|
@@ -60,7 +60,7 @@ export declare const mxNextHandler: (thiz: LambdaWEBHandler) => (params: ProxyCh
|
|
|
60
60
|
/**
|
|
61
61
|
* builder for failure promised.
|
|
62
62
|
*/
|
|
63
|
-
export declare const mxNextFailure: (event:
|
|
63
|
+
export declare const mxNextFailure: (event: WEBEvent, $ctx: NextContext) => (e: any) => APIGatewayProxyResult | Promise<APIGatewayProxyResult>;
|
|
64
64
|
/**
|
|
65
65
|
* class: LambdaWEBHandler
|
|
66
66
|
* - default WEB Handler w/ event-listeners.
|
|
@@ -111,10 +111,6 @@ export declare class LambdaWEBHandler extends LambdaSubHandler<WEBHandler> {
|
|
|
111
111
|
* - extracting header content, and parse.
|
|
112
112
|
*/
|
|
113
113
|
tools: (headers: HttpHeaderSet) => HttpHeaderTool<APIGatewayEventRequestContext>;
|
|
114
|
-
/**
|
|
115
|
-
* builder of tools without kms.
|
|
116
|
-
*/
|
|
117
|
-
toolsV2: (headers: HttpHeaderSet, reqContext?: APIGatewayEventRequestContext) => HttpHeaderTool<APIGatewayEventRequestContext>;
|
|
118
114
|
/**
|
|
119
115
|
* pack the request context for Http request.
|
|
120
116
|
*
|
|
@@ -199,6 +195,8 @@ export interface HttpHeaderTool<RequestContext> {
|
|
|
199
195
|
*/
|
|
200
196
|
export declare class MyHttpHeaderTool implements HttpHeaderTool<APIGatewayEventRequestContext> {
|
|
201
197
|
protected headers: HttpHeaderSet;
|
|
198
|
+
protected static _accountId?: string;
|
|
199
|
+
protected static _accountIdPromise?: Promise<string>;
|
|
202
200
|
/**
|
|
203
201
|
* default constructor.
|
|
204
202
|
* @param headers
|
|
@@ -208,7 +206,15 @@ export declare class MyHttpHeaderTool implements HttpHeaderTool<APIGatewayEventR
|
|
|
208
206
|
});
|
|
209
207
|
hello(): string;
|
|
210
208
|
/** expose `onlyDefined` */
|
|
211
|
-
onlyDefined: <T extends object>(N: T, $def?: T) => T;
|
|
209
|
+
onlyDefined: <T extends object>(N: T, $def?: T | null) => T | null;
|
|
210
|
+
/**
|
|
211
|
+
* build default JWT secret from AWS account id + magic key.
|
|
212
|
+
*/
|
|
213
|
+
buildJwtSecret: () => Promise<string>;
|
|
214
|
+
/**
|
|
215
|
+
* get current aws account-id via STS. (once)
|
|
216
|
+
*/
|
|
217
|
+
protected getAccountId: () => Promise<string>;
|
|
212
218
|
/**
|
|
213
219
|
* get values by name
|
|
214
220
|
* @param name case-insentive name of field
|
|
@@ -256,6 +262,10 @@ export declare class MyHttpHeaderTool implements HttpHeaderTool<APIGatewayEventR
|
|
|
256
262
|
alias?: string;
|
|
257
263
|
/** current ms */
|
|
258
264
|
current?: number;
|
|
265
|
+
/** expiration time in seconds */
|
|
266
|
+
exp?: number;
|
|
267
|
+
/** if true, use HS256 */
|
|
268
|
+
useHs256?: boolean;
|
|
259
269
|
}): Promise<{
|
|
260
270
|
signature: string;
|
|
261
271
|
message: string;
|
|
@@ -263,6 +273,7 @@ export declare class MyHttpHeaderTool implements HttpHeaderTool<APIGatewayEventR
|
|
|
263
273
|
}>;
|
|
264
274
|
/**
|
|
265
275
|
* parse as jwt-token, and validate the signature.
|
|
276
|
+
* - supports both `kms/*` and `api/*` issuers via verifyToken()
|
|
266
277
|
*/
|
|
267
278
|
parseIdentityJWT<T extends NextIdentityJwt = NextIdentityJwt>(token: string, params?: {
|
|
268
279
|
/** current ms */
|
|
@@ -284,39 +295,6 @@ export declare class MyHttpHeaderTool implements HttpHeaderTool<APIGatewayEventR
|
|
|
284
295
|
* override with AWS request-context
|
|
285
296
|
*/
|
|
286
297
|
prepareContext($org: NextContext, reqContext: APIGatewayEventRequestContext): Promise<NextContext>;
|
|
287
|
-
}
|
|
288
|
-
export declare class MyHttpHeaderToolV2 extends MyHttpHeaderTool {
|
|
289
|
-
protected reqContext?: APIGatewayEventRequestContext;
|
|
290
|
-
constructor(headers: HttpHeaderSet, reqContext?: APIGatewayEventRequestContext);
|
|
291
|
-
hello(): string;
|
|
292
|
-
/**
|
|
293
|
-
* build default JWT secret from AWS account id + magic key.
|
|
294
|
-
*/
|
|
295
|
-
buildJwtSecret: () => string;
|
|
296
|
-
/**
|
|
297
|
-
* encode as JWT string.
|
|
298
|
-
*/
|
|
299
|
-
encodeIdentityJWT(identity: NextIdentity, params?: {
|
|
300
|
-
/** KMS alias to use (for RS256) or issuer name (for HS256) */
|
|
301
|
-
alias?: string;
|
|
302
|
-
/** current ms */
|
|
303
|
-
current?: number;
|
|
304
|
-
/** expiration time in seconds */
|
|
305
|
-
exp?: number;
|
|
306
|
-
}): Promise<{
|
|
307
|
-
signature: string;
|
|
308
|
-
message: string;
|
|
309
|
-
token: string;
|
|
310
|
-
}>;
|
|
311
|
-
/**
|
|
312
|
-
* parse as jwt-token, and validate the signature.
|
|
313
|
-
*/
|
|
314
|
-
parseIdentityJWT<T extends NextIdentityJwt = NextIdentityJwt>(token: string, params?: {
|
|
315
|
-
/** current ms */
|
|
316
|
-
current?: number;
|
|
317
|
-
/** flag to verify JWT (default true) */
|
|
318
|
-
verify?: boolean;
|
|
319
|
-
}): Promise<T>;
|
|
320
298
|
/**
|
|
321
299
|
* verify token signature by iss.
|
|
322
300
|
* - `kms/*`: verify by KMS (RS256)
|