minimonolith 0.22.4 → 0.23.1

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 CHANGED
@@ -63,7 +63,6 @@ await API.postDatabaseService({
63
63
  DB_DB: process.env.DB_DB,
64
64
  DB_USER: process.env.DB_USER,
65
65
  DB_PASS: process.env.DB_PASS,
66
- DB_STORAGE: process.env.DB_STORAGE,
67
66
  });
68
67
 
69
68
  export const lambdaHandler = await API.getSyncedHandler();
@@ -175,7 +174,7 @@ TEST_ENV=FALSE
175
174
  ## Database Authentication
176
175
 
177
176
  To set up authentication for the database you need to pass necessary variables to postDatabaseService as at index.js above.
178
- Assuming using same env variables as used at index.js above
177
+ Assuming using same env variable names as at index.js above
179
178
 
180
179
  For MySQL:
181
180
 
@@ -190,16 +189,14 @@ DB_USER=<your_database_username>
190
189
  DB_PASS=<your_database_password>
191
190
  ```
192
191
 
193
- For SQLite:
192
+ For SQLite in memory:
194
193
 
195
194
  ```makefile
196
195
  DEV_ENV=TRUE
197
196
  PROD_ENV=FALSE
198
197
  DB_DIALECT=sqlite
199
198
  DB_DB=<your_database_name>
200
- DB_STORAGE=:memory: # For in-memory SQLite database
201
- # Or
202
- DB_STORAGE=path/to/your/sqlite/file.db # For file-based SQLite database
199
+ DB_STORAGE=:memory: # Need to also pass to API.postDatabaseService()
203
200
  ```
204
201
 
205
202
  Make sure to replace the placeholders with your actual database credentials.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "minimonolith",
3
3
  "type": "module",
4
- "version": "0.22.4",
4
+ "version": "0.23.1",
5
5
  "main": "index.js",
6
6
  "license": "MIT",
7
7
  "scripts": {
@@ -2,6 +2,7 @@ import getAPI from '../get/index.js';
2
2
 
3
3
  export default ({ DEV_ENV='FALSE', PROD_ENV='TRUE', TEST_ENV='FALSE' } = {}) => {
4
4
  getAPI().SERVICES = {};
5
+ getAPI().VALIDATORS = {};
5
6
  getAPI().SCHEMAS = {};
6
7
  getAPI().MODELS = {};
7
8
  getAPI().ORM = undefined;
@@ -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)+'/';
@@ -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
- const Z_ELEMENTS = (await import(VALIDATION_URL)).default;
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
- const VALIDATION_ERROR = (await VALIDATOR(EVENT_CONTEXT).safeParseAsync(input)).error?.format();
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 (!VALIDATION_ERROR) return false;
16
+ if (!VALIDATOR) return false;
17
+
18
+ const VALIDATION_ERROR =
19
+ (await getOptionalObject(VALIDATOR(EVENT_CONTEXT)).safeParseAsync(input)).error?.format();
9
20
 
10
- const MESSAGE = { ROUTE_CODE, VALIDATION_ERROR };
11
- LOG_SERVICE.postError(MESSAGE);
12
- res.status(400).json(MESSAGE);
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 true;
28
+ return false
15
29
  }
package/.env.example DELETED
@@ -1,4 +0,0 @@
1
- MM_API_DB_DIALECT=sqlite
2
- MM_API_DB_STORAGE=:memory:
3
- MM_API_PROD_ENV=FALSE
4
- MM_API_DEV_ENV=TRUE