minimonolith 0.25.4 → 0.25.5
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 +209 -209
- package/api/getNewAPI/handler.js +53 -53
- package/api/getSyncedHandler/handler.js +40 -40
- package/api/postModule/handler.js +31 -31
- package/api/services.js +15 -15
- package/autotest/getMethodTest/handler.js +14 -14
- package/autotest/getTestServerResponse/index.js +14 -14
- package/autotest/services.js +1 -1
- package/control/get/handler.js +8 -8
- package/control/services.js +1 -1
- package/database/post/handler.js +24 -24
- package/database/postConnection/handler.js +27 -27
- package/database/services.js +1 -1
- package/environment/getDBEnvVars/handler.js +6 -6
- package/environment/getENVEnvVars/handler.js +7 -7
- package/environment/postEnvFile/handler.js +20 -20
- package/environment/postTestEnvironment/index.js +6 -6
- package/environment/services.js +5 -5
- package/error/index.js +4 -4
- package/error/postCompiletime/index.js +13 -13
- package/error/postRuntime/index.js +7 -7
- package/health/post/handler.js +14 -14
- package/health/services.js +1 -1
- package/index.js +23 -23
- package/log/index.js +5 -5
- package/log/post/index.js +3 -3
- package/log/postError/index.js +3 -3
- package/log/postQA/index.js +3 -3
- package/model/getSynced/handler.js +28 -28
- package/model/post/handler.js +17 -17
- package/model/services.js +1 -1
- package/package.json +33 -33
- package/server/getNodejsServerHandler/index.js +70 -70
- package/server/getServerFactory/handler.js +17 -17
- package/server/services.js +1 -1
- package/service/getParsedCode/handler.js +22 -22
- package/service/getParsedEvent/handler.js +12 -12
- package/service/getResponseCode/handler.js +11 -11
- package/service/getRouteCode/handler.js +15 -15
- package/service/getType/handler.js +11 -11
- package/service/postResponse/index.js +13 -13
- package/service/postRoute/handler.js +82 -82
- package/service/services.js +9 -9
- package/setupTesting.js +19 -0
- package/yarn-error.log +0 -4104
package/package.json
CHANGED
|
@@ -1,33 +1,33 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "minimonolith",
|
|
3
|
-
"type": "module",
|
|
4
|
-
"version": "0.25.
|
|
5
|
-
"main": "index.js",
|
|
6
|
-
"license": "MIT",
|
|
7
|
-
"scripts": {
|
|
8
|
-
"start": "nodemon --inspect=0.0.0.0 ./server.js",
|
|
9
|
-
"test": "cross-env NODE_OPTIONS=--experimental-vm-modules npx jest --coverage"
|
|
10
|
-
},
|
|
11
|
-
"keywords": [
|
|
12
|
-
"lambda-api",
|
|
13
|
-
"zod",
|
|
14
|
-
"sequelize"
|
|
15
|
-
],
|
|
16
|
-
"dependencies": {
|
|
17
|
-
"@minimonolith/lib": "^0.13.1",
|
|
18
|
-
"lambda-api": "^1.0.3",
|
|
19
|
-
"sequelize": "^6.30.0",
|
|
20
|
-
"zod": "^3.21.4"
|
|
21
|
-
},
|
|
22
|
-
"devDependencies": {
|
|
23
|
-
"@aws-sdk/client-s3": "^3.304.0",
|
|
24
|
-
"@aws-sdk/s3-request-presigner": "^3.304.0",
|
|
25
|
-
"cross-env": "^7.0.3",
|
|
26
|
-
"cross-fetch": "^3.1.5",
|
|
27
|
-
"dotenv": "^16.0.3",
|
|
28
|
-
"jest": "^29.5.0",
|
|
29
|
-
"mysql2": "^3.2.0",
|
|
30
|
-
"nodemon": "^2.0.22",
|
|
31
|
-
"sqlite3": "^5.1.6"
|
|
32
|
-
}
|
|
33
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "minimonolith",
|
|
3
|
+
"type": "module",
|
|
4
|
+
"version": "0.25.5",
|
|
5
|
+
"main": "index.js",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"scripts": {
|
|
8
|
+
"start": "nodemon --inspect=0.0.0.0 ./server.js",
|
|
9
|
+
"test": "cross-env NODE_OPTIONS=--experimental-vm-modules npx jest --coverage"
|
|
10
|
+
},
|
|
11
|
+
"keywords": [
|
|
12
|
+
"lambda-api",
|
|
13
|
+
"zod",
|
|
14
|
+
"sequelize"
|
|
15
|
+
],
|
|
16
|
+
"dependencies": {
|
|
17
|
+
"@minimonolith/lib": "^0.13.1",
|
|
18
|
+
"lambda-api": "^1.0.3",
|
|
19
|
+
"sequelize": "^6.30.0",
|
|
20
|
+
"zod": "^3.21.4"
|
|
21
|
+
},
|
|
22
|
+
"devDependencies": {
|
|
23
|
+
"@aws-sdk/client-s3": "^3.304.0",
|
|
24
|
+
"@aws-sdk/s3-request-presigner": "^3.304.0",
|
|
25
|
+
"cross-env": "^7.0.3",
|
|
26
|
+
"cross-fetch": "^3.1.5",
|
|
27
|
+
"dotenv": "^16.0.3",
|
|
28
|
+
"jest": "^29.5.0",
|
|
29
|
+
"mysql2": "^3.2.0",
|
|
30
|
+
"nodemon": "^2.0.22",
|
|
31
|
+
"sqlite3": "^5.1.6"
|
|
32
|
+
}
|
|
33
|
+
}
|
|
@@ -1,70 +1,70 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
import url from 'url';
|
|
4
|
-
|
|
5
|
-
//import { LOG_SERVICE } from '@minimonolith/lib';
|
|
6
|
-
|
|
7
|
-
import CORS_HEADERS from '../../api/corsHeaders.js';
|
|
8
|
-
|
|
9
|
-
const getBody = req => {
|
|
10
|
-
return new Promise((resolve, reject) => {
|
|
11
|
-
let body = '';
|
|
12
|
-
req.on('data', chunk => { body += chunk; });
|
|
13
|
-
req.on('end', () => { resolve(body !== '' ? body : null); });
|
|
14
|
-
});
|
|
15
|
-
};
|
|
16
|
-
|
|
17
|
-
const getJWTClaims = authHeader => {
|
|
18
|
-
const b64JWT = authHeader.split(" ")[1];
|
|
19
|
-
const b64Claims = b64JWT.split('.')[1];
|
|
20
|
-
return JSON.parse(Buffer.from(b64Claims, 'base64').toString());
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
const getLambdaEvent = (req, queryString, jwtClaims, body) => {
|
|
24
|
-
const event = {
|
|
25
|
-
path: req.url,
|
|
26
|
-
httpMethod: req.method,
|
|
27
|
-
queryStringParameters: queryString,
|
|
28
|
-
requestContext: {
|
|
29
|
-
authorizer: { jwt: { claims: jwtClaims }, },
|
|
30
|
-
http: { method: req.method, path: req.url },
|
|
31
|
-
},
|
|
32
|
-
headers: {},
|
|
33
|
-
body,
|
|
34
|
-
};
|
|
35
|
-
|
|
36
|
-
if (req.headers['content-type'])
|
|
37
|
-
event.headers['Content-Type'] = req.headers['content-type'];
|
|
38
|
-
if (req.headers['x-trigger-error']) event.headers['x-trigger-error'] = 'TRUE';
|
|
39
|
-
if (req.headers.accept) event.headers.accept = req.headers.accept;
|
|
40
|
-
if (req.headers['user-agent']) event.headers['User-Agent'] = req.headers['user-agent'];
|
|
41
|
-
//console.log(event);
|
|
42
|
-
return event;
|
|
43
|
-
};
|
|
44
|
-
|
|
45
|
-
export default lambdaHandler => async (req, res) => {
|
|
46
|
-
try {
|
|
47
|
-
const authHeader = req.headers.authorization;
|
|
48
|
-
const jwtClaims = authHeader?.startsWith('Bearer ') ? getJWTClaims(authHeader) : null;
|
|
49
|
-
|
|
50
|
-
const tempQueryString = url.parse(req.url, true).query;
|
|
51
|
-
const queryString = tempQueryString ? tempQueryString : undefined;
|
|
52
|
-
|
|
53
|
-
const tempBody = await getBody(req);
|
|
54
|
-
const body = tempBody ? tempBody : undefined;
|
|
55
|
-
|
|
56
|
-
const lambdaEvent = getLambdaEvent(req, queryString, jwtClaims, body);
|
|
57
|
-
const lambdaRes = await lambdaHandler(lambdaEvent, null)
|
|
58
|
-
|
|
59
|
-
res.statusCode = lambdaRes.statusCode;
|
|
60
|
-
for (let k in CORS_HEADERS) res.setHeader(k, CORS_HEADERS[k]);
|
|
61
|
-
res.end(lambdaRes.body);
|
|
62
|
-
|
|
63
|
-
} catch(SERVER_ERROR) {
|
|
64
|
-
//LOG_SERVICE.post({ SERVER_ERROR });
|
|
65
|
-
console.log({ SERVER_ERROR });
|
|
66
|
-
res.statusCode = 500;
|
|
67
|
-
for (let k in CORS_HEADERS) res.setHeader(k, CORS_HEADERS[k]);
|
|
68
|
-
res.end(JSON.stringify({ REQUEST_PARSING_ERROR: SERVER_ERROR.toString() }));
|
|
69
|
-
}
|
|
70
|
-
}
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
import url from 'url';
|
|
4
|
+
|
|
5
|
+
//import { LOG_SERVICE } from '@minimonolith/lib';
|
|
6
|
+
|
|
7
|
+
import CORS_HEADERS from '../../api/corsHeaders.js';
|
|
8
|
+
|
|
9
|
+
const getBody = req => {
|
|
10
|
+
return new Promise((resolve, reject) => {
|
|
11
|
+
let body = '';
|
|
12
|
+
req.on('data', chunk => { body += chunk; });
|
|
13
|
+
req.on('end', () => { resolve(body !== '' ? body : null); });
|
|
14
|
+
});
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
const getJWTClaims = authHeader => {
|
|
18
|
+
const b64JWT = authHeader.split(" ")[1];
|
|
19
|
+
const b64Claims = b64JWT.split('.')[1];
|
|
20
|
+
return JSON.parse(Buffer.from(b64Claims, 'base64').toString());
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
const getLambdaEvent = (req, queryString, jwtClaims, body) => {
|
|
24
|
+
const event = {
|
|
25
|
+
path: req.url,
|
|
26
|
+
httpMethod: req.method,
|
|
27
|
+
queryStringParameters: queryString,
|
|
28
|
+
requestContext: {
|
|
29
|
+
authorizer: { jwt: { claims: jwtClaims }, },
|
|
30
|
+
http: { method: req.method, path: req.url },
|
|
31
|
+
},
|
|
32
|
+
headers: {},
|
|
33
|
+
body,
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
if (req.headers['content-type'])
|
|
37
|
+
event.headers['Content-Type'] = req.headers['content-type'];
|
|
38
|
+
if (req.headers['x-trigger-error']) event.headers['x-trigger-error'] = 'TRUE';
|
|
39
|
+
if (req.headers.accept) event.headers.accept = req.headers.accept;
|
|
40
|
+
if (req.headers['user-agent']) event.headers['User-Agent'] = req.headers['user-agent'];
|
|
41
|
+
//console.log(event);
|
|
42
|
+
return event;
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
export default lambdaHandler => async (req, res) => {
|
|
46
|
+
try {
|
|
47
|
+
const authHeader = req.headers.authorization;
|
|
48
|
+
const jwtClaims = authHeader?.startsWith('Bearer ') ? getJWTClaims(authHeader) : null;
|
|
49
|
+
|
|
50
|
+
const tempQueryString = url.parse(req.url, true).query;
|
|
51
|
+
const queryString = tempQueryString ? tempQueryString : undefined;
|
|
52
|
+
|
|
53
|
+
const tempBody = await getBody(req);
|
|
54
|
+
const body = tempBody ? tempBody : undefined;
|
|
55
|
+
|
|
56
|
+
const lambdaEvent = getLambdaEvent(req, queryString, jwtClaims, body);
|
|
57
|
+
const lambdaRes = await lambdaHandler(lambdaEvent, null)
|
|
58
|
+
|
|
59
|
+
res.statusCode = lambdaRes.statusCode;
|
|
60
|
+
for (let k in CORS_HEADERS) res.setHeader(k, CORS_HEADERS[k]);
|
|
61
|
+
res.end(lambdaRes.body);
|
|
62
|
+
|
|
63
|
+
} catch(SERVER_ERROR) {
|
|
64
|
+
//LOG_SERVICE.post({ SERVER_ERROR });
|
|
65
|
+
console.log({ SERVER_ERROR });
|
|
66
|
+
res.statusCode = 500;
|
|
67
|
+
for (let k in CORS_HEADERS) res.setHeader(k, CORS_HEADERS[k]);
|
|
68
|
+
res.end(JSON.stringify({ REQUEST_PARSING_ERROR: SERVER_ERROR.toString() }));
|
|
69
|
+
}
|
|
70
|
+
}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import http from 'http';
|
|
2
|
-
import path from 'path';
|
|
3
|
-
|
|
4
|
-
import getNodejsServerHandler from '../getNodejsServerHandler/index.js';
|
|
5
|
-
|
|
6
|
-
export default async ({ body, SERVICES }) => {
|
|
7
|
-
const envFile = body.envFile;
|
|
8
|
-
const modulesFolder = body.modulesFolder;
|
|
9
|
-
|
|
10
|
-
await SERVICES.environment.postEnvFile.handler({ envFile, modulesFolder });
|
|
11
|
-
|
|
12
|
-
return (lambdaHandler) => {
|
|
13
|
-
const serverHandler = getNodejsServerHandler(lambdaHandler);
|
|
14
|
-
const server = http.createServer(serverHandler);
|
|
15
|
-
return server;
|
|
16
|
-
}
|
|
17
|
-
}
|
|
1
|
+
import http from 'http';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
|
|
4
|
+
import getNodejsServerHandler from '../getNodejsServerHandler/index.js';
|
|
5
|
+
|
|
6
|
+
export default async ({ body, SERVICES }) => {
|
|
7
|
+
const envFile = body.envFile;
|
|
8
|
+
const modulesFolder = body.modulesFolder;
|
|
9
|
+
|
|
10
|
+
await SERVICES.environment.postEnvFile.handler({ envFile, modulesFolder });
|
|
11
|
+
|
|
12
|
+
return (lambdaHandler) => {
|
|
13
|
+
const serverHandler = getNodejsServerHandler(lambdaHandler);
|
|
14
|
+
const server = http.createServer(serverHandler);
|
|
15
|
+
return server;
|
|
16
|
+
}
|
|
17
|
+
}
|
package/server/services.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export default ['getServerFactory'];
|
|
1
|
+
export default ['getServerFactory'];
|
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
export default ({ body }) => {
|
|
2
|
-
const moduleName = body.moduleName;
|
|
3
|
-
const serviceCode = body.serviceCode;
|
|
4
|
-
|
|
5
|
-
const servicePathParts = serviceCode.split(":");
|
|
6
|
-
const pathParams = servicePathParts.slice(1).map(param => `:${param}`);
|
|
7
|
-
const rawServiceName = servicePathParts[0];
|
|
8
|
-
const serviceName = rawServiceName[0] === '!' ?
|
|
9
|
-
rawServiceName.substring(1) : rawServiceName;
|
|
10
|
-
|
|
11
|
-
const relativeServiceRoute = `${rawServiceName}`+
|
|
12
|
-
`${pathParams.length > 0 ? '/' : ''}${pathParams.join("/")}`;
|
|
13
|
-
|
|
14
|
-
const serviceRoute = relativeServiceRoute[0]==='!' ?
|
|
15
|
-
`/${relativeServiceRoute.substring(1)}/${moduleName}` :
|
|
16
|
-
`/${moduleName}/${relativeServiceRoute}`;
|
|
17
|
-
|
|
18
|
-
console.log('serviceRoute', '['+relativeServiceRoute+']');
|
|
19
|
-
console.log('serviceRoute', relativeServiceRoute.substring(1), 'fdfd', serviceRoute);
|
|
20
|
-
|
|
21
|
-
return { serviceName, serviceRoute };
|
|
22
|
-
};
|
|
1
|
+
export default ({ body }) => {
|
|
2
|
+
const moduleName = body.moduleName;
|
|
3
|
+
const serviceCode = body.serviceCode;
|
|
4
|
+
|
|
5
|
+
const servicePathParts = serviceCode.split(":");
|
|
6
|
+
const pathParams = servicePathParts.slice(1).map(param => `:${param}`);
|
|
7
|
+
const rawServiceName = servicePathParts[0];
|
|
8
|
+
const serviceName = rawServiceName[0] === '!' ?
|
|
9
|
+
rawServiceName.substring(1) : rawServiceName;
|
|
10
|
+
|
|
11
|
+
const relativeServiceRoute = `${rawServiceName}`+
|
|
12
|
+
`${pathParams.length > 0 ? '/' : ''}${pathParams.join("/")}`;
|
|
13
|
+
|
|
14
|
+
const serviceRoute = relativeServiceRoute[0]==='!' ?
|
|
15
|
+
`/${relativeServiceRoute.substring(1)}/${moduleName}` :
|
|
16
|
+
`/${moduleName}/${relativeServiceRoute}`;
|
|
17
|
+
|
|
18
|
+
console.log('serviceRoute', '['+relativeServiceRoute+']');
|
|
19
|
+
console.log('serviceRoute', relativeServiceRoute.substring(1), 'fdfd', serviceRoute);
|
|
20
|
+
|
|
21
|
+
return { serviceName, serviceRoute };
|
|
22
|
+
};
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
export default ({ body }) => {
|
|
2
|
-
const event = body.event;
|
|
3
|
-
|
|
4
|
-
const { params, query, requestContext } = event;
|
|
5
|
-
const claims = requestContext.authorizer?.jwt?.claims
|
|
6
|
-
|
|
7
|
-
const tempUnifiedBody = { ...event.body, ...params, ...query };
|
|
8
|
-
const unifiedBody = Object.keys(tempUnifiedBody).length > 0 ?
|
|
9
|
-
tempUnifiedBody : undefined;
|
|
10
|
-
|
|
11
|
-
return { body: unifiedBody, claims };
|
|
12
|
-
}
|
|
1
|
+
export default ({ body }) => {
|
|
2
|
+
const event = body.event;
|
|
3
|
+
|
|
4
|
+
const { params, query, requestContext } = event;
|
|
5
|
+
const claims = requestContext.authorizer?.jwt?.claims
|
|
6
|
+
|
|
7
|
+
const tempUnifiedBody = { ...event.body, ...params, ...query };
|
|
8
|
+
const unifiedBody = Object.keys(tempUnifiedBody).length > 0 ?
|
|
9
|
+
tempUnifiedBody : undefined;
|
|
10
|
+
|
|
11
|
+
return { body: unifiedBody, claims };
|
|
12
|
+
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
const typeToResponseCode = {
|
|
2
|
-
post: 201,
|
|
3
|
-
delete: 204,
|
|
4
|
-
}
|
|
5
|
-
|
|
6
|
-
export default ({ body }) => {
|
|
7
|
-
const methodType = body;
|
|
8
|
-
|
|
9
|
-
if (methodType in typeToResponseCode) return typeToResponseCode[methodType];
|
|
10
|
-
else return 200;
|
|
11
|
-
}
|
|
1
|
+
const typeToResponseCode = {
|
|
2
|
+
post: 201,
|
|
3
|
+
delete: 204,
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
export default ({ body }) => {
|
|
7
|
+
const methodType = body;
|
|
8
|
+
|
|
9
|
+
if (methodType in typeToResponseCode) return typeToResponseCode[methodType];
|
|
10
|
+
else return 200;
|
|
11
|
+
}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
const getUpperSnakeCase = str => {
|
|
2
|
-
return str
|
|
3
|
-
.replace(/([a-z])([A-Z])/g, '$1_$2')
|
|
4
|
-
.replace(/([A-Z])([A-Z][a-z])/g, '$1_$2')
|
|
5
|
-
.toUpperCase();
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
export default ({ body }) => {
|
|
9
|
-
const moduleName = body.moduleName;
|
|
10
|
-
const serviceName = body.serviceName;
|
|
11
|
-
|
|
12
|
-
const snakeModuleName = getUpperSnakeCase(moduleName);
|
|
13
|
-
const snakeServiceName = getUpperSnakeCase(serviceName);
|
|
14
|
-
return snakeModuleName + '_' + snakeServiceName;
|
|
15
|
-
};
|
|
1
|
+
const getUpperSnakeCase = str => {
|
|
2
|
+
return str
|
|
3
|
+
.replace(/([a-z])([A-Z])/g, '$1_$2')
|
|
4
|
+
.replace(/([A-Z])([A-Z][a-z])/g, '$1_$2')
|
|
5
|
+
.toUpperCase();
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export default ({ body }) => {
|
|
9
|
+
const moduleName = body.moduleName;
|
|
10
|
+
const serviceName = body.serviceName;
|
|
11
|
+
|
|
12
|
+
const snakeModuleName = getUpperSnakeCase(moduleName);
|
|
13
|
+
const snakeServiceName = getUpperSnakeCase(serviceName);
|
|
14
|
+
return snakeModuleName + '_' + snakeServiceName;
|
|
15
|
+
};
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
const methodsAvailable = ['post', 'get', 'patch', 'put', 'delete'];
|
|
2
|
-
|
|
3
|
-
export default ({ body }) => {
|
|
4
|
-
const serviceName = body.serviceName;
|
|
5
|
-
|
|
6
|
-
const methodMatched = serviceName.match(/^[a-z]*/);
|
|
7
|
-
if (!methodMatched || !methodsAvailable.includes(methodMatched[0]))
|
|
8
|
-
throw new Error('UNKNOWN_METHOD_TYPE: ' + serviceName);
|
|
9
|
-
|
|
10
|
-
return methodMatched[0];
|
|
11
|
-
}
|
|
1
|
+
const methodsAvailable = ['post', 'get', 'patch', 'put', 'delete'];
|
|
2
|
+
|
|
3
|
+
export default ({ body }) => {
|
|
4
|
+
const serviceName = body.serviceName;
|
|
5
|
+
|
|
6
|
+
const methodMatched = serviceName.match(/^[a-z]*/);
|
|
7
|
+
if (!methodMatched || !methodsAvailable.includes(methodMatched[0]))
|
|
8
|
+
throw new Error('UNKNOWN_METHOD_TYPE: ' + serviceName);
|
|
9
|
+
|
|
10
|
+
return methodMatched[0];
|
|
11
|
+
}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import API_SERVICE from '../../api/index.js';
|
|
2
|
-
import LOG_SERVICE from '../../log/index.js';
|
|
3
|
-
|
|
4
|
-
import getResponseCode from '../getResponseCode/index.js';
|
|
5
|
-
|
|
6
|
-
export default async (res, ROUTE_CODE, CONTROLLER, METHOD_TYPE, body, claims) => {
|
|
7
|
-
|
|
8
|
-
const { MODELS, SERVICES } = API_SERVICE.get();
|
|
9
|
-
const METHOD_RESPONSE = await CONTROLLER({ MODELS, SERVICES, body, claims });
|
|
10
|
-
const METHOD_RESPONSE_CODE = getResponseCode(METHOD_TYPE);
|
|
11
|
-
LOG_SERVICE.post({ ROUTE_CODE, METHOD_RESPONSE });
|
|
12
|
-
res.status(METHOD_RESPONSE_CODE).json(METHOD_RESPONSE);
|
|
13
|
-
};
|
|
1
|
+
import API_SERVICE from '../../api/index.js';
|
|
2
|
+
import LOG_SERVICE from '../../log/index.js';
|
|
3
|
+
|
|
4
|
+
import getResponseCode from '../getResponseCode/index.js';
|
|
5
|
+
|
|
6
|
+
export default async (res, ROUTE_CODE, CONTROLLER, METHOD_TYPE, body, claims) => {
|
|
7
|
+
|
|
8
|
+
const { MODELS, SERVICES } = API_SERVICE.get();
|
|
9
|
+
const METHOD_RESPONSE = await CONTROLLER({ MODELS, SERVICES, body, claims });
|
|
10
|
+
const METHOD_RESPONSE_CODE = getResponseCode(METHOD_TYPE);
|
|
11
|
+
LOG_SERVICE.post({ ROUTE_CODE, METHOD_RESPONSE });
|
|
12
|
+
res.status(METHOD_RESPONSE_CODE).json(METHOD_RESPONSE);
|
|
13
|
+
};
|
|
@@ -1,82 +1,82 @@
|
|
|
1
|
-
//import LOG_SERVICE from '../../log/index.js';
|
|
2
|
-
//import { LOG_SERVICE } from '@minimonolith/lib';
|
|
3
|
-
|
|
4
|
-
export default async ({ body, ROUTE_CODE, SERVICES }) => {
|
|
5
|
-
const moduleName = body.moduleName;
|
|
6
|
-
const serviceCode = body.serviceCode;
|
|
7
|
-
|
|
8
|
-
const { serviceName, serviceRoute } = await SERVICES.service
|
|
9
|
-
.getParsedCode.handler({ moduleName, serviceCode });
|
|
10
|
-
|
|
11
|
-
const service =
|
|
12
|
-
await SERVICES.api.getService.handler({ moduleName, serviceName });
|
|
13
|
-
|
|
14
|
-
//const method = await SERVICES.service.getType.handler({ serviceName });
|
|
15
|
-
const ADDITIONAL_KEYS = { MODELS: await SERVICES.api.getModels.handler() };
|
|
16
|
-
|
|
17
|
-
const handler = async (event, res) => {
|
|
18
|
-
const { body: inBody, claims } =
|
|
19
|
-
await SERVICES.service.getParsedEvent.handler({ event });
|
|
20
|
-
//const service =
|
|
21
|
-
// await SERVICES.api.getService.handler({ moduleName, serviceName });
|
|
22
|
-
|
|
23
|
-
let parsedInBody = inBody;
|
|
24
|
-
//console.log('service', service);
|
|
25
|
-
|
|
26
|
-
//if (service.in) {
|
|
27
|
-
const validationIn = await SERVICES.validation
|
|
28
|
-
.getParsedAsync.handler({ ROUTE_CODE: ROUTE_CODE+'_IN',
|
|
29
|
-
VALIDATOR: service.in, input: inBody });
|
|
30
|
-
|
|
31
|
-
if (validationIn?.error) {
|
|
32
|
-
//LOG_SERVICE.post({ VALIDATION_ERROR: validationIn.error });
|
|
33
|
-
console.log({ VALIDATION_ERROR: validationIn.error });
|
|
34
|
-
res.status(400).json(validationIn.error);
|
|
35
|
-
return;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
if (validationIn) parsedInBody = validationIn.parsedBody;
|
|
39
|
-
//}
|
|
40
|
-
|
|
41
|
-
let outBody = undefined;
|
|
42
|
-
try {
|
|
43
|
-
outBody = await service
|
|
44
|
-
.rawHandler(parsedInBody, claims);
|
|
45
|
-
|
|
46
|
-
} catch (SERVICE_ERROR) {
|
|
47
|
-
if (!service.error) {
|
|
48
|
-
//LOG_SERVICE.post({ SERVICE_ERROR });
|
|
49
|
-
console.log({ SERVICE_ERROR });
|
|
50
|
-
res.status(500).json(SERVICE_ERROR);
|
|
51
|
-
return;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
outBody = await service.error(parsedInBody, claims);
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
let parsedOutBody = outBody;
|
|
58
|
-
//if (service.out) {
|
|
59
|
-
const validationOut = await SERVICES.validation
|
|
60
|
-
.getParsedAsync.handler({ ROUTE_CODE: ROUTE_CODE+'_OUT',
|
|
61
|
-
VALIDATOR: service.out, input: outBody });
|
|
62
|
-
|
|
63
|
-
if (validationOut?.error) {
|
|
64
|
-
//LOG_SERVICE.post({ VALIDATION_ERROR: validationOut.error });
|
|
65
|
-
console.log({ VALIDATION_ERROR: validationOut.error });
|
|
66
|
-
res.status(400).json(validationOut.error);
|
|
67
|
-
return;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
if (validationOut) parsedOutBody = validationOut.parsedBody;
|
|
71
|
-
//}
|
|
72
|
-
|
|
73
|
-
//console.log('method', method);
|
|
74
|
-
const serviceResponseCode =
|
|
75
|
-
//await SERVICES.service.getResponseCode.handler(method);
|
|
76
|
-
await SERVICES.service.getResponseCode.handler(service.type);
|
|
77
|
-
return res.status(serviceResponseCode).json(parsedOutBody);
|
|
78
|
-
};
|
|
79
|
-
|
|
80
|
-
await SERVICES.api.postRoute.handler({
|
|
81
|
-
method: service.type, route: serviceRoute, handler });
|
|
82
|
-
};
|
|
1
|
+
//import LOG_SERVICE from '../../log/index.js';
|
|
2
|
+
//import { LOG_SERVICE } from '@minimonolith/lib';
|
|
3
|
+
|
|
4
|
+
export default async ({ body, ROUTE_CODE, SERVICES }) => {
|
|
5
|
+
const moduleName = body.moduleName;
|
|
6
|
+
const serviceCode = body.serviceCode;
|
|
7
|
+
|
|
8
|
+
const { serviceName, serviceRoute } = await SERVICES.service
|
|
9
|
+
.getParsedCode.handler({ moduleName, serviceCode });
|
|
10
|
+
|
|
11
|
+
const service =
|
|
12
|
+
await SERVICES.api.getService.handler({ moduleName, serviceName });
|
|
13
|
+
|
|
14
|
+
//const method = await SERVICES.service.getType.handler({ serviceName });
|
|
15
|
+
const ADDITIONAL_KEYS = { MODELS: await SERVICES.api.getModels.handler() };
|
|
16
|
+
|
|
17
|
+
const handler = async (event, res) => {
|
|
18
|
+
const { body: inBody, claims } =
|
|
19
|
+
await SERVICES.service.getParsedEvent.handler({ event });
|
|
20
|
+
//const service =
|
|
21
|
+
// await SERVICES.api.getService.handler({ moduleName, serviceName });
|
|
22
|
+
|
|
23
|
+
let parsedInBody = inBody;
|
|
24
|
+
//console.log('service', service);
|
|
25
|
+
|
|
26
|
+
//if (service.in) {
|
|
27
|
+
const validationIn = await SERVICES.validation
|
|
28
|
+
.getParsedAsync.handler({ ROUTE_CODE: ROUTE_CODE+'_IN',
|
|
29
|
+
VALIDATOR: service.in, input: inBody });
|
|
30
|
+
|
|
31
|
+
if (validationIn?.error) {
|
|
32
|
+
//LOG_SERVICE.post({ VALIDATION_ERROR: validationIn.error });
|
|
33
|
+
console.log({ VALIDATION_ERROR: validationIn.error });
|
|
34
|
+
res.status(400).json(validationIn.error);
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
if (validationIn) parsedInBody = validationIn.parsedBody;
|
|
39
|
+
//}
|
|
40
|
+
|
|
41
|
+
let outBody = undefined;
|
|
42
|
+
try {
|
|
43
|
+
outBody = await service
|
|
44
|
+
.rawHandler(parsedInBody, claims);
|
|
45
|
+
|
|
46
|
+
} catch (SERVICE_ERROR) {
|
|
47
|
+
if (!service.error) {
|
|
48
|
+
//LOG_SERVICE.post({ SERVICE_ERROR });
|
|
49
|
+
console.log({ SERVICE_ERROR });
|
|
50
|
+
res.status(500).json(SERVICE_ERROR);
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
outBody = await service.error(parsedInBody, claims);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
let parsedOutBody = outBody;
|
|
58
|
+
//if (service.out) {
|
|
59
|
+
const validationOut = await SERVICES.validation
|
|
60
|
+
.getParsedAsync.handler({ ROUTE_CODE: ROUTE_CODE+'_OUT',
|
|
61
|
+
VALIDATOR: service.out, input: outBody });
|
|
62
|
+
|
|
63
|
+
if (validationOut?.error) {
|
|
64
|
+
//LOG_SERVICE.post({ VALIDATION_ERROR: validationOut.error });
|
|
65
|
+
console.log({ VALIDATION_ERROR: validationOut.error });
|
|
66
|
+
res.status(400).json(validationOut.error);
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
if (validationOut) parsedOutBody = validationOut.parsedBody;
|
|
71
|
+
//}
|
|
72
|
+
|
|
73
|
+
//console.log('method', method);
|
|
74
|
+
const serviceResponseCode =
|
|
75
|
+
//await SERVICES.service.getResponseCode.handler(method);
|
|
76
|
+
await SERVICES.service.getResponseCode.handler(service.type);
|
|
77
|
+
return res.status(serviceResponseCode).json(parsedOutBody);
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
await SERVICES.api.postRoute.handler({
|
|
81
|
+
method: service.type, route: serviceRoute, handler });
|
|
82
|
+
};
|
package/service/services.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
export default [
|
|
2
|
-
'postRoute',
|
|
3
|
-
'getParsedCode',
|
|
4
|
-
//'getType',
|
|
5
|
-
//'getRouteCode',
|
|
6
|
-
//'postResponse',
|
|
7
|
-
'getParsedEvent',
|
|
8
|
-
'getResponseCode',
|
|
9
|
-
];
|
|
1
|
+
export default [
|
|
2
|
+
'postRoute',
|
|
3
|
+
'getParsedCode',
|
|
4
|
+
//'getType',
|
|
5
|
+
//'getRouteCode',
|
|
6
|
+
//'postResponse',
|
|
7
|
+
'getParsedEvent',
|
|
8
|
+
'getResponseCode',
|
|
9
|
+
];
|
package/setupTesting.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import path from 'path';
|
|
2
|
+
import { getNewLib, z } from '@minimonolith/lib';
|
|
3
|
+
|
|
4
|
+
import modules from './modules.js';
|
|
5
|
+
|
|
6
|
+
//const LIB = await getNewLib({ DEBUG: 'TRUE' });
|
|
7
|
+
const LIB = await getNewLib();
|
|
8
|
+
|
|
9
|
+
await Promise.all(modules.map(module => LIB.postModule(module)));
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
const { SERVICES, COMPONENTS } = LIB;
|
|
13
|
+
const zdb = COMPONENTS.zdb;
|
|
14
|
+
const database = SERVICES.database;
|
|
15
|
+
const getServerFactory = SERVICES.server.getServerFactory.handler;
|
|
16
|
+
const autotest = SERVICES.autotest;
|
|
17
|
+
const getNewAPI = SERVICES.api.getNewAPI.handler;
|
|
18
|
+
|
|
19
|
+
export { z, zdb, database, getServerFactory, autotest, getNewAPI };
|