@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.
- package/dist/js/account/index.d.ts +1 -1
- package/dist/js/account/index.d.ts.map +1 -1
- package/dist/js/account/index.js +14 -7
- package/dist/js/account/index.js.map +1 -1
- package/dist/js/account/me.delete.d.ts +2 -2
- package/dist/js/account/me.delete.d.ts.map +1 -1
- package/dist/js/account/me.delete.js +15 -6
- package/dist/js/account/me.delete.js.map +1 -1
- package/dist/js/account/me.update.d.ts +3 -3
- package/dist/js/account/me.update.d.ts.map +1 -1
- package/dist/js/account/me.update.js +20 -7
- package/dist/js/account/me.update.js.map +1 -1
- package/dist/js/app.js +21 -8
- package/dist/js/app.js.map +1 -1
- package/dist/js/auth/builtin/auth.collection.js +11 -11
- package/dist/js/auth/builtin/auth.collection.js.map +1 -1
- package/dist/js/auth/forgotPassword.d.ts +4 -4
- package/dist/js/auth/forgotPassword.d.ts.map +1 -1
- package/dist/js/auth/forgotPassword.js +12 -6
- package/dist/js/auth/forgotPassword.js.map +1 -1
- package/dist/js/auth/index.d.ts +1 -1
- package/dist/js/auth/index.d.ts.map +1 -1
- package/dist/js/auth/index.js +16 -8
- package/dist/js/auth/index.js.map +1 -1
- package/dist/js/auth/login.d.ts +4 -4
- package/dist/js/auth/login.d.ts.map +1 -1
- package/dist/js/auth/login.js +8 -4
- package/dist/js/auth/login.js.map +1 -1
- package/dist/js/auth/logout.js +6 -1
- package/dist/js/auth/logout.js.map +1 -1
- package/dist/js/auth/refresh.js +9 -0
- package/dist/js/auth/refresh.js.map +1 -1
- package/dist/js/auth/resendOTP.d.ts +4 -4
- package/dist/js/auth/resendOTP.d.ts.map +1 -1
- package/dist/js/auth/resendOTP.js +14 -4
- package/dist/js/auth/resendOTP.js.map +1 -1
- package/dist/js/auth/resetPassword.d.ts +4 -4
- package/dist/js/auth/resetPassword.d.ts.map +1 -1
- package/dist/js/auth/resetPassword.js +14 -4
- package/dist/js/auth/resetPassword.js.map +1 -1
- package/dist/js/auth/signup.d.ts +4 -4
- package/dist/js/auth/signup.d.ts.map +1 -1
- package/dist/js/auth/signup.js +10 -5
- package/dist/js/auth/signup.js.map +1 -1
- package/dist/js/auth/utils/authenticateUser.d.ts +3 -3
- package/dist/js/auth/utils/authenticateUser.d.ts.map +1 -1
- package/dist/js/auth/utils/authenticateUser.js +13 -3
- package/dist/js/auth/utils/authenticateUser.js.map +1 -1
- package/dist/js/auth/utils/createOTPModel.d.ts +1 -1
- package/dist/js/auth/utils/createOTPModel.d.ts.map +1 -1
- package/dist/js/auth/utils/createOTPModel.js +8 -3
- package/dist/js/auth/utils/createOTPModel.js.map +1 -1
- package/dist/js/auth/utils/createOTPUser.d.ts +3 -3
- package/dist/js/auth/utils/createOTPUser.d.ts.map +1 -1
- package/dist/js/auth/utils/createOTPUser.js +11 -3
- package/dist/js/auth/utils/createOTPUser.js.map +1 -1
- package/dist/js/auth/utils/createUser.d.ts +3 -3
- package/dist/js/auth/utils/createUser.d.ts.map +1 -1
- package/dist/js/auth/utils/createUser.js +12 -2
- package/dist/js/auth/utils/createUser.js.map +1 -1
- package/dist/js/auth/utils/findRefreshToken.js +5 -1
- package/dist/js/auth/utils/findRefreshToken.js.map +1 -1
- package/dist/js/auth/utils/findRefreshTokenUser.js +1 -0
- package/dist/js/auth/utils/findRefreshTokenUser.js.map +1 -1
- package/dist/js/auth/utils/getOTPUser.js +3 -0
- package/dist/js/auth/utils/getOTPUser.js.map +1 -1
- package/dist/js/auth/utils/getUser.d.ts +3 -3
- package/dist/js/auth/utils/getUser.d.ts.map +1 -1
- package/dist/js/auth/utils/getUser.js +6 -2
- package/dist/js/auth/utils/getUser.js.map +1 -1
- package/dist/js/auth/utils/handleRefreshTokenValidation.js +7 -1
- package/dist/js/auth/utils/handleRefreshTokenValidation.js.map +1 -1
- package/dist/js/auth/utils/handleRotateRefreshToken.js +7 -1
- package/dist/js/auth/utils/handleRotateRefreshToken.js.map +1 -1
- package/dist/js/auth/utils/modeMap.d.ts +12 -12
- package/dist/js/auth/utils/otpVerifiedResponse.js +1 -0
- package/dist/js/auth/utils/otpVerifiedResponse.js.map +1 -1
- package/dist/js/auth/utils/sendCookie.js +10 -0
- package/dist/js/auth/utils/sendCookie.js.map +1 -1
- package/dist/js/auth/utils/verifyCredentials.d.ts +3 -3
- package/dist/js/auth/utils/verifyCredentials.d.ts.map +1 -1
- package/dist/js/auth/utils/verifyCredentials.js +8 -6
- package/dist/js/auth/utils/verifyCredentials.js.map +1 -1
- package/dist/js/auth/verifyOTP.d.ts +4 -4
- package/dist/js/auth/verifyOTP.d.ts.map +1 -1
- package/dist/js/auth/verifyOTP.js +18 -5
- package/dist/js/auth/verifyOTP.js.map +1 -1
- package/dist/js/config/cloudinary.js +1 -0
- package/dist/js/config/cloudinary.js.map +1 -1
- package/dist/js/config/duration.js +7 -0
- package/dist/js/config/duration.js.map +1 -1
- package/dist/js/config/envs.js +23 -3
- package/dist/js/config/envs.js.map +1 -1
- package/dist/js/config/handleReqType.d.ts +1 -1
- package/dist/js/config/handleReqType.d.ts.map +1 -1
- package/dist/js/config/handleReqType.js +4 -3
- package/dist/js/config/handleReqType.js.map +1 -1
- package/dist/js/config/handlerMap.js +4 -0
- package/dist/js/config/handlerMap.js.map +1 -1
- package/dist/js/config/refreshModel.js +1 -0
- package/dist/js/config/refreshModel.js.map +1 -1
- package/dist/js/config/sendEmail.js +1 -0
- package/dist/js/config/sendEmail.js.map +1 -1
- package/dist/js/crud/bunch.crud.js +2 -0
- package/dist/js/crud/bunch.crud.js.map +1 -1
- package/dist/js/crud/create.d.ts +4 -4
- package/dist/js/crud/create.d.ts.map +1 -1
- package/dist/js/crud/create.js +23 -8
- package/dist/js/crud/create.js.map +1 -1
- package/dist/js/crud/createBulk.d.ts +4 -4
- package/dist/js/crud/createBulk.d.ts.map +1 -1
- package/dist/js/crud/createBulk.js +8 -3
- package/dist/js/crud/createBulk.js.map +1 -1
- package/dist/js/crud/email/index.d.ts +2 -0
- package/dist/js/crud/email/index.d.ts.map +1 -0
- package/dist/js/crud/email/index.js +2 -0
- package/dist/js/crud/email/index.js.map +1 -0
- package/dist/js/crud/encryption/handleDecryption.js +8 -3
- package/dist/js/crud/encryption/handleDecryption.js.map +1 -1
- package/dist/js/crud/encryption/handleEncryption.js +7 -3
- package/dist/js/crud/encryption/handleEncryption.js.map +1 -1
- package/dist/js/crud/handleUploads/file.add.d.ts +4 -4
- package/dist/js/crud/handleUploads/file.add.d.ts.map +1 -1
- package/dist/js/crud/handleUploads/file.add.js +16 -9
- package/dist/js/crud/handleUploads/file.add.js.map +1 -1
- package/dist/js/crud/handleUploads/file.delete.d.ts +4 -4
- package/dist/js/crud/handleUploads/file.delete.d.ts.map +1 -1
- package/dist/js/crud/handleUploads/file.delete.js +14 -5
- package/dist/js/crud/handleUploads/file.delete.js.map +1 -1
- package/dist/js/crud/handleUploads/file.update.d.ts +4 -4
- package/dist/js/crud/handleUploads/file.update.d.ts.map +1 -1
- package/dist/js/crud/handleUploads/file.update.js +15 -5
- package/dist/js/crud/handleUploads/file.update.js.map +1 -1
- package/dist/js/crud/index.d.ts +1 -1
- package/dist/js/crud/index.d.ts.map +1 -1
- package/dist/js/crud/index.js +18 -11
- package/dist/js/crud/index.js.map +1 -1
- package/dist/js/crud/read.d.ts +4 -4
- package/dist/js/crud/read.d.ts.map +1 -1
- package/dist/js/crud/read.js +18 -9
- package/dist/js/crud/read.js.map +1 -1
- package/dist/js/crud/readAll.d.ts +3 -3
- package/dist/js/crud/readAll.d.ts.map +1 -1
- package/dist/js/crud/readAll.js +16 -8
- package/dist/js/crud/readAll.js.map +1 -1
- package/dist/js/crud/remove.d.ts +3 -3
- package/dist/js/crud/remove.d.ts.map +1 -1
- package/dist/js/crud/remove.js +19 -8
- package/dist/js/crud/remove.js.map +1 -1
- package/dist/js/crud/removeAll.d.ts +3 -3
- package/dist/js/crud/removeAll.d.ts.map +1 -1
- package/dist/js/crud/removeAll.js +13 -5
- package/dist/js/crud/removeAll.js.map +1 -1
- package/dist/js/crud/removeMultiple.d.ts +4 -4
- package/dist/js/crud/removeMultiple.d.ts.map +1 -1
- package/dist/js/crud/removeMultiple.js +18 -7
- package/dist/js/crud/removeMultiple.js.map +1 -1
- package/dist/js/crud/security/handleDecryption.js +8 -3
- package/dist/js/crud/security/handleDecryption.js.map +1 -1
- package/dist/js/crud/security/handleEncryption.js +7 -3
- package/dist/js/crud/security/handleEncryption.js.map +1 -1
- package/dist/js/crud/security/handleHashing.js +8 -3
- package/dist/js/crud/security/handleHashing.js.map +1 -1
- package/dist/js/crud/update.d.ts +4 -4
- package/dist/js/crud/update.d.ts.map +1 -1
- package/dist/js/crud/update.js +24 -9
- package/dist/js/crud/update.js.map +1 -1
- package/dist/js/crud/utils/authorizeAccess.d.ts +2 -2
- package/dist/js/crud/utils/authorizeAccess.d.ts.map +1 -1
- package/dist/js/crud/utils/authorizeAccess.js +19 -13
- package/dist/js/crud/utils/authorizeAccess.js.map +1 -1
- package/dist/js/crud/utils/getItem.d.ts +3 -3
- package/dist/js/crud/utils/getItem.d.ts.map +1 -1
- package/dist/js/crud/utils/getItem.js +18 -9
- package/dist/js/crud/utils/getItem.js.map +1 -1
- package/dist/js/health/health.collection.js +11 -11
- package/dist/js/health/health.collection.js.map +1 -1
- package/dist/js/health/index.d.ts +1 -1
- package/dist/js/health/index.d.ts.map +1 -1
- package/dist/js/health/index.js +2 -2
- package/dist/js/health/index.js.map +1 -1
- package/dist/js/lib/OAuthProviders.js +1 -1
- package/dist/js/lib/OAuthProviders.js.map +1 -1
- package/dist/js/lib/db.js +1 -0
- package/dist/js/lib/db.js.map +1 -1
- package/dist/js/lib/model.factory.d.ts +10 -1
- package/dist/js/lib/model.factory.d.ts.map +1 -1
- package/dist/js/lib/model.factory.js +18 -4
- package/dist/js/lib/model.factory.js.map +1 -1
- package/dist/js/lib/model.registry.js +1 -0
- package/dist/js/lib/model.registry.js.map +1 -1
- package/dist/js/lib/mongoose.fields.js +20 -0
- package/dist/js/lib/mongoose.fields.js.map +1 -1
- package/dist/js/lib/schema.builder.js +3 -0
- package/dist/js/lib/schema.builder.js.map +1 -1
- package/dist/js/lib/unified.fields.d.ts +5 -0
- package/dist/js/lib/unified.fields.d.ts.map +1 -1
- package/dist/js/lib/unified.fields.js +56 -0
- package/dist/js/lib/unified.fields.js.map +1 -1
- package/dist/js/lib/unified.types.d.ts +3 -0
- package/dist/js/lib/unified.types.d.ts.map +1 -1
- package/dist/js/lib/zod.factory.d.ts +13 -0
- package/dist/js/lib/zod.factory.d.ts.map +1 -1
- package/dist/js/lib/zod.factory.js +14 -0
- package/dist/js/lib/zod.factory.js.map +1 -1
- package/dist/js/lib/zod.fields.d.ts +55 -0
- package/dist/js/lib/zod.fields.d.ts.map +1 -1
- package/dist/js/lib/zod.fields.js +56 -0
- package/dist/js/lib/zod.fields.js.map +1 -1
- package/dist/js/middleware/error.middleware.js +1 -0
- package/dist/js/middleware/error.middleware.js.map +1 -1
- package/dist/js/middleware/multer.middleware.d.ts +1 -1
- package/dist/js/middleware/multer.middleware.d.ts.map +1 -1
- package/dist/js/middleware/multer.middleware.js +22 -7
- package/dist/js/middleware/multer.middleware.js.map +1 -1
- package/dist/js/terminal/appInfo.js +11 -11
- package/dist/js/terminal/appInfo.js.map +1 -1
- package/dist/js/terminal/logger.js +1 -1
- package/dist/js/terminal/logger.js.map +1 -1
- package/dist/js/types/ActionHandler.d.ts +86 -11
- package/dist/js/types/ActionHandler.d.ts.map +1 -1
- package/dist/js/types/Collection.d.ts +104 -15
- package/dist/js/types/Collection.d.ts.map +1 -1
- package/dist/js/types/Constructor.d.ts +1 -1
- package/dist/js/types/Constructor.d.ts.map +1 -1
- package/dist/js/types/Route.d.ts +131 -14
- package/dist/js/types/Route.d.ts.map +1 -1
- package/dist/js/types/Routepath.js +15 -0
- package/dist/js/types/Routepath.js.map +1 -1
- package/dist/js/types/email.js +13 -0
- package/dist/js/types/email.js.map +1 -1
- package/dist/js/types/upload.d.ts +57 -5
- package/dist/js/types/upload.d.ts.map +1 -1
- package/dist/js/upload/create.js +9 -6
- package/dist/js/upload/create.js.map +1 -1
- package/dist/js/upload/delete.js +21 -21
- package/dist/js/upload/delete.js.map +1 -1
- package/dist/js/upload/update.js +21 -21
- package/dist/js/upload/update.js.map +1 -1
- package/dist/js/utils/getErrorDetail.d.ts +2 -2
- package/dist/js/utils/getErrorDetail.d.ts.map +1 -1
- package/dist/js/utils/getErrorDetail.js +2 -2
- package/dist/js/utils/getErrorDetail.js.map +1 -1
- package/dist/js/utils/getModel.d.ts +3 -3
- package/dist/js/utils/getModel.d.ts.map +1 -1
- package/dist/js/utils/getModel.js +6 -6
- package/dist/js/utils/getModel.js.map +1 -1
- package/dist/js/utils/libsodium.js +6 -0
- package/dist/js/utils/libsodium.js.map +1 -1
- package/dist/js/utils/otpPurposes.js +38 -0
- package/dist/js/utils/otpPurposes.js.map +1 -1
- package/dist/js/utils/sanitize.js +23 -2
- package/dist/js/utils/sanitize.js.map +1 -1
- package/dist/js/utils/saveRefreshToken.js +2 -1
- package/dist/js/utils/saveRefreshToken.js.map +1 -1
- package/dist/js/utils/validate.js +5 -3
- package/dist/js/utils/validate.js.map +1 -1
- package/dist/js/utils/validationKeyError.d.ts +1 -1
- package/dist/js/utils/validationKeyError.d.ts.map +1 -1
- package/dist/js/utils/validationKeyError.js +13 -8
- package/dist/js/utils/validationKeyError.js.map +1 -1
- package/package.json +1 -1
- package/readme.md +29 -29
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/js/crud/email/index.ts"],"names":[],"mappings":""}
|
|
@@ -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.
|
|
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: "
|
|
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
|
|
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/encryption/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,
|
|
1
|
+
{"version":3,"file":"handleDecryption.js","sourceRoot":"","sources":["../../../../src/js/crud/encryption/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.
|
|
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: "
|
|
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
|
|
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/encryption/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,
|
|
1
|
+
{"version":3,"file":"handleEncryption.js","sourceRoot":"","sources":["../../../../src/js/crud/encryption/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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import type { Request, Response } from "express";
|
|
2
2
|
import type { Route, ValidationsObj } from "../../types/Collection.js";
|
|
3
|
-
declare const addFile: ({
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
declare const addFile: ({ model, route, routeObj, }: {
|
|
4
|
+
model: string;
|
|
5
|
+
route: string;
|
|
6
6
|
routeObj: Route;
|
|
7
|
-
|
|
7
|
+
validations: ValidationsObj;
|
|
8
8
|
}) => (req: Request, res: Response) => Promise<void>;
|
|
9
9
|
export default addFile;
|
|
10
10
|
//# sourceMappingURL=file.add.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file.add.d.ts","sourceRoot":"","sources":["../../../../src/js/crud/handleUploads/file.add.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAUvE,QAAA,MAAM,OAAO,GAAI,
|
|
1
|
+
{"version":3,"file":"file.add.d.ts","sourceRoot":"","sources":["../../../../src/js/crud/handleUploads/file.add.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAUvE,QAAA,MAAM,OAAO,GAAI,6BAId;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,CA6DzD,CAAC;AAEF,eAAe,OAAO,CAAC"}
|
|
@@ -5,37 +5,42 @@ import { handleUploadFiles } from "../../upload/index.js";
|
|
|
5
5
|
import AppError from "../../utils/AppError.js";
|
|
6
6
|
import authorizeAccess from "../utils/authorizeAccess.js";
|
|
7
7
|
import getErrorDetail from "../../utils/getErrorDetail.js";
|
|
8
|
-
const addFile = ({
|
|
8
|
+
const addFile = ({ model, route, routeObj, }) => {
|
|
9
9
|
return async (req, res) => {
|
|
10
|
-
if
|
|
10
|
+
// if files is missing
|
|
11
|
+
if (!routeObj?.files?.length)
|
|
11
12
|
throw new AppError({
|
|
12
|
-
message: "
|
|
13
|
+
message: "files is missing or empty",
|
|
13
14
|
statusCode: 400,
|
|
14
|
-
hint: "Checkout the collection configuration if
|
|
15
|
+
hint: "Checkout the collection configuration if files is missing or empty",
|
|
15
16
|
details: getErrorDetail(routeObj),
|
|
16
17
|
});
|
|
18
|
+
// get param
|
|
17
19
|
const param = getParam({
|
|
18
20
|
req,
|
|
19
21
|
routeObj
|
|
20
22
|
});
|
|
23
|
+
// get item
|
|
21
24
|
const item = await getItem({
|
|
22
|
-
|
|
23
|
-
|
|
25
|
+
model,
|
|
26
|
+
route,
|
|
24
27
|
_id: param,
|
|
25
28
|
path: routeObj.path,
|
|
26
29
|
clean: false,
|
|
27
30
|
routeObj,
|
|
28
31
|
});
|
|
29
|
-
authorizeAccess
|
|
32
|
+
// authorizeAccess
|
|
33
|
+
authorizeAccess({ routeObj, route, item, req });
|
|
34
|
+
// upload files
|
|
30
35
|
const fileMetaData = await handleUploadFiles(req, routeObj);
|
|
31
36
|
if (fileMetaData) {
|
|
32
37
|
for (const [field, files] of Object.entries(fileMetaData)) {
|
|
33
38
|
const mongooseSchemaField = item[field];
|
|
34
39
|
if (!mongooseSchemaField)
|
|
35
40
|
throw new AppError({
|
|
36
|
-
message: `
|
|
41
|
+
message: `schemaField: '${field}' not found in mongodb document.`,
|
|
37
42
|
statusCode: 400,
|
|
38
|
-
hint: "Check if '
|
|
43
|
+
hint: "Check if 'schemaField' is wrong. It should match the array [] name of your mongodb document -> fileMetaData.",
|
|
39
44
|
details: {
|
|
40
45
|
handler: routeObj.handler,
|
|
41
46
|
method: routeObj.method,
|
|
@@ -45,7 +50,9 @@ const addFile = ({ modelName, routeName, routeObj, }) => {
|
|
|
45
50
|
item[field].push(...files);
|
|
46
51
|
}
|
|
47
52
|
}
|
|
53
|
+
// save
|
|
48
54
|
await item.save();
|
|
55
|
+
// response
|
|
49
56
|
appResponse({
|
|
50
57
|
res,
|
|
51
58
|
data: item,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file.add.js","sourceRoot":"","sources":["../../../../src/js/crud/handleUploads/file.add.ts"],"names":[],"mappings":"AAEA,OAAO,OAAO,MAAM,qBAAqB,CAAC;AAC1C,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAC5C,OAAO,WAAW,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AAC/C,OAAO,eAAe,MAAM,6BAA6B,CAAC;AAC1D,OAAO,cAAc,MAAM,+BAA+B,CAAC;AAG3D,MAAM,OAAO,GAAG,CAAC,EACf,
|
|
1
|
+
{"version":3,"file":"file.add.js","sourceRoot":"","sources":["../../../../src/js/crud/handleUploads/file.add.ts"],"names":[],"mappings":"AAEA,OAAO,OAAO,MAAM,qBAAqB,CAAC;AAC1C,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAC5C,OAAO,WAAW,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AAC/C,OAAO,eAAe,MAAM,6BAA6B,CAAC;AAC1D,OAAO,cAAc,MAAM,+BAA+B,CAAC;AAG3D,MAAM,OAAO,GAAG,CAAC,EACf,KAAK,EACL,KAAK,EACL,QAAQ,GAMT,EAAE,EAAE;IACH,OAAO,KAAK,EAAE,GAAY,EAAE,GAAa,EAAiB,EAAE;QAC1D,sBAAsB;QACtB,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM;YAC1B,MAAM,IAAI,QAAQ,CAAC;gBACjB,OAAO,EAAE,2BAA2B;gBACpC,UAAU,EAAE,GAAG;gBACf,IAAI,EAAE,oEAAoE;gBAC1E,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC;aAClC,CAAC,CAAC;QAEL,YAAY;QACZ,MAAM,KAAK,GAAG,QAAQ,CAAC;YACrB,GAAG;YACH,QAAQ;SACT,CAAC,CAAC;QAEH,WAAW;QACX,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC;YACzB,KAAK;YACL,KAAK;YACL,GAAG,EAAE,KAAe;YACpB,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,KAAK,EAAE,KAAK;YACZ,QAAQ;SACT,CAAC,CAAC;QAEH,kBAAkB;QAClB,eAAe,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;QAEhD,eAAe;QACf,MAAM,YAAY,GAAG,MAAM,iBAAiB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAE5D,IAAI,YAAY,EAAE,CAAC;YACjB,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC1D,MAAM,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;gBAExC,IAAI,CAAC,mBAAmB;oBACtB,MAAM,IAAI,QAAQ,CAAC;wBACjB,OAAO,EAAE,iBAAiB,KAAK,kCAAkC;wBACjE,UAAU,EAAE,GAAG;wBACf,IAAI,EAAE,8GAA8G;wBACpH,OAAO,EAAE;4BACP,OAAO,EAAE,QAAQ,CAAC,OAAO;4BACzB,MAAM,EAAE,QAAQ,CAAC,MAAM;4BACvB,IAAI,EAAE,QAAQ,CAAC,IAAI;yBACpB;qBACF,CAAC,CAAC;gBACL,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;QAED,OAAO;QACP,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAElB,WAAW;QACX,WAAW,CAAC;YACV,GAAG;YACH,IAAI,EAAE,IAAI;YACV,OAAO,EAAE,0BAA0B;SACpC,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,OAAO,CAAC"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import type { Route, ValidationsObj } from "../../types/Collection.ts";
|
|
2
2
|
import type { Request, Response } from "express";
|
|
3
|
-
declare const deleteFile: ({
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
declare const deleteFile: ({ model, route, routeObj, validations, }: {
|
|
4
|
+
model: string;
|
|
5
|
+
route: string;
|
|
6
6
|
routeObj: Route;
|
|
7
|
-
|
|
7
|
+
validations: ValidationsObj;
|
|
8
8
|
}) => (req: Request, res: Response) => Promise<void>;
|
|
9
9
|
export default deleteFile;
|
|
10
10
|
//# sourceMappingURL=file.delete.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file.delete.d.ts","sourceRoot":"","sources":["../../../../src/js/crud/handleUploads/file.delete.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AASjD,QAAA,MAAM,UAAU,GAAI,
|
|
1
|
+
{"version":3,"file":"file.delete.d.ts","sourceRoot":"","sources":["../../../../src/js/crud/handleUploads/file.delete.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AASjD,QAAA,MAAM,UAAU,GAAI,0CAKjB;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,CA2CzD,CAAC;AAEF,eAAe,UAAU,CAAC"}
|
|
@@ -5,26 +5,35 @@ import appResponse from "../../utils/response.js";
|
|
|
5
5
|
import getValidationKey from "../../utils/validationKeyError.js";
|
|
6
6
|
import validate from "../../utils/validate.js";
|
|
7
7
|
import authorizeAccess from "../utils/authorizeAccess.js";
|
|
8
|
-
const deleteFile = ({
|
|
8
|
+
const deleteFile = ({ model, route, routeObj, validations, }) => {
|
|
9
9
|
return async (req, res) => {
|
|
10
|
-
|
|
10
|
+
// validationObj
|
|
11
|
+
const validationObj = getValidationKey(routeObj, validations);
|
|
12
|
+
// validation
|
|
11
13
|
const body = validate(validationObj, req.body, routeObj);
|
|
14
|
+
// get param
|
|
12
15
|
const param = getParam({
|
|
13
16
|
req,
|
|
14
17
|
routeObj
|
|
15
18
|
});
|
|
19
|
+
// get item
|
|
16
20
|
const item = await getItem({
|
|
17
|
-
|
|
18
|
-
|
|
21
|
+
model,
|
|
22
|
+
route,
|
|
19
23
|
_id: param,
|
|
20
24
|
path: routeObj.path,
|
|
21
25
|
clean: false,
|
|
22
26
|
routeObj
|
|
23
27
|
});
|
|
24
|
-
authorizeAccess
|
|
28
|
+
// authorizeAccess
|
|
29
|
+
authorizeAccess({ routeObj, route, item, req });
|
|
30
|
+
// delete file from cloudinary
|
|
25
31
|
const { _id, mongooseField } = (await handleDeleteFile(routeObj, body, item)) || {};
|
|
32
|
+
// remove from mongoose array
|
|
26
33
|
item[mongooseField].id(_id)?.deleteOne();
|
|
34
|
+
// save
|
|
27
35
|
await item.save();
|
|
36
|
+
// response
|
|
28
37
|
appResponse({
|
|
29
38
|
res,
|
|
30
39
|
message: "File deleted successfully!",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file.delete.js","sourceRoot":"","sources":["../../../../src/js/crud/handleUploads/file.delete.ts"],"names":[],"mappings":"AAEA,OAAO,OAAO,MAAM,qBAAqB,CAAC;AAC1C,OAAO,gBAAgB,MAAM,wBAAwB,CAAC;AACtD,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAC5C,OAAO,WAAW,MAAM,yBAAyB,CAAC;AAClD,OAAO,gBAAgB,MAAM,mCAAmC,CAAC;AACjE,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AAC/C,OAAO,eAAe,MAAM,6BAA6B,CAAC;AAE1D,MAAM,UAAU,GAAG,CAAC,EAClB,
|
|
1
|
+
{"version":3,"file":"file.delete.js","sourceRoot":"","sources":["../../../../src/js/crud/handleUploads/file.delete.ts"],"names":[],"mappings":"AAEA,OAAO,OAAO,MAAM,qBAAqB,CAAC;AAC1C,OAAO,gBAAgB,MAAM,wBAAwB,CAAC;AACtD,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAC5C,OAAO,WAAW,MAAM,yBAAyB,CAAC;AAClD,OAAO,gBAAgB,MAAM,mCAAmC,CAAC;AACjE,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AAC/C,OAAO,eAAe,MAAM,6BAA6B,CAAC;AAE1D,MAAM,UAAU,GAAG,CAAC,EAClB,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,aAAa;QACb,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,EAAE,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAEzD,YAAY;QACZ,MAAM,KAAK,GAAG,QAAQ,CAAC;YACrB,GAAG;YACH,QAAQ;SACT,CAAC,CAAC;QAEH,WAAW;QACX,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC;YACzB,KAAK;YACL,KAAK;YACL,GAAG,EAAE,KAAe;YACpB,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,KAAK,EAAE,KAAK;YACZ,QAAQ;SACT,CAAC,CAAC;QAEF,kBAAkB;QACnB,eAAe,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;QAEhD,8BAA8B;QAC9B,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,GAC1B,CAAC,MAAM,gBAAgB,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;QAEvD,6BAA6B;QAC7B,IAAI,CAAC,aAAuB,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,CAAC;QAEnD,OAAO;QACP,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAElB,WAAW;QACX,WAAW,CAAC;YACV,GAAG;YACH,OAAO,EAAE,4BAA4B;YACrC,IAAI,EAAE,IAAI;SACX,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,UAAU,CAAC"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import type { Route, ValidationsObj } from "../../types/Collection.ts";
|
|
2
2
|
import type { Request, Response } from "express";
|
|
3
|
-
declare const updateFile: ({
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
declare const updateFile: ({ model, route, routeObj, validations, }: {
|
|
4
|
+
model: string;
|
|
5
|
+
route: string;
|
|
6
6
|
routeObj: Route;
|
|
7
|
-
|
|
7
|
+
validations: ValidationsObj;
|
|
8
8
|
}) => (req: Request, res: Response) => Promise<void>;
|
|
9
9
|
export default updateFile;
|
|
10
10
|
//# sourceMappingURL=file.update.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file.update.d.ts","sourceRoot":"","sources":["../../../../src/js/crud/handleUploads/file.update.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AASjD,QAAA,MAAM,UAAU,GAAI,
|
|
1
|
+
{"version":3,"file":"file.update.d.ts","sourceRoot":"","sources":["../../../../src/js/crud/handleUploads/file.update.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AASjD,QAAA,MAAM,UAAU,GAAI,0CAKjB;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,CAuCzD,CAAC;AAEF,eAAe,UAAU,CAAC"}
|
|
@@ -5,24 +5,34 @@ import appResponse from "../../utils/response.js";
|
|
|
5
5
|
import getValidationKey from "../../utils/validationKeyError.js";
|
|
6
6
|
import validate from "../../utils/validate.js";
|
|
7
7
|
import authorizeAccess from "../utils/authorizeAccess.js";
|
|
8
|
-
const updateFile = ({
|
|
8
|
+
const updateFile = ({ model, route, routeObj, validations, }) => {
|
|
9
9
|
return async (req, res) => {
|
|
10
|
-
|
|
10
|
+
// validationObj
|
|
11
|
+
const validationObj = getValidationKey(routeObj, validations);
|
|
12
|
+
// validation
|
|
11
13
|
const body = validate(validationObj, req.body, routeObj);
|
|
14
|
+
// get param
|
|
12
15
|
const param = getParam({ req, routeObj });
|
|
16
|
+
// get item
|
|
13
17
|
let item = await getItem({
|
|
14
|
-
|
|
15
|
-
|
|
18
|
+
model,
|
|
19
|
+
route,
|
|
16
20
|
_id: param,
|
|
17
21
|
path: routeObj.path,
|
|
18
22
|
clean: false,
|
|
19
23
|
routeObj
|
|
20
24
|
});
|
|
21
|
-
authorizeAccess
|
|
25
|
+
// authorizeAccess
|
|
26
|
+
authorizeAccess({ routeObj, route, item, req });
|
|
27
|
+
// update file
|
|
22
28
|
const { updated, _id, mongooseField } = (await handleUpdateFile(req, routeObj, body, item)) || {};
|
|
29
|
+
// get old
|
|
23
30
|
const old = item[mongooseField].id(_id);
|
|
31
|
+
// copy - paste updated init
|
|
24
32
|
Object.assign(old, updated);
|
|
33
|
+
// save
|
|
25
34
|
await item.save();
|
|
35
|
+
// app response
|
|
26
36
|
appResponse({ res, message: "File updated successfully!", data: item });
|
|
27
37
|
};
|
|
28
38
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file.update.js","sourceRoot":"","sources":["../../../../src/js/crud/handleUploads/file.update.ts"],"names":[],"mappings":"AAEA,OAAO,OAAO,MAAM,qBAAqB,CAAC;AAC1C,OAAO,gBAAgB,MAAM,wBAAwB,CAAC;AACtD,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAC5C,OAAO,WAAW,MAAM,yBAAyB,CAAC;AAClD,OAAO,gBAAgB,MAAM,mCAAmC,CAAC;AACjE,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AAC/C,OAAO,eAAe,MAAM,6BAA6B,CAAC;AAE1D,MAAM,UAAU,GAAG,CAAC,EAClB,
|
|
1
|
+
{"version":3,"file":"file.update.js","sourceRoot":"","sources":["../../../../src/js/crud/handleUploads/file.update.ts"],"names":[],"mappings":"AAEA,OAAO,OAAO,MAAM,qBAAqB,CAAC;AAC1C,OAAO,gBAAgB,MAAM,wBAAwB,CAAC;AACtD,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAC5C,OAAO,WAAW,MAAM,yBAAyB,CAAC;AAClD,OAAO,gBAAgB,MAAM,mCAAmC,CAAC;AACjE,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AAC/C,OAAO,eAAe,MAAM,6BAA6B,CAAC;AAE1D,MAAM,UAAU,GAAG,CAAC,EAClB,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,aAAa;QACb,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,EAAE,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAEzD,YAAY;QACZ,MAAM,KAAK,GAAG,QAAQ,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC;QAE1C,WAAW;QACX,IAAI,IAAI,GAAG,MAAM,OAAO,CAAC;YACvB,KAAK;YACL,KAAK;YACL,GAAG,EAAE,KAAe;YACpB,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,KAAK,EAAE,KAAK;YACZ,QAAQ;SACT,CAAC,CAAC;QAEH,kBAAkB;QAClB,eAAe,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;QAEhD,cAAc;QACd,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,aAAa,EAAE,GACnC,CAAC,MAAM,gBAAgB,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;QAE5D,UAAU;QACV,MAAM,GAAG,GAAG,IAAI,CAAC,aAAuB,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QAElD,4BAA4B;QAC5B,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAE5B,OAAO;QACP,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAElB,eAAe;QACf,WAAW,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,4BAA4B,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1E,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,UAAU,CAAC"}
|
package/dist/js/crud/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Express } from "express";
|
|
2
2
|
import type { ValidationsObj, Route } from "../types/Collection.ts";
|
|
3
|
-
declare const crud: (app: Express,
|
|
3
|
+
declare const crud: (app: Express, route: string, routes: Route[], model: string | undefined, validations?: ValidationsObj) => void;
|
|
4
4
|
export default crud;
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/js/crud/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAIvC,OAAO,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAMpE,QAAA,MAAM,IAAI,GACR,KAAK,OAAO,EACZ,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/js/crud/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAIvC,OAAO,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAMpE,QAAA,MAAM,IAAI,GACR,KAAK,OAAO,EACZ,OAAO,MAAM,EACb,QAAQ,KAAK,EAAE,EACf,OAAO,MAAM,GAAG,SAAS,EACzB,cAAc,cAAc,SA2C7B,CAAC;AAEF,eAAe,IAAI,CAAC"}
|
package/dist/js/crud/index.js
CHANGED
|
@@ -5,29 +5,36 @@ import protect from "../middleware/auth.middleware.js";
|
|
|
5
5
|
import AppError from "../utils/AppError.js";
|
|
6
6
|
import { handleMulterMiddleware } from "../middleware/multer.middleware.js";
|
|
7
7
|
import getErrorDetail from "../utils/getErrorDetail.js";
|
|
8
|
-
const crud = (app,
|
|
8
|
+
const crud = (app, route, routes, model, validations) => {
|
|
9
9
|
const { apiVersion } = getEnvs();
|
|
10
10
|
for (const routeObj of routes) {
|
|
11
|
-
|
|
11
|
+
// push middleware to middlewares
|
|
12
|
+
if (!routeObj.auth ||
|
|
12
13
|
!routeObj.handler ||
|
|
13
14
|
!routeObj.method ||
|
|
14
15
|
!routeObj.path)
|
|
15
16
|
throw new AppError({
|
|
16
|
-
message: "
|
|
17
|
+
message: "auth, handler, method and path are required required",
|
|
17
18
|
statusCode: 409,
|
|
18
|
-
hint: "Check if
|
|
19
|
+
hint: "Check if auth, handler, method or path is missing in collections -> routes.",
|
|
19
20
|
details: getErrorDetail(routeObj),
|
|
20
21
|
});
|
|
22
|
+
// middlewares array
|
|
21
23
|
const middlewares = [];
|
|
22
|
-
|
|
24
|
+
// protect
|
|
25
|
+
if (routeObj.auth !== "public")
|
|
23
26
|
middlewares.push(protect(routeObj));
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
27
|
+
// upload in routeObj
|
|
28
|
+
if (routeObj?.files)
|
|
29
|
+
middlewares.push(handleMulterMiddleware(routeObj.files, routeObj));
|
|
30
|
+
// app.get("/", (req, res) => {})
|
|
31
|
+
app[routeObj.method](`/api/v${apiVersion}/${route}${routeObj.path}`, ...middlewares, asyncHandler(
|
|
32
|
+
// redirect -> handler
|
|
33
|
+
handlerMap[routeObj.handler]({
|
|
34
|
+
model,
|
|
35
|
+
route,
|
|
29
36
|
routeObj,
|
|
30
|
-
|
|
37
|
+
validations,
|
|
31
38
|
})));
|
|
32
39
|
}
|
|
33
40
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/js/crud/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,YAAY,MAAM,0BAA0B,CAAC;AACpD,OAAO,UAAU,MAAM,yBAAyB,CAAC;AAEjD,OAAO,OAAO,MAAM,kCAAkC,CAAC;AACvD,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAC5C,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,cAAc,MAAM,4BAA4B,CAAC;AAExD,MAAM,IAAI,GAAG,CACX,GAAY,EACZ,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/js/crud/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,YAAY,MAAM,0BAA0B,CAAC;AACpD,OAAO,UAAU,MAAM,yBAAyB,CAAC;AAEjD,OAAO,OAAO,MAAM,kCAAkC,CAAC;AACvD,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAC5C,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,cAAc,MAAM,4BAA4B,CAAC;AAExD,MAAM,IAAI,GAAG,CACX,GAAY,EACZ,KAAa,EACb,MAAe,EACf,KAAyB,EACzB,WAA4B,EAC5B,EAAE;IACF,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,EAAE,CAAC;IACjC,KAAK,MAAM,QAAQ,IAAI,MAAM,EAAE,CAAC;QAC9B,iCAAiC;QACjC,IACE,CAAC,QAAQ,CAAC,IAAI;YACd,CAAC,QAAQ,CAAC,OAAO;YACjB,CAAC,QAAQ,CAAC,MAAM;YAChB,CAAC,QAAQ,CAAC,IAAI;YAEd,MAAM,IAAI,QAAQ,CAAC;gBACjB,OAAO,EAAE,sDAAsD;gBAC/D,UAAU,EAAE,GAAG;gBACf,IAAI,EAAE,6EAA6E;gBACnF,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC;aAClC,CAAC,CAAC;QAEL,oBAAoB;QACpB,MAAM,WAAW,GAAG,EAAE,CAAC;QAEvB,UAAU;QACV,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ;YAAE,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;QAEpE,qBAAqB;QACrB,IAAI,QAAQ,EAAE,KAAK;YACjB,WAAW,CAAC,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;QAErE,iCAAiC;QACjC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAClB,SAAS,UAAU,IAAI,KAAK,GAAG,QAAQ,CAAC,IAAI,EAAE,EAC9C,GAAG,WAAW,EACd,YAAY;QACV,sBAAsB;QACtB,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAC3B,KAAK;YACL,KAAK;YACL,QAAQ;YACR,WAAW;SACZ,CAAC,CACH,CACF,CAAC;IACJ,CAAC;AACH,CAAC,CAAC;AAEF,eAAe,IAAI,CAAC"}
|
package/dist/js/crud/read.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import type { Request, Response } from "express";
|
|
2
2
|
import type { Route, ValidationsObj } from "../types/Collection.js";
|
|
3
|
-
declare const read: ({
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
declare const read: ({ model, route, routeObj, }: {
|
|
4
|
+
model: string;
|
|
5
|
+
route: string;
|
|
6
6
|
routeObj: Route;
|
|
7
|
-
|
|
7
|
+
validations: ValidationsObj;
|
|
8
8
|
}) => (req: Request, res: Response) => Promise<void>;
|
|
9
9
|
export default read;
|
|
10
10
|
//# sourceMappingURL=read.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../../src/js/crud/read.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAIjD,OAAO,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAKpE,QAAA,MAAM,IAAI,GAAI,
|
|
1
|
+
{"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../../src/js/crud/read.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAIjD,OAAO,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAKpE,QAAA,MAAM,IAAI,GAAI,6BAIX;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,CAsDzD,CAAC;AACF,eAAe,IAAI,CAAC"}
|
package/dist/js/crud/read.js
CHANGED
|
@@ -4,39 +4,48 @@ import getParam from "./utils/getParam.js";
|
|
|
4
4
|
import authorizeAccess from "./utils/authorizeAccess.js";
|
|
5
5
|
import handleDecryption from "./encryption/handleDecryption.js";
|
|
6
6
|
import runActions from "./utils/runActions.js";
|
|
7
|
-
const read = ({
|
|
7
|
+
const read = ({ model, route, routeObj, }) => {
|
|
8
8
|
return async (req, res) => {
|
|
9
|
+
// get /:parameter
|
|
9
10
|
const id = getParam({ req, routeObj });
|
|
11
|
+
// runActions object
|
|
10
12
|
const ActionObj = {
|
|
11
13
|
req,
|
|
12
14
|
user: req.user,
|
|
13
|
-
|
|
14
|
-
|
|
15
|
+
route,
|
|
16
|
+
model,
|
|
15
17
|
};
|
|
18
|
+
// before action
|
|
16
19
|
let modifiedResponse = await runActions(routeObj.actions?.before, {
|
|
17
20
|
operation: "read",
|
|
18
21
|
...ActionObj,
|
|
19
22
|
});
|
|
23
|
+
// findById item
|
|
20
24
|
const item = await getItem({
|
|
21
|
-
|
|
22
|
-
|
|
25
|
+
model,
|
|
26
|
+
route,
|
|
23
27
|
_id: id,
|
|
24
28
|
path: routeObj.path,
|
|
25
29
|
routeObj,
|
|
26
30
|
});
|
|
27
|
-
if
|
|
28
|
-
|
|
29
|
-
|
|
31
|
+
// if not public -> do authorizeAccess
|
|
32
|
+
if (routeObj.auth !== "public")
|
|
33
|
+
authorizeAccess({ routeObj, route, item, req });
|
|
34
|
+
// if '_id' excluded
|
|
35
|
+
const idExcluded = routeObj.config?.hiddenFields?.includes("_id");
|
|
30
36
|
if (idExcluded)
|
|
31
37
|
delete item["_id"];
|
|
38
|
+
// if decryption
|
|
32
39
|
const decryption = await handleDecryption(item, routeObj);
|
|
40
|
+
// before action
|
|
33
41
|
modifiedResponse = await runActions(routeObj.actions?.after, {
|
|
34
42
|
operation: "read",
|
|
35
43
|
...ActionObj,
|
|
36
44
|
data: {
|
|
37
|
-
|
|
45
|
+
decrypted: decryption,
|
|
38
46
|
},
|
|
39
47
|
});
|
|
48
|
+
// return response
|
|
40
49
|
appResponse({
|
|
41
50
|
res,
|
|
42
51
|
data: modifiedResponse ?? { ...item, ...decryption },
|
package/dist/js/crud/read.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read.js","sourceRoot":"","sources":["../../../src/js/crud/read.ts"],"names":[],"mappings":"AACA,OAAO,OAAO,MAAM,oBAAoB,CAAC;AACzC,OAAO,WAAW,MAAM,sBAAsB,CAAC;AAC/C,OAAO,QAAQ,MAAM,qBAAqB,CAAC;AAE3C,OAAO,eAAe,MAAM,4BAA4B,CAAC;AACzD,OAAO,gBAAgB,MAAM,kCAAkC,CAAC;AAChE,OAAO,UAAU,MAAM,uBAAuB,CAAC;AAE/C,MAAM,IAAI,GAAG,CAAC,EACZ,
|
|
1
|
+
{"version":3,"file":"read.js","sourceRoot":"","sources":["../../../src/js/crud/read.ts"],"names":[],"mappings":"AACA,OAAO,OAAO,MAAM,oBAAoB,CAAC;AACzC,OAAO,WAAW,MAAM,sBAAsB,CAAC;AAC/C,OAAO,QAAQ,MAAM,qBAAqB,CAAC;AAE3C,OAAO,eAAe,MAAM,4BAA4B,CAAC;AACzD,OAAO,gBAAgB,MAAM,kCAAkC,CAAC;AAChE,OAAO,UAAU,MAAM,uBAAuB,CAAC;AAE/C,MAAM,IAAI,GAAG,CAAC,EACZ,KAAK,EACL,KAAK,EACL,QAAQ,GAMT,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,oBAAoB;QACpB,MAAM,SAAS,GAAG;YAChB,GAAG;YACH,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,KAAK;YACL,KAAK;SACN,CAAC;QAEF,gBAAgB;QAChB,IAAI,gBAAgB,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE;YAChE,SAAS,EAAE,MAAM;YACjB,GAAG,SAAS;SACb,CAAC,CAAC;QAEH,gBAAgB;QAChB,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC;YACzB,KAAK;YACL,KAAK;YACL,GAAG,EAAE,EAAY;YACjB,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,QAAQ;SACT,CAAC,CAAC;QAEH,sCAAsC;QACtC,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ;YAC5B,eAAe,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;QAElD,oBAAoB;QACpB,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,EAAE,YAAY,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;QAClE,IAAI,UAAU;YAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;QAEnC,gBAAgB;QAChB,MAAM,UAAU,GAAG,MAAM,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAE1D,gBAAgB;QAChB,gBAAgB,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE;YAC3D,SAAS,EAAE,MAAM;YACjB,GAAG,SAAS;YACZ,IAAI,EAAE;gBACJ,SAAS,EAAE,UAAU;aACtB;SACF,CAAC,CAAC;QAEH,kBAAkB;QAClB,WAAW,CAAC;YACV,GAAG;YACH,IAAI,EAAE,gBAAgB,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,UAAU,EAAE;YACpD,OAAO,EAAE,0BAA0B;SACpC,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC,CAAC;AACF,eAAe,IAAI,CAAC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { Request, Response } from "express";
|
|
2
2
|
import type { Route } from "../types/Collection.js";
|
|
3
|
-
declare const read: ({
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
declare const read: ({ 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 read;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"readAll.d.ts","sourceRoot":"","sources":["../../../src/js/crud/readAll.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGjD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAKpD,QAAA,MAAM,IAAI,GAAI,
|
|
1
|
+
{"version":3,"file":"readAll.d.ts","sourceRoot":"","sources":["../../../src/js/crud/readAll.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGjD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAKpD,QAAA,MAAM,IAAI,GAAI,6BAIX;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,CAiEzD,CAAC;AAEF,eAAe,IAAI,CAAC"}
|
package/dist/js/crud/readAll.js
CHANGED
|
@@ -3,33 +3,39 @@ import appResponse from "../utils/response.js";
|
|
|
3
3
|
import authorizeAccess from "./utils/authorizeAccess.js";
|
|
4
4
|
import runActions from "./utils/runActions.js";
|
|
5
5
|
import handleDecryption from "./encryption/handleDecryption.js";
|
|
6
|
-
const read = ({
|
|
6
|
+
const read = ({ model, route, routeObj, }) => {
|
|
7
7
|
return async (req, res) => {
|
|
8
|
+
// runActions object
|
|
8
9
|
const ActionObj = {
|
|
9
10
|
req,
|
|
10
11
|
user: req.user,
|
|
11
|
-
|
|
12
|
-
|
|
12
|
+
route,
|
|
13
|
+
model,
|
|
13
14
|
};
|
|
15
|
+
// before action
|
|
14
16
|
let modifiedResponse = await runActions(routeObj.actions?.before, {
|
|
15
17
|
operation: "readAll",
|
|
16
18
|
...ActionObj,
|
|
17
19
|
});
|
|
20
|
+
// Find item
|
|
18
21
|
const items = await getItem({
|
|
19
|
-
|
|
20
|
-
|
|
22
|
+
model,
|
|
23
|
+
route,
|
|
21
24
|
path: routeObj.path,
|
|
22
25
|
routeObj,
|
|
23
26
|
});
|
|
24
|
-
|
|
27
|
+
// If not public -> authorize access
|
|
28
|
+
if (routeObj.auth !== "public") {
|
|
25
29
|
authorizeAccess({
|
|
26
30
|
routeObj,
|
|
27
|
-
|
|
31
|
+
route,
|
|
28
32
|
item: items[0],
|
|
29
33
|
req,
|
|
30
34
|
});
|
|
31
35
|
}
|
|
32
|
-
|
|
36
|
+
// if '_id' excluded
|
|
37
|
+
const idExcluded = routeObj.config?.hiddenFields?.includes("_id");
|
|
38
|
+
// Decrypt fields
|
|
33
39
|
const decryptedItems = await Promise.all(items.map(async (item) => {
|
|
34
40
|
if (idExcluded)
|
|
35
41
|
delete item["_id"];
|
|
@@ -39,12 +45,14 @@ const read = ({ modelName, routeName, routeObj, }) => {
|
|
|
39
45
|
...decryption,
|
|
40
46
|
};
|
|
41
47
|
}));
|
|
48
|
+
// before action
|
|
42
49
|
modifiedResponse = await runActions(routeObj.actions?.after, {
|
|
43
50
|
operation: "readAll",
|
|
44
51
|
...ActionObj,
|
|
45
52
|
item: decryptedItems,
|
|
46
53
|
result: decryptedItems,
|
|
47
54
|
});
|
|
55
|
+
// Return response
|
|
48
56
|
appResponse({
|
|
49
57
|
res,
|
|
50
58
|
data: modifiedResponse ?? decryptedItems,
|
|
@@ -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,UAAU,MAAM,uBAAuB,CAAC;AAC/C,OAAO,gBAAgB,MAAM,kCAAkC,CAAC;AAEhE,MAAM,IAAI,GAAG,CAAC,EACZ,
|
|
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,UAAU,MAAM,uBAAuB,CAAC;AAC/C,OAAO,gBAAgB,MAAM,kCAAkC,CAAC;AAEhE,MAAM,IAAI,GAAG,CAAC,EACZ,KAAK,EACL,KAAK,EACL,QAAQ,GAKT,EAAE,EAAE;IACH,OAAO,KAAK,EAAE,GAAY,EAAE,GAAa,EAAiB,EAAE;QAC1D,oBAAoB;QACpB,MAAM,SAAS,GAAG;YAChB,GAAG;YACH,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,KAAK;YACL,KAAK;SACN,CAAC;QAEF,gBAAgB;QAChB,IAAI,gBAAgB,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE;YAChE,SAAS,EAAE,SAAS;YACpB,GAAG,SAAS;SACb,CAAC,CAAC;QAEH,YAAY;QACZ,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC;YAC1B,KAAK;YACL,KAAK;YACL,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,QAAQ;SACT,CAAC,CAAC;QAEH,oCAAoC;QACpC,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC/B,eAAe,CAAC;gBACd,QAAQ;gBACR,KAAK;gBACL,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;gBACd,GAAG;aACJ,CAAC,CAAC;QACL,CAAC;QACD,oBAAoB;QACpB,MAAM,UAAU,GACd,QAAQ,CAAC,MAAM,EAAE,YAAY,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;QAEjD,iBAAiB;QACjB,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;QAEF,gBAAgB;QAChB,gBAAgB,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE;YAC3D,SAAS,EAAE,SAAS;YACpB,GAAG,SAAS;YACZ,IAAI,EAAE,cAAc;YACpB,MAAM,EAAE,cAAc;SACvB,CAAC,CAAC;QAEH,kBAAkB;QAClB,WAAW,CAAC;YACV,GAAG;YACH,IAAI,EAAE,gBAAgB,IAAI,cAAc;YACxC,OAAO,EAAE,2BAA2B;SACrC,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,IAAI,CAAC"}
|