@starklabs/forge 1.3.13 → 1.3.15

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 (120) hide show
  1. package/dist/js/account/bunch.account.d.ts +2 -0
  2. package/dist/js/account/bunch.account.d.ts.map +1 -1
  3. package/dist/js/account/bunch.account.js +2 -0
  4. package/dist/js/account/bunch.account.js.map +1 -1
  5. package/dist/js/account/me.delete.d.ts +8 -0
  6. package/dist/js/account/me.delete.d.ts.map +1 -0
  7. package/dist/js/account/me.delete.js +30 -0
  8. package/dist/js/account/me.delete.js.map +1 -0
  9. package/dist/js/account/me.get.d.ts.map +1 -1
  10. package/dist/js/account/me.update.d.ts +9 -0
  11. package/dist/js/account/me.update.d.ts.map +1 -0
  12. package/dist/js/account/me.update.js +39 -0
  13. package/dist/js/account/me.update.js.map +1 -0
  14. package/dist/js/auth/builtin/auth.collection.d.ts.map +1 -1
  15. package/dist/js/auth/builtin/auth.collection.js +14 -6
  16. package/dist/js/auth/builtin/auth.collection.js.map +1 -1
  17. package/dist/js/auth/logout.d.ts.map +1 -1
  18. package/dist/js/auth/logout.js +26 -1
  19. package/dist/js/auth/logout.js.map +1 -1
  20. package/dist/js/auth/refresh.d.ts.map +1 -1
  21. package/dist/js/auth/refresh.js +1 -2
  22. package/dist/js/auth/refresh.js.map +1 -1
  23. package/dist/js/auth/utils/handleGetToken.d.ts.map +1 -1
  24. package/dist/js/auth/utils/handleGetToken.js +2 -12
  25. package/dist/js/auth/utils/handleGetToken.js.map +1 -1
  26. package/dist/js/auth/utils/handleRefreshTokenValidation.d.ts +1 -1
  27. package/dist/js/auth/utils/handleRefreshTokenValidation.d.ts.map +1 -1
  28. package/dist/js/auth/utils/handleRefreshTokenValidation.js +21 -2
  29. package/dist/js/auth/utils/handleRefreshTokenValidation.js.map +1 -1
  30. package/dist/js/config/envs.d.ts.map +1 -1
  31. package/dist/js/config/envs.js +7 -10
  32. package/dist/js/config/envs.js.map +1 -1
  33. package/dist/js/config/handlerMap.d.ts.map +1 -1
  34. package/dist/js/config/handlerMap.js +4 -2
  35. package/dist/js/config/handlerMap.js.map +1 -1
  36. package/dist/js/crud/create.d.ts.map +1 -1
  37. package/dist/js/crud/create.js +3 -0
  38. package/dist/js/crud/create.js.map +1 -1
  39. package/dist/js/crud/handleUploads/file.add.js +1 -1
  40. package/dist/js/crud/handleUploads/file.delete.js +1 -1
  41. package/dist/js/crud/handleUploads/file.update.js +1 -1
  42. package/dist/js/crud/read.d.ts.map +1 -1
  43. package/dist/js/crud/read.js +4 -1
  44. package/dist/js/crud/read.js.map +1 -1
  45. package/dist/js/crud/readAll.d.ts.map +1 -1
  46. package/dist/js/crud/readAll.js +4 -1
  47. package/dist/js/crud/readAll.js.map +1 -1
  48. package/dist/js/crud/remove.d.ts +2 -3
  49. package/dist/js/crud/remove.d.ts.map +1 -1
  50. package/dist/js/crud/remove.js +10 -6
  51. package/dist/js/crud/remove.js.map +1 -1
  52. package/dist/js/crud/removeAll.d.ts +2 -3
  53. package/dist/js/crud/removeAll.d.ts.map +1 -1
  54. package/dist/js/crud/removeAll.js +2 -4
  55. package/dist/js/crud/removeAll.js.map +1 -1
  56. package/dist/js/crud/removeMultiple.js +1 -1
  57. package/dist/js/crud/security/handleDecryption.d.ts +4 -0
  58. package/dist/js/crud/security/handleDecryption.d.ts.map +1 -0
  59. package/dist/js/crud/security/handleDecryption.js +59 -0
  60. package/dist/js/crud/security/handleDecryption.js.map +1 -0
  61. package/dist/js/crud/security/handleEncryption.d.ts +5 -0
  62. package/dist/js/crud/security/handleEncryption.d.ts.map +1 -0
  63. package/dist/js/crud/security/handleEncryption.js +45 -0
  64. package/dist/js/crud/security/handleEncryption.js.map +1 -0
  65. package/dist/js/crud/security/handleHashing.d.ts +4 -0
  66. package/dist/js/crud/security/handleHashing.d.ts.map +1 -0
  67. package/dist/js/crud/security/handleHashing.js +52 -0
  68. package/dist/js/crud/security/handleHashing.js.map +1 -0
  69. package/dist/js/crud/security/handleHasing.d.ts +4 -0
  70. package/dist/js/crud/security/handleHasing.d.ts.map +1 -0
  71. package/dist/js/crud/security/handleHasing.js +52 -0
  72. package/dist/js/crud/security/handleHasing.js.map +1 -0
  73. package/dist/js/crud/update.d.ts.map +1 -1
  74. package/dist/js/crud/update.js +12 -4
  75. package/dist/js/crud/update.js.map +1 -1
  76. package/dist/js/crud/utils/authorizeAccess.d.ts +10 -0
  77. package/dist/js/crud/utils/authorizeAccess.d.ts.map +1 -0
  78. package/dist/js/crud/utils/authorizeAccess.js +46 -0
  79. package/dist/js/crud/utils/authorizeAccess.js.map +1 -0
  80. package/dist/js/crud/utils/authroizeAccess.d.ts.map +1 -1
  81. package/dist/js/crud/utils/authroizeAccess.js +4 -2
  82. package/dist/js/crud/utils/authroizeAccess.js.map +1 -1
  83. package/dist/js/crud/utils/getItem.js +1 -1
  84. package/dist/js/crud/utils/getItem.js.map +1 -1
  85. package/dist/js/index.d.ts +2 -0
  86. package/dist/js/index.d.ts.map +1 -1
  87. package/dist/js/index.js +3 -0
  88. package/dist/js/index.js.map +1 -1
  89. package/dist/js/lib/mongoose.fields.d.ts +1 -0
  90. package/dist/js/lib/mongoose.fields.d.ts.map +1 -1
  91. package/dist/js/lib/mongoose.fields.js +5 -0
  92. package/dist/js/lib/mongoose.fields.js.map +1 -1
  93. package/dist/js/lib/unified.fields.d.ts +1 -0
  94. package/dist/js/lib/unified.fields.d.ts.map +1 -1
  95. package/dist/js/lib/unified.fields.js +9 -1
  96. package/dist/js/lib/unified.fields.js.map +1 -1
  97. package/dist/js/lib/zod.fields.d.ts +4 -2
  98. package/dist/js/lib/zod.fields.d.ts.map +1 -1
  99. package/dist/js/lib/zod.fields.js +3 -1
  100. package/dist/js/lib/zod.fields.js.map +1 -1
  101. package/dist/js/middleware/auth.middleware.d.ts.map +1 -1
  102. package/dist/js/middleware/auth.middleware.js +2 -1
  103. package/dist/js/middleware/auth.middleware.js.map +1 -1
  104. package/dist/js/types/Collection.d.ts +1 -0
  105. package/dist/js/types/Collection.d.ts.map +1 -1
  106. package/dist/js/types/accountHandlers.d.ts +1 -1
  107. package/dist/js/types/accountHandlers.d.ts.map +1 -1
  108. package/dist/js/utils/getErrorDetail.d.ts +2 -1
  109. package/dist/js/utils/getErrorDetail.d.ts.map +1 -1
  110. package/dist/js/utils/getErrorDetail.js +2 -1
  111. package/dist/js/utils/getErrorDetail.js.map +1 -1
  112. package/dist/js/utils/handleJWT.d.ts.map +1 -1
  113. package/dist/js/utils/handleJWT.js +0 -1
  114. package/dist/js/utils/handleJWT.js.map +1 -1
  115. package/dist/js/utils/libsodium.d.ts.map +1 -1
  116. package/dist/js/utils/libsodium.js +36 -28
  117. package/dist/js/utils/libsodium.js.map +1 -1
  118. package/dist/js/utils/sanitize.js +2 -2
  119. package/dist/js/utils/sanitize.js.map +1 -1
  120. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"readAll.js","sourceRoot":"","sources":["../../../src/js/crud/readAll.ts"],"names":[],"mappings":"AACA,OAAO,OAAO,MAAM,oBAAoB,CAAC;AACzC,OAAO,WAAW,MAAM,sBAAsB,CAAC;AAE/C,OAAO,eAAe,MAAM,4BAA4B,CAAC;AACzD,OAAO,gBAAgB,MAAM,kCAAkC,CAAC;AAEhE,MAAM,IAAI,GAAG,CAAC,EACZ,SAAS,EACT,SAAS,EACT,QAAQ,EACR,cAAc,GAMf,EAAE,EAAE;IACH,OAAO,KAAK,EAAE,GAAY,EAAE,GAAa,EAAiB,EAAE;QAE1D,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC;YAC1B,SAAS;YACT,SAAS;YACT,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,QAAQ;SACT,CAAC,CAAC;QAGH,IAAI,QAAQ,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACnC,eAAe,CAAC;gBACd,QAAQ;gBACR,SAAS;gBACT,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;gBACd,GAAG;aACJ,CAAC,CAAC;QACL,CAAC;QAGD,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,GAAG,CACtC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAS,EAAE,EAAE;YAC5B,MAAM,UAAU,GAAG,MAAM,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAE1D,OAAO;gBACL,GAAG,IAAI;gBACP,GAAG,UAAU;aACd,CAAC;QACJ,CAAC,CAAC,CACH,CAAC;QAGF,WAAW,CAAC;YACV,GAAG;YACH,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE,2BAA2B;SACrC,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"readAll.js","sourceRoot":"","sources":["../../../src/js/crud/readAll.ts"],"names":[],"mappings":"AACA,OAAO,OAAO,MAAM,oBAAoB,CAAC;AACzC,OAAO,WAAW,MAAM,sBAAsB,CAAC;AAE/C,OAAO,eAAe,MAAM,4BAA4B,CAAC;AACzD,OAAO,gBAAgB,MAAM,kCAAkC,CAAC;AAEhE,MAAM,IAAI,GAAG,CAAC,EACZ,SAAS,EACT,SAAS,EACT,QAAQ,EACR,cAAc,GAMf,EAAE,EAAE;IACH,OAAO,KAAK,EAAE,GAAY,EAAE,GAAa,EAAiB,EAAE;QAE1D,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC;YAC1B,SAAS;YACT,SAAS;YACT,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,QAAQ;SACT,CAAC,CAAC;QAGH,IAAI,QAAQ,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACnC,eAAe,CAAC;gBACd,QAAQ;gBACR,SAAS;gBACT,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;gBACd,GAAG;aACJ,CAAC,CAAC;QACL,CAAC;QAED,MAAM,UAAU,GACd,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;QAGjE,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,GAAG,CACtC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAS,EAAE,EAAE;YAC5B,IAAI,UAAU;gBAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;YAEnC,MAAM,UAAU,GAAG,MAAM,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAE1D,OAAO;gBACL,GAAG,IAAI;gBACP,GAAG,UAAU;aACd,CAAC;QACJ,CAAC,CAAC,CACH,CAAC;QAGF,WAAW,CAAC;YACV,GAAG;YACH,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE,2BAA2B;SACrC,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,IAAI,CAAC"}
@@ -1,10 +1,9 @@
1
1
  import type { Request, Response } from "express";
2
- import type { Route, ValidationsObj } from "../types/Collection.ts";
3
- declare const remove: ({ modelName, routeName, routeObj, validationsObj, }: {
2
+ import type { Route } from "../types/Collection.ts";
3
+ declare const remove: ({ modelName, routeName, routeObj, }: {
4
4
  modelName: string;
5
5
  routeObj: Route;
6
6
  routeName: string;
7
- validationsObj: ValidationsObj;
8
7
  }) => (req: Request, res: Response) => Promise<void>;
9
8
  export default remove;
10
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,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGpE,QAAA,MAAM,MAAM,GAAI,qDAKb;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,KAAK,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,cAAc,CAAC;CAChC,MACe,KAAK,OAAO,EAAE,KAAK,QAAQ,KAAG,OAAO,CAAC,IAAI,CA+BzD,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;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"}
@@ -2,25 +2,29 @@ import getParam from "./utils/getParam.js";
2
2
  import getItem from "./utils/getItem.js";
3
3
  import getModel from "../utils/getModel.js";
4
4
  import appResponse from "../utils/response.js";
5
- import authorizeAccess from "./utils/authroizeAccess.js";
6
- import getValidationKey from "../utils/validationKeyError.js";
7
- const remove = ({ modelName, routeName, routeObj, validationsObj, }) => {
5
+ import authorizeAccess from "./utils/authorizeAccess.js";
6
+ import { sanitizeOne } from "../utils/sanitize.js";
7
+ const remove = ({ modelName, routeName, routeObj, }) => {
8
8
  return async (req, res) => {
9
- getValidationKey(routeObj, validationsObj);
10
9
  const id = getParam({ req, routeObj });
11
10
  const item = await getItem({
12
11
  modelName,
13
12
  routeName,
14
13
  _id: id,
15
- routeObj
14
+ routeObj,
16
15
  });
17
16
  authorizeAccess({ routeObj, routeName, item, req });
18
17
  const Model = getModel({ modelName, routeName, routeObj });
19
- await Model.findByIdAndDelete(id);
18
+ const deletedItem = await Model.findByIdAndDelete(id);
19
+ const cleaned = sanitizeOne(deletedItem.toObject(), routeObj);
20
+ const idExcluded = routeObj.mongooseConfigObj?.hiddenFieldsArray?.includes("_id");
21
+ if (idExcluded)
22
+ delete cleaned["_id"];
20
23
  appResponse({
21
24
  res,
22
25
  message: "Item deleted successfully!",
23
26
  statusCode: 202,
27
+ data: cleaned
24
28
  });
25
29
  };
26
30
  };
@@ -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,gBAAgB,MAAM,gCAAgC,CAAC;AAE9D,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,gBAAgB,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;QAG3C,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,KAAK,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;QAGlC,WAAW,CAAC;YACV,GAAG;YACH,OAAO,EAAE,4BAA4B;YACrC,UAAU,EAAE,GAAG;SAChB,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;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,10 +1,9 @@
1
1
  import type { Request, Response } from "express";
2
- import type { Route, ValidationsObj } from "../types/Collection.ts";
3
- declare const removeAll: ({ modelName, routeName, routeObj, validationsObj, }: {
2
+ import type { Route } from "../types/Collection.ts";
3
+ declare const removeAll: ({ modelName, routeName, routeObj, }: {
4
4
  modelName: string;
5
5
  routeName: string;
6
6
  routeObj: Route;
7
- validationsObj: ValidationsObj;
8
7
  }) => (req: Request, res: Response) => Promise<void>;
9
8
  export default removeAll;
10
9
  //# sourceMappingURL=removeAll.d.ts.map
@@ -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,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAMpE,QAAA,MAAM,SAAS,GAAI,qDAKhB;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,CAmCzD,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,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,CAgCzD,CAAC;AAEF,eAAe,SAAS,CAAC"}
@@ -1,12 +1,10 @@
1
1
  import getModel from "../utils/getModel.js";
2
2
  import appResponse from "../utils/response.js";
3
- import authorizeAccess from "./utils/authroizeAccess.js";
3
+ import authorizeAccess from "./utils/authorizeAccess.js";
4
4
  import AppError from "../utils/AppError.js";
5
- import getValidationKey from "../utils/validationKeyError.js";
6
5
  import getErrorDetail from "../utils/getErrorDetail.js";
7
- const removeAll = ({ modelName, routeName, routeObj, validationsObj, }) => {
6
+ const removeAll = ({ modelName, routeName, routeObj, }) => {
8
7
  return async (req, res) => {
9
- getValidationKey(routeObj, validationsObj);
10
8
  authorizeAccess({ routeObj, routeName, req });
11
9
  const Model = getModel({ modelName, routeName, routeObj });
12
10
  const result = await Model.deleteMany({});
@@ -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,gBAAgB,MAAM,gCAAgC,CAAC;AAC9D,OAAO,cAAc,MAAM,4BAA4B,CAAC;AAGxD,MAAM,SAAS,GAAG,CAAC,EACjB,SAAS,EACT,SAAS,EACT,QAAQ,EACR,cAAc,GAMf,EAAE,EAAE;IACH,OAAO,KAAK,EAAE,GAAY,EAAE,GAAa,EAAiB,EAAE;QAE1D,gBAAgB,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;QAG3C,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,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,WAAW,CAAC;YACV,GAAG;YACH,IAAI,EAAE;gBACJ,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;AAGxD,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,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,WAAW,CAAC;YACV,GAAG;YACH,IAAI,EAAE;gBACJ,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,6 +1,6 @@
1
1
  import getModel from "../utils/getModel.js";
2
2
  import appResponse from "../utils/response.js";
3
- import authorizeAccess from "./utils/authroizeAccess.js";
3
+ import authorizeAccess from "./utils/authorizeAccess.js";
4
4
  import AppError from "../utils/AppError.js";
5
5
  import getValidationKey from "../utils/validationKeyError.js";
6
6
  import getErrorDetail from "../utils/getErrorDetail.js";
@@ -0,0 +1,4 @@
1
+ import type { Route } from "../../types/Collection.js";
2
+ declare const handleDecryption: (item: any, routeObj: Route) => Promise<Record<string, string> | undefined>;
3
+ export default handleDecryption;
4
+ //# sourceMappingURL=handleDecryption.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handleDecryption.d.ts","sourceRoot":"","sources":["../../../../src/js/crud/security/handleDecryption.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAKvD,QAAA,MAAM,gBAAgB,GAAU,MAAM,GAAG,EAAE,UAAU,KAAK,gDAiEzD,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
@@ -0,0 +1,59 @@
1
+ import { unSeal } from "../../utils/libsodium.js";
2
+ import AppError from "../../utils/AppError.js";
3
+ import getErrorDetail from "../../utils/getErrorDetail.js";
4
+ const handleDecryption = async (item, routeObj) => {
5
+ const decArr = routeObj.decryptedFieldsArray;
6
+ if (!decArr)
7
+ return;
8
+ if (!Array.isArray(decArr)) {
9
+ throw new AppError({
10
+ details: getErrorDetail(routeObj),
11
+ hint: "decryptedFieldsArray must be an array of field names.",
12
+ message: "Decryption configuration is invalid.",
13
+ statusCode: 409,
14
+ });
15
+ }
16
+ if (!decArr.length) {
17
+ throw new AppError({
18
+ details: getErrorDetail(routeObj),
19
+ hint: "Add at least one field name to decryptedFieldsArray.",
20
+ message: "Decryption configuration is empty.",
21
+ statusCode: 409,
22
+ });
23
+ }
24
+ const decrypted = {};
25
+ for (let field of decArr) {
26
+ const optional = field.endsWith("?");
27
+ field = optional ? field.slice(0, -1) : field;
28
+ if (!Object.hasOwn(item, field))
29
+ if (optional) {
30
+ continue;
31
+ }
32
+ else {
33
+ throw new AppError({
34
+ details: getErrorDetail(routeObj),
35
+ hint: `Make sure '${field}' is found in the item: ${item._id}. If '${field}' is not found in some items, make it ${field}?`,
36
+ message: `The required field '${field}' is missing is to decrypt.`,
37
+ statusCode: 400,
38
+ });
39
+ }
40
+ const { str, nonce, publicKey, securedPrivateKey } = item[field];
41
+ if (!str || !nonce || !publicKey || !securedPrivateKey)
42
+ throw new AppError({
43
+ details: getErrorDetail(routeObj),
44
+ hint: "str, nonce, publicKey and securedPrivateKey all are required to decrypt the string",
45
+ message: "Essentials missing for decryption",
46
+ statusCode: 404,
47
+ });
48
+ decrypted[field] = await unSeal({
49
+ str,
50
+ nonce,
51
+ publicKey,
52
+ securedPrivateKey,
53
+ routeObj,
54
+ });
55
+ }
56
+ return decrypted;
57
+ };
58
+ export default handleDecryption;
59
+ //# sourceMappingURL=handleDecryption.js.map
@@ -0,0 +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"}
@@ -0,0 +1,5 @@
1
+ import type { Route } from "../../types/Collection.js";
2
+ import type { SealResult } from "../../utils/libsodium.js";
3
+ declare const handleEncryption: (body: any, routeObj: Route) => Promise<Record<string, SealResult> | undefined>;
4
+ export default handleEncryption;
5
+ //# sourceMappingURL=handleEncryption.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handleEncryption.d.ts","sourceRoot":"","sources":["../../../../src/js/crud/security/handleEncryption.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAIvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAE3D,QAAA,MAAM,gBAAgB,GAAU,MAAM,GAAG,EAAE,UAAU,KAAK,oDAiDzD,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
@@ -0,0 +1,45 @@
1
+ import AppError from "../../utils/AppError.js";
2
+ import getErrorDetail from "../../utils/getErrorDetail.js";
3
+ import { seal } from "../../utils/libsodium.js";
4
+ const handleEncryption = async (body, routeObj) => {
5
+ const encArr = routeObj.encryptedFieldsArray;
6
+ if (!encArr)
7
+ return;
8
+ if (!Array.isArray(encArr)) {
9
+ throw new AppError({
10
+ details: getErrorDetail(routeObj),
11
+ hint: "encryptedFieldsArray must be an array of field names.",
12
+ message: "Encryption configuration is invalid.",
13
+ statusCode: 409,
14
+ });
15
+ }
16
+ if (!encArr.length) {
17
+ throw new AppError({
18
+ details: getErrorDetail(routeObj),
19
+ hint: "Add at least one field name to encryptedFieldsArray.",
20
+ message: "Encryption configuration is empty.",
21
+ statusCode: 409,
22
+ });
23
+ }
24
+ const encrypted = {};
25
+ for (let field of encArr) {
26
+ const optional = field.endsWith("?");
27
+ field = optional ? field.slice(0, -1) : field;
28
+ if (!Object.hasOwn(body, field))
29
+ if (optional) {
30
+ continue;
31
+ }
32
+ else {
33
+ throw new AppError({
34
+ details: getErrorDetail(routeObj),
35
+ hint: `Make sure '${field}' is included in the request body.`,
36
+ message: `The required field '${field}' is missing to encrypt.`,
37
+ statusCode: 400,
38
+ });
39
+ }
40
+ encrypted[field] = await seal(body[field], routeObj);
41
+ }
42
+ return encrypted;
43
+ };
44
+ export default handleEncryption;
45
+ //# sourceMappingURL=handleEncryption.js.map
@@ -0,0 +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"}
@@ -0,0 +1,4 @@
1
+ import type { Route } from "../../types/Collection.js";
2
+ declare const handleHashing: (body: any, routeObj: Route) => Promise<Record<string, string> | undefined>;
3
+ export default handleHashing;
4
+ //# sourceMappingURL=handleHashing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handleHashing.d.ts","sourceRoot":"","sources":["../../../../src/js/crud/security/handleHashing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAKvD,QAAA,MAAM,aAAa,GAAU,MAAM,GAAG,EAAE,UAAU,KAAK,gDA4DtD,CAAC;AAEF,eAAe,aAAa,CAAC"}
@@ -0,0 +1,52 @@
1
+ import AppError from "../../utils/AppError.js";
2
+ import getErrorDetail from "../../utils/getErrorDetail.js";
3
+ import { hash } from "../../utils/libsodium.js";
4
+ const handleHashing = async (body, routeObj) => {
5
+ const hashArr = routeObj.hashedFieldsArray;
6
+ if (!hashArr)
7
+ return;
8
+ if (!Array.isArray(hashArr)) {
9
+ throw new AppError({
10
+ details: getErrorDetail(routeObj),
11
+ hint: "hashedFieldsArray must be an array of field names.",
12
+ message: "Hashing configuration is invalid.",
13
+ statusCode: 409,
14
+ });
15
+ }
16
+ if (!hashArr.length) {
17
+ throw new AppError({
18
+ details: getErrorDetail(routeObj),
19
+ hint: "Add at least one field name to hashedFieldsArray.",
20
+ message: "Hashing configuration is empty.",
21
+ statusCode: 409,
22
+ });
23
+ }
24
+ const hashed = {};
25
+ for (let field of hashArr) {
26
+ const optional = field.endsWith("?");
27
+ field = optional ? field.slice(0, -1) : field;
28
+ if (!Object.hasOwn(body, field)) {
29
+ if (optional) {
30
+ continue;
31
+ }
32
+ throw new AppError({
33
+ details: getErrorDetail(routeObj),
34
+ hint: `Make sure '${field}' is included in the request body.`,
35
+ message: `The required field '${field}' is missing to hash.`,
36
+ statusCode: 400,
37
+ });
38
+ }
39
+ if (typeof body[field] !== "string") {
40
+ throw new AppError({
41
+ details: getErrorDetail(routeObj),
42
+ hint: `The field '${field}' must contain a string value.`,
43
+ message: `The field '${field}' is not allowed for hashing. Only strings can be hashed.`,
44
+ statusCode: 400,
45
+ });
46
+ }
47
+ hashed[field] = await hash(body[field], routeObj);
48
+ }
49
+ return hashed;
50
+ };
51
+ export default handleHashing;
52
+ //# sourceMappingURL=handleHashing.js.map
@@ -0,0 +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"}
@@ -0,0 +1,4 @@
1
+ import type { Route } from "../../types/Collection.ts";
2
+ declare const handleHashing: (body: any, routeObj: Route) => Promise<Record<string, string> | undefined>;
3
+ export default handleHashing;
4
+ //# sourceMappingURL=handleHasing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handleHasing.d.ts","sourceRoot":"","sources":["../../../../src/js/crud/security/handleHasing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAKvD,QAAA,MAAM,aAAa,GAAU,MAAM,GAAG,EAAE,UAAU,KAAK,gDA4DtD,CAAC;AAEF,eAAe,aAAa,CAAC"}
@@ -0,0 +1,52 @@
1
+ import AppError from "../../utils/AppError.js";
2
+ import getErrorDetail from "../../utils/getErrorDetail.js";
3
+ import { hash } from "../../utils/libsodium.js";
4
+ const handleHashing = async (body, routeObj) => {
5
+ const hashArr = routeObj.hashedFieldsArray;
6
+ if (!hashArr)
7
+ return;
8
+ if (!Array.isArray(hashArr)) {
9
+ throw new AppError({
10
+ details: getErrorDetail(routeObj),
11
+ hint: "hashedFieldsArray must be an array of field names.",
12
+ message: "Hashing configuration is invalid.",
13
+ statusCode: 409,
14
+ });
15
+ }
16
+ if (!hashArr.length) {
17
+ throw new AppError({
18
+ details: getErrorDetail(routeObj),
19
+ hint: "Add at least one field name to hashedFieldsArray.",
20
+ message: "Hashing configuration is empty.",
21
+ statusCode: 409,
22
+ });
23
+ }
24
+ const hashed = {};
25
+ for (let field of hashArr) {
26
+ const optional = field.endsWith("?");
27
+ field = optional ? field.slice(0, -1) : field;
28
+ if (!Object.hasOwn(body, field)) {
29
+ if (optional) {
30
+ continue;
31
+ }
32
+ throw new AppError({
33
+ details: getErrorDetail(routeObj),
34
+ hint: `Make sure '${field}' is included in the request body.`,
35
+ message: `The required field '${field}' is missing to hash.`,
36
+ statusCode: 400,
37
+ });
38
+ }
39
+ if (typeof body[field] !== "string") {
40
+ throw new AppError({
41
+ details: getErrorDetail(routeObj),
42
+ hint: `The field '${field}' must contain a string value.`,
43
+ message: `The field '${field}' is not allowed for hashing. Only strings can be hashed.`,
44
+ statusCode: 400,
45
+ });
46
+ }
47
+ hashed[field] = await hash(body[field], routeObj);
48
+ }
49
+ return hashed;
50
+ };
51
+ export default handleHashing;
52
+ //# sourceMappingURL=handleHasing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handleHasing.js","sourceRoot":"","sources":["../../../../src/js/crud/security/handleHasing.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 +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;AAUpE,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,CAoCzD,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;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"}
@@ -4,8 +4,10 @@ import validate from "../utils/validate.js";
4
4
  import getModel from "../utils/getModel.js";
5
5
  import { sanitizeOne } from "../utils/sanitize.js";
6
6
  import appResponse from "../utils/response.js";
7
- import authorizeAccess from "./utils/authroizeAccess.js";
7
+ import authorizeAccess from "./utils/authorizeAccess.js";
8
8
  import getValidationKey from "../utils/validationKeyError.js";
9
+ import handleEncryption from "./encryption/handleEncryption.js";
10
+ import handleHashing from "./security/handleHashing.js";
9
11
  const update = ({ modelName, routeName, routeObj, validationsObj, }) => {
10
12
  return async (req, res) => {
11
13
  const validationObj = getValidationKey(routeObj, validationsObj);
@@ -15,16 +17,22 @@ const update = ({ modelName, routeName, routeObj, validationsObj, }) => {
15
17
  modelName,
16
18
  routeName,
17
19
  _id: id,
18
- routeObj
20
+ routeObj,
19
21
  });
20
22
  authorizeAccess({ item, req, routeObj, routeName });
23
+ const encryptedFields = await handleEncryption(req.body, routeObj);
24
+ const hashedFields = await handleHashing(req.body, routeObj);
21
25
  const Model = getModel({ modelName, routeName, routeObj });
22
- const updatedItem = await Model.findByIdAndUpdate(id, body, {
26
+ const updatedItem = await Model.findByIdAndUpdate(id, { ...body, ...encryptedFields, ...hashedFields }, {
23
27
  returnDocument: "after",
24
28
  });
29
+ const cleaned = sanitizeOne(updatedItem.toObject(), routeObj);
30
+ const idExcluded = routeObj.mongooseConfigObj?.hiddenFieldsArray?.includes("_id");
31
+ if (idExcluded)
32
+ delete cleaned["_id"];
25
33
  appResponse({
26
34
  res,
27
- data: sanitizeOne(updatedItem.toObject(), routeObj),
35
+ data: cleaned,
28
36
  message: "Item updated successfully!",
29
37
  });
30
38
  };
@@ -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;AAE9D,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,KAAK,GAAG,QAAQ,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;QAG3D,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,iBAAiB,CAAC,EAAE,EAAE,IAAI,EAAE;YAC1D,cAAc,EAAE,OAAO;SACxB,CAAC,CAAC;QAGH,WAAW,CAAC;YACV,GAAG;YACH,IAAI,EAAE,WAAW,CAAC,WAAY,CAAC,QAAQ,EAAE,EAAE,QAAQ,CAAC;YACpD,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;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"}
@@ -0,0 +1,10 @@
1
+ import type { Request } from "express";
2
+ import type { Route } from "../../types/Collection.js";
3
+ declare const authorizeAccess: ({ routeObj, routeName, item, req, }: {
4
+ routeObj: Route;
5
+ routeName: string;
6
+ item?: any;
7
+ req: Request;
8
+ }) => void;
9
+ export default authorizeAccess;
10
+ //# sourceMappingURL=authorizeAccess.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,46 @@
1
+ import AppError from "../../utils/AppError.js";
2
+ import AppLog from "../../utils/AppLog.js";
3
+ import getErrorDetail from "../../utils/getErrorDetail.js";
4
+ const authorizeAccess = ({ routeObj, routeName, item, req, }) => {
5
+ if (routeObj.authRole !== "admin" && routeObj.authRole !== "adminOrOwner")
6
+ throw new AppError({
7
+ message: "authRole should only be 'admin' or 'adminOrOwner'",
8
+ statusCode: 409,
9
+ hint: "Make the authRole admin or adminOrOwner based on your routeObj requirement. Checkout collection -> routes -> authRole",
10
+ details: getErrorDetail(routeObj),
11
+ });
12
+ if (routeObj.authRole !== "admin" && routeObj.handler === "removeAll")
13
+ throw new AppError({
14
+ message: "authRole should only be 'admin'",
15
+ statusCode: 409,
16
+ hint: "Make the authRole admin. Checkout collection -> routes -> authRole",
17
+ details: getErrorDetail(routeObj),
18
+ });
19
+ const ownerId = routeObj.ownerShip === "self" ? item._id : item?.owner?._id;
20
+ const isOwner = !!ownerId && !!req.user && ownerId.equals(req.user._id);
21
+ const isAdmin = req.user.role === "admin";
22
+ if (!ownerId) {
23
+ 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}'`);
25
+ }
26
+ if (routeObj.authRole === "admin") {
27
+ if (!isAdmin)
28
+ throw new AppError({
29
+ message: "Unauthorized",
30
+ statusCode: 403,
31
+ hint: "You are not the admin. If this route doesn\'t have owner, use ownerShip: 'self' in routesArray -> route.",
32
+ details: getErrorDetail(routeObj),
33
+ });
34
+ }
35
+ if (routeObj.authRole === "adminOrOwner") {
36
+ if (!isAdmin && !isOwner)
37
+ throw new AppError({
38
+ message: "Unauthorized",
39
+ statusCode: 403,
40
+ hint: "You are not the owner. If this route doesn\'t have owner, use ownerShip: 'self' in routesArray -> route.",
41
+ details: getErrorDetail(routeObj),
42
+ });
43
+ }
44
+ };
45
+ export default authorizeAccess;
46
+ //# sourceMappingURL=authorizeAccess.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authorizeAccess.js","sourceRoot":"","sources":["../../../../src/js/crud/utils/authorizeAccess.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AAE/C,OAAO,MAAM,MAAM,uBAAuB,CAAC;AAC3C,OAAO,cAAc,MAAM,+BAA+B,CAAC;AAE3D,MAAM,eAAe,GAAG,CAAC,EACvB,QAAQ,EACR,SAAS,EACT,IAAI,EACJ,GAAG,GAMJ,EAAE,EAAE;IAEH,IAAI,QAAQ,CAAC,QAAQ,KAAK,OAAO,IAAI,QAAQ,CAAC,QAAQ,KAAK,cAAc;QACvE,MAAM,IAAI,QAAQ,CAAC;YACjB,OAAO,EAAE,mDAAmD;YAC5D,UAAU,EAAE,GAAG;YACf,IAAI,EAAE,uHAAuH;YAC7H,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC;SAClC,CAAC,CAAC;IAGL,IAAI,QAAQ,CAAC,QAAQ,KAAK,OAAO,IAAI,QAAQ,CAAC,OAAO,KAAK,WAAW;QACnE,MAAM,IAAI,QAAQ,CAAC;YACjB,OAAO,EAAE,iCAAiC;YAC1C,UAAU,EAAE,GAAG;YACf,IAAI,EAAE,oEAAoE;YAC1E,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC;SAClC,CAAC,CAAC;IAGL,MAAM,OAAO,GAAG,QAAQ,CAAC,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC;IAC5E,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxE,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC;IAG1C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,CAAC,GAAG,EAAE,eAAe,EAAE,0BAA0B,CAAC,CAAC;QACzD,MAAM,CACJ,MAAM,EACN,eAAe,EACf,gGAAgG,SAAS,eAAe,QAAQ,CAAC,MAAM,gBAAgB,QAAQ,CAAC,IAAI,GAAG,CACxK,CAAC;IACJ,CAAC;IAGD,IAAI,QAAQ,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QAClC,IAAI,CAAC,OAAO;YACV,MAAM,IAAI,QAAQ,CAAC;gBACjB,OAAO,EAAE,cAAc;gBACvB,UAAU,EAAE,GAAG;gBACf,IAAI,EAAE,0GAA0G;gBAChH,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC;aAClC,CAAC,CAAC;IACP,CAAC;IAGD,IAAI,QAAQ,CAAC,QAAQ,KAAK,cAAc,EAAE,CAAC;QACzC,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO;YACtB,MAAM,IAAI,QAAQ,CAAC;gBACjB,OAAO,EAAE,cAAc;gBACvB,UAAU,EAAE,GAAG;gBACf,IAAI,EAAE,0GAA0G;gBAChH,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC;aAClC,CAAC,CAAC;IACP,CAAC;AACH,CAAC,CAAC;AAEF,eAAe,eAAe,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"authroizeAccess.d.ts","sourceRoot":"","sources":["../../../../src/js/crud/utils/authroizeAccess.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,SAqDA,CAAC;AAEF,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"authroizeAccess.d.ts","sourceRoot":"","sources":["../../../../src/js/crud/utils/authroizeAccess.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,SA2DA,CAAC;AAEF,eAAe,eAAe,CAAC"}
@@ -19,8 +19,10 @@ const authorizeAccess = ({ routeObj, routeName, item, req, }) => {
19
19
  const ownerId = routeObj.ownerShip === "self" ? item._id : item?.owner?._id;
20
20
  const isOwner = !!ownerId && !!req.user && ownerId.equals(req.user._id);
21
21
  const isAdmin = req.user.role === "admin";
22
- if (!ownerId)
23
- AppLog("warn", "authorization", `owner not found in item for routeObj: '/${routeName}', method: '${routeObj.method}' and path: '${routeObj.path}'`);
22
+ if (!ownerId) {
23
+ AppLog("x", "authorization", `owner not found in item.`);
24
+ AppLog("warn", "authorization", `If it doesn't have owner, use ownerShip: "self" in routesArray -> route. routeObj: '/${routeName}', method: '${routeObj.method}' and path: '${routeObj.path}'`);
25
+ }
24
26
  if (routeObj.authRole === "admin") {
25
27
  if (!isAdmin)
26
28
  throw new AppError({
@@ -1 +1 @@
1
- {"version":3,"file":"authroizeAccess.js","sourceRoot":"","sources":["../../../../src/js/crud/utils/authroizeAccess.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AAE/C,OAAO,MAAM,MAAM,uBAAuB,CAAC;AAC3C,OAAO,cAAc,MAAM,+BAA+B,CAAC;AAE3D,MAAM,eAAe,GAAG,CAAC,EACvB,QAAQ,EACR,SAAS,EACT,IAAI,EACJ,GAAG,GAMJ,EAAE,EAAE;IAEH,IAAI,QAAQ,CAAC,QAAQ,KAAK,OAAO,IAAI,QAAQ,CAAC,QAAQ,KAAK,cAAc;QACvE,MAAM,IAAI,QAAQ,CAAC;YACjB,OAAO,EAAE,mDAAmD;YAC5D,UAAU,EAAE,GAAG;YACf,IAAI,EAAE,uHAAuH;YAC7H,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC;SAClC,CAAC,CAAC;IAGL,IAAI,QAAQ,CAAC,QAAQ,KAAK,OAAO,IAAI,QAAQ,CAAC,OAAO,KAAK,WAAW;QACnE,MAAM,IAAI,QAAQ,CAAC;YACjB,OAAO,EAAE,iCAAiC;YAC1C,UAAU,EAAE,GAAG;YACf,IAAI,EAAE,oEAAoE;YAC1E,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC;SAClC,CAAC,CAAC;IAGL,MAAM,OAAO,GAAG,QAAQ,CAAC,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC;IAC5E,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxE,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC;IAG1C,IAAI,CAAC,OAAO;QACV,MAAM,CACJ,MAAM,EACN,eAAe,EACf,2CAA2C,SAAS,eAAe,QAAQ,CAAC,MAAM,gBAAgB,QAAQ,CAAC,IAAI,GAAG,CACnH,CAAC;IAGJ,IAAI,QAAQ,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QAClC,IAAI,CAAC,OAAO;YACV,MAAM,IAAI,QAAQ,CAAC;gBACjB,OAAO,EAAE,cAAc;gBACvB,UAAU,EAAE,GAAG;gBACf,IAAI,EAAE,wBAAwB;gBAC9B,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC;aAClC,CAAC,CAAC;IACP,CAAC;IAGD,IAAI,QAAQ,CAAC,QAAQ,KAAK,cAAc,EAAE,CAAC;QACzC,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO;YACtB,MAAM,IAAI,QAAQ,CAAC;gBACjB,OAAO,EAAE,cAAc;gBACvB,UAAU,EAAE,GAAG;gBACf,IAAI,EAAE,wBAAwB;gBAC9B,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC;aAClC,CAAC,CAAC;IACP,CAAC;AACH,CAAC,CAAC;AAEF,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"authroizeAccess.js","sourceRoot":"","sources":["../../../../src/js/crud/utils/authroizeAccess.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AAE/C,OAAO,MAAM,MAAM,uBAAuB,CAAC;AAC3C,OAAO,cAAc,MAAM,+BAA+B,CAAC;AAE3D,MAAM,eAAe,GAAG,CAAC,EACvB,QAAQ,EACR,SAAS,EACT,IAAI,EACJ,GAAG,GAMJ,EAAE,EAAE;IAEH,IAAI,QAAQ,CAAC,QAAQ,KAAK,OAAO,IAAI,QAAQ,CAAC,QAAQ,KAAK,cAAc;QACvE,MAAM,IAAI,QAAQ,CAAC;YACjB,OAAO,EAAE,mDAAmD;YAC5D,UAAU,EAAE,GAAG;YACf,IAAI,EAAE,uHAAuH;YAC7H,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC;SAClC,CAAC,CAAC;IAGL,IAAI,QAAQ,CAAC,QAAQ,KAAK,OAAO,IAAI,QAAQ,CAAC,OAAO,KAAK,WAAW;QACnE,MAAM,IAAI,QAAQ,CAAC;YACjB,OAAO,EAAE,iCAAiC;YAC1C,UAAU,EAAE,GAAG;YACf,IAAI,EAAE,oEAAoE;YAC1E,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC;SAClC,CAAC,CAAC;IAGL,MAAM,OAAO,GAAG,QAAQ,CAAC,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC;IAC5E,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxE,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC;IAG1C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,CACJ,GAAG,EACH,eAAe,EACf,0BAA0B,CAC3B,CAAC;QACF,MAAM,CACJ,MAAM,EACN,eAAe,EACf,wFAAwF,SAAS,eAAe,QAAQ,CAAC,MAAM,gBAAgB,QAAQ,CAAC,IAAI,GAAG,CAChK,CAAC;IACJ,CAAC;IAGD,IAAI,QAAQ,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QAClC,IAAI,CAAC,OAAO;YACV,MAAM,IAAI,QAAQ,CAAC;gBACjB,OAAO,EAAE,cAAc;gBACvB,UAAU,EAAE,GAAG;gBACf,IAAI,EAAE,wBAAwB;gBAC9B,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC;aAClC,CAAC,CAAC;IACP,CAAC;IAGD,IAAI,QAAQ,CAAC,QAAQ,KAAK,cAAc,EAAE,CAAC;QACzC,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO;YACtB,MAAM,IAAI,QAAQ,CAAC;gBACjB,OAAO,EAAE,cAAc;gBACvB,UAAU,EAAE,GAAG;gBACf,IAAI,EAAE,wBAAwB;gBAC9B,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC;aAClC,CAAC,CAAC;IACP,CAAC;AACH,CAAC,CAAC;AAEF,eAAe,eAAe,CAAC"}
@@ -56,7 +56,7 @@ const getItem = async ({ modelName, routeName, path, _id, clean = true, routeObj
56
56
  hint: _id
57
57
  ? `Check the '${path ?? "path"}' you provided in url: /${_id}`
58
58
  : "Hit a POST request and create an item",
59
- details: getErrorDetail(routeObj),
59
+ details: getErrorDetail(routeObj, modelName),
60
60
  });
61
61
  }
62
62
  if (clean) {
@@ -1 +1 @@
1
- {"version":3,"file":"getItem.js","sourceRoot":"","sources":["../../../../src/js/crud/utils/getItem.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getItem.js","sourceRoot":"","sources":["../../../../src/js/crud/utils/getItem.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AAC/C,OAAO,cAAc,MAAM,+BAA+B,CAAC;AAC3D,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEpE,MAAM,OAAO,GAAG,KAAK,EAAE,EACrB,SAAS,EACT,SAAS,EACT,IAAI,EACJ,GAAG,EACH,KAAK,GAAG,IAAI,EACZ,QAAQ,GAQT,EAAE,EAAE;IAEH,MAAM,KAAK,GAAG,QAAQ,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;IAG3D,IAAI,IAAI,GAAQ,IAAI,CAAC;IAErB,IAAI,CAAC;QACH,IAAI,KAAK,CAAC;QAGV,IAAI,GAAG,EAAE,CAAC;YACR,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC9B,CAAC;aAAM,CAAC;YACN,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QACvB,CAAC;QAGD,MAAM,WAAW,GAAG,QAAQ,EAAE,iBAAiB,EAAE,WAAW,CAAC;QAC7D,IAAI,WAAW,EAAE,CAAC;YAChB,IAAI,OAAO,WAAW,KAAK,SAAS;gBAClC,MAAM,IAAI,QAAQ,CAAC;oBACjB,IAAI,EAAE,wHAAwH;oBAC9H,OAAO,EAAE,qBAAqB;oBAC9B,UAAU,EAAE,GAAG;oBACf,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC;iBAClC,CAAC,CAAC;YACL,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,WAAqB,EAAE,WAAW,CAAC,CAAC;QAC7D,CAAC;QAED,IAAI,GAAG,MAAM,KAAK,CAAC;IACrB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAEf,MAAM,GAAG,GAAI,KAAe,CAAC,OAAO,CAAC;QAErC,IAAI,GAAG,CAAC,QAAQ,CAAC,yBAAyB,CAAC,EAAE,CAAC;YAC5C,MAAM,IAAI,QAAQ,CAAC;gBACjB,OAAO,EAAE,sBAAsB;gBAC/B,UAAU,EAAE,GAAG;gBACf,IAAI,EAAE,sFAAsF;gBAC5F,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC;aAClC,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YAEN,MAAM,GAAG,GAAG,KAAiB,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACjB,MAAM,IAAI,QAAQ,CAAC;gBACjB,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,6BAA6B;gBACrD,UAAU,EAAE,GAAG,CAAC,UAAU,IAAI,GAAG;gBACjC,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,iBAAiB;gBACnC,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,iCAAiC;gBACnD,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,cAAc,CAAC,QAAQ,CAAC;aACjD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAGD,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC;IAExE,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,IAAI,QAAQ,CAAC;YACjB,OAAO,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,YAAY;YAC7C,UAAU,EAAE,GAAG;YACf,IAAI,EAAE,GAAG;gBACP,CAAC,CAAC,cAAc,IAAI,IAAI,MAAM,2BAA2B,GAAG,EAAE;gBAC9D,CAAC,CAAC,uCAAuC;YAC3C,OAAO,EAAE,cAAc,CAAC,QAAQ,EAAE,SAAS,CAAC;SAC7C,CAAC,CAAC;IACL,CAAC;IAED,IAAI,KAAK,EAAE,CAAC;QACV,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;YACxB,CAAC,CAAC,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC;YAC9B,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,QAAQ,CAAC,CAAC;IAC7C,CAAC;IAGD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,eAAe,OAAO,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import type { Constructor } from "./types/Constructor.ts";
2
2
  import type { Collection } from "./types/Collection.ts";
3
+ import type { Route } from "./types/Collection.ts";
3
4
  declare class StarkForge {
4
5
  config: Constructor;
5
6
  constructor(object: Partial<Constructor>);
@@ -12,5 +13,6 @@ export { generateJWTSecret, generateMasterKey } from "./utils/libsodium.js";
12
13
  export { default as getModel } from "./utils/getModel.js";
13
14
  export { default as getItem } from "./crud/utils/getItem.js";
14
15
  export declare const collection: (object: Collection) => Collection;
16
+ export declare const defineRoutes: (array: Route[]) => Route[];
15
17
  export default StarkForge;
16
18
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/js/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAIxD,cAAM,UAAU;IACd,MAAM,EAAE,WAAW,CAAC;gBACR,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC;CAQzC;AAED,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAE7D,eAAO,MAAM,UAAU,GAAI,QAAQ,UAAU,KAAG,UAE/C,CAAC;AAEF,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/js/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAInD,cAAM,UAAU;IACd,MAAM,EAAE,WAAW,CAAC;gBACR,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC;CAQzC;AAED,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAE7D,eAAO,MAAM,UAAU,GAAI,QAAQ,UAAU,KAAG,UAE/C,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,OAAO,KAAK,EAAE,YAE1C,CAAA;AAED,eAAe,UAAU,CAAC"}