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