minimonolith 0.22.3 → 0.23.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/getNewAPI/index.js +1 -0
- package/src/api/postService/index.js +1 -1
- package/src/method/post/index.js +5 -0
- package/src/validation/get/index.js +3 -6
- package/src/validation/getOptionalObject/index.js +1 -1
- package/src/validation/postError/index.js +21 -7
package/README.md
CHANGED
|
@@ -27,7 +27,7 @@ Here's an example project using `minimonolith`:
|
|
|
27
27
|
|
|
28
28
|
### server.js
|
|
29
29
|
|
|
30
|
-
This file is used for local development. It runs a local server using `minimonolith`'s `
|
|
30
|
+
This file is used for local development. It runs a local server using `minimonolith`'s `getServer` function:
|
|
31
31
|
|
|
32
32
|
```js
|
|
33
33
|
// server.js
|
package/package.json
CHANGED
|
@@ -15,7 +15,7 @@ const META_SERVICE_NAME = 'API', META_METHOD_NAME = 'POST_SERVICE';
|
|
|
15
15
|
export default async (SERVICE_NAME, SRC_FOLDER='', MODULES_FOLDER='node_modules/') => {
|
|
16
16
|
|
|
17
17
|
LOG_SERVICE.post(META_SERVICE_NAME, META_METHOD_NAME, SERVICE_NAME);
|
|
18
|
-
getAPI().SERVICES[SERVICE_NAME] = {};
|
|
18
|
+
getAPI().SERVICES[SERVICE_NAME] = {}; getAPI().VALIDATORS[SERVICE_NAME] = {};
|
|
19
19
|
try {
|
|
20
20
|
|
|
21
21
|
const projectRootPath = PATH_SERVICE.getProjectRoot(import.meta.url, MODULES_FOLDER)+'/';
|
package/src/method/post/index.js
CHANGED
|
@@ -29,6 +29,11 @@ export default async (SERVICE_NAME, SERVICE_URL, METHOD_CODE) => {
|
|
|
29
29
|
return await METHOD.CONTROLLER({ MODELS, SERVICES, ROUTE_CODE, body, claims });
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
+
API_SERVICE.get().VALIDATORS[SERVICE_NAME][METHOD_NAME] = () => {
|
|
33
|
+
const { MODELS, SERVICES, VALIDATORS } = API_SERVICE.get();
|
|
34
|
+
return METHOD.VALIDATOR({ MODELS, SERVICES, VALIDATORS });
|
|
35
|
+
}
|
|
36
|
+
|
|
32
37
|
const METHOD_TYPE = getType(METHOD_NAME);
|
|
33
38
|
|
|
34
39
|
LOG_SERVICE.post('POSTING_ROUTE', METHOD_ROUTE);
|
|
@@ -4,16 +4,13 @@ import { z } from 'zod';
|
|
|
4
4
|
|
|
5
5
|
import LOG_SERVICE from '../../log/index.js';
|
|
6
6
|
|
|
7
|
-
import getOptionalObject from '../getOptionalObject/index.js';
|
|
8
|
-
|
|
9
7
|
export default async (METHOD_NAME, SERVICE_URL) => {
|
|
10
8
|
const VALIDATION_URL = new URL(`${METHOD_NAME}/valid.js`, SERVICE_URL);
|
|
11
9
|
|
|
12
10
|
if (!fs.existsSync(url.fileURLToPath(VALIDATION_URL)))
|
|
13
|
-
return EVENT_CONTEXT => z.undefined();
|
|
11
|
+
//return EVENT_CONTEXT => z.undefined();
|
|
12
|
+
return undefined;;
|
|
14
13
|
|
|
15
14
|
LOG_SERVICE.post(' FOUND_VALIDATOR');
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
return EVENT_CONTEXT => getOptionalObject(Z_ELEMENTS(EVENT_CONTEXT));
|
|
15
|
+
return (await import(VALIDATION_URL)).default;
|
|
19
16
|
};
|
|
@@ -2,7 +2,7 @@ import { z } from 'zod';
|
|
|
2
2
|
|
|
3
3
|
export default zElements => {
|
|
4
4
|
const zObject = z.object(zElements).strict();
|
|
5
|
-
if (!Object.values(zElements).every(zElement => zElement.isOptional())) return zObject;
|
|
5
|
+
if (!Object.values(zElements).every(zElement => zElement.isOptional() )) return zObject;
|
|
6
6
|
|
|
7
7
|
return z.custom(unifiedBody => unifiedBody===undefined ? true : zObject.parse(unifiedBody));
|
|
8
8
|
}
|
|
@@ -1,15 +1,29 @@
|
|
|
1
1
|
import API_SERVICE from '../../api/index.js';
|
|
2
2
|
import LOG_SERVICE from '../../log/index.js';
|
|
3
3
|
|
|
4
|
+
import getOptionalObject from '../getOptionalObject/index.js';
|
|
5
|
+
|
|
4
6
|
export default async (res, ROUTE_CODE, VALIDATOR, input) => {
|
|
5
|
-
const { MODELS, SERVICES } = API_SERVICE.get(), EVENT_CONTEXT = { MODELS, SERVICES };
|
|
6
|
-
|
|
7
|
+
const { MODELS, SERVICES, VALIDATORS } = API_SERVICE.get(), EVENT_CONTEXT = { MODELS, SERVICES, VALIDATORS };
|
|
8
|
+
|
|
9
|
+
if (!VALIDATOR && input) {
|
|
10
|
+
const MESSAGE = { ROUTE_CODE, VALIDATION_ERROR: JSON.stringify({ message: 'BODY_NOT_ALLOWED' }) };
|
|
11
|
+
LOG_SERVICE.postError(MESSAGE);
|
|
12
|
+
res.status(400).json(MESSAGE);
|
|
13
|
+
return true;
|
|
14
|
+
}
|
|
7
15
|
|
|
8
|
-
if (!
|
|
16
|
+
if (!VALIDATOR) return false;
|
|
17
|
+
|
|
18
|
+
const VALIDATION_ERROR =
|
|
19
|
+
(await getOptionalObject(VALIDATOR(EVENT_CONTEXT)).safeParseAsync(input)).error?.format();
|
|
9
20
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
21
|
+
if (VALIDATION_ERROR) {
|
|
22
|
+
const MESSAGE = { ROUTE_CODE, VALIDATION_ERROR: JSON.stringify(VALIDATION_ERROR) };
|
|
23
|
+
LOG_SERVICE.postError(MESSAGE);
|
|
24
|
+
res.status(400).json(MESSAGE);
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
13
27
|
|
|
14
|
-
return
|
|
28
|
+
return false
|
|
15
29
|
}
|