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
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
3
|
exports.LambdaALBHandler = exports.ALBHttpHeaderTool = void 0;
|
|
13
4
|
/**
|
|
@@ -29,6 +20,7 @@ const NS = engine_1.$U.NS('HCRN', 'yellow'); // NAMESPACE TO BE PRINTED.
|
|
|
29
20
|
* ALB Http Header Tool
|
|
30
21
|
*/
|
|
31
22
|
class ALBHttpHeaderTool {
|
|
23
|
+
tool;
|
|
32
24
|
constructor(headers, options) {
|
|
33
25
|
this.tool = new lambda_web_handler_1.MyHttpHeaderTool(headers, options);
|
|
34
26
|
}
|
|
@@ -50,14 +42,11 @@ class ALBHttpHeaderTool {
|
|
|
50
42
|
parseCookiesHeader(name) {
|
|
51
43
|
return this.tool.parseCookiesHeader(name);
|
|
52
44
|
}
|
|
53
|
-
prepareContext($org, reqContext) {
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
throw new Error(`.targetGroupArn is invalid - ${errScope}`);
|
|
59
|
-
return Object.assign({}, $org);
|
|
60
|
-
});
|
|
45
|
+
async prepareContext($org, reqContext) {
|
|
46
|
+
const errScope = `alb.prepareContext(${$org?.requestId ?? ''})`;
|
|
47
|
+
if (typeof reqContext?.elb?.targetGroupArn !== 'string')
|
|
48
|
+
throw new Error(`.targetGroupArn is invalid - ${errScope}`);
|
|
49
|
+
return { ...$org };
|
|
61
50
|
}
|
|
62
51
|
onlyDefined(obj) {
|
|
63
52
|
return this.tool.onlyDefined(obj);
|
|
@@ -74,29 +63,14 @@ class LambdaALBHandler extends lambda_handler_1.LambdaSubHandler {
|
|
|
74
63
|
*/
|
|
75
64
|
constructor(lambda, register) {
|
|
76
65
|
super(lambda, register ? 'alb' : undefined);
|
|
77
|
-
/**
|
|
78
|
-
* Default ALB Handler.
|
|
79
|
-
*/
|
|
80
|
-
this.handle = (event, context) => __awaiter(this, void 0, void 0, function* () {
|
|
81
|
-
var _a, _b;
|
|
82
|
-
(0, engine_1._log)(NS, `handle()...`);
|
|
83
|
-
if (!this.handler)
|
|
84
|
-
return this.buildResponse(403, '403 NOT SUPPORTED - no handler for alb');
|
|
85
|
-
const arn = (_b = (_a = event === null || event === void 0 ? void 0 : event.requestContext) === null || _a === void 0 ? void 0 : _a.elb) === null || _b === void 0 ? void 0 : _b.targetGroupArn;
|
|
86
|
-
const $res = yield this.handler(arn, this, event, context);
|
|
87
|
-
return $res;
|
|
88
|
-
});
|
|
89
|
-
/**
|
|
90
|
-
* builder of tools for http-headers
|
|
91
|
-
* - extracting header content, and parse.
|
|
92
|
-
*/
|
|
93
|
-
this.tools = (event) => new ALBHttpHeaderTool(event === null || event === void 0 ? void 0 : event.headers);
|
|
94
66
|
// _log(NS, `LambdaALBHandler()..`);
|
|
95
67
|
}
|
|
96
68
|
/** say hello */
|
|
97
69
|
hello() {
|
|
98
70
|
return `lambda-alb-handler`;
|
|
99
71
|
}
|
|
72
|
+
/** the main handler */
|
|
73
|
+
handler;
|
|
100
74
|
/**
|
|
101
75
|
* set handler of alb-event.
|
|
102
76
|
* @param handler
|
|
@@ -115,51 +89,64 @@ class LambdaALBHandler extends lambda_handler_1.LambdaSubHandler {
|
|
|
115
89
|
* @returns ALBResult
|
|
116
90
|
*/
|
|
117
91
|
buildResponse(statusCode, body, options) {
|
|
118
|
-
|
|
119
|
-
const
|
|
120
|
-
|
|
121
|
-
return (0, lambda_web_handler_1.buildResponse)(statusCode, body, Object.assign(Object.assign({}, options), { origin, credentials }));
|
|
92
|
+
const origin = options?.origin ?? null;
|
|
93
|
+
const credentials = options?.credentials ?? null;
|
|
94
|
+
return (0, lambda_web_handler_1.buildResponse)(statusCode, body, { ...options, origin, credentials });
|
|
122
95
|
}
|
|
96
|
+
/**
|
|
97
|
+
* Default ALB Handler.
|
|
98
|
+
*/
|
|
99
|
+
handle = async (event, context) => {
|
|
100
|
+
(0, engine_1._log)(NS, `handle()...`);
|
|
101
|
+
if (!this.handler)
|
|
102
|
+
return this.buildResponse(403, '403 NOT SUPPORTED - no handler for alb');
|
|
103
|
+
const arn = event?.requestContext?.elb?.targetGroupArn;
|
|
104
|
+
const $res = await this.handler(arn, this, event, context);
|
|
105
|
+
return $res;
|
|
106
|
+
};
|
|
107
|
+
/**
|
|
108
|
+
* builder of tools for http-headers
|
|
109
|
+
* - extracting header content, and parse.
|
|
110
|
+
*/
|
|
111
|
+
tools = (event) => new ALBHttpHeaderTool(event?.headers);
|
|
123
112
|
/**
|
|
124
113
|
* pack the request context for Http request.
|
|
125
114
|
*
|
|
126
115
|
* @param event origin Event.
|
|
127
116
|
* @param orgContext (optional) original lambda.Context
|
|
128
117
|
*/
|
|
129
|
-
packContext(event, orgContext) {
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
const
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
return $ctx;
|
|
162
|
-
});
|
|
118
|
+
async packContext(event, orgContext) {
|
|
119
|
+
(0, engine_1._log)(NS, `packContext(${event ? '' : 'null'})..`);
|
|
120
|
+
if (!event)
|
|
121
|
+
return null;
|
|
122
|
+
//* prepare chain object.
|
|
123
|
+
const reqContext = event?.requestContext;
|
|
124
|
+
orgContext && (0, engine_1._log)(NS, `> orgContext =`, engine_1.$U.S(orgContext, 256, 32));
|
|
125
|
+
reqContext && (0, engine_1._log)(NS, `> reqContext =`, engine_1.$U.S(reqContext, 256, 32));
|
|
126
|
+
// STEP.1 extract the key headers.
|
|
127
|
+
const $tool = this.tools(event);
|
|
128
|
+
const identity = await $tool.parseIdentityHeader();
|
|
129
|
+
const _prepare = () => {
|
|
130
|
+
const cookie = $tool.parseCookiesHeader();
|
|
131
|
+
const domain = $tool.getHeader('host');
|
|
132
|
+
const referer = $tool.getHeader('referer');
|
|
133
|
+
const origin = $tool.getHeader('origin');
|
|
134
|
+
const userAgent = $tool.getHeader('user-agent');
|
|
135
|
+
const authorization = $tool.getHeader('authorization');
|
|
136
|
+
return $tool.onlyDefined({
|
|
137
|
+
identity,
|
|
138
|
+
cookie,
|
|
139
|
+
domain,
|
|
140
|
+
referer,
|
|
141
|
+
origin,
|
|
142
|
+
userAgent,
|
|
143
|
+
authorization,
|
|
144
|
+
});
|
|
145
|
+
};
|
|
146
|
+
// STEP.3. prepare the final `next-context`.
|
|
147
|
+
const $ctx = await $tool.prepareContext(_prepare(), reqContext);
|
|
148
|
+
// FINIAL. returns
|
|
149
|
+
return $ctx;
|
|
163
150
|
}
|
|
164
151
|
}
|
|
165
152
|
exports.LambdaALBHandler = LambdaALBHandler;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lambda-alb-handler.js","sourceRoot":"","sources":["../../../src/cores/lambda/lambda-alb-handler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"lambda-alb-handler.js","sourceRoot":"","sources":["../../../src/cores/lambda/lambda-alb-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
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
3
|
exports.LambdaCognitoHandler = void 0;
|
|
13
4
|
/**
|
|
@@ -29,24 +20,24 @@ const NS = engine_1.$U.NS('HCOG', 'yellow'); // NAMESPACE TO BE PRINTED.
|
|
|
29
20
|
* - default COGNITO Handler w/ event-listeners.
|
|
30
21
|
*/
|
|
31
22
|
class LambdaCognitoHandler extends lambda_handler_1.LambdaSubHandler {
|
|
23
|
+
//* shared config.
|
|
24
|
+
static REPORT_ERROR = lambda_handler_1.LambdaHandler.REPORT_ERROR;
|
|
32
25
|
/**
|
|
33
26
|
* default constructor w/ registering self.
|
|
34
27
|
*/
|
|
35
28
|
constructor(lambda, register) {
|
|
36
29
|
super(lambda, register ? 'cognito' : undefined);
|
|
37
|
-
/**
|
|
38
|
-
* Default COGNITO Handler.
|
|
39
|
-
*/
|
|
40
|
-
this.handle = (event) => __awaiter(this, void 0, void 0, function* () {
|
|
41
|
-
//* for each records.
|
|
42
|
-
(0, engine_1._log)(NS, `handle()...`);
|
|
43
|
-
(0, engine_1._log)(NS, '> event =', engine_1.$U.json(event));
|
|
44
|
-
});
|
|
45
30
|
// _log(NS, `LambdaCognitoHandler()..`);
|
|
46
31
|
}
|
|
47
32
|
addListener() { }
|
|
33
|
+
/**
|
|
34
|
+
* Default COGNITO Handler.
|
|
35
|
+
*/
|
|
36
|
+
handle = async (event) => {
|
|
37
|
+
//* for each records.
|
|
38
|
+
(0, engine_1._log)(NS, `handle()...`);
|
|
39
|
+
(0, engine_1._log)(NS, '> event =', engine_1.$U.json(event));
|
|
40
|
+
};
|
|
48
41
|
}
|
|
49
42
|
exports.LambdaCognitoHandler = LambdaCognitoHandler;
|
|
50
|
-
//* shared config.
|
|
51
|
-
LambdaCognitoHandler.REPORT_ERROR = lambda_handler_1.LambdaHandler.REPORT_ERROR;
|
|
52
43
|
//# sourceMappingURL=lambda-cognito-handler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lambda-cognito-handler.js","sourceRoot":"","sources":["../../../src/cores/lambda/lambda-cognito-handler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"lambda-cognito-handler.js","sourceRoot":"","sources":["../../../src/cores/lambda/lambda-cognito-handler.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;GASG;AACH,6DAA6D;AAC7D,0CAAqD;AACrD,qDAAmF;AACnF,MAAM,EAAE,GAAG,WAAE,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,2BAA2B;AAE/D;;;GAGG;AACH,MAAa,oBAAqB,SAAQ,iCAAgC;IACtE,kBAAkB;IACX,MAAM,CAAC,YAAY,GAAY,8BAAa,CAAC,YAAY,CAAC;IAEjE;;OAEG;IACH,YAAmB,MAAqB,EAAE,QAAkB;QACxD,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAChD,wCAAwC;IAC5C,CAAC;IAEM,WAAW,KAAI,CAAC;IAEvB;;OAEG;IACI,MAAM,GAAmB,KAAK,EAAE,KAAK,EAAgB,EAAE;QAC1D,qBAAqB;QACrB,IAAA,aAAI,EAAC,EAAE,EAAE,aAAa,CAAC,CAAC;QACxB,IAAA,aAAI,EAAC,EAAE,EAAE,WAAW,EAAE,WAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1C,CAAC,CAAC;;AArBN,oDAsBC"}
|
|
@@ -4,7 +4,7 @@ export interface CronParam {
|
|
|
4
4
|
name?: string;
|
|
5
5
|
action?: string;
|
|
6
6
|
}
|
|
7
|
-
export
|
|
7
|
+
export type CronNextHandler = NextHandler<CronParam, void>;
|
|
8
8
|
/**
|
|
9
9
|
* class: LambdaCronHandler
|
|
10
10
|
* - default CRON Handler w/ event-listeners.
|
|
@@ -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.LambdaCronHandler = void 0;
|
|
13
4
|
/**
|
|
@@ -29,25 +20,16 @@ const NS = engine_1.$U.NS('HCRN', 'yellow'); // NAMESPACE TO BE PRINTED.
|
|
|
29
20
|
* - default CRON Handler w/ event-listeners.
|
|
30
21
|
*/
|
|
31
22
|
class LambdaCronHandler extends lambda_handler_1.LambdaSubHandler {
|
|
23
|
+
//* shared config.
|
|
24
|
+
static REPORT_ERROR = lambda_handler_1.LambdaHandler.REPORT_ERROR;
|
|
32
25
|
/**
|
|
33
26
|
* default constructor w/ registering self.
|
|
34
27
|
*/
|
|
35
28
|
constructor(lambda, register) {
|
|
36
29
|
super(lambda, register ? 'cron' : undefined);
|
|
37
|
-
this.listeners = [];
|
|
38
|
-
/**
|
|
39
|
-
* Default CRON Handler.
|
|
40
|
-
*/
|
|
41
|
-
this.handle = (event, context) => __awaiter(this, void 0, void 0, function* () {
|
|
42
|
-
//* for each records.
|
|
43
|
-
(0, engine_1._log)(NS, `handle()...`);
|
|
44
|
-
(0, engine_1._log)(NS, '> event =', engine_1.$U.json(event));
|
|
45
|
-
const ID = '!';
|
|
46
|
-
const cron = event.cron;
|
|
47
|
-
yield Promise.all(this.listeners.map(_ => _(ID, cron, null, context)));
|
|
48
|
-
});
|
|
49
30
|
// _log(NS, `LambdaCronHandler()..`);
|
|
50
31
|
}
|
|
32
|
+
listeners = [];
|
|
51
33
|
/**
|
|
52
34
|
* add listener of cron-event.
|
|
53
35
|
* @param handler
|
|
@@ -55,8 +37,17 @@ class LambdaCronHandler extends lambda_handler_1.LambdaSubHandler {
|
|
|
55
37
|
addListener(handler) {
|
|
56
38
|
this.listeners.push(handler);
|
|
57
39
|
}
|
|
40
|
+
/**
|
|
41
|
+
* Default CRON Handler.
|
|
42
|
+
*/
|
|
43
|
+
handle = async (event, context) => {
|
|
44
|
+
//* for each records.
|
|
45
|
+
(0, engine_1._log)(NS, `handle()...`);
|
|
46
|
+
(0, engine_1._log)(NS, '> event =', engine_1.$U.json(event));
|
|
47
|
+
const ID = '!';
|
|
48
|
+
const cron = event.cron;
|
|
49
|
+
await Promise.all(this.listeners.map(_ => _(ID, cron, null, context)));
|
|
50
|
+
};
|
|
58
51
|
}
|
|
59
52
|
exports.LambdaCronHandler = LambdaCronHandler;
|
|
60
|
-
//* shared config.
|
|
61
|
-
LambdaCronHandler.REPORT_ERROR = lambda_handler_1.LambdaHandler.REPORT_ERROR;
|
|
62
53
|
//# sourceMappingURL=lambda-cron-handler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lambda-cron-handler.js","sourceRoot":"","sources":["../../../src/cores/lambda/lambda-cron-handler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"lambda-cron-handler.js","sourceRoot":"","sources":["../../../src/cores/lambda/lambda-cron-handler.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;GASG;AACH,6DAA6D;AAC7D,0CAAqD;AAErD,qDAAgF;AAChF,MAAM,EAAE,GAAG,WAAE,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,2BAA2B;AAQ/D;;;GAGG;AACH,MAAa,iBAAkB,SAAQ,iCAA6B;IAChE,kBAAkB;IACX,MAAM,CAAC,YAAY,GAAY,8BAAa,CAAC,YAAY,CAAC;IAEjE;;OAEG;IACH,YAAmB,MAAqB,EAAE,QAAkB;QACxD,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC7C,qCAAqC;IACzC,CAAC;IAES,SAAS,GAAsB,EAAE,CAAC;IAC5C;;;OAGG;IACI,WAAW,CAAC,OAAwB;QACvC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACI,MAAM,GAAgB,KAAK,EAAE,KAAK,EAAE,OAAO,EAAiB,EAAE;QACjE,qBAAqB;QACrB,IAAA,aAAI,EAAC,EAAE,EAAE,aAAa,CAAC,CAAC;QACxB,IAAA,aAAI,EAAC,EAAE,EAAE,WAAW,EAAE,WAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QACtC,MAAM,EAAE,GAAG,GAAG,CAAC;QACf,MAAM,IAAI,GAAc,KAAK,CAAC,IAAI,CAAC;QACnC,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3E,CAAC,CAAC;;AA/BN,8CAgCC"}
|
|
@@ -3,7 +3,7 @@ import { NextHandler } from 'lemon-model';
|
|
|
3
3
|
import { LambdaHandler, DynamoStreamHandler, LambdaSubHandler } from './lambda-handler';
|
|
4
4
|
import { Elastic6Service, Elastic6Item } from '../elastic/';
|
|
5
5
|
import { DynamoOption } from '../dynamo/';
|
|
6
|
-
export
|
|
6
|
+
export type DynamoStreamEvent = DynamoDBRecord['eventName'];
|
|
7
7
|
export interface DynamoStreamParam {
|
|
8
8
|
region?: string;
|
|
9
9
|
eventId?: string;
|
|
@@ -28,7 +28,7 @@ export interface DynamoStreamBody<T = any> {
|
|
|
28
28
|
*/
|
|
29
29
|
node: T;
|
|
30
30
|
}
|
|
31
|
-
export
|
|
31
|
+
export type DynamoStreamNextHandler<T = any> = NextHandler<DynamoStreamParam, void, DynamoStreamBody<T>>;
|
|
32
32
|
/**
|
|
33
33
|
* types for stream synchronizer
|
|
34
34
|
*/
|
|
@@ -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.LambdaDynamoStreamHandler = void 0;
|
|
13
4
|
/**
|
|
@@ -30,58 +21,16 @@ const NS = engine_1.$U.NS('HDBS', 'green'); // NAMESPACE TO BE PRINTED.
|
|
|
30
21
|
* - default DynamoDBStream Handler w/ event-listeners.
|
|
31
22
|
*/
|
|
32
23
|
class LambdaDynamoStreamHandler extends lambda_handler_1.LambdaSubHandler {
|
|
24
|
+
//* shared config.
|
|
25
|
+
static REPORT_ERROR = lambda_handler_1.LambdaHandler.REPORT_ERROR;
|
|
33
26
|
/**
|
|
34
27
|
* default constructor w/ registering self.
|
|
35
28
|
*/
|
|
36
29
|
constructor(lambda, register) {
|
|
37
30
|
super(lambda, register ? 'dds' : undefined);
|
|
38
|
-
this.listeners = [];
|
|
39
|
-
//* for debugging. save last result
|
|
40
|
-
this.$lastResult = null;
|
|
41
|
-
/**
|
|
42
|
-
* Default Handler.
|
|
43
|
-
*/
|
|
44
|
-
this.handle = (event, context) => __awaiter(this, void 0, void 0, function* () {
|
|
45
|
-
//* for each records.
|
|
46
|
-
const records = event.Records || [];
|
|
47
|
-
(0, engine_1._log)(NS, `handle(len=${records.length})...`);
|
|
48
|
-
// _log(NS, '> event =', $U.json(event));
|
|
49
|
-
const $doReportError = (0, lambda_handler_1.buildReportError)(LambdaDynamoStreamHandler.REPORT_ERROR);
|
|
50
|
-
const onStreamRecord = (record, i) => __awaiter(this, void 0, void 0, function* () {
|
|
51
|
-
const region = record.awsRegion;
|
|
52
|
-
const eventId = record.eventID;
|
|
53
|
-
const eventName = record.eventName;
|
|
54
|
-
const tableName = (record.eventSourceARN && record.eventSourceARN.split('/')[1]) || '';
|
|
55
|
-
(0, engine_1._log)(NS, `> record[${i}].eventName/tableName =`, eventName, tableName);
|
|
56
|
-
const dynamodb = record.dynamodb;
|
|
57
|
-
if (!dynamodb)
|
|
58
|
-
return; // ignore this.
|
|
59
|
-
const $key = dynamodb.Keys ? (0, dynamodb_value_1.toJavascript)(dynamodb.Keys, null) : null;
|
|
60
|
-
const $new = dynamodb.NewImage ? (0, dynamodb_value_1.toJavascript)(dynamodb.NewImage, null) : null; // null if eventName == 'REMOVE'
|
|
61
|
-
const $old = dynamodb.OldImage ? (0, dynamodb_value_1.toJavascript)(dynamodb.OldImage, null) : null; // null if eventName == 'INSERT'
|
|
62
|
-
//* 이제 변경된 데이터를 추적해서, 이후 처리 지원. (update 는 호출만되어도 이벤트가 발생하게 됨)
|
|
63
|
-
const diff = eventName === 'MODIFY' ? engine_1.$U.diff($old, $new) : [];
|
|
64
|
-
const node = $new || $old || {}; // make sure not null.
|
|
65
|
-
const prev = diff.reduce((M, key) => {
|
|
66
|
-
M[key] = $old[key];
|
|
67
|
-
return M;
|
|
68
|
-
}, {});
|
|
69
|
-
//* prepare next-handler's param & body.
|
|
70
|
-
const param = { region, eventId, eventName, tableName };
|
|
71
|
-
const body = { keys: $key, diff, prev, node };
|
|
72
|
-
//* call all listeners in parrallel.
|
|
73
|
-
const asyncNext = (fn, j) => new Promise(resolve => {
|
|
74
|
-
resolve(fn('!', param, body, context));
|
|
75
|
-
}).catch(e => $doReportError(e, null, null, { record, i, j }));
|
|
76
|
-
const res = yield Promise.all(this.listeners.map(asyncNext));
|
|
77
|
-
(0, engine_1._log)(NS, `>> result[${i}] =`, engine_1.$U.json(res));
|
|
78
|
-
return `${i}`;
|
|
79
|
-
});
|
|
80
|
-
//* serialize all record...
|
|
81
|
-
this.$lastResult = yield (0, engine_1.do_parrallel)(records, (record, i) => onStreamRecord(record, i).catch(e => $doReportError(e, null, null, { record, i })), 1);
|
|
82
|
-
});
|
|
83
31
|
// _log(NS, `LambdaDynamoStreamHandler()..`);
|
|
84
32
|
}
|
|
33
|
+
listeners = [];
|
|
85
34
|
/**
|
|
86
35
|
* add listener of cron-event.
|
|
87
36
|
* @param handler
|
|
@@ -89,6 +38,50 @@ class LambdaDynamoStreamHandler extends lambda_handler_1.LambdaSubHandler {
|
|
|
89
38
|
addListener(handler) {
|
|
90
39
|
this.listeners.push(handler);
|
|
91
40
|
}
|
|
41
|
+
//* for debugging. save last result
|
|
42
|
+
$lastResult = null;
|
|
43
|
+
/**
|
|
44
|
+
* Default Handler.
|
|
45
|
+
*/
|
|
46
|
+
handle = async (event, context) => {
|
|
47
|
+
//* for each records.
|
|
48
|
+
const records = event.Records || [];
|
|
49
|
+
(0, engine_1._log)(NS, `handle(len=${records.length})...`);
|
|
50
|
+
// _log(NS, '> event =', $U.json(event));
|
|
51
|
+
const $doReportError = (0, lambda_handler_1.buildReportError)(LambdaDynamoStreamHandler.REPORT_ERROR);
|
|
52
|
+
const onStreamRecord = async (record, i) => {
|
|
53
|
+
const region = record.awsRegion;
|
|
54
|
+
const eventId = record.eventID;
|
|
55
|
+
const eventName = record.eventName;
|
|
56
|
+
const tableName = (record.eventSourceARN && record.eventSourceARN.split('/')[1]) || '';
|
|
57
|
+
(0, engine_1._log)(NS, `> record[${i}].eventName/tableName =`, eventName, tableName);
|
|
58
|
+
const dynamodb = record.dynamodb;
|
|
59
|
+
if (!dynamodb)
|
|
60
|
+
return; // ignore this.
|
|
61
|
+
const $key = dynamodb.Keys ? (0, dynamodb_value_1.toJavascript)(dynamodb.Keys, null) : null;
|
|
62
|
+
const $new = dynamodb.NewImage ? (0, dynamodb_value_1.toJavascript)(dynamodb.NewImage, null) : null; // null if eventName == 'REMOVE'
|
|
63
|
+
const $old = dynamodb.OldImage ? (0, dynamodb_value_1.toJavascript)(dynamodb.OldImage, null) : null; // null if eventName == 'INSERT'
|
|
64
|
+
//* 이제 변경된 데이터를 추적해서, 이후 처리 지원. (update 는 호출만되어도 이벤트가 발생하게 됨)
|
|
65
|
+
const diff = eventName === 'MODIFY' ? engine_1.$U.diff($old, $new) : [];
|
|
66
|
+
const node = $new || $old || {}; // make sure not null.
|
|
67
|
+
const prev = diff.reduce((M, key) => {
|
|
68
|
+
M[key] = $old[key];
|
|
69
|
+
return M;
|
|
70
|
+
}, {});
|
|
71
|
+
//* prepare next-handler's param & body.
|
|
72
|
+
const param = { region, eventId, eventName, tableName };
|
|
73
|
+
const body = { keys: $key, diff, prev, node };
|
|
74
|
+
//* call all listeners in parrallel.
|
|
75
|
+
const asyncNext = (fn, j) => new Promise(resolve => {
|
|
76
|
+
resolve(fn('!', param, body, context));
|
|
77
|
+
}).catch(e => $doReportError(e, null, null, { record, i, j }));
|
|
78
|
+
const res = await Promise.all(this.listeners.map(asyncNext));
|
|
79
|
+
(0, engine_1._log)(NS, `>> result[${i}] =`, engine_1.$U.json(res));
|
|
80
|
+
return `${i}`;
|
|
81
|
+
};
|
|
82
|
+
//* serialize all record...
|
|
83
|
+
this.$lastResult = await (0, engine_1.do_parrallel)(records, (record, i) => onStreamRecord(record, i).catch(e => $doReportError(e, null, null, { record, i })), 1);
|
|
84
|
+
};
|
|
92
85
|
/**
|
|
93
86
|
* create synchronizer to elastic6 via dynamo-stream.
|
|
94
87
|
* - procedure: (filter) -> (onBeforeSync) -> synchronization -> (onAfterSync)
|
|
@@ -100,11 +93,10 @@ class LambdaDynamoStreamHandler extends lambda_handler_1.LambdaSubHandler {
|
|
|
100
93
|
* @param onAfterSync (optional) callback function invoked after synchronization
|
|
101
94
|
*/
|
|
102
95
|
static createSyncToElastic6(options, service, filter, onBeforeSync, onAfterSync) {
|
|
103
|
-
var _a, _b;
|
|
104
96
|
//FIXED - if it has decomposed, then update full set.
|
|
105
|
-
const hasDecomposed = !!
|
|
97
|
+
const hasDecomposed = !!service?.options?.autocompleteFields?.length;
|
|
106
98
|
// const _log = console.log;
|
|
107
|
-
const handler = (id, param, body, $ctx) =>
|
|
99
|
+
const handler = async (id, param, body, $ctx) => {
|
|
108
100
|
const { tableName, idName } = options;
|
|
109
101
|
const { region, eventId, eventName, tableName: eventTable } = param;
|
|
110
102
|
if (eventTable != tableName) {
|
|
@@ -125,7 +117,7 @@ class LambdaDynamoStreamHandler extends lambda_handler_1.LambdaSubHandler {
|
|
|
125
117
|
return;
|
|
126
118
|
}
|
|
127
119
|
//* origin object, and apply filter.
|
|
128
|
-
const item = engine_1.$U.cleanup(
|
|
120
|
+
const item = engine_1.$U.cleanup({ ...node }); //* remove internals like '_' '$'.
|
|
129
121
|
const passed = !filter ? true : filter(_id, item, diff, prev);
|
|
130
122
|
if (passed !== true && passed !== undefined) {
|
|
131
123
|
(0, engine_1._log)(NS, `WARN! node[${_id}] is by-passed`);
|
|
@@ -133,19 +125,19 @@ class LambdaDynamoStreamHandler extends lambda_handler_1.LambdaSubHandler {
|
|
|
133
125
|
}
|
|
134
126
|
//* call pre sync function
|
|
135
127
|
if (onBeforeSync)
|
|
136
|
-
|
|
128
|
+
await onBeforeSync(_id, eventName, item, diff, prev);
|
|
137
129
|
//* update or save.
|
|
138
130
|
if (!service) {
|
|
139
131
|
// ignore if no service.
|
|
140
132
|
}
|
|
141
133
|
else if (eventName == 'REMOVE') {
|
|
142
134
|
//* clear data.
|
|
143
|
-
const res =
|
|
135
|
+
const res = await service.deleteItem(_id); // ignore error.
|
|
144
136
|
(0, engine_1._log)(NS, `> deleted[${_id}] =`, engine_1.$U.json(res));
|
|
145
137
|
}
|
|
146
138
|
else if (hasDecomposed) {
|
|
147
139
|
//* overwrite all.
|
|
148
|
-
const res =
|
|
140
|
+
const res = await service.saveItem(_id, item);
|
|
149
141
|
(0, engine_1._log)(NS, `> saved[${_id}] @1 =`, engine_1.$U.json(res));
|
|
150
142
|
}
|
|
151
143
|
else if (diff && Array.isArray(diff) && diff.length) {
|
|
@@ -155,7 +147,7 @@ class LambdaDynamoStreamHandler extends lambda_handler_1.LambdaSubHandler {
|
|
|
155
147
|
return M;
|
|
156
148
|
}, {});
|
|
157
149
|
(0, engine_1._log)(NS, `> updates[${_id}] @1 =`, engine_1.$U.json($upt));
|
|
158
|
-
const res =
|
|
150
|
+
const res = await service.updateItem(_id, $upt).catch((e) => {
|
|
159
151
|
if (`${e.message}`.startsWith('404 NOT FOUND'))
|
|
160
152
|
return service.saveItem(_id, item);
|
|
161
153
|
throw e;
|
|
@@ -164,17 +156,15 @@ class LambdaDynamoStreamHandler extends lambda_handler_1.LambdaSubHandler {
|
|
|
164
156
|
}
|
|
165
157
|
else {
|
|
166
158
|
//* overwrite all.
|
|
167
|
-
const res =
|
|
159
|
+
const res = await service.saveItem(_id, item);
|
|
168
160
|
(0, engine_1._log)(NS, `> saved[${_id}] @2 =`, engine_1.$U.json(res));
|
|
169
161
|
}
|
|
170
162
|
//* call post sync function
|
|
171
163
|
if (onAfterSync)
|
|
172
|
-
|
|
173
|
-
}
|
|
164
|
+
await onAfterSync(_id, eventName, item, diff, prev);
|
|
165
|
+
};
|
|
174
166
|
return handler;
|
|
175
167
|
}
|
|
176
168
|
}
|
|
177
169
|
exports.LambdaDynamoStreamHandler = LambdaDynamoStreamHandler;
|
|
178
|
-
//* shared config.
|
|
179
|
-
LambdaDynamoStreamHandler.REPORT_ERROR = lambda_handler_1.LambdaHandler.REPORT_ERROR;
|
|
180
170
|
//# sourceMappingURL=lambda-dynamo-stream-handler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lambda-dynamo-stream-handler.js","sourceRoot":"","sources":["../../../src/cores/lambda/lambda-dynamo-stream-handler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"lambda-dynamo-stream-handler.js","sourceRoot":"","sources":["../../../src/cores/lambda/lambda-dynamo-stream-handler.ts"],"names":[],"mappings":"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"}
|