axe-api 0.22.0 → 0.30.0-rc10
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/build/dev-kit.d.ts +1 -0
- package/build/dev-kit.js +16 -0
- package/build/index.d.ts +3 -3
- package/build/index.js +4 -1
- package/build/src/Builders/ModelTreeBuilder.d.ts +3 -0
- package/build/src/Builders/ModelTreeBuilder.js +21 -17
- package/build/src/Builders/RouterBuilder.d.ts +3 -0
- package/build/src/Builders/RouterBuilder.js +28 -27
- package/build/src/Enums.d.ts +98 -0
- package/build/src/Enums.js +103 -1
- package/build/src/Exceptions/ApiError.d.ts +1 -1
- package/build/src/Exceptions/ApiError.js +2 -2
- package/build/src/Exceptions/AxeError.d.ts +8 -0
- package/build/src/Exceptions/AxeError.js +11 -0
- package/build/src/Handlers/AllHandler.js +4 -5
- package/build/src/Handlers/DocsHandler.d.ts +3 -0
- package/build/src/Handlers/DocsHandler.js +22 -0
- package/build/src/Handlers/HandlerFactory.d.ts +1 -1
- package/build/src/Handlers/HandlerFactory.js +1 -1
- package/build/src/Handlers/Helpers.d.ts +5 -3
- package/build/src/Handlers/Helpers.js +29 -13
- package/build/src/Handlers/PaginateHandler.js +4 -5
- package/build/src/Handlers/PatchHandler.js +2 -2
- package/build/src/Handlers/RoutesHandler.d.ts +3 -0
- package/build/src/Handlers/RoutesHandler.js +16 -0
- package/build/src/Handlers/ShowHandler.js +4 -5
- package/build/src/Handlers/StoreHandler.js +2 -2
- package/build/src/Handlers/UpdateHandler.js +2 -2
- package/build/src/Helpers.d.ts +4 -0
- package/build/src/Helpers.js +78 -0
- package/build/src/Interfaces.d.ts +54 -14
- package/build/src/Middlewares/acceptLanguageMiddleware.js +3 -5
- package/build/src/Model.d.ts +2 -2
- package/build/src/Model.js +3 -4
- package/build/src/Resolvers/FileResolver.js +2 -2
- package/build/src/Resolvers/GeneralHookResolver.d.ts +4 -2
- package/build/src/Resolvers/GeneralHookResolver.js +5 -8
- package/build/src/Resolvers/ModelResolver.d.ts +7 -0
- package/build/src/Resolvers/ModelResolver.js +99 -19
- package/build/src/Resolvers/TransactionResolver.d.ts +4 -2
- package/build/src/Resolvers/TransactionResolver.js +5 -4
- package/build/src/Resolvers/VersionConfigResolver.d.ts +7 -0
- package/build/src/Resolvers/VersionConfigResolver.js +58 -0
- package/build/src/Resolvers/VersionResolver.d.ts +7 -0
- package/build/src/Resolvers/VersionResolver.js +65 -0
- package/build/src/Resolvers/index.d.ts +3 -2
- package/build/src/Resolvers/index.js +5 -3
- package/build/src/Server.d.ts +3 -2
- package/build/src/Server.js +73 -46
- package/build/src/Services/APIService.d.ts +16 -0
- package/build/src/Services/APIService.js +82 -0
- package/build/src/Services/DocumentationService.d.ts +3 -1
- package/build/src/Services/DocumentationService.js +6 -0
- package/build/src/Services/LimitService.d.ts +5 -0
- package/build/src/Services/LimitService.js +116 -0
- package/build/src/Services/LogService.d.ts +4 -1
- package/build/src/Services/LogService.js +6 -0
- package/build/src/Services/ModelService.d.ts +6 -1
- package/build/src/Services/ModelService.js +8 -0
- package/build/src/Services/QueryService.d.ts +3 -2
- package/build/src/Services/QueryService.js +32 -7
- package/build/src/Services/SchemaValidatorService.d.ts +7 -0
- package/build/src/Services/SchemaValidatorService.js +62 -8
- package/build/src/Services/index.d.ts +3 -1
- package/build/src/Services/index.js +6 -1
- package/build/src/Types.d.ts +2 -0
- package/build/src/Types.js +2 -0
- package/build/src/constants.d.ts +5 -1
- package/build/src/constants.js +43 -2
- package/package.json +26 -24
- package/CHANGELOG.md +0 -212
- package/build/src/Resolvers/FolderResolver.d.ts +0 -5
- package/build/src/Resolvers/FolderResolver.js +0 -19
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/build/dev-kit.js
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const node_color_log_1 = __importDefault(require("node-color-log"));
|
|
7
|
+
const dotenv_1 = __importDefault(require("dotenv"));
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
9
|
+
const index_1 = require("./index");
|
|
10
|
+
node_color_log_1.default.bgColor("yellow").color("black").log("Axe API dev-kit (1.0.0)");
|
|
11
|
+
node_color_log_1.default
|
|
12
|
+
.color("blue")
|
|
13
|
+
.log("Docs: https://axe-api.com/contribution/fundamentals.html \n");
|
|
14
|
+
dotenv_1.default.config();
|
|
15
|
+
const server = new index_1.Server();
|
|
16
|
+
server.start(path_1.default.join(__dirname, "dev-kit"));
|
package/build/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import Server from "./src/Server";
|
|
2
2
|
import Model from "./src/Model";
|
|
3
3
|
import ApiError from "./src/Exceptions/ApiError";
|
|
4
|
-
import { DEFAULT_HANDLERS } from "./src/constants";
|
|
5
|
-
import { IoCService } from "./src/Services";
|
|
4
|
+
import { DEFAULT_HANDLERS, DEFAULT_VERSION_CONFIG } from "./src/constants";
|
|
5
|
+
import { IoCService, allow, deny } from "./src/Services";
|
|
6
6
|
export * from "./src/Enums";
|
|
7
7
|
export * from "./src/Interfaces";
|
|
8
|
-
export { Server, Model, ApiError, DEFAULT_HANDLERS, IoCService };
|
|
8
|
+
export { Server, Model, ApiError, DEFAULT_HANDLERS, DEFAULT_VERSION_CONFIG, IoCService, allow, deny, };
|
package/build/index.js
CHANGED
|
@@ -17,7 +17,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
17
17
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
18
18
|
};
|
|
19
19
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
-
exports.IoCService = exports.DEFAULT_HANDLERS = exports.ApiError = exports.Model = exports.Server = void 0;
|
|
20
|
+
exports.deny = exports.allow = exports.IoCService = exports.DEFAULT_VERSION_CONFIG = exports.DEFAULT_HANDLERS = exports.ApiError = exports.Model = exports.Server = void 0;
|
|
21
21
|
const Server_1 = __importDefault(require("./src/Server"));
|
|
22
22
|
exports.Server = Server_1.default;
|
|
23
23
|
const Model_1 = __importDefault(require("./src/Model"));
|
|
@@ -26,7 +26,10 @@ const ApiError_1 = __importDefault(require("./src/Exceptions/ApiError"));
|
|
|
26
26
|
exports.ApiError = ApiError_1.default;
|
|
27
27
|
const constants_1 = require("./src/constants");
|
|
28
28
|
Object.defineProperty(exports, "DEFAULT_HANDLERS", { enumerable: true, get: function () { return constants_1.DEFAULT_HANDLERS; } });
|
|
29
|
+
Object.defineProperty(exports, "DEFAULT_VERSION_CONFIG", { enumerable: true, get: function () { return constants_1.DEFAULT_VERSION_CONFIG; } });
|
|
29
30
|
const Services_1 = require("./src/Services");
|
|
30
31
|
Object.defineProperty(exports, "IoCService", { enumerable: true, get: function () { return Services_1.IoCService; } });
|
|
32
|
+
Object.defineProperty(exports, "allow", { enumerable: true, get: function () { return Services_1.allow; } });
|
|
33
|
+
Object.defineProperty(exports, "deny", { enumerable: true, get: function () { return Services_1.deny; } });
|
|
31
34
|
__exportStar(require("./src/Enums"), exports);
|
|
32
35
|
__exportStar(require("./src/Interfaces"), exports);
|
|
@@ -12,38 +12,42 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
12
12
|
const Enums_1 = require("../Enums");
|
|
13
13
|
const Services_1 = require("../Services");
|
|
14
14
|
class ModelTreeBuilder {
|
|
15
|
+
constructor(version) {
|
|
16
|
+
this.version = version;
|
|
17
|
+
}
|
|
15
18
|
build() {
|
|
16
19
|
return __awaiter(this, void 0, void 0, function* () {
|
|
17
|
-
const logger =
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
this.
|
|
21
|
-
this.
|
|
22
|
-
|
|
23
|
-
logger.info("Model tree has been created.");
|
|
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.`);
|
|
24
26
|
});
|
|
25
27
|
}
|
|
26
|
-
getRootLevelOfTree(
|
|
28
|
+
getRootLevelOfTree() {
|
|
27
29
|
const childModels = [];
|
|
28
|
-
modelList.get().forEach((model) => {
|
|
30
|
+
this.version.modelList.get().forEach((model) => {
|
|
29
31
|
childModels.push(...model.relations
|
|
30
32
|
.filter((relation) => relation.type === Enums_1.Relationships.HAS_MANY)
|
|
31
33
|
.map((relation) => relation.model));
|
|
32
34
|
});
|
|
33
|
-
return
|
|
35
|
+
return this.version.modelList
|
|
36
|
+
.get()
|
|
37
|
+
.filter((model) => !childModels.includes(model.name));
|
|
34
38
|
}
|
|
35
|
-
createRecursiveTree(tree
|
|
39
|
+
createRecursiveTree(tree) {
|
|
36
40
|
for (const model of tree) {
|
|
37
|
-
this.setChildrens(model
|
|
41
|
+
this.setChildrens(model);
|
|
38
42
|
}
|
|
39
43
|
}
|
|
40
|
-
setChildrens(model
|
|
44
|
+
setChildrens(model) {
|
|
41
45
|
const childModelNames = this.getChildModelNames(model);
|
|
42
|
-
model.children = modelList
|
|
46
|
+
model.children = this.version.modelList
|
|
43
47
|
.get()
|
|
44
48
|
.filter((item) => childModelNames.includes(item.name));
|
|
45
49
|
for (const child of model.children) {
|
|
46
|
-
this.setChildrens(child
|
|
50
|
+
this.setChildrens(child);
|
|
47
51
|
}
|
|
48
52
|
}
|
|
49
53
|
getChildModelNames(model) {
|
|
@@ -51,9 +55,9 @@ class ModelTreeBuilder {
|
|
|
51
55
|
.filter((item) => item.type === Enums_1.Relationships.HAS_MANY)
|
|
52
56
|
.map((item) => item.model);
|
|
53
57
|
}
|
|
54
|
-
addNestedRoutes(tree
|
|
58
|
+
addNestedRoutes(tree) {
|
|
55
59
|
// We should add recursive models
|
|
56
|
-
modelList.get().forEach((model) => {
|
|
60
|
+
this.version.modelList.get().forEach((model) => {
|
|
57
61
|
const recursiveRelations = model.relations.filter((relation) => relation.model === model.name);
|
|
58
62
|
if (recursiveRelations.length === 2) {
|
|
59
63
|
tree.push(Object.assign(Object.assign({}, model), { isRecursive: true, children: [] }));
|
|
@@ -13,15 +13,16 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
13
13
|
};
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
15
|
const pluralize_1 = __importDefault(require("pluralize"));
|
|
16
|
-
const
|
|
16
|
+
const path_1 = __importDefault(require("path"));
|
|
17
17
|
const change_case_1 = require("change-case");
|
|
18
18
|
const Resolvers_1 = require("../Resolvers");
|
|
19
19
|
const constants_1 = require("../constants");
|
|
20
20
|
const Enums_1 = require("../Enums");
|
|
21
|
+
const HandlerFactory_1 = __importDefault(require("../Handlers/HandlerFactory"));
|
|
21
22
|
const Services_1 = require("../Services");
|
|
22
23
|
const Middlewares_1 = require("../Middlewares");
|
|
23
24
|
class RouterBuilder {
|
|
24
|
-
constructor() {
|
|
25
|
+
constructor(version) {
|
|
25
26
|
this.getPrimaryKeyName = (model) => {
|
|
26
27
|
return (pluralize_1.default.singular(model.name).toLowerCase() +
|
|
27
28
|
this.ucFirst(model.instance.primaryKey));
|
|
@@ -30,9 +31,8 @@ class RouterBuilder {
|
|
|
30
31
|
return value.charAt(0).toUpperCase() + value.slice(1);
|
|
31
32
|
};
|
|
32
33
|
this.getRootPrefix = () => __awaiter(this, void 0, void 0, function* () {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
let prefix = ((_a = config === null || config === void 0 ? void 0 : config.Application) === null || _a === void 0 ? void 0 : _a.prefix) || "api";
|
|
34
|
+
const api = Services_1.APIService.getInstance();
|
|
35
|
+
let prefix = api.config.prefix || "api";
|
|
36
36
|
if (prefix.substr(0, 1) === "/") {
|
|
37
37
|
prefix = prefix.substr(1);
|
|
38
38
|
}
|
|
@@ -41,32 +41,31 @@ class RouterBuilder {
|
|
|
41
41
|
}
|
|
42
42
|
return prefix;
|
|
43
43
|
});
|
|
44
|
+
this.version = version;
|
|
44
45
|
}
|
|
45
46
|
build() {
|
|
46
47
|
return __awaiter(this, void 0, void 0, function* () {
|
|
47
48
|
const app = yield Services_1.IoCService.useByType("App");
|
|
48
|
-
const logger =
|
|
49
|
-
const
|
|
50
|
-
const modelList = yield Services_1.IoCService.useByType("ModelListService");
|
|
51
|
-
const generalHooks = yield Resolvers_1.GeneralHookResolver.resolve();
|
|
49
|
+
const logger = Services_1.LogService.getInstance();
|
|
50
|
+
const generalHooks = yield new Resolvers_1.GeneralHookResolver(this.version).resolve();
|
|
52
51
|
if (generalHooks.onBeforeInit) {
|
|
53
52
|
generalHooks.onBeforeInit(app);
|
|
54
53
|
}
|
|
55
|
-
yield this.createRoutesByModelTree(
|
|
56
|
-
logger.info(
|
|
54
|
+
yield this.createRoutesByModelTree();
|
|
55
|
+
logger.info(`[${this.version.name}] Express routes have been created.`);
|
|
57
56
|
if (generalHooks.onAfterInit) {
|
|
58
57
|
generalHooks.onAfterInit(app);
|
|
59
58
|
}
|
|
60
59
|
});
|
|
61
60
|
}
|
|
62
|
-
createRoutesByModelTree(
|
|
61
|
+
createRoutesByModelTree() {
|
|
63
62
|
return __awaiter(this, void 0, void 0, function* () {
|
|
64
|
-
for (const model of modelTree) {
|
|
65
|
-
yield this.createRouteByModel(model
|
|
63
|
+
for (const model of this.version.modelTree) {
|
|
64
|
+
yield this.createRouteByModel(model);
|
|
66
65
|
}
|
|
67
66
|
});
|
|
68
67
|
}
|
|
69
|
-
createRouteByModel(model,
|
|
68
|
+
createRouteByModel(model, urlPrefix = "", parentModel = null, relation = null, allowRecursive = true) {
|
|
70
69
|
return __awaiter(this, void 0, void 0, function* () {
|
|
71
70
|
if (model.instance.ignore) {
|
|
72
71
|
return;
|
|
@@ -79,7 +78,7 @@ class RouterBuilder {
|
|
|
79
78
|
continue;
|
|
80
79
|
}
|
|
81
80
|
const urlCreator = constants_1.API_ROUTE_TEMPLATES[handlerType];
|
|
82
|
-
const url = urlCreator(yield this.getRootPrefix(), urlPrefix, resource, model.instance.primaryKey);
|
|
81
|
+
const url = urlCreator(path_1.default.join(yield this.getRootPrefix(), this.version.name), urlPrefix, resource, model.instance.primaryKey);
|
|
83
82
|
// Creating the middleware list for the route. As default, we support some
|
|
84
83
|
// internal middlewares such as `Accept Language Middleware` which parse
|
|
85
84
|
// the "accept-language" header to use in the application general.
|
|
@@ -90,11 +89,11 @@ class RouterBuilder {
|
|
|
90
89
|
// Adding the route to the express
|
|
91
90
|
yield this.addExpressRoute(handlerType, url, middlewares, model, parentModel, relation);
|
|
92
91
|
}
|
|
93
|
-
yield this.createChildRoutes(model,
|
|
94
|
-
yield this.createNestedRoutes(model,
|
|
92
|
+
yield this.createChildRoutes(model, resource, urlPrefix);
|
|
93
|
+
yield this.createNestedRoutes(model, allowRecursive, urlPrefix, resource);
|
|
95
94
|
});
|
|
96
95
|
}
|
|
97
|
-
createNestedRoutes(model,
|
|
96
|
+
createNestedRoutes(model, allowRecursive, urlPrefix, resource) {
|
|
98
97
|
return __awaiter(this, void 0, void 0, function* () {
|
|
99
98
|
if (!model.isRecursive || !allowRecursive) {
|
|
100
99
|
return;
|
|
@@ -103,11 +102,11 @@ class RouterBuilder {
|
|
|
103
102
|
const relation = model.relations.find((relation) => relation.model === model.name &&
|
|
104
103
|
relation.type === Enums_1.Relationships.HAS_MANY);
|
|
105
104
|
if (relation) {
|
|
106
|
-
yield this.createRouteByModel(model,
|
|
105
|
+
yield this.createRouteByModel(model, `${urlPrefix}${resource}/:${(0, change_case_1.camelCase)(relation.foreignKey)}/`, model, relation, false);
|
|
107
106
|
}
|
|
108
107
|
});
|
|
109
108
|
}
|
|
110
|
-
createChildRoutes(model,
|
|
109
|
+
createChildRoutes(model, resource, urlPrefix) {
|
|
111
110
|
return __awaiter(this, void 0, void 0, function* () {
|
|
112
111
|
if (model.children.length === 0) {
|
|
113
112
|
return;
|
|
@@ -118,14 +117,14 @@ class RouterBuilder {
|
|
|
118
117
|
const child = model.children.find((item) => item.name === relation.model);
|
|
119
118
|
// It should be recursive
|
|
120
119
|
if (child) {
|
|
121
|
-
yield this.createRouteByModel(child,
|
|
120
|
+
yield this.createRouteByModel(child, `${urlPrefix}${resource}/:${(0, change_case_1.camelCase)(relation.foreignKey)}/`, model, relation);
|
|
122
121
|
}
|
|
123
122
|
}
|
|
124
123
|
});
|
|
125
124
|
}
|
|
126
125
|
addExpressRoute(handlerType, url, middlewares, model, parentModel, relation) {
|
|
127
126
|
return __awaiter(this, void 0, void 0, function* () {
|
|
128
|
-
const docs =
|
|
127
|
+
const docs = Services_1.DocumentationService.getInstance();
|
|
129
128
|
const app = yield Services_1.IoCService.useByType("App");
|
|
130
129
|
const handler = (req, res) => {
|
|
131
130
|
this.requestHandler(handlerType, req, res, model, parentModel, relation);
|
|
@@ -173,14 +172,16 @@ class RouterBuilder {
|
|
|
173
172
|
let trx = null;
|
|
174
173
|
let hasTransaction = false;
|
|
175
174
|
try {
|
|
176
|
-
const factory = yield Services_1.IoCService.useByType("HandlerFactory");
|
|
177
175
|
const database = (yield Services_1.IoCService.use("Database"));
|
|
178
|
-
|
|
176
|
+
const api = Services_1.APIService.getInstance();
|
|
177
|
+
hasTransaction = yield new Resolvers_1.TransactionResolver(this.version).resolve(model, handlerType);
|
|
179
178
|
if (hasTransaction) {
|
|
180
179
|
trx = yield database.transaction();
|
|
181
180
|
}
|
|
182
|
-
const handler =
|
|
181
|
+
const handler = HandlerFactory_1.default.get(handlerType);
|
|
183
182
|
const pack = {
|
|
183
|
+
api,
|
|
184
|
+
version: this.version,
|
|
184
185
|
req,
|
|
185
186
|
res,
|
|
186
187
|
handlerType,
|
|
@@ -215,7 +216,7 @@ class RouterBuilder {
|
|
|
215
216
|
default:
|
|
216
217
|
// We should not show the real errors on production
|
|
217
218
|
if (process.env.NODE_ENV === "production") {
|
|
218
|
-
res.status(
|
|
219
|
+
res.status(Enums_1.StatusCodes.INTERNAL_SERVER_ERROR).json({
|
|
219
220
|
error: "An error occurredxx.",
|
|
220
221
|
});
|
|
221
222
|
}
|
package/build/src/Enums.d.ts
CHANGED
|
@@ -80,3 +80,101 @@ export declare enum TimestampColumns {
|
|
|
80
80
|
CREATED_AT = "createdAtColumn",
|
|
81
81
|
UPDATED_AT = "updatedAtColumn"
|
|
82
82
|
}
|
|
83
|
+
export declare enum AxeErrorCode {
|
|
84
|
+
UNACCEPTABLE_VERSION_NAME = "UNACCEPTABLE_VERSION_NAME",
|
|
85
|
+
VERSION_CONFIG_NOT_FOUND = "VERSION_CONFIG_NOT_FOUND",
|
|
86
|
+
TABLE_DOESNT_HAVE_ANY_COLUMN = "TABLE_DOESNT_HAVE_ANY_COLUMN",
|
|
87
|
+
RESERVED_VERSION_NAME = "RESERVED_VERSION_NAME",
|
|
88
|
+
UNDEFINED_COLUMN = "UNDEFINED_COLUMN",
|
|
89
|
+
UNDEFINED_RELATION_MODEL = "UNDEFINED_RELATION_MODEL",
|
|
90
|
+
UNDEFINED_HOOK_MODEL_RELATION = "UNDEFINED_HOOK_MODEL_RELATION",
|
|
91
|
+
UNACCEPTABLE_HOOK_FILE = "UNACCEPTABLE_HOOK_FILE",
|
|
92
|
+
UNDEFINED_RELATION_NAME = "UNDEFINED_RELATION_NAME"
|
|
93
|
+
}
|
|
94
|
+
export declare enum QueryFeatureType {
|
|
95
|
+
Allow = "Allow",
|
|
96
|
+
Deny = "Deny"
|
|
97
|
+
}
|
|
98
|
+
export declare enum QueryFeature {
|
|
99
|
+
All = "all",
|
|
100
|
+
FieldsAll = "fieldsAll",
|
|
101
|
+
Sorting = "sorting",
|
|
102
|
+
Limits = "limits",
|
|
103
|
+
WhereAll = "where.*",
|
|
104
|
+
WhereEqual = "where.equal",
|
|
105
|
+
WhereNotEqual = "where.notEqual",
|
|
106
|
+
WhereGt = "where.gt",
|
|
107
|
+
WhereGte = "where.gte",
|
|
108
|
+
WhereLt = "where.lt",
|
|
109
|
+
WhereLte = "where.lte",
|
|
110
|
+
WhereLike = "where.like",
|
|
111
|
+
WhereNotLike = "where.notLike",
|
|
112
|
+
WhereIn = "where.in",
|
|
113
|
+
WhereNotIn = "where.notIn",
|
|
114
|
+
WhereBetween = "where.between",
|
|
115
|
+
WhereNotBetween = "where.notBetween",
|
|
116
|
+
WhereNull = "where.null",
|
|
117
|
+
WhereNotNull = "where.notNull",
|
|
118
|
+
Trashed = "trashed",
|
|
119
|
+
WithAll = "with.*",
|
|
120
|
+
WithHasOne = "with.hasOne",
|
|
121
|
+
WithHasMany = "with.hasMany"
|
|
122
|
+
}
|
|
123
|
+
export declare enum StatusCodes {
|
|
124
|
+
ACCEPTED = 202,
|
|
125
|
+
BAD_GATEWAY = 502,
|
|
126
|
+
BAD_REQUEST = 400,
|
|
127
|
+
CONFLICT = 409,
|
|
128
|
+
CONTINUE = 100,
|
|
129
|
+
CREATED = 201,
|
|
130
|
+
EXPECTATION_FAILED = 417,
|
|
131
|
+
FAILED_DEPENDENCY = 424,
|
|
132
|
+
FORBIDDEN = 403,
|
|
133
|
+
GATEWAY_TIMEOUT = 504,
|
|
134
|
+
GONE = 410,
|
|
135
|
+
HTTP_VERSION_NOT_SUPPORTED = 505,
|
|
136
|
+
IM_A_TEAPOT = 418,
|
|
137
|
+
INSUFFICIENT_SPACE_ON_RESOURCE = 419,
|
|
138
|
+
INSUFFICIENT_STORAGE = 507,
|
|
139
|
+
INTERNAL_SERVER_ERROR = 500,
|
|
140
|
+
LENGTH_REQUIRED = 411,
|
|
141
|
+
LOCKED = 423,
|
|
142
|
+
METHOD_FAILURE = 420,
|
|
143
|
+
METHOD_NOT_ALLOWED = 405,
|
|
144
|
+
MOVED_PERMANENTLY = 301,
|
|
145
|
+
MOVED_TEMPORARILY = 302,
|
|
146
|
+
MULTI_STATUS = 207,
|
|
147
|
+
MULTIPLE_CHOICES = 300,
|
|
148
|
+
NETWORK_AUTHENTICATION_REQUIRED = 511,
|
|
149
|
+
NO_CONTENT = 204,
|
|
150
|
+
NON_AUTHORITATIVE_INFORMATION = 203,
|
|
151
|
+
NOT_ACCEPTABLE = 406,
|
|
152
|
+
NOT_FOUND = 404,
|
|
153
|
+
NOT_IMPLEMENTED = 501,
|
|
154
|
+
NOT_MODIFIED = 304,
|
|
155
|
+
OK = 200,
|
|
156
|
+
PARTIAL_CONTENT = 206,
|
|
157
|
+
PAYMENT_REQUIRED = 402,
|
|
158
|
+
PERMANENT_REDIRECT = 308,
|
|
159
|
+
PRECONDITION_FAILED = 412,
|
|
160
|
+
PRECONDITION_REQUIRED = 428,
|
|
161
|
+
PROCESSING = 102,
|
|
162
|
+
PROXY_AUTHENTICATION_REQUIRED = 407,
|
|
163
|
+
REQUEST_HEADER_FIELDS_TOO_LARGE = 431,
|
|
164
|
+
REQUEST_TIMEOUT = 408,
|
|
165
|
+
REQUEST_TOO_LONG = 413,
|
|
166
|
+
REQUEST_URI_TOO_LONG = 414,
|
|
167
|
+
REQUESTED_RANGE_NOT_SATISFIABLE = 416,
|
|
168
|
+
RESET_CONTENT = 205,
|
|
169
|
+
SEE_OTHER = 303,
|
|
170
|
+
SERVICE_UNAVAILABLE = 503,
|
|
171
|
+
SWITCHING_PROTOCOLS = 101,
|
|
172
|
+
TEMPORARY_REDIRECT = 307,
|
|
173
|
+
TOO_MANY_REQUESTS = 429,
|
|
174
|
+
UNAUTHORIZED = 401,
|
|
175
|
+
UNAVAILABLE_FOR_LEGAL_REASONS = 451,
|
|
176
|
+
UNPROCESSABLE_ENTITY = 422,
|
|
177
|
+
UNSUPPORTED_MEDIA_TYPE = 415,
|
|
178
|
+
USE_PROXY = 305,
|
|
179
|
+
MISDIRECTED_REQUEST = 421
|
|
180
|
+
}
|
package/build/src/Enums.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.TimestampColumns = exports.SortTypes = exports.Relationships = exports.LogLevels = exports.HttpMethods = exports.Extensions = exports.HookFunctionTypes = exports.HandlerTypes = exports.DependencyTypes = exports.ConditionTypes = void 0;
|
|
3
|
+
exports.StatusCodes = exports.QueryFeature = exports.QueryFeatureType = exports.AxeErrorCode = exports.TimestampColumns = exports.SortTypes = exports.Relationships = exports.LogLevels = exports.HttpMethods = exports.Extensions = exports.HookFunctionTypes = exports.HandlerTypes = exports.DependencyTypes = exports.ConditionTypes = void 0;
|
|
4
4
|
var ConditionTypes;
|
|
5
5
|
(function (ConditionTypes) {
|
|
6
6
|
ConditionTypes["NotNull"] = "NotNull";
|
|
@@ -93,3 +93,105 @@ var TimestampColumns;
|
|
|
93
93
|
TimestampColumns["CREATED_AT"] = "createdAtColumn";
|
|
94
94
|
TimestampColumns["UPDATED_AT"] = "updatedAtColumn";
|
|
95
95
|
})(TimestampColumns = exports.TimestampColumns || (exports.TimestampColumns = {}));
|
|
96
|
+
var AxeErrorCode;
|
|
97
|
+
(function (AxeErrorCode) {
|
|
98
|
+
AxeErrorCode["UNACCEPTABLE_VERSION_NAME"] = "UNACCEPTABLE_VERSION_NAME";
|
|
99
|
+
AxeErrorCode["VERSION_CONFIG_NOT_FOUND"] = "VERSION_CONFIG_NOT_FOUND";
|
|
100
|
+
AxeErrorCode["TABLE_DOESNT_HAVE_ANY_COLUMN"] = "TABLE_DOESNT_HAVE_ANY_COLUMN";
|
|
101
|
+
AxeErrorCode["RESERVED_VERSION_NAME"] = "RESERVED_VERSION_NAME";
|
|
102
|
+
AxeErrorCode["UNDEFINED_COLUMN"] = "UNDEFINED_COLUMN";
|
|
103
|
+
AxeErrorCode["UNDEFINED_RELATION_MODEL"] = "UNDEFINED_RELATION_MODEL";
|
|
104
|
+
AxeErrorCode["UNDEFINED_HOOK_MODEL_RELATION"] = "UNDEFINED_HOOK_MODEL_RELATION";
|
|
105
|
+
AxeErrorCode["UNACCEPTABLE_HOOK_FILE"] = "UNACCEPTABLE_HOOK_FILE";
|
|
106
|
+
AxeErrorCode["UNDEFINED_RELATION_NAME"] = "UNDEFINED_RELATION_NAME";
|
|
107
|
+
})(AxeErrorCode = exports.AxeErrorCode || (exports.AxeErrorCode = {}));
|
|
108
|
+
var QueryFeatureType;
|
|
109
|
+
(function (QueryFeatureType) {
|
|
110
|
+
QueryFeatureType["Allow"] = "Allow";
|
|
111
|
+
QueryFeatureType["Deny"] = "Deny";
|
|
112
|
+
})(QueryFeatureType = exports.QueryFeatureType || (exports.QueryFeatureType = {}));
|
|
113
|
+
var QueryFeature;
|
|
114
|
+
(function (QueryFeature) {
|
|
115
|
+
QueryFeature["All"] = "all";
|
|
116
|
+
QueryFeature["FieldsAll"] = "fieldsAll";
|
|
117
|
+
QueryFeature["Sorting"] = "sorting";
|
|
118
|
+
QueryFeature["Limits"] = "limits";
|
|
119
|
+
QueryFeature["WhereAll"] = "where.*";
|
|
120
|
+
QueryFeature["WhereEqual"] = "where.equal";
|
|
121
|
+
QueryFeature["WhereNotEqual"] = "where.notEqual";
|
|
122
|
+
QueryFeature["WhereGt"] = "where.gt";
|
|
123
|
+
QueryFeature["WhereGte"] = "where.gte";
|
|
124
|
+
QueryFeature["WhereLt"] = "where.lt";
|
|
125
|
+
QueryFeature["WhereLte"] = "where.lte";
|
|
126
|
+
QueryFeature["WhereLike"] = "where.like";
|
|
127
|
+
QueryFeature["WhereNotLike"] = "where.notLike";
|
|
128
|
+
QueryFeature["WhereIn"] = "where.in";
|
|
129
|
+
QueryFeature["WhereNotIn"] = "where.notIn";
|
|
130
|
+
QueryFeature["WhereBetween"] = "where.between";
|
|
131
|
+
QueryFeature["WhereNotBetween"] = "where.notBetween";
|
|
132
|
+
QueryFeature["WhereNull"] = "where.null";
|
|
133
|
+
QueryFeature["WhereNotNull"] = "where.notNull";
|
|
134
|
+
QueryFeature["Trashed"] = "trashed";
|
|
135
|
+
QueryFeature["WithAll"] = "with.*";
|
|
136
|
+
QueryFeature["WithHasOne"] = "with.hasOne";
|
|
137
|
+
QueryFeature["WithHasMany"] = "with.hasMany";
|
|
138
|
+
})(QueryFeature = exports.QueryFeature || (exports.QueryFeature = {}));
|
|
139
|
+
var StatusCodes;
|
|
140
|
+
(function (StatusCodes) {
|
|
141
|
+
StatusCodes[StatusCodes["ACCEPTED"] = 202] = "ACCEPTED";
|
|
142
|
+
StatusCodes[StatusCodes["BAD_GATEWAY"] = 502] = "BAD_GATEWAY";
|
|
143
|
+
StatusCodes[StatusCodes["BAD_REQUEST"] = 400] = "BAD_REQUEST";
|
|
144
|
+
StatusCodes[StatusCodes["CONFLICT"] = 409] = "CONFLICT";
|
|
145
|
+
StatusCodes[StatusCodes["CONTINUE"] = 100] = "CONTINUE";
|
|
146
|
+
StatusCodes[StatusCodes["CREATED"] = 201] = "CREATED";
|
|
147
|
+
StatusCodes[StatusCodes["EXPECTATION_FAILED"] = 417] = "EXPECTATION_FAILED";
|
|
148
|
+
StatusCodes[StatusCodes["FAILED_DEPENDENCY"] = 424] = "FAILED_DEPENDENCY";
|
|
149
|
+
StatusCodes[StatusCodes["FORBIDDEN"] = 403] = "FORBIDDEN";
|
|
150
|
+
StatusCodes[StatusCodes["GATEWAY_TIMEOUT"] = 504] = "GATEWAY_TIMEOUT";
|
|
151
|
+
StatusCodes[StatusCodes["GONE"] = 410] = "GONE";
|
|
152
|
+
StatusCodes[StatusCodes["HTTP_VERSION_NOT_SUPPORTED"] = 505] = "HTTP_VERSION_NOT_SUPPORTED";
|
|
153
|
+
StatusCodes[StatusCodes["IM_A_TEAPOT"] = 418] = "IM_A_TEAPOT";
|
|
154
|
+
StatusCodes[StatusCodes["INSUFFICIENT_SPACE_ON_RESOURCE"] = 419] = "INSUFFICIENT_SPACE_ON_RESOURCE";
|
|
155
|
+
StatusCodes[StatusCodes["INSUFFICIENT_STORAGE"] = 507] = "INSUFFICIENT_STORAGE";
|
|
156
|
+
StatusCodes[StatusCodes["INTERNAL_SERVER_ERROR"] = 500] = "INTERNAL_SERVER_ERROR";
|
|
157
|
+
StatusCodes[StatusCodes["LENGTH_REQUIRED"] = 411] = "LENGTH_REQUIRED";
|
|
158
|
+
StatusCodes[StatusCodes["LOCKED"] = 423] = "LOCKED";
|
|
159
|
+
StatusCodes[StatusCodes["METHOD_FAILURE"] = 420] = "METHOD_FAILURE";
|
|
160
|
+
StatusCodes[StatusCodes["METHOD_NOT_ALLOWED"] = 405] = "METHOD_NOT_ALLOWED";
|
|
161
|
+
StatusCodes[StatusCodes["MOVED_PERMANENTLY"] = 301] = "MOVED_PERMANENTLY";
|
|
162
|
+
StatusCodes[StatusCodes["MOVED_TEMPORARILY"] = 302] = "MOVED_TEMPORARILY";
|
|
163
|
+
StatusCodes[StatusCodes["MULTI_STATUS"] = 207] = "MULTI_STATUS";
|
|
164
|
+
StatusCodes[StatusCodes["MULTIPLE_CHOICES"] = 300] = "MULTIPLE_CHOICES";
|
|
165
|
+
StatusCodes[StatusCodes["NETWORK_AUTHENTICATION_REQUIRED"] = 511] = "NETWORK_AUTHENTICATION_REQUIRED";
|
|
166
|
+
StatusCodes[StatusCodes["NO_CONTENT"] = 204] = "NO_CONTENT";
|
|
167
|
+
StatusCodes[StatusCodes["NON_AUTHORITATIVE_INFORMATION"] = 203] = "NON_AUTHORITATIVE_INFORMATION";
|
|
168
|
+
StatusCodes[StatusCodes["NOT_ACCEPTABLE"] = 406] = "NOT_ACCEPTABLE";
|
|
169
|
+
StatusCodes[StatusCodes["NOT_FOUND"] = 404] = "NOT_FOUND";
|
|
170
|
+
StatusCodes[StatusCodes["NOT_IMPLEMENTED"] = 501] = "NOT_IMPLEMENTED";
|
|
171
|
+
StatusCodes[StatusCodes["NOT_MODIFIED"] = 304] = "NOT_MODIFIED";
|
|
172
|
+
StatusCodes[StatusCodes["OK"] = 200] = "OK";
|
|
173
|
+
StatusCodes[StatusCodes["PARTIAL_CONTENT"] = 206] = "PARTIAL_CONTENT";
|
|
174
|
+
StatusCodes[StatusCodes["PAYMENT_REQUIRED"] = 402] = "PAYMENT_REQUIRED";
|
|
175
|
+
StatusCodes[StatusCodes["PERMANENT_REDIRECT"] = 308] = "PERMANENT_REDIRECT";
|
|
176
|
+
StatusCodes[StatusCodes["PRECONDITION_FAILED"] = 412] = "PRECONDITION_FAILED";
|
|
177
|
+
StatusCodes[StatusCodes["PRECONDITION_REQUIRED"] = 428] = "PRECONDITION_REQUIRED";
|
|
178
|
+
StatusCodes[StatusCodes["PROCESSING"] = 102] = "PROCESSING";
|
|
179
|
+
StatusCodes[StatusCodes["PROXY_AUTHENTICATION_REQUIRED"] = 407] = "PROXY_AUTHENTICATION_REQUIRED";
|
|
180
|
+
StatusCodes[StatusCodes["REQUEST_HEADER_FIELDS_TOO_LARGE"] = 431] = "REQUEST_HEADER_FIELDS_TOO_LARGE";
|
|
181
|
+
StatusCodes[StatusCodes["REQUEST_TIMEOUT"] = 408] = "REQUEST_TIMEOUT";
|
|
182
|
+
StatusCodes[StatusCodes["REQUEST_TOO_LONG"] = 413] = "REQUEST_TOO_LONG";
|
|
183
|
+
StatusCodes[StatusCodes["REQUEST_URI_TOO_LONG"] = 414] = "REQUEST_URI_TOO_LONG";
|
|
184
|
+
StatusCodes[StatusCodes["REQUESTED_RANGE_NOT_SATISFIABLE"] = 416] = "REQUESTED_RANGE_NOT_SATISFIABLE";
|
|
185
|
+
StatusCodes[StatusCodes["RESET_CONTENT"] = 205] = "RESET_CONTENT";
|
|
186
|
+
StatusCodes[StatusCodes["SEE_OTHER"] = 303] = "SEE_OTHER";
|
|
187
|
+
StatusCodes[StatusCodes["SERVICE_UNAVAILABLE"] = 503] = "SERVICE_UNAVAILABLE";
|
|
188
|
+
StatusCodes[StatusCodes["SWITCHING_PROTOCOLS"] = 101] = "SWITCHING_PROTOCOLS";
|
|
189
|
+
StatusCodes[StatusCodes["TEMPORARY_REDIRECT"] = 307] = "TEMPORARY_REDIRECT";
|
|
190
|
+
StatusCodes[StatusCodes["TOO_MANY_REQUESTS"] = 429] = "TOO_MANY_REQUESTS";
|
|
191
|
+
StatusCodes[StatusCodes["UNAUTHORIZED"] = 401] = "UNAUTHORIZED";
|
|
192
|
+
StatusCodes[StatusCodes["UNAVAILABLE_FOR_LEGAL_REASONS"] = 451] = "UNAVAILABLE_FOR_LEGAL_REASONS";
|
|
193
|
+
StatusCodes[StatusCodes["UNPROCESSABLE_ENTITY"] = 422] = "UNPROCESSABLE_ENTITY";
|
|
194
|
+
StatusCodes[StatusCodes["UNSUPPORTED_MEDIA_TYPE"] = 415] = "UNSUPPORTED_MEDIA_TYPE";
|
|
195
|
+
StatusCodes[StatusCodes["USE_PROXY"] = 305] = "USE_PROXY";
|
|
196
|
+
StatusCodes[StatusCodes["MISDIRECTED_REQUEST"] = 421] = "MISDIRECTED_REQUEST";
|
|
197
|
+
})(StatusCodes = exports.StatusCodes || (exports.StatusCodes = {}));
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const
|
|
3
|
+
const Enums_1 = require("../Enums");
|
|
4
4
|
class ApiError extends Error {
|
|
5
5
|
constructor(message) {
|
|
6
6
|
super(message);
|
|
7
7
|
this.type = "ApiError";
|
|
8
|
-
this.status =
|
|
8
|
+
this.status = Enums_1.StatusCodes.BAD_REQUEST;
|
|
9
9
|
this.message = message;
|
|
10
10
|
}
|
|
11
11
|
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
class AxeError extends Error {
|
|
4
|
+
constructor(code, message) {
|
|
5
|
+
super(message);
|
|
6
|
+
this.type = "AxeError";
|
|
7
|
+
this.code = code;
|
|
8
|
+
this.message = message;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
exports.default = AxeError;
|
|
@@ -13,9 +13,8 @@ const Helpers_1 = require("./Helpers");
|
|
|
13
13
|
const Services_1 = require("../Services");
|
|
14
14
|
const Enums_1 = require("../Enums");
|
|
15
15
|
exports.default = (pack) => __awaiter(void 0, void 0, void 0, function* () {
|
|
16
|
-
const
|
|
17
|
-
const
|
|
18
|
-
const queryParser = new Services_1.QueryService(model, modelList.get());
|
|
16
|
+
const { version, model, req, res, database, relation, parentModel } = pack;
|
|
17
|
+
const queryParser = new Services_1.QueryService(model, version.modelList.get(), version.config);
|
|
19
18
|
// We should parse URL query string to use as condition in Lucid query
|
|
20
19
|
const conditions = queryParser.get(req.query);
|
|
21
20
|
// Creating a new database query
|
|
@@ -34,12 +33,12 @@ exports.default = (pack) => __awaiter(void 0, void 0, void 0, function* () {
|
|
|
34
33
|
queryParser.applySorting(query, conditions.sort);
|
|
35
34
|
let result = yield query;
|
|
36
35
|
// We should try to get related data if there is any
|
|
37
|
-
yield (0, Helpers_1.getRelatedData)(result, conditions.with, model, modelList, database, Enums_1.HandlerTypes.ALL, req);
|
|
36
|
+
yield (0, Helpers_1.getRelatedData)(version, result, conditions.with, model, version.modelList, database, Enums_1.HandlerTypes.ALL, req);
|
|
38
37
|
yield (0, Helpers_1.callHooks)(model, Enums_1.HookFunctionTypes.onAfterAll, Object.assign(Object.assign({}, pack), { result,
|
|
39
38
|
conditions,
|
|
40
39
|
query }));
|
|
41
40
|
// Serializing the data by the model's serialize method
|
|
42
|
-
result = yield (0, Helpers_1.serializeData)(result, model.
|
|
41
|
+
result = yield (0, Helpers_1.serializeData)(version, result, model.serialize, Enums_1.HandlerTypes.ALL, req);
|
|
43
42
|
// Filtering hidden fields from the response data.
|
|
44
43
|
(0, Helpers_1.filterHiddenFields)(result, model.instance.hiddens);
|
|
45
44
|
return res.json(result);
|
|
@@ -0,0 +1,22 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
const Services_1 = require("../Services");
|
|
13
|
+
exports.default = (req, res) => __awaiter(void 0, void 0, void 0, function* () {
|
|
14
|
+
const docs = Services_1.DocumentationService.getInstance();
|
|
15
|
+
const api = Services_1.APIService.getInstance();
|
|
16
|
+
res.json({
|
|
17
|
+
routes: docs.get(),
|
|
18
|
+
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() });
|
|
20
|
+
}),
|
|
21
|
+
});
|
|
22
|
+
});
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { IRequestPack } from "../Interfaces";
|
|
2
2
|
import { HandlerTypes } from "../Enums";
|
|
3
3
|
declare class HandlerFactory {
|
|
4
|
-
get(handleType: HandlerTypes): (pack: IRequestPack) => void;
|
|
4
|
+
static get(handleType: HandlerTypes): (pack: IRequestPack) => void;
|
|
5
5
|
}
|
|
6
6
|
export default HandlerFactory;
|
|
@@ -13,7 +13,7 @@ const ShowHandler_1 = __importDefault(require("./ShowHandler"));
|
|
|
13
13
|
const StoreHandler_1 = __importDefault(require("./StoreHandler"));
|
|
14
14
|
const Enums_1 = require("../Enums");
|
|
15
15
|
class HandlerFactory {
|
|
16
|
-
get(handleType) {
|
|
16
|
+
static get(handleType) {
|
|
17
17
|
switch (handleType) {
|
|
18
18
|
case Enums_1.HandlerTypes.ALL:
|
|
19
19
|
return AllHandler_1.default;
|