@starklabs/forge 1.3.23 → 1.3.24-beta.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.
Files changed (263) hide show
  1. package/dist/js/account/index.d.ts +1 -1
  2. package/dist/js/account/index.d.ts.map +1 -1
  3. package/dist/js/account/index.js +14 -7
  4. package/dist/js/account/index.js.map +1 -1
  5. package/dist/js/account/me.delete.d.ts +2 -2
  6. package/dist/js/account/me.delete.d.ts.map +1 -1
  7. package/dist/js/account/me.delete.js +15 -6
  8. package/dist/js/account/me.delete.js.map +1 -1
  9. package/dist/js/account/me.update.d.ts +3 -3
  10. package/dist/js/account/me.update.d.ts.map +1 -1
  11. package/dist/js/account/me.update.js +20 -7
  12. package/dist/js/account/me.update.js.map +1 -1
  13. package/dist/js/app.js +21 -8
  14. package/dist/js/app.js.map +1 -1
  15. package/dist/js/auth/builtin/auth.collection.js +11 -11
  16. package/dist/js/auth/builtin/auth.collection.js.map +1 -1
  17. package/dist/js/auth/forgotPassword.d.ts +4 -4
  18. package/dist/js/auth/forgotPassword.d.ts.map +1 -1
  19. package/dist/js/auth/forgotPassword.js +12 -6
  20. package/dist/js/auth/forgotPassword.js.map +1 -1
  21. package/dist/js/auth/index.d.ts +1 -1
  22. package/dist/js/auth/index.d.ts.map +1 -1
  23. package/dist/js/auth/index.js +16 -8
  24. package/dist/js/auth/index.js.map +1 -1
  25. package/dist/js/auth/login.d.ts +4 -4
  26. package/dist/js/auth/login.d.ts.map +1 -1
  27. package/dist/js/auth/login.js +8 -4
  28. package/dist/js/auth/login.js.map +1 -1
  29. package/dist/js/auth/logout.js +6 -1
  30. package/dist/js/auth/logout.js.map +1 -1
  31. package/dist/js/auth/refresh.js +9 -0
  32. package/dist/js/auth/refresh.js.map +1 -1
  33. package/dist/js/auth/resendOTP.d.ts +4 -4
  34. package/dist/js/auth/resendOTP.d.ts.map +1 -1
  35. package/dist/js/auth/resendOTP.js +14 -4
  36. package/dist/js/auth/resendOTP.js.map +1 -1
  37. package/dist/js/auth/resetPassword.d.ts +4 -4
  38. package/dist/js/auth/resetPassword.d.ts.map +1 -1
  39. package/dist/js/auth/resetPassword.js +14 -4
  40. package/dist/js/auth/resetPassword.js.map +1 -1
  41. package/dist/js/auth/signup.d.ts +4 -4
  42. package/dist/js/auth/signup.d.ts.map +1 -1
  43. package/dist/js/auth/signup.js +10 -5
  44. package/dist/js/auth/signup.js.map +1 -1
  45. package/dist/js/auth/utils/authenticateUser.d.ts +3 -3
  46. package/dist/js/auth/utils/authenticateUser.d.ts.map +1 -1
  47. package/dist/js/auth/utils/authenticateUser.js +13 -3
  48. package/dist/js/auth/utils/authenticateUser.js.map +1 -1
  49. package/dist/js/auth/utils/createOTPModel.d.ts +1 -1
  50. package/dist/js/auth/utils/createOTPModel.d.ts.map +1 -1
  51. package/dist/js/auth/utils/createOTPModel.js +8 -3
  52. package/dist/js/auth/utils/createOTPModel.js.map +1 -1
  53. package/dist/js/auth/utils/createOTPUser.d.ts +3 -3
  54. package/dist/js/auth/utils/createOTPUser.d.ts.map +1 -1
  55. package/dist/js/auth/utils/createOTPUser.js +11 -3
  56. package/dist/js/auth/utils/createOTPUser.js.map +1 -1
  57. package/dist/js/auth/utils/createUser.d.ts +3 -3
  58. package/dist/js/auth/utils/createUser.d.ts.map +1 -1
  59. package/dist/js/auth/utils/createUser.js +12 -2
  60. package/dist/js/auth/utils/createUser.js.map +1 -1
  61. package/dist/js/auth/utils/findRefreshToken.js +5 -1
  62. package/dist/js/auth/utils/findRefreshToken.js.map +1 -1
  63. package/dist/js/auth/utils/findRefreshTokenUser.js +1 -0
  64. package/dist/js/auth/utils/findRefreshTokenUser.js.map +1 -1
  65. package/dist/js/auth/utils/getOTPUser.js +3 -0
  66. package/dist/js/auth/utils/getOTPUser.js.map +1 -1
  67. package/dist/js/auth/utils/getUser.d.ts +3 -3
  68. package/dist/js/auth/utils/getUser.d.ts.map +1 -1
  69. package/dist/js/auth/utils/getUser.js +6 -2
  70. package/dist/js/auth/utils/getUser.js.map +1 -1
  71. package/dist/js/auth/utils/handleRefreshTokenValidation.js +7 -1
  72. package/dist/js/auth/utils/handleRefreshTokenValidation.js.map +1 -1
  73. package/dist/js/auth/utils/handleRotateRefreshToken.js +7 -1
  74. package/dist/js/auth/utils/handleRotateRefreshToken.js.map +1 -1
  75. package/dist/js/auth/utils/modeMap.d.ts +12 -12
  76. package/dist/js/auth/utils/otpVerifiedResponse.js +1 -0
  77. package/dist/js/auth/utils/otpVerifiedResponse.js.map +1 -1
  78. package/dist/js/auth/utils/sendCookie.js +10 -0
  79. package/dist/js/auth/utils/sendCookie.js.map +1 -1
  80. package/dist/js/auth/utils/verifyCredentials.d.ts +3 -3
  81. package/dist/js/auth/utils/verifyCredentials.d.ts.map +1 -1
  82. package/dist/js/auth/utils/verifyCredentials.js +8 -6
  83. package/dist/js/auth/utils/verifyCredentials.js.map +1 -1
  84. package/dist/js/auth/verifyOTP.d.ts +4 -4
  85. package/dist/js/auth/verifyOTP.d.ts.map +1 -1
  86. package/dist/js/auth/verifyOTP.js +18 -5
  87. package/dist/js/auth/verifyOTP.js.map +1 -1
  88. package/dist/js/config/cloudinary.js +1 -0
  89. package/dist/js/config/cloudinary.js.map +1 -1
  90. package/dist/js/config/duration.js +7 -0
  91. package/dist/js/config/duration.js.map +1 -1
  92. package/dist/js/config/envs.js +23 -3
  93. package/dist/js/config/envs.js.map +1 -1
  94. package/dist/js/config/handleReqType.d.ts +1 -1
  95. package/dist/js/config/handleReqType.d.ts.map +1 -1
  96. package/dist/js/config/handleReqType.js +4 -3
  97. package/dist/js/config/handleReqType.js.map +1 -1
  98. package/dist/js/config/handlerMap.js +4 -0
  99. package/dist/js/config/handlerMap.js.map +1 -1
  100. package/dist/js/config/refreshModel.js +1 -0
  101. package/dist/js/config/refreshModel.js.map +1 -1
  102. package/dist/js/config/sendEmail.js +1 -0
  103. package/dist/js/config/sendEmail.js.map +1 -1
  104. package/dist/js/crud/bunch.crud.js +2 -0
  105. package/dist/js/crud/bunch.crud.js.map +1 -1
  106. package/dist/js/crud/create.d.ts +4 -4
  107. package/dist/js/crud/create.d.ts.map +1 -1
  108. package/dist/js/crud/create.js +23 -8
  109. package/dist/js/crud/create.js.map +1 -1
  110. package/dist/js/crud/createBulk.d.ts +4 -4
  111. package/dist/js/crud/createBulk.d.ts.map +1 -1
  112. package/dist/js/crud/createBulk.js +8 -3
  113. package/dist/js/crud/createBulk.js.map +1 -1
  114. package/dist/js/crud/email/index.d.ts +2 -0
  115. package/dist/js/crud/email/index.d.ts.map +1 -0
  116. package/dist/js/crud/email/index.js +2 -0
  117. package/dist/js/crud/email/index.js.map +1 -0
  118. package/dist/js/crud/encryption/handleDecryption.js +8 -3
  119. package/dist/js/crud/encryption/handleDecryption.js.map +1 -1
  120. package/dist/js/crud/encryption/handleEncryption.js +7 -3
  121. package/dist/js/crud/encryption/handleEncryption.js.map +1 -1
  122. package/dist/js/crud/handleUploads/file.add.d.ts +4 -4
  123. package/dist/js/crud/handleUploads/file.add.d.ts.map +1 -1
  124. package/dist/js/crud/handleUploads/file.add.js +16 -9
  125. package/dist/js/crud/handleUploads/file.add.js.map +1 -1
  126. package/dist/js/crud/handleUploads/file.delete.d.ts +4 -4
  127. package/dist/js/crud/handleUploads/file.delete.d.ts.map +1 -1
  128. package/dist/js/crud/handleUploads/file.delete.js +14 -5
  129. package/dist/js/crud/handleUploads/file.delete.js.map +1 -1
  130. package/dist/js/crud/handleUploads/file.update.d.ts +4 -4
  131. package/dist/js/crud/handleUploads/file.update.d.ts.map +1 -1
  132. package/dist/js/crud/handleUploads/file.update.js +15 -5
  133. package/dist/js/crud/handleUploads/file.update.js.map +1 -1
  134. package/dist/js/crud/index.d.ts +1 -1
  135. package/dist/js/crud/index.d.ts.map +1 -1
  136. package/dist/js/crud/index.js +18 -11
  137. package/dist/js/crud/index.js.map +1 -1
  138. package/dist/js/crud/read.d.ts +4 -4
  139. package/dist/js/crud/read.d.ts.map +1 -1
  140. package/dist/js/crud/read.js +18 -9
  141. package/dist/js/crud/read.js.map +1 -1
  142. package/dist/js/crud/readAll.d.ts +3 -3
  143. package/dist/js/crud/readAll.d.ts.map +1 -1
  144. package/dist/js/crud/readAll.js +16 -8
  145. package/dist/js/crud/readAll.js.map +1 -1
  146. package/dist/js/crud/remove.d.ts +3 -3
  147. package/dist/js/crud/remove.d.ts.map +1 -1
  148. package/dist/js/crud/remove.js +19 -8
  149. package/dist/js/crud/remove.js.map +1 -1
  150. package/dist/js/crud/removeAll.d.ts +3 -3
  151. package/dist/js/crud/removeAll.d.ts.map +1 -1
  152. package/dist/js/crud/removeAll.js +13 -5
  153. package/dist/js/crud/removeAll.js.map +1 -1
  154. package/dist/js/crud/removeMultiple.d.ts +4 -4
  155. package/dist/js/crud/removeMultiple.d.ts.map +1 -1
  156. package/dist/js/crud/removeMultiple.js +18 -7
  157. package/dist/js/crud/removeMultiple.js.map +1 -1
  158. package/dist/js/crud/security/handleDecryption.js +8 -3
  159. package/dist/js/crud/security/handleDecryption.js.map +1 -1
  160. package/dist/js/crud/security/handleEncryption.js +7 -3
  161. package/dist/js/crud/security/handleEncryption.js.map +1 -1
  162. package/dist/js/crud/security/handleHashing.js +8 -3
  163. package/dist/js/crud/security/handleHashing.js.map +1 -1
  164. package/dist/js/crud/update.d.ts +4 -4
  165. package/dist/js/crud/update.d.ts.map +1 -1
  166. package/dist/js/crud/update.js +24 -9
  167. package/dist/js/crud/update.js.map +1 -1
  168. package/dist/js/crud/utils/authorizeAccess.d.ts +2 -2
  169. package/dist/js/crud/utils/authorizeAccess.d.ts.map +1 -1
  170. package/dist/js/crud/utils/authorizeAccess.js +19 -13
  171. package/dist/js/crud/utils/authorizeAccess.js.map +1 -1
  172. package/dist/js/crud/utils/getItem.d.ts +3 -3
  173. package/dist/js/crud/utils/getItem.d.ts.map +1 -1
  174. package/dist/js/crud/utils/getItem.js +18 -9
  175. package/dist/js/crud/utils/getItem.js.map +1 -1
  176. package/dist/js/health/health.collection.js +11 -11
  177. package/dist/js/health/health.collection.js.map +1 -1
  178. package/dist/js/health/index.d.ts +1 -1
  179. package/dist/js/health/index.d.ts.map +1 -1
  180. package/dist/js/health/index.js +2 -2
  181. package/dist/js/health/index.js.map +1 -1
  182. package/dist/js/lib/OAuthProviders.js +1 -1
  183. package/dist/js/lib/OAuthProviders.js.map +1 -1
  184. package/dist/js/lib/db.js +1 -0
  185. package/dist/js/lib/db.js.map +1 -1
  186. package/dist/js/lib/model.factory.d.ts +10 -1
  187. package/dist/js/lib/model.factory.d.ts.map +1 -1
  188. package/dist/js/lib/model.factory.js +18 -4
  189. package/dist/js/lib/model.factory.js.map +1 -1
  190. package/dist/js/lib/model.registry.js +1 -0
  191. package/dist/js/lib/model.registry.js.map +1 -1
  192. package/dist/js/lib/mongoose.fields.js +20 -0
  193. package/dist/js/lib/mongoose.fields.js.map +1 -1
  194. package/dist/js/lib/schema.builder.js +3 -0
  195. package/dist/js/lib/schema.builder.js.map +1 -1
  196. package/dist/js/lib/unified.fields.d.ts +5 -0
  197. package/dist/js/lib/unified.fields.d.ts.map +1 -1
  198. package/dist/js/lib/unified.fields.js +56 -0
  199. package/dist/js/lib/unified.fields.js.map +1 -1
  200. package/dist/js/lib/unified.types.d.ts +3 -0
  201. package/dist/js/lib/unified.types.d.ts.map +1 -1
  202. package/dist/js/lib/zod.factory.d.ts +13 -0
  203. package/dist/js/lib/zod.factory.d.ts.map +1 -1
  204. package/dist/js/lib/zod.factory.js +14 -0
  205. package/dist/js/lib/zod.factory.js.map +1 -1
  206. package/dist/js/lib/zod.fields.d.ts +55 -0
  207. package/dist/js/lib/zod.fields.d.ts.map +1 -1
  208. package/dist/js/lib/zod.fields.js +56 -0
  209. package/dist/js/lib/zod.fields.js.map +1 -1
  210. package/dist/js/middleware/error.middleware.js +1 -0
  211. package/dist/js/middleware/error.middleware.js.map +1 -1
  212. package/dist/js/middleware/multer.middleware.d.ts +1 -1
  213. package/dist/js/middleware/multer.middleware.d.ts.map +1 -1
  214. package/dist/js/middleware/multer.middleware.js +22 -7
  215. package/dist/js/middleware/multer.middleware.js.map +1 -1
  216. package/dist/js/terminal/appInfo.js +11 -11
  217. package/dist/js/terminal/appInfo.js.map +1 -1
  218. package/dist/js/terminal/logger.js +1 -1
  219. package/dist/js/terminal/logger.js.map +1 -1
  220. package/dist/js/types/ActionHandler.d.ts +86 -11
  221. package/dist/js/types/ActionHandler.d.ts.map +1 -1
  222. package/dist/js/types/Collection.d.ts +104 -15
  223. package/dist/js/types/Collection.d.ts.map +1 -1
  224. package/dist/js/types/Constructor.d.ts +1 -1
  225. package/dist/js/types/Constructor.d.ts.map +1 -1
  226. package/dist/js/types/Route.d.ts +131 -14
  227. package/dist/js/types/Route.d.ts.map +1 -1
  228. package/dist/js/types/Routepath.js +15 -0
  229. package/dist/js/types/Routepath.js.map +1 -1
  230. package/dist/js/types/email.js +13 -0
  231. package/dist/js/types/email.js.map +1 -1
  232. package/dist/js/types/upload.d.ts +57 -5
  233. package/dist/js/types/upload.d.ts.map +1 -1
  234. package/dist/js/upload/create.js +9 -6
  235. package/dist/js/upload/create.js.map +1 -1
  236. package/dist/js/upload/delete.js +21 -21
  237. package/dist/js/upload/delete.js.map +1 -1
  238. package/dist/js/upload/update.js +21 -21
  239. package/dist/js/upload/update.js.map +1 -1
  240. package/dist/js/utils/getErrorDetail.d.ts +2 -2
  241. package/dist/js/utils/getErrorDetail.d.ts.map +1 -1
  242. package/dist/js/utils/getErrorDetail.js +2 -2
  243. package/dist/js/utils/getErrorDetail.js.map +1 -1
  244. package/dist/js/utils/getModel.d.ts +3 -3
  245. package/dist/js/utils/getModel.d.ts.map +1 -1
  246. package/dist/js/utils/getModel.js +6 -6
  247. package/dist/js/utils/getModel.js.map +1 -1
  248. package/dist/js/utils/libsodium.js +6 -0
  249. package/dist/js/utils/libsodium.js.map +1 -1
  250. package/dist/js/utils/otpPurposes.js +38 -0
  251. package/dist/js/utils/otpPurposes.js.map +1 -1
  252. package/dist/js/utils/sanitize.js +23 -2
  253. package/dist/js/utils/sanitize.js.map +1 -1
  254. package/dist/js/utils/saveRefreshToken.js +2 -1
  255. package/dist/js/utils/saveRefreshToken.js.map +1 -1
  256. package/dist/js/utils/validate.js +5 -3
  257. package/dist/js/utils/validate.js.map +1 -1
  258. package/dist/js/utils/validationKeyError.d.ts +1 -1
  259. package/dist/js/utils/validationKeyError.d.ts.map +1 -1
  260. package/dist/js/utils/validationKeyError.js +13 -8
  261. package/dist/js/utils/validationKeyError.js.map +1 -1
  262. package/package.json +1 -1
  263. package/readme.md +29 -29
@@ -1,9 +1,9 @@
1
1
  import type { Request, Response } from "express";
2
2
  import type { Route } from "../types/Collection.ts";
3
- declare const remove: ({ modelName, routeName, routeObj, }: {
4
- modelName: string;
3
+ declare const remove: ({ model, route, routeObj, }: {
4
+ model: string;
5
5
  routeObj: Route;
6
- routeName: string;
6
+ route: string;
7
7
  }) => (req: Request, res: Response) => Promise<void>;
8
8
  export default remove;
9
9
  //# sourceMappingURL=remove.d.ts.map
@@ -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;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"}
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,6BAIb;IACD,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,KAAK,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf,MACe,KAAK,OAAO,EAAE,KAAK,QAAQ,KAAG,OAAO,CAAC,IAAI,CA2DzD,CAAC;AAEF,eAAe,MAAM,CAAC"}
@@ -5,38 +5,49 @@ import appResponse from "../utils/response.js";
5
5
  import authorizeAccess from "./utils/authorizeAccess.js";
6
6
  import { sanitizeOne } from "../utils/sanitize.js";
7
7
  import runActions from "./utils/runActions.js";
8
- const remove = ({ modelName, routeName, routeObj, }) => {
8
+ const remove = ({ model, route, routeObj, }) => {
9
9
  return async (req, res) => {
10
+ // get /:parameter
10
11
  const id = getParam({ req, routeObj });
12
+ // ensure item exists
11
13
  const item = await getItem({
12
- modelName,
13
- routeName,
14
+ model,
15
+ route,
14
16
  _id: id,
15
17
  routeObj,
16
18
  });
17
- authorizeAccess({ routeObj, routeName, item, req });
18
- const Model = getModel({ modelName, routeName, routeObj });
19
+ // authorize access
20
+ authorizeAccess({ routeObj, route, item, req });
21
+ // model
22
+ const Model = getModel({ model, route, routeObj });
23
+ // runActions object
19
24
  const ActionObj = {
20
25
  req,
21
26
  user: req.user,
22
- routeName,
23
- modelName,
27
+ route,
28
+ model,
24
29
  Model,
25
30
  };
31
+ // before action
26
32
  let modifiedResponse = await runActions(routeObj.actions?.before, {
27
33
  operation: "remove",
28
34
  ...ActionObj,
29
35
  });
36
+ // delete
30
37
  const deletedItem = await Model.findByIdAndDelete(id);
38
+ // clean
31
39
  const cleaned = sanitizeOne(deletedItem.toObject(), routeObj);
32
- const idExcluded = routeObj.mongooseConfigObj?.hiddenFieldsArray?.includes("_id");
40
+ // if '_id' excluded
41
+ const idExcluded = routeObj.config?.hiddenFields?.includes("_id");
33
42
  if (idExcluded)
34
43
  delete cleaned["_id"];
44
+ // after action
35
45
  modifiedResponse = await runActions(routeObj.actions?.after, {
36
46
  ...ActionObj,
37
47
  operation: "remove",
38
48
  item: cleaned,
39
49
  });
50
+ // return response
40
51
  appResponse({
41
52
  res,
42
53
  message: "Item deleted successfully!",
@@ -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;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,IAAI,gBAAgB,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE;YAChE,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,gBAAgB,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE;YAC3D,GAAG,SAAS;YACZ,SAAS,EAAE,QAAQ;YACnB,IAAI,EAAE,OAAO;SACd,CAAC,CAAC;QAGH,WAAW,CAAC;YACV,GAAG;YACH,OAAO,EAAE,4BAA4B;YACrC,UAAU,EAAE,GAAG;YACf,IAAI,EAAE,gBAAgB,IAAI,OAAO;SAClC,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,KAAK,EACL,KAAK,EACL,QAAQ,GAKT,EAAE,EAAE;IACH,OAAO,KAAK,EAAE,GAAY,EAAE,GAAa,EAAiB,EAAE;QAC1D,kBAAkB;QAClB,MAAM,EAAE,GAAG,QAAQ,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC;QAEvC,qBAAqB;QACrB,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC;YACzB,KAAK;YACL,KAAK;YACL,GAAG,EAAE,EAAY;YACjB,QAAQ;SACT,CAAC,CAAC;QAEH,mBAAmB;QACnB,eAAe,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;QAEhD,QAAQ;QACR,MAAM,KAAK,GAAG,QAAQ,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAEnD,oBAAoB;QACpB,MAAM,SAAS,GAAG;YAChB,GAAG;YACH,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,KAAK;YACL,KAAK;YACL,KAAK;SACN,CAAC;QAEF,gBAAgB;QAChB,IAAI,gBAAgB,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE;YAChE,SAAS,EAAE,QAAQ;YACnB,GAAG,SAAS;SACb,CAAC,CAAC;QAEH,SAAS;QACT,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;QAEtD,QAAQ;QACR,MAAM,OAAO,GAAG,WAAW,CAAC,WAAY,CAAC,QAAQ,EAAE,EAAE,QAAQ,CAAC,CAAC;QAE/D,oBAAoB;QACpB,MAAM,UAAU,GACd,QAAQ,CAAC,MAAM,EAAE,YAAY,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;QACjD,IAAI,UAAU;YAAE,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC;QAEtC,eAAe;QACf,gBAAgB,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE;YAC3D,GAAG,SAAS;YACZ,SAAS,EAAE,QAAQ;YACnB,IAAI,EAAE,OAAO;SACd,CAAC,CAAC;QAEH,kBAAkB;QAClB,WAAW,CAAC;YACV,GAAG;YACH,OAAO,EAAE,4BAA4B;YACrC,UAAU,EAAE,GAAG;YACf,IAAI,EAAE,gBAAgB,IAAI,OAAO;SAClC,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,MAAM,CAAC"}
@@ -1,8 +1,8 @@
1
1
  import type { Request, Response } from "express";
2
2
  import type { Route } from "../types/Collection.ts";
3
- declare const removeAll: ({ modelName, routeName, routeObj, }: {
4
- modelName: string;
5
- routeName: string;
3
+ declare const removeAll: ({ model, route, routeObj, }: {
4
+ model: string;
5
+ route: string;
6
6
  routeObj: Route;
7
7
  }) => (req: Request, res: Response) => Promise<void>;
8
8
  export default removeAll;
@@ -1 +1 @@
1
- {"version":3,"file":"removeAll.d.ts","sourceRoot":"","sources":["../../../src/js/crud/removeAll.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAU,MAAM,SAAS,CAAC;AAIzD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAKpD,QAAA,MAAM,SAAS,GAAI,qCAIhB;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,KAAK,CAAC;CACjB,MACe,KAAK,OAAO,EAAE,KAAK,QAAQ,KAAG,OAAO,CAAC,IAAI,CAsDzD,CAAC;AAEF,eAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"removeAll.d.ts","sourceRoot":"","sources":["../../../src/js/crud/removeAll.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAU,MAAM,SAAS,CAAC;AAIzD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAKpD,QAAA,MAAM,SAAS,GAAI,6BAIhB;IACD,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,KAAK,CAAC;CACjB,MACe,KAAK,OAAO,EAAE,KAAK,QAAQ,KAAG,OAAO,CAAC,IAAI,CAsDzD,CAAC;AAEF,eAAe,SAAS,CAAC"}
@@ -4,22 +4,28 @@ import authorizeAccess from "./utils/authorizeAccess.js";
4
4
  import AppError from "../utils/AppError.js";
5
5
  import getErrorDetail from "../utils/getErrorDetail.js";
6
6
  import runActions from "./utils/runActions.js";
7
- const removeAll = ({ modelName, routeName, routeObj, }) => {
7
+ const removeAll = ({ model, route, routeObj, }) => {
8
8
  return async (req, res) => {
9
- authorizeAccess({ routeObj, routeName, req });
10
- const Model = getModel({ modelName, routeName, routeObj });
9
+ // authorize access
10
+ authorizeAccess({ routeObj, route, req });
11
+ // model
12
+ const Model = getModel({ model, route, routeObj });
13
+ // runActions object
11
14
  const ActionObj = {
12
15
  req,
13
16
  user: req.user,
14
- routeName,
15
- modelName,
17
+ route,
18
+ model,
16
19
  Model,
17
20
  };
21
+ // before action
18
22
  let modifiedResponse = await runActions(routeObj.actions?.before, {
19
23
  operation: "removeAll",
20
24
  ...ActionObj,
21
25
  });
26
+ // delete all
22
27
  const result = await Model.deleteMany({});
28
+ // if item(s) not found
23
29
  const notFound = !result || result.deletedCount === 0;
24
30
  if (notFound) {
25
31
  throw new AppError({
@@ -29,11 +35,13 @@ const removeAll = ({ modelName, routeName, routeObj, }) => {
29
35
  details: getErrorDetail(routeObj),
30
36
  });
31
37
  }
38
+ // after action
32
39
  modifiedResponse = await runActions(routeObj.actions?.before, {
33
40
  operation: "removeAll",
34
41
  ...ActionObj,
35
42
  item: result,
36
43
  });
44
+ // return response
37
45
  appResponse({
38
46
  res,
39
47
  data: modifiedResponse ?? {
@@ -1 +1 @@
1
- {"version":3,"file":"removeAll.js","sourceRoot":"","sources":["../../../src/js/crud/removeAll.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAC5C,OAAO,WAAW,MAAM,sBAAsB,CAAC;AAC/C,OAAO,eAAe,MAAM,4BAA4B,CAAC;AAEzD,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAC5C,OAAO,cAAc,MAAM,4BAA4B,CAAC;AACxD,OAAO,UAAU,MAAM,uBAAuB,CAAC;AAE/C,MAAM,SAAS,GAAG,CAAC,EACjB,SAAS,EACT,SAAS,EACT,QAAQ,GAKT,EAAE,EAAE;IACH,OAAO,KAAK,EAAE,GAAY,EAAE,GAAa,EAAiB,EAAE;QAE1D,eAAe,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;QAG9C,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,IAAI,gBAAgB,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE;YAChE,SAAS,EAAE,WAAW;YACtB,GAAG,SAAS;SACb,CAAC,CAAC;QAGH,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAG1C,MAAM,QAAQ,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,YAAY,KAAK,CAAC,CAAC;QAEtD,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,IAAI,QAAQ,CAAC;gBACjB,OAAO,EAAE,0BAA0B;gBACnC,UAAU,EAAE,GAAG;gBACf,IAAI,EAAE,sCAAsC;gBAC5C,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC;aAClC,CAAC,CAAC;QACL,CAAC;QAGD,gBAAgB,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE;YAC5D,SAAS,EAAE,WAAW;YACtB,GAAG,SAAS;YACZ,IAAI,EAAE,MAAM;SACb,CAAC,CAAC;QAGH,WAAW,CAAC;YACV,GAAG;YACH,IAAI,EAAE,gBAAgB,IAAI;gBACxB,YAAY,EAAE,MAAM,CAAC,YAAY;aAClC;YACD,OAAO,EAAE,6BAA6B;YACtC,UAAU,EAAE,GAAG;SAChB,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"removeAll.js","sourceRoot":"","sources":["../../../src/js/crud/removeAll.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAC5C,OAAO,WAAW,MAAM,sBAAsB,CAAC;AAC/C,OAAO,eAAe,MAAM,4BAA4B,CAAC;AAEzD,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAC5C,OAAO,cAAc,MAAM,4BAA4B,CAAC;AACxD,OAAO,UAAU,MAAM,uBAAuB,CAAC;AAE/C,MAAM,SAAS,GAAG,CAAC,EACjB,KAAK,EACL,KAAK,EACL,QAAQ,GAKT,EAAE,EAAE;IACH,OAAO,KAAK,EAAE,GAAY,EAAE,GAAa,EAAiB,EAAE;QAC1D,mBAAmB;QACnB,eAAe,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QAE1C,QAAQ;QACR,MAAM,KAAK,GAAG,QAAQ,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAEnD,oBAAoB;QACpB,MAAM,SAAS,GAAG;YAChB,GAAG;YACH,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,KAAK;YACL,KAAK;YACL,KAAK;SACN,CAAC;QAEF,gBAAgB;QAChB,IAAI,gBAAgB,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE;YAChE,SAAS,EAAE,WAAW;YACtB,GAAG,SAAS;SACb,CAAC,CAAC;QAEH,aAAa;QACb,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAE1C,uBAAuB;QACvB,MAAM,QAAQ,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,YAAY,KAAK,CAAC,CAAC;QAEtD,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,IAAI,QAAQ,CAAC;gBACjB,OAAO,EAAE,0BAA0B;gBACnC,UAAU,EAAE,GAAG;gBACf,IAAI,EAAE,sCAAsC;gBAC5C,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC;aAClC,CAAC,CAAC;QACL,CAAC;QAED,eAAe;QACf,gBAAgB,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE;YAC5D,SAAS,EAAE,WAAW;YACtB,GAAG,SAAS;YACZ,IAAI,EAAE,MAAM;SACb,CAAC,CAAC;QAEH,kBAAkB;QAClB,WAAW,CAAC;YACV,GAAG;YACH,IAAI,EAAE,gBAAgB,IAAI;gBACxB,YAAY,EAAE,MAAM,CAAC,YAAY;aAClC;YACD,OAAO,EAAE,6BAA6B;YACtC,UAAU,EAAE,GAAG;SAChB,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,SAAS,CAAC"}
@@ -1,10 +1,10 @@
1
1
  import type { Request, Response } from "express";
2
2
  import type { Route, ValidationsObj } from "../types/Collection.ts";
3
- declare const removeMultiple: ({ modelName, routeName, routeObj, validationsObj, }: {
4
- modelName: string;
5
- routeName: string;
3
+ declare const removeMultiple: ({ model, route, routeObj, validations, }: {
4
+ model: string;
5
+ route: string;
6
6
  routeObj: Route;
7
- validationsObj: ValidationsObj;
7
+ validations: ValidationsObj;
8
8
  }) => (req: Request, res: Response) => Promise<void>;
9
9
  export default removeMultiple;
10
10
  //# sourceMappingURL=removeMultiple.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"removeMultiple.d.ts","sourceRoot":"","sources":["../../../src/js/crud/removeMultiple.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAU,MAAM,SAAS,CAAC;AAGzD,OAAO,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAOpE,QAAA,MAAM,cAAc,GAAI,qDAKrB;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,CAwEzD,CAAC;AAEF,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"removeMultiple.d.ts","sourceRoot":"","sources":["../../../src/js/crud/removeMultiple.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAU,MAAM,SAAS,CAAC;AAGzD,OAAO,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAOpE,QAAA,MAAM,cAAc,GAAI,0CAKrB;IACD,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,KAAK,CAAC;IAChB,WAAW,EAAE,cAAc,CAAC;CAC7B,MACe,KAAK,OAAO,EAAE,KAAK,QAAQ,KAAG,OAAO,CAAC,IAAI,CAwEzD,CAAC;AAEF,eAAe,cAAc,CAAC"}
@@ -5,34 +5,43 @@ import getValidationKey from "../utils/validationKeyError.js";
5
5
  import getErrorDetail from "../utils/getErrorDetail.js";
6
6
  import validate from "../utils/validate.js";
7
7
  import runActions from "./utils/runActions.js";
8
- const removeMultiple = ({ modelName, routeName, routeObj, validationsObj, }) => {
8
+ const removeMultiple = ({ model, route, routeObj, validations, }) => {
9
9
  return async (req, res) => {
10
- const validationObj = getValidationKey(routeObj, validationsObj);
11
- const Model = getModel({ modelName, routeName, routeObj });
10
+ // validationObj
11
+ const validationObj = getValidationKey(routeObj, validations);
12
+ // authorize access
13
+ // model
14
+ const Model = getModel({ model, route, routeObj });
15
+ // runActions object
12
16
  const ActionObj = {
13
17
  req,
14
18
  user: req.user,
15
- routeName,
16
- modelName,
19
+ route,
20
+ model,
17
21
  Model,
18
22
  };
23
+ // before action
19
24
  let modifiedResponse = await runActions(routeObj.actions?.before, {
20
25
  operation: "removeMultiple",
21
26
  ...ActionObj,
22
27
  });
28
+ // body
23
29
  const body = validate(validationObj, req.body, routeObj);
24
- const idsFieldName = routeObj.mongooseConfigObj?.removeMultipleFieldKey;
30
+ // ids - field name
31
+ const idsFieldName = routeObj.config?.targetField;
25
32
  if (!idsFieldName)
26
33
  throw new AppError({
27
34
  details: getErrorDetail(routeObj),
28
- hint: "Write the array name in routes -> route -> mongooseConfigObj -> removeMultipleFieldKey that has items' ids to delete",
35
+ hint: "Write the array name in routes -> route -> config -> targetField that has items' ids to delete",
29
36
  message: "Ids field name missing",
30
37
  statusCode: 409,
31
38
  });
39
+ // delete all
32
40
  const result = await Model.deleteMany({
33
41
  _id: { $in: body[idsFieldName] },
34
42
  owner: req.user._id,
35
43
  });
44
+ // if item(s) not found
36
45
  const notFound = !result || result.deletedCount === 0;
37
46
  if (notFound) {
38
47
  throw new AppError({
@@ -42,11 +51,13 @@ const removeMultiple = ({ modelName, routeName, routeObj, validationsObj, }) =>
42
51
  details: getErrorDetail(routeObj),
43
52
  });
44
53
  }
54
+ // after action
45
55
  modifiedResponse = await runActions(routeObj.actions?.before, {
46
56
  operation: "removeMultiple",
47
57
  ...ActionObj,
48
58
  item: result,
49
59
  });
60
+ // return response
50
61
  appResponse({
51
62
  res,
52
63
  data: modifiedResponse ?? {
@@ -1 +1 @@
1
- {"version":3,"file":"removeMultiple.js","sourceRoot":"","sources":["../../../src/js/crud/removeMultiple.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAC5C,OAAO,WAAW,MAAM,sBAAsB,CAAC;AAE/C,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAC5C,OAAO,gBAAgB,MAAM,gCAAgC,CAAC;AAC9D,OAAO,cAAc,MAAM,4BAA4B,CAAC;AACxD,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAC5C,OAAO,UAAU,MAAM,uBAAuB,CAAC;AAE/C,MAAM,cAAc,GAAG,CAAC,EACtB,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;QAKjE,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,IAAI,gBAAgB,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE;YAChE,SAAS,EAAE,gBAAgB;YAC3B,GAAG,SAAS;SACb,CAAC,CAAC;QAGH,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,EAAE,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAGzD,MAAM,YAAY,GAAG,QAAQ,CAAC,iBAAiB,EAAE,sBAAsB,CAAC;QACxE,IAAI,CAAC,YAAY;YACf,MAAM,IAAI,QAAQ,CAAC;gBACjB,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC;gBACjC,IAAI,EAAE,sHAAsH;gBAC5H,OAAO,EAAE,wBAAwB;gBACjC,UAAU,EAAE,GAAG;aAChB,CAAC,CAAC;QAGL,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,UAAU,CAAC;YACpC,GAAG,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE;YAChC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG;SACpB,CAAC,CAAC;QAGH,MAAM,QAAQ,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,YAAY,KAAK,CAAC,CAAC;QAEtD,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,IAAI,QAAQ,CAAC;gBACjB,OAAO,EAAE,0BAA0B;gBACnC,UAAU,EAAE,GAAG;gBACf,IAAI,EAAE,kCAAkC,YAAY,qDAAqD;gBACzG,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC;aAClC,CAAC,CAAC;QACL,CAAC;QAGD,gBAAgB,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE;YAC5D,SAAS,EAAE,gBAAgB;YAC3B,GAAG,SAAS;YACZ,IAAI,EAAE,MAAM;SACb,CAAC,CAAC;QAGH,WAAW,CAAC;YACV,GAAG;YACH,IAAI,EAAE,gBAAgB,IAAI;gBACxB,YAAY,EAAE,MAAM,CAAC,YAAY;aAClC;YACD,OAAO,EAAE,6BAA6B;YACtC,UAAU,EAAE,GAAG;SAChB,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"removeMultiple.js","sourceRoot":"","sources":["../../../src/js/crud/removeMultiple.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAC5C,OAAO,WAAW,MAAM,sBAAsB,CAAC;AAE/C,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAC5C,OAAO,gBAAgB,MAAM,gCAAgC,CAAC;AAC9D,OAAO,cAAc,MAAM,4BAA4B,CAAC;AACxD,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAC5C,OAAO,UAAU,MAAM,uBAAuB,CAAC;AAE/C,MAAM,cAAc,GAAG,CAAC,EACtB,KAAK,EACL,KAAK,EACL,QAAQ,EACR,WAAW,GAMZ,EAAE,EAAE;IACH,OAAO,KAAK,EAAE,GAAY,EAAE,GAAa,EAAiB,EAAE;QAC1D,gBAAgB;QAChB,MAAM,aAAa,GAAG,gBAAgB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QAE9D,mBAAmB;QAEnB,QAAQ;QACR,MAAM,KAAK,GAAG,QAAQ,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAEnD,oBAAoB;QACpB,MAAM,SAAS,GAAG;YAChB,GAAG;YACH,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,KAAK;YACL,KAAK;YACL,KAAK;SACN,CAAC;QAEF,gBAAgB;QAChB,IAAI,gBAAgB,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE;YAChE,SAAS,EAAE,gBAAgB;YAC3B,GAAG,SAAS;SACb,CAAC,CAAC;QAEH,OAAO;QACP,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,EAAE,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAEzD,mBAAmB;QACnB,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;QAClD,IAAI,CAAC,YAAY;YACf,MAAM,IAAI,QAAQ,CAAC;gBACjB,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC;gBACjC,IAAI,EAAE,gGAAgG;gBACtG,OAAO,EAAE,wBAAwB;gBACjC,UAAU,EAAE,GAAG;aAChB,CAAC,CAAC;QAEL,aAAa;QACb,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,UAAU,CAAC;YACpC,GAAG,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE;YAChC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG;SACpB,CAAC,CAAC;QAEH,uBAAuB;QACvB,MAAM,QAAQ,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,YAAY,KAAK,CAAC,CAAC;QAEtD,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,IAAI,QAAQ,CAAC;gBACjB,OAAO,EAAE,0BAA0B;gBACnC,UAAU,EAAE,GAAG;gBACf,IAAI,EAAE,kCAAkC,YAAY,qDAAqD;gBACzG,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC;aAClC,CAAC,CAAC;QACL,CAAC;QAED,eAAe;QACf,gBAAgB,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE;YAC5D,SAAS,EAAE,gBAAgB;YAC3B,GAAG,SAAS;YACZ,IAAI,EAAE,MAAM;SACb,CAAC,CAAC;QAEH,kBAAkB;QAClB,WAAW,CAAC;YACV,GAAG;YACH,IAAI,EAAE,gBAAgB,IAAI;gBACxB,YAAY,EAAE,MAAM,CAAC,YAAY;aAClC;YACD,OAAO,EAAE,6BAA6B;YACtC,UAAU,EAAE,GAAG;SAChB,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,cAAc,CAAC"}
@@ -2,29 +2,34 @@ import { unSeal } from "../../utils/libsodium.js";
2
2
  import AppError from "../../utils/AppError.js";
3
3
  import getErrorDetail from "../../utils/getErrorDetail.js";
4
4
  const handleDecryption = async (item, routeObj) => {
5
- const decArr = routeObj.decryptedFieldsArray;
5
+ const decArr = routeObj.decryptedFields;
6
+ // If decryptedFields is not configured, skip decryption.
6
7
  if (!decArr)
7
8
  return;
9
+ // Validate configuration type.
8
10
  if (!Array.isArray(decArr)) {
9
11
  throw new AppError({
10
12
  details: getErrorDetail(routeObj),
11
- hint: "decryptedFieldsArray must be an array of field names.",
13
+ hint: "decryptedFields must be an array of field names.",
12
14
  message: "Decryption configuration is invalid.",
13
15
  statusCode: 409,
14
16
  });
15
17
  }
18
+ // Validate configuration is not empty.
16
19
  if (!decArr.length) {
17
20
  throw new AppError({
18
21
  details: getErrorDetail(routeObj),
19
- hint: "Add at least one field name to decryptedFieldsArray.",
22
+ hint: "Add at least one field name to decryptedFields.",
20
23
  message: "Decryption configuration is empty.",
21
24
  statusCode: 409,
22
25
  });
23
26
  }
24
27
  const decrypted = {};
25
28
  for (let field of decArr) {
29
+ // clean the optional
26
30
  const optional = field.endsWith("?");
27
31
  field = optional ? field.slice(0, -1) : field;
32
+ // Validate that the field exists in the request body.
28
33
  if (!Object.hasOwn(item, field))
29
34
  if (optional) {
30
35
  continue;
@@ -1 +1 @@
1
- {"version":3,"file":"handleDecryption.js","sourceRoot":"","sources":["../../../../src/js/crud/security/handleDecryption.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AAC/C,OAAO,cAAc,MAAM,+BAA+B,CAAC;AAE3D,MAAM,gBAAgB,GAAG,KAAK,EAAE,IAAS,EAAE,QAAe,EAAE,EAAE;IAC5D,MAAM,MAAM,GAAG,QAAQ,CAAC,oBAAoB,CAAC;IAG7C,IAAI,CAAC,MAAM;QAAE,OAAO;IAGpB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,QAAQ,CAAC;YACjB,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC;YACjC,IAAI,EAAE,uDAAuD;YAC7D,OAAO,EAAE,sCAAsC;YAC/C,UAAU,EAAE,GAAG;SAChB,CAAC,CAAC;IACL,CAAC;IAGD,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,IAAI,QAAQ,CAAC;YACjB,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC;YACjC,IAAI,EAAE,sDAAsD;YAC5D,OAAO,EAAE,oCAAoC;YAC7C,UAAU,EAAE,GAAG;SAChB,CAAC,CAAC;IACL,CAAC;IAED,MAAM,SAAS,GAA2B,EAAE,CAAC;IAE7C,KAAK,IAAI,KAAK,IAAI,MAAM,EAAE,CAAC;QAEzB,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACrC,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAG9C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC;YAC7B,IAAI,QAAQ,EAAE,CAAC;gBACb,SAAS;YACX,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,QAAQ,CAAC;oBACjB,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC;oBACjC,IAAI,EAAE,cAAc,KAAK,2BAA2B,IAAI,CAAC,GAAG,SAAS,KAAK,yCAAyC,KAAK,GAAG;oBAC3H,OAAO,EAAE,uBAAuB,KAAK,6BAA6B;oBAClE,UAAU,EAAE,GAAG;iBAChB,CAAC,CAAC;YACL,CAAC;QAEH,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QACjE,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,IAAI,CAAC,iBAAiB;YACpD,MAAM,IAAI,QAAQ,CAAC;gBACjB,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC;gBACjC,IAAI,EAAE,oFAAoF;gBAC1F,OAAO,EAAE,mCAAmC;gBAC5C,UAAU,EAAE,GAAG;aAChB,CAAC,CAAC;QAEL,SAAS,CAAC,KAAK,CAAC,GAAG,MAAM,MAAM,CAAC;YAC9B,GAAG;YACH,KAAK;YACL,SAAS;YACT,iBAAiB;YACjB,QAAQ;SACT,CAAC,CAAC;IACL,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"handleDecryption.js","sourceRoot":"","sources":["../../../../src/js/crud/security/handleDecryption.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AAC/C,OAAO,cAAc,MAAM,+BAA+B,CAAC;AAE3D,MAAM,gBAAgB,GAAG,KAAK,EAAE,IAAS,EAAE,QAAe,EAAE,EAAE;IAC5D,MAAM,MAAM,GAAG,QAAQ,CAAC,eAAe,CAAC;IAExC,yDAAyD;IACzD,IAAI,CAAC,MAAM;QAAE,OAAO;IAEpB,+BAA+B;IAC/B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,QAAQ,CAAC;YACjB,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC;YACjC,IAAI,EAAE,kDAAkD;YACxD,OAAO,EAAE,sCAAsC;YAC/C,UAAU,EAAE,GAAG;SAChB,CAAC,CAAC;IACL,CAAC;IAED,uCAAuC;IACvC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,IAAI,QAAQ,CAAC;YACjB,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC;YACjC,IAAI,EAAE,iDAAiD;YACvD,OAAO,EAAE,oCAAoC;YAC7C,UAAU,EAAE,GAAG;SAChB,CAAC,CAAC;IACL,CAAC;IAED,MAAM,SAAS,GAA2B,EAAE,CAAC;IAE7C,KAAK,IAAI,KAAK,IAAI,MAAM,EAAE,CAAC;QACzB,qBAAqB;QACrB,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACrC,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAE9C,sDAAsD;QACtD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC;YAC7B,IAAI,QAAQ,EAAE,CAAC;gBACb,SAAS;YACX,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,QAAQ,CAAC;oBACjB,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC;oBACjC,IAAI,EAAE,cAAc,KAAK,2BAA2B,IAAI,CAAC,GAAG,SAAS,KAAK,yCAAyC,KAAK,GAAG;oBAC3H,OAAO,EAAE,uBAAuB,KAAK,6BAA6B;oBAClE,UAAU,EAAE,GAAG;iBAChB,CAAC,CAAC;YACL,CAAC;QAEH,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QACjE,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,IAAI,CAAC,iBAAiB;YACpD,MAAM,IAAI,QAAQ,CAAC;gBACjB,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC;gBACjC,IAAI,EAAE,oFAAoF;gBAC1F,OAAO,EAAE,mCAAmC;gBAC5C,UAAU,EAAE,GAAG;aAChB,CAAC,CAAC;QAEL,SAAS,CAAC,KAAK,CAAC,GAAG,MAAM,MAAM,CAAC;YAC9B,GAAG;YACH,KAAK;YACL,SAAS;YACT,iBAAiB;YACjB,QAAQ;SACT,CAAC,CAAC;IACL,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
@@ -2,21 +2,24 @@ import AppError from "../../utils/AppError.js";
2
2
  import getErrorDetail from "../../utils/getErrorDetail.js";
3
3
  import { seal } from "../../utils/libsodium.js";
4
4
  const handleEncryption = async (body, routeObj) => {
5
- const encArr = routeObj.encryptedFieldsArray;
5
+ const encArr = routeObj.encryptedFields;
6
+ // If encryptedFields is not configured, skip encryption.
6
7
  if (!encArr)
7
8
  return;
9
+ // Validate configuration type.
8
10
  if (!Array.isArray(encArr)) {
9
11
  throw new AppError({
10
12
  details: getErrorDetail(routeObj),
11
- hint: "encryptedFieldsArray must be an array of field names.",
13
+ hint: "encryptedFields must be an array of field names.",
12
14
  message: "Encryption configuration is invalid.",
13
15
  statusCode: 409,
14
16
  });
15
17
  }
18
+ // Validate configuration is not empty.
16
19
  if (!encArr.length) {
17
20
  throw new AppError({
18
21
  details: getErrorDetail(routeObj),
19
- hint: "Add at least one field name to encryptedFieldsArray.",
22
+ hint: "Add at least one field name to encryptedFields.",
20
23
  message: "Encryption configuration is empty.",
21
24
  statusCode: 409,
22
25
  });
@@ -25,6 +28,7 @@ const handleEncryption = async (body, routeObj) => {
25
28
  for (let field of encArr) {
26
29
  const optional = field.endsWith("?");
27
30
  field = optional ? field.slice(0, -1) : field;
31
+ // Validate that the field exists in the request body.
28
32
  if (!Object.hasOwn(body, field))
29
33
  if (optional) {
30
34
  continue;
@@ -1 +1 @@
1
- {"version":3,"file":"handleEncryption.js","sourceRoot":"","sources":["../../../../src/js/crud/security/handleEncryption.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AAC/C,OAAO,cAAc,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAGhD,MAAM,gBAAgB,GAAG,KAAK,EAAE,IAAS,EAAE,QAAe,EAAE,EAAE;IAC5D,MAAM,MAAM,GAAG,QAAQ,CAAC,oBAAoB,CAAC;IAG7C,IAAI,CAAC,MAAM;QAAE,OAAO;IAGpB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,QAAQ,CAAC;YACjB,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC;YACjC,IAAI,EAAE,uDAAuD;YAC7D,OAAO,EAAE,sCAAsC;YAC/C,UAAU,EAAE,GAAG;SAChB,CAAC,CAAC;IACL,CAAC;IAGD,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,IAAI,QAAQ,CAAC;YACjB,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC;YACjC,IAAI,EAAE,sDAAsD;YAC5D,OAAO,EAAE,oCAAoC;YAC7C,UAAU,EAAE,GAAG;SAChB,CAAC,CAAC;IACL,CAAC;IAED,MAAM,SAAS,GAA+B,EAAE,CAAC;IAEjD,KAAK,IAAI,KAAK,IAAI,MAAM,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACrC,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAG9C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC;YAC7B,IAAI,QAAQ,EAAE,CAAC;gBACb,SAAS;YACX,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,QAAQ,CAAC;oBACjB,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC;oBACjC,IAAI,EAAE,cAAc,KAAK,oCAAoC;oBAC7D,OAAO,EAAE,uBAAuB,KAAK,0BAA0B;oBAC/D,UAAU,EAAE,GAAG;iBAChB,CAAC,CAAC;YACL,CAAC;QAEH,SAAS,CAAC,KAAK,CAAC,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,CAAC;IACvD,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"handleEncryption.js","sourceRoot":"","sources":["../../../../src/js/crud/security/handleEncryption.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AAC/C,OAAO,cAAc,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAGhD,MAAM,gBAAgB,GAAG,KAAK,EAAE,IAAS,EAAE,QAAe,EAAE,EAAE;IAC5D,MAAM,MAAM,GAAG,QAAQ,CAAC,eAAe,CAAC;IAExC,yDAAyD;IACzD,IAAI,CAAC,MAAM;QAAE,OAAO;IAEpB,+BAA+B;IAC/B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,QAAQ,CAAC;YACjB,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC;YACjC,IAAI,EAAE,kDAAkD;YACxD,OAAO,EAAE,sCAAsC;YAC/C,UAAU,EAAE,GAAG;SAChB,CAAC,CAAC;IACL,CAAC;IAED,uCAAuC;IACvC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,IAAI,QAAQ,CAAC;YACjB,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC;YACjC,IAAI,EAAE,iDAAiD;YACvD,OAAO,EAAE,oCAAoC;YAC7C,UAAU,EAAE,GAAG;SAChB,CAAC,CAAC;IACL,CAAC;IAED,MAAM,SAAS,GAA+B,EAAE,CAAC;IAEjD,KAAK,IAAI,KAAK,IAAI,MAAM,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACrC,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAE9C,sDAAsD;QACtD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC;YAC7B,IAAI,QAAQ,EAAE,CAAC;gBACb,SAAS;YACX,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,QAAQ,CAAC;oBACjB,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC;oBACjC,IAAI,EAAE,cAAc,KAAK,oCAAoC;oBAC7D,OAAO,EAAE,uBAAuB,KAAK,0BAA0B;oBAC/D,UAAU,EAAE,GAAG;iBAChB,CAAC,CAAC;YACL,CAAC;QAEH,SAAS,CAAC,KAAK,CAAC,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,CAAC;IACvD,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
@@ -2,21 +2,24 @@ import AppError from "../../utils/AppError.js";
2
2
  import getErrorDetail from "../../utils/getErrorDetail.js";
3
3
  import { hash } from "../../utils/libsodium.js";
4
4
  const handleHashing = async (body, routeObj) => {
5
- const hashArr = routeObj.hashedFieldsArray;
5
+ const hashArr = routeObj.hashedFields;
6
+ // If hashedFields is not configured, skip hashing.
6
7
  if (!hashArr)
7
8
  return;
9
+ // Validate configuration type.
8
10
  if (!Array.isArray(hashArr)) {
9
11
  throw new AppError({
10
12
  details: getErrorDetail(routeObj),
11
- hint: "hashedFieldsArray must be an array of field names.",
13
+ hint: "hashedFields must be an array of field names.",
12
14
  message: "Hashing configuration is invalid.",
13
15
  statusCode: 409,
14
16
  });
15
17
  }
18
+ // Validate configuration is not empty.
16
19
  if (!hashArr.length) {
17
20
  throw new AppError({
18
21
  details: getErrorDetail(routeObj),
19
- hint: "Add at least one field name to hashedFieldsArray.",
22
+ hint: "Add at least one field name to hashedFields.",
20
23
  message: "Hashing configuration is empty.",
21
24
  statusCode: 409,
22
25
  });
@@ -25,6 +28,7 @@ const handleHashing = async (body, routeObj) => {
25
28
  for (let field of hashArr) {
26
29
  const optional = field.endsWith("?");
27
30
  field = optional ? field.slice(0, -1) : field;
31
+ // Validate that the field exists in the request body.
28
32
  if (!Object.hasOwn(body, field)) {
29
33
  if (optional) {
30
34
  continue;
@@ -36,6 +40,7 @@ const handleHashing = async (body, routeObj) => {
36
40
  statusCode: 400,
37
41
  });
38
42
  }
43
+ // Only strings can be hashed.
39
44
  if (typeof body[field] !== "string") {
40
45
  throw new AppError({
41
46
  details: getErrorDetail(routeObj),
@@ -1 +1 @@
1
- {"version":3,"file":"handleHashing.js","sourceRoot":"","sources":["../../../../src/js/crud/security/handleHashing.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AAC/C,OAAO,cAAc,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAEhD,MAAM,aAAa,GAAG,KAAK,EAAE,IAAS,EAAE,QAAe,EAAE,EAAE;IACzD,MAAM,OAAO,GAAG,QAAQ,CAAC,iBAAiB,CAAC;IAG3C,IAAI,CAAC,OAAO;QAAE,OAAO;IAGrB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,QAAQ,CAAC;YACjB,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC;YACjC,IAAI,EAAE,oDAAoD;YAC1D,OAAO,EAAE,mCAAmC;YAC5C,UAAU,EAAE,GAAG;SAChB,CAAC,CAAC;IACL,CAAC;IAGD,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACpB,MAAM,IAAI,QAAQ,CAAC;YACjB,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC;YACjC,IAAI,EAAE,mDAAmD;YACzD,OAAO,EAAE,iCAAiC;YAC1C,UAAU,EAAE,GAAG;SAChB,CAAC,CAAC;IACL,CAAC;IAED,MAAM,MAAM,GAA2B,EAAE,CAAC;IAE1C,KAAK,IAAI,KAAK,IAAI,OAAO,EAAE,CAAC;QAC1B,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACrC,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAG9C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;YAChC,IAAI,QAAQ,EAAE,CAAC;gBACb,SAAS;YACX,CAAC;YAED,MAAM,IAAI,QAAQ,CAAC;gBACjB,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC;gBACjC,IAAI,EAAE,cAAc,KAAK,oCAAoC;gBAC7D,OAAO,EAAE,uBAAuB,KAAK,uBAAuB;gBAC5D,UAAU,EAAE,GAAG;aAChB,CAAC,CAAC;QACL,CAAC;QAGD,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,QAAQ,EAAE,CAAC;YACpC,MAAM,IAAI,QAAQ,CAAC;gBACjB,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC;gBACjC,IAAI,EAAE,cAAc,KAAK,gCAAgC;gBACzD,OAAO,EAAE,cAAc,KAAK,2DAA2D;gBACvF,UAAU,EAAE,GAAG;aAChB,CAAC,CAAC;QACL,CAAC;QAED,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,CAAC;IACpD,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"handleHashing.js","sourceRoot":"","sources":["../../../../src/js/crud/security/handleHashing.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AAC/C,OAAO,cAAc,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAEhD,MAAM,aAAa,GAAG,KAAK,EAAE,IAAS,EAAE,QAAe,EAAE,EAAE;IACzD,MAAM,OAAO,GAAG,QAAQ,CAAC,YAAY,CAAC;IAEtC,mDAAmD;IACnD,IAAI,CAAC,OAAO;QAAE,OAAO;IAErB,+BAA+B;IAC/B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,QAAQ,CAAC;YACjB,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC;YACjC,IAAI,EAAE,+CAA+C;YACrD,OAAO,EAAE,mCAAmC;YAC5C,UAAU,EAAE,GAAG;SAChB,CAAC,CAAC;IACL,CAAC;IAED,uCAAuC;IACvC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACpB,MAAM,IAAI,QAAQ,CAAC;YACjB,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC;YACjC,IAAI,EAAE,8CAA8C;YACpD,OAAO,EAAE,iCAAiC;YAC1C,UAAU,EAAE,GAAG;SAChB,CAAC,CAAC;IACL,CAAC;IAED,MAAM,MAAM,GAA2B,EAAE,CAAC;IAE1C,KAAK,IAAI,KAAK,IAAI,OAAO,EAAE,CAAC;QAC1B,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACrC,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAE9C,sDAAsD;QACtD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;YAChC,IAAI,QAAQ,EAAE,CAAC;gBACb,SAAS;YACX,CAAC;YAED,MAAM,IAAI,QAAQ,CAAC;gBACjB,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC;gBACjC,IAAI,EAAE,cAAc,KAAK,oCAAoC;gBAC7D,OAAO,EAAE,uBAAuB,KAAK,uBAAuB;gBAC5D,UAAU,EAAE,GAAG;aAChB,CAAC,CAAC;QACL,CAAC;QAED,8BAA8B;QAC9B,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,QAAQ,EAAE,CAAC;YACpC,MAAM,IAAI,QAAQ,CAAC;gBACjB,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC;gBACjC,IAAI,EAAE,cAAc,KAAK,gCAAgC;gBACzD,OAAO,EAAE,cAAc,KAAK,2DAA2D;gBACvF,UAAU,EAAE,GAAG;aAChB,CAAC,CAAC;QACL,CAAC;QAED,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,CAAC;IACpD,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,eAAe,aAAa,CAAC"}
@@ -1,10 +1,10 @@
1
1
  import type { Request, Response } from "express";
2
2
  import type { ValidationsObj, Route } from "../types/Collection.js";
3
- declare const update: ({ modelName, routeName, routeObj, validationsObj, }: {
4
- modelName: string;
5
- routeName: string;
3
+ declare const update: ({ model, route, routeObj, validations, }: {
4
+ model: string;
5
+ route: string;
6
6
  routeObj: Route;
7
- validationsObj: ValidationsObj;
7
+ validations: ValidationsObj;
8
8
  }) => (req: Request, res: Response) => Promise<void>;
9
9
  export default update;
10
10
  //# sourceMappingURL=update.d.ts.map
@@ -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;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"}
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,0CAKb;IACD,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,KAAK,CAAC;IAChB,WAAW,EAAE,cAAc,CAAC;CAC7B,MACe,KAAK,OAAO,EAAE,KAAK,QAAQ,KAAG,OAAO,CAAC,IAAI,CAiFzD,CAAC;AAEF,eAAe,MAAM,CAAC"}
@@ -9,26 +9,35 @@ import getValidationKey from "../utils/validationKeyError.js";
9
9
  import handleEncryption from "./encryption/handleEncryption.js";
10
10
  import handleHashing from "./security/handleHashing.js";
11
11
  import runActions from "./utils/runActions.js";
12
- const update = ({ modelName, routeName, routeObj, validationsObj, }) => {
12
+ const update = ({ model, route, routeObj, validations, }) => {
13
13
  return async (req, res) => {
14
- const validationObj = getValidationKey(routeObj, validationsObj);
14
+ // validationObj
15
+ const validationObj = getValidationKey(routeObj, validations);
16
+ // get /:parameter
15
17
  const id = getParam({ req, routeObj });
18
+ // validate
16
19
  const body = validate(validationObj, req.body, routeObj);
20
+ // ensure item exists
17
21
  const item = await getItem({
18
- modelName,
19
- routeName,
22
+ model,
23
+ route,
20
24
  _id: id,
21
25
  routeObj,
22
26
  });
23
- authorizeAccess({ item, req, routeObj, routeName });
27
+ // authorize access
28
+ authorizeAccess({ item, req, routeObj, route });
29
+ // if encryptedFields
24
30
  const encryptedFields = await handleEncryption(req.body, routeObj);
31
+ // if hashedFields
25
32
  const hashedFields = await handleHashing(req.body, routeObj);
26
- const Model = getModel({ modelName, routeName, routeObj });
33
+ // model
34
+ const Model = getModel({ model, route, routeObj });
35
+ // runActions object
27
36
  const ActionObj = {
28
37
  req,
29
38
  user: req.user,
30
- routeName,
31
- modelName,
39
+ route,
40
+ model,
32
41
  Model,
33
42
  data: {
34
43
  body,
@@ -36,22 +45,28 @@ const update = ({ modelName, routeName, routeObj, validationsObj, }) => {
36
45
  hashedFields,
37
46
  },
38
47
  };
48
+ // before action
39
49
  let modifiedResponse = await runActions(routeObj.actions?.before, {
40
50
  operation: "update",
41
51
  ...ActionObj,
42
52
  });
53
+ // update
43
54
  const updatedItem = await Model.findByIdAndUpdate(id, { ...body, ...encryptedFields, ...hashedFields }, {
44
55
  returnDocument: "after",
45
56
  });
57
+ // cleaned
46
58
  const cleaned = sanitizeOne(updatedItem.toObject(), routeObj);
47
- const idExcluded = routeObj.mongooseConfigObj?.hiddenFieldsArray?.includes("_id");
59
+ // if '_id' excluded
60
+ const idExcluded = routeObj.config?.hiddenFields?.includes("_id");
48
61
  if (idExcluded)
49
62
  delete cleaned["_id"];
63
+ // after action
50
64
  modifiedResponse = await runActions(routeObj.actions?.after, {
51
65
  ...ActionObj,
52
66
  operation: "update",
53
67
  item: cleaned,
54
68
  });
69
+ // return response
55
70
  appResponse({
56
71
  res,
57
72
  data: modifiedResponse ?? cleaned,
@@ -1 +1 @@
1
- {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/js/crud/update.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/js/crud/update.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import type { Request } from "express";
2
2
  import type { Route } from "../../types/Collection.js";
3
- declare const authorizeAccess: ({ routeObj, routeName, item, req, }: {
3
+ declare const authorizeAccess: ({ routeObj, route, item, req, }: {
4
4
  routeObj: Route;
5
- routeName: string;
5
+ route: string;
6
6
  item?: any;
7
7
  req: Request;
8
8
  }) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"authorizeAccess.d.ts","sourceRoot":"","sources":["../../../../src/js/crud/utils/authorizeAccess.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAEvC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAIvD,QAAA,MAAM,eAAe,GAAI,qCAKtB;IACD,QAAQ,EAAE,KAAK,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,GAAG,EAAE,OAAO,CAAC;CACd,SAuDA,CAAC;AAEF,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"authorizeAccess.d.ts","sourceRoot":"","sources":["../../../../src/js/crud/utils/authorizeAccess.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAEvC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAIvD,QAAA,MAAM,eAAe,GAAI,iCAKtB;IACD,QAAQ,EAAE,KAAK,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,GAAG,EAAE,OAAO,CAAC;CACd,SAuDA,CAAC;AAEF,eAAe,eAAe,CAAC"}
@@ -1,43 +1,49 @@
1
1
  import AppError from "../../utils/AppError.js";
2
2
  import AppLog from "../../utils/AppLog.js";
3
3
  import getErrorDetail from "../../utils/getErrorDetail.js";
4
- const authorizeAccess = ({ routeObj, routeName, item, req, }) => {
5
- if (routeObj.authRole !== "admin" && routeObj.authRole !== "adminOrOwner")
4
+ const authorizeAccess = ({ routeObj, route, item, req, }) => {
5
+ // if auth !== admin or admin-or-owner
6
+ if (routeObj.auth !== "admin" && routeObj.auth !== "admin-or-owner")
6
7
  throw new AppError({
7
- message: "authRole should only be 'admin' or 'adminOrOwner'",
8
+ message: "auth should only be 'admin' or 'admin-or-owner'",
8
9
  statusCode: 409,
9
- hint: "Make the authRole admin or adminOrOwner based on your routeObj requirement. Checkout collection -> routes -> authRole",
10
+ hint: "Make the auth admin or admin-or-owner based on your routeObj requirement. Checkout collection -> routes -> auth",
10
11
  details: getErrorDetail(routeObj),
11
12
  });
12
- if (routeObj.authRole !== "admin" && routeObj.handler === "removeAll")
13
+ // if removeAll to not admin
14
+ if (routeObj.auth !== "admin" && routeObj.handler === "removeAll")
13
15
  throw new AppError({
14
- message: "authRole should only be 'admin'",
16
+ message: "auth should only be 'admin'",
15
17
  statusCode: 409,
16
- hint: "Make the authRole admin. Checkout collection -> routes -> authRole",
18
+ hint: "Make the auth admin. Checkout collection -> routes -> auth",
17
19
  details: getErrorDetail(routeObj),
18
20
  });
19
- const ownerId = routeObj.ownerShip === "self" ? item._id : item?.owner?._id;
21
+ // vars
22
+ const ownerId = routeObj.ownership === "self" ? item._id : item?.owner?._id;
20
23
  const isOwner = !!ownerId && !!req.user && ownerId.equals(req.user._id);
21
24
  const isAdmin = req.user.role === "admin";
25
+ // if owner id in item not found
22
26
  if (!ownerId) {
23
27
  AppLog("x", "authorization", `owner not found in item.`);
24
- AppLog("warn", "authorization", `If this route doesn't have owner, use ownerShip: "self" in routesArray -> route. routeObj: '/${routeName}', method: '${routeObj.method}' and path: '${routeObj.path}'`);
28
+ AppLog("warn", "authorization", `If this route doesn't have owner, use ownership: "self" in routes -> route. routeObj: '/${route}', method: '${routeObj.method}' and path: '${routeObj.path}'`);
25
29
  }
26
- if (routeObj.authRole === "admin") {
30
+ // allow only admin
31
+ if (routeObj.auth === "admin") {
27
32
  if (!isAdmin)
28
33
  throw new AppError({
29
34
  message: "Unauthorized",
30
35
  statusCode: 403,
31
- hint: "You are not the admin. If this route doesn\'t have owner, use ownerShip: 'self' in routesArray -> route.",
36
+ hint: "You are not the admin. If this route doesn\'t have owner, use ownership: 'self' in routes -> route.",
32
37
  details: getErrorDetail(routeObj),
33
38
  });
34
39
  }
35
- if (routeObj.authRole === "adminOrOwner") {
40
+ // if allow both admin or owner
41
+ if (routeObj.auth === "admin-or-owner") {
36
42
  if (!isAdmin && !isOwner)
37
43
  throw new AppError({
38
44
  message: "Unauthorized",
39
45
  statusCode: 403,
40
- hint: "You are not the owner. If this route doesn\'t have owner, use ownerShip: 'self' in routesArray -> route.",
46
+ hint: "You are not the owner. If this route doesn\'t have owner, use ownership: 'self' in routes -> route.",
41
47
  details: getErrorDetail(routeObj),
42
48
  });
43
49
  }