minimonolith 0.23.1 → 0.24.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/README.md +1 -1
- package/package.json +1 -1
- package/src/api/postService/index.js +2 -1
- package/src/method/post/index.js +6 -3
- package/src/middleware/postCors/corsHeaders.js +6 -0
- package/src/middleware/postCors/index.js +3 -4
- package/src/server/getNodejsServerHandler/index.js +4 -0
- package/src/validation/postError/index.js +5 -5
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# minimonolith
|
|
2
2
|
|
|
3
|
-
[](https://codecov.io/gh/DeepHackDev/minimonolith-lib)
|
|
4
4
|
|
|
5
5
|
`minimonolith` is a lightweight library designed to help you build serverless APIs using AWS Lambda, with a focus on simplicity and ease of use. The library provides a straightforward structure to organize your API's services, methods, validation, and models while handling common tasks like database connection and request validation.
|
|
6
6
|
|
package/package.json
CHANGED
|
@@ -28,5 +28,6 @@ export default async (SERVICE_NAME, SRC_FOLDER='', MODULES_FOLDER='node_modules/
|
|
|
28
28
|
for (const METHOD_CODE of SERVICE_MODULE.default) await METHOD_SERVICE.post(SERVICE_NAME, SERVICE_URL, METHOD_CODE);
|
|
29
29
|
|
|
30
30
|
} catch (META_METHOD_ERROR) {
|
|
31
|
-
ERROR_SERVICE.postCompiletime({ META_SERVICE_NAME, META_METHOD_NAME, META_METHOD_ERROR });
|
|
31
|
+
ERROR_SERVICE.postCompiletime({ META_SERVICE_NAME, META_METHOD_NAME, META_METHOD_ERROR });
|
|
32
|
+
}
|
|
32
33
|
};
|
package/src/method/post/index.js
CHANGED
|
@@ -24,24 +24,27 @@ export default async (SERVICE_NAME, SERVICE_URL, METHOD_CODE) => {
|
|
|
24
24
|
VALIDATOR: await VALIDATION_SERVICE.get(METHOD_NAME, SERVICE_URL),
|
|
25
25
|
};
|
|
26
26
|
|
|
27
|
+
// Register service within API
|
|
27
28
|
API_SERVICE.get().SERVICES[SERVICE_NAME][METHOD_NAME] = async (body, claims=undefined) => {
|
|
28
29
|
const { MODELS, SERVICES } = API_SERVICE.get();
|
|
29
30
|
return await METHOD.CONTROLLER({ MODELS, SERVICES, ROUTE_CODE, body, claims });
|
|
30
31
|
}
|
|
31
32
|
|
|
32
|
-
|
|
33
|
+
// Register service within API
|
|
34
|
+
API_SERVICE.get().VALIDATORS[SERVICE_NAME][METHOD_NAME] = (body, claims=undefined) => {
|
|
33
35
|
const { MODELS, SERVICES, VALIDATORS } = API_SERVICE.get();
|
|
34
|
-
return METHOD.VALIDATOR({ MODELS, SERVICES, VALIDATORS });
|
|
36
|
+
return METHOD.VALIDATOR({ MODELS, SERVICES, VALIDATORS, body, claims });
|
|
35
37
|
}
|
|
36
38
|
|
|
37
39
|
const METHOD_TYPE = getType(METHOD_NAME);
|
|
38
40
|
|
|
41
|
+
// Register route forn lAMBDA API
|
|
39
42
|
LOG_SERVICE.post('POSTING_ROUTE', METHOD_ROUTE);
|
|
40
43
|
API_SERVICE.get()[METHOD_TYPE](METHOD_ROUTE, async (event, res) => {
|
|
41
44
|
const { body, claims } = EVENT_SERVICE.getParsedEvent(event);
|
|
42
45
|
|
|
43
46
|
try {
|
|
44
|
-
if (await VALIDATION_SERVICE.postError(res, ROUTE_CODE, METHOD.VALIDATOR, body)) return;
|
|
47
|
+
if (await VALIDATION_SERVICE.postError(res, ROUTE_CODE, METHOD.VALIDATOR, body, claims)) return;
|
|
45
48
|
await postResponse(res, ROUTE_CODE, METHOD.CONTROLLER, METHOD_TYPE, body, claims);
|
|
46
49
|
}
|
|
47
50
|
catch (METHOD_ERROR) { ERROR_SERVICE.postRuntime(res, ROUTE_CODE, METHOD_ERROR); }
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import API_SERVICE from '../../api/index.js';
|
|
2
2
|
import LOG_SERVICE from '../../log/index.js';
|
|
3
3
|
|
|
4
|
+
import CORS_HEADERS from './corsHeaders.js';
|
|
5
|
+
|
|
4
6
|
export default () => {
|
|
5
7
|
|
|
6
8
|
API_SERVICE.get().use((req, res, next) => {
|
|
@@ -12,10 +14,7 @@ export default () => {
|
|
|
12
14
|
});
|
|
13
15
|
|
|
14
16
|
API_SERVICE.get().options('/*', (req, res) => {
|
|
15
|
-
res.header(
|
|
16
|
-
res.header('Access-Control-Allow-Methods', 'OPTIONS, POST, GET, PUT, PATCH, DELETE');
|
|
17
|
-
res.header('Access-Control-Allow-Headers', '*');
|
|
18
|
-
res.header('Access-Control-Allow-Credentials', true);
|
|
17
|
+
for (let k in CORS_HEADERS) { res.header(k, CORS_HEADERS[k]); }
|
|
19
18
|
res.status(200).send({})
|
|
20
19
|
});
|
|
21
20
|
};
|
|
@@ -4,6 +4,8 @@ import url from 'url';
|
|
|
4
4
|
|
|
5
5
|
import LOG_SERVICE from '../../log/index.js';
|
|
6
6
|
|
|
7
|
+
import CORS_HEADERS from '../../middleware/postCors/corsHeaders.js';
|
|
8
|
+
|
|
7
9
|
const getBody = req => {
|
|
8
10
|
return new Promise((resolve, reject) => {
|
|
9
11
|
let body = '';
|
|
@@ -54,11 +56,13 @@ export default lambdaHandler => async (req, res) => {
|
|
|
54
56
|
const lambdaRes = await lambdaHandler(lambdaEvent, null)
|
|
55
57
|
|
|
56
58
|
res.statusCode = lambdaRes.statusCode;
|
|
59
|
+
for (let k in CORS_HEADERS) res.setHeader(k, CORS_HEADERS[k]);
|
|
57
60
|
res.end(lambdaRes.body);
|
|
58
61
|
|
|
59
62
|
} catch(SERVER_ERROR) {
|
|
60
63
|
LOG_SERVICE.post({ SERVER_ERROR });
|
|
61
64
|
res.statusCode = 500;
|
|
65
|
+
for (let k in CORS_HEADERS) res.setHeader(k, CORS_HEADERS[k]);
|
|
62
66
|
res.end(JSON.stringify({ REQUEST_PARSING_ERROR: SERVER_ERROR.toString() }));
|
|
63
67
|
}
|
|
64
68
|
}
|
|
@@ -3,8 +3,9 @@ import LOG_SERVICE from '../../log/index.js';
|
|
|
3
3
|
|
|
4
4
|
import getOptionalObject from '../getOptionalObject/index.js';
|
|
5
5
|
|
|
6
|
-
export default async (res, ROUTE_CODE, VALIDATOR, input) => {
|
|
7
|
-
const { MODELS, SERVICES, VALIDATORS } = API_SERVICE.get(),
|
|
6
|
+
export default async (res, ROUTE_CODE, VALIDATOR, input, claims) => {
|
|
7
|
+
const { MODELS, SERVICES, VALIDATORS } = API_SERVICE.get(),
|
|
8
|
+
EVENT_CONTEXT = { MODELS, SERVICES, VALIDATORS, body: input, claims };
|
|
8
9
|
|
|
9
10
|
if (!VALIDATOR && input) {
|
|
10
11
|
const MESSAGE = { ROUTE_CODE, VALIDATION_ERROR: JSON.stringify({ message: 'BODY_NOT_ALLOWED' }) };
|
|
@@ -14,9 +15,8 @@ export default async (res, ROUTE_CODE, VALIDATOR, input) => {
|
|
|
14
15
|
}
|
|
15
16
|
|
|
16
17
|
if (!VALIDATOR) return false;
|
|
17
|
-
|
|
18
|
-
const VALIDATION_ERROR =
|
|
19
|
-
(await getOptionalObject(VALIDATOR(EVENT_CONTEXT)).safeParseAsync(input)).error?.format();
|
|
18
|
+
const VALIDATION_OBJECT = await VALIDATOR(EVENT_CONTEXT);
|
|
19
|
+
const VALIDATION_ERROR = (await getOptionalObject(VALIDATION_OBJECT).safeParseAsync(input)).error?.format();
|
|
20
20
|
|
|
21
21
|
if (VALIDATION_ERROR) {
|
|
22
22
|
const MESSAGE = { ROUTE_CODE, VALIDATION_ERROR: JSON.stringify(VALIDATION_ERROR) };
|