axe-api 0.30.0-rc6 → 0.30.0-rc7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/build/src/Builders/ModelTreeBuilder.js +13 -19
  2. package/build/src/Builders/RouterBuilder.js +154 -176
  3. package/build/src/Exceptions/ApiError.js +3 -0
  4. package/build/src/Exceptions/AxeError.js +3 -0
  5. package/build/src/Handlers/AllHandler.js +15 -18
  6. package/build/src/Handlers/DestroyHandler.js +23 -20
  7. package/build/src/Handlers/DocsHandler.js +12 -12
  8. package/build/src/Handlers/ForceDestroyHandler.js +22 -19
  9. package/build/src/Handlers/Helpers.js +16 -25
  10. package/build/src/Handlers/PaginateHandler.js +15 -18
  11. package/build/src/Handlers/PatchHandler.js +29 -23
  12. package/build/src/Handlers/RoutesHandler.js +2 -11
  13. package/build/src/Handlers/ShowHandler.js +15 -18
  14. package/build/src/Handlers/StoreHandler.js +14 -17
  15. package/build/src/Handlers/UpdateHandler.js +25 -22
  16. package/build/src/Helpers.js +2 -11
  17. package/build/src/Middlewares/acceptLanguageMiddleware.js +3 -12
  18. package/build/src/Model.js +1 -1
  19. package/build/src/Resolvers/FileResolver.js +35 -48
  20. package/build/src/Resolvers/GeneralHookResolver.js +12 -22
  21. package/build/src/Resolvers/ModelResolver.js +125 -148
  22. package/build/src/Resolvers/TransactionResolver.js +36 -46
  23. package/build/src/Resolvers/VersionConfigResolver.js +10 -20
  24. package/build/src/Resolvers/VersionResolver.js +20 -35
  25. package/build/src/Resolvers/WithQueryResolver.js +16 -14
  26. package/build/src/Server.js +57 -78
  27. package/build/src/Services/APIService.js +2 -0
  28. package/build/src/Services/DocumentationService.js +2 -0
  29. package/build/src/Services/IoCService.js +16 -29
  30. package/build/src/Services/LimitService.js +2 -2
  31. package/build/src/Services/LogService.js +2 -0
  32. package/build/src/Services/ModelListService.js +1 -0
  33. package/build/src/Services/ModelService.js +11 -2
  34. package/build/src/Services/QueryService.js +18 -14
  35. package/build/src/Services/SchemaValidatorService.js +89 -99
  36. package/package.json +5 -4
@@ -1,29 +1,19 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
2
  Object.defineProperty(exports, "__esModule", { value: true });
12
3
  const Enums_1 = require("../Enums");
13
4
  const Services_1 = require("../Services");
14
5
  class ModelTreeBuilder {
6
+ version;
15
7
  constructor(version) {
16
8
  this.version = version;
17
9
  }
18
- build() {
19
- return __awaiter(this, void 0, void 0, function* () {
20
- const logger = Services_1.LogService.getInstance();
21
- const tree = this.getRootLevelOfTree();
22
- this.createRecursiveTree(tree);
23
- this.addNestedRoutes(tree);
24
- this.version.modelTree = tree;
25
- logger.info(`[${this.version.name}] Model tree has been created.`);
26
- });
10
+ async build() {
11
+ const logger = Services_1.LogService.getInstance();
12
+ const tree = this.getRootLevelOfTree();
13
+ this.createRecursiveTree(tree);
14
+ this.addNestedRoutes(tree);
15
+ this.version.modelTree = tree;
16
+ logger.info(`[${this.version.name}] Model tree has been created.`);
27
17
  }
28
18
  getRootLevelOfTree() {
29
19
  const childModels = [];
@@ -60,7 +50,11 @@ class ModelTreeBuilder {
60
50
  this.version.modelList.get().forEach((model) => {
61
51
  const recursiveRelations = model.relations.filter((relation) => relation.model === model.name);
62
52
  if (recursiveRelations.length === 2) {
63
- tree.push(Object.assign(Object.assign({}, model), { isRecursive: true, children: [] }));
53
+ tree.push({
54
+ ...model,
55
+ isRecursive: true,
56
+ children: [],
57
+ });
64
58
  }
65
59
  });
66
60
  }
@@ -1,13 +1,4 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
12
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
13
4
  };
@@ -23,186 +14,162 @@ const HandlerFactory_1 = __importDefault(require("../Handlers/HandlerFactory"));
23
14
  const Services_1 = require("../Services");
24
15
  const Middlewares_1 = require("../Middlewares");
25
16
  class RouterBuilder {
17
+ version;
26
18
  constructor(version) {
27
- this.getPrimaryKeyName = (model) => {
28
- return (pluralize_1.default.singular(model.name).toLowerCase() +
29
- this.ucFirst(model.instance.primaryKey));
30
- };
31
- this.ucFirst = (value) => {
32
- return value.charAt(0).toUpperCase() + value.slice(1);
33
- };
34
- this.getRootPrefix = () => __awaiter(this, void 0, void 0, function* () {
35
- const api = Services_1.APIService.getInstance();
36
- let prefix = api.config.prefix || "api";
37
- if (prefix.substr(0, 1) === "/") {
38
- prefix = prefix.substr(1);
39
- }
40
- if (prefix.substr(prefix.length - 1) === "/") {
41
- prefix = prefix.substr(0, prefix.length - 1);
42
- }
43
- return prefix;
44
- });
45
19
  this.version = version;
46
20
  }
47
- build() {
48
- return __awaiter(this, void 0, void 0, function* () {
49
- const app = yield Services_1.IoCService.useByType("App");
50
- const logger = Services_1.LogService.getInstance();
51
- const generalHooks = yield new Resolvers_1.GeneralHookResolver(this.version).resolve();
52
- if (generalHooks.onBeforeInit) {
53
- generalHooks.onBeforeInit(app);
54
- }
55
- yield this.createRoutesByModelTree();
56
- logger.info(`[${this.version.name}] Express routes have been created.`);
57
- if (generalHooks.onAfterInit) {
58
- generalHooks.onAfterInit(app);
59
- }
60
- });
21
+ async build() {
22
+ const app = await Services_1.IoCService.useByType("App");
23
+ const logger = Services_1.LogService.getInstance();
24
+ const generalHooks = await new Resolvers_1.GeneralHookResolver(this.version).resolve();
25
+ if (generalHooks.onBeforeInit) {
26
+ generalHooks.onBeforeInit(app);
27
+ }
28
+ await this.createRoutesByModelTree();
29
+ logger.info(`[${this.version.name}] Express routes have been created.`);
30
+ if (generalHooks.onAfterInit) {
31
+ generalHooks.onAfterInit(app);
32
+ }
61
33
  }
62
- createRoutesByModelTree() {
63
- return __awaiter(this, void 0, void 0, function* () {
64
- for (const model of this.version.modelTree) {
65
- yield this.createRouteByModel(model);
66
- }
67
- });
34
+ async createRoutesByModelTree() {
35
+ for (const model of this.version.modelTree) {
36
+ await this.createRouteByModel(model);
37
+ }
68
38
  }
69
- createRouteByModel(model, urlPrefix = "", parentModel = null, relation = null, allowRecursive = true) {
70
- return __awaiter(this, void 0, void 0, function* () {
71
- if (model.instance.ignore) {
72
- return;
73
- }
74
- const resource = this.getResourcePath(model, relation);
75
- // We create and handle routes by not duplicate so many lines.
76
- for (const handler of Object.keys(constants_1.API_ROUTE_TEMPLATES)) {
77
- const handlerType = handler;
78
- if (!model.instance.handlers.includes(handlerType)) {
79
- continue;
80
- }
81
- const urlCreator = constants_1.API_ROUTE_TEMPLATES[handlerType];
82
- const url = urlCreator(path_1.default.join(yield this.getRootPrefix(), this.version.name), urlPrefix, resource, model.instance.primaryKey);
83
- // Creating the middleware list for the route. As default, we support some
84
- // internal middlewares such as `Accept Language Middleware` which parse
85
- // the "accept-language" header to use in the application general.
86
- const middlewares = [
87
- Middlewares_1.acceptLanguageMiddleware,
88
- ...model.instance.getMiddlewares(handlerType),
89
- ];
90
- // Adding the route to the express
91
- yield this.addExpressRoute(handlerType, url, middlewares, model, parentModel, relation);
39
+ async createRouteByModel(model, urlPrefix = "", parentModel = null, relation = null, allowRecursive = true) {
40
+ if (model.instance.ignore) {
41
+ return;
42
+ }
43
+ const resource = this.getResourcePath(model, relation);
44
+ // We create and handle routes by not duplicate so many lines.
45
+ for (const handler of Object.keys(constants_1.API_ROUTE_TEMPLATES)) {
46
+ const handlerType = handler;
47
+ if (!model.instance.handlers.includes(handlerType)) {
48
+ continue;
92
49
  }
93
- yield this.createChildRoutes(model, resource, urlPrefix);
94
- yield this.createNestedRoutes(model, allowRecursive, urlPrefix, resource);
95
- });
50
+ const urlCreator = constants_1.API_ROUTE_TEMPLATES[handlerType];
51
+ const url = urlCreator(path_1.default.join(await this.getRootPrefix(), this.version.name), urlPrefix, resource, model.instance.primaryKey);
52
+ // Creating the middleware list for the route. As default, we support some
53
+ // internal middlewares such as `Accept Language Middleware` which parse
54
+ // the "accept-language" header to use in the application general.
55
+ const middlewares = [
56
+ Middlewares_1.acceptLanguageMiddleware,
57
+ ...model.instance.getMiddlewares(handlerType),
58
+ ];
59
+ // Adding the route to the express
60
+ await this.addExpressRoute(handlerType, url, middlewares, model, parentModel, relation);
61
+ }
62
+ await this.createChildRoutes(model, resource, urlPrefix);
63
+ await this.createNestedRoutes(model, allowRecursive, urlPrefix, resource);
96
64
  }
97
- createNestedRoutes(model, allowRecursive, urlPrefix, resource) {
98
- return __awaiter(this, void 0, void 0, function* () {
99
- if (!model.isRecursive || !allowRecursive) {
100
- return;
101
- }
102
- // We should different parameter name for child routes
103
- const relation = model.relations.find((relation) => relation.model === model.name &&
104
- relation.type === Enums_1.Relationships.HAS_MANY);
105
- if (relation) {
106
- yield this.createRouteByModel(model, `${urlPrefix}${resource}/:${(0, change_case_1.camelCase)(relation.foreignKey)}/`, model, relation, false);
107
- }
108
- });
65
+ async createNestedRoutes(model, allowRecursive, urlPrefix, resource) {
66
+ if (!model.isRecursive || !allowRecursive) {
67
+ return;
68
+ }
69
+ // We should different parameter name for child routes
70
+ const relation = model.relations.find((relation) => relation.model === model.name &&
71
+ relation.type === Enums_1.Relationships.HAS_MANY);
72
+ if (relation) {
73
+ await this.createRouteByModel(model, `${urlPrefix}${resource}/:${(0, change_case_1.camelCase)(relation.foreignKey)}/`, model, relation, false);
74
+ }
109
75
  }
110
- createChildRoutes(model, resource, urlPrefix) {
111
- return __awaiter(this, void 0, void 0, function* () {
112
- if (model.children.length === 0) {
113
- return;
114
- }
115
- // We should different parameter name for child routes
116
- const subRelations = model.relations.filter((item) => item.type === Enums_1.Relationships.HAS_MANY);
117
- for (const relation of subRelations) {
118
- const child = model.children.find((item) => item.name === relation.model);
119
- // It should be recursive
120
- if (child) {
121
- yield this.createRouteByModel(child, `${urlPrefix}${resource}/:${(0, change_case_1.camelCase)(relation.foreignKey)}/`, model, relation);
122
- }
76
+ async createChildRoutes(model, resource, urlPrefix) {
77
+ if (model.children.length === 0) {
78
+ return;
79
+ }
80
+ // We should different parameter name for child routes
81
+ const subRelations = model.relations.filter((item) => item.type === Enums_1.Relationships.HAS_MANY);
82
+ for (const relation of subRelations) {
83
+ const child = model.children.find((item) => item.name === relation.model);
84
+ // It should be recursive
85
+ if (child) {
86
+ await this.createRouteByModel(child, `${urlPrefix}${resource}/:${(0, change_case_1.camelCase)(relation.foreignKey)}/`, model, relation);
123
87
  }
124
- });
88
+ }
125
89
  }
126
- addExpressRoute(handlerType, url, middlewares, model, parentModel, relation) {
127
- return __awaiter(this, void 0, void 0, function* () {
128
- const docs = Services_1.DocumentationService.getInstance();
129
- const app = yield Services_1.IoCService.useByType("App");
130
- const handler = (req, res) => {
131
- this.requestHandler(handlerType, req, res, model, parentModel, relation);
132
- };
133
- switch (handlerType) {
134
- case Enums_1.HandlerTypes.ALL:
135
- app.get(url, middlewares, handler);
136
- docs.push(Enums_1.HttpMethods.GET, url, model);
137
- break;
138
- case Enums_1.HandlerTypes.DELETE:
139
- app.delete(url, middlewares, handler);
140
- docs.push(Enums_1.HttpMethods.DELETE, url, model);
141
- break;
142
- case Enums_1.HandlerTypes.FORCE_DELETE:
143
- app.delete(url, middlewares, handler);
144
- docs.push(Enums_1.HttpMethods.DELETE, url, model);
145
- break;
146
- case Enums_1.HandlerTypes.INSERT:
147
- app.post(url, middlewares, handler);
148
- docs.push(Enums_1.HttpMethods.POST, url, model);
149
- break;
150
- case Enums_1.HandlerTypes.PAGINATE:
151
- app.get(url, middlewares, handler);
152
- docs.push(Enums_1.HttpMethods.GET, url, model);
153
- break;
154
- case Enums_1.HandlerTypes.PATCH:
155
- app.patch(url, middlewares, handler);
156
- docs.push(Enums_1.HttpMethods.PATCH, url, model);
157
- break;
158
- case Enums_1.HandlerTypes.SHOW:
159
- app.get(url, middlewares, handler);
160
- docs.push(Enums_1.HttpMethods.GET, url, model);
161
- break;
162
- case Enums_1.HandlerTypes.UPDATE:
163
- app.put(url, middlewares, handler);
164
- docs.push(Enums_1.HttpMethods.PUT, url, model);
165
- break;
166
- default:
167
- throw new Error("Undefined handler type");
168
- }
169
- });
90
+ getPrimaryKeyName = (model) => {
91
+ return (pluralize_1.default.singular(model.name).toLowerCase() +
92
+ this.ucFirst(model.instance.primaryKey));
93
+ };
94
+ ucFirst = (value) => {
95
+ return value.charAt(0).toUpperCase() + value.slice(1);
96
+ };
97
+ async addExpressRoute(handlerType, url, middlewares, model, parentModel, relation) {
98
+ const docs = Services_1.DocumentationService.getInstance();
99
+ const app = await Services_1.IoCService.useByType("App");
100
+ const handler = (req, res) => {
101
+ this.requestHandler(handlerType, req, res, model, parentModel, relation);
102
+ };
103
+ switch (handlerType) {
104
+ case Enums_1.HandlerTypes.ALL:
105
+ app.get(url, middlewares, handler);
106
+ docs.push(Enums_1.HttpMethods.GET, url, model);
107
+ break;
108
+ case Enums_1.HandlerTypes.DELETE:
109
+ app.delete(url, middlewares, handler);
110
+ docs.push(Enums_1.HttpMethods.DELETE, url, model);
111
+ break;
112
+ case Enums_1.HandlerTypes.FORCE_DELETE:
113
+ app.delete(url, middlewares, handler);
114
+ docs.push(Enums_1.HttpMethods.DELETE, url, model);
115
+ break;
116
+ case Enums_1.HandlerTypes.INSERT:
117
+ app.post(url, middlewares, handler);
118
+ docs.push(Enums_1.HttpMethods.POST, url, model);
119
+ break;
120
+ case Enums_1.HandlerTypes.PAGINATE:
121
+ app.get(url, middlewares, handler);
122
+ docs.push(Enums_1.HttpMethods.GET, url, model);
123
+ break;
124
+ case Enums_1.HandlerTypes.PATCH:
125
+ app.patch(url, middlewares, handler);
126
+ docs.push(Enums_1.HttpMethods.PATCH, url, model);
127
+ break;
128
+ case Enums_1.HandlerTypes.SHOW:
129
+ app.get(url, middlewares, handler);
130
+ docs.push(Enums_1.HttpMethods.GET, url, model);
131
+ break;
132
+ case Enums_1.HandlerTypes.UPDATE:
133
+ app.put(url, middlewares, handler);
134
+ docs.push(Enums_1.HttpMethods.PUT, url, model);
135
+ break;
136
+ default:
137
+ throw new Error("Undefined handler type");
138
+ }
170
139
  }
171
- requestHandler(handlerType, req, res, model, parentModel, relation) {
172
- return __awaiter(this, void 0, void 0, function* () {
173
- let trx = null;
174
- let hasTransaction = false;
175
- try {
176
- const database = (yield Services_1.IoCService.use("Database"));
177
- const api = Services_1.APIService.getInstance();
178
- hasTransaction = yield new Resolvers_1.TransactionResolver(this.version).resolve(model, handlerType);
179
- if (hasTransaction) {
180
- trx = yield database.transaction();
181
- }
182
- const handler = HandlerFactory_1.default.get(handlerType);
183
- const pack = {
184
- api,
185
- version: this.version,
186
- req,
187
- res,
188
- handlerType,
189
- model,
190
- parentModel,
191
- relation,
192
- database: hasTransaction && trx ? trx : database,
193
- };
194
- yield handler(pack);
195
- if (hasTransaction && trx) {
196
- trx.commit();
197
- }
140
+ async requestHandler(handlerType, req, res, model, parentModel, relation) {
141
+ let trx = null;
142
+ let hasTransaction = false;
143
+ try {
144
+ const database = (await Services_1.IoCService.use("Database"));
145
+ const api = Services_1.APIService.getInstance();
146
+ hasTransaction = await new Resolvers_1.TransactionResolver(this.version).resolve(model, handlerType);
147
+ if (hasTransaction) {
148
+ trx = await database.transaction();
198
149
  }
199
- catch (error) {
200
- if (hasTransaction && trx) {
201
- trx.rollback();
202
- }
203
- this.sendErrorAsResponse(res, error);
150
+ const handler = HandlerFactory_1.default.get(handlerType);
151
+ const pack = {
152
+ api,
153
+ version: this.version,
154
+ req,
155
+ res,
156
+ handlerType,
157
+ model,
158
+ parentModel,
159
+ relation,
160
+ database: hasTransaction && trx ? trx : database,
161
+ };
162
+ await handler(pack);
163
+ if (hasTransaction && trx) {
164
+ trx.commit();
204
165
  }
205
- });
166
+ }
167
+ catch (error) {
168
+ if (hasTransaction && trx) {
169
+ trx.rollback();
170
+ }
171
+ this.sendErrorAsResponse(res, error);
172
+ }
206
173
  }
207
174
  sendErrorAsResponse(res, error) {
208
175
  const type = error.type;
@@ -229,5 +196,16 @@ class RouterBuilder {
229
196
  ? (0, change_case_1.paramCase)(relation.name)
230
197
  : (0, change_case_1.paramCase)(pluralize_1.default.plural(model.name)).toLowerCase();
231
198
  }
199
+ getRootPrefix = async () => {
200
+ const api = Services_1.APIService.getInstance();
201
+ let prefix = api.config.prefix || "api";
202
+ if (prefix.substr(0, 1) === "/") {
203
+ prefix = prefix.substr(1);
204
+ }
205
+ if (prefix.substr(prefix.length - 1) === "/") {
206
+ prefix = prefix.substr(0, prefix.length - 1);
207
+ }
208
+ return prefix;
209
+ };
232
210
  }
233
211
  exports.default = RouterBuilder;
@@ -2,6 +2,9 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const http_status_codes_1 = require("http-status-codes");
4
4
  class ApiError extends Error {
5
+ type;
6
+ status;
7
+ message;
5
8
  constructor(message) {
6
9
  super(message);
7
10
  this.type = "ApiError";
@@ -1,6 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  class AxeError extends Error {
4
+ type;
5
+ code;
6
+ message;
4
7
  constructor(code, message) {
5
8
  super(message);
6
9
  this.type = "AxeError";
@@ -1,18 +1,9 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
2
  Object.defineProperty(exports, "__esModule", { value: true });
12
3
  const Helpers_1 = require("./Helpers");
13
4
  const Services_1 = require("../Services");
14
5
  const Enums_1 = require("../Enums");
15
- exports.default = (pack) => __awaiter(void 0, void 0, void 0, function* () {
6
+ exports.default = async (pack) => {
16
7
  const { version, model, req, res, database, relation, parentModel } = pack;
17
8
  const queryParser = new Services_1.QueryService(model, version.modelList.get(), version.config);
18
9
  // We should parse URL query string to use as condition in Lucid query
@@ -27,19 +18,25 @@ exports.default = (pack) => __awaiter(void 0, void 0, void 0, function* () {
27
18
  (0, Helpers_1.addForeignKeyQuery)(req, query, relation, parentModel);
28
19
  // Users should be able to filter records
29
20
  queryParser.applyWheres(query, conditions.q);
30
- yield (0, Helpers_1.callHooks)(model, Enums_1.HookFunctionTypes.onBeforeAll, Object.assign(Object.assign({}, pack), { conditions,
31
- query }));
21
+ await (0, Helpers_1.callHooks)(model, Enums_1.HookFunctionTypes.onBeforeAll, {
22
+ ...pack,
23
+ conditions,
24
+ query,
25
+ });
32
26
  // User should be able to select sorting fields and types
33
27
  queryParser.applySorting(query, conditions.sort);
34
- let result = yield query;
28
+ let result = await query;
35
29
  // We should try to get related data if there is any
36
- yield (0, Helpers_1.getRelatedData)(version, result, conditions.with, model, version.modelList, database, Enums_1.HandlerTypes.ALL, req);
37
- yield (0, Helpers_1.callHooks)(model, Enums_1.HookFunctionTypes.onAfterAll, Object.assign(Object.assign({}, pack), { result,
30
+ await (0, Helpers_1.getRelatedData)(version, result, conditions.with, model, version.modelList, database, Enums_1.HandlerTypes.ALL, req);
31
+ await (0, Helpers_1.callHooks)(model, Enums_1.HookFunctionTypes.onAfterAll, {
32
+ ...pack,
33
+ result,
38
34
  conditions,
39
- query }));
35
+ query,
36
+ });
40
37
  // Serializing the data by the model's serialize method
41
- result = yield (0, Helpers_1.serializeData)(version, result, model.serialize, Enums_1.HandlerTypes.ALL, req);
38
+ result = await (0, Helpers_1.serializeData)(version, result, model.serialize, Enums_1.HandlerTypes.ALL, req);
42
39
  // Filtering hidden fields from the response data.
43
40
  (0, Helpers_1.filterHiddenFields)(result, model.instance.hiddens);
44
41
  return res.json(result);
45
- });
42
+ };
@@ -1,13 +1,4 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
12
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
13
4
  };
@@ -15,7 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
15
6
  const Helpers_1 = require("./Helpers");
16
7
  const Enums_1 = require("../Enums");
17
8
  const ApiError_1 = __importDefault(require("../Exceptions/ApiError"));
18
- exports.default = (pack) => __awaiter(void 0, void 0, void 0, function* () {
9
+ exports.default = async (pack) => {
19
10
  const { model, req, res, database, relation, parentModel } = pack;
20
11
  const query = database
21
12
  .from(model.instance.table)
@@ -24,24 +15,36 @@ exports.default = (pack) => __awaiter(void 0, void 0, void 0, function* () {
24
15
  (0, Helpers_1.addSoftDeleteQuery)(model, null, query);
25
16
  // If there is a relation, we should bind it
26
17
  (0, Helpers_1.addForeignKeyQuery)(req, query, relation, parentModel);
27
- yield (0, Helpers_1.callHooks)(model, Enums_1.HookFunctionTypes.onBeforeDeleteQuery, Object.assign(Object.assign({}, pack), { query }));
28
- const item = yield query.first();
18
+ await (0, Helpers_1.callHooks)(model, Enums_1.HookFunctionTypes.onBeforeDeleteQuery, {
19
+ ...pack,
20
+ query,
21
+ });
22
+ const item = await query.first();
29
23
  if (!item) {
30
24
  throw new ApiError_1.default(`The item is not found on ${model.name}.`);
31
25
  }
32
- yield (0, Helpers_1.callHooks)(model, Enums_1.HookFunctionTypes.onAfterDeleteQuery, Object.assign(Object.assign({}, pack), { query,
33
- item }));
34
- yield (0, Helpers_1.callHooks)(model, Enums_1.HookFunctionTypes.onBeforeDelete, Object.assign(Object.assign({}, pack), { query,
35
- item }));
26
+ await (0, Helpers_1.callHooks)(model, Enums_1.HookFunctionTypes.onAfterDeleteQuery, {
27
+ ...pack,
28
+ query,
29
+ item,
30
+ });
31
+ await (0, Helpers_1.callHooks)(model, Enums_1.HookFunctionTypes.onBeforeDelete, {
32
+ ...pack,
33
+ query,
34
+ item,
35
+ });
36
36
  // If there is a deletedAtColumn, it means that this table support soft-delete
37
37
  if (model.instance.deletedAtColumn) {
38
- yield query.update({
38
+ await query.update({
39
39
  [model.instance.deletedAtColumn]: new Date(),
40
40
  });
41
41
  }
42
42
  else {
43
- yield query.delete();
43
+ await query.delete();
44
44
  }
45
- yield (0, Helpers_1.callHooks)(model, Enums_1.HookFunctionTypes.onAfterDelete, Object.assign(Object.assign({}, pack), { item }));
45
+ await (0, Helpers_1.callHooks)(model, Enums_1.HookFunctionTypes.onAfterDelete, {
46
+ ...pack,
47
+ item,
48
+ });
46
49
  return res.json();
47
- });
50
+ };
@@ -1,22 +1,22 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
2
  Object.defineProperty(exports, "__esModule", { value: true });
12
3
  const Services_1 = require("../Services");
13
- exports.default = (req, res) => __awaiter(void 0, void 0, void 0, function* () {
4
+ exports.default = async (req, res) => {
14
5
  const docs = Services_1.DocumentationService.getInstance();
15
6
  const api = Services_1.APIService.getInstance();
16
7
  res.json({
17
8
  routes: docs.get(),
18
9
  versions: api.versions.map((version) => {
19
- return Object.assign(Object.assign({}, version), { config: Object.assign(Object.assign({}, version.config), { transaction: undefined }), folders: undefined, modelList: undefined, models: version.modelList.get() });
10
+ return {
11
+ ...version,
12
+ config: {
13
+ ...version.config,
14
+ transaction: undefined,
15
+ },
16
+ folders: undefined,
17
+ modelList: undefined,
18
+ models: version.modelList.get(),
19
+ };
20
20
  }),
21
21
  });
22
- });
22
+ };