@starklabs/forge 1.3.16 → 1.3.18

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.
Files changed (36) hide show
  1. package/dist/js/auth/utils/modeMap.d.ts +4 -4
  2. package/dist/js/config/envs.d.ts.map +1 -1
  3. package/dist/js/config/envs.js +23 -19
  4. package/dist/js/config/envs.js.map +1 -1
  5. package/dist/js/crud/create.d.ts.map +1 -1
  6. package/dist/js/crud/create.js +25 -1
  7. package/dist/js/crud/create.js.map +1 -1
  8. package/dist/js/crud/remove.d.ts.map +1 -1
  9. package/dist/js/crud/remove.js +18 -1
  10. package/dist/js/crud/remove.js.map +1 -1
  11. package/dist/js/crud/update.d.ts.map +1 -1
  12. package/dist/js/crud/update.js +22 -0
  13. package/dist/js/crud/update.js.map +1 -1
  14. package/dist/js/crud/utils/actionHandler.d.ts +5 -0
  15. package/dist/js/crud/utils/actionHandler.d.ts.map +1 -0
  16. package/dist/js/crud/utils/actionHandler.js +9 -0
  17. package/dist/js/crud/utils/actionHandler.js.map +1 -0
  18. package/dist/js/crud/utils/runActions.d.ts +5 -0
  19. package/dist/js/crud/utils/runActions.d.ts.map +1 -0
  20. package/dist/js/crud/utils/runActions.js +12 -0
  21. package/dist/js/crud/utils/runActions.js.map +1 -0
  22. package/dist/js/types/ActionHandler.d.ts +23 -0
  23. package/dist/js/types/ActionHandler.d.ts.map +1 -0
  24. package/dist/js/types/ActionHandler.js +2 -0
  25. package/dist/js/types/ActionHandler.js.map +1 -0
  26. package/dist/js/types/Collection.d.ts +2 -28
  27. package/dist/js/types/Collection.d.ts.map +1 -1
  28. package/dist/js/types/Route.d.ts +34 -0
  29. package/dist/js/types/Route.d.ts.map +1 -0
  30. package/dist/js/types/Route.js +2 -0
  31. package/dist/js/types/Route.js.map +1 -0
  32. package/dist/js/utils/getErrorDetail.d.ts +2 -2
  33. package/dist/js/utils/validationKeyError.d.ts.map +1 -1
  34. package/dist/js/utils/validationKeyError.js +8 -1
  35. package/dist/js/utils/validationKeyError.js.map +1 -1
  36. package/package.json +1 -1
@@ -6,14 +6,14 @@ declare const modeMap: {
6
6
  purpose: string;
7
7
  routeName: string;
8
8
  modelName: string;
9
- routeObj: import("../../types/Collection.js").Route;
9
+ routeObj: import("../../types/Route.js").Route;
10
10
  }) => Promise<void>;
11
11
  credentials: ({ body, modelName, res, routeName, routeObj, req, }: {
12
12
  body: any;
13
13
  modelName: string;
14
14
  res: import("express").Response;
15
15
  routeName: string;
16
- routeObj: import("../../types/Collection.js").Route;
16
+ routeObj: import("../../types/Route.js").Route;
17
17
  req: import("express").Request;
18
18
  }) => Promise<void>;
19
19
  };
@@ -24,7 +24,7 @@ declare const modeMap: {
24
24
  purpose: string;
25
25
  routeName: string;
26
26
  modelName: string;
27
- routeObj: import("../../types/Collection.js").Route;
27
+ routeObj: import("../../types/Route.js").Route;
28
28
  }) => Promise<void>;
29
29
  credentials: ({ body, modelName, res, req, routeName, routeObj, }: {
30
30
  body: any;
@@ -32,7 +32,7 @@ declare const modeMap: {
32
32
  res: import("express").Response;
33
33
  req: import("express").Request;
34
34
  routeName: string;
35
- routeObj: import("../../types/Collection.js").Route;
35
+ routeObj: import("../../types/Route.js").Route;
36
36
  }) => Promise<void>;
37
37
  };
38
38
  };
@@ -1 +1 @@
1
- {"version":3,"file":"envs.d.ts","sourceRoot":"","sources":["../../../src/js/config/envs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAc,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAI/E,QAAA,IAAI,IAAI,EAAE,mBAA0C,CAAC;AAqErD,QAAA,MAAM,OAAO,GAAI,QAAQ,mBAAmB,KAAG,IAkB9C,CAAC;AAEF,QAAA,MAAM,OAAO,QAAO,mBAEnB,CAAC;AAEF,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC"}
1
+ {"version":3,"file":"envs.d.ts","sourceRoot":"","sources":["../../../src/js/config/envs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAc,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAI/E,QAAA,IAAI,IAAI,EAAE,mBAA0C,CAAC;AAqDrD,QAAA,MAAM,OAAO,GAAI,QAAQ,mBAAmB,KAAG,IA6C9C,CAAC;AAEF,QAAA,MAAM,OAAO,QAAO,mBAEnB,CAAC;AAEF,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC"}
@@ -11,34 +11,23 @@ const placeholderError = (key, value) => {
11
11
  };
12
12
  const validateAuth = (config) => {
13
13
  try {
14
- if (!config.fieldsObj)
15
- vAError("fieldsObj");
16
- const requiredKeys = ["email", "password", "otp", "purpose"];
17
- if (config.mode === "manual")
14
+ if (config.mode !== "builtin")
18
15
  return;
19
- for (const key of requiredKeys) {
20
- if (!(key in config.fieldsObj))
21
- vAError(`fieldsObj.${key}`);
22
- }
23
16
  for (const [key, value] of Object.entries(config.fieldsObj)) {
24
17
  placeholderError(key, value);
25
18
  }
26
19
  if (!config.schemaObj)
27
20
  vAError("schemaObj");
21
+ const requiredKeys = ["email", "password", "otp", "purpose"];
22
+ for (const key of requiredKeys) {
23
+ if (!(key in config.fieldsObj))
24
+ vAError(`fieldsObj.${key}`);
25
+ }
26
+ placeholderError("modelName", config.schemaObj?.modelName);
28
27
  if (!config.schemaObj?.modelName)
29
28
  vAError("schemaObj.modelName");
30
- placeholderError("modelName", config.schemaObj?.modelName);
31
29
  if (!config.schemaObj?.schema)
32
30
  vAError("schemaObj.schema");
33
- const authMethods = ["credentials", "otp"];
34
- if (!config.signupMode)
35
- vAError("signupMode");
36
- if (!config.loginMode)
37
- vAError("loginMode");
38
- if (!authMethods.includes(config.signupMode))
39
- vAError(`signupMode as ${authMethods.join(" or ")}`);
40
- if (!authMethods.includes(config.loginMode))
41
- vAError(`loginMode as ${authMethods.join(" or ")}`);
42
31
  }
43
32
  catch (error) {
44
33
  AppLog("x", "authConfigObj", error.message);
@@ -46,14 +35,29 @@ const validateAuth = (config) => {
46
35
  }
47
36
  };
48
37
  const setEnvs = (values) => {
49
- validateAuth(values.authConfigObj);
50
38
  const authConfig = values.authConfigObj;
51
39
  authConfig.accessTokenAge ??= "10m";
52
40
  authConfig.refreshTokenAge ??= "30d";
41
+ authConfig.rotateRefreshToken ??= true;
53
42
  authConfig.refreshTokenRotationInterval ??= "0s";
54
43
  authConfig.accessTokenName ??= "accessToken";
55
44
  authConfig.refreshTokenName ??= "refreshToken";
45
+ authConfig.returnAccessToken ??= false;
46
+ authConfig.returnRefreshToken ??= false;
56
47
  authConfig.verifyAccessUser ??= true;
48
+ authConfig.loginMode ??= "otp";
49
+ authConfig.signupMode ??= "otp";
50
+ authConfig.fieldsObj ??= {
51
+ email: "email",
52
+ otp: "otp",
53
+ password: "password",
54
+ purpose: "purpose",
55
+ };
56
+ authConfig.fieldsObj.email ??= "email";
57
+ authConfig.fieldsObj.otp ??= "otp";
58
+ authConfig.fieldsObj.password ??= "password";
59
+ authConfig.fieldsObj.purpose ??= "purpose";
60
+ validateAuth(authConfig);
57
61
  envs = values;
58
62
  };
59
63
  const getEnvs = () => {
@@ -1 +1 @@
1
- {"version":3,"file":"envs.js","sourceRoot":"","sources":["../../../src/js/config/envs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"envs.js","sourceRoot":"","sources":["../../../src/js/config/envs.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/js/crud/create.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAuB,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACtE,OAAO,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAapE,QAAA,MAAM,MAAM,GAAI,qDAKb;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,KAAK,CAAC;IAChB,cAAc,EAAE,cAAc,CAAC;CAChC,MACe,KAAK,OAAO,EAAE,KAAK,QAAQ,KAAG,OAAO,CAAC,IAAI,CA0EzD,CAAC;AAEF,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/js/crud/create.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAuB,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACtE,OAAO,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAcpE,QAAA,MAAM,MAAM,GAAI,qDAKb;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,KAAK,CAAC;IAChB,cAAc,EAAE,cAAc,CAAC;CAChC,MACe,KAAK,OAAO,EAAE,KAAK,QAAQ,KAAG,OAAO,CAAC,IAAI,CAuGzD,CAAC;AAEF,eAAe,MAAM,CAAC"}
@@ -9,6 +9,7 @@ import getValidationKey from "../utils/validationKeyError.js";
9
9
  import getErrorDetail from "../utils/getErrorDetail.js";
10
10
  import handleEncryption from "./encryption/handleEncryption.js";
11
11
  import handleHashing from "./security/handleHashing.js";
12
+ import runActions from "./utils/runActions.js";
12
13
  const create = ({ modelName, routeName, routeObj, validationsObj, }) => {
13
14
  return async (req, res) => {
14
15
  const validationObj = getValidationKey(routeObj, validationsObj);
@@ -25,6 +26,24 @@ const create = ({ modelName, routeName, routeObj, validationsObj, }) => {
25
26
  hint: "Make the authRole admin or adminOrOwner",
26
27
  details: getErrorDetail(routeObj),
27
28
  });
29
+ const ActionObj = {
30
+ req,
31
+ user: req.user,
32
+ routeName,
33
+ modelName,
34
+ Model,
35
+ data: {
36
+ owner,
37
+ body,
38
+ fileMetaData,
39
+ encryptedFields,
40
+ hashedFields,
41
+ },
42
+ };
43
+ await runActions(routeObj.actions?.before, {
44
+ operation: "create",
45
+ ...ActionObj,
46
+ });
28
47
  let newItem = null;
29
48
  try {
30
49
  newItem = await Model.create({
@@ -32,7 +51,7 @@ const create = ({ modelName, routeName, routeObj, validationsObj, }) => {
32
51
  ...fileMetaData,
33
52
  ...body,
34
53
  ...encryptedFields,
35
- ...hashedFields
54
+ ...hashedFields,
36
55
  });
37
56
  }
38
57
  catch (err) {
@@ -57,6 +76,11 @@ const create = ({ modelName, routeName, routeObj, validationsObj, }) => {
57
76
  details: getErrorDetail(routeObj),
58
77
  });
59
78
  }
79
+ await runActions(routeObj.actions?.after, {
80
+ ...ActionObj,
81
+ operation: "create",
82
+ item: newItem,
83
+ });
60
84
  appResponse({
61
85
  res,
62
86
  data: sanitizeOne(newItem.toObject(), routeObj),
@@ -1 +1 @@
1
- {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/js/crud/create.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/js/crud/create.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"remove.d.ts","sourceRoot":"","sources":["../../../src/js/crud/remove.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAMjD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAGpD,QAAA,MAAM,MAAM,GAAI,qCAIb;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,KAAK,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB,MACe,KAAK,OAAO,EAAE,KAAK,QAAQ,KAAG,OAAO,CAAC,IAAI,CAqCzD,CAAC;AAEF,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"remove.d.ts","sourceRoot":"","sources":["../../../src/js/crud/remove.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAMjD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAIpD,QAAA,MAAM,MAAM,GAAI,qCAIb;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,KAAK,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB,MACe,KAAK,OAAO,EAAE,KAAK,QAAQ,KAAG,OAAO,CAAC,IAAI,CA2DzD,CAAC;AAEF,eAAe,MAAM,CAAC"}
@@ -4,6 +4,7 @@ import getModel from "../utils/getModel.js";
4
4
  import appResponse from "../utils/response.js";
5
5
  import authorizeAccess from "./utils/authorizeAccess.js";
6
6
  import { sanitizeOne } from "../utils/sanitize.js";
7
+ import runActions from "./utils/runActions.js";
7
8
  const remove = ({ modelName, routeName, routeObj, }) => {
8
9
  return async (req, res) => {
9
10
  const id = getParam({ req, routeObj });
@@ -15,16 +16,32 @@ const remove = ({ modelName, routeName, routeObj, }) => {
15
16
  });
16
17
  authorizeAccess({ routeObj, routeName, item, req });
17
18
  const Model = getModel({ modelName, routeName, routeObj });
19
+ const ActionObj = {
20
+ req,
21
+ user: req.user,
22
+ routeName,
23
+ modelName,
24
+ Model,
25
+ };
26
+ await runActions(routeObj.actions?.before, {
27
+ operation: "remove",
28
+ ...ActionObj,
29
+ });
18
30
  const deletedItem = await Model.findByIdAndDelete(id);
19
31
  const cleaned = sanitizeOne(deletedItem.toObject(), routeObj);
20
32
  const idExcluded = routeObj.mongooseConfigObj?.hiddenFieldsArray?.includes("_id");
21
33
  if (idExcluded)
22
34
  delete cleaned["_id"];
35
+ await runActions(routeObj.actions?.after, {
36
+ ...ActionObj,
37
+ operation: "create",
38
+ item: deletedItem,
39
+ });
23
40
  appResponse({
24
41
  res,
25
42
  message: "Item deleted successfully!",
26
43
  statusCode: 202,
27
- data: cleaned
44
+ data: cleaned,
28
45
  });
29
46
  };
30
47
  };
@@ -1 +1 @@
1
- {"version":3,"file":"remove.js","sourceRoot":"","sources":["../../../src/js/crud/remove.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,MAAM,qBAAqB,CAAC;AAC3C,OAAO,OAAO,MAAM,oBAAoB,CAAC;AACzC,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAC5C,OAAO,WAAW,MAAM,sBAAsB,CAAC;AAC/C,OAAO,eAAe,MAAM,4BAA4B,CAAC;AAEzD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,MAAM,MAAM,GAAG,CAAC,EACd,SAAS,EACT,SAAS,EACT,QAAQ,GAKT,EAAE,EAAE;IACH,OAAO,KAAK,EAAE,GAAY,EAAE,GAAa,EAAiB,EAAE;QAE1D,MAAM,EAAE,GAAG,QAAQ,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC;QAGvC,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC;YACzB,SAAS;YACT,SAAS;YACT,GAAG,EAAE,EAAY;YACjB,QAAQ;SACT,CAAC,CAAC;QAGH,eAAe,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;QAGpD,MAAM,KAAK,GAAG,QAAQ,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;QAG3D,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;QAGtD,MAAM,OAAO,GAAG,WAAW,CAAC,WAAY,CAAC,QAAQ,EAAE,EAAE,QAAQ,CAAC,CAAC;QAG/D,MAAM,UAAU,GACd,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;QACjE,IAAI,UAAU;YAAE,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC;QAGtC,WAAW,CAAC;YACV,GAAG;YACH,OAAO,EAAE,4BAA4B;YACrC,UAAU,EAAE,GAAG;YACf,IAAI,EAAE,OAAO;SACd,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"remove.js","sourceRoot":"","sources":["../../../src/js/crud/remove.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,MAAM,qBAAqB,CAAC;AAC3C,OAAO,OAAO,MAAM,oBAAoB,CAAC;AACzC,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAC5C,OAAO,WAAW,MAAM,sBAAsB,CAAC;AAC/C,OAAO,eAAe,MAAM,4BAA4B,CAAC;AAEzD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,UAAU,MAAM,uBAAuB,CAAC;AAE/C,MAAM,MAAM,GAAG,CAAC,EACd,SAAS,EACT,SAAS,EACT,QAAQ,GAKT,EAAE,EAAE;IACH,OAAO,KAAK,EAAE,GAAY,EAAE,GAAa,EAAiB,EAAE;QAE1D,MAAM,EAAE,GAAG,QAAQ,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC;QAGvC,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC;YACzB,SAAS;YACT,SAAS;YACT,GAAG,EAAE,EAAY;YACjB,QAAQ;SACT,CAAC,CAAC;QAGH,eAAe,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;QAGpD,MAAM,KAAK,GAAG,QAAQ,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;QAG3D,MAAM,SAAS,GAAG;YAChB,GAAG;YACH,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,SAAS;YACT,SAAS;YACT,KAAK;SACN,CAAC;QAGF,MAAM,UAAU,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE;YACzC,SAAS,EAAE,QAAQ;YACnB,GAAG,SAAS;SACb,CAAC,CAAC;QAGH,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;QAGtD,MAAM,OAAO,GAAG,WAAW,CAAC,WAAY,CAAC,QAAQ,EAAE,EAAE,QAAQ,CAAC,CAAC;QAG/D,MAAM,UAAU,GACd,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;QACjE,IAAI,UAAU;YAAE,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC;QAGtC,MAAM,UAAU,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE;YACxC,GAAG,SAAS;YACZ,SAAS,EAAE,QAAQ;YACnB,IAAI,EAAE,WAAW;SAClB,CAAC,CAAC;QAGH,WAAW,CAAC;YACV,GAAG;YACH,OAAO,EAAE,4BAA4B;YACrC,UAAU,EAAE,GAAG;YACf,IAAI,EAAE,OAAO;SACd,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,MAAM,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/js/crud/update.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAYpE,QAAA,MAAM,MAAM,GAAI,qDAKb;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,KAAK,CAAC;IAChB,cAAc,EAAE,cAAc,CAAC;CAChC,MACe,KAAK,OAAO,EAAE,KAAK,QAAQ,KAAG,OAAO,CAAC,IAAI,CAsDzD,CAAC;AAEF,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/js/crud/update.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAapE,QAAA,MAAM,MAAM,GAAI,qDAKb;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,KAAK,CAAC;IAChB,cAAc,EAAE,cAAc,CAAC;CAChC,MACe,KAAK,OAAO,EAAE,KAAK,QAAQ,KAAG,OAAO,CAAC,IAAI,CAiFzD,CAAC;AAEF,eAAe,MAAM,CAAC"}
@@ -8,6 +8,7 @@ import authorizeAccess from "./utils/authorizeAccess.js";
8
8
  import getValidationKey from "../utils/validationKeyError.js";
9
9
  import handleEncryption from "./encryption/handleEncryption.js";
10
10
  import handleHashing from "./security/handleHashing.js";
11
+ import runActions from "./utils/runActions.js";
11
12
  const update = ({ modelName, routeName, routeObj, validationsObj, }) => {
12
13
  return async (req, res) => {
13
14
  const validationObj = getValidationKey(routeObj, validationsObj);
@@ -23,6 +24,22 @@ const update = ({ modelName, routeName, routeObj, validationsObj, }) => {
23
24
  const encryptedFields = await handleEncryption(req.body, routeObj);
24
25
  const hashedFields = await handleHashing(req.body, routeObj);
25
26
  const Model = getModel({ modelName, routeName, routeObj });
27
+ const ActionObj = {
28
+ req,
29
+ user: req.user,
30
+ routeName,
31
+ modelName,
32
+ Model,
33
+ data: {
34
+ body,
35
+ encryptedFields,
36
+ hashedFields,
37
+ },
38
+ };
39
+ await runActions(routeObj.actions?.before, {
40
+ operation: "update",
41
+ ...ActionObj,
42
+ });
26
43
  const updatedItem = await Model.findByIdAndUpdate(id, { ...body, ...encryptedFields, ...hashedFields }, {
27
44
  returnDocument: "after",
28
45
  });
@@ -30,6 +47,11 @@ const update = ({ modelName, routeName, routeObj, validationsObj, }) => {
30
47
  const idExcluded = routeObj.mongooseConfigObj?.hiddenFieldsArray?.includes("_id");
31
48
  if (idExcluded)
32
49
  delete cleaned["_id"];
50
+ await runActions(routeObj.actions?.after, {
51
+ ...ActionObj,
52
+ operation: "create",
53
+ item: updatedItem,
54
+ });
33
55
  appResponse({
34
56
  res,
35
57
  data: cleaned,
@@ -1 +1 @@
1
- {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/js/crud/update.ts"],"names":[],"mappings":"AAEA,OAAO,QAAQ,MAAM,qBAAqB,CAAC;AAC3C,OAAO,OAAO,MAAM,oBAAoB,CAAC;AACzC,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAC5C,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,WAAW,MAAM,sBAAsB,CAAC;AAC/C,OAAO,eAAe,MAAM,4BAA4B,CAAC;AACzD,OAAO,gBAAgB,MAAM,gCAAgC,CAAC;AAC9D,OAAO,gBAAgB,MAAM,kCAAkC,CAAC;AAChE,OAAO,aAAa,MAAM,6BAA6B,CAAC;AAExD,MAAM,MAAM,GAAG,CAAC,EACd,SAAS,EACT,SAAS,EACT,QAAQ,EACR,cAAc,GAMf,EAAE,EAAE;IACH,OAAO,KAAK,EAAE,GAAY,EAAE,GAAa,EAAiB,EAAE;QAE1D,MAAM,aAAa,GAAG,gBAAgB,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;QAGjE,MAAM,EAAE,GAAG,QAAQ,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC;QAGvC,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,EAAE,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAGzD,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC;YACzB,SAAS;YACT,SAAS;YACT,GAAG,EAAE,EAAY;YACjB,QAAQ;SACT,CAAC,CAAC;QAGH,eAAe,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;QAGpD,MAAM,eAAe,GAAG,MAAM,gBAAgB,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAGnE,MAAM,YAAY,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAG7D,MAAM,KAAK,GAAG,QAAQ,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;QAG3D,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,iBAAiB,CAC/C,EAAE,EACF,EAAE,GAAG,IAAI,EAAE,GAAG,eAAe,EAAE,GAAG,YAAY,EAAE,EAChD;YACE,cAAc,EAAE,OAAO;SACxB,CACF,CAAA;QAGD,MAAM,OAAO,GAAG,WAAW,CAAC,WAAY,CAAC,QAAQ,EAAE,EAAE,QAAQ,CAAC,CAAC;QAG/D,MAAM,UAAU,GACd,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;QACjE,IAAI,UAAU;YAAE,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC;QAGtC,WAAW,CAAC;YACV,GAAG;YACH,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,4BAA4B;SACtC,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/js/crud/update.ts"],"names":[],"mappings":"AAEA,OAAO,QAAQ,MAAM,qBAAqB,CAAC;AAC3C,OAAO,OAAO,MAAM,oBAAoB,CAAC;AACzC,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAC5C,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,WAAW,MAAM,sBAAsB,CAAC;AAC/C,OAAO,eAAe,MAAM,4BAA4B,CAAC;AACzD,OAAO,gBAAgB,MAAM,gCAAgC,CAAC;AAC9D,OAAO,gBAAgB,MAAM,kCAAkC,CAAC;AAChE,OAAO,aAAa,MAAM,6BAA6B,CAAC;AACxD,OAAO,UAAU,MAAM,uBAAuB,CAAC;AAE/C,MAAM,MAAM,GAAG,CAAC,EACd,SAAS,EACT,SAAS,EACT,QAAQ,EACR,cAAc,GAMf,EAAE,EAAE;IACH,OAAO,KAAK,EAAE,GAAY,EAAE,GAAa,EAAiB,EAAE;QAE1D,MAAM,aAAa,GAAG,gBAAgB,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;QAGjE,MAAM,EAAE,GAAG,QAAQ,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC;QAGvC,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,EAAE,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAGzD,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC;YACzB,SAAS;YACT,SAAS;YACT,GAAG,EAAE,EAAY;YACjB,QAAQ;SACT,CAAC,CAAC;QAGH,eAAe,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;QAGpD,MAAM,eAAe,GAAG,MAAM,gBAAgB,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAGnE,MAAM,YAAY,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAG7D,MAAM,KAAK,GAAG,QAAQ,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;QAG3D,MAAM,SAAS,GAAG;YAChB,GAAG;YACH,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,SAAS;YACT,SAAS;YACT,KAAK;YACL,IAAI,EAAE;gBACJ,IAAI;gBACJ,eAAe;gBACf,YAAY;aACb;SACF,CAAC;QAGF,MAAM,UAAU,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE;YACzC,SAAS,EAAE,QAAQ;YACnB,GAAG,SAAS;SACb,CAAC,CAAC;QAGH,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,iBAAiB,CAC/C,EAAE,EACF,EAAE,GAAG,IAAI,EAAE,GAAG,eAAe,EAAE,GAAG,YAAY,EAAE,EAChD;YACE,cAAc,EAAE,OAAO;SACxB,CACF,CAAC;QAGF,MAAM,OAAO,GAAG,WAAW,CAAC,WAAY,CAAC,QAAQ,EAAE,EAAE,QAAQ,CAAC,CAAC;QAG/D,MAAM,UAAU,GACd,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;QACjE,IAAI,UAAU;YAAE,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC;QAGtC,MAAM,UAAU,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE;YACxC,GAAG,SAAS;YACZ,SAAS,EAAE,QAAQ;YACnB,IAAI,EAAE,WAAW;SAClB,CAAC,CAAC;QAGH,WAAW,CAAC;YACV,GAAG;YACH,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,4BAA4B;SACtC,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,MAAM,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { Action } from "../../types/ActionHandler.js";
2
+ import type { CreateContext } from "../../types/ActionHandler.js";
3
+ declare const actionHandler: (actions?: Action[], context: CreateContext) => void;
4
+ export default actionHandler;
5
+ //# sourceMappingURL=actionHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actionHandler.d.ts","sourceRoot":"","sources":["../../../../src/js/crud/utils/actionHandler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAElE,QAAA,MAAM,aAAa,GAAI,UAAU,MAAM,EAAE,EAAE,SAAS,aAAa,SAMhE,CAAC;AAEF,eAAe,aAAa,CAAC"}
@@ -0,0 +1,9 @@
1
+ const actionHandler = (actions, context) => {
2
+ if (!actions?.length)
3
+ return;
4
+ for (const item of actions) {
5
+ item.handler(context);
6
+ }
7
+ };
8
+ export default actionHandler;
9
+ //# sourceMappingURL=actionHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actionHandler.js","sourceRoot":"","sources":["../../../../src/js/crud/utils/actionHandler.ts"],"names":[],"mappings":"AAGA,MAAM,aAAa,GAAG,CAAC,OAAkB,EAAE,OAAsB,EAAE,EAAE;IACnE,IAAI,CAAC,OAAO,EAAE,MAAM;QAAE,OAAO;IAE7B,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACxB,CAAC;AACH,CAAC,CAAC;AAEF,eAAe,aAAa,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { Action } from "../../types/ActionHandler.js";
2
+ import type { CreateContext } from "../../types/ActionHandler.js";
3
+ declare const runActions: (actions: Action[] | undefined, context: CreateContext) => Promise<void>;
4
+ export default runActions;
5
+ //# sourceMappingURL=runActions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runActions.d.ts","sourceRoot":"","sources":["../../../../src/js/crud/utils/runActions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAElE,QAAA,MAAM,UAAU,GACd,SAAS,MAAM,EAAE,GAAG,SAAS,EAC7B,SAAS,aAAa,kBAWvB,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -0,0 +1,12 @@
1
+ const runActions = async (actions, context) => {
2
+ if (!actions?.length)
3
+ return;
4
+ const handlerMap = {
5
+ custom: (item) => item.handler(context),
6
+ };
7
+ for (const item of actions) {
8
+ await handlerMap[item.type](item);
9
+ }
10
+ };
11
+ export default runActions;
12
+ //# sourceMappingURL=runActions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runActions.js","sourceRoot":"","sources":["../../../../src/js/crud/utils/runActions.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,GAAG,KAAK,EACtB,OAA6B,EAC7B,OAAsB,EACtB,EAAE;IACF,IAAI,CAAC,OAAO,EAAE,MAAM;QAAE,OAAO;IAE7B,MAAM,UAAU,GAAwB;QACtC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;KAChD,CAAC;IAEF,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;AACH,CAAC,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -0,0 +1,23 @@
1
+ import type { Request } from "express";
2
+ import type { Document } from "mongoose";
3
+ export interface CreateContext {
4
+ req: Request;
5
+ user: Request["user"];
6
+ routeName: string;
7
+ operation: "create" | "update" | "remove";
8
+ modelName: string;
9
+ Model: any;
10
+ data?: {
11
+ owner?: string;
12
+ body: any;
13
+ fileMetaData?: any;
14
+ encryptedFields?: any;
15
+ hashedFields?: any;
16
+ };
17
+ item?: Document;
18
+ }
19
+ export interface Action {
20
+ type: "custom" | "email";
21
+ handler: (context: CreateContext) => Promise<void> | void;
22
+ }
23
+ //# sourceMappingURL=ActionHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActionHandler.d.ts","sourceRoot":"","sources":["../../../src/js/types/ActionHandler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,OAAO,CAAC;IACb,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAEtB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,GAAG,CAAC;IAEX,IAAI,CAAC,EAAE;QACL,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,GAAG,CAAC;QACV,YAAY,CAAC,EAAE,GAAG,CAAC;QACnB,eAAe,CAAC,EAAE,GAAG,CAAC;QACtB,YAAY,CAAC,EAAE,GAAG,CAAC;KACpB,CAAC;IACF,IAAI,CAAC,EAAE,QAAQ,CAAC;CACjB;AAED,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC;IACzB,OAAO,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAC3D"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ActionHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActionHandler.js","sourceRoot":"","sources":["../../../src/js/types/ActionHandler.ts"],"names":[],"mappings":""}
@@ -1,34 +1,7 @@
1
1
  import type { MongooseField } from "../lib/mongoose.fields.ts";
2
2
  import type { UnifiedField } from "../lib/unified.types.js";
3
3
  import type { ZodValidation } from "../lib/zod.fields.ts";
4
- import type { RoutePath } from "./Routepath.ts";
5
- import type { authHandlers } from "./authHandlers.ts";
6
- import type { crudHandlers } from "./crudHandlers.ts";
7
- import type { uploadHandlers } from "./uploadHandlers.js";
8
- import type { accountHandlers } from "./accountHandlers.js";
9
- import type { Upload } from "./upload.ts";
10
- export type Handler = authHandlers | crudHandlers | uploadHandlers | accountHandlers;
11
- export type AuthRole = "admin" | "adminOrOwner" | "authenticated" | "public";
12
- export type RouteMethod = "get" | "post" | "patch" | "delete";
13
- export type AuthMode = "credentials" | "otp";
14
- export interface Route {
15
- method: RouteMethod;
16
- path: RoutePath;
17
- handler: Handler;
18
- validationKey?: string | boolean;
19
- authRole?: AuthRole;
20
- ownerShip?: "self" | "owner";
21
- mongooseConfigObj?: {
22
- populateKey?: string | boolean;
23
- hiddenFieldsArray?: string[];
24
- removeMultipleFieldKey?: "ids" | "write_the_field_name" | (string & {});
25
- };
26
- fileArray?: Upload[];
27
- mode?: AuthMode;
28
- encryptedFieldsArray?: string[];
29
- decryptedFieldsArray?: string[];
30
- hashedFieldsArray?: string[];
31
- }
4
+ import type { Route } from "./Route.js";
32
5
  export type SchemaField = MongooseField | UnifiedField;
33
6
  export type MongooseSchema = {
34
7
  [key: string]: SchemaField;
@@ -47,4 +20,5 @@ export interface Collection {
47
20
  mongooseSchemaObj?: MongooseObj;
48
21
  validationsObj?: ValidationsObj;
49
22
  }
23
+ export type { Route } from "./Route.js";
50
24
  //# sourceMappingURL=Collection.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Collection.d.ts","sourceRoot":"","sources":["../../../src/js/types/Collection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAG5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,MAAM,OAAO,GACf,YAAY,GACZ,YAAY,GACZ,cAAc,GACd,eAAe,CAAC;AAKpB,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,cAAc,GAAG,eAAe,GAAG,QAAQ,CAAC;AAC7E,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AAC9D,MAAM,MAAM,QAAQ,GAAG,aAAa,GAAG,KAAK,CAAC;AAG7C,MAAM,WAAW,KAAK;IACpB,MAAM,EAAE,WAAW,CAAC;IACpB,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACjC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC7B,iBAAiB,CAAC,EAAE;QAClB,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QAC/B,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;QAC7B,sBAAsB,CAAC,EAAE,KAAK,GAAG,sBAAsB,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;KACzE,CAAC;IAEF,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IAErB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;IAChC,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;IAChC,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAA;CAC7B;AAMD,MAAM,MAAM,WAAW,GAAG,aAAa,GAAG,YAAY,CAAC;AAKvD,MAAM,MAAM,cAAc,GAAG;IAC3B,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AAOvE,MAAM,MAAM,eAAe,GAAG,aAAa,GAAG,YAAY,CAAC;AAE3D,MAAM,MAAM,cAAc,GAAG;IAC3B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,eAAe,CAAC;CAClE,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC;AAG7D,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,KAAK,EAAE,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,WAAW,CAAC;IAChC,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC"}
1
+ {"version":3,"file":"Collection.d.ts","sourceRoot":"","sources":["../../../src/js/types/Collection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAG5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAMxC,MAAM,MAAM,WAAW,GAAG,aAAa,GAAG,YAAY,CAAC;AAKvD,MAAM,MAAM,cAAc,GAAG;IAC3B,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AAOvE,MAAM,MAAM,eAAe,GAAG,aAAa,GAAG,YAAY,CAAC;AAE3D,MAAM,MAAM,cAAc,GAAG;IAC3B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,eAAe,CAAC;CAClE,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC;AAG7D,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,KAAK,EAAE,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,WAAW,CAAC;IAChC,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC;AAED,YAAY,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,34 @@
1
+ export type RouteMethod = "get" | "post" | "patch" | "delete";
2
+ import type { RoutePath } from "./Routepath.js";
3
+ import type { authHandlers } from "./authHandlers.ts";
4
+ import type { crudHandlers } from "./crudHandlers.ts";
5
+ import type { uploadHandlers } from "./uploadHandlers.js";
6
+ import type { accountHandlers } from "./accountHandlers.js";
7
+ export type AuthRole = "admin" | "adminOrOwner" | "authenticated" | "public";
8
+ import type { Action } from "./ActionHandler.js";
9
+ import type { Upload } from "./upload.ts";
10
+ export type AuthMode = "credentials" | "otp";
11
+ export type Handler = authHandlers | crudHandlers | uploadHandlers | accountHandlers;
12
+ export interface Route {
13
+ method: RouteMethod;
14
+ path: RoutePath;
15
+ handler: Handler;
16
+ validationKey?: string | boolean;
17
+ authRole?: AuthRole;
18
+ ownerShip?: "self" | "owner";
19
+ mongooseConfigObj?: {
20
+ populateKey?: string | boolean;
21
+ hiddenFieldsArray?: string[];
22
+ removeMultipleFieldKey?: "ids" | "write_the_field_name" | (string & {});
23
+ };
24
+ fileArray?: Upload[];
25
+ mode?: AuthMode;
26
+ encryptedFieldsArray?: string[];
27
+ decryptedFieldsArray?: string[];
28
+ hashedFieldsArray?: string[];
29
+ actions?: {
30
+ before?: Action[];
31
+ after?: Action[];
32
+ };
33
+ }
34
+ //# sourceMappingURL=Route.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Route.d.ts","sourceRoot":"","sources":["../../../src/js/types/Route.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,cAAc,GAAG,eAAe,GAAG,QAAQ,CAAC;AAC7E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,MAAM,MAAM,QAAQ,GAAG,aAAa,GAAG,KAAK,CAAC;AAG7C,MAAM,MAAM,OAAO,GACf,YAAY,GACZ,YAAY,GACZ,cAAc,GACd,eAAe,CAAC;AAEpB,MAAM,WAAW,KAAK;IACpB,MAAM,EAAE,WAAW,CAAC;IACpB,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACjC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC7B,iBAAiB,CAAC,EAAE;QAClB,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QAC/B,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;QAC7B,sBAAsB,CAAC,EAAE,KAAK,GAAG,sBAAsB,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;KACzE,CAAC;IACF,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;IAChC,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;IAChC,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,OAAO,CAAC,EAAE;QACR,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;KAClB,CAAC;CACH"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Route.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Route.js","sourceRoot":"","sources":["../../../src/js/types/Route.ts"],"names":[],"mappings":""}
@@ -1,7 +1,7 @@
1
1
  import type { Route } from "../types/Collection.js";
2
2
  declare const getErrorDetail: (routeObj: Route, modelName?: string) => {
3
- handler: import("../types/Collection.js").Handler;
4
- method: import("../types/Collection.js").RouteMethod;
3
+ handler: import("../types/Route.js").Handler;
4
+ method: import("../types/Route.js").RouteMethod;
5
5
  path: import("../types/Routepath.js").RoutePath;
6
6
  modelName: string | undefined;
7
7
  };
@@ -1 +1 @@
1
- {"version":3,"file":"validationKeyError.d.ts","sourceRoot":"","sources":["../../../src/js/utils/validationKeyError.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAIpE,QAAA,MAAM,gBAAgB,GAAI,UAAU,KAAK,EAAE,gBAAgB,cAAc,oIAuCxE,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"validationKeyError.d.ts","sourceRoot":"","sources":["../../../src/js/utils/validationKeyError.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAIpE,QAAA,MAAM,gBAAgB,GAAI,UAAU,KAAK,EAAE,gBAAgB,cAAc,oIA+CxE,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
@@ -12,13 +12,20 @@ const getValidationKey = (routeObj, validationsObj) => {
12
12
  });
13
13
  }
14
14
  else {
15
+ if (routeObj.method !== "get")
16
+ throw new AppError({
17
+ message: "validationKey is missing",
18
+ statusCode: 400,
19
+ hint: `body is required for method: '${routeObj.method}'`,
20
+ details: getErrorDetail(routeObj),
21
+ });
15
22
  return;
16
23
  }
17
24
  if (key == null)
18
25
  throw new AppError({
19
26
  message: "validationKey is required",
20
27
  statusCode: 400,
21
- hint: "Provide it or make it false if this routeObj doesn't need validation",
28
+ hint: "Provide it or make it 'false' as boolean if this routeObj doesn't need validation",
22
29
  details: getErrorDetail(routeObj),
23
30
  });
24
31
  const validateObject = validationsObj[key];
@@ -1 +1 @@
1
- {"version":3,"file":"validationKeyError.js","sourceRoot":"","sources":["../../../src/js/utils/validationKeyError.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,MAAM,eAAe,CAAC;AACrC,OAAO,cAAc,MAAM,qBAAqB,CAAC;AAEjD,MAAM,gBAAgB,GAAG,CAAC,QAAe,EAAE,cAA8B,EAAE,EAAE;IAC3E,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC;IAGnC,IAAI,OAAO,GAAG,KAAK,SAAS;QAC1B,IAAI,GAAG,EAAE,CAAC;YACR,MAAM,IAAI,QAAQ,CAAC;gBACjB,OAAO,EAAE,8CAA8C;gBACvD,UAAU,EAAE,GAAG;gBACf,IAAI,EAAE,wCAAwC;gBAC9C,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC;aAClC,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,OAAO;QACT,CAAC;IAGH,IAAI,GAAG,IAAI,IAAI;QACb,MAAM,IAAI,QAAQ,CAAC;YACjB,OAAO,EAAE,2BAA2B;YACpC,UAAU,EAAE,GAAG;YACf,IAAI,EAAE,sEAAsE;YAC5E,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC;SAClC,CAAC,CAAC;IAGL,MAAM,cAAc,GAAG,cAAc,CAAC,GAAa,CAAC,CAAC;IAGrD,IAAI,CAAC,cAAc;QACjB,MAAM,IAAI,QAAQ,CAAC;YACjB,OAAO,EAAE,mBAAmB,GAAG,gCAAgC;YAC/D,UAAU,EAAE,GAAG;YACf,IAAI,EAAE,+BAA+B,GAAG,yBAAyB;YACjE,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC;SAClC,CAAC,CAAC;IAGL,OAAO,cAAc,CAAC;AACxB,CAAC,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"validationKeyError.js","sourceRoot":"","sources":["../../../src/js/utils/validationKeyError.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,MAAM,eAAe,CAAC;AACrC,OAAO,cAAc,MAAM,qBAAqB,CAAC;AAEjD,MAAM,gBAAgB,GAAG,CAAC,QAAe,EAAE,cAA8B,EAAE,EAAE;IAC3E,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC;IAGnC,IAAI,OAAO,GAAG,KAAK,SAAS;QAC1B,IAAI,GAAG,EAAE,CAAC;YACR,MAAM,IAAI,QAAQ,CAAC;gBACjB,OAAO,EAAE,8CAA8C;gBACvD,UAAU,EAAE,GAAG;gBACf,IAAI,EAAE,wCAAwC;gBAC9C,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC;aAClC,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,IAAI,QAAQ,CAAC,MAAM,KAAK,KAAK;gBAC3B,MAAM,IAAI,QAAQ,CAAC;oBACjB,OAAO,EAAE,0BAA0B;oBACnC,UAAU,EAAE,GAAG;oBACf,IAAI,EAAE,iCAAiC,QAAQ,CAAC,MAAM,GAAG;oBACzD,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC;iBAClC,CAAC,CAAC;YAEL,OAAO;QACT,CAAC;IAGH,IAAI,GAAG,IAAI,IAAI;QACb,MAAM,IAAI,QAAQ,CAAC;YACjB,OAAO,EAAE,2BAA2B;YACpC,UAAU,EAAE,GAAG;YACf,IAAI,EAAE,mFAAmF;YACzF,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC;SAClC,CAAC,CAAC;IAGL,MAAM,cAAc,GAAG,cAAc,CAAC,GAAa,CAAC,CAAC;IAGrD,IAAI,CAAC,cAAc;QACjB,MAAM,IAAI,QAAQ,CAAC;YACjB,OAAO,EAAE,mBAAmB,GAAG,gCAAgC;YAC/D,UAAU,EAAE,GAAG;YACf,IAAI,EAAE,+BAA+B,GAAG,yBAAyB;YACjE,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC;SAClC,CAAC,CAAC;IAGL,OAAO,cAAc,CAAC;AACxB,CAAC,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@starklabs/forge",
3
- "version": "1.3.16",
3
+ "version": "1.3.18",
4
4
  "description": "A TypeScript-first Express framework for building production-ready APIs with zero boilerplate.",
5
5
  "type": "module",
6
6
  "main": "./dist/js/index.js",